37 DBUG(
"Reading material properties of two-phase flow process.");
40 auto fluid_config = config.getConfigSubtree(
"fluid");
44 auto const& rho_conf = fluid_config.getConfigSubtree(
"liquid_density");
47 auto const& rho_gas_conf = fluid_config.getConfigSubtree(
"gas_density");
51 auto const& mu_conf = fluid_config.getConfigSubtree(
"liquid_viscosity");
54 auto const& mu_gas_conf = fluid_config.getConfigSubtree(
"gas_viscosity");
58 std::vector<int> mat_ids;
59 std::vector<int> mat_krel_ids;
60 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Permeability>>
61 intrinsic_permeability_models;
62 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>>
64 std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>
67 std::unique_ptr<MaterialLib::PorousMedium::CapillaryPressureSaturation>>
68 capillary_pressure_models;
70 std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
71 relative_permeability_models;
74 auto const& poro_config = config.getConfigSubtree(
"porous_medium");
76 for (
auto const& conf : poro_config.getConfigSubtreeList(
"porous_medium"))
79 auto const id = conf.getConfigAttributeOptional<
int>(
"id");
80 mat_ids.push_back(*
id);
83 auto const& permeability_conf = conf.getConfigSubtree(
"permeability");
84 intrinsic_permeability_models.emplace_back(
86 permeability_conf, parameters));
89 auto const& porosity_conf = conf.getConfigSubtree(
"porosity");
92 porosity_models.emplace_back(std::move(n));
95 auto const& storage_conf = conf.getConfigSubtree(
"storage");
97 storage_models.emplace_back(std::move(
beta));
99 auto const& capillary_pressure_conf =
101 conf.getConfigSubtree(
"capillary_pressure");
103 capillary_pressure_conf);
104 capillary_pressure_models.emplace_back(std::move(pc));
106 auto const& krel_config =
108 conf.getConfigSubtree(
"relative_permeability");
110 auto const& krel_conf :
112 krel_config.getConfigSubtreeList(
"relative_permeability"))
116 krel_conf.getConfigAttributeOptional<
int>(
"id");
117 mat_krel_ids.push_back(*krel_id);
121 relative_permeability_models.emplace_back(std::move(krel_n));
130 return std::forward_as_tuple(
131 std::make_unique<TwoPhaseFlowWithPPMaterialProperties>(
132 material_ids, std::move(liquid_density),
133 std::move(liquid_viscosity), std::move(gas_density),
134 std::move(gas_viscosity), std::move(intrinsic_permeability_models),
135 std::move(porosity_models), std::move(storage_models),
136 std::move(capillary_pressure_models),
137 std::move(relative_permeability_models)),
138 std::move(fluid_config));
void DBUG(char const *fmt, Args const &... args)
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)