diff --git a/ProcessLib/RichardsFlow/CreateRichardsFlowMaterialProperties.cpp b/ProcessLib/RichardsFlow/CreateRichardsFlowMaterialProperties.cpp index 3252bf4a003b043834d53a38735bf847903f8e7e..da3485782c507565f231676c2075874dc2770ab8 100644 --- a/ProcessLib/RichardsFlow/CreateRichardsFlowMaterialProperties.cpp +++ b/ProcessLib/RichardsFlow/CreateRichardsFlowMaterialProperties.cpp @@ -13,6 +13,7 @@ #include "BaseLib/reorderVector.h" #include "MaterialLib/Fluid/FluidProperty.h" +#include "MaterialLib/Fluid/FluidProperties/CreateFluidProperties.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h" #include "MaterialLib/PorousMedium/Storage/Storage.h" #include "MaterialLib/PorousMedium/UnsaturatedProperty/CapillaryPressure/CapillaryPressureSaturation.h" @@ -41,15 +42,8 @@ createRichardsFlowMaterialProperties( //! \ogs_file_param{prj__processes__process__RICHARDS_FLOW__material_property__fluid} auto const& fluid_config = config.getConfigSubtree("fluid"); - - // Get fluid properties - //! \ogs_file_param{prj__processes__process__RICHARDS_FLOW__material_property__fluid_density} - auto const& rho_conf = fluid_config.getConfigSubtree("fluid_density"); - auto fluid_density = MaterialLib::Fluid::createFluidDensityModel(rho_conf); - - //! \ogs_file_param{prj__processes__process__RICHARDS_FLOW__material_property__fluid_viscosity} - auto const& mu_conf = fluid_config.getConfigSubtree("fluid_viscosity"); - auto fluid_viscosity = MaterialLib::Fluid::createViscosityModel(mu_conf); + auto fluid_properties = + MaterialLib::Fluid::createFluidProperties(fluid_config); // Get porous properties std::vector<int> mat_ids; @@ -112,7 +106,7 @@ createRichardsFlowMaterialProperties( return std::unique_ptr<RichardsFlowMaterialProperties>{ new RichardsFlowMaterialProperties{ - material_ids, std::move(fluid_density), std::move(fluid_viscosity), + material_ids, std::move(fluid_properties), std::move(intrinsic_permeability_models), std::move(porosity_models), std::move(storage_models), std::move(capillary_pressure_models), diff --git a/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.cpp b/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.cpp index dfbc3e396331199ab9b7174c4cf101108554bb73..98cca366a986160ba46a13dfa8ecef37f23f8828 100644 --- a/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.cpp +++ b/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.cpp @@ -31,8 +31,7 @@ namespace RichardsFlow { RichardsFlowMaterialProperties::RichardsFlowMaterialProperties( boost::optional<MeshLib::PropertyVector<int> const&> const material_ids, - std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& fluid_density, - std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& fluid_viscosity, + std::unique_ptr<MaterialLib::Fluid::FluidProperties>&& fluid_properties, std::vector<Eigen::MatrixXd>&& intrinsic_permeability_models, std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>>&& porosity_models, @@ -45,8 +44,7 @@ RichardsFlowMaterialProperties::RichardsFlowMaterialProperties( std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>&& relative_permeability_models) : _material_ids(material_ids), - _fluid_density(std::move(fluid_density)), - _fluid_viscosity(std::move(fluid_viscosity)), + _fluid_properties(std::move(fluid_properties)), _intrinsic_permeability_models(intrinsic_permeability_models), _porosity_models(std::move(porosity_models)), _storage_models(std::move(storage_models)), @@ -73,7 +71,8 @@ double RichardsFlowMaterialProperties::getFluidDensity(const double p, ArrayType vars; vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T; vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p; - return _fluid_density->getValue(vars); + return _fluid_properties->getValue( + MaterialLib::Fluid::FluidPropertyType::Density, vars); } double RichardsFlowMaterialProperties::getFluidViscosity(const double p, @@ -82,7 +81,8 @@ double RichardsFlowMaterialProperties::getFluidViscosity(const double p, ArrayType vars; vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T; vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p; - return _fluid_viscosity->getValue(vars); + return _fluid_properties->getValue( + MaterialLib::Fluid::FluidPropertyType::Viscosity, vars); } Eigen::MatrixXd const& RichardsFlowMaterialProperties::getPermeability( diff --git a/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.h b/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.h index 4021072673e2c053e34da6915d3caa00b8a061d1..5a8a75ad5f0a993688de5d9021adfa77f7ce4be4 100644 --- a/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.h +++ b/ProcessLib/RichardsFlow/RichardsFlowMaterialProperties.h @@ -13,6 +13,7 @@ #include <vector> #include "MaterialLib/Fluid/FluidPropertyHeaders.h" +#include "MaterialLib/Fluid/FluidProperties/FluidProperties.h" #include "MaterialLib/PhysicalConstant.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h" #include "MaterialLib/PorousMedium/PorousPropertyHeaders.h" @@ -49,8 +50,7 @@ public: RichardsFlowMaterialProperties( boost::optional<MeshLib::PropertyVector<int> const&> const material_ids, - std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& fluid_density, - std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& fluid_viscosity, + std::unique_ptr<MaterialLib::Fluid::FluidProperties>&& fluid_properties, std::vector<Eigen::MatrixXd>&& intrinsic_permeability_models, std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>>&& porosity_models, @@ -96,8 +96,8 @@ private: */ boost::optional<MeshLib::PropertyVector<int> const&> const _material_ids; - std::unique_ptr<MaterialLib::Fluid::FluidProperty> const _fluid_density; - std::unique_ptr<MaterialLib::Fluid::FluidProperty> const _fluid_viscosity; + const std::unique_ptr<MaterialLib::Fluid::FluidProperties> + _fluid_properties; std::vector<Eigen::MatrixXd> const _intrinsic_permeability_models; std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>> const