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,
"PengRobinson"))
103 return createPengRobinson(config);
106 if (boost::iequals(property_type,
"IdealGasLawBinaryMixture"))
108 return createIdealGasLawBinaryMixture(config);
111 if (boost::iequals(property_type,
"StrainDependentPermeability"))
113 return createStrainDependentPermeability(
114 geometry_dimension, config, parameters, local_coordinate_system);
117 if (boost::iequals(property_type,
"GasPressureDependentPermeability"))
119 return createGasPressureDependentPermeability(
120 geometry_dimension, config, parameters, local_coordinate_system);
123 if (boost::iequals(property_type,
"EmbeddedFracturePermeability"))
125 return createEmbeddedFracturePermeability(geometry_dimension, config,
129 if (boost::iequals(property_type,
130 "OrthotropicEmbeddedFracturePermeability"))
132 return createOrthotropicEmbeddedFracturePermeability(
133 geometry_dimension, config, parameters);
136 if (boost::iequals(property_type,
137 "PermeabilityMohrCoulombFailureIndexModel"))
139 return createPermeabilityMohrCoulombFailureIndexModel(
140 geometry_dimension, config, parameters, local_coordinate_system);
143 if (boost::iequals(property_type,
"KozenyCarman"))
145 return createKozenyCarmanModel(config, parameters);
148 if (boost::iequals(property_type,
"VermaPruess"))
150 return createVermaPruessModel(config, parameters);
153 if (boost::iequals(property_type,
"PermeabilityOrthotropicPowerLaw"))
155 return createPermeabilityOrthotropicPowerLaw(config,
156 local_coordinate_system);
159 if (boost::iequals(property_type,
"PorosityFromMassBalance"))
161 return createPorosityFromMassBalance(config, parameters);
164 if (boost::iequals(property_type,
"TransportPorosityFromMassBalance"))
166 return createTransportPorosityFromMassBalance(config, parameters);
169 if (boost::iequals(property_type,
"SaturationBrooksCorey"))
171 return createSaturationBrooksCorey(config);
174 if (boost::iequals(property_type,
"RelPermBrooksCorey"))
176 return createRelPermBrooksCorey(config);
179 if (boost::iequals(property_type,
"RelPermBrooksCoreyNonwettingPhase"))
181 return createRelPermBrooksCoreyNonwettingPhase(config);
184 if (boost::iequals(property_type,
"SaturationLiakopoulos"))
186 return createSaturationLiakopoulos(config);
189 if (boost::iequals(property_type,
"RelPermLiakopoulos"))
191 return createRelPermLiakopoulos(config);
194 if (boost::iequals(property_type,
"SaturationExponential"))
196 return createSaturationExponential(config);
198 if (boost::iequals(property_type,
"SaturationVanGenuchten"))
200 return createSaturationVanGenuchten(config);
203 if (boost::iequals(property_type,
204 "SaturationVanGenuchtenWithVolumetricStrain"))
206 return createSaturationVanGenuchtenWithVolumetricStrain(config);
209 if (boost::iequals(property_type,
"CapillaryPressureVanGenuchten"))
211 return createCapillaryPressureVanGenuchten(config);
214 if (boost::iequals(property_type,
215 "CapillaryPressureRegularizedVanGenuchten"))
217 return createCapillaryPressureRegularizedVanGenuchten(config);
220 if (boost::iequals(property_type,
"RelativePermeabilityVanGenuchten"))
222 return createRelPermVanGenuchten(config);
225 if (boost::iequals(property_type,
226 "RelativePermeabilityNonWettingPhaseVanGenuchtenMualem"))
228 return createRelPermNonWettingPhaseVanGenuchtenMualem(config);
231 if (boost::iequals(property_type,
"RelativePermeabilityUdell"))
233 return createRelPermUdell(config);
236 if (boost::iequals(property_type,
237 "RelativePermeabilityUdellNonwettingPhase"))
239 return createRelPermUdellNonwettingPhase(config);
242 if (boost::iequals(property_type,
243 "RelativePermeabilityGeneralizedPowerNonwettingPhase"))
245 return createRelPermGeneralizedPowerNonwettingPhase(config);
248 if (boost::iequals(property_type,
"RelativePermeabilityGeneralizedPower"))
250 return createRelPermGeneralizedPower(config);
253 if (boost::iequals(property_type,
"SaturationDependentSwelling"))
255 return createSaturationDependentSwelling(config,
256 local_coordinate_system);
259 if (boost::iequals(property_type,
"TemperatureDependentFraction"))
261 return createTemperatureDependentFraction(config);
264 if (boost::iequals(property_type,
"SpecificHeatCapacityWithLatentHeat"))
266 return createSpecificHeatCapacityWithLatentHeat(config);
269 if (boost::iequals(property_type,
"BishopsPowerLaw"))
271 return createBishopsPowerLaw(config);
274 if (boost::iequals(property_type,
"BishopsSaturationCutoff"))
276 return createBishopsSaturationCutoff(config);
279 if (boost::iequals(property_type,
"LinearSaturationSwellingStress"))
281 return createLinearSaturationSwellingStress(config);
284 if (boost::iequals(property_type,
"SaturationWeightedThermalConductivity"))
286 return createSaturationWeightedThermalConductivity(geometry_dimension,
290 if (boost::iequals(property_type,
"WaterDensityIAPWSIF97Region1"))
292 return createWaterDensityIAPWSIF97Region1(config);
295 if (boost::iequals(property_type,
296 "WaterSaturationTemperatureIAPWSIF97Region4"))
298 return createWaterSaturationTemperatureIAPWSIF97Region4(config);
301 if (boost::iequals(property_type,
"WaterEnthalpyIAPWSIF97Region1"))
303 return createWaterEnthalpyIAPWSIF97Region1(config);
306 if (boost::iequals(property_type,
"WaterLiquidDensityIAPWSIF97Region4"))
308 return createWaterLiquidDensityIAPWSIF97Region4(config);
311 if (boost::iequals(property_type,
"WaterVapourDensityIAPWSIF97Region4"))
313 return createWaterVapourDensityIAPWSIF97Region4(config);
316 if (boost::iequals(property_type,
"WaterLiquidEnthalpyIAPWSIF97Region4"))
318 return createWaterLiquidEnthalpyIAPWSIF97Region4(config);
321 if (boost::iequals(property_type,
"WaterVapourEnthalpyIAPWSIF97Region4"))
323 return createWaterVapourEnthalpyIAPWSIF97Region4(config);
326 if (boost::iequals(property_type,
"WaterTemperatureIAPWSIF97Region1"))
328 return createWaterTemperatureIAPWSIF97Region1(config);
331 if (boost::iequals(property_type,
"WaterVapourDensity"))
333 return createWaterVapourDensity(config);
336 if (boost::iequals(property_type,
"VapourDiffusionFEBEX"))
338 return createVapourDiffusionFEBEX(config);
341 if (boost::iequals(property_type,
"VapourDiffusionDeVries"))
343 return createVapourDiffusionDeVries(config);
346 if (boost::iequals(property_type,
"VapourDiffusionPMQ"))
348 return createVapourDiffusionPMQ(config);
351 if (boost::iequals(property_type,
"LinearWaterVapourLatentHeat"))
353 return createLinearWaterVapourLatentHeat(config);
356 if (boost::iequals(property_type,
357 "WaterVapourLatentHeatWithCriticalTemperature"))
359 return createWaterVapourLatentHeatWithCriticalTemperature(config);
362 if (boost::iequals(property_type,
"TemperatureDependentDiffusion"))
364 return createTemperatureDependentDiffusion(config, parameters);
367 if (boost::iequals(property_type,
"VolumeFractionAverage"))
369 return createVolumeFractionAverage(config);
372 if (boost::iequals(property_type,
"WaterViscosityIAPWS"))
374 return createWaterViscosityIAPWS(config);
377 if (boost::iequals(property_type,
"LiquidViscosityVogels"))
379 return createLiquidViscosityVogels(config);
382 if (boost::iequals(property_type,
"WaterThermalConductivityIAPWS"))
384 return createWaterThermalConductivityIAPWS(config);
388 OGS_FATAL(
"The specified component property type '{:s}' was not recognized",