#include #include #include #include "opm/core/utility/initState.hpp" #include #include #include #include #include #include #include #include #include #include #ifdef EXPERIMENT_ISTL #include #endif int main(int argc, char** argv) { using namespace Opm::parameter; using namespace Opm; ParameterGroup parameters( argc, argv, false ); std::string file_name = parameters.getDefault("inputdeck", "data.data"); // Read input file EclipseGridParser parser(file_name); std::cout << "Done!" << std::endl; // Setup grid GridManager grid(parser); // 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); double gravity[3] = {0.0, 0.0, parameters.getDefault("gravity", 0.0)}; IncompPropertiesFromDeck incomp_properties(parser, global_cells); #ifdef EXPERIMENT_ISTL Opm::LinearSolverIstl linsolver(parameters); #else Opm::LinearSolverUmfpack linsolver; #endif // EXPERIMENT_ISTL IncompTpfa pressure_solver(*grid.c_grid(), incomp_properties.permeability(), gravity, linsolver, wells.c_wells()); std::vector all_cells; for(int i = 0; i < grid.c_grid()->number_of_cells; i++) { all_cells.push_back(i); } Opm::TwophaseState state; initStateTwophaseFromDeck(*grid.c_grid(), incomp_properties, parser, gravity[2], state); // Compute total mobility and omega std::vector totmob; std::vector omega; computeTotalMobilityOmega(incomp_properties, all_cells, state.saturation(), totmob, omega); std::vector src; Opm::FlowBCManager bcs; std::vector pressure; std::vector face_flux; //pressure_solver.solve(totmob, omega, src, bcs.c_bcs(), pressure, face_flux); if(wells.wellCollection().conditionsMet(pressure, *grid.c_grid())) { std::cout << "Conditions met for wells!" << std::endl; } else { std::cout << "Conditions not met for wells!"<