Store both inside and outside thermal half transmissibility

This commit is contained in:
Tor Harald Sandve 2021-03-26 15:27:14 +01:00
parent 838b230b64
commit ef325dd08d

View File

@ -1469,13 +1469,26 @@ public:
* \copydoc EclTransmissiblity::thermalHalfTransmissibility * \copydoc EclTransmissiblity::thermalHalfTransmissibility
*/ */
template <class Context> template <class Context>
Scalar thermalHalfTransmissibility(const Context& context, Scalar thermalHalfTransmissibilityIn(const Context& context,
unsigned faceIdx, unsigned faceIdx,
unsigned timeIdx) const unsigned timeIdx) const
{ {
const auto& face = context.stencil(timeIdx).interiorFace(faceIdx); const auto& face = context.stencil(timeIdx).interiorFace(faceIdx);
unsigned toDofLocalIdx = face.exteriorIndex(); unsigned toDofLocalIdx = face.exteriorIndex();
return *pffDofData_.get(context.element(), toDofLocalIdx).thermalHalfTrans; return *pffDofData_.get(context.element(), toDofLocalIdx).thermalHalfTransIn;
}
/*!
* \copydoc EclTransmissiblity::thermalHalfTransmissibility
*/
template <class Context>
Scalar thermalHalfTransmissibilityOut(const Context& context,
unsigned faceIdx,
unsigned timeIdx) const
{
const auto& face = context.stencil(timeIdx).interiorFace(faceIdx);
unsigned toDofLocalIdx = face.exteriorIndex();
return *pffDofData_.get(context.element(), toDofLocalIdx).thermalHalfTransOut;
} }
/*! /*!
@ -3208,7 +3221,8 @@ private:
struct PffDofData_ struct PffDofData_
{ {
Opm::ConditionalStorage<enableEnergy, Scalar> thermalHalfTrans; Opm::ConditionalStorage<enableEnergy, Scalar> thermalHalfTransIn;
Opm::ConditionalStorage<enableEnergy, Scalar> thermalHalfTransOut;
Opm::ConditionalStorage<enableDiffusion, Scalar> diffusivity; Opm::ConditionalStorage<enableDiffusion, Scalar> diffusivity;
Scalar transmissibility; Scalar transmissibility;
}; };
@ -3229,8 +3243,10 @@ private:
unsigned globalCenterElemIdx = elementMapper.index(stencil.entity(/*dofIdx=*/0)); unsigned globalCenterElemIdx = elementMapper.index(stencil.entity(/*dofIdx=*/0));
dofData.transmissibility = transmissibilities_.transmissibility(globalCenterElemIdx, globalElemIdx); dofData.transmissibility = transmissibilities_.transmissibility(globalCenterElemIdx, globalElemIdx);
if (enableEnergy) if (enableEnergy) {
*dofData.thermalHalfTrans = transmissibilities_.thermalHalfTrans(globalCenterElemIdx, globalElemIdx); *dofData.thermalHalfTransIn = transmissibilities_.thermalHalfTrans(globalCenterElemIdx, globalElemIdx);
*dofData.thermalHalfTransOut = transmissibilities_.thermalHalfTrans(globalElemIdx, globalCenterElemIdx);
}
if (enableDiffusion) if (enableDiffusion)
*dofData.diffusivity = transmissibilities_.diffusivity(globalCenterElemIdx, globalElemIdx); *dofData.diffusivity = transmissibilities_.diffusivity(globalCenterElemIdx, globalElemIdx);
} }