From 3b7daad4945bb83df1b0fe111cffe8a8e3d97bdd Mon Sep 17 00:00:00 2001 From: Yonghui <huangyh56@gmail.com> Date: Sat, 13 May 2017 18:17:23 +0200 Subject: [PATCH] directly pass fluid properties rather than fluid density&viscosity --- .../CreateRichardsFlowMaterialProperties.cpp | 14 ++++---------- .../RichardsFlowMaterialProperties.cpp | 12 ++++++------ .../RichardsFlow/RichardsFlowMaterialProperties.h | 8 ++++---- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/ProcessLib/RichardsFlow/CreateRichardsFlowMaterialProperties.cpp b/ProcessLib/RichardsFlow/CreateRichardsFlowMaterialProperties.cpp index 3252bf4a003..da3485782c5 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 dfbc3e39633..98cca366a98 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 4021072673e..5a8a75ad5f0 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 -- GitLab