OGS
ThermalTwoPhaseFlowWithPPMaterialProperties.cpp
Go to the documentation of this file.
1 
12 
13 #include "BaseLib/Logging.h"
23 #include "MeshLib/Mesh.h"
24 #include "MeshLib/PropertyVector.h"
25 #include "NumLib/NewtonRaphson.h"
26 #include "ParameterLib/Parameter.h"
28 
29 namespace ProcessLib
30 {
33 
34 namespace ThermalTwoPhaseFlowWithPP
35 {
38  std::unique_ptr<MaterialLib::TwoPhaseFlowWithPP::
39  TwoPhaseFlowWithPPMaterialProperties>&&
40  two_phase_material_model,
41  std::unique_ptr<MaterialLib::Fluid::FluidProperty>&&
42  specific_heat_capacity_solid,
43  std::unique_ptr<MaterialLib::Fluid::FluidProperty>&&
44  specific_heat_capacity_water,
45  std::unique_ptr<MaterialLib::Fluid::FluidProperty>&&
46  specific_heat_capacity_air,
47  std::unique_ptr<MaterialLib::Fluid::FluidProperty>&&
48  specific_heat_capacity_vapor,
49  std::unique_ptr<MaterialLib::Fluid::FluidProperty>&&
50  thermal_conductivity_dry_solid,
51  std::unique_ptr<MaterialLib::Fluid::FluidProperty>&&
52  thermal_conductivity_wet_solid,
53  std::unique_ptr<MaterialLib::Fluid::WaterVaporProperties>&&
54  water_vapor_properties)
55  : _two_phase_material_model(std::move(two_phase_material_model)),
56  _specific_heat_capacity_solid(std::move(specific_heat_capacity_solid)),
57  _specific_heat_capacity_water(std::move(specific_heat_capacity_water)),
58  _specific_heat_capacity_air(std::move(specific_heat_capacity_air)),
59  _specific_heat_capacity_vapor(std::move(specific_heat_capacity_vapor)),
60  _thermal_conductivity_dry_solid(
61  std::move(thermal_conductivity_dry_solid)),
62  _thermal_conductivity_wet_solid(
63  std::move(thermal_conductivity_wet_solid)),
64  _water_vapor_properties(std::move(water_vapor_properties))
65 {
66  DBUG("Create material properties for non-isothermal two-phase flow model.");
67 }
68 
69 double
71  const double p, const double T) const
72 {
73  ArrayType vars;
74  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
75  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
76  return _specific_heat_capacity_solid->getValue(vars);
77 }
78 
79 double
81  const double p, const double T) const
82 {
83  ArrayType vars;
84  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
85  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
86  return _specific_heat_capacity_water->getValue(vars);
87 }
88 
90  const double p, const double T) const
91 {
92  ArrayType vars;
93  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
94  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
95  return _specific_heat_capacity_air->getValue(vars);
96 }
97 
98 double
100  const double p, const double T) const
101 {
102  ArrayType vars;
103  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
104  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
105  return _specific_heat_capacity_vapor->getValue(vars);
106 }
107 
108 double
110  const double p, const double T) const
111 {
112  ArrayType vars;
113  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
114  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
115  return _thermal_conductivity_dry_solid->getValue(vars);
116 }
117 
118 double
120  const double p, const double T) const
121 {
122  ArrayType vars;
123  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
124  vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
125  return _thermal_conductivity_wet_solid->getValue(vars);
126 }
127 
128 double
130  double const /*t*/, ParameterLib::SpatialPosition const& /*x*/,
131  double const Sw, double const lambda_pm_dry, double const lambda_pm_wet)
132 {
133  double lambda_pm =
134  lambda_pm_dry + std::sqrt(Sw) * (lambda_pm_wet - lambda_pm_dry);
135  if (Sw > 1)
136  {
137  lambda_pm = lambda_pm_wet;
138  }
139  else if (Sw < 0)
140  {
141  lambda_pm = lambda_pm_dry;
142  }
143  return lambda_pm;
144 }
145 
146 double
148  const double T) const
149 {
150  return _water_vapor_properties->calculateSaturatedVaporPressure(T);
151 }
152 double
154  const double pc, const double T, const double mass_density_water) const
155 {
156  return _water_vapor_properties->calculateVaporPressureNonwet(
157  pc, T, mass_density_water);
158 }
160  const double T) const
161 {
162  return _water_vapor_properties->calculateDerivativedPsatdT(T);
163 }
165  const double pc, const double T, const double mass_density_water) const
166 {
167  return _water_vapor_properties->calculateDerivativedPgwdT(
168  pc, T, mass_density_water);
169 }
171  const double pc, const double T, const double mass_density_water) const
172 {
173  return _water_vapor_properties->calculateDerivativedPgwdPC(
174  pc, T, mass_density_water);
175 }
177  const double p_air_nonwet, const double p_vapor_nonwet, const double pc,
178  const double T, const double mass_density_water) const
179 {
180  return _water_vapor_properties->calculatedDensityNonwetdT(
181  p_air_nonwet, p_vapor_nonwet, pc, T, mass_density_water);
182 }
183 
185  const double temperature, const double heat_capacity_water_vapor,
186  const double pg, const double latent_heat_evaporation) const
187 {
188  return _water_vapor_properties->getWaterVaporEnthalpySimple(
189  temperature, heat_capacity_water_vapor, pg, latent_heat_evaporation);
190 }
191 
193  const double temperature,
194  const double heat_capacity_dry_air,
195  const double /*pg*/) const
196 {
197  return heat_capacity_dry_air * (temperature - CelsiusZeroInKelvin) +
198  IdealGasConstant * (temperature - CelsiusZeroInKelvin) /
200 }
201 
202 double
204  const double temperature,
205  const double heat_capacity_liquid_water,
206  const double /*pl*/)
207 {
208  return heat_capacity_liquid_water * (temperature - CelsiusZeroInKelvin);
209 }
210 
211 } // namespace ThermalTwoPhaseFlowWithPP
212 } // namespace ProcessLib
void DBUG(char const *fmt, Args const &... args)
Definition: Logging.h:27
Definition of the Mesh class.
Definition of the PiecewiseLinearInterpolation class.
double calculateDerivativedPsatdT(const double T) const
Derivative of SaturatedVaporPressure in terms of T.
double calculateVaporPressureNonwet(const double pc, const double T, const double mass_density_water) const
ThermalTwoPhaseFlowWithPPMaterialProperties(std::unique_ptr< MaterialLib::TwoPhaseFlowWithPP::TwoPhaseFlowWithPPMaterialProperties > &&two_phase_material_model, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&specific_heat_capacity_solid, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&specific_heat_capacity_water, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&specific_heat_capacity_air, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&specific_heat_capacity_vapor, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&thermal_conductivity_dry_solid, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&thermal_conductivity_wet_solid, std::unique_ptr< MaterialLib::Fluid::WaterVaporProperties > &&water_vapor_properties)
double getWaterVaporEnthalpySimple(const double temperature, const double heat_capacity_water_vapor, const double pg, const double latent_heat_evaporation) const
Specific enthalpy of water vapor.
static double getLiquidWaterEnthalpySimple(const double temperature, const double heat_capacity_liquid_water, const double)
Specific enthalpy of liquid water.
static double calculateUnsatHeatConductivity(double const t, ParameterLib::SpatialPosition const &x, double const Sw, double const lambda_pm_dry, double const lambda_pm_wet)
Calculates the unsaturated heat conductivity.
double calculatedDensityNonwetdT(const double p_air_nonwet, const double p_vapor_nonwet, const double pc, const double T, const double mass_density_water) const
double calculateDerivativedPgwdPC(const double pc, const double T, const double mass_density_water) const
Derivative of partial vapor pressure in terms of PC.
double calculateDerivativedPgwdT(const double pc, const double T, const double mass_density_water) const
Derivative of partial vapor pressure in terms of T.
double getAirEnthalpySimple(const double temperature, const double heat_capacity_dry_air, const double) const
Specific enthalpy of air.
constexpr double CelsiusZeroInKelvin
Zero degrees Celsius in Kelvin.