OGS
ThermoRichardsMechanics/ConstitutiveCommon/Gravity.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 "Gravity.h"
5
7{
8template <int DisplacementDim>
10 PorosityData const& poro_data, SolidDensityData const& rho_S_data,
11 LiquidDensityData const& rho_L_data, SaturationData const& S_L_data,
12 SaturationDataDeriv const& dS_L_data,
14{
15 auto const rho_SR = rho_S_data.rho_SR;
16 auto const phi = poro_data.phi;
17 auto const S_L = S_L_data.S_L;
18 auto const rho_LR = rho_L_data.rho_LR;
19 auto const b = specific_body_force_();
20
21 double const rho = rho_SR * (1 - phi) + S_L * phi * rho_LR;
22 out.volumetric_body_force = rho * b;
23
24 // There is no minus in the Jacobian block, because volumetric_body_force is
25 // subtracted from the residual vector.
26 out.J_up_HT_V_N =
27 poro_data.phi * rho_L_data.rho_LR * dS_L_data.dS_L_dp_cap * b;
28}
29
30template struct GravityModel<2>;
31template struct GravityModel<3>;
32} // namespace ProcessLib::ThermoRichardsMechanics
ProcessLib::ConstitutiveRelations::SpecificBodyForce< DisplacementDim > const specific_body_force_
void eval(PorosityData const &poro_data, SolidDensityData const &rho_S_data, LiquidDensityData const &rho_L_data, SaturationData const &S_L_data, SaturationDataDeriv const &dS_L_data, GravityData< DisplacementDim > &out) const