Add support for new three-phase relperm option to BlackoilPropertiesFromDeck.

New parameter option added: 'threephase_model' can now be 'gwseg'.
This commit is contained in:
Atgeirr Flø Rasmussen 2012-09-24 16:43:00 +02:00
parent b898e20420
commit 1dbcebefe5
2 changed files with 17 additions and 7 deletions

View File

@ -28,8 +28,8 @@ namespace Opm
{ {
rock_.init(deck, grid); rock_.init(deck, grid);
pvt_.init(deck, 200); pvt_.init(deck, 200);
SaturationPropsFromDeck<SatFuncStone2Uniform>* ptr SaturationPropsFromDeck<SatFuncSimpleUniform>* ptr
= new SaturationPropsFromDeck<SatFuncStone2Uniform>(); = new SaturationPropsFromDeck<SatFuncSimpleUniform>();
satprops_.reset(ptr); satprops_.reset(ptr);
ptr->init(deck, grid, 200); ptr->init(deck, grid, 200);
@ -50,30 +50,39 @@ namespace Opm
// Unfortunate lack of pointer smartness here... // Unfortunate lack of pointer smartness here...
const int sat_samples = param.getDefault("sat_tab_size", 200); const int sat_samples = param.getDefault("sat_tab_size", 200);
std::string threephase_model = param.getDefault<std::string>("threephase_model", "simple"); std::string threephase_model = param.getDefault<std::string>("threephase_model", "simple");
bool use_stone2 = (threephase_model == "stone2");
if (sat_samples > 1) { if (sat_samples > 1) {
if (use_stone2) { if (threephase_model == "stone2") {
SaturationPropsFromDeck<SatFuncStone2Uniform>* ptr SaturationPropsFromDeck<SatFuncStone2Uniform>* ptr
= new SaturationPropsFromDeck<SatFuncStone2Uniform>(); = new SaturationPropsFromDeck<SatFuncStone2Uniform>();
satprops_.reset(ptr); satprops_.reset(ptr);
ptr->init(deck, grid, sat_samples); ptr->init(deck, grid, sat_samples);
} else { } else if (threephase_model == "simple") {
SaturationPropsFromDeck<SatFuncSimpleUniform>* ptr SaturationPropsFromDeck<SatFuncSimpleUniform>* ptr
= new SaturationPropsFromDeck<SatFuncSimpleUniform>(); = new SaturationPropsFromDeck<SatFuncSimpleUniform>();
satprops_.reset(ptr); satprops_.reset(ptr);
ptr->init(deck, grid, sat_samples); ptr->init(deck, grid, sat_samples);
} else if (threephase_model == "gwseg") {
SaturationPropsFromDeck<SatFuncGwsegUniform>* ptr
= new SaturationPropsFromDeck<SatFuncGwsegUniform>();
satprops_.reset(ptr);
ptr->init(deck, grid, sat_samples);
} }
} else { } else {
if (use_stone2) { if (threephase_model == "stone2") {
SaturationPropsFromDeck<SatFuncStone2Nonuniform>* ptr SaturationPropsFromDeck<SatFuncStone2Nonuniform>* ptr
= new SaturationPropsFromDeck<SatFuncStone2Nonuniform>(); = new SaturationPropsFromDeck<SatFuncStone2Nonuniform>();
satprops_.reset(ptr); satprops_.reset(ptr);
ptr->init(deck, grid, sat_samples); ptr->init(deck, grid, sat_samples);
} else { } else if (threephase_model == "simple") {
SaturationPropsFromDeck<SatFuncSimpleNonuniform>* ptr SaturationPropsFromDeck<SatFuncSimpleNonuniform>* ptr
= new SaturationPropsFromDeck<SatFuncSimpleNonuniform>(); = new SaturationPropsFromDeck<SatFuncSimpleNonuniform>();
satprops_.reset(ptr); satprops_.reset(ptr);
ptr->init(deck, grid, sat_samples); ptr->init(deck, grid, sat_samples);
} else if (threephase_model == "gwseg") {
SaturationPropsFromDeck<SatFuncGwsegNonuniform>* ptr
= new SaturationPropsFromDeck<SatFuncGwsegNonuniform>();
satprops_.reset(ptr);
ptr->init(deck, grid, sat_samples);
} }
} }

View File

@ -26,6 +26,7 @@
#include <opm/core/fluid/blackoil/BlackoilPhases.hpp> #include <opm/core/fluid/blackoil/BlackoilPhases.hpp>
#include <opm/core/fluid/SatFuncStone2.hpp> #include <opm/core/fluid/SatFuncStone2.hpp>
#include <opm/core/fluid/SatFuncSimple.hpp> #include <opm/core/fluid/SatFuncSimple.hpp>
#include <opm/core/fluid/SatFuncGwseg.hpp>
#include <vector> #include <vector>
struct UnstructuredGrid; struct UnstructuredGrid;