mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-07-07 04:53:03 -05:00
addressing reviewing comments OPM/opm-simulators#5419
This commit is contained in:
parent
062a98b305
commit
fd5e9d167f
|
@ -166,10 +166,10 @@ protected:
|
|||
SimulatorReportSingle sub_step_report_;
|
||||
SimulatorReport simulation_report_;
|
||||
mutable std::vector<NNCdata> outputNnc_;
|
||||
std::unique_ptr<data::Solution> outputTrans_;
|
||||
mutable std::unique_ptr<data::Solution> outputTrans_;
|
||||
|
||||
private:
|
||||
data::Solution computeTrans_(const std::unordered_map<int,int>& cartesianToActive, const std::function<unsigned int(unsigned int)>& map) const;
|
||||
void computeTrans_(const std::unordered_map<int,int>& cartesianToActive, const std::function<unsigned int(unsigned int)>& map) const;
|
||||
std::vector<NNCdata> exportNncStructure_(const std::unordered_map<int,int>& cartesianToActive, const std::function<unsigned int(unsigned int)>& map) const;
|
||||
};
|
||||
|
||||
|
|
|
@ -262,7 +262,7 @@ extractOutputTransAndNNC(const std::function<unsigned int(unsigned int)>& map)
|
|||
{
|
||||
if (collectOnIORank_.isIORank()) {
|
||||
auto cartMap = cartesianToCompressed(equilGrid_->size(0), UgGridHelpers::globalCell(*equilGrid_));
|
||||
this->outputTrans_ = std::make_unique<data::Solution>(computeTrans_(cartMap, map));
|
||||
computeTrans_(cartMap, map);
|
||||
exportNncStructure_(cartMap, map);
|
||||
}
|
||||
|
||||
|
@ -276,22 +276,34 @@ extractOutputTransAndNNC(const std::function<unsigned int(unsigned int)>& map)
|
|||
}
|
||||
|
||||
template<class Grid, class EquilGrid, class GridView, class ElementMapper, class Scalar>
|
||||
data::Solution
|
||||
void
|
||||
EclGenericWriter<Grid,EquilGrid,GridView,ElementMapper,Scalar>::
|
||||
computeTrans_(const std::unordered_map<int,int>& cartesianToActive,
|
||||
const std::function<unsigned int(unsigned int)>& map) const
|
||||
{
|
||||
if (!outputTrans_) {
|
||||
outputTrans_ = std::make_unique<data::Solution>();
|
||||
}
|
||||
|
||||
const auto& cartMapper = *equilCartMapper_;
|
||||
const auto& cartDims = cartMapper.cartesianDimensions();
|
||||
|
||||
auto tranx = data::CellData {
|
||||
UnitSystem::measure::transmissibility,
|
||||
std::vector<double>(cartDims[0] * cartDims[1] * cartDims[2], 0.0),
|
||||
data::TargetType::INIT
|
||||
auto createCellData = [&cartDims]() {
|
||||
return data::CellData{
|
||||
UnitSystem::measure::transmissibility,
|
||||
std::vector<double>(cartDims[0] * cartDims[1] * cartDims[2], 0.0),
|
||||
data::TargetType::INIT
|
||||
};
|
||||
};
|
||||
|
||||
auto trany = tranx;
|
||||
auto tranz = tranx;
|
||||
outputTrans_->clear();
|
||||
outputTrans_->emplace("TRANX", createCellData());
|
||||
outputTrans_->emplace("TRANY", createCellData());
|
||||
outputTrans_->emplace("TRANZ", createCellData());
|
||||
|
||||
auto& tranx = this->outputTrans_->at("TRANX");
|
||||
auto& trany = this->outputTrans_->at("TRANY");
|
||||
auto& tranz = this->outputTrans_->at("TRANZ");
|
||||
|
||||
using GlobalGridView = typename EquilGrid::LeafGridView;
|
||||
using GlobElementMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GlobalGridView>;
|
||||
|
@ -356,12 +368,6 @@ computeTrans_(const std::unordered_map<int,int>& cartesianToActive,
|
|||
tranz.data<double>()[gc1] = globalTrans().transmissibility(c1, c2);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
{"TRANX", tranx},
|
||||
{"TRANY", trany},
|
||||
{"TRANZ", tranz},
|
||||
};
|
||||
}
|
||||
|
||||
template<class Grid, class EquilGrid, class GridView, class ElementMapper, class Scalar>
|
||||
|
|
|
@ -345,15 +345,13 @@ public:
|
|||
ParentType::finishInit();
|
||||
auto& simulator = this->simulator();
|
||||
|
||||
bool transmissiblity_updated = false;
|
||||
auto processTransmissibilities = [&simulator, &transmissiblity_updated, this]() {
|
||||
// Re-ordering in case of ALUGrid
|
||||
auto gridToEquilGrid = [&simulator](unsigned int i) -> unsigned int {
|
||||
return simulator.vanguard().gridIdxToEquilGridIdx(i);
|
||||
};
|
||||
|
||||
transmissibilities_.finishInit(gridToEquilGrid);
|
||||
transmissiblity_updated = true;
|
||||
auto finishTransmissibilities = [updated = false, this]() mutable
|
||||
{
|
||||
if (updated) { return; }
|
||||
this->transmissibilities_.finishInit([&vg = this->simulator().vanguard()](const unsigned int it) {
|
||||
return vg.gridIdxToEquilGridIdx(it);
|
||||
});
|
||||
updated = true;
|
||||
};
|
||||
|
||||
// calculating the TRANX, TRANY, TRANZ and NNC for output purpose
|
||||
|
@ -365,7 +363,7 @@ public:
|
|||
if (simulator.vanguard().grid().comm().rank() == 0)
|
||||
eclWriter_->setTransmissibilities(&simulator.vanguard().globalTransmissibility());
|
||||
} else {
|
||||
processTransmissibilities();
|
||||
finishTransmissibilities();
|
||||
eclWriter_->setTransmissibilities(&simulator.problem().eclTransmissibilities());
|
||||
}
|
||||
|
||||
|
@ -437,10 +435,7 @@ public:
|
|||
eclWriter_->writeInit();
|
||||
}
|
||||
|
||||
if (!transmissiblity_updated) {
|
||||
processTransmissibilities();
|
||||
}
|
||||
|
||||
finishTransmissibilities();
|
||||
|
||||
const auto& initconfig = eclState.getInitConfig();
|
||||
tracerModel_.init(initconfig.restartRequested());
|
||||
|
|
Loading…
Reference in New Issue
Block a user