31 namespace TwoPhaseFlowWithPrho
33 std::unique_ptr<TwoPhaseFlowWithPrhoMaterialProperties>
37 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters)
39 DBUG(
"Reading material properties of two-phase flow process.");
47 auto _liquid_density =
50 auto const& rho_gas_conf = fluid_config.getConfigSubtree(
"gas_density");
54 auto const& mu_conf = fluid_config.getConfigSubtree(
"liquid_viscosity");
57 auto const& mu_gas_conf = fluid_config.getConfigSubtree(
"gas_viscosity");
61 std::vector<int> mat_ids;
62 std::vector<int> mat_krel_ids;
63 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Permeability>>
64 _intrinsic_permeability_models;
65 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>>
67 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>
70 std::unique_ptr<MaterialLib::PorousMedium::CapillaryPressureSaturation>>
71 _capillary_pressure_models;
73 std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
74 _relative_permeability_models;
79 for (
auto const& conf : poro_config.getConfigSubtreeList(
"porous_medium"))
83 mat_ids.push_back(*
id);
86 auto const& permeability_conf = conf.getConfigSubtree(
"permeability");
87 _intrinsic_permeability_models.emplace_back(
89 permeability_conf, parameters));
92 auto const& porosity_conf = conf.getConfigSubtree(
"porosity");
95 _porosity_models.emplace_back(std::move(n));
98 auto const& storage_conf = conf.getConfigSubtree(
"storage");
100 _storage_models.emplace_back(std::move(
beta));
102 auto const& capillary_pressure_conf =
104 conf.getConfigSubtree(
"capillary_pressure");
106 capillary_pressure_conf);
107 _capillary_pressure_models.emplace_back(std::move(pc));
109 auto const& krel_config =
111 conf.getConfigSubtree(
"relative_permeability");
113 auto const& krel_conf :
115 krel_config.getConfigSubtreeList(
"relative_permeability"))
119 krel_conf.getConfigAttributeOptional<
int>(
"id");
120 mat_krel_ids.push_back(*krel_id);
124 _relative_permeability_models.emplace_back(std::move(krel_n));
133 return std::make_unique<TwoPhaseFlowWithPrhoMaterialProperties>(
134 material_ids, std::move(_liquid_density), std::move(_viscosity),
135 std::move(_gas_density), std::move(_gas_viscosity),
136 std::move(_intrinsic_permeability_models), std::move(_porosity_models),
137 std::move(_storage_models), std::move(_capillary_pressure_models),
138 std::move(_relative_permeability_models));
void DBUG(char const *fmt, Args const &... args)
Definition of the Mesh class.
Definition of the PiecewiseLinearInterpolation class.
ConfigTree getConfigSubtree(std::string const &root) const
std::optional< T > getConfigAttributeOptional(std::string const &attr) const
void reorderVector(std::vector< ValueType > &v, std::vector< IndexType > const &order)
std::unique_ptr< FluidProperty > createFluidDensityModel(BaseLib::ConfigTree const &config)
std::unique_ptr< FluidProperty > createViscosityModel(BaseLib::ConfigTree const &config)
std::unique_ptr< RelativePermeability > createRelativePermeabilityModel(BaseLib::ConfigTree const &config)
std::unique_ptr< CapillaryPressureSaturation > createCapillaryPressureModel(BaseLib::ConfigTree const &config)
std::unique_ptr< Permeability > createPermeabilityModel(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< Porosity > createPorosityModel(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< Storage > createStorageModel(BaseLib::ConfigTree const &config)
std::unique_ptr< TwoPhaseFlowWithPrhoMaterialProperties > createTwoPhaseFlowPrhoMaterialProperties(BaseLib::ConfigTree const &config, MeshLib::PropertyVector< int > const *const material_ids, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)