Use BlackoilPropsAdFromDeck in fully implicit simulator.

This commit is contained in:
Atgeirr Flø Rasmussen
2013-05-27 22:28:17 +02:00
parent e3f39504f4
commit 62d0ad85b8
3 changed files with 23 additions and 20 deletions

View File

@@ -43,7 +43,10 @@
#include <opm/core/simulator/BlackoilState.hpp> #include <opm/core/simulator/BlackoilState.hpp>
#include <opm/core/simulator/WellState.hpp> #include <opm/core/simulator/WellState.hpp>
#include <opm/autodiff/SimulatorFullyImplicitBlackoil.hpp> #include <opm/autodiff/SimulatorFullyImplicitBlackoil.hpp>
#include <opm/autodiff/BlackoilPropsAd.hpp>
#include <opm/autodiff/BlackoilPropsAdFromDeck.hpp>
#include <boost/scoped_ptr.hpp> #include <boost/scoped_ptr.hpp>
#include <boost/filesystem.hpp> #include <boost/filesystem.hpp>
@@ -83,6 +86,7 @@ main(int argc, char** argv)
boost::scoped_ptr<EclipseGridParser> deck; boost::scoped_ptr<EclipseGridParser> deck;
boost::scoped_ptr<GridManager> grid; boost::scoped_ptr<GridManager> grid;
boost::scoped_ptr<BlackoilPropertiesInterface> props; boost::scoped_ptr<BlackoilPropertiesInterface> props;
boost::scoped_ptr<BlackoilPropsAdInterface> new_props;
boost::scoped_ptr<RockCompressibility> rock_comp; boost::scoped_ptr<RockCompressibility> rock_comp;
BlackoilState state; BlackoilState state;
// bool check_well_controls = false; // bool check_well_controls = false;
@@ -95,6 +99,7 @@ main(int argc, char** argv)
grid.reset(new GridManager(*deck)); grid.reset(new GridManager(*deck));
// Rock and fluid init // Rock and fluid init
props.reset(new BlackoilPropertiesFromDeck(*deck, *grid->c_grid(), param)); props.reset(new BlackoilPropertiesFromDeck(*deck, *grid->c_grid(), param));
new_props.reset(new BlackoilPropsAdFromDeck(*deck, *grid->c_grid()));
// check_well_controls = param.getDefault("check_well_controls", false); // check_well_controls = param.getDefault("check_well_controls", false);
// max_well_control_iterations = param.getDefault("max_well_control_iterations", 10); // max_well_control_iterations = param.getDefault("max_well_control_iterations", 10);
// Rock compressibility. // Rock compressibility.
@@ -129,6 +134,7 @@ main(int argc, char** argv)
grid.reset(new GridManager(nx, ny, nz, dx, dy, dz)); grid.reset(new GridManager(nx, ny, nz, dx, dy, dz));
// Rock and fluid init. // Rock and fluid init.
props.reset(new BlackoilPropertiesBasic(param, grid->c_grid()->dimensions, grid->c_grid()->number_of_cells)); props.reset(new BlackoilPropertiesBasic(param, grid->c_grid()->dimensions, grid->c_grid()->number_of_cells));
new_props.reset(new BlackoilPropsAd(*props));
// Rock compressibility. // Rock compressibility.
rock_comp.reset(new RockCompressibility(param)); rock_comp.reset(new RockCompressibility(param));
// Gravity. // Gravity.
@@ -208,7 +214,7 @@ main(int argc, char** argv)
WellsManager wells; // no wells. WellsManager wells; // no wells.
SimulatorFullyImplicitBlackoil simulator(param, SimulatorFullyImplicitBlackoil simulator(param,
*grid->c_grid(), *grid->c_grid(),
*props, *new_props,
rock_comp->isActive() ? rock_comp.get() : 0, rock_comp->isActive() ? rock_comp.get() : 0,
wells, wells,
src, src,
@@ -263,7 +269,7 @@ main(int argc, char** argv)
// Create and run simulator. // Create and run simulator.
SimulatorFullyImplicitBlackoil simulator(param, SimulatorFullyImplicitBlackoil simulator(param,
*grid->c_grid(), *grid->c_grid(),
*props, *new_props,
rock_comp->isActive() ? rock_comp.get() : 0, rock_comp->isActive() ? rock_comp.get() : 0,
wells, wells,
src, src,

View File

@@ -28,7 +28,7 @@
#include <opm/autodiff/GeoProps.hpp> #include <opm/autodiff/GeoProps.hpp>
#include <opm/autodiff/FullyImplicitBlackoilSolver.hpp> #include <opm/autodiff/FullyImplicitBlackoilSolver.hpp>
#include <opm/autodiff/BlackoilPropsAd.hpp> #include <opm/autodiff/BlackoilPropsAdInterface.hpp>
#include <opm/core/grid.h> #include <opm/core/grid.h>
#include <opm/core/wells.h> #include <opm/core/wells.h>
@@ -43,7 +43,6 @@
#include <opm/core/wells/WellsManager.hpp> #include <opm/core/wells/WellsManager.hpp>
#include <opm/core/props/BlackoilPropertiesInterface.hpp>
#include <opm/core/props/rock/RockCompressibility.hpp> #include <opm/core/props/rock/RockCompressibility.hpp>
#include <opm/core/grid/ColumnExtract.hpp> #include <opm/core/grid/ColumnExtract.hpp>
@@ -67,7 +66,7 @@ namespace Opm
public: public:
Impl(const parameter::ParameterGroup& param, Impl(const parameter::ParameterGroup& param,
const UnstructuredGrid& grid, const UnstructuredGrid& grid,
const BlackoilPropertiesInterface& props, const BlackoilPropsAdInterface& props,
const RockCompressibility* rock_comp_props, const RockCompressibility* rock_comp_props,
WellsManager& wells_manager, WellsManager& wells_manager,
const std::vector<double>& src, const std::vector<double>& src,
@@ -95,7 +94,7 @@ namespace Opm
bool use_segregation_split_; bool use_segregation_split_;
// Observed objects. // Observed objects.
const UnstructuredGrid& grid_; const UnstructuredGrid& grid_;
const BlackoilPropertiesInterface& props_; const BlackoilPropsAdInterface& props_;
const RockCompressibility* rock_comp_props_; const RockCompressibility* rock_comp_props_;
WellsManager& wells_manager_; WellsManager& wells_manager_;
const Wells* wells_; const Wells* wells_;
@@ -103,7 +102,6 @@ namespace Opm
const FlowBoundaryConditions* bcs_; const FlowBoundaryConditions* bcs_;
const double* gravity_; const double* gravity_;
// Solvers // Solvers
BlackoilPropsAd fluid_;
DerivedGeology geo_; DerivedGeology geo_;
FullyImplicitBlackoilSolver solver_; FullyImplicitBlackoilSolver solver_;
// Misc. data // Misc. data
@@ -115,7 +113,7 @@ namespace Opm
SimulatorFullyImplicitBlackoil::SimulatorFullyImplicitBlackoil(const parameter::ParameterGroup& param, SimulatorFullyImplicitBlackoil::SimulatorFullyImplicitBlackoil(const parameter::ParameterGroup& param,
const UnstructuredGrid& grid, const UnstructuredGrid& grid,
const BlackoilPropertiesInterface& props, const BlackoilPropsAdInterface& props,
const RockCompressibility* rock_comp_props, const RockCompressibility* rock_comp_props,
WellsManager& wells_manager, WellsManager& wells_manager,
const std::vector<double>& src, const std::vector<double>& src,
@@ -235,7 +233,7 @@ namespace Opm
// \TODO: make CompressibleTpfa take src and bcs. // \TODO: make CompressibleTpfa take src and bcs.
SimulatorFullyImplicitBlackoil::Impl::Impl(const parameter::ParameterGroup& param, SimulatorFullyImplicitBlackoil::Impl::Impl(const parameter::ParameterGroup& param,
const UnstructuredGrid& grid, const UnstructuredGrid& grid,
const BlackoilPropertiesInterface& props, const BlackoilPropsAdInterface& props,
const RockCompressibility* rock_comp_props, const RockCompressibility* rock_comp_props,
WellsManager& wells_manager, WellsManager& wells_manager,
const std::vector<double>& src, const std::vector<double>& src,
@@ -250,9 +248,8 @@ namespace Opm
src_(src), src_(src),
bcs_(bcs), bcs_(bcs),
gravity_(gravity), gravity_(gravity),
fluid_(props_), geo_(grid_, props_, gravity_),
geo_(grid_, fluid_, gravity_), solver_(grid_, props_, geo_, *wells_manager.c_wells(), linsolver)
solver_(grid_, fluid_, geo_, *wells_manager.c_wells(), linsolver)
/* param.getDefault("nl_pressure_residual_tolerance", 0.0), /* param.getDefault("nl_pressure_residual_tolerance", 0.0),
param.getDefault("nl_pressure_change_tolerance", 1.0), param.getDefault("nl_pressure_change_tolerance", 1.0),
param.getDefault("nl_pressure_maxiter", 10), param.getDefault("nl_pressure_maxiter", 10),
@@ -349,12 +346,12 @@ namespace Opm
SimulatorReport sreport; SimulatorReport sreport;
// Solve pressure equation. // Solve pressure equation.
if (check_well_controls_) { // if (check_well_controls_) {
computeFractionalFlow(props_, allcells_, // computeFractionalFlow(props_, allcells_,
state.pressure(), state.surfacevol(), state.saturation(), // state.pressure(), state.surfacevol(), state.saturation(),
fractional_flows); // fractional_flows);
wells_manager_.applyExplicitReinjectionControls(well_resflows_phase, well_resflows_phase); // wells_manager_.applyExplicitReinjectionControls(well_resflows_phase, well_resflows_phase);
} // }
bool well_control_passed = !check_well_controls_; bool well_control_passed = !check_well_controls_;
int well_control_iteration = 0; int well_control_iteration = 0;
do { do {

View File

@@ -30,7 +30,7 @@ struct FlowBoundaryConditions;
namespace Opm namespace Opm
{ {
namespace parameter { class ParameterGroup; } namespace parameter { class ParameterGroup; }
class BlackoilPropertiesInterface; class BlackoilPropsAdInterface;
class RockCompressibility; class RockCompressibility;
class WellsManager; class WellsManager;
class LinearSolverInterface; class LinearSolverInterface;
@@ -69,7 +69,7 @@ namespace Opm
/// \param[in] gravity if non-null, gravity vector /// \param[in] gravity if non-null, gravity vector
SimulatorFullyImplicitBlackoil(const parameter::ParameterGroup& param, SimulatorFullyImplicitBlackoil(const parameter::ParameterGroup& param,
const UnstructuredGrid& grid, const UnstructuredGrid& grid,
const BlackoilPropertiesInterface& props, const BlackoilPropsAdInterface& props,
const RockCompressibility* rock_comp_props, const RockCompressibility* rock_comp_props,
WellsManager& wells_manager, WellsManager& wells_manager,
const std::vector<double>& src, const std::vector<double>& src,