From 3e5b2ee2ecf0de3121a00a01ebf605edd4946e51 Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Wed, 27 Sep 2023 17:25:34 +0200 Subject: [PATCH] [PL] Use MaterialSpatialDistr.Map as value The structure is small and does not require to be stored on heap. --- .../CreateMaterialSpatialDistributionMap.cpp | 6 ++-- .../CreateMaterialSpatialDistributionMap.h | 3 +- .../ComponentTransportFEM.h | 30 +++++++++---------- .../ComponentTransportProcessData.h | 5 ++-- .../CreateComponentTransportProcess.cpp | 2 +- ProcessLib/HT/CreateHTProcess.cpp | 2 +- ProcessLib/HT/HTFEM.h | 8 ++--- ProcessLib/HT/HTProcessData.h | 4 +-- ProcessLib/HT/MonolithicHTFEM.h | 2 +- ProcessLib/HT/StaggeredHTFEM-impl.h | 4 +-- .../CreateHeatConductionProcess.cpp | 2 +- ProcessLib/HeatConduction/HeatConductionFEM.h | 6 ++-- .../HeatConductionProcessData.h | 4 +-- .../HeatTransportBHEProcessData.h | 8 ++--- .../HeatTransportBHELocalAssemblerSoil-impl.h | 2 +- .../CreateHydroMechanicsProcess.cpp | 4 +-- .../HydroMechanics/HydroMechanicsFEM-impl.h | 14 ++++----- .../HydroMechanicsProcessData.h | 3 +- .../LiquidFlow/CreateLiquidFlowProcess.cpp | 2 +- ProcessLib/LiquidFlow/LiquidFlowData.h | 10 ++----- .../LiquidFlowLocalAssembler-impl.h | 10 +++---- ...reateRichardsComponentTransportProcess.cpp | 2 +- .../RichardsComponentTransportFEM-impl.h | 6 ++-- .../RichardsComponentTransportProcessData.h | 9 ++---- .../CreateRichardsFlowProcess.cpp | 2 +- ProcessLib/RichardsFlow/RichardsFlowFEM.h | 4 +-- .../RichardsFlow/RichardsFlowProcessData.h | 10 ++----- .../RichardsMechanicsFEM-impl.h | 10 +++---- .../RichardsMechanicsProcessData.h | 3 +- .../SmallDeformation/SmallDeformationFEM.h | 2 +- .../SmallDeformationProcessData.h | 3 +- .../CreateSteadyStateDiffusion.cpp | 2 +- .../SteadyStateDiffusionData.h | 3 +- .../SteadyStateDiffusionFEM.h | 6 ++-- .../StokesFlow/CreateStokesFlowProcess.cpp | 2 +- ProcessLib/StokesFlow/StokesFlowFEM.h | 2 +- ProcessLib/StokesFlow/StokesFlowProcessData.h | 9 +----- ProcessLib/TH2M/TH2MFEM-impl.h | 4 +-- ProcessLib/TH2M/TH2MProcessData.h | 3 +- ...malTwoPhaseFlowWithPPLocalAssembler-impl.h | 2 +- .../ThermalTwoPhaseFlowWithPPProcessData.h | 3 +- .../ThermoHydroMechanicsFEM-impl.h | 6 ++-- .../ThermoHydroMechanicsProcessData.h | 3 +- .../ThermoMechanics/ThermoMechanicsFEM-impl.h | 6 ++-- .../ThermoMechanicsProcessData.h | 3 +- .../ThermoRichardsFlowFEM-impl.h | 10 +++---- .../ThermoRichardsFlowProcessData.h | 10 ++----- .../ThermoRichardsMechanicsFEM-impl.h | 6 ++-- .../ThermoRichardsMechanicsFEM.h | 2 +- .../ThermoRichardsMechanicsProcessData.h | 3 +- .../TwoPhaseFlowWithPPLocalAssembler-impl.h | 2 +- .../TwoPhaseFlowWithPPProcessData.h | 3 +- 52 files changed, 113 insertions(+), 159 deletions(-) diff --git a/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp b/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp index e5b1651bfa1..afa6cd7f8b0 100644 --- a/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp +++ b/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp @@ -15,8 +15,7 @@ namespace MaterialPropertyLib { -std::unique_ptr<MaterialSpatialDistributionMap> -createMaterialSpatialDistributionMap( +MaterialSpatialDistributionMap createMaterialSpatialDistributionMap( std::map<int, std::shared_ptr<Medium>> const& media, MeshLib::Mesh const& mesh) { @@ -45,7 +44,6 @@ createMaterialSpatialDistributionMap( "in the mesh.", media.size(), max_material_id - 1); } - return std::make_unique<MaterialSpatialDistributionMap>(media, - material_ids); + return {media, material_ids}; } } // namespace MaterialPropertyLib diff --git a/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h b/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h index 05ed6b64b64..9f946d4b2a4 100644 --- a/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h +++ b/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h @@ -24,8 +24,7 @@ class MaterialSpatialDistributionMap; class Medium; -std::unique_ptr<MaterialSpatialDistributionMap> -createMaterialSpatialDistributionMap( +MaterialSpatialDistributionMap createMaterialSpatialDistributionMap( std::map<int, std::shared_ptr<Medium>> const& media, MeshLib::Mesh const& mesh); } // namespace MaterialPropertyLib diff --git a/ProcessLib/ComponentTransport/ComponentTransportFEM.h b/ProcessLib/ComponentTransport/ComponentTransportFEM.h index ce87c55479b..6bfb29afcbc 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportFEM.h +++ b/ProcessLib/ComponentTransport/ComponentTransportFEM.h @@ -268,7 +268,7 @@ public: GlobalDim>(element, is_axially_symmetric, _integration_method); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); for (unsigned ip = 0; ip < n_integration_points; ip++) { _ip_data.emplace_back( @@ -314,7 +314,7 @@ public: assert(_process_data.chemical_solver_interface); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); ParameterLib::SpatialPosition pos; pos.setElementID(_element.getID()); @@ -355,7 +355,7 @@ public: assert(_process_data.chemical_solver_interface); auto const& medium = - _process_data.media_map->getMedium(_element.getID()); + _process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; MaterialPropertyLib::VariableArray vars_prev; @@ -417,7 +417,7 @@ public: return; } - auto const& medium = *_process_data.media_map->getMedium(ele_id); + auto const& medium = *_process_data.media_map.getMedium(ele_id); ParameterLib::SpatialPosition pos; pos.setElementID(ele_id); @@ -566,7 +566,7 @@ public: // Get material properties auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); // Select the only valid for component transport liquid phase. auto const& phase = medium.phase("AqueousLiquid"); @@ -738,7 +738,7 @@ public: MaterialPropertyLib::VariableArray vars; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); auto const& component = phase.component( _transport_process_variables[component_id].get().getName()); @@ -822,7 +822,7 @@ public: .projected_specific_body_force_vectors[_element.getID()]; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); MaterialPropertyLib::VariableArray vars; @@ -961,7 +961,7 @@ public: MaterialPropertyLib::VariableArray vars_prev; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); // Hydraulic process id is 0 and thus transport process id starts // from 1. @@ -1161,7 +1161,7 @@ public: .projected_specific_body_force_vectors[_element.getID()]; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); MaterialPropertyLib::VariableArray vars; @@ -1283,7 +1283,7 @@ public: MaterialPropertyLib::VariableArray vars_prev; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); auto const& component = phase.component( _transport_process_variables[component_id].get().getName()); @@ -1409,7 +1409,7 @@ public: MaterialPropertyLib::VariableArray vars_prev; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const component_id = transport_process_id - 1; for (unsigned ip(0); ip < n_integration_points; ++ip) { @@ -1525,7 +1525,7 @@ public: MaterialPropertyLib::VariableArray vars; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); for (unsigned ip = 0; ip < n_integration_points; ++ip) @@ -1607,7 +1607,7 @@ public: MaterialPropertyLib::VariableArray vars; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); // local_x contains the local concentration and pressure values @@ -1676,7 +1676,7 @@ public: if (_process_data.chemically_induced_porosity_change) { - auto const& medium = *_process_data.media_map->getMedium(ele_id); + auto const& medium = *_process_data.media_map.getMedium(ele_id); for (auto& ip_data : _ip_data) { @@ -1748,7 +1748,7 @@ public: MaterialPropertyLib::VariableArray vars; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); int const component_id = 0; diff --git a/ProcessLib/ComponentTransport/ComponentTransportProcessData.h b/ProcessLib/ComponentTransport/ComponentTransportProcessData.h index 173dbe584e7..7dadd0c9640 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportProcessData.h +++ b/ProcessLib/ComponentTransport/ComponentTransportProcessData.h @@ -15,7 +15,7 @@ #include "ChemistryLib/ChemicalSolverInterface.h" #include "LookupTable.h" -#include "MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h" +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" #include "MathLib/LinAlg/Eigen/EigenMapTools.h" #include "NumLib/NumericalStability/NumericalStabilization.h" #include "ParameterLib/ConstantParameter.h" @@ -38,8 +38,7 @@ namespace ComponentTransport { struct ComponentTransportProcessData { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; bool const has_gravity; bool const non_advective_form; /// This optional tag provides a simple means of considering the temperature diff --git a/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp b/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp index c203dab5051..b0069d927c0 100644 --- a/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp +++ b/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp @@ -235,7 +235,7 @@ std::unique_ptr<Process> createComponentTransportProcess( process_variables); DBUG("Check the media properties of ComponentTransport process ..."); - checkMPLProperties(mesh, *media_map); + checkMPLProperties(mesh, media_map); DBUG("Media properties verified."); auto stabilizer = NumLib::createNumericalStabilization(mesh, config); diff --git a/ProcessLib/HT/CreateHTProcess.cpp b/ProcessLib/HT/CreateHTProcess.cpp index b5f0862f80f..59daec2658f 100644 --- a/ProcessLib/HT/CreateHTProcess.cpp +++ b/ProcessLib/HT/CreateHTProcess.cpp @@ -181,7 +181,7 @@ std::unique_ptr<Process> createHTProcess( MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); DBUG("Check the media properties of HT process ..."); - checkMPLProperties(mesh, *media_map); + checkMPLProperties(mesh, media_map); DBUG("Media properties verified."); auto stabilizer = NumLib::createNumericalStabilization(mesh, config); diff --git a/ProcessLib/HT/HTFEM.h b/ProcessLib/HT/HTFEM.h index a34db67b82b..36fb68354c4 100644 --- a/ProcessLib/HT/HTFEM.h +++ b/ProcessLib/HT/HTFEM.h @@ -125,7 +125,7 @@ public: vars.phase_pressure = p_int_pt; auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); // TODO (naumov) Temporary value not used by current material models. @@ -181,7 +181,7 @@ protected: double const dt) { auto const& medium = - *_process_data.media_map->getMedium(this->_element.getID()); + *_process_data.media_map.getMedium(this->_element.getID()); auto const& solid_phase = medium.phase("Solid"); auto const specific_heat_capacity_solid = @@ -206,7 +206,7 @@ protected: double const dt) { auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto thermal_conductivity = MaterialPropertyLib::formEigenTensor<GlobalDim>( @@ -267,7 +267,7 @@ protected: &local_p[0], ShapeFunction::NPOINTS); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); for (unsigned ip = 0; ip < n_integration_points; ++ip) diff --git a/ProcessLib/HT/HTProcessData.h b/ProcessLib/HT/HTProcessData.h index c76d32b7d12..cfa3662ec2d 100644 --- a/ProcessLib/HT/HTProcessData.h +++ b/ProcessLib/HT/HTProcessData.h @@ -11,7 +11,6 @@ #pragma once #include <Eigen/Core> -#include <memory> #include <utility> #include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" @@ -25,8 +24,7 @@ namespace HT { struct HTProcessData final { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; bool const has_fluid_thermal_expansion; ParameterLib::Parameter<double> const& solid_thermal_expansion; ParameterLib::Parameter<double> const& biot_constant; diff --git a/ProcessLib/HT/MonolithicHTFEM.h b/ProcessLib/HT/MonolithicHTFEM.h index 40e6cb9e473..42e632bd120 100644 --- a/ProcessLib/HT/MonolithicHTFEM.h +++ b/ProcessLib/HT/MonolithicHTFEM.h @@ -104,7 +104,7 @@ public: &local_x[pressure_index], pressure_size); auto const& medium = - *process_data.media_map->getMedium(this->_element.getID()); + *process_data.media_map.getMedium(this->_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& solid_phase = medium.phase("Solid"); diff --git a/ProcessLib/HT/StaggeredHTFEM-impl.h b/ProcessLib/HT/StaggeredHTFEM-impl.h index 053e96b8359..f123ad7411f 100644 --- a/ProcessLib/HT/StaggeredHTFEM-impl.h +++ b/ProcessLib/HT/StaggeredHTFEM-impl.h @@ -66,7 +66,7 @@ void StaggeredHTFEM<ShapeFunction, GlobalDim>::assembleHydraulicEquation( auto const& process_data = this->_process_data; auto const& medium = - *this->_process_data.media_map->getMedium(this->_element.getID()); + *this->_process_data.media_map.getMedium(this->_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& solid_phase = medium.phase("Solid"); @@ -192,7 +192,7 @@ void StaggeredHTFEM<ShapeFunction, GlobalDim>::assembleHeatTransportEquation( auto const& process_data = this->_process_data; auto const& medium = - *process_data.media_map->getMedium(this->_element.getID()); + *process_data.media_map.getMedium(this->_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& b = diff --git a/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp b/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp index d14037c3a52..03853c0a2e0 100644 --- a/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp +++ b/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp @@ -71,7 +71,7 @@ std::unique_ptr<Process> createHeatConductionProcess( MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); DBUG("Check the media properties of heat conduction process ..."); - checkMPLProperties(mesh, *media_map); + checkMPLProperties(mesh, media_map); DBUG("Media properties verified."); /// \section parametersheatconduction Process Parameters diff --git a/ProcessLib/HeatConduction/HeatConductionFEM.h b/ProcessLib/HeatConduction/HeatConductionFEM.h index 74cb85a0fce..f364a3f5edc 100644 --- a/ProcessLib/HeatConduction/HeatConductionFEM.h +++ b/ProcessLib/HeatConduction/HeatConductionFEM.h @@ -102,7 +102,7 @@ public: _integration_method.getNumberOfPoints(); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; for (unsigned ip = 0; ip < n_integration_points; ip++) @@ -185,7 +185,7 @@ public: pos.setElementID(_element.getID()); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; for (unsigned ip = 0; ip < n_integration_points; ip++) @@ -260,7 +260,7 @@ public: pos.setElementID(_element.getID()); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; double const dt = std::numeric_limits<double>::quiet_NaN(); diff --git a/ProcessLib/HeatConduction/HeatConductionProcessData.h b/ProcessLib/HeatConduction/HeatConductionProcessData.h index 714ddf6c349..d14418b3f66 100644 --- a/ProcessLib/HeatConduction/HeatConductionProcessData.h +++ b/ProcessLib/HeatConduction/HeatConductionProcessData.h @@ -10,15 +10,13 @@ #pragma once -#include <memory> #include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" namespace ProcessLib::HeatConduction { struct HeatConductionProcessData { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// If set mass lumping will be applied to the equation. bool const mass_lumping; diff --git a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h index d8af776ae2e..1490d565760 100644 --- a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h +++ b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcessData.h @@ -26,22 +26,20 @@ namespace ProcessLib::HeatTransportBHE struct HeatTransportBHEProcessData final { HeatTransportBHEProcessData( - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap>&& - media_map_, + MaterialPropertyLib::MaterialSpatialDistributionMap media_map_, std::vector<BHE::BHETypes>&& vec_BHEs_, BHEInflowPythonBoundaryConditionPythonSideInterface* py_bc_object_ = nullptr, const bool use_tespy = false, const bool use_server_communication = false) - : media_map(std::move(media_map_)), + : media_map(media_map_), _vec_BHE_property(std::move(vec_BHEs_)), py_bc_object(py_bc_object_), _use_tespy(use_tespy), _use_server_communication(use_server_communication) { } - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; std::vector<BHE::BHETypes> _vec_BHE_property; diff --git a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h index ab7aa2aaa59..9e2d23f7e29 100644 --- a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h +++ b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil-impl.h @@ -85,7 +85,7 @@ void HeatTransportBHELocalAssemblerSoil<ShapeFunction>::assemble( ParameterLib::SpatialPosition pos; pos.setElementID(_element_id); - auto const& medium = *_process_data.media_map->getMedium(_element_id); + auto const& medium = *_process_data.media_map.getMedium(_element_id); auto const& solid_phase = medium.phase("Solid"); auto const& liquid_phase = medium.phase("AqueousLiquid"); diff --git a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp index 35dc9873386..a2fba3a9c57 100644 --- a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp @@ -216,8 +216,8 @@ std::unique_ptr<Process> createHydroMechanicsProcess( for (auto const& element_id : mesh.getElements() | MeshLib::views::ids) { - media_map->checkElementHasMedium(element_id); - auto const& medium = *media_map->getMedium(element_id); + media_map.checkElementHasMedium(element_id); + auto const& medium = *media_map.getMedium(element_id); checkRequiredProperties(medium, requiredMediumProperties); checkRequiredProperties(fluidPhase(medium), requiredFluidProperties); checkRequiredProperties(medium.phase("Solid"), requiredSolidProperties); diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h index 1fd0979fc11..ddde9d3d8ab 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h @@ -182,7 +182,7 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, _integration_method.getNumberOfPoints(); auto const& b = _process_data.specific_body_force; - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& solid = medium->phase("Solid"); auto const& fluid = fluidPhase(*medium); MPL::VariableArray vars; @@ -408,7 +408,7 @@ std::vector<double> const& HydroMechanicsLocalAssembler< ParameterLib::SpatialPosition x_position; x_position.setElementID(_element.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& fluid = fluidPhase(*medium); MPL::VariableArray vars; @@ -530,7 +530,7 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, ParameterLib::SpatialPosition x_position; x_position.setElementID(_element.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& fluid = fluidPhase(*medium); MPL::VariableArray vars; @@ -691,7 +691,7 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, ParameterLib::SpatialPosition x_position; x_position.setElementID(_element.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& solid = medium->phase("Solid"); auto const& fluid = fluidPhase(*medium); MPL::VariableArray vars; @@ -908,7 +908,7 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, x_position.setElementID(_element.getID()); auto const& medium = - _process_data.media_map->getMedium(_element.getID()); + _process_data.media_map.getMedium(_element.getID()); auto const T_ref = medium->property(MPL::PropertyType::reference_temperature) @@ -986,7 +986,7 @@ void HydroMechanicsLocalAssembler< _element.getID()); auto const& medium = - _process_data.media_map->getMedium(_element.getID()); + _process_data.media_map.getMedium(_element.getID()); MPL::VariableArray vars; auto const T_ref = @@ -1156,7 +1156,7 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, unsigned const n_integration_points = _integration_method.getNumberOfPoints(); - auto const& medium = _process_data.media_map->getMedium(elem_id); + auto const& medium = _process_data.media_map.getMedium(elem_id); MPL::VariableArray vars; SymmetricTensor k_sum = SymmetricTensor::Zero(KelvinVectorSize); diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h index 25a334af0c8..6875355da40 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h @@ -61,8 +61,7 @@ struct HydroMechanicsProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// The constitutive relation for the mechanical part. std::map<int, std::unique_ptr< diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp index 3e6cd606ee7..7a2cd406b25 100644 --- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp @@ -129,7 +129,7 @@ std::unique_ptr<Process> createLiquidFlowProcess( } DBUG("Check the media properties of LiquidFlow process ..."); - checkMPLProperties(mesh, *media_map); + checkMPLProperties(mesh, media_map); DBUG("Media properties verified."); auto const* aperture_size_parameter = &ParameterLib::findParameter<double>( diff --git a/ProcessLib/LiquidFlow/LiquidFlowData.h b/ProcessLib/LiquidFlow/LiquidFlowData.h index bf8a1bd3278..b97982db23e 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowData.h +++ b/ProcessLib/LiquidFlow/LiquidFlowData.h @@ -11,23 +11,17 @@ #pragma once #include <Eigen/Core> -#include <memory> +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" #include "ParameterLib/Parameter.h" -namespace MaterialPropertyLib -{ -class MaterialSpatialDistributionMap; -} - namespace ProcessLib { namespace LiquidFlow { struct LiquidFlowData final { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// A vector of the rotation matrices for all elements. std::vector<Eigen::MatrixXd> const element_rotation_matrices; diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h index 3f74cb05240..5f3bffe46f4 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h +++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h @@ -32,7 +32,7 @@ void LiquidFlowLocalAssembler<ShapeFunction, GlobalDim>::assemble( ParameterLib::SpatialPosition pos; pos.setElementID(_element.getID()); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; vars.temperature = medium[MaterialPropertyLib::PropertyType::reference_temperature] @@ -80,7 +80,7 @@ Eigen::Vector3d LiquidFlowLocalAssembler<ShapeFunction, GlobalDim>::getFlux( ParameterLib::SpatialPosition pos; pos.setElementID(_element.getID()); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); MaterialPropertyLib::VariableArray vars; @@ -130,7 +130,7 @@ void LiquidFlowLocalAssembler<ShapeFunction, GlobalDim>:: ParameterLib::SpatialPosition pos; pos.setElementID(_element.getID()); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); MaterialPropertyLib::VariableArray vars; @@ -235,7 +235,7 @@ LiquidFlowLocalAssembler<ShapeFunction, GlobalDim>::getIntPtDarcyVelocity( ParameterLib::SpatialPosition pos; pos.setElementID(_element.getID()); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; vars.temperature = medium[MaterialPropertyLib::PropertyType::reference_temperature] @@ -279,7 +279,7 @@ void LiquidFlowLocalAssembler<ShapeFunction, GlobalDim>:: unsigned const n_integration_points = _integration_method.getNumberOfPoints(); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); MaterialPropertyLib::VariableArray vars; diff --git a/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp b/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp index 4af0e66b0a9..aa3b3f844ab 100644 --- a/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp +++ b/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp @@ -152,7 +152,7 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( DBUG( "Check the media properties of RichardsComponentTransport process ..."); - checkMPLProperties(mesh, *media_map); + checkMPLProperties(mesh, media_map); DBUG("Media properties verified."); RichardsComponentTransportProcessData process_data{ diff --git a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h index 5ce660c1f86..84c7c86843b 100644 --- a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h +++ b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM-impl.h @@ -94,7 +94,7 @@ void LocalAssemblerData<ShapeFunction, GlobalDim>::assemble( GlobalDimMatrixType::Identity(GlobalDim, GlobalDim)); // Get material properties - auto const& medium = *_process_data.media_map->getMedium(_element_id); + auto const& medium = *_process_data.media_map.getMedium(_element_id); auto const& phase = medium.phase("AqueousLiquid"); auto const& component = phase.component(_transport_process_variable.getName()); @@ -254,7 +254,7 @@ LocalAssemblerData<ShapeFunction, GlobalDim>::getIntPtDarcyVelocity( MaterialPropertyLib::VariableArray vars; // Get material properties - auto const& medium = *_process_data.media_map->getMedium(_element_id); + auto const& medium = *_process_data.media_map.getMedium(_element_id); auto const& phase = medium.phase("AqueousLiquid"); auto const p_nodal_values = Eigen::Map<const NodalVectorType>( @@ -329,7 +329,7 @@ LocalAssemblerData<ShapeFunction, GlobalDim>::getIntPtSaturation( MaterialPropertyLib::VariableArray vars; - auto const& medium = *_process_data.media_map->getMedium(_element_id); + auto const& medium = *_process_data.media_map.getMedium(_element_id); unsigned const n_integration_points = _integration_method.getNumberOfPoints(); diff --git a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h index 85448a28922..420798de9d6 100644 --- a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h +++ b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportProcessData.h @@ -11,12 +11,8 @@ #pragma once #include <Eigen/Core> -#include <memory> -namespace MaterialPropertyLib -{ -class MaterialSpatialDistributionMap; -} +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" namespace ProcessLib { @@ -24,8 +20,7 @@ namespace RichardsComponentTransport { struct RichardsComponentTransportProcessData { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; Eigen::VectorXd const specific_body_force; bool const has_gravity; }; diff --git a/ProcessLib/RichardsFlow/CreateRichardsFlowProcess.cpp b/ProcessLib/RichardsFlow/CreateRichardsFlowProcess.cpp index 7b977846acd..9a8b7d07058 100644 --- a/ProcessLib/RichardsFlow/CreateRichardsFlowProcess.cpp +++ b/ProcessLib/RichardsFlow/CreateRichardsFlowProcess.cpp @@ -106,7 +106,7 @@ std::unique_ptr<Process> createRichardsFlowProcess( MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); DBUG("Check the media properties of RichardsFlow process ..."); - checkMPLProperties(mesh, *media_map); + checkMPLProperties(mesh, media_map); DBUG("Media properties verified."); RichardsFlowProcessData process_data{ diff --git a/ProcessLib/RichardsFlow/RichardsFlowFEM.h b/ProcessLib/RichardsFlow/RichardsFlowFEM.h index 846d6f9c3ea..270863bcef7 100644 --- a/ProcessLib/RichardsFlow/RichardsFlowFEM.h +++ b/ProcessLib/RichardsFlow/RichardsFlowFEM.h @@ -158,7 +158,7 @@ public: pos.setElementID(_element.getID()); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); MaterialPropertyLib::VariableArray vars; vars.temperature = @@ -290,7 +290,7 @@ public: pos.setElementID(_element.getID()); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); MaterialPropertyLib::VariableArray vars; diff --git a/ProcessLib/RichardsFlow/RichardsFlowProcessData.h b/ProcessLib/RichardsFlow/RichardsFlowProcessData.h index 95d2fb5aab2..6075b7a50fe 100644 --- a/ProcessLib/RichardsFlow/RichardsFlowProcessData.h +++ b/ProcessLib/RichardsFlow/RichardsFlowProcessData.h @@ -10,12 +10,9 @@ #pragma once -#include <memory> +#include <Eigen/Core> -namespace MaterialPropertyLib -{ -class MaterialSpatialDistributionMap; -} +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" namespace ProcessLib { @@ -23,8 +20,7 @@ namespace RichardsFlow { struct RichardsFlowProcessData { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; Eigen::VectorXd const specific_body_force; bool const has_gravity; bool const has_mass_lumping; diff --git a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h index c6f55bb5bfa..73ffda62eb7 100644 --- a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h +++ b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h @@ -149,7 +149,7 @@ RichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, _process_data.solid_materials, _process_data.material_ids, e.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); ParameterLib::SpatialPosition x_position; x_position.setElementID(_element.getID()); @@ -293,7 +293,7 @@ void RichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, pressure_size); constexpr double dt = std::numeric_limits<double>::quiet_NaN(); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); MPL::VariableArray variables; ParameterLib::SpatialPosition x_position; @@ -406,7 +406,7 @@ void RichardsMechanicsLocalAssembler< MathLib::KelvinVector::kelvin_vector_dimensions( DisplacementDim)>::identity2; - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium->phase("AqueousLiquid"); auto const& solid_phase = medium->phase("Solid"); MPL::VariableArray variables; @@ -760,7 +760,7 @@ void RichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, pressure_size, displacement_size>::Zero(pressure_size, displacement_size); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium->phase("AqueousLiquid"); auto const& solid_phase = medium->phase("Solid"); MPL::VariableArray variables; @@ -1530,7 +1530,7 @@ void RichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, MathLib::KelvinVector::kelvin_vector_dimensions( DisplacementDim)>::identity2; - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium->phase("AqueousLiquid"); auto const& solid_phase = medium->phase("Solid"); MPL::VariableArray variables; diff --git a/ProcessLib/RichardsMechanics/RichardsMechanicsProcessData.h b/ProcessLib/RichardsMechanics/RichardsMechanicsProcessData.h index bf7c803f269..91def3102e4 100644 --- a/ProcessLib/RichardsMechanics/RichardsMechanicsProcessData.h +++ b/ProcessLib/RichardsMechanics/RichardsMechanicsProcessData.h @@ -35,8 +35,7 @@ struct RichardsMechanicsProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// The constitutive relation for the mechanical part. std::map<int, std::unique_ptr< diff --git a/ProcessLib/SmallDeformation/SmallDeformationFEM.h b/ProcessLib/SmallDeformation/SmallDeformationFEM.h index 759173f8400..d69d1ac738d 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationFEM.h +++ b/ProcessLib/SmallDeformation/SmallDeformationFEM.h @@ -274,7 +274,7 @@ public: ip_data) const { auto const& solid_phase = - this->_process_data.media_map->getMedium(this->_element.getID()) + this->_process_data.media_map.getMedium(this->_element.getID()) ->phase("Solid"); MPL::VariableArray variables_prev; diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcessData.h b/ProcessLib/SmallDeformation/SmallDeformationProcessData.h index 806df330aaa..fce0cdc1bd4 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationProcessData.h +++ b/ProcessLib/SmallDeformation/SmallDeformationProcessData.h @@ -34,8 +34,7 @@ struct SmallDeformationProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; std::map< int, diff --git a/ProcessLib/SteadyStateDiffusion/CreateSteadyStateDiffusion.cpp b/ProcessLib/SteadyStateDiffusion/CreateSteadyStateDiffusion.cpp index 51a1facba0b..dcd84ce209d 100644 --- a/ProcessLib/SteadyStateDiffusion/CreateSteadyStateDiffusion.cpp +++ b/ProcessLib/SteadyStateDiffusion/CreateSteadyStateDiffusion.cpp @@ -72,7 +72,7 @@ std::unique_ptr<Process> createSteadyStateDiffusion( MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); DBUG("Check the media properties of steady state diffusion process ..."); - checkMPLProperties(mesh, *media_map); + checkMPLProperties(mesh, media_map); DBUG("Media properties verified."); SteadyStateDiffusionData process_data{std::move(media_map)}; diff --git a/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionData.h b/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionData.h index a7b2f2e55c8..74cc2fc1c62 100644 --- a/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionData.h +++ b/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionData.h @@ -23,8 +23,7 @@ namespace SteadyStateDiffusion { struct SteadyStateDiffusionData final { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; }; } // namespace SteadyStateDiffusion diff --git a/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h b/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h index e48ebc875c8..7de0fc8991d 100644 --- a/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h +++ b/ProcessLib/SteadyStateDiffusion/SteadyStateDiffusionFEM.h @@ -100,7 +100,7 @@ public: pos.setElementID(_element.getID()); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; vars.temperature = medium @@ -149,7 +149,7 @@ public: ParameterLib::SpatialPosition pos; pos.setElementID(_element.getID()); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; vars.temperature = @@ -213,7 +213,7 @@ public: pos.setElementID(_element.getID()); auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); MaterialPropertyLib::VariableArray vars; vars.temperature = diff --git a/ProcessLib/StokesFlow/CreateStokesFlowProcess.cpp b/ProcessLib/StokesFlow/CreateStokesFlowProcess.cpp index 90264123151..3c0d7f4eb79 100644 --- a/ProcessLib/StokesFlow/CreateStokesFlowProcess.cpp +++ b/ProcessLib/StokesFlow/CreateStokesFlowProcess.cpp @@ -147,7 +147,7 @@ std::unique_ptr<Process> createStokesFlowProcess( MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); DBUG("Check the media properties of StokesFlow process ..."); - checkMPLProperties(mesh, *media_map, use_stokes_brinkman_form); + checkMPLProperties(mesh, media_map, use_stokes_brinkman_form); DBUG("Media properties verified."); StokesFlowProcessData process_data{std::move(media_map), diff --git a/ProcessLib/StokesFlow/StokesFlowFEM.h b/ProcessLib/StokesFlow/StokesFlowFEM.h index 1d02dfbf934..22100998ab1 100644 --- a/ProcessLib/StokesFlow/StokesFlowFEM.h +++ b/ProcessLib/StokesFlow/StokesFlowFEM.h @@ -166,7 +166,7 @@ public: // Get material properties auto const& medium = - *_process_data.media_map->getMedium(_element.getID()); + *_process_data.media_map.getMedium(_element.getID()); auto const& phase = medium.phase("AqueousLiquid"); for (unsigned ip(0); ip < n_integration_points; ++ip) diff --git a/ProcessLib/StokesFlow/StokesFlowProcessData.h b/ProcessLib/StokesFlow/StokesFlowProcessData.h index 2e3f392bfaf..83aa52c49a7 100644 --- a/ProcessLib/StokesFlow/StokesFlowProcessData.h +++ b/ProcessLib/StokesFlow/StokesFlowProcessData.h @@ -11,23 +11,16 @@ #pragma once #include <Eigen/Core> -#include <memory> #include "MeshLib/PropertyVector.h" -namespace MaterialPropertyLib -{ -class MaterialSpatialDistributionMap; -} - namespace ProcessLib { namespace StokesFlow { struct StokesFlowProcessData { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// an external force that applies in the bulk of the fluid, like gravity. Eigen::VectorXd const specific_body_force; diff --git a/ProcessLib/TH2M/TH2MFEM-impl.h b/ProcessLib/TH2M/TH2MFEM-impl.h index 03b9175f787..930b4a23b6f 100644 --- a/ProcessLib/TH2M/TH2MFEM-impl.h +++ b/ProcessLib/TH2M/TH2MFEM-impl.h @@ -113,7 +113,7 @@ std::vector<ConstitutiveVariables<DisplacementDim>> TH2MLocalAssembler< auto const displacement = local_x.template segment<displacement_size>(displacement_index); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& gas_phase = medium.phase("Gas"); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& solid_phase = medium.phase("Solid"); @@ -942,7 +942,7 @@ void TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure, local_x.template segment<temperature_size>(temperature_index); constexpr double dt = std::numeric_limits<double>::quiet_NaN(); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& solid_phase = medium.phase("Solid"); unsigned const n_integration_points = diff --git a/ProcessLib/TH2M/TH2MProcessData.h b/ProcessLib/TH2M/TH2MProcessData.h index e3c8da8d1fd..d1faea0402b 100644 --- a/ProcessLib/TH2M/TH2MProcessData.h +++ b/ProcessLib/TH2M/TH2MProcessData.h @@ -28,8 +28,7 @@ struct TH2MProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// The constitutive relation for the mechanical part. std::map<int, std::unique_ptr< diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h index fd2371eaa96..5febeba6387 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h @@ -170,7 +170,7 @@ void ThermalTwoPhaseFlowWithPPLocalAssembler<ShapeFunction, GlobalDim>:: vars.phase_pressure = pg_int_pt; auto const& medium = - *_process_data.media_map->getMedium(this->_element.getID()); + *_process_data.media_map.getMedium(this->_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& solid_phase = medium.phase("Solid"); auto const& gas_phase = medium.phase("Gas"); diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcessData.h b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcessData.h index 14e478a676f..ee6867a4de5 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcessData.h +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcessData.h @@ -21,8 +21,7 @@ namespace ThermalTwoPhaseFlowWithPP { struct ThermalTwoPhaseFlowWithPPProcessData { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; Eigen::VectorXd const specific_body_force; bool const has_gravity; diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h index 995a2e9452c..5993811df26 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h @@ -71,7 +71,7 @@ ThermoHydroMechanicsLocalAssembler<ShapeFunctionDisplacement, // Consistency check: if frozen liquid phase is given, then the constitutive // relation for ice must also be given, and vice versa. - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); if (medium->hasPhase("FrozenLiquid") != (_process_data.ice_constitutive_relation != nullptr)) { @@ -166,7 +166,7 @@ ConstitutiveRelationsValues<DisplacementDim> ThermoHydroMechanicsLocalAssembler< _process_data.solid_materials, _process_data.material_ids, _element.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium->phase("AqueousLiquid"); auto const& solid_phase = medium->phase("Solid"); auto* const frozen_liquid_phase = medium->hasPhase("FrozenLiquid") @@ -528,7 +528,7 @@ void ThermoHydroMechanicsLocalAssembler< Kup; Kup.setZero(displacement_size, pressure_size); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); bool const has_frozen_liquid_phase = medium->hasPhase("FrozenLiquid"); unsigned const n_integration_points = diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h index 1cd5de077f1..9dcecc5dfcf 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcessData.h @@ -35,8 +35,7 @@ struct ThermoHydroMechanicsProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// The constitutive relation for the mechanical part. std::map<int, std::unique_ptr< diff --git a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h index d188ac47300..921e27dd20b 100644 --- a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h +++ b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h @@ -162,7 +162,7 @@ void ThermoMechanicsLocalAssembler<ShapeFunction, DisplacementDim>:: ParameterLib::SpatialPosition x_position; x_position.setElementID(_element.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& solid_phase = medium->phase("Solid"); for (unsigned ip = 0; ip < n_integration_points; ip++) @@ -382,7 +382,7 @@ void ThermoMechanicsLocalAssembler<ShapeFunction, DisplacementDim>:: MPL::VariableArray variables_prev; ParameterLib::SpatialPosition x_position; x_position.setElementID(_element.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& solid_phase = medium->phase("Solid"); for (unsigned ip = 0; ip < n_integration_points; ip++) @@ -520,7 +520,7 @@ void ThermoMechanicsLocalAssembler<ShapeFunction, DisplacementDim>:: ParameterLib::SpatialPosition x_position; x_position.setElementID(_element.getID()); - auto const& medium = _process_data.media_map->getMedium(_element.getID()); + auto const& medium = _process_data.media_map.getMedium(_element.getID()); auto const& solid_phase = medium->phase("Solid"); MPL::VariableArray variables; diff --git a/ProcessLib/ThermoMechanics/ThermoMechanicsProcessData.h b/ProcessLib/ThermoMechanics/ThermoMechanicsProcessData.h index 2a284319889..8b12f7d0f25 100644 --- a/ProcessLib/ThermoMechanics/ThermoMechanicsProcessData.h +++ b/ProcessLib/ThermoMechanics/ThermoMechanicsProcessData.h @@ -34,8 +34,7 @@ struct ThermoMechanicsProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// The constitutive relation for the mechanical part. std::map<int, std::unique_ptr< diff --git a/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowFEM-impl.h b/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowFEM-impl.h index e353ec4515b..7f301cab832 100644 --- a/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowFEM-impl.h +++ b/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowFEM-impl.h @@ -52,7 +52,7 @@ ThermoRichardsFlowLocalAssembler<ShapeFunction, GlobalDim>:: NumLib::initShapeMatrices<ShapeFunction, ShapeMatricesType, GlobalDim>( e, is_axially_symmetric, _integration_method); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); for (unsigned ip = 0; ip < n_integration_points; ip++) { @@ -120,7 +120,7 @@ void ThermoRichardsFlowLocalAssembler<ShapeFunction, GlobalDim>:: typename ShapeMatricesType::template VectorType<pressure_size> const>( local_x.data() + pressure_index, pressure_size); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); MPL::VariableArray variables; unsigned const n_integration_points = @@ -219,7 +219,7 @@ void ThermoRichardsFlowLocalAssembler<ShapeFunction, GlobalDim>:: typename ShapeMatricesType::NodalMatrixType storage_p_a_S = ShapeMatricesType::NodalMatrixType::Zero(pressure_size, pressure_size); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& solid_phase = medium.phase("Solid"); MPL::Phase const* gas_phase = @@ -717,7 +717,7 @@ void ThermoRichardsFlowLocalAssembler<ShapeFunction, GlobalDim>::assemble( typename ShapeMatricesType::template VectorType<local_matrix_dim>>( local_rhs_data, local_matrix_dim); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& solid_phase = medium.phase("Solid"); MPL::Phase const* gas_phase = @@ -1207,7 +1207,7 @@ void ThermoRichardsFlowLocalAssembler<ShapeFunction, GlobalDim>:: auto p_L_prev = local_x_prev.template segment<pressure_size>(pressure_index); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& solid_phase = medium.phase("Solid"); MPL::VariableArray variables; diff --git a/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowProcessData.h b/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowProcessData.h index 3d5d9cd7c95..9605af55950 100644 --- a/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowProcessData.h +++ b/ProcessLib/ThermoRichardsFlow/ThermoRichardsFlowProcessData.h @@ -13,6 +13,8 @@ #include <Eigen/Core> #include <memory> +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" + namespace ProcessLib { namespace ThermoRichardsFlow @@ -21,19 +23,13 @@ struct SimplifiedElasticityModel; } } -namespace MaterialPropertyLib -{ -class MaterialSpatialDistributionMap; -} - namespace ProcessLib { namespace ThermoRichardsFlow { struct ThermoRichardsFlowProcessData { - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// Specific body forces applied to solid and fluid. /// It is usually used to apply gravitational forces. diff --git a/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM-impl.h b/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM-impl.h index fca55c74931..2a44d66ca82 100644 --- a/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM-impl.h +++ b/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM-impl.h @@ -101,7 +101,7 @@ void ThermoRichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, constexpr double dt = std::numeric_limits<double>::quiet_NaN(); auto const& medium = - this->process_data_.media_map->getMedium(this->element_.getID()); + this->process_data_.media_map.getMedium(this->element_.getID()); MPL::VariableArray variables; auto const& solid_phase = medium->phase("Solid"); @@ -167,7 +167,7 @@ void ThermoRichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, std::vector<double>& local_Jac_data) { auto& medium = - *this->process_data_.media_map->getMedium(this->element_.getID()); + *this->process_data_.media_map.getMedium(this->element_.getID()); LocalMatrices loc_mat; loc_mat.setZero(); @@ -459,7 +459,7 @@ void ThermoRichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, auto const e_id = this->element_.getID(); auto const& process_data = this->process_data_; - auto& medium = *process_data.media_map->getMedium(e_id); + auto& medium = *process_data.media_map.getMedium(e_id); unsigned const n_integration_points = this->integration_method_.getNumberOfPoints(); diff --git a/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM.h b/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM.h index 48af8148109..5da3af91f0a 100644 --- a/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM.h +++ b/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsFEM.h @@ -277,7 +277,7 @@ public: this->integration_method_.getNumberOfPoints(); auto const time_independent = std::numeric_limits<double>::quiet_NaN(); auto const& medium = - *this->process_data_.media_map->getMedium(this->element_.getID()); + *this->process_data_.media_map.getMedium(this->element_.getID()); for (unsigned ip = 0; ip < n_integration_points; ip++) { diff --git a/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsProcessData.h b/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsProcessData.h index 60648ebf4c8..cbf21df32cc 100644 --- a/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsProcessData.h +++ b/ProcessLib/ThermoRichardsMechanics/ThermoRichardsMechanicsProcessData.h @@ -26,8 +26,7 @@ struct ThermoRichardsMechanicsProcessData { MeshLib::PropertyVector<int> const* const material_ids = nullptr; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map = nullptr; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; /// The constitutive relation for the mechanical part. std::map<int, std::unique_ptr< diff --git a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler-impl.h b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler-impl.h index e3239bf3fc2..370176a4348 100644 --- a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler-impl.h +++ b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPLocalAssembler-impl.h @@ -88,7 +88,7 @@ void TwoPhaseFlowWithPPLocalAssembler<ShapeFunction, GlobalDim>::assemble( auto Bl = local_b.template segment<cap_pressure_size>(cap_pressure_matrix_index); - auto const& medium = *_process_data.media_map->getMedium(_element.getID()); + auto const& medium = *_process_data.media_map.getMedium(_element.getID()); auto const& liquid_phase = medium.phase("AqueousLiquid"); auto const& gas_phase = medium.phase("Gas"); diff --git a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcessData.h b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcessData.h index 074b0d730ff..2e3cfce5553 100644 --- a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcessData.h +++ b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcessData.h @@ -30,8 +30,7 @@ struct TwoPhaseFlowWithPPProcessData //! Enables lumping of the mass matrix. bool const has_mass_lumping; ParameterLib::Parameter<double> const& temperature; - std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> - media_map; + MaterialPropertyLib::MaterialSpatialDistributionMap media_map; }; } // namespace TwoPhaseFlowWithPP -- GitLab