OGS
TH2M/ConstitutiveRelations/Porosity.h
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#pragma once
5
6#include "Base.h"
7#include "Biot.h"
8#include "Bishops.h"
11#include "Saturation.h"
14
15namespace ProcessLib::TH2M
16{
18{
20{
21 double dphi_dT = nan;
22 // dphi_G_dp_GR = -ds_L_dp_GR * phi = 0;
23 // dphi_L_dp_GR = ds_L_dp_GR * phi = 0;
25 // dphi_G_dp_cap = -dphi_L_dp_cap
26};
27
29{
30 double phi = nan;
31
32 static auto reflect()
33 {
34 using Self = PorosityData;
35 namespace R = ProcessLib::Reflection;
36
37 return std::tuple{R::makeReflectionData("porosity", &Self::phi)};
38 }
39};
40
41template <int DisplacementDim>
43{
44 void eval(SpaceTimeData const& x_t, MediaData const& media_data,
45 SaturationData const& S_L_data,
46 PrevState<SaturationData> const& S_L_prev_data,
47 CapillaryPressureData const& p_cap, GasPressureData const& p_GR,
48 BishopsData const& chi_S_L,
49 PrevState<BishopsData> const& chi_S_L_prev,
50 SolidCompressibilityData const& solid_compressibility,
51 StrainData<DisplacementDim> const& eps_data,
53 eps_prev,
54 PrevState<PorosityData> const& porosity_prev_data,
55 PorosityData& porosity_data) const;
56
57 void dEval(SpaceTimeData const& x_t, MediaData const& media_data,
58 SaturationData const& S_L_data,
59 PrevState<SaturationData> const& S_L_prev_data,
60 CapillaryPressureData const& p_cap, GasPressureData const& p_GR,
61 BishopsData const& chi_S_L,
62 PrevState<BishopsData> const& chi_S_L_prev,
63 SolidCompressibilityData const& solid_compressibility,
64 StrainData<DisplacementDim> const& eps_data,
66 eps_prev,
67 PrevState<PorosityData> const& porosity_prev_data,
68 PorosityDerivativeData& porosity_d_data) const;
69};
70
71extern template struct PorosityModel<2>;
72extern template struct PorosityModel<3>;
73
74} // namespace ConstitutiveRelations
75} // namespace ProcessLib::TH2M
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
static constexpr double nan
Convenience alias for not a number.
BaseLib::StrongType< double, struct SolidCompressibilityDataTag > SolidCompressibilityData
void dEval(SpaceTimeData const &x_t, MediaData const &media_data, SaturationData const &S_L_data, PrevState< SaturationData > const &S_L_prev_data, CapillaryPressureData const &p_cap, GasPressureData const &p_GR, BishopsData const &chi_S_L, PrevState< BishopsData > const &chi_S_L_prev, SolidCompressibilityData const &solid_compressibility, StrainData< DisplacementDim > const &eps_data, MathLib::KelvinVector::KelvinVectorType< DisplacementDim > const &&eps_prev, PrevState< PorosityData > const &porosity_prev_data, PorosityDerivativeData &porosity_d_data) const
void eval(SpaceTimeData const &x_t, MediaData const &media_data, SaturationData const &S_L_data, PrevState< SaturationData > const &S_L_prev_data, CapillaryPressureData const &p_cap, GasPressureData const &p_GR, BishopsData const &chi_S_L, PrevState< BishopsData > const &chi_S_L_prev, SolidCompressibilityData const &solid_compressibility, StrainData< DisplacementDim > const &eps_data, MathLib::KelvinVector::KelvinVectorType< DisplacementDim > const &&eps_prev, PrevState< PorosityData > const &porosity_prev_data, PorosityData &porosity_data) const