15 #include <boost/algorithm/string/predicate.hpp>
29 int const geometry_dimension,
31 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters,
34 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>>
const&
42 if (property_type ==
"Constant")
46 if (property_type ==
"Curve")
50 if (property_type ==
"Linear")
55 if (property_type ==
"Exponential")
59 if (property_type ==
"Function")
64 if (property_type ==
"Parameter")
69 if (boost::iequals(property_type,
"AverageMolarMass"))
74 if (boost::iequals(property_type,
"ClausiusClapeyron"))
79 if (boost::iequals(property_type,
"Dupuit"))
84 if (boost::iequals(property_type,
85 "EffectiveThermalConductivityPorosityMixing"))
88 geometry_dimension, config, local_coordinate_system);
91 if (boost::iequals(property_type,
"IdealGasLaw"))
96 if (boost::iequals(property_type,
"StrainDependentPermeability"))
99 geometry_dimension, config, parameters, local_coordinate_system);
102 if (boost::iequals(property_type,
"GasPressureDependentPermeability"))
105 geometry_dimension, config, parameters, local_coordinate_system);
108 if (boost::iequals(property_type,
"EmbeddedFracturePermeability"))
113 if (boost::iequals(property_type,
114 "OrthotropicEmbeddedFracturePermeability"))
117 geometry_dimension, config, parameters);
120 if (boost::iequals(property_type,
121 "PermeabilityMohrCoulombFailureIndexModel"))
124 geometry_dimension, config, parameters, local_coordinate_system);
127 if (boost::iequals(property_type,
"KozenyCarman"))
132 if (boost::iequals(property_type,
"PermeabilityOrthotropicPowerLaw"))
135 local_coordinate_system);
138 if (boost::iequals(property_type,
"PorosityFromMassBalance"))
143 if (boost::iequals(property_type,
"TransportPorosityFromMassBalance"))
148 if (boost::iequals(property_type,
"SaturationBrooksCorey"))
153 if (boost::iequals(property_type,
"RelPermBrooksCorey"))
158 if (boost::iequals(property_type,
"RelPermBrooksCoreyNonwettingPhase"))
163 if (boost::iequals(property_type,
"SaturationLiakopoulos"))
168 if (boost::iequals(property_type,
"RelPermLiakopoulos"))
173 if (boost::iequals(property_type,
"SaturationExponential"))
177 if (boost::iequals(property_type,
"SaturationVanGenuchten"))
182 if (boost::iequals(property_type,
"CapillaryPressureVanGenuchten"))
187 if (boost::iequals(property_type,
188 "CapillaryPressureRegularizedVanGenuchten"))
193 if (boost::iequals(property_type,
"RelativePermeabilityVanGenuchten"))
198 if (boost::iequals(property_type,
199 "RelativePermeabilityNonWettingPhaseVanGenuchtenMualem"))
204 if (boost::iequals(property_type,
"RelativePermeabilityUdell"))
209 if (boost::iequals(property_type,
210 "RelativePermeabilityUdellNonwettingPhase"))
215 if (boost::iequals(property_type,
"SaturationDependentThermalConductivity"))
220 if (boost::iequals(property_type,
"SaturationDependentSwelling"))
223 local_coordinate_system);
226 if (boost::iequals(property_type,
"BishopsPowerLaw"))
231 if (boost::iequals(property_type,
"BishopsSaturationCutoff"))
236 if (boost::iequals(property_type,
"LinearSaturationSwellingStress"))
241 if (boost::iequals(property_type,
"SoilThermalConductivitySomerton"))
244 geometry_dimension, config, parameters, local_coordinate_system);
247 if (boost::iequals(property_type,
"WaterVapourDensity"))
252 if (boost::iequals(property_type,
"VapourDiffusionFEBEX"))
257 if (boost::iequals(property_type,
"VapourDiffusionPMQ"))
262 if (boost::iequals(property_type,
"LinearWaterVapourLatentHeat"))
267 if (boost::iequals(property_type,
268 "WaterVapourLatentHeatWithCriticalTemperature"))
273 if (boost::iequals(property_type,
"TemperatureDependentDiffusion"))
279 OGS_FATAL(
"The specified component property type '{:s}' was not recognized",
287 int const geometry_dimension,
288 std::optional<BaseLib::ConfigTree>
const& config,
289 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters,
291 std::map<std::string,
292 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>>
const&
301 auto const& property_configs = config->getConfigSubtreeList(
"property");
302 if (property_configs.empty())
307 auto properties = std::make_unique<PropertyArray>();
309 for (
auto property_config : property_configs)
312 auto const property_name =
314 property_config.getConfigParameter<std::string>(
"name");
318 local_coordinate_system, curves);
T peekConfigParameter(std::string const ¶m) const
std::unique_ptr< Function > createFunction(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createPermeabilityOrthotropicPowerLaw(BaseLib::ConfigTree const &config, ParameterLib::CoordinateSystem const *const local_coordinate_system)
std::unique_ptr< Property > createLinearSaturationSwellingStress(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createEmbeddedFracturePermeability(int const geometry_dimension, BaseLib::ConfigTree const &config)
std::unique_ptr< DupuitPermeability > createDupuitPermeability(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
PropertyType convertStringToProperty(std::string const &string)
std::unique_ptr< SaturationDependentSwelling > createSaturationDependentSwelling(BaseLib::ConfigTree const &config, ParameterLib::CoordinateSystem const *const local_coordinate_system)
std::unique_ptr< TransportPorosityFromMassBalance > createTransportPorosityFromMassBalance(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< ClausiusClapeyron > createClausiusClapeyron(BaseLib::ConfigTree const &config)
std::unique_ptr< BishopsPowerLaw > createBishopsPowerLaw(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createTemperatureDependentDiffusion(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< SaturationLiakopoulos > createSaturationLiakopoulos(BaseLib::ConfigTree const &config)
std::unique_ptr< SaturationBrooksCorey > createSaturationBrooksCorey(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createVapourDiffusionFEBEX(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createKozenyCarmanModel(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< Property > createCapillaryPressureVanGenuchten(BaseLib::ConfigTree const &config)
std::unique_ptr< BishopsSaturationCutoff > createBishopsSaturationCutoff(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createPermeabilityMohrCoulombFailureIndexModel(int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system)
std::unique_ptr< Curve > createCurve(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation >> const &curves)
std::unique_ptr< Property > createWaterVapourLatentHeatWithCriticalTemperature(BaseLib::ConfigTree const &config)
std::unique_ptr< SaturationDependentThermalConductivity > createSaturationDependentThermalConductivity(BaseLib::ConfigTree const &config)
std::unique_ptr< RelPermUdellNonwettingPhase > createRelPermUdellNonwettingPhase(BaseLib::ConfigTree const &config)
std::unique_ptr< SaturationVanGenuchten > createSaturationVanGenuchten(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createEffectiveThermalConductivityPorosityMixing(int const geometry_dimension, BaseLib::ConfigTree const &config, ParameterLib::CoordinateSystem const *const local_coordinate_system)
std::unique_ptr< RelPermBrooksCorey > createRelPermBrooksCorey(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createGasPressureDependentPermeability(int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system)
std::unique_ptr< Property > createSoilThermalConductivitySomerton(int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system)
std::unique_ptr< Property > createRelPermNonWettingPhaseVanGenuchtenMualem(BaseLib::ConfigTree const &config)
std::unique_ptr< AverageMolarMass > createAverageMolarMass(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createStrainDependentPermeability(int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system)
std::unique_ptr< Property > createCapillaryPressureRegularizedVanGenuchten(BaseLib::ConfigTree const &config)
std::unique_ptr< RelPermUdell > createRelPermUdell(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createOrthotropicEmbeddedFracturePermeability(int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< Property > createWaterVapourDensity(BaseLib::ConfigTree const &config)
std::unique_ptr< IdealGasLaw > createIdealGasLaw(BaseLib::ConfigTree const &config)
std::unique_ptr< RelPermVanGenuchten > createRelPermVanGenuchten(BaseLib::ConfigTree const &config)
std::unique_ptr< Exponential > createExponential(BaseLib::ConfigTree const &config)
std::unique_ptr< Constant > createConstant(BaseLib::ConfigTree const &config)
std::unique_ptr< PropertyArray > createProperties(int const geometry_dimension, std::optional< BaseLib::ConfigTree > const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation >> const &curves)
std::unique_ptr< Property > createVapourDiffusionPMQ(BaseLib::ConfigTree const &config)
std::unique_ptr< PorosityFromMassBalance > createPorosityFromMassBalance(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< RelPermLiakopoulos > createRelPermLiakopoulos(BaseLib::ConfigTree const &config)
std::unique_ptr< RelPermBrooksCoreyNonwettingPhase > createRelPermBrooksCoreyNonwettingPhase(BaseLib::ConfigTree const &config)
std::unique_ptr< Parameter > createParameterProperty(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< Linear > createLinear(BaseLib::ConfigTree const &config)
std::unique_ptr< SaturationExponential > createSaturationExponential(BaseLib::ConfigTree const &config)
std::unique_ptr< Property > createLinearWaterVapourLatentHeat(BaseLib::ConfigTree const &config)
std::unique_ptr< MaterialPropertyLib::Property > createProperty(int const geometry_dimension, BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, ParameterLib::CoordinateSystem const *const local_coordinate_system, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation >> const &curves)