Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 51 additions & 12 deletions opm/simulators/flow/EclGenericWriter_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@

#include <dune/grid/common/mcmgmapper.hh>


#include <opm/grid/cpgrid/CpGridUtilities.hpp>
#include <opm/grid/cpgrid/LgrOutputHelpers.hpp>
#include <opm/grid/GridHelpers.hpp>
#include <opm/grid/utility/cartesianToCompressed.hpp>
Expand Down Expand Up @@ -236,20 +238,57 @@ EclGenericWriter(const Schedule& schedule,
, equilGrid_ (equilGrid)
{
if (this->collectOnIORank_.isIORank()) {
this->eclIO_ = std::make_unique<EclipseIO>
(this->eclState_,
UgGridHelpers::createEclipseGrid(*equilGrid, eclState_.getInputGrid()),
this->schedule_, summaryConfig, "", enableEsmry);
}

if constexpr (std::is_same_v<Grid, Dune::CpGrid>) {

if ( (this->grid_.comm().size() == 1) && (this->eclState_.getLgrs().size()>0) && (this->grid_.maxLevel()>0) ) {

//Create a new EclpseGrid for output using dims and zcorn and coords from level zero
const auto [l0CartesianIdxToCellIdx, l0IJK] = Opm::lgrIJK(grid_, "GLOBAL");
const auto [l0COORD, l0ZCORN] = Opm::lgrCOORDandZCORN(grid_, 0, l0CartesianIdxToCellIdx, l0IJK);
Opm::EclipseGrid eclipse_grid_output(grid_.logicalCartesianSize(), l0COORD, l0ZCORN);

//Set the LGRCollection
eclipse_grid_output.init_lgr_cells(eclState_.getLgrs());

// Loop over all levels
for (const auto& [lgr_name, lgr_level] : grid_.getLgrNameToLevel())
{
const auto [lgrCartesianIdxToCellIdx, lgrIJK] = Opm::lgrIJK(grid_, lgr_name);
const auto [lgrCOORD, lgrZCORN] = Opm::lgrCOORDandZCORN(grid_, lgr_level, lgrCartesianIdxToCellIdx, lgrIJK);

// create output thread if enabled and rank is I/O rank
// async output is enabled by default if pthread are enabled
int numWorkerThreads = 0;
if (enableAsyncOutput && collectOnIORank_.isIORank()) {
numWorkerThreads = 1;
}
eclipse_grid_output.set_lgr_refinement(lgr_name, lgrCOORD, lgrZCORN);
}
eclipse_grid_output.init_children_host_cells();

this->eclIO_ = std::make_unique<EclipseIO>
(this->eclState_,
eclipse_grid_output,
this->schedule_, summaryConfig, "", enableEsmry);

this->taskletRunner_.reset(new TaskletRunner(numWorkerThreads));
}
else {
this->eclIO_ = std::make_unique<EclipseIO>
(this->eclState_,
UgGridHelpers::createEclipseGrid(*equilGrid, eclState_.getInputGrid()),
this->schedule_, summaryConfig, "", enableEsmry);
}
} else {
this->eclIO_ = std::make_unique<EclipseIO>
(this->eclState_,
UgGridHelpers::createEclipseGrid(*equilGrid, eclState_.getInputGrid()),
this->schedule_, summaryConfig, "", enableEsmry);
}

// create output thread if enabled and rank is I/O rank
// async output is enabled by default if pthread are enabled
int numWorkerThreads = 0;
if (enableAsyncOutput && collectOnIORank_.isIORank()) {
numWorkerThreads = 1;
}

this->taskletRunner_.reset(new TaskletRunner(numWorkerThreads));
}
}

template<class Grid, class EquilGrid, class GridView, class ElementMapper, class Scalar>
Expand Down
13 changes: 8 additions & 5 deletions opm/simulators/flow/GenericCpGridVanguard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -580,14 +580,16 @@ void GenericCpGridVanguard<ElementMapper,GridView,Scalar>::addLgrsUpdateLeafView
const int lgrsSize,
Dune::CpGrid& grid)
{
std::vector<std::array<int,3>> cells_per_dim_vec;
std::vector<std::array<int,3>> startIJK_vec;
std::vector<std::array<int,3>> endIJK_vec;
std::vector<std::string> lgrName_vec;
std::vector<std::array<int,3>> cells_per_dim_vec{};
std::vector<std::array<int,3>> startIJK_vec{};
std::vector<std::array<int,3>> endIJK_vec{};
std::vector<std::string> lgrName_vec{};
std::vector<std::string> parentName_vec{};
cells_per_dim_vec.reserve(lgrsSize);
startIJK_vec.reserve(lgrsSize);
endIJK_vec.reserve(lgrsSize);
lgrName_vec.reserve(lgrsSize);
parentName_vec.reserve(lgrsSize);
for (int lgr = 0; lgr < lgrsSize; ++lgr)
{
const auto lgrCarfin = lgrCollection.getLgr(lgr);
Expand All @@ -596,8 +598,9 @@ void GenericCpGridVanguard<ElementMapper,GridView,Scalar>::addLgrsUpdateLeafView
startIJK_vec.push_back({lgrCarfin.I1(), lgrCarfin.J1(), lgrCarfin.K1()});
endIJK_vec.push_back({lgrCarfin.I2()+1, lgrCarfin.J2()+1, lgrCarfin.K2()+1});
lgrName_vec.emplace_back(lgrCarfin.NAME());
parentName_vec.emplace_back(lgrCarfin.PARENT_NAME());
}
grid.addLgrsUpdateLeafView(cells_per_dim_vec, startIJK_vec, endIJK_vec, lgrName_vec);
grid.addLgrsUpdateLeafView(cells_per_dim_vec, startIJK_vec, endIJK_vec, lgrName_vec, parentName_vec);
};

template<class ElementMapper, class GridView, class Scalar>
Expand Down