コード例 #1
0
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];
}
コード例 #2
0
ファイル: PorousFlow2PhasePS.C プロジェクト: huangh-inl/moose
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;
}
コード例 #3
0
ファイル: PorousFlow2PhasePS.C プロジェクト: harterj/moose
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;
}
コード例 #4
0
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;
  }
}