void PorousFlow2PhasePS::buildQpPPSS() { _saturation_nodal[_qp][0] = 1.0 - _phase1_saturation_nodal[_qp]; _saturation_nodal[_qp][1] = _phase1_saturation_nodal[_qp]; _saturation_qp[_qp][0] = 1.0 - _phase1_saturation_qp[_qp]; _saturation_qp[_qp][1] = _phase1_saturation_qp[_qp]; _grads_qp[_qp][0] = -_phase1_grads_qp[_qp]; _grads_qp[_qp][1] = _phase1_grads_qp[_qp]; const Real pc_nodal = capillaryPressure(_phase1_saturation_nodal[_qp]); const Real pc_qp = capillaryPressure(_phase1_saturation_qp[_qp]); const Real dpc_qp = dCapillaryPressure_dS(_phase1_saturation_qp[_qp]); _porepressure_nodal[_qp][0] = _phase0_porepressure_nodal[_qp]; _porepressure_nodal[_qp][1] = _phase0_porepressure_nodal[_qp] - pc_nodal; _porepressure_qp[_qp][0] = _phase0_porepressure_qp[_qp]; _porepressure_qp[_qp][1] = _phase0_porepressure_qp[_qp] - pc_qp; _gradp_qp[_qp][0] = _phase0_gradp_qp[_qp]; _gradp_qp[_qp][1] = _phase0_gradp_qp[_qp] - dpc_qp * _grads_qp[_qp][1]; /// Temperature is the same in each phase presently _temperature_nodal[_qp][0] = _temperature_nodal_var[_qp]; _temperature_nodal[_qp][1] = _temperature_nodal_var[_qp]; _temperature_qp[_qp][0] = _temperature_qp_var[_qp]; _temperature_qp[_qp][1] = _temperature_qp_var[_qp]; }
void PorousFlow2PhasePS::buildQpPPSS() { _saturation[_qp][0] = 1.0 - _phase1_saturation[_qp]; _saturation[_qp][1] = _phase1_saturation[_qp]; const Real pc = capillaryPressure(_phase1_saturation[_qp]); _porepressure[_qp][0] = _phase0_porepressure[_qp]; _porepressure[_qp][1] = _phase0_porepressure[_qp] - pc; }
Real PorousFlow2PhasePS::buildQpPPSS() { _saturation[_qp][0] = 1.0 - _phase1_saturation[_qp]; _saturation[_qp][1] = _phase1_saturation[_qp]; const Real seff = effectiveSaturation(_phase1_saturation[_qp]); const Real pc = capillaryPressure(seff); _porepressure[_qp][0] = _phase0_porepressure[_qp]; _porepressure[_qp][1] = _phase0_porepressure[_qp] + pc; return seff; }
Real d2CapillaryPressure(Real seff, Real pe, Real lambda, Real pc_max) { if (seff <= 0.0 || seff >= 1.0) return 0.0; else { // Return 0 if pc > pc_max if (capillaryPressure(seff, pe, lambda, pc_max) >= pc_max) return 0.0; else return (lambda + 1.0) * pe * std::pow(seff, -1.0 / lambda - 2.0) / lambda / lambda; } }