FlowExp: spring cleaning

This commit is contained in:
Arne Morten Kvarving
2024-04-25 08:50:16 +02:00
parent 1dfdae3892
commit 310625a3fe
5 changed files with 221 additions and 162 deletions

View File

@@ -1,32 +1,38 @@
#ifndef OPM_FI_BLACK_OIL_MODEL_NOCACHE_HPP
#define OPM_FI_BLACK_OIL_MODEL_NOCACHE_HPP
#include <opm/simulators/flow/FIBlackoilModel.hpp>
namespace Opm{
template<typename TypeTag>
class FIBlackOilModelNoCache: public FIBlackOilModel<TypeTag>{
using Simulator = GetPropType<TypeTag, Properties::Simulator>;
using IntensiveQuantities = GetPropType<TypeTag, Properties::IntensiveQuantities>;
public:
explicit FIBlackOilModelNoCache(Simulator& simulator)
:FIBlackOilModel<TypeTag>(simulator)
{ }
IntensiveQuantities intensiveQuantities(unsigned globalIdx, unsigned timeIdx) const{
OPM_TIMEBLOCK_LOCAL(intensiveQuantitiesNoCache);
const auto& primaryVar = this->solution(timeIdx)[globalIdx];
const auto& problem = this->simulator_.problem();
if (!(this->enableIntensiveQuantityCache_) ||
!(this->intensiveQuantityCacheUpToDate_[timeIdx][globalIdx])){
IntensiveQuantities intQuants;
intQuants.update(problem,primaryVar, globalIdx, timeIdx);
return intQuants;// reqiored for updating extrution factor
}else{
IntensiveQuantities intQuants = (this->intensiveQuantityCache_[timeIdx][globalIdx]);
return intQuants;
}
namespace Opm {
template<typename TypeTag>
class FIBlackOilModelNoCache: public FIBlackOilModel<TypeTag>
{
using Simulator = GetPropType<TypeTag, Properties::Simulator>;
using IntensiveQuantities = GetPropType<TypeTag, Properties::IntensiveQuantities>;
public:
explicit FIBlackOilModelNoCache(Simulator& simulator)
: FIBlackOilModel<TypeTag>(simulator)
{}
IntensiveQuantities intensiveQuantities(unsigned globalIdx, unsigned timeIdx) const
{
OPM_TIMEBLOCK_LOCAL(intensiveQuantitiesNoCache);
const auto& primaryVar = this->solution(timeIdx)[globalIdx];
const auto& problem = this->simulator_.problem();
if (!(this->enableIntensiveQuantityCache_) ||
!(this->intensiveQuantityCacheUpToDate_[timeIdx][globalIdx])) {
IntensiveQuantities intQuants;
intQuants.update(problem,primaryVar, globalIdx, timeIdx);
return intQuants;// reqiored for updating extrution factor
} else {
IntensiveQuantities intQuants = (this->intensiveQuantityCache_[timeIdx][globalIdx]);
return intQuants;
}
}
};
} // namespace Opm
};
}
#endif