OGS
DarcyLaw.h
Go to the documentation of this file.
1
11#pragma once
12
13#include "BaseLib/StrongType.h"
14#include "LiquidDensity.h"
15#include "LiquidViscosity.h"
16#include "PermeabilityData.h"
18#include "ThermoOsmosis.h"
19
21{
22template <int DisplacementDim>
24 struct DarcyLawDataTag>;
25
26constexpr std::string_view ioName(struct DarcyLawDataTag*)
27{
28 return "velocity";
29}
30
31template <int DisplacementDim>
33{
34 explicit DarcyLawModel(
35 Eigen::Vector<double, DisplacementDim> const& specific_body_force)
36 : b_(specific_body_force)
37 {
38 }
39
40 void eval(CapillaryPressureData<DisplacementDim> const& p_cap_data,
41 LiquidDensityData const& rho_L_data,
42 LiquidViscosityData const& mu_L_data,
43 PermeabilityData<DisplacementDim> const& perm_data,
44 ThermoOsmosisData<DisplacementDim> const& th_osmosis_data,
46
48 SpecificBodyForceData<DisplacementDim> const& specific_body_force_data)
49 {
50 return DarcyLawModel{specific_body_force_data.specific_body_force};
51 }
52
53private:
55 Eigen::Vector<double, DisplacementDim> const b_;
56};
57
58extern template struct DarcyLawModel<2>;
59extern template struct DarcyLawModel<3>;
60} // namespace ProcessLib::ThermoRichardsMechanics
constexpr std::string_view ioName(struct DarcyLawDataTag *)
Definition DarcyLaw.h:26
Eigen::Vector< double, DisplacementDim > const b_
Gravity vector (specific body force).
Definition DarcyLaw.h:55
void eval(CapillaryPressureData< DisplacementDim > const &p_cap_data, LiquidDensityData const &rho_L_data, LiquidViscosityData const &mu_L_data, PermeabilityData< DisplacementDim > const &perm_data, ThermoOsmosisData< DisplacementDim > const &th_osmosis_data, DarcyLawData< DisplacementDim > &out) const
Definition DarcyLaw.cpp:16
static DarcyLawModel create(SpecificBodyForceData< DisplacementDim > const &specific_body_force_data)
Definition DarcyLaw.h:47
DarcyLawModel(Eigen::Vector< double, DisplacementDim > const &specific_body_force)
Definition DarcyLaw.h:34
Eigen::Vector< double, DisplacementDim > specific_body_force