From 032562f3f0fcf350414e20cbf4fec2e7960ce13c Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Mon, 3 Feb 2020 12:42:05 +0100 Subject: [PATCH] [PL/LiquidFlow] Create/use LiquidFlowData. --- .../LiquidFlow/CreateLiquidFlowProcess.cpp | 11 +++++-- ProcessLib/LiquidFlow/LiquidFlowData.h | 31 +++++++++++++++++++ .../LiquidFlowLocalAssembler-impl.h | 1 + ProcessLib/LiquidFlow/LiquidFlowProcess.cpp | 2 ++ ProcessLib/LiquidFlow/LiquidFlowProcess.h | 3 ++ 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 ProcessLib/LiquidFlow/LiquidFlowData.h diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp index c99bf8ef25b..1a276ca6339 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 00000000000..2f6e89c71b9 --- /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 4dd8b45a594..88dda145428 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 02985aa1af5..f505220747c 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 5f2932e26b8..0b870ef788c 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; -- GitLab