From 193d4d392109018df3426c2edb5c8f79ff4fce66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Thu, 9 Aug 2012 14:35:00 +0200 Subject: [PATCH] Adapt to possibility for Cartesian grids from deck input. Now we may have a grid generated from deck input using the keywords DXV, DYV, DZV, which will have a null pointer for the global_cell mapping. We check if this pointer is null, and create an identity mapping in this case. The mapping is needed by the *PropertiesFromDeck classes (and helpers). --- examples/sim_2p_incomp_reorder.cpp | 10 +++++++++- examples/sim_wateroil.cpp | 10 +++++++++- examples/spu_2p.cpp | 10 +++++++++- examples/wells_example.cpp | 11 ++++++++++- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/examples/sim_2p_incomp_reorder.cpp b/examples/sim_2p_incomp_reorder.cpp index bc688b3f..6cac703b 100644 --- a/examples/sim_2p_incomp_reorder.cpp +++ b/examples/sim_2p_incomp_reorder.cpp @@ -81,8 +81,16 @@ main(int argc, char** argv) // Grid init grid.reset(new GridManager(*deck)); // Rock and fluid init + int nc = grid->c_grid()->number_of_cells; + std::vector global_cell(nc); const int* gc = grid->c_grid()->global_cell; - std::vector global_cell(gc, gc + grid->c_grid()->number_of_cells); + if (gc != 0) { + std::copy(gc, gc + nc, global_cell.begin()); + } else { + for (int cell = 0; cell < nc; ++cell) { + global_cell[cell] = cell; + } + } props.reset(new IncompPropertiesFromDeck(*deck, global_cell)); // check_well_controls = param.getDefault("check_well_controls", false); // max_well_control_iterations = param.getDefault("max_well_control_iterations", 10); diff --git a/examples/sim_wateroil.cpp b/examples/sim_wateroil.cpp index 8fefedb0..82f82fa1 100644 --- a/examples/sim_wateroil.cpp +++ b/examples/sim_wateroil.cpp @@ -178,8 +178,16 @@ main(int argc, char** argv) // Grid init grid.reset(new Opm::GridManager(deck)); // Rock and fluid init + int nc = grid->c_grid()->number_of_cells; + std::vector global_cell(nc); const int* gc = grid->c_grid()->global_cell; - std::vector global_cell(gc, gc + grid->c_grid()->number_of_cells); + if (gc != 0) { + std::copy(gc, gc + nc, global_cell.begin()); + } else { + for (int cell = 0; cell < nc; ++cell) { + global_cell[cell] = cell; + } + } props.reset(new Opm::BlackoilPropertiesFromDeck(deck, global_cell)); // Wells init. wells.reset(new Opm::WellsManager(deck, *grid->c_grid(), props->permeability())); diff --git a/examples/spu_2p.cpp b/examples/spu_2p.cpp index 69697378..c8406598 100644 --- a/examples/spu_2p.cpp +++ b/examples/spu_2p.cpp @@ -309,8 +309,16 @@ main(int argc, char** argv) // Grid init grid.reset(new Opm::GridManager(deck)); // Rock and fluid init + int nc = grid->c_grid()->number_of_cells; + std::vector global_cell(nc); const int* gc = grid->c_grid()->global_cell; - std::vector global_cell(gc, gc + grid->c_grid()->number_of_cells); + if (gc != 0) { + std::copy(gc, gc + nc, global_cell.begin()); + } else { + for (int cell = 0; cell < nc; ++cell) { + global_cell[cell] = cell; + } + } props.reset(new Opm::IncompPropertiesFromDeck(deck, global_cell)); // Wells init. wells.reset(new Opm::WellsManager(deck, *grid->c_grid(), props->permeability())); diff --git a/examples/wells_example.cpp b/examples/wells_example.cpp index 9f7be7ec..2da110f3 100644 --- a/examples/wells_example.cpp +++ b/examples/wells_example.cpp @@ -38,7 +38,16 @@ int main(int argc, char** argv) // Finally handle the wells WellsManager wells(parser, *grid.c_grid(), NULL); - std::vector global_cells(grid.c_grid()->global_cell, grid.c_grid()->global_cell + grid.c_grid()->number_of_cells); + int nc = grid.c_grid()->number_of_cells; + std::vector global_cells(nc); + const int* gc = grid.c_grid()->global_cell; + if (gc != 0) { + std::copy(gc, gc + nc, global_cells.begin()); + } else { + for (int cell = 0; cell < nc; ++cell) { + global_cells[cell] = cell; + } + } double gravity[3] = {0.0, 0.0, parameters.getDefault("gravity", 0.0)}; IncompPropertiesFromDeck incomp_properties(parser, global_cells);