OGS
MaterialLib::TwoPhaseFlowWithPP Namespace Reference

Classes

class  TwoPhaseFlowWithPPMaterialProperties
 

Functions

std::tuple< std::unique_ptr< TwoPhaseFlowWithPPMaterialProperties >, BaseLib::ConfigTreecreateTwoPhaseFlowMaterialProperties (BaseLib::ConfigTree const &config, MeshLib::PropertyVector< int > const *material_ids, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters)
 

Function Documentation

◆ createTwoPhaseFlowMaterialProperties()

std::tuple< std::unique_ptr< TwoPhaseFlowWithPPMaterialProperties >, BaseLib::ConfigTree > MaterialLib::TwoPhaseFlowWithPP::createTwoPhaseFlowMaterialProperties ( BaseLib::ConfigTree const &  config,
MeshLib::PropertyVector< int > const *  material_ids,
std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &  parameters 
)
Input File Parameter:
material__twophase_flow__material_property__fluid
Input File Parameter:
material__twophase_flow__material_property__fluid__liquid_density
Input File Parameter:
material__twophase_flow__material_property__fluid__gas_density
Input File Parameter:
material__twophase_flow__material_property__fluid__liquid_viscosity
Input File Parameter:
material__twophase_flow__material_property__fluid__gas_viscosity
Input File Parameter:
material__twophase_flow__material_property__porous_medium
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__id
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__permeability
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__porosity
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__storage
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__capillary_pressure
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__relative_permeability
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__relative_permeability__relative_permeability
Input File Parameter:
material__twophase_flow__material_property__porous_medium__porous_medium__relative_permeability__relative_permeability__id

Definition at line 32 of file CreateTwoPhaseFlowMaterialProperties.cpp.

36 {
37  DBUG("Reading material properties of two-phase flow process.");
38 
40  auto fluid_config = config.getConfigSubtree("fluid");
41 
42  // Get fluid properties
44  auto const& rho_conf = fluid_config.getConfigSubtree("liquid_density");
45  auto liquid_density = MaterialLib::Fluid::createFluidDensityModel(rho_conf);
47  auto const& rho_gas_conf = fluid_config.getConfigSubtree("gas_density");
48  auto gas_density =
51  auto const& mu_conf = fluid_config.getConfigSubtree("liquid_viscosity");
52  auto liquid_viscosity = MaterialLib::Fluid::createViscosityModel(mu_conf);
54  auto const& mu_gas_conf = fluid_config.getConfigSubtree("gas_viscosity");
55  auto gas_viscosity = MaterialLib::Fluid::createViscosityModel(mu_gas_conf);
56 
57  // Get porous properties
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>>
63  porosity_models;
64  std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>
65  storage_models;
66  std::vector<
67  std::unique_ptr<MaterialLib::PorousMedium::CapillaryPressureSaturation>>
68  capillary_pressure_models;
69  std::vector<
70  std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
71  relative_permeability_models;
72 
74  auto const& poro_config = config.getConfigSubtree("porous_medium");
76  for (auto const& conf : poro_config.getConfigSubtreeList("porous_medium"))
77  {
79  auto const id = conf.getConfigAttributeOptional<int>("id");
80  mat_ids.push_back(*id);
81 
83  auto const& permeability_conf = conf.getConfigSubtree("permeability");
84  intrinsic_permeability_models.emplace_back(
86  permeability_conf, parameters));
87 
89  auto const& porosity_conf = conf.getConfigSubtree("porosity");
91  parameters);
92  porosity_models.emplace_back(std::move(n));
93 
95  auto const& storage_conf = conf.getConfigSubtree("storage");
97  storage_models.emplace_back(std::move(beta));
98 
99  auto const& capillary_pressure_conf =
101  conf.getConfigSubtree("capillary_pressure");
103  capillary_pressure_conf);
104  capillary_pressure_models.emplace_back(std::move(pc));
105 
106  auto const& krel_config =
108  conf.getConfigSubtree("relative_permeability");
109  for (
110  auto const& krel_conf :
112  krel_config.getConfigSubtreeList("relative_permeability"))
113  {
114  auto const krel_id =
116  krel_conf.getConfigAttributeOptional<int>("id");
117  mat_krel_ids.push_back(*krel_id);
118  auto krel_n =
120  krel_conf);
121  relative_permeability_models.emplace_back(std::move(krel_n));
122  }
123  BaseLib::reorderVector(relative_permeability_models, mat_krel_ids);
124  }
125 
126  BaseLib::reorderVector(intrinsic_permeability_models, mat_ids);
127  BaseLib::reorderVector(porosity_models, mat_ids);
128  BaseLib::reorderVector(storage_models, mat_ids);
129 
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));
139 }
void DBUG(char const *fmt, Args const &... args)
Definition: Logging.h:27
void reorderVector(std::vector< ValueType > &v, std::vector< IndexType > const &order)
Definition: Algorithm.h:232
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 &parameters)
std::unique_ptr< Porosity > createPorosityModel(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters)
std::unique_ptr< Storage > createStorageModel(BaseLib::ConfigTree const &config)

References MaterialPropertyLib::beta, MaterialLib::PorousMedium::createCapillaryPressureModel(), MaterialLib::Fluid::createFluidDensityModel(), MaterialLib::PorousMedium::createPermeabilityModel(), MaterialLib::PorousMedium::createPorosityModel(), MaterialLib::PorousMedium::createRelativePermeabilityModel(), MaterialLib::PorousMedium::createStorageModel(), MaterialLib::Fluid::createViscosityModel(), DBUG(), BaseLib::ConfigTree::getConfigAttributeOptional(), BaseLib::ConfigTree::getConfigSubtree(), and BaseLib::reorderVector().

Referenced by ProcessLib::ThermalTwoPhaseFlowWithPP::createThermalTwoPhaseFlowWithPPMaterialProperties().