From cac5161ca8be12ea04cfd1d63641f8e796d35eb5 Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Mon, 29 Jul 2019 12:25:47 +0200 Subject: [PATCH] [THM] Added a MPL instance as a member of ThermoHydroMechanicsProcessData --- Applications/ApplicationsLib/ProjectData.cpp | 4 ++-- .../CreateThermoHydroMechanicsProcess.cpp | 21 ++++++++++++------- .../CreateThermoHydroMechanicsProcess.h | 21 +++++++++++++------ .../ThermoHydroMechanicsProcessData.h | 5 +++++ 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index de1917a035a..d5349c55aca 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -780,7 +780,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, name, *_mesh_vec[0], std::move(jacobian_assembler), _process_variables, _parameters, _local_coordinate_system, integration_order, - process_config); + process_config, _media); break; case 3: process = ProcessLib::ThermoHydroMechanics:: @@ -788,7 +788,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, name, *_mesh_vec[0], std::move(jacobian_assembler), _process_variables, _parameters, _local_coordinate_system, integration_order, - process_config); + process_config, _media); break; default: OGS_FATAL( diff --git a/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp b/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp index 443f72b20c6..d29c4946f52 100644 --- a/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp +++ b/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp @@ -12,6 +12,9 @@ #include <cassert> +#include "MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h" +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" + #include "MaterialLib/SolidModels/CreateConstitutiveRelation.h" #include "MaterialLib/SolidModels/MechanicsBase.h" #include "ParameterLib/Utils.h" @@ -27,15 +30,14 @@ namespace ThermoHydroMechanics { template <int DisplacementDim> std::unique_ptr<Process> createThermoHydroMechanicsProcess( - std::string name, - MeshLib::Mesh& mesh, + std::string name, MeshLib::Mesh& mesh, std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler, std::vector<ProcessVariable> const& variables, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, boost::optional<ParameterLib::CoordinateSystem> const& local_coordinate_system, - unsigned const integration_order, - BaseLib::ConfigTree const& config) + unsigned const integration_order, BaseLib::ConfigTree const& config, + std::map<int, std::unique_ptr<MaterialPropertyLib::Medium>> const& media) { //! \ogs_file_param{prj__processes__process__type} config.checkConfigParameter("type", "THERMO_HYDRO_MECHANICS"); @@ -262,8 +264,12 @@ std::unique_ptr<Process> createThermoHydroMechanicsProcess( std::copy_n(b.data(), b.size(), specific_body_force.data()); } + auto media_map = + MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); + ThermoHydroMechanicsProcessData<DisplacementDim> process_data{ materialIDs(mesh), + std::move(media_map), std::move(solid_constitutive_relations), intrinsic_permeability, specific_storage, @@ -305,7 +311,8 @@ template std::unique_ptr<Process> createThermoHydroMechanicsProcess<2>( boost::optional<ParameterLib::CoordinateSystem> const& local_coordinate_system, unsigned const integration_order, - BaseLib::ConfigTree const& config); + BaseLib::ConfigTree const& config, + std::map<int, std::unique_ptr<MaterialPropertyLib::Medium>> const& media); template std::unique_ptr<Process> createThermoHydroMechanicsProcess<3>( std::string name, @@ -316,7 +323,7 @@ template std::unique_ptr<Process> createThermoHydroMechanicsProcess<3>( boost::optional<ParameterLib::CoordinateSystem> const& local_coordinate_system, unsigned const integration_order, - BaseLib::ConfigTree const& config); - + BaseLib::ConfigTree const& config, + std::map<int, std::unique_ptr<MaterialPropertyLib::Medium>> const& media); } // namespace ThermoHydroMechanics } // namespace ProcessLib diff --git a/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.h b/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.h index 99641a62eb6..cf2468cf6ed 100644 --- a/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.h +++ b/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.h @@ -11,6 +11,7 @@ #pragma once #include <boost/optional.hpp> +#include <map> #include <memory> #include <vector> @@ -18,10 +19,17 @@ namespace BaseLib { class ConfigTree; } + +namespace MaterialPropertyLib +{ +class Medium; +} + namespace MeshLib { class Mesh; } + namespace ParameterLib { struct CoordinateSystem; @@ -48,18 +56,18 @@ std::unique_ptr<Process> createThermoHydroMechanicsProcess( boost::optional<ParameterLib::CoordinateSystem> const& local_coordinate_system, unsigned const integration_order, - BaseLib::ConfigTree const& config); + BaseLib::ConfigTree const& config, + std::map<int, std::unique_ptr<MaterialPropertyLib::Medium>> const& media); extern template std::unique_ptr<Process> createThermoHydroMechanicsProcess<2>( - std::string name, - MeshLib::Mesh& mesh, + std::string name, MeshLib::Mesh& mesh, std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler, std::vector<ProcessVariable> const& variables, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, boost::optional<ParameterLib::CoordinateSystem> const& local_coordinate_system, - unsigned const integration_order, - BaseLib::ConfigTree const& config); + unsigned const integration_order, BaseLib::ConfigTree const& config, + std::map<int, std::unique_ptr<MaterialPropertyLib::Medium>> const& media); extern template std::unique_ptr<Process> createThermoHydroMechanicsProcess<3>( std::string name, @@ -70,6 +78,7 @@ extern template std::unique_ptr<Process> createThermoHydroMechanicsProcess<3>( boost::optional<ParameterLib::CoordinateSystem> const& local_coordinate_system, unsigned const integration_order, - BaseLib::ConfigTree const& config); + BaseLib::ConfigTree const& config, + std::map<int, std::unique_ptr<MaterialPropertyLib::Medium>> const& media); } // namespace ThermoHydroMechanics } // namespace ProcessLib diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h index a9bbc59e9df..1112297ef80 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h @@ -17,6 +17,8 @@ #include <Eigen/Dense> +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" + namespace MaterialLib { namespace Solids @@ -34,6 +36,9 @@ struct ThermoHydroMechanicsProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; + std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> + media_map = nullptr; + /// The constitutive relation for the mechanical part. /// \note Linear elasticity is the only supported one in the moment. std::map< -- GitLab