Merge branch 'master' into nonuniform_fluid_tables
Conflicts: opm/core/fluid/BlackoilPropertiesFromDeck.cpp opm/core/fluid/BlackoilPropertiesFromDeck.hpp opm/core/fluid/SaturationPropsFromDeck.cpp
This commit is contained in:
commit
064d408b20
@ -27,7 +27,7 @@ namespace Opm
|
|||||||
const UnstructuredGrid& grid)
|
const UnstructuredGrid& grid)
|
||||||
{
|
{
|
||||||
rock_.init(deck, grid);
|
rock_.init(deck, grid);
|
||||||
pvt_.init(deck, 1025);
|
pvt_.init(deck, 200);
|
||||||
SaturationPropsFromDeck<SatFuncStone2Uniform>* ptr
|
SaturationPropsFromDeck<SatFuncStone2Uniform>* ptr
|
||||||
= new SaturationPropsFromDeck<SatFuncStone2Uniform>();
|
= new SaturationPropsFromDeck<SatFuncStone2Uniform>();
|
||||||
satprops_.reset(ptr);
|
satprops_.reset(ptr);
|
||||||
|
@ -56,7 +56,7 @@ namespace Opm
|
|||||||
/// pvt_tab_size (200) number of uniform sample points for dead-oil pvt tables.
|
/// pvt_tab_size (200) number of uniform sample points for dead-oil pvt tables.
|
||||||
/// sat_tab_size (200) number of uniform sample points for saturation tables.
|
/// sat_tab_size (200) number of uniform sample points for saturation tables.
|
||||||
/// threephase_model("simple") three-phase relperm model (accepts "simple" and "stone2").
|
/// threephase_model("simple") three-phase relperm model (accepts "simple" and "stone2").
|
||||||
/// For both parameters, a 0 or negative value indicates that no spline fitting is to
|
/// For both size parameters, a 0 or negative value indicates that no spline fitting is to
|
||||||
/// be done, and the input fluid data used directly for linear interpolation.
|
/// be done, and the input fluid data used directly for linear interpolation.
|
||||||
BlackoilPropertiesFromDeck(const EclipseGridParser& deck,
|
BlackoilPropertiesFromDeck(const EclipseGridParser& deck,
|
||||||
const UnstructuredGrid& grid,
|
const UnstructuredGrid& grid,
|
||||||
|
@ -26,7 +26,8 @@
|
|||||||
namespace Opm
|
namespace Opm
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// This file should be removed in the future.
|
||||||
|
// Holding off until refactoring of SaturationPropsFromDeck class is done.
|
||||||
|
|
||||||
} // namespace Opm
|
} // namespace Opm
|
||||||
|
|
||||||
|
@ -549,9 +549,9 @@ namespace Opm
|
|||||||
const std::vector<double>& sg_deck = deck.getFloatingPointValue("SGAS");
|
const std::vector<double>& sg_deck = deck.getFloatingPointValue("SGAS");
|
||||||
for (int c = 0; c < num_cells; ++c) {
|
for (int c = 0; c < num_cells; ++c) {
|
||||||
int c_deck = (grid.global_cell == NULL) ? c : grid.global_cell[c];
|
int c_deck = (grid.global_cell == NULL) ? c : grid.global_cell[c];
|
||||||
s[2*c] = sw_deck[c_deck];
|
s[3*c] = sw_deck[c_deck];
|
||||||
s[2*c + 1] = 1.0 - (sw_deck[c_deck] + sg_deck[c_deck]);
|
s[3*c + 1] = 1.0 - (sw_deck[c_deck] + sg_deck[c_deck]);
|
||||||
s[2*c + 2] = sg_deck[c_deck];
|
s[3*c + 2] = sg_deck[c_deck];
|
||||||
p[c] = p_deck[c_deck];
|
p[c] = p_deck[c_deck];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -665,7 +665,8 @@ namespace Opm
|
|||||||
double well_rate_total = 0.0;
|
double well_rate_total = 0.0;
|
||||||
double well_rate_water = 0.0;
|
double well_rate_water = 0.0;
|
||||||
for (int perf = wells.well_connpos[w]; perf < wells.well_connpos[w + 1]; ++perf) {
|
for (int perf = wells.well_connpos[w]; perf < wells.well_connpos[w + 1]; ++perf) {
|
||||||
const double perf_rate = well_perfrates[perf]*(unit::day/unit::second);
|
const double perf_rate = unit::convert::to(well_perfrates[perf],
|
||||||
|
unit::cubic(unit::meter)/unit::day);
|
||||||
well_rate_total += perf_rate;
|
well_rate_total += perf_rate;
|
||||||
if (perf_rate > 0.0) {
|
if (perf_rate > 0.0) {
|
||||||
// Injection.
|
// Injection.
|
||||||
@ -674,9 +675,9 @@ namespace Opm
|
|||||||
// Production.
|
// Production.
|
||||||
const int cell = wells.well_cells[perf];
|
const int cell = wells.well_cells[perf];
|
||||||
double mob[max_np];
|
double mob[max_np];
|
||||||
props.relperm(1, &s[2*cell], &cell, mob, 0);
|
props.relperm(1, &s[np*cell], &cell, mob, 0);
|
||||||
double visc[max_np];
|
double visc[max_np];
|
||||||
props.viscosity(1, &p[cell], &z[2*cell], &cell, visc, 0);
|
props.viscosity(1, &p[cell], &z[np*cell], &cell, visc, 0);
|
||||||
double tmob = 0;
|
double tmob = 0;
|
||||||
for(int i = 0; i < np; ++i) {
|
for(int i = 0; i < np; ++i) {
|
||||||
mob[i] /= visc[i];
|
mob[i] /= visc[i];
|
||||||
|
@ -12,6 +12,8 @@ noinst_PROGRAMS = \
|
|||||||
bo_resprop_test \
|
bo_resprop_test \
|
||||||
monotcubicinterpolator_test \
|
monotcubicinterpolator_test \
|
||||||
param_test \
|
param_test \
|
||||||
|
pvt_test \
|
||||||
|
relperm_test \
|
||||||
sparsetable_test \
|
sparsetable_test \
|
||||||
sparsevector_test \
|
sparsevector_test \
|
||||||
test_cartgrid \
|
test_cartgrid \
|
||||||
@ -21,9 +23,7 @@ test_read_vag \
|
|||||||
test_readpolymer \
|
test_readpolymer \
|
||||||
test_sf2p \
|
test_sf2p \
|
||||||
test_writeVtkData \
|
test_writeVtkData \
|
||||||
unit_test \
|
unit_test
|
||||||
pvt_test \
|
|
||||||
relperm_test
|
|
||||||
|
|
||||||
|
|
||||||
bo_resprop_test_SOURCES = bo_resprop_test.cpp
|
bo_resprop_test_SOURCES = bo_resprop_test.cpp
|
||||||
@ -33,6 +33,10 @@ monotcubicinterpolator_test_SOURCES = monotcubicinterpolator_test.cpp
|
|||||||
param_test_SOURCES = param_test.cpp
|
param_test_SOURCES = param_test.cpp
|
||||||
param_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB)
|
param_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB)
|
||||||
|
|
||||||
|
pvt_test_SOURCES = pvt_test.cpp
|
||||||
|
|
||||||
|
relperm_test_SOURCES = relperm_test.cpp
|
||||||
|
|
||||||
sparsetable_test_SOURCES = sparsetable_test.cpp
|
sparsetable_test_SOURCES = sparsetable_test.cpp
|
||||||
sparsetable_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB)
|
sparsetable_test_LDADD = $(LDADD) $(BOOST_UNIT_TEST_FRAMEWORK_LIB)
|
||||||
|
|
||||||
@ -56,12 +60,6 @@ test_writeVtkData_SOURCES = test_writeVtkData.cpp
|
|||||||
|
|
||||||
unit_test_SOURCES = unit_test.cpp
|
unit_test_SOURCES = unit_test.cpp
|
||||||
|
|
||||||
pvt_test_SOURCES = pvt_test.cpp
|
|
||||||
pvt_test_LDADD = $(LDADD)
|
|
||||||
|
|
||||||
relperm_test_SOURCES = relperm_test.cpp
|
|
||||||
relperm_test_LDADD = $(LDADD)
|
|
||||||
|
|
||||||
|
|
||||||
if UMFPACK
|
if UMFPACK
|
||||||
noinst_PROGRAMS += test_cfs_tpfa
|
noinst_PROGRAMS += test_cfs_tpfa
|
||||||
|
@ -112,29 +112,29 @@ int main(int argc, char** argv)
|
|||||||
double A[max_np*max_np*n];
|
double A[max_np*max_np*n];
|
||||||
double dA[max_np*max_np*n];
|
double dA[max_np*max_np*n];
|
||||||
props.matrix(n, p, z, cells, A, dA);
|
props.matrix(n, p, z, cells, A, dA);
|
||||||
std::copy(A, A + np*np, std::ostream_iterator<double>(aos, " "));
|
std::copy(A, A + np*np*n, std::ostream_iterator<double>(aos, " "));
|
||||||
std::copy(dA, dA + np*np, std::ostream_iterator<double>(aos, " "));
|
std::copy(dA, dA + np*np*n, std::ostream_iterator<double>(aos, " "));
|
||||||
aos << std::endl;
|
aos << std::endl;
|
||||||
double mu[max_np];
|
double mu[max_np];
|
||||||
//double dmu[max_np];//not implemented
|
//double dmu[max_np];//not implemented
|
||||||
props.viscosity(n, p, z, cells, mu, 0);
|
props.viscosity(n, p, z, cells, mu, 0);
|
||||||
std::copy(mu, mu + np, std::ostream_iterator<double>(muos, " "));
|
std::copy(mu, mu + np*n, std::ostream_iterator<double>(muos, " "));
|
||||||
//std::copy(dmu, dmu + np, std::ostream_iterator<double>(muos, " "));
|
//std::copy(dmu, dmu + np*n, std::ostream_iterator<double>(muos, " "));
|
||||||
aos << std::endl;
|
aos << std::endl;
|
||||||
|
|
||||||
double b[max_np];
|
double b[max_np];
|
||||||
double dbdp[max_np];
|
double dbdp[max_np];
|
||||||
pvt.dBdp(n, p, z, b, dbdp);
|
pvt.dBdp(n, p, z, b, dbdp);
|
||||||
std::copy(b, b + np, std::ostream_iterator<double>(bos, " "));
|
std::copy(b, b + np*n, std::ostream_iterator<double>(bos, " "));
|
||||||
std::copy(dbdp, dbdp + np, std::ostream_iterator<double>(bos, " "));
|
std::copy(dbdp, dbdp + np*n, std::ostream_iterator<double>(bos, " "));
|
||||||
bos << std::endl;
|
bos << std::endl;
|
||||||
|
|
||||||
double rs[max_np];
|
double rs[max_np];
|
||||||
double drs[max_np];
|
double drs[max_np];
|
||||||
//pvt.R(n, p, z, rs);
|
//pvt.R(n, p, z, rs);
|
||||||
pvt.dRdp(n, p, z, rs,drs);
|
pvt.dRdp(n, p, z, rs,drs);
|
||||||
std::copy(rs, rs + np, std::ostream_iterator<double>(rsos, " "));
|
std::copy(rs, rs + np*n, std::ostream_iterator<double>(rsos, " "));
|
||||||
std::copy(drs, drs + np, std::ostream_iterator<double>(rsos, " "));
|
std::copy(drs, drs + np*n, std::ostream_iterator<double>(rsos, " "));
|
||||||
rsos << std::endl;
|
rsos << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user