diff --git a/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp b/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp index b5baad1c71ced0a21bf95fec2a2889854ee35455..4a8b0155acf3c6c0338e40ce5099338c870bdece 100644 --- a/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp +++ b/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp @@ -11,11 +11,7 @@ #include "CreatePorousMediaProperties.h" #include "BaseLib/Algorithm.h" -#include "MaterialLib/PorousMedium/Permeability/createPermeabilityModel.h" -#include "MaterialLib/PorousMedium/Porosity/createPorosityModel.h" -#include "MaterialLib/PorousMedium/Storage/createStorageModel.h" #include "MaterialLib/PorousMedium/UnsaturatedProperty/CapillaryPressure/CreateCapillaryPressureModel.h" -#include "MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.h" #include "MeshLib/Mesh.h" namespace ProcessLib @@ -23,23 +19,13 @@ namespace ProcessLib namespace RichardsComponentTransport { PorousMediaProperties createPorousMediaProperties( - MeshLib::Mesh& mesh, BaseLib::ConfigTree const& porous_medium_configs, - std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters) + MeshLib::Mesh& mesh, BaseLib::ConfigTree const& porous_medium_configs) { DBUG("Create PorousMediaProperties."); - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Permeability>> - intrinsic_permeability_models; - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>> - porosity_models; - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>> - storage_models; std::vector< std::unique_ptr<MaterialLib::PorousMedium::CapillaryPressureSaturation>> capillary_pressure_models; - std::vector< - std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>> - relative_permeability_models; std::vector<int> mat_ids; for ( @@ -51,28 +37,6 @@ PorousMediaProperties createPorousMediaProperties( auto const id = porous_medium_config.getConfigAttribute<int>("id"); mat_ids.push_back(id); - auto const& porosity_config = - //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium__porous_medium__porosity} - porous_medium_config.getConfigSubtree("porosity"); - porosity_models.emplace_back( - MaterialLib::PorousMedium::createPorosityModel(porosity_config, - parameters)); - - // Configuration for the intrinsic permeability - auto const& permeability_config = - //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium__porous_medium__permeability} - porous_medium_config.getConfigSubtree("permeability"); - intrinsic_permeability_models.emplace_back( - MaterialLib::PorousMedium::createPermeabilityModel( - permeability_config, parameters)); - - // Configuration for the specific storage. - auto const& storage_config = - //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium__porous_medium__storage} - porous_medium_config.getConfigSubtree("storage"); - storage_models.emplace_back( - MaterialLib::PorousMedium::createStorageModel(storage_config)); - auto const& capillary_pressure_config = //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium__porous_medium__capillary_pressure} porous_medium_config.getConfigSubtree("capillary_pressure"); @@ -80,19 +44,8 @@ PorousMediaProperties createPorousMediaProperties( MaterialLib::PorousMedium::createCapillaryPressureModel( capillary_pressure_config); capillary_pressure_models.emplace_back(std::move(capillary_pressure)); - - auto const& krel_config = - //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium__porous_medium__relative_permeability} - porous_medium_config.getConfigSubtree("relative_permeability"); - auto krel = MaterialLib::PorousMedium::createRelativePermeabilityModel( - krel_config); - relative_permeability_models.emplace_back(std::move(krel)); } - BaseLib::reorderVector(intrinsic_permeability_models, mat_ids); - BaseLib::reorderVector(porosity_models, mat_ids); - BaseLib::reorderVector(storage_models, mat_ids); - std::vector<int> material_ids(mesh.getNumberOfElements()); if (mesh.getProperties().existsPropertyVector<int>("MaterialIDs")) { @@ -103,11 +56,7 @@ PorousMediaProperties createPorousMediaProperties( material_ids.begin()); } - return PorousMediaProperties{std::move(porosity_models), - std::move(intrinsic_permeability_models), - std::move(storage_models), - std::move(capillary_pressure_models), - std::move(relative_permeability_models), + return PorousMediaProperties{std::move(capillary_pressure_models), std::move(material_ids)}; } diff --git a/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.h b/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.h index 9c101d82cae53838c68b74b07d074ea7976851d3..f56fd14a0d70ca3d7b640752d8433351ff973a71 100644 --- a/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.h +++ b/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.h @@ -23,8 +23,6 @@ namespace ProcessLib namespace RichardsComponentTransport { PorousMediaProperties createPorousMediaProperties( - MeshLib::Mesh& mesh, BaseLib::ConfigTree const& porous_medium_configs, - std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& - parameters); + MeshLib::Mesh& mesh, BaseLib::ConfigTree const& porous_medium_configs); } } diff --git a/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp b/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp index d8230ee3d15236e926641e221007359079707b0d..ec6f6cc6e0f7cf0d770aab492ee8e1b6d207bca7 100644 --- a/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp +++ b/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp @@ -11,7 +11,6 @@ #include "CreateRichardsComponentTransportProcess.h" #include "CreatePorousMediaProperties.h" -#include "MaterialLib/Fluid/FluidProperties/CreateFluidProperties.h" #include "MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h" #include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" #include "ParameterLib/ConstantParameter.h" @@ -80,60 +79,7 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium} config.getConfigSubtree("porous_medium"); PorousMediaProperties porous_media_properties{ - createPorousMediaProperties(mesh, porous_medium_configs, parameters)}; - - //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__fluid} - auto const& fluid_config = config.getConfigSubtree("fluid"); - - auto fluid_properties = - MaterialLib::Fluid::createFluidProperties(fluid_config); - - // Parameter for the density of the fluid. - auto const& fluid_reference_density = ParameterLib::findParameter<double>( - config, - //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__fluid_reference_density} - "fluid_reference_density", parameters, 1, &mesh); - DBUG("Use '{:s}' as fluid_reference_density parameter.", - fluid_reference_density.name); - - // Parameter for the longitudinal solute dispersivity. - auto const& molecular_diffusion_coefficient = ParameterLib::findParameter< - double>( - config, - //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__molecular_diffusion_coefficient} - "molecular_diffusion_coefficient", parameters, 1, &mesh); - DBUG("Use '{:s}' as molecular diffusion coefficient parameter.", - molecular_diffusion_coefficient.name); - - // Parameter for the longitudinal solute dispersivity. - auto const& solute_dispersivity_longitudinal = ParameterLib::findParameter< - double>( - config, - //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__solute_dispersivity_longitudinal} - "solute_dispersivity_longitudinal", parameters, 1, &mesh); - DBUG("Use '{:s}' as longitudinal solute dispersivity parameter.", - solute_dispersivity_longitudinal.name); - - // Parameter for the transverse solute dispersivity. - auto const& solute_dispersivity_transverse = ParameterLib::findParameter< - double>( - config, - //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__solute_dispersivity_transverse} - "solute_dispersivity_transverse", parameters, 1, &mesh); - DBUG("Use '{:s}' as transverse solute dispersivity parameter.", - solute_dispersivity_transverse.name); - - // Parameter for the retardation factor. - auto const& retardation_factor = ParameterLib::findParameter<double>( - config, - //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__retardation_factor} - "retardation_factor", parameters, 1, &mesh); - - // Parameter for the decay rate. - auto const& decay_rate = ParameterLib::findParameter<double>( - config, - //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__decay_rate} - "decay_rate", parameters, 1, &mesh); + createPorousMediaProperties(mesh, porous_medium_configs)}; // Specific body force parameter. Eigen::VectorXd specific_body_force; @@ -161,13 +107,6 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( RichardsComponentTransportProcessData process_data{ std::move(media_map), std::move(porous_media_properties), - fluid_reference_density, - std::move(fluid_properties), - molecular_diffusion_coefficient, - solute_dispersivity_longitudinal, - solute_dispersivity_transverse, - retardation_factor, - decay_rate, specific_body_force, has_gravity}; diff --git a/ProcessLib/RichardsComponentTransport/PorousMediaProperties.cpp b/ProcessLib/RichardsComponentTransport/PorousMediaProperties.cpp index c8f8f0cfafeb859a352a98f732c552e9bfc9371e..bc9d029a7ad54f2ba8717361da811832e4955830 100644 --- a/ProcessLib/RichardsComponentTransport/PorousMediaProperties.cpp +++ b/ProcessLib/RichardsComponentTransport/PorousMediaProperties.cpp @@ -10,6 +10,8 @@ #include "PorousMediaProperties.h" +#include "ParameterLib/SpatialPosition.h" + namespace ProcessLib { namespace RichardsComponentTransport @@ -21,38 +23,11 @@ int PorousMediaProperties::getMaterialID( return _material_ids[element_id]; } -MaterialLib::PorousMedium::Porosity const& PorousMediaProperties::getPorosity( - double /*t*/, ParameterLib::SpatialPosition const& pos) const -{ - return *_porosity_models[getMaterialID(pos)]; -} - -MaterialLib::PorousMedium::Permeability const& -PorousMediaProperties::getIntrinsicPermeability( - double /*t*/, ParameterLib::SpatialPosition const& pos) const -{ - return *_intrinsic_permeability_models[getMaterialID(pos)]; -} - -MaterialLib::PorousMedium::Storage const& -PorousMediaProperties::getSpecificStorage( - double /*t*/, ParameterLib::SpatialPosition const& pos) const -{ - return *_specific_storage_models[getMaterialID(pos)]; -} - MaterialLib::PorousMedium::CapillaryPressureSaturation const& PorousMediaProperties::getCapillaryPressureSaturationModel( double /*t*/, ParameterLib::SpatialPosition const& pos) const { return *_capillary_pressure_saturation_models[getMaterialID(pos)]; } - -MaterialLib::PorousMedium::RelativePermeability const& -PorousMediaProperties::getRelativePermeability( - double /*t*/, ParameterLib::SpatialPosition const& pos) const -{ - return *_relative_permeability_models[getMaterialID(pos)]; -} } // namespace RichardsComponentTransport } // namespace ProcessLib diff --git a/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h b/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h index ac0a87a503f43c9710c596be774c8dc3f8dcd8d8..32cac790d0a631e8e7b0b6f86673ccab7908fa7a 100644 --- a/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h +++ b/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h @@ -12,13 +12,8 @@ #include <memory> #include <vector> -#include <Eigen/Dense> -#include "MaterialLib/PorousMedium/Permeability/Permeability.h" -#include "MaterialLib/PorousMedium/Porosity/Porosity.h" -#include "MaterialLib/PorousMedium/Storage/Storage.h" #include "MaterialLib/PorousMedium/UnsaturatedProperty/CapillaryPressure/CapillaryPressureSaturation.h" -#include "MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h" namespace ParameterLib { @@ -34,77 +29,34 @@ class PorousMediaProperties { public: PorousMediaProperties( - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>>&& - porosity_models, - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Permeability>>&& - intrinsic_permeability_models, - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>&& - specific_storage_models, std::vector<std::unique_ptr< MaterialLib::PorousMedium::CapillaryPressureSaturation>>&& capillary_pressure_saturation_models, - std::vector< - std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>&& - relative_permeability_models, std::vector<int>&& material_ids) - : _porosity_models(std::move(porosity_models)), - _intrinsic_permeability_models( - std::move(intrinsic_permeability_models)), - _specific_storage_models(std::move(specific_storage_models)), - _capillary_pressure_saturation_models( + : _capillary_pressure_saturation_models( std::move(capillary_pressure_saturation_models)), - _relative_permeability_models( - std::move(relative_permeability_models)), _material_ids(std::move(material_ids)) { } PorousMediaProperties(PorousMediaProperties&& other) - : _porosity_models(std::move(other._porosity_models)), - _intrinsic_permeability_models( - std::move(other._intrinsic_permeability_models)), - _specific_storage_models(std::move(other._specific_storage_models)), - _capillary_pressure_saturation_models( + : _capillary_pressure_saturation_models( std::move(other._capillary_pressure_saturation_models)), - _relative_permeability_models( - std::move(other._relative_permeability_models)), _material_ids(other._material_ids) { } - MaterialLib::PorousMedium::Porosity const& getPorosity( - double t, ParameterLib::SpatialPosition const& pos) const; - - MaterialLib::PorousMedium::Permeability const& getIntrinsicPermeability( - double t, ParameterLib::SpatialPosition const& pos) const; - - MaterialLib::PorousMedium::Storage const& getSpecificStorage( - double t, ParameterLib::SpatialPosition const& pos) const; - MaterialLib::PorousMedium::CapillaryPressureSaturation const& getCapillaryPressureSaturationModel( double t, ParameterLib::SpatialPosition const& pos) const; - MaterialLib::PorousMedium::RelativePermeability const& - getRelativePermeability(double t, - ParameterLib::SpatialPosition const& pos) const; - private: int getMaterialID(ParameterLib::SpatialPosition const& pos) const; private: - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>> - _porosity_models; - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Permeability>> - _intrinsic_permeability_models; - std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>> - _specific_storage_models; std::vector< std::unique_ptr<MaterialLib::PorousMedium::CapillaryPressureSaturation>> _capillary_pressure_saturation_models; - std::vector< - std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>> - _relative_permeability_models; std::vector<int> _material_ids; }; diff --git a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h index 66a6ebf7be628f0ce1e88b31938114ec4284d00c..450cd3aa5e889cdc089f9444c65030eed3e65f3c 100644 --- a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h +++ b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h @@ -12,10 +12,6 @@ #include <memory> -#include "MaterialLib/Fluid/FluidProperties/FluidProperties.h" -#include "MaterialLib/PorousMedium/Porosity/Porosity.h" -#include "MaterialLib/PorousMedium/Storage/Storage.h" - #include "PorousMediaProperties.h" namespace MaterialPropertyLib @@ -35,13 +31,6 @@ struct RichardsComponentTransportProcessData std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> media_map; PorousMediaProperties porous_media_properties; - ParameterLib::Parameter<double> const& fluid_reference_density; - std::unique_ptr<MaterialLib::Fluid::FluidProperties> fluid_properties; - ParameterLib::Parameter<double> const& molecular_diffusion_coefficient; - ParameterLib::Parameter<double> const& solute_dispersivity_longitudinal; - ParameterLib::Parameter<double> const& solute_dispersivity_transverse; - ParameterLib::Parameter<double> const& retardation_factor; - ParameterLib::Parameter<double> const& decay_rate; Eigen::VectorXd const specific_body_force; bool const has_gravity; };