From 04a22b681daf6e0bfde950630484b810c5ba891e Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Fri, 24 Jul 2020 07:13:06 +0200 Subject: [PATCH] [PL/HeatConduction] Use MPL for heat capacity. --- .../CreateHeatConductionProcess.cpp | 15 ++++----------- ProcessLib/HeatConduction/HeatConductionFEM.h | 12 ++++++++++-- .../HeatConduction/HeatConductionProcessData.h | 1 - 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp b/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp index 35822e7f650..58eaa2fdee1 100644 --- a/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp +++ b/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp @@ -28,7 +28,8 @@ void checkMPLProperties( MaterialPropertyLib::MaterialSpatialDistributionMap const& media_map) { std::array const required_medium_properties = { - MaterialPropertyLib::PropertyType::thermal_conductivity}; + MaterialPropertyLib::PropertyType::thermal_conductivity, + MaterialPropertyLib::PropertyType::heat_capacity}; std::array<MaterialPropertyLib::PropertyType, 0> const empty{}; MaterialPropertyLib::checkMaterialSpatialDistributionMap( @@ -70,14 +71,6 @@ std::unique_ptr<Process> createHeatConductionProcess( checkMPLProperties(mesh, *media_map); DBUG("Media properties verified."); - // heat capacity parameter. - auto& heat_capacity = ParameterLib::findParameter<double>( - config, - //! \ogs_file_param_special{prj__processes__process__HEAT_CONDUCTION__heat_capacity} - "heat_capacity", parameters, 1, &mesh); - - DBUG("Use '{:s}' as heat capacity parameter.", heat_capacity.name); - // density parameter. auto& density = ParameterLib::findParameter<double>( config, @@ -90,8 +83,8 @@ std::unique_ptr<Process> createHeatConductionProcess( //! \ogs_file_param{prj__processes__process__HEAT_CONDUCTION__mass_lumping} config.getConfigParameter<bool>("mass_lumping", false); - HeatConductionProcessData process_data{std::move(media_map), heat_capacity, - density, mass_lumping}; + HeatConductionProcessData process_data{std::move(media_map), density, + mass_lumping}; SecondaryVariableCollection secondary_variables; diff --git a/ProcessLib/HeatConduction/HeatConductionFEM.h b/ProcessLib/HeatConduction/HeatConductionFEM.h index 84b4147bd3b..3b329edd883 100644 --- a/ProcessLib/HeatConduction/HeatConductionFEM.h +++ b/ProcessLib/HeatConduction/HeatConductionFEM.h @@ -135,7 +135,11 @@ public: .property( MaterialPropertyLib::PropertyType::thermal_conductivity) .value(vars, pos, t, dt)); - auto const heat_capacity = _process_data.heat_capacity(t, pos)[0]; + auto const heat_capacity = + medium + .property( + MaterialPropertyLib::PropertyType::heat_capacity) + .template value<double>(vars, pos, t, dt); auto const density = _process_data.density(t, pos)[0]; local_K.noalias() += sm.dNdx.transpose() * k * sm.dNdx * sm.detJ * @@ -208,7 +212,11 @@ public: .property( MaterialPropertyLib::PropertyType::thermal_conductivity) .value(vars, pos, t, dt)); - auto const heat_capacity = _process_data.heat_capacity(t, pos)[0]; + auto const heat_capacity = + medium + .property( + MaterialPropertyLib::PropertyType::heat_capacity) + .template value<double>(vars, pos, t, dt); auto const density = _process_data.density(t, pos)[0]; laplace.noalias() += sm.dNdx.transpose() * k * sm.dNdx * w; diff --git a/ProcessLib/HeatConduction/HeatConductionProcessData.h b/ProcessLib/HeatConduction/HeatConductionProcessData.h index e201c923d7b..ca659475331 100644 --- a/ProcessLib/HeatConduction/HeatConductionProcessData.h +++ b/ProcessLib/HeatConduction/HeatConductionProcessData.h @@ -26,7 +26,6 @@ struct HeatConductionProcessData std::unique_ptr<MaterialPropertyLib::MaterialSpatialDistributionMap> media_map; - ParameterLib::Parameter<double> const& heat_capacity; ParameterLib::Parameter<double> const& density; /// If set mass lumping will be applied to the equation. -- GitLab