From b815a6892a27b5abfd7d82a210f9bcb11bf82899 Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Thu, 7 Nov 2019 12:50:54 +0100 Subject: [PATCH] [PL] Use process_id = 0 for access in monolithic p ... monolithic processes. Used for x and dof_table. --- .../GroundwaterFlow/GroundwaterFlowProcess.h | 3 +- ProcessLib/TES/TESProcess.cpp | 45 +++++++++++-------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h index 52190044adb..901617056f5 100644 --- a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h +++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h @@ -55,7 +55,8 @@ public: std::vector<GlobalIndexType> indices_cache; auto const r_c_indices = NumLib::getRowColumnIndices( element_id, *_local_to_global_index_map, indices_cache); - std::vector<double> local_x(x[0]->get(r_c_indices.rows)); + constexpr int process_id = 0; // monolithic scheme. + std::vector<double> local_x(x[process_id]->get(r_c_indices.rows)); return _local_assemblers[element_id]->getFlux(p, t, local_x); } diff --git a/ProcessLib/TES/TESProcess.cpp b/ProcessLib/TES/TESProcess.cpp index b69f677285f..bf92c44477f 100644 --- a/ProcessLib/TES/TESProcess.cpp +++ b/ProcessLib/TES/TESProcess.cpp @@ -322,7 +322,8 @@ GlobalVector const& TESProcess::computeVapourPartialPressure( std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table, std::unique_ptr<GlobalVector>& result_cache) { - assert(dof_table[0] == _local_to_global_index_map.get()); + constexpr int process_id = 0; // monolithic scheme. + assert(dof_table[process_id] == _local_to_global_index_map.get()); auto const& dof_table_single = getSingleComponentDOFTable(); result_cache = MathLib::MatrixVectorTraits<GlobalVector>::newInstance( @@ -334,10 +335,12 @@ GlobalVector const& TESProcess::computeVapourPartialPressure( for (GlobalIndexType node_id = 0; node_id < nnodes; ++node_id) { - auto const p = NumLib::getNodalValue(*x[0], _mesh, *dof_table[0], - node_id, COMPONENT_ID_PRESSURE); - auto const x_mV = NumLib::getNodalValue( - *x[0], _mesh, *dof_table[0], node_id, COMPONENT_ID_MASS_FRACTION); + auto const p = + NumLib::getNodalValue(*x[process_id], _mesh, *dof_table[process_id], + node_id, COMPONENT_ID_PRESSURE); + auto const x_mV = + NumLib::getNodalValue(*x[process_id], _mesh, *dof_table[process_id], + node_id, COMPONENT_ID_MASS_FRACTION); auto const x_nV = Adsorption::AdsorptionReaction::getMolarFraction( x_mV, _assembly_params.M_react, _assembly_params.M_inert); @@ -354,7 +357,8 @@ GlobalVector const& TESProcess::computeRelativeHumidity( std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table, std::unique_ptr<GlobalVector>& result_cache) { - assert(dof_table[0] == _local_to_global_index_map.get()); + constexpr int process_id = 0; // monolithic scheme. + assert(dof_table[process_id] == _local_to_global_index_map.get()); auto const& dof_table_single = getSingleComponentDOFTable(); result_cache = MathLib::MatrixVectorTraits<GlobalVector>::newInstance( @@ -367,12 +371,13 @@ GlobalVector const& TESProcess::computeRelativeHumidity( auto const& x = *xs[0]; // monolithic process for (GlobalIndexType node_id = 0; node_id < nnodes; ++node_id) { - auto const p = NumLib::getNodalValue(x, _mesh, *dof_table[0], node_id, - COMPONENT_ID_PRESSURE); - auto const T = NumLib::getNodalValue(x, _mesh, *dof_table[0], node_id, - COMPONENT_ID_TEMPERATURE); - auto const x_mV = NumLib::getNodalValue( - x, _mesh, *dof_table[0], node_id, COMPONENT_ID_MASS_FRACTION); + auto const p = NumLib::getNodalValue(x, _mesh, *dof_table[process_id], + node_id, COMPONENT_ID_PRESSURE); + auto const T = NumLib::getNodalValue(x, _mesh, *dof_table[process_id], + node_id, COMPONENT_ID_TEMPERATURE); + auto const x_mV = + NumLib::getNodalValue(x, _mesh, *dof_table[process_id], node_id, + COMPONENT_ID_MASS_FRACTION); auto const x_nV = Adsorption::AdsorptionReaction::getMolarFraction( x_mV, _assembly_params.M_react, _assembly_params.M_inert); @@ -392,7 +397,8 @@ GlobalVector const& TESProcess::computeEquilibriumLoading( std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table, std::unique_ptr<GlobalVector>& result_cache) { - assert(dof_table[0] == _local_to_global_index_map.get()); + constexpr int process_id = 0; // monolithic scheme. + assert(dof_table[process_id] == _local_to_global_index_map.get()); auto const& dof_table_single = getSingleComponentDOFTable(); result_cache = MathLib::MatrixVectorTraits<GlobalVector>::newInstance( @@ -405,12 +411,13 @@ GlobalVector const& TESProcess::computeEquilibriumLoading( auto const& x = *xs[0]; // monolithic process for (GlobalIndexType node_id = 0; node_id < nnodes; ++node_id) { - auto const p = NumLib::getNodalValue(x, _mesh, *dof_table[0], node_id, - COMPONENT_ID_PRESSURE); - auto const T = NumLib::getNodalValue(x, _mesh, *dof_table[0], node_id, - COMPONENT_ID_TEMPERATURE); - auto const x_mV = NumLib::getNodalValue( - x, _mesh, *dof_table[0], node_id, COMPONENT_ID_MASS_FRACTION); + auto const p = NumLib::getNodalValue(x, _mesh, *dof_table[process_id], + node_id, COMPONENT_ID_PRESSURE); + auto const T = NumLib::getNodalValue(x, _mesh, *dof_table[process_id], + node_id, COMPONENT_ID_TEMPERATURE); + auto const x_mV = + NumLib::getNodalValue(x, _mesh, *dof_table[process_id], node_id, + COMPONENT_ID_MASS_FRACTION); auto const x_nV = Adsorption::AdsorptionReaction::getMolarFraction( x_mV, _assembly_params.M_react, _assembly_params.M_inert); -- GitLab