void PolymerProperties::effectiveRelpermBoth(const double c, const double cmax, const double* relperm, const double* drelperm_ds, double& eff_relperm_wat, double& deff_relperm_wat_ds, double& deff_relperm_wat_dc, bool if_with_der) const { double c_ads; double dc_ads_dc; adsorptionBoth(c, cmax, c_ads, dc_ads_dc, if_with_der); double rk = 1 + (res_factor_ - 1)*c_ads/c_max_ads_; eff_relperm_wat = relperm[0]/rk; if (if_with_der) { deff_relperm_wat_ds = (drelperm_ds[0]-drelperm_ds[2])/rk; //derivative with respect to sw deff_relperm_wat_dc = dc_ads_dc*relperm[0]/(rk*rk*c_max_ads_); } else { deff_relperm_wat_ds = -1.0; deff_relperm_wat_dc = -1.0; } }
void PolymerProperties::effectiveRelpermBoth(const double c, const double cmax, const double* relperm, const double* drelperm_ds, double& eff_relperm_wat, double& deff_relperm_wat_ds, double& deff_relperm_wat_dc, bool if_with_der) const { double c_ads; double dc_ads_dc; adsorptionBoth(c, cmax, c_ads, dc_ads_dc, if_with_der); double rk = 1 + (res_factor_ - 1)*c_ads/c_max_ads_; eff_relperm_wat = relperm[0]/rk; if (if_with_der) { deff_relperm_wat_ds = (drelperm_ds[0]-drelperm_ds[2])/rk; //derivative with respect to sw //\frac{\partial k_{rw_eff}}{\parital c} = -\frac{krw}{rk^2}\frac{(RRF-1)}{c^a_{max}}\frac{\partial c^a}{\partial c}. deff_relperm_wat_dc = -(res_factor_ - 1)*dc_ads_dc*relperm[0]/(rk*rk*c_max_ads_); } else { deff_relperm_wat_ds = -1.0; deff_relperm_wat_dc = -1.0; } }
void PolymerProperties::adsorption(double c, double cmax, double& c_ads) const { double dummy; adsorptionBoth(c, cmax, c_ads, dummy, false); }
void PolymerProperties::adsorptionWithDer(double c, double cmax, double& c_ads, double& dc_ads_dc) const { adsorptionBoth(c, cmax, c_ads, dc_ads_dc, true); }