12 #include <boost/math/special_functions/pow.hpp>
29 namespace TwoPhaseFlowWithPP
33 std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& liquid_density,
34 std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& liquid_viscosity,
35 std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& gas_density,
36 std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& gas_viscosity,
37 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Permeability>>&&
38 intrinsic_permeability_models,
39 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>>&&
41 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>&&
43 std::vector<std::unique_ptr<
45 capillary_pressure_models,
47 std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>&&
48 relative_permeability_models)
49 : _material_ids(material_ids),
50 _liquid_density(std::move(liquid_density)),
51 _liquid_viscosity(std::move(liquid_viscosity)),
52 _gas_density(std::move(gas_density)),
53 _gas_viscosity(std::move(gas_viscosity)),
54 _intrinsic_permeability_models(std::move(intrinsic_permeability_models)),
55 _porosity_models(std::move(porosity_models)),
56 _storage_models(std::move(storage_models)),
57 _capillary_pressure_models(std::move(capillary_pressure_models)),
58 _relative_permeability_models(std::move(relative_permeability_models))
60 DBUG(
"Create material properties for Two-Phase flow with PP model.");
64 const std::size_t element_id)
const
71 assert(element_id < _material_ids->size());
76 const double p,
const double T)
const
94 const double p,
const double T)
const
103 const double p,
const double T)
const
112 const int material_id,
const double t,
119 const int material_id,
const double t,
121 const double T,
const double porosity_variable)
const
128 const int material_id,
const double ,
130 const double ,
const double pc)
const
136 const int material_id,
const double ,
145 const int material_id,
const double ,
149 const double dpcdsw =
156 const double ,
const double ,
const double saturation)
const
171 const double ,
const double ,
const double saturation)
const
void DBUG(char const *fmt, Args const &... args)
Definition of the Mesh class.
Definition of the PiecewiseLinearInterpolation class.
Base class of capillary pressure models.
double getWetRelativePermeability(const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
int getMaterialID(const std::size_t element_id) const
double getPorosity(const int material_id, const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double porosity_variable) const
double getSaturationDerivative(const int material_id, const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
double getSaturation(const int material_id, const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double pc) const
std::vector< std::unique_ptr< MaterialLib::PorousMedium::Porosity > > const _porosity_models
MeshLib::PropertyVector< int > const * _material_ids
TwoPhaseFlowWithPPMaterialProperties(MeshLib::PropertyVector< int > const *material_ids, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&liquid_density, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&liquid_viscosity, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&gas_density, std::unique_ptr< MaterialLib::Fluid::FluidProperty > &&gas_viscosity, std::vector< std::unique_ptr< MaterialLib::PorousMedium::Permeability >> &&intrinsic_permeability_models, std::vector< std::unique_ptr< MaterialLib::PorousMedium::Porosity >> &&porosity_models, std::vector< std::unique_ptr< MaterialLib::PorousMedium::Storage >> &&storage_models, std::vector< std::unique_ptr< MaterialLib::PorousMedium::CapillaryPressureSaturation >> &&capillary_pressure_models, std::vector< std::unique_ptr< MaterialLib::PorousMedium::RelativePermeability >> &&relative_permeability_models)
Eigen::MatrixXd getPermeability(const int material_id, const double t, const ParameterLib::SpatialPosition &pos, const int dim) const
double getGasDensity(const double p, const double T) const
std::unique_ptr< MaterialLib::Fluid::FluidProperty > const _gas_density
double getLiquidDensity(const double p, const double T) const
double getCapillaryPressure(const int material_id, const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
double getNonwetRelativePermeability(const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
double getLiquidViscosity(const double p, const double T) const
std::unique_ptr< MaterialLib::Fluid::FluidProperty > const _liquid_density
std::unique_ptr< MaterialLib::Fluid::FluidProperty > const _liquid_viscosity
MaterialLib::Fluid::FluidProperty::ArrayType ArrayType
std::vector< std::unique_ptr< MaterialLib::PorousMedium::CapillaryPressureSaturation > > const _capillary_pressure_models
double getGasViscosity(const double p, const double T) const
std::vector< std::unique_ptr< MaterialLib::PorousMedium::Permeability > > const _intrinsic_permeability_models
std::unique_ptr< MaterialLib::Fluid::FluidProperty > const _gas_viscosity