From 23e1654ba7468ea6c0c93b6476f766e35ac4b632 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 16 Jan 2025 13:31:10 +0100 Subject: [PATCH] Transmissibility::update: use ThreadSafeMapBuilder for thermalHalfTrans this in preparation for multithreading the loop --- opm/simulators/flow/Transmissibility_impl.hpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/opm/simulators/flow/Transmissibility_impl.hpp b/opm/simulators/flow/Transmissibility_impl.hpp index 1b7eae776..0a6a37883 100644 --- a/opm/simulators/flow/Transmissibility_impl.hpp +++ b/opm/simulators/flow/Transmissibility_impl.hpp @@ -290,6 +290,8 @@ update(bool global, const TransUpdateQuantities update_quantities, MapBuilderInsertionMode::Insert_Or_Assign); ThreadSafeMapBuilder thermalHalfTransBoundary(thermalHalfTransBoundary_, 1, MapBuilderInsertionMode::Insert_Or_Assign); + ThreadSafeMapBuilder thermalHalfTrans(thermalHalfTrans_, 1, + MapBuilderInsertionMode::Insert_Or_Assign); // compute the transmissibilities for all intersections for (const auto& elem : elements(gridView_)) { @@ -404,8 +406,8 @@ update(bool global, const TransUpdateQuantities update_quantities, assert(outside.faceIdx == -1); transMap.insert_or_assign(details::isId(inside.elemIdx, outside.elemIdx), 0.0); if (enableEnergy_ && !onlyTrans) { - thermalHalfTrans_.insert_or_assign(details::directionalIsId(inside.elemIdx, outside.elemIdx), 0.0); - thermalHalfTrans_.insert_or_assign(details::directionalIsId(outside.elemIdx, inside.elemIdx), 0.0); + thermalHalfTrans.insert_or_assign(details::directionalIsId(inside.elemIdx, outside.elemIdx), 0.0); + thermalHalfTrans.insert_or_assign(details::directionalIsId(outside.elemIdx, inside.elemIdx), 0.0); } if (updateDiffusivity && !onlyTrans) { @@ -469,10 +471,10 @@ update(bool global, const TransUpdateQuantities update_quantities, if (enableEnergy_ && !onlyTrans) { const auto half = computeHalf(halfDiff, 1.0, 1.0); // TODO Add support for multipliers - thermalHalfTrans_.insert_or_assign(details::directionalIsId(inside.elemIdx, outside.elemIdx), - half[0]); - thermalHalfTrans_.insert_or_assign(details::directionalIsId(outside.elemIdx, inside.elemIdx), - half[1]); + thermalHalfTrans.insert_or_assign(details::directionalIsId(inside.elemIdx, outside.elemIdx), + half[0]); + thermalHalfTrans.insert_or_assign(details::directionalIsId(outside.elemIdx, inside.elemIdx), + half[1]); } // update the "diffusive half transmissibility" for the intersection @@ -493,6 +495,7 @@ update(bool global, const TransUpdateQuantities update_quantities, transBoundary.finalize(); transMap.finalize(); thermalHalfTransBoundary.finalize(); + thermalHalfTrans.finalize(); // Potentially overwrite and/or modify transmissibilities based on input from deck this->updateFromEclState_(global);