move allocation of mech data into MechContainer

This commit is contained in:
Arne Morten Kvarving 2025-02-04 17:36:53 +01:00
parent 7481f2a8e1
commit 2fe36caa08
4 changed files with 103 additions and 88 deletions

View File

@ -992,93 +992,7 @@ doAllocBuffers(const unsigned bufferSize,
rstKeywords["PRESSURE"] = 0;
if (enableMech_ && eclState_.runspec().mech()) {
this->mech_.potentialForce_.resize(bufferSize,0.0);
rstKeywords["MECHPOTF"] = 0;
this->mech_.potentialTempForce_.resize(bufferSize,0.0);
rstKeywords["TEMPPOTF"] = 0;
this->mech_.potentialPressForce_.resize(bufferSize,0.0);
rstKeywords["PRESPOTF"] = 0;
this->mech_.dispX_.resize(bufferSize,0.0);
rstKeywords["DISPX"] = 0;
this->mech_.dispY_.resize(bufferSize,0.0);
rstKeywords["DISPY"] = 0;
this->mech_.dispZ_.resize(bufferSize,0.0);
rstKeywords["DISPZ"] = 0;
this->mech_.stressXX_.resize(bufferSize,0.0);
rstKeywords["STRESSXX"] = 0;
this->mech_.stressYY_.resize(bufferSize,0.0);
rstKeywords["STRESSYY"] = 0;
this->mech_.stressZZ_.resize(bufferSize,0.0);
rstKeywords["STRESSZZ"] = 0;
this->mech_.stressXY_.resize(bufferSize,0.0);
rstKeywords["STRESSXY"] = 0;
this->mech_.stressXZ_.resize(bufferSize,0.0);
rstKeywords["STRESSXZ"] = 0;
this->mech_.stressXY_.resize(bufferSize,0.0);
rstKeywords["STRESSXY"] = 0;
this->mech_.stressYZ_.resize(bufferSize,0.0);
rstKeywords["STRESSYZ"] = 0;
this->mech_.strainXX_.resize(bufferSize,0.0);
rstKeywords["STRAINXX"] = 0;
this->mech_.strainYY_.resize(bufferSize,0.0);
rstKeywords["STRAINYY"] = 0;
this->mech_.strainZZ_.resize(bufferSize,0.0);
rstKeywords["STRAINZZ"] = 0;
this->mech_.strainXY_.resize(bufferSize,0.0);
rstKeywords["STRAINXY"] = 0;
this->mech_.strainXZ_.resize(bufferSize,0.0);
rstKeywords["STRAINXZ"] = 0;
this->mech_.strainXY_.resize(bufferSize,0.0);
rstKeywords["STRAINXY"] = 0;
this->mech_.strainYZ_.resize(bufferSize,0.0);
rstKeywords["STRAINYZ"] = 0;
this->mech_.delstressXX_.resize(bufferSize,0.0);
rstKeywords["DELSTRXX"] = 0;
this->mech_.delstressYY_.resize(bufferSize,0.0);
rstKeywords["DELSTRYY"] = 0;
this->mech_.delstressZZ_.resize(bufferSize,0.0);
rstKeywords["DELSTRZZ"] = 0;
this->mech_.delstressXY_.resize(bufferSize,0.0);
rstKeywords["DELSTRXY"] = 0;
this->mech_.delstressXZ_.resize(bufferSize,0.0);
rstKeywords["DELSTRXZ"] = 0;
this->mech_.delstressXY_.resize(bufferSize,0.0);
rstKeywords["DELSTRXY"] = 0;
this->mech_.delstressYZ_.resize(bufferSize,0.0);
rstKeywords["DELSTRYZ"] = 0;
this->mech_.fracstressXX_.resize(bufferSize,0.0);
rstKeywords["FRCSTRXX"] = 0;
this->mech_.fracstressYY_.resize(bufferSize,0.0);
rstKeywords["FRCSTRYY"] = 0;
this->mech_.fracstressZZ_.resize(bufferSize,0.0);
rstKeywords["FRCSTRZZ"] = 0;
this->mech_.fracstressXY_.resize(bufferSize,0.0);
rstKeywords["FRCSTRXY"] = 0;
this->mech_.fracstressXZ_.resize(bufferSize,0.0);
rstKeywords["FRCSTRXZ"] = 0;
this->mech_.fracstressXY_.resize(bufferSize,0.0);
rstKeywords["FRCSTRXY"] = 0;
this->mech_.fracstressYZ_.resize(bufferSize,0.0);
rstKeywords["FRCSTRYZ"] = 0;
this->mech_.linstressXX_.resize(bufferSize,0.0);
rstKeywords["LINSTRXX"] = 0;
this->mech_.linstressYY_.resize(bufferSize,0.0);
rstKeywords["LINSTRYY"] = 0;
this->mech_.linstressZZ_.resize(bufferSize,0.0);
rstKeywords["LINSTRZZ"] = 0;
this->mech_.linstressXY_.resize(bufferSize,0.0);
rstKeywords["LINSTRXY"] = 0;
this->mech_.linstressXZ_.resize(bufferSize,0.0);
rstKeywords["LINSTRXZ"] = 0;
this->mech_.linstressXY_.resize(bufferSize,0.0);
rstKeywords["LINSTRXY"] = 0;
this->mech_.linstressYZ_.resize(bufferSize,0.0);
rstKeywords["LINSTRYZ"] = 0;
this->mech_.allocate(bufferSize, rstKeywords);
}
// If TEMP is set in RPTRST we output temperature even if THERMAL

View File

@ -25,5 +25,96 @@
namespace Opm {
template<class Scalar>
void MechContainer<Scalar>::
allocate(const std::size_t bufferSize,
std::map<std::string, int>& rstKeywords)
{
this->potentialForce_.resize(bufferSize, 0.0);
rstKeywords["MECHPOTF"] = 0;
this->potentialTempForce_.resize(bufferSize, 0.0);
rstKeywords["TEMPPOTF"] = 0;
this->potentialPressForce_.resize(bufferSize, 0.0);
rstKeywords["PRESPOTF"] = 0;
this->dispX_.resize(bufferSize, 0.0);
rstKeywords["DISPX"] = 0;
this->dispY_.resize(bufferSize, 0.0);
rstKeywords["DISPY"] = 0;
this->dispZ_.resize(bufferSize, 0.0);
rstKeywords["DISPZ"] = 0;
this->stressXX_.resize(bufferSize, 0.0);
rstKeywords["STRESSXX"] = 0;
this->stressYY_.resize(bufferSize, 0.0);
rstKeywords["STRESSYY"] = 0;
this->stressZZ_.resize(bufferSize, 0.0);
rstKeywords["STRESSZZ"] = 0;
this->stressXY_.resize(bufferSize, 0.0);
rstKeywords["STRESSXY"] = 0;
this->stressXZ_.resize(bufferSize, 0.0);
rstKeywords["STRESSXZ"] = 0;
this->stressYZ_.resize(bufferSize, 0.0);
rstKeywords["STRESSYZ"] = 0;
this->strainXX_.resize(bufferSize, 0.0);
rstKeywords["STRAINXX"] = 0;
this->strainYY_.resize(bufferSize, 0.0);
rstKeywords["STRAINYY"] = 0;
this->strainZZ_.resize(bufferSize, 0.0);
rstKeywords["STRAINZZ"] = 0;
this->strainXY_.resize(bufferSize, 0.0);
rstKeywords["STRAINXY"] = 0;
this->strainXZ_.resize(bufferSize, 0.0);
rstKeywords["STRAINXZ"] = 0;
this->strainYZ_.resize(bufferSize, 0.0);
rstKeywords["STRAINYZ"] = 0;
this->delstressXX_.resize(bufferSize, 0.0);
rstKeywords["DELSTRXX"] = 0;
this->delstressYY_.resize(bufferSize, 0.0);
rstKeywords["DELSTRYY"] = 0;
this->delstressZZ_.resize(bufferSize, 0.0);
rstKeywords["DELSTRZZ"] = 0;
this->delstressXY_.resize(bufferSize, 0.0);
rstKeywords["DELSTRXY"] = 0;
this->delstressXZ_.resize(bufferSize, 0.0);
rstKeywords["DELSTRXZ"] = 0;
this->delstressYZ_.resize(bufferSize, 0.0);
rstKeywords["DELSTRYZ"] = 0;
this->fracstressXX_.resize(bufferSize,0.0);
rstKeywords["FRCSTRXX"] = 0;
this->fracstressYY_.resize(bufferSize,0.0);
rstKeywords["FRCSTRYY"] = 0;
this->fracstressZZ_.resize(bufferSize,0.0);
rstKeywords["FRCSTRZZ"] = 0;
this->fracstressXY_.resize(bufferSize,0.0);
rstKeywords["FRCSTRXY"] = 0;
this->fracstressXZ_.resize(bufferSize,0.0);
rstKeywords["FRCSTRXZ"] = 0;
this->fracstressYZ_.resize(bufferSize,0.0);
rstKeywords["FRCSTRYZ"] = 0;
this->linstressXX_.resize(bufferSize,0.0);
rstKeywords["LINSTRXX"] = 0;
this->linstressYY_.resize(bufferSize,0.0);
rstKeywords["LINSTRYY"] = 0;
this->linstressZZ_.resize(bufferSize,0.0);
rstKeywords["LINSTRZZ"] = 0;
this->linstressXY_.resize(bufferSize,0.0);
rstKeywords["LINSTRXY"] = 0;
this->linstressXZ_.resize(bufferSize,0.0);
rstKeywords["LINSTRXZ"] = 0;
this->linstressYZ_.resize(bufferSize,0.0);
rstKeywords["LINSTRYZ"] = 0;
allocated_ = true;
}
template class MechContainer<double>;
#if FLOW_INSTANTIATE_FLOAT
template class MechContainer<float>;
#endif
} // namespace Opm

View File

@ -26,6 +26,9 @@
#ifndef OPM_MECH_CONTAINER_HPP
#define OPM_MECH_CONTAINER_HPP
#include <cstddef>
#include <map>
#include <string>
#include <vector>
namespace Opm {
@ -36,6 +39,13 @@ class MechContainer
using ScalarBuffer = std::vector<Scalar>;
public:
void allocate(const std::size_t bufferSize,
std::map<std::string, int>& rstKeywords);
bool allocated() const
{ return allocated_; }
bool allocated_ = false;
ScalarBuffer potentialForce_;
ScalarBuffer potentialPressForce_;
ScalarBuffer potentialTempForce_;

View File

@ -196,7 +196,7 @@ public:
void processElementMech(const ElementContext& elemCtx)
{
if constexpr (getPropValue<TypeTag, Properties::EnableMech>()) {
if (this->mech_.potentialForce_.empty()) {
if (!this->mech_.allocated()) {
return;
}