From 50c5369c3920fed2a52ba1d82e7a2541823b294f Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Fri, 17 Jan 2025 11:45:45 +0100 Subject: [PATCH] Transmissibility::computeHalfDiffusivity_: use return value instead of out-param and make it static --- opm/simulators/flow/Transmissibility.hpp | 7 +- opm/simulators/flow/Transmissibility_impl.hpp | 85 ++++++++----------- 2 files changed, 38 insertions(+), 54 deletions(-) diff --git a/opm/simulators/flow/Transmissibility.hpp b/opm/simulators/flow/Transmissibility.hpp index 3849b75fc..42cafecd3 100644 --- a/opm/simulators/flow/Transmissibility.hpp +++ b/opm/simulators/flow/Transmissibility.hpp @@ -256,10 +256,9 @@ protected: const DimVector& distance, const DimMatrix& perm); - void computeHalfDiffusivity_(Scalar& halfDiff, - const DimVector& areaNormal, - const DimVector& distance, - const Scalar& poro) const; + static Scalar computeHalfDiffusivity_(const DimVector& areaNormal, + const DimVector& distance, + const Scalar poro); DimVector distanceVector_(const DimVector& faceCenter, const unsigned& cellIdx) const; diff --git a/opm/simulators/flow/Transmissibility_impl.hpp b/opm/simulators/flow/Transmissibility_impl.hpp index ace3d0a4e..6cb011a7e 100644 --- a/opm/simulators/flow/Transmissibility_impl.hpp +++ b/opm/simulators/flow/Transmissibility_impl.hpp @@ -275,12 +275,10 @@ update(bool global, const TransUpdateQuantities update_quantities, // for boundary intersections we also need to compute the thermal // half transmissibilities if (enableEnergy_ && !onlyTrans) { - Scalar transBoundaryEnergyIs; - computeHalfDiffusivity_(transBoundaryEnergyIs, - faceAreaNormal, - distanceVector_(faceCenterInside, - elemIdx), - 1.0); + Scalar transBoundaryEnergyIs = + computeHalfDiffusivity_(faceAreaNormal, + distanceVector_(faceCenterInside, elemIdx), + 1.0); thermalHalfTransBoundary_.insert_or_assign(std::make_pair(elemIdx, boundaryIsIdx), transBoundaryEnergyIs); } @@ -441,19 +439,14 @@ update(bool global, const TransUpdateQuantities update_quantities, // update the "thermal half transmissibility" for the intersection if (enableEnergy_ && !onlyTrans) { - Scalar halfDiffusivity1; - Scalar halfDiffusivity2; - - computeHalfDiffusivity_(halfDiffusivity1, - faceAreaNormal, - distanceVector_(faceCenterInside, - elemIdx), - 1.0); - computeHalfDiffusivity_(halfDiffusivity2, - faceAreaNormal, - distanceVector_(faceCenterOutside, - outsideElemIdx), - 1.0); + const Scalar halfDiffusivity1 = + computeHalfDiffusivity_(faceAreaNormal, + distanceVector_(faceCenterInside, elemIdx), + 1.0); + const Scalar halfDiffusivity2 = + computeHalfDiffusivity_(faceAreaNormal, + distanceVector_(faceCenterOutside, outsideElemIdx), + 1.0); // TODO Add support for multipliers thermalHalfTrans_.insert_or_assign(details::directionalIsId(elemIdx, outsideElemIdx), halfDiffusivity1); @@ -463,19 +456,14 @@ update(bool global, const TransUpdateQuantities update_quantities, // update the "diffusive half transmissibility" for the intersection if (updateDiffusivity && !onlyTrans) { - Scalar halfDiffusivity1; - Scalar halfDiffusivity2; - - computeHalfDiffusivity_(halfDiffusivity1, - faceAreaNormal, - distanceVector_(faceCenterInside, - elemIdx), - porosity_[elemIdx]); - computeHalfDiffusivity_(halfDiffusivity2, - faceAreaNormal, - distanceVector_(faceCenterOutside, - outsideElemIdx), - porosity_[outsideElemIdx]); + Scalar halfDiffusivity1 = + computeHalfDiffusivity_(faceAreaNormal, + distanceVector_(faceCenterInside, elemIdx), + porosity_[elemIdx]); + Scalar halfDiffusivity2 = + computeHalfDiffusivity_(faceAreaNormal, + distanceVector_(faceCenterOutside, outsideElemIdx), + porosity_[outsideElemIdx]); applyNtg_(halfDiffusivity1, insideFaceIdx, elemIdx, ntg); applyNtg_(halfDiffusivity2, outsideFaceIdx, outsideElemIdx, ntg); @@ -495,19 +483,14 @@ update(bool global, const TransUpdateQuantities update_quantities, // update the "dispersivity half transmissibility" for the intersection if (updateDispersivity && !onlyTrans) { - Scalar halfDispersivity1; - Scalar halfDispersivity2; - - computeHalfDiffusivity_(halfDispersivity1, - faceAreaNormal, - distanceVector_(faceCenterInside, - elemIdx), - dispersion_[elemIdx]); - computeHalfDiffusivity_(halfDispersivity2, - faceAreaNormal, - distanceVector_(faceCenterOutside, - outsideElemIdx), - dispersion_[outsideElemIdx]); + Scalar halfDispersivity1 = + computeHalfDiffusivity_(faceAreaNormal, + distanceVector_(faceCenterInside, elemIdx), + dispersion_[elemIdx]); + Scalar halfDispersivity2 = + computeHalfDiffusivity_(faceAreaNormal, + distanceVector_(faceCenterOutside, outsideElemIdx), + dispersion_[outsideElemIdx]); applyNtg_(halfDispersivity1, insideFaceIdx, elemIdx, ntg); applyNtg_(halfDispersivity2, outsideFaceIdx, outsideElemIdx, ntg); @@ -1332,15 +1315,17 @@ computeHalfTrans_(const DimVector& areaNormal, } template -void Transmissibility:: -computeHalfDiffusivity_(Scalar& halfDiff, - const DimVector& areaNormal, +Scalar +Transmissibility:: +computeHalfDiffusivity_(const DimVector& areaNormal, const DimVector& distance, - const Scalar& poro) const + const Scalar poro) { - halfDiff = poro; + Scalar halfDiff = poro; halfDiff *= std::abs(Dune::dot(areaNormal, distance)); halfDiff /= distance.two_norm2(); + + return halfDiff; } template