OGS
ThermoRichardsMechanics/ConstitutiveCommon/Porosity.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 "Porosity.h"
5
7{
8template <int DisplacementDim>
10 SpaceTimeData const& x_t, MediaData const& media_data,
11 SolidCompressibilityData const& solid_compressibility_data,
12 SaturationData const& S_L_data,
13 PrevState<SaturationData> const& S_L_prev_data,
14 BishopsData const& bishops_data,
15 PrevState<BishopsData> const& bishops_data_prev,
17 StrainData<DisplacementDim> const& eps_data,
18 PrevState<StrainData<DisplacementDim>> const& eps_prev_data,
19 PrevState<PorosityData> const& poro_prev_data, PorosityData& out) const
20{
21 static constexpr int kelvin_vector_size =
24
25 namespace MPL = MaterialPropertyLib;
26 MPL::VariableArray variables;
27 MPL::VariableArray variables_prev;
28 // TODO Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
29 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
30 variables.grain_compressibility = solid_compressibility_data.beta_SR;
31
32 variables.liquid_saturation = S_L_data.S_L;
33 variables_prev.liquid_saturation = S_L_prev_data->S_L;
34
35 variables.effective_pore_pressure =
36 -bishops_data.chi_S_L * p_cap_data.p_cap;
37
38 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
39 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
40 variables_prev.effective_pore_pressure =
41 -bishops_data_prev->chi_S_L * p_cap_data.p_cap_prev;
42
43 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
44 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
45 // and MaterialLib/MPL/Properties/StrainDependentPermeability.cpp
46 // Set volumetric strain rate for the general case without swelling.
47 variables.volumetric_strain = Invariants::trace(eps_data.eps);
48 variables_prev.volumetric_strain = Invariants::trace(eps_prev_data->eps);
49
50 // Porosity update
51 variables_prev.porosity = poro_prev_data->phi;
53 .template value<double>(variables, variables_prev, x_t.x,
54 x_t.t, x_t.dt);
55}
56
57template struct PorosityModel<2>;
58template struct PorosityModel<3>;
59} // namespace ProcessLib::ThermoRichardsMechanics
Property const & property(PropertyType const &p) const
Definition Medium.cpp:45
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:14
void eval(SpaceTimeData const &x_t, MediaData const &media_data, SolidCompressibilityData const &solid_compressibility_data, SaturationData const &S_L_data, PrevState< SaturationData > const &S_L_prev_data, BishopsData const &bishops_data, PrevState< BishopsData > const &bishops_data_prev, CapillaryPressureData< DisplacementDim > const &p_cap_data, StrainData< DisplacementDim > const &eps_data, PrevState< StrainData< DisplacementDim > > const &eps_prev_data, PrevState< PorosityData > const &poro_prev_data, PorosityData &out) const