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")
44 return createConstant(config);
46 if (property_type ==
"Curve")
48 return createCurve(config, curves);
50 if (property_type ==
"Linear")
52 return createLinear(config);
55 if (property_type ==
"Exponential")
57 return createExponential(config);
59 if (property_type ==
"Function")
61 return createFunction(config);
64 if (property_type ==
"Parameter")
66 return createParameterProperty(config, parameters);
69 if (boost::iequals(property_type,
"AverageMolarMass"))
71 return createAverageMolarMass(config);
74 if (boost::iequals(property_type,
"ClausiusClapeyron"))
76 return createClausiusClapeyron(config);
79 if (boost::iequals(property_type,
"CubicLawPermeability"))
81 return createCubicLawPermeability(config, parameters);
84 if (boost::iequals(property_type,
"Dupuit"))
86 return createDupuitPermeability(config, parameters);
89 if (boost::iequals(property_type,
90 "EffectiveThermalConductivityPorosityMixing"))
92 return createEffectiveThermalConductivityPorosityMixing(
93 geometry_dimension, config, local_coordinate_system);
96 if (boost::iequals(property_type,
"IdealGasLaw"))
98 return createIdealGasLaw(config);
101 if (boost::iequals(property_type,
"IdealGasLawBinaryMixture"))
103 return createIdealGasLawBinaryMixture(config);
106 if (boost::iequals(property_type,
"StrainDependentPermeability"))
108 return createStrainDependentPermeability(
109 geometry_dimension, config, parameters, local_coordinate_system);
112 if (boost::iequals(property_type,
"GasPressureDependentPermeability"))
114 return createGasPressureDependentPermeability(
115 geometry_dimension, config, parameters, local_coordinate_system);
118 if (boost::iequals(property_type,
"EmbeddedFracturePermeability"))
120 return createEmbeddedFracturePermeability(geometry_dimension, config,
124 if (boost::iequals(property_type,
125 "OrthotropicEmbeddedFracturePermeability"))
127 return createOrthotropicEmbeddedFracturePermeability(
128 geometry_dimension, config, parameters);
131 if (boost::iequals(property_type,
132 "PermeabilityMohrCoulombFailureIndexModel"))
134 return createPermeabilityMohrCoulombFailureIndexModel(
135 geometry_dimension, config, parameters, local_coordinate_system);
138 if (boost::iequals(property_type,
"KozenyCarman"))
140 return createKozenyCarmanModel(config, parameters);
143 if (boost::iequals(property_type,
"VermaPruess"))
145 return createVermaPruessModel(config, parameters);
148 if (boost::iequals(property_type,
"PermeabilityOrthotropicPowerLaw"))
150 return createPermeabilityOrthotropicPowerLaw(config,
151 local_coordinate_system);
154 if (boost::iequals(property_type,
"PorosityFromMassBalance"))
156 return createPorosityFromMassBalance(config, parameters);
159 if (boost::iequals(property_type,
"TransportPorosityFromMassBalance"))
161 return createTransportPorosityFromMassBalance(config, parameters);
164 if (boost::iequals(property_type,
"SaturationBrooksCorey"))
166 return createSaturationBrooksCorey(config);
169 if (boost::iequals(property_type,
"RelPermBrooksCorey"))
171 return createRelPermBrooksCorey(config);
174 if (boost::iequals(property_type,
"RelPermBrooksCoreyNonwettingPhase"))
176 return createRelPermBrooksCoreyNonwettingPhase(config);
179 if (boost::iequals(property_type,
"SaturationLiakopoulos"))
181 return createSaturationLiakopoulos(config);
184 if (boost::iequals(property_type,
"RelPermLiakopoulos"))
186 return createRelPermLiakopoulos(config);
189 if (boost::iequals(property_type,
"SaturationExponential"))
191 return createSaturationExponential(config);
193 if (boost::iequals(property_type,
"SaturationVanGenuchten"))
195 return createSaturationVanGenuchten(config);
198 if (boost::iequals(property_type,
199 "SaturationVanGenuchtenWithVolumetricStrain"))
201 return createSaturationVanGenuchtenWithVolumetricStrain(config);
204 if (boost::iequals(property_type,
"CapillaryPressureVanGenuchten"))
206 return createCapillaryPressureVanGenuchten(config);
209 if (boost::iequals(property_type,
210 "CapillaryPressureRegularizedVanGenuchten"))
212 return createCapillaryPressureRegularizedVanGenuchten(config);
215 if (boost::iequals(property_type,
"RelativePermeabilityVanGenuchten"))
217 return createRelPermVanGenuchten(config);
220 if (boost::iequals(property_type,
221 "RelativePermeabilityNonWettingPhaseVanGenuchtenMualem"))
223 return createRelPermNonWettingPhaseVanGenuchtenMualem(config);
226 if (boost::iequals(property_type,
"RelativePermeabilityUdell"))
228 return createRelPermUdell(config);
231 if (boost::iequals(property_type,
232 "RelativePermeabilityUdellNonwettingPhase"))
234 return createRelPermUdellNonwettingPhase(config);
237 if (boost::iequals(property_type,
238 "RelativePermeabilityGeneralizedPowerNonwettingPhase"))
240 return createRelPermGeneralizedPowerNonwettingPhase(config);
243 if (boost::iequals(property_type,
"RelativePermeabilityGeneralizedPower"))
245 return createRelPermGeneralizedPower(config);
248 if (boost::iequals(property_type,
"SaturationDependentSwelling"))
250 return createSaturationDependentSwelling(config,
251 local_coordinate_system);
254 if (boost::iequals(property_type,
"TemperatureDependentFraction"))
256 return createTemperatureDependentFraction(config);
259 if (boost::iequals(property_type,
"SpecificHeatCapacityWithLatentHeat"))
261 return createSpecificHeatCapacityWithLatentHeat(config);
264 if (boost::iequals(property_type,
"BishopsPowerLaw"))
266 return createBishopsPowerLaw(config);
269 if (boost::iequals(property_type,
"BishopsSaturationCutoff"))
271 return createBishopsSaturationCutoff(config);
274 if (boost::iequals(property_type,
"LinearSaturationSwellingStress"))
276 return createLinearSaturationSwellingStress(config);
279 if (boost::iequals(property_type,
"SaturationWeightedThermalConductivity"))
281 return createSaturationWeightedThermalConductivity(geometry_dimension,
285 if (boost::iequals(property_type,
"WaterDensityIAPWSIF97Region1"))
287 return createWaterDensityIAPWSIF97Region1(config);
290 if (boost::iequals(property_type,
291 "WaterSaturationTemperatureIAPWSIF97Region4"))
293 return createWaterSaturationTemperatureIAPWSIF97Region4(config);
296 if (boost::iequals(property_type,
"WaterEnthalpyIAPWSIF97Region1"))
298 return createWaterEnthalpyIAPWSIF97Region1(config);
301 if (boost::iequals(property_type,
"WaterLiquidDensityIAPWSIF97Region4"))
303 return createWaterLiquidDensityIAPWSIF97Region4(config);
306 if (boost::iequals(property_type,
"WaterVapourDensityIAPWSIF97Region4"))
308 return createWaterVapourDensityIAPWSIF97Region4(config);
311 if (boost::iequals(property_type,
"WaterLiquidEnthalpyIAPWSIF97Region4"))
313 return createWaterLiquidEnthalpyIAPWSIF97Region4(config);
316 if (boost::iequals(property_type,
"WaterVapourEnthalpyIAPWSIF97Region4"))
318 return createWaterVapourEnthalpyIAPWSIF97Region4(config);
321 if (boost::iequals(property_type,
"WaterTemperatureIAPWSIF97Region1"))
323 return createWaterTemperatureIAPWSIF97Region1(config);
326 if (boost::iequals(property_type,
"WaterVapourDensity"))
328 return createWaterVapourDensity(config);
331 if (boost::iequals(property_type,
"VapourDiffusionFEBEX"))
333 return createVapourDiffusionFEBEX(config);
336 if (boost::iequals(property_type,
"VapourDiffusionDeVries"))
338 return createVapourDiffusionDeVries(config);
341 if (boost::iequals(property_type,
"VapourDiffusionPMQ"))
343 return createVapourDiffusionPMQ(config);
346 if (boost::iequals(property_type,
"LinearWaterVapourLatentHeat"))
348 return createLinearWaterVapourLatentHeat(config);
351 if (boost::iequals(property_type,
352 "WaterVapourLatentHeatWithCriticalTemperature"))
354 return createWaterVapourLatentHeatWithCriticalTemperature(config);
357 if (boost::iequals(property_type,
"TemperatureDependentDiffusion"))
359 return createTemperatureDependentDiffusion(config, parameters);
362 if (boost::iequals(property_type,
"VolumeFractionAverage"))
364 return createVolumeFractionAverage(config);
367 if (boost::iequals(property_type,
"WaterViscosityIAPWS"))
369 return createWaterViscosityIAPWS(config);
372 if (boost::iequals(property_type,
"LiquidViscosityVogels"))
374 return createLiquidViscosityVogels(config);
377 if (boost::iequals(property_type,
"WaterThermalConductivityIAPWS"))
379 return createWaterThermalConductivityIAPWS(config);
383 OGS_FATAL(
"The specified component property type '{:s}' was not recognized",