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

View File

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

View File

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