Transmissibility::computeHalfDiffusivity_: use return value instead of out-param

and make it static
This commit is contained in:
Arne Morten Kvarving 2025-01-17 11:45:45 +01:00
parent 9ce9fe49f2
commit 50c5369c39
2 changed files with 38 additions and 54 deletions

View File

@ -256,10 +256,9 @@ protected:
const DimVector& distance,
const DimMatrix& perm);
void computeHalfDiffusivity_(Scalar& halfDiff,
const DimVector& areaNormal,
static Scalar computeHalfDiffusivity_(const DimVector& areaNormal,
const DimVector& distance,
const Scalar& poro) const;
const Scalar poro);
DimVector distanceVector_(const DimVector& faceCenter,
const unsigned& cellIdx) const;

View File

@ -275,11 +275,9 @@ 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),
Scalar transBoundaryEnergyIs =
computeHalfDiffusivity_(faceAreaNormal,
distanceVector_(faceCenterInside, elemIdx),
1.0);
thermalHalfTransBoundary_.insert_or_assign(std::make_pair(elemIdx, boundaryIsIdx),
transBoundaryEnergyIs);
@ -441,18 +439,13 @@ 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),
const Scalar halfDiffusivity1 =
computeHalfDiffusivity_(faceAreaNormal,
distanceVector_(faceCenterInside, elemIdx),
1.0);
computeHalfDiffusivity_(halfDiffusivity2,
faceAreaNormal,
distanceVector_(faceCenterOutside,
outsideElemIdx),
const Scalar halfDiffusivity2 =
computeHalfDiffusivity_(faceAreaNormal,
distanceVector_(faceCenterOutside, outsideElemIdx),
1.0);
// TODO Add support for multipliers
thermalHalfTrans_.insert_or_assign(details::directionalIsId(elemIdx, outsideElemIdx),
@ -463,18 +456,13 @@ 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),
Scalar halfDiffusivity1 =
computeHalfDiffusivity_(faceAreaNormal,
distanceVector_(faceCenterInside, elemIdx),
porosity_[elemIdx]);
computeHalfDiffusivity_(halfDiffusivity2,
faceAreaNormal,
distanceVector_(faceCenterOutside,
outsideElemIdx),
Scalar halfDiffusivity2 =
computeHalfDiffusivity_(faceAreaNormal,
distanceVector_(faceCenterOutside, outsideElemIdx),
porosity_[outsideElemIdx]);
applyNtg_(halfDiffusivity1, insideFaceIdx, elemIdx, ntg);
@ -495,18 +483,13 @@ 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),
Scalar halfDispersivity1 =
computeHalfDiffusivity_(faceAreaNormal,
distanceVector_(faceCenterInside, elemIdx),
dispersion_[elemIdx]);
computeHalfDiffusivity_(halfDispersivity2,
faceAreaNormal,
distanceVector_(faceCenterOutside,
outsideElemIdx),
Scalar halfDispersivity2 =
computeHalfDiffusivity_(faceAreaNormal,
distanceVector_(faceCenterOutside, outsideElemIdx),
dispersion_[outsideElemIdx]);
applyNtg_(halfDispersivity1, insideFaceIdx, elemIdx, ntg);
@ -1332,15 +1315,17 @@ computeHalfTrans_(const DimVector& areaNormal,
}
template<class Grid, class GridView, class ElementMapper, class CartesianIndexMapper, class Scalar>
void Transmissibility<Grid,GridView,ElementMapper,CartesianIndexMapper,Scalar>::
computeHalfDiffusivity_(Scalar& halfDiff,
const DimVector& areaNormal,
Scalar
Transmissibility<Grid,GridView,ElementMapper,CartesianIndexMapper,Scalar>::
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<class Grid, class GridView, class ElementMapper, class CartesianIndexMapper, class Scalar>