10template <
int DisplacementDim>
32 auto const S_L = S_L_data.
S_L;
33 auto const S_G = 1. - S_L;
34 double const rho_W_FR =
35 S_G * constituent_density_data.
rho_W_GR + S_L * rho_W_LR();
38 porosity_data.
phi * (rho_W_LR() - constituent_density_data.
rho_W_GR) -
39 rho_W_FR * pCap.
pCap * (biot_data() - porosity_data.
phi) * beta_p_SR();
54 double const S_L = S_L_data.
S_L;
55 double const S_G = 1. - S_L;
57 double const drho_C_FR_dp_GR =
64 drho_C_FR_dp_GR * pCap.
pCap *
65 (biot_data() - porosity_data.
phi) * beta_p_SR();
67 double const dfW_2a_dp_cap =
70 double const rho_W_FR =
71 S_G * constituent_density_data.
rho_W_GR + S_L * rho_W_LR();
73 double const drho_W_FR_dp_cap =
74 -dS_L_dp_cap() * constituent_density_data.
rho_W_GR +
76 dS_L_dp_cap() * rho_W_LR() -
79 double const dfW_2b_dp_cap =
80 drho_W_FR_dp_cap * pCap.
pCap * (biot_data() - porosity_data.
phi) *
82 rho_W_FR * (biot_data() - porosity_data.
phi) * beta_p_SR();
84 dfW_2.
dp_cap = dfW_2a_dp_cap - dfW_2b_dp_cap;
86 double const drho_W_FR_dT = S_G * phase_transition_data.
drho_W_GR_dT +
89 double const dfW_2a_dT =
91 (rho_W_LR() - constituent_density_data.
rho_W_GR) +
94 double const dfW_2b_dT =
95 drho_W_FR_dT * pCap.
pCap * (biot_data() - porosity_data.
phi) *
97 rho_W_FR * pCap.
pCap * porosity_d_data.
dphi_dT * beta_p_SR();
99 dfW_2.
dT = dfW_2a_dT - dfW_2b_dT;
117 double const rho_W_GR_dot = (constituent_density_data.
rho_W_GR -
118 constituent_density_data_prev->rho_W_GR) /
120 double const rho_W_LR_dot = (rho_W_LR() - **rho_W_LR_prev) / dt;
121 auto const S_L = S_L_data.
S_L;
122 auto const S_G = 1. - S_L;
123 fW_3a.
a = S_G * rho_W_GR_dot + S_L * rho_W_LR_dot;
145 auto const S_L = S_L_data.
S_L;
146 auto const S_G = 1. - S_L;
148 double const rho_W_GR_dot = (constituent_density_data.
rho_W_GR -
149 constituent_density_data_prev->rho_W_GR) /
151 double const rho_W_LR_dot = (rho_W_LR() - **rho_W_LR_prev) / dt;
158 dfW_3a.
dp_cap = -dS_L_dp_cap() * rho_W_GR_dot +
160 dS_L_dp_cap() * rho_W_LR_dot -
166template <
int DisplacementDim>
181 double const phi_G = (1 - S_L_data.
S_L) * porosity_data.
phi;
182 double const phi_L = S_L_data.
S_L * porosity_data.
phi;
184 double const diffusion_WGpGR = phi_G * fluid_density_data.
rho_GR * sD_G *
186 double const diffusion_WLpGR = phi_L * fluid_density_data.
rho_LR * sD_L *
188 double const diffusion_W_pGR = diffusion_WGpGR + diffusion_WLpGR;
191 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Identity();
192 fW_4_LWpG.
L.noalias() = diffusion_W_pGR * I + advection_W;
195template <
int DisplacementDim>
208 auto const k_over_mu_G =
209 permeability_data.
Ki * permeability_data.
k_rel_G / viscosity_data.
mu_GR;
210 auto const k_over_mu_L =
211 permeability_data.
Ki * permeability_data.
k_rel_L / viscosity_data.
mu_LR;
221 auto const dk_over_mu_G_dp_cap = permeability_data.
Ki *
223 dS_L_dp_cap() / viscosity_data.
mu_GR;
225 auto const dk_over_mu_L_dp_cap = permeability_data.
Ki *
227 dS_L_dp_cap() / viscosity_data.
mu_LR;
237 constituent_density_data.
rho_W_GR * dk_over_mu_G_dp_cap +
239 rho_W_LR() * dk_over_mu_L_dp_cap;
251template <
int DisplacementDim>
263 double const phi_G = (1 - S_L_data.
S_L) * porosity_data.
phi;
264 double const phi_L = S_L_data.
S_L * porosity_data.
phi;
266 double const diffusion_WGpCap = phi_G * fluid_density_data.
rho_GR * sD_G *
268 double const diffusion_WLpCap = phi_L * fluid_density_data.
rho_LR * sD_L *
271 double const diffusion_W_pCap = diffusion_WGpCap + diffusion_WLpCap;
274 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Identity();
276 fW_4_LWpC.
L.noalias() = diffusion_W_pCap * I - advection_data.
advection_W_L;
279template <
int DisplacementDim>
297 permeability_data.
Ki * permeability_data.
k_rel_L / viscosity_data.
mu_LR;
306 double const phi_G = (1 - S_L_data.
S_L) * porosity_data.
phi;
307 double const phi_L = S_L_data.
S_L * porosity_data.
phi;
309 double const diffusion_WGpCap = phi_G * fluid_density_data.
rho_GR * sD_G *
311 double const diffusion_WLpCap = phi_L * fluid_density_data.
rho_LR * sD_L *
314 double const diffusion_W_pCap = diffusion_WGpCap + diffusion_WLpCap;
317 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Identity();
321 auto const dk_over_mu_L_dp_cap = permeability_data.
Ki *
323 dS_L_dp_cap() / viscosity_data.
mu_LR;
325 rho_W_LR() * dk_over_mu_L_dp_cap;
335template <
int DisplacementDim>
346 double const phi_G = (1 - S_L_data.
S_L) * porosity_data.
phi;
347 double const phi_L = S_L_data.
S_L * porosity_data.
phi;
349 double const diffusion_W_G_T = phi_G * fluid_density_data.
rho_GR * sD_G *
351 double const diffusion_W_L_T = phi_L * fluid_density_data.
rho_LR * sD_L *
354 double const diffusion_W_T = diffusion_W_G_T + diffusion_W_L_T;
357 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Identity();
359 fW_4_LWT.
L.noalias() = diffusion_W_T * I;
373 double const S_L = S_L_data.
S_L;
374 double const S_G = 1. - S_L;
376 double const rho_W_FR =
377 S_G * constituent_density_data.
rho_W_GR + S_L * rho_W_LR();
379 fW_4_MWpG.
m = rho_W_FR * (biot_data() - porosity_data.
phi) * beta_p_SR();
392 auto const S_L = S_L_data.
S_L;
393 auto const S_G = 1. - S_L;
394 double const rho_W_FR =
395 S_G * constituent_density_data.
rho_W_GR + S_L * rho_W_LR();
398 -rho_W_FR * (biot_data() - porosity_data.
phi) * beta_p_SR() * S_L;
401 (porosity_data.
phi * (rho_W_LR() - constituent_density_data.
rho_W_GR) -
402 rho_W_FR * pCap.
pCap * (biot_data() - porosity_data.
phi) *
404 (S_L - S_L_data_prev->S_L);
407template <
int DisplacementDim>
417 auto const S_L = S_L_data.
S_L;
418 auto const S_G = 1. - S_L;
419 double const rho_W_FR =
420 S_G * constituent_density_data.
rho_W_GR + S_L * rho_W_LR();
422 fW_4_MWT.
m = -rho_W_FR * (biot_data() - porosity_data.
phi) *
435 auto const S_L = S_L_data.
S_L;
436 auto const S_G = 1. - S_L;
437 double const rho_W_FR =
438 S_G * constituent_density_data.
rho_W_GR + S_L * rho_W_LR();
440 fW_4_MWu.
m = rho_W_FR * biot_data();
Eigen::Matrix< double, DisplacementDim, DisplacementDim, Eigen::RowMajor > GlobalDimMatrix
BaseLib::StrongType< double, struct SolidCompressibilityDataTag > SolidCompressibilityData
BaseLib::StrongType< double, struct PureLiquidDensityTag > PureLiquidDensityData
BaseLib::StrongType< double, struct SaturationDataDerivTag > SaturationDataDeriv
BaseLib::StrongType< double, struct BiotTag > BiotData
Represents a previous state of type T.
GlobalDimMatrix< DisplacementDim > advection_W_G
GlobalDimMatrix< DisplacementDim > advection_W_L
Real constituent partial densities.
GlobalDimMatrix< DisplacementDim > A
void eval(AdvectionData< DisplacementDim > const &advection_data, FluidDensityData const &fluid_density_data, FW1Data< DisplacementDim > &fW_1) const
void dEval(BiotData const &biot_data, CapillaryPressureData const pCap, ConstituentDensityData const &constituent_density_data, PhaseTransitionData const &phase_transition_data, PorosityData const &porosity_data, PorosityDerivativeData const &porosity_d_data, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, SaturationDataDeriv const &dS_L_dp_cap, SolidCompressibilityData const &beta_p_SR, FW2DerivativeData &dfW_2) const
void eval(BiotData const biot_data, CapillaryPressureData const pCap, ConstituentDensityData const &constituent_density_data, PorosityData const &porosity_data, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, SolidCompressibilityData const beta_p_SR, FW2Data &fW_2) const
void dEval(double const dt, ConstituentDensityData const &constituent_density_data, PhaseTransitionData const &phase_transition_data, PrevState< ConstituentDensityData > const &constituent_density_data_prev, PrevState< PureLiquidDensityData > const &rho_W_LR_prev, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, SaturationDataDeriv const &dS_L_dp_cap, FW3aDerivativeData &dfW_3a) const
void eval(double const dt, ConstituentDensityData const &constituent_density_data, PrevState< ConstituentDensityData > const &constituent_density_data_prev, PrevState< PureLiquidDensityData > const &rho_W_LR_prev, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, FW3aData &fW_3a) const
GlobalDimMatrix< DisplacementDim > L
void eval(FluidDensityData const &fluid_density_data, PhaseTransitionData const &phase_transition_data, PorosityData const &porosity_data, SaturationData const &S_L_data, FW4LWTData< DisplacementDim > &fW_4_LWT) const
GlobalDimMatrix< DisplacementDim > L
GlobalDimMatrix< DisplacementDim > dT
GlobalDimMatrix< DisplacementDim > dp_GR
GlobalDimMatrix< DisplacementDim > dp_cap
void eval(AdvectionData< DisplacementDim > const &advection_data, FluidDensityData const &fluid_density_data, PhaseTransitionData const &phase_transition_data, PorosityData const &porosity_data, SaturationData const &S_L_data, FW4LWpCData< DisplacementDim > &fW_4_LWpC) const
void dEval(AdvectionData< DisplacementDim > const &advection_data, FluidDensityData const &fluid_density_data, PermeabilityData< DisplacementDim > const &permeability_data, PhaseTransitionData const &phase_transition_data, PorosityData const &porosity_data, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, SaturationDataDeriv const &dS_L_dp_cap, ViscosityData const &viscosity_data, FW4LWpCDerivativeData< DisplacementDim > &dfW_4_LWpC) const
GlobalDimMatrix< DisplacementDim > L
GlobalDimMatrix< DisplacementDim > dp_GR
GlobalDimMatrix< DisplacementDim > dp_cap
GlobalDimMatrix< DisplacementDim > dT
void dEval(ConstituentDensityData const &constituent_density_data, PermeabilityData< DisplacementDim > const &permeability_data, PhaseTransitionData const &phase_transition_data, PureLiquidDensityData const &rho_W_LR, SaturationDataDeriv const &dS_L_dp_cap, ViscosityData const &viscosity_data, FW4LWpGDerivativeData< DisplacementDim > &dfW_4_LWpG) const
void eval(AdvectionData< DisplacementDim > const &advection_data, FluidDensityData const &fluid_density_data, PhaseTransitionData const &phase_transition_data, PorosityData const &porosity_data, SaturationData const &S_L_data, FW4LWpGData< DisplacementDim > &fW_4_LWpG) const
void eval(BiotData const &biot_data, ConstituentDensityData const &constituent_density_data, PorosityData const &porosity_data, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, SolidThermalExpansionData< DisplacementDim > const &s_therm_exp_data, FW4MWTData &fW_4_MWT) const
void eval(BiotData const &biot_data, CapillaryPressureData const pCap, ConstituentDensityData const &constituent_density_data, PorosityData const &porosity_data, PrevState< SaturationData > const &S_L_data_prev, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, SolidCompressibilityData const &beta_p_SR, FW4MWpCData &fW_4_MWpC) const
void eval(BiotData const &biot_data, ConstituentDensityData const &constituent_density_data, PorosityData const &porosity_data, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, SolidCompressibilityData const &beta_p_SR, FW4MWpGData &fW_4_MWpG) const
void eval(BiotData const &biot_data, ConstituentDensityData const &constituent_density_data, PureLiquidDensityData const &rho_W_LR, SaturationData const &S_L_data, FW4MWuData &fW_4_MWu) const
GlobalDimMatrix< DisplacementDim > Ki
double diffusion_coefficient_solute
static constexpr double drho_C_LR_dp_GR
double diffusion_coefficient_vapour