OGS
TEquation.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#include "TEquation.h"
5
6namespace ProcessLib::TH2M
7{
9{
11 double const dt,
12 InternalEnergyData const& internal_energy_data,
13 PrevState<InternalEnergyData> const& internal_energy_data_prev,
14 FT1Data& fT_1) const
15{
16 if (dt == 0)
17 {
18 fT_1.m = 0;
19 return;
20 }
21
22 auto const rho_u_eff_dot =
23 (internal_energy_data() - **internal_energy_data_prev) / dt;
24 fT_1.m = rho_u_eff_dot;
25}
26
27void FT1Model::dEval(double const dt,
29 effective_volumetric_internal_energy_d_data,
30 FT1DerivativeData& dfT_1) const
31{
32 if (dt == 0)
33 {
34 dfT_1.dp_GR = 0;
35 dfT_1.dp_cap = 0;
36 dfT_1.dT = 0;
37 return;
38 }
39
40 dfT_1.dp_GR =
41 effective_volumetric_internal_energy_d_data.drho_u_eff_dp_GR / dt;
42
43 dfT_1.dp_cap =
44 effective_volumetric_internal_energy_d_data.drho_u_eff_dp_cap / dt;
45
46 dfT_1.dT = effective_volumetric_internal_energy_d_data.drho_u_eff_dT / dt;
47}
48
49template <int DisplacementDim>
51 DarcyVelocityData<DisplacementDim> const& darcy_velocity_data,
52 FluidDensityData const& fluid_density_data,
53 FluidEnthalpyData const& fluid_enthalpy_data,
54 FT2Data<DisplacementDim>& fT_2) const
55{
56 fT_2.A.noalias() = fluid_density_data.rho_GR * fluid_enthalpy_data.h_G *
57 darcy_velocity_data.w_GS +
58 fluid_density_data.rho_LR * fluid_enthalpy_data.h_L *
59 darcy_velocity_data.w_LS;
60}
61
62template <int DisplacementDim>
64 DarcyVelocityData<DisplacementDim> const& darcy_velocity_data,
65 FluidDensityData const& fluid_density_data,
66 FluidEnthalpyData const& fluid_enthalpy_data,
67 PermeabilityData<DisplacementDim> const& permeability_data,
68 PhaseTransitionData const& phase_transition_data,
69 SpecificBodyForce<DisplacementDim> const& specific_body_force,
70 ViscosityData const& viscosity_data,
72{
73 auto const k_over_mu_G =
74 permeability_data.Ki * permeability_data.k_rel_G / viscosity_data.mu_GR;
75 auto const k_over_mu_L =
76 permeability_data.Ki * permeability_data.k_rel_L / viscosity_data.mu_LR;
77
78 dfT_2.dp_GR_Npart = phase_transition_data.drho_GR_dp_GR *
79 fluid_enthalpy_data.h_G * darcy_velocity_data.w_GS +
80 fluid_density_data.rho_GR * fluid_enthalpy_data.h_G *
81 k_over_mu_G * phase_transition_data.drho_GR_dp_GR *
82 specific_body_force();
83 dfT_2.dp_GR_gradNpart =
84 fluid_density_data.rho_GR * fluid_enthalpy_data.h_G * k_over_mu_G -
85 fluid_density_data.rho_LR * fluid_enthalpy_data.h_L * k_over_mu_L;
86
87 // From p_LR = p_GR - p_cap it follows for
88 // drho_LR/dp_GR = drho_LR/dp_LR * dp_LR/dp_GR
89 // = drho_LR/dp_LR * (dp_GR/dp_GR - dp_cap/dp_GR)
90 // = drho_LR/dp_LR * (1 - 0)
91 double const drho_LR_dp_cap = -phase_transition_data.drho_LR_dp_LR;
92
93 dfT_2.dp_cap_Npart =
94 -drho_LR_dp_cap * fluid_enthalpy_data.h_L * darcy_velocity_data.w_LS -
95 fluid_density_data.rho_LR * fluid_enthalpy_data.h_L * k_over_mu_L *
96 drho_LR_dp_cap * specific_body_force();
97 dfT_2.dp_cap_gradNpart =
98 fluid_density_data.rho_LR * fluid_enthalpy_data.h_L * k_over_mu_L;
99
100 dfT_2.dT = phase_transition_data.drho_GR_dT * fluid_enthalpy_data.h_G *
101 darcy_velocity_data.w_GS +
102 fluid_density_data.rho_GR * phase_transition_data.dh_G_dT *
103 darcy_velocity_data.w_GS +
104 phase_transition_data.drho_LR_dT * fluid_enthalpy_data.h_L *
105 darcy_velocity_data.w_LS +
106 fluid_density_data.rho_LR * phase_transition_data.dh_L_dT *
107 darcy_velocity_data.w_LS;
108 // TODO (naumov) + k_over_mu_G * drho_GR_dT * b + k_over_mu_L *
109 // drho_LR_dT * b
110}
111
112template struct FT2Model<2>;
113template struct FT2Model<3>;
114
115template <int DisplacementDim>
117 ConstituentDensityData const& constituent_density_data,
118 DarcyVelocityData<DisplacementDim> const& darcy_velocity_data,
119 DiffusionVelocityData<DisplacementDim> const& diffusion_velocity_data,
120 FluidDensityData const& fluid_density_data,
121 PhaseTransitionData const& phase_transition_data,
122 SpecificBodyForce<DisplacementDim> const& specific_body_force,
123 FT3Data<DisplacementDim>& fT_3) const
124{
125 fT_3.N =
126 (fluid_density_data.rho_GR * darcy_velocity_data.w_GS.transpose() +
127 fluid_density_data.rho_LR * darcy_velocity_data.w_LS.transpose()) *
128 specific_body_force();
129
130 fT_3.gradN.noalias() =
131 constituent_density_data.rho_C_GR * phase_transition_data.hCG *
132 diffusion_velocity_data.d_CG +
133 constituent_density_data.rho_W_GR * phase_transition_data.hWG *
134 diffusion_velocity_data.d_WG;
135}
136
137template struct FT3Model<2>;
138template struct FT3Model<3>;
139
140} // namespace ConstitutiveRelations
141} // namespace ProcessLib::TH2M
BaseLib::StrongType< GlobalDimVector< DisplacementDim >, struct SpecificBodyForceTag > SpecificBodyForce
BaseLib::StrongType< double, struct InternalEnergyTag > InternalEnergyData
void dEval(double const dt, EffectiveVolumetricInternalEnergyDerivatives const &effective_volumetric_internal_energy_d_data, FT1DerivativeData &dfT_1) const
Definition TEquation.cpp:27
void eval(double const dt, InternalEnergyData const &internal_energy_data, PrevState< InternalEnergyData > const &internal_energy_data_prev, FT1Data &fT_1) const
Definition TEquation.cpp:10
GlobalDimVector< DisplacementDim > A
Definition TEquation.h:48
GlobalDimMatrix< DisplacementDim > dp_cap_gradNpart
Definition TEquation.h:57
GlobalDimMatrix< DisplacementDim > dp_GR_gradNpart
Definition TEquation.h:55
GlobalDimVector< DisplacementDim > dp_cap_Npart
Definition TEquation.h:56
GlobalDimVector< DisplacementDim > dp_GR_Npart
Definition TEquation.h:54
void dEval(DarcyVelocityData< DisplacementDim > const &darcy_velocity_data, FluidDensityData const &fluid_density_data, FluidEnthalpyData const &fluid_enthalpy_data, PermeabilityData< DisplacementDim > const &permeability_data, PhaseTransitionData const &phase_transition_data, SpecificBodyForce< DisplacementDim > const &specific_body_force, ViscosityData const &viscosity_data, FT2DerivativeData< DisplacementDim > &dfT_2) const
Definition TEquation.cpp:63
void eval(DarcyVelocityData< DisplacementDim > const &darcy_velocity_data, FluidDensityData const &fluid_density_data, FluidEnthalpyData const &fluid_enthalpy_data, FT2Data< DisplacementDim > &fT_2) const
Definition TEquation.cpp:50
GlobalDimVector< DisplacementDim > gradN
Definition TEquation.h:86
void eval(ConstituentDensityData const &constituent_density_data, DarcyVelocityData< DisplacementDim > const &darcy_velocity_data, DiffusionVelocityData< DisplacementDim > const &diffusion_velocity_data, FluidDensityData const &fluid_density_data, PhaseTransitionData const &phase_transition_data, SpecificBodyForce< DisplacementDim > const &specific_body_force, FT3Data< DisplacementDim > &fT_3) const