Skip to content
Snippets Groups Projects
Commit 2b0bfd36 authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[PL/TH2M] Separate saturation derivative eval

parent 809b4d9e
No related branches found
No related tags found
No related merge requests found
......@@ -149,7 +149,6 @@ struct ConstitutiveTempData
ElasticTangentStiffnessData<DisplacementDim> C_el_data;
BiotData biot_data;
SolidCompressibilityData beta_p_SR;
SaturationDataDeriv dS_L_dp_cap;
BishopsData chi_S_L;
SolidThermalExpansionData<DisplacementDim> s_therm_exp_data;
TotalStressData<DisplacementDim> total_stress_data;
......@@ -196,6 +195,7 @@ struct ConstitutiveTempData
template <int DisplacementDim>
struct DerivativesData
{
SaturationDataDeriv dS_L_dp_cap;
AdvectionDerivativeData<DisplacementDim> advection_d_data;
ThermalConductivityDerivativeData<DisplacementDim>
thermal_conductivity_d_data;
......
......@@ -16,8 +16,7 @@ namespace ConstitutiveRelations
void SaturationModel::eval(SpaceTimeData const& x_t,
MediaData const& media_data,
CapillaryPressureData const& p_cap,
SaturationData& S_L_data,
SaturationDataDeriv& dS_L_data) const
SaturationData& S_L_data) const
{
namespace MPL = MaterialPropertyLib;
MPL::VariableArray variables;
......@@ -27,6 +26,18 @@ void SaturationModel::eval(SpaceTimeData const& x_t,
S_L_data.S_L = medium.property(MPL::PropertyType::saturation)
.template value<double>(variables, x_t.x, x_t.t, x_t.dt);
}
void SaturationModel::dEval(SpaceTimeData const& x_t,
MediaData const& media_data,
CapillaryPressureData const& p_cap,
SaturationDataDeriv& dS_L_data) const
{
namespace MPL = MaterialPropertyLib;
MPL::VariableArray variables;
variables.capillary_pressure = p_cap();
auto const& medium = media_data.medium;
dS_L_data() = medium.property(MPL::PropertyType::saturation)
.template dValue<double>(
......
......@@ -34,8 +34,12 @@ using SaturationDataDeriv =
struct SaturationModel
{
void eval(SpaceTimeData const& x_t, MediaData const& media_data,
CapillaryPressureData const& p_cap, SaturationData& S_L_data,
SaturationDataDeriv& dS_L_data) const;
CapillaryPressureData const& p_cap,
SaturationData& S_L_data) const;
void dEval(SpaceTimeData const& x_t, MediaData const& media_data,
CapillaryPressureData const& p_cap,
SaturationDataDeriv& dS_L_data) const;
};
} // namespace ConstitutiveRelations
} // namespace ProcessLib::TH2M
......@@ -180,7 +180,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
ip_out.eps_data.eps.noalias() = Bu * displacement;
models.S_L_model.eval({pos, t, dt}, media_data, pCap_data,
current_state.S_L_data, ip_cv.dS_L_dp_cap);
current_state.S_L_data);
models.chi_S_L_model.eval({pos, t, dt}, media_data,
current_state.S_L_data, ip_cv.chi_S_L);
......@@ -546,16 +546,19 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
ConstitutiveRelations::CapillaryPressureData const pCap_data{
Np.dot(capillary_pressure)};
models.S_L_model.dEval({pos, t, dt}, media_data, pCap_data,
ip_dd.dS_L_dp_cap);
models.advection_model.dEval(current_state.constituent_density_data,
ip_out.permeability_data,
ip_cv.viscosity_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_cv.phase_transition_data,
ip_dd.advection_d_data);
models.thermal_conductivity_model.dEval(
{pos, t, dt}, media_data, T_data, ip_out.porosity_data,
ip_cv.porosity_d_data, current_state.S_L_data, ip_cv.dS_L_dp_cap,
ip_cv.porosity_d_data, current_state.S_L_data, ip_dd.dS_L_dp_cap,
ip_dd.thermal_conductivity_d_data);
models.solid_density_model.dEval({pos, t, dt}, media_data, T_data,
......@@ -571,7 +574,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
ip_out.porosity_data,
ip_cv.porosity_d_data,
current_state.S_L_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_out.solid_density_data,
ip_dd.solid_density_d_data,
ip_out.solid_enthalpy_data,
......@@ -585,7 +588,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
ip_out.porosity_data,
ip_cv.porosity_d_data,
current_state.S_L_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_out.solid_density_data,
ip_dd.solid_density_d_data,
ip_out.solid_enthalpy_data,
......@@ -600,7 +603,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
ip_out.porosity_data,
ip_cv.porosity_d_data,
current_state.S_L_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_cv.beta_p_SR,
ip_dd.dfC_2a);
}
......@@ -609,7 +612,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
prev_state.constituent_density_data,
ip_cv.phase_transition_data,
current_state.S_L_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_dd.dfC_3a);
models.fC_4_LCpG_model.dEval(ip_out.permeability_data,
......@@ -621,7 +624,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
models.fC_4_LCpC_model.dEval(current_state.constituent_density_data,
ip_out.permeability_data,
ip_cv.phase_transition_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_cv.viscosity_data,
ip_dd.dfC_4_LCpC);
......@@ -658,7 +661,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
ip_cv.porosity_d_data,
current_state.rho_W_LR,
current_state.S_L_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_cv.beta_p_SR,
ip_dd.dfW_2);
}
......@@ -670,14 +673,14 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
prev_state.rho_W_LR,
current_state.rho_W_LR,
current_state.S_L_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_dd.dfW_3a);
models.fW_4_LWpG_model.dEval(current_state.constituent_density_data,
ip_out.permeability_data,
ip_cv.phase_transition_data,
current_state.rho_W_LR,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_cv.viscosity_data,
ip_dd.dfW_4_LWpG);
......@@ -688,7 +691,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
ip_out.porosity_data,
current_state.rho_W_LR,
current_state.S_L_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_cv.viscosity_data,
ip_dd.dfW_4_LWpC);
......@@ -709,7 +712,7 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
models.fu_2_KupC_model.dEval(ip_cv.biot_data,
ip_cv.chi_S_L,
pCap_data,
ip_cv.dS_L_dp_cap,
ip_dd.dS_L_dp_cap,
ip_dd.dfu_2_KupC);
}
......@@ -1491,7 +1494,7 @@ void TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
local_Jac.template block<C_size, W_size>(C_index, W_index)
.noalias() += NpT *
(ip_dd.dfC_2a.dp_cap * s_L_dot +
ip_cv.fC_2a.a * ip_cv.dS_L_dp_cap() / dt) *
ip_cv.fC_2a.a * ip_dd.dS_L_dp_cap() / dt) *
Np * w;
local_Jac
......@@ -1587,7 +1590,7 @@ void TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
local_Jac.template block<W_size, W_size>(W_index, W_index)
.noalias() += NpT *
(ip_dd.dfW_2.dp_cap * s_L_dot +
ip_cv.fW_2.a * ip_cv.dS_L_dp_cap() / dt) *
ip_cv.fW_2.a * ip_dd.dS_L_dp_cap() / dt) *
Np * w;
local_Jac
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment