diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp index c99bf8ef25b6e4743ee41cecaa716577d3dd1422..1a276ca6339488e0f5c8e65568dd936418e1db56 100644 --- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp @@ -13,6 +13,7 @@ #include <algorithm> +#include "MaterialLib/MPL/CreateMaterialSpatialDistributionMap.h" #include "MaterialLib/PhysicalConstant.h" #include "ParameterLib/Utils.h" #include "ProcessLib/Output/CreateSecondaryVariables.h" @@ -112,11 +113,17 @@ std::unique_ptr<Process> createLiquidFlowProcess( *calculatesurfaceflux_config, meshes, output_directory); } + auto media_map = + MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); + + LiquidFlowData process_data{std::move(media_map)}; + return std::make_unique<LiquidFlowProcess>( std::move(name), mesh, std::move(jacobian_assembler), parameters, integration_order, std::move(process_variables), - std::move(secondary_variables), material_ids, gravity_axis_id, g, - reference_temperature, mat_config, std::move(surfaceflux)); + std::move(process_data), std::move(secondary_variables), material_ids, + gravity_axis_id, g, reference_temperature, mat_config, + std::move(surfaceflux)); } } // namespace LiquidFlow diff --git a/ProcessLib/LiquidFlow/LiquidFlowData.h b/ProcessLib/LiquidFlow/LiquidFlowData.h new file mode 100644 index 0000000000000000000000000000000000000000..2f6e89c71b986fcaced9f96bd4557bb9fcd13252 --- /dev/null +++ b/ProcessLib/LiquidFlow/LiquidFlowData.h @@ -0,0 +1,31 @@ +/** + * \file + * \copyright + * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#pragma once + +#include <memory> + +namespace MaterialPropertyLib +{ +class MaterialSpatialDistributionMap; +} + +namespace ProcessLib +{ +namespace LiquidFlow +{ +struct LiquidFlowData final +{ + std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> + media_map; +}; + +} // namespace LiquidFlow +} // namespace ProcessLib diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h index 4dd8b45a5940c3fb8b20e476735e9a7b9a8def4f..88dda145428b989c07408111ac9d5814549dc86a 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h +++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h @@ -14,6 +14,7 @@ #include "LiquidFlowLocalAssembler.h" +#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h" #include "NumLib/Function/Interpolation.h" namespace ProcessLib diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp index 02985aa1af563cf4c6d38b6004151a7d9022659d..f505220747c4346f8c88216a978c6734bb41dff0 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp @@ -34,6 +34,7 @@ LiquidFlowProcess::LiquidFlowProcess( unsigned const integration_order, std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>&& process_variables, + LiquidFlowData&& process_data, SecondaryVariableCollection&& secondary_variables, MeshLib::PropertyVector<int> const* const material_ids, int const gravitational_axis_id, @@ -49,6 +50,7 @@ LiquidFlowProcess::LiquidFlowProcess( _reference_temperature(reference_temperature), _material_properties( createLiquidFlowMaterialProperties(config, parameters, material_ids)), + _process_data(std::move(process_data)), _surfaceflux(std::move(surfaceflux)) { DBUG("Create Liquid flow process."); diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.h b/ProcessLib/LiquidFlow/LiquidFlowProcess.h index 5f2932e26b8fa301b83b576e9bc6883f903d4e67..0b870ef788c1b8f0c931f60e045bc6374867d481 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.h +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.h @@ -16,6 +16,7 @@ #include "LiquidFlowLocalAssembler.h" #include "LiquidFlowMaterialProperties.h" +#include "LiquidFlowData.h" #include "MaterialLib/Fluid/FluidProperties/FluidProperties.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" #include "ProcessLib/Process.h" @@ -65,6 +66,7 @@ public: unsigned const integration_order, std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>&& process_variables, + LiquidFlowData&& process_data, SecondaryVariableCollection&& secondary_variables, MeshLib::PropertyVector<int> const* const material_ids, int const gravitational_axis_id, @@ -116,6 +118,7 @@ private: const double _gravitational_acceleration; const double _reference_temperature; const std::unique_ptr<LiquidFlowMaterialProperties> _material_properties; + LiquidFlowData _process_data; std::vector<std::unique_ptr<LiquidFlowLocalAssemblerInterface>> _local_assemblers;