Update surface volume in transport solver.

This commit is contained in:
Xavier Raynaud 2012-09-03 12:52:25 +02:00
parent 708c56bb94
commit 8bf900f1bf
3 changed files with 12 additions and 4 deletions

View File

@ -332,15 +332,18 @@ namespace Opm
std::cout << "Making " << num_transport_substeps_ << " transport substeps." << std::endl;
}
for (int tr_substep = 0; tr_substep < num_transport_substeps_; ++tr_substep) {
tsolver_.solve(&state.faceflux()[0], initial_pressure,
tsolver_.solve(&state.faceflux()[0], initial_pressure,
state.pressure(), &transport_src[0], stepsize, inflow_c,
state.saturation(), state.concentration(), state.maxconcentration());
state.saturation(), state.surfacevol(),
state.concentration(), state.maxconcentration());
// Computeinjectedproduced function does not take into account polymer.
Opm::computeInjectedProduced(props_,
state.pressure(), state.surfacevol(), state.saturation(),
transport_src, stepsize, injected, produced);
if (use_segregation_split_) {
tsolver_.solveGravity(columns_, stepsize,
state.saturation(), state.concentration(),
state.saturation(), state.concentration(),
state.maxconcentration());
}
}
@ -404,7 +407,7 @@ namespace Opm
tot_produced[0]/tot_porevol_init);
if (wells_) {
wellreport.push(props_, *wells_, state.pressure(), state.surfacevol(),
state.saturation(), timer.currentTime() + timer.currentStepLength(),
state.saturation(), timer.currentTime() + timer.currentStepLength(),
well_state.bhp(), well_state.perfRates());
}
}

View File

@ -24,6 +24,7 @@
#include <opm/core/transport/reorder/reordersequence.h>
#include <opm/core/utility/RootFinders.hpp>
#include <opm/core/utility/miscUtilities.hpp>
#include <opm/core/utility/miscUtilitiesBlackoil.hpp>
#include <opm/core/pressure/tpfa/trans_tpfa.h>
#include <cmath>
#include <list>
@ -208,6 +209,7 @@ namespace Opm
const double dt,
const double inflow_c,
std::vector<double>& saturation,
std::vector<double>& surfacevol,
std::vector<double>& concentration,
std::vector<double>& cmax)
{
@ -248,6 +250,8 @@ namespace Opm
reorderAndTransport(grid_, darcyflux);
toBothSat(saturation_, saturation);
// Compute surface volume as a postprocessing step from saturation and A_
computeSurfacevol(grid_.number_of_cells, props_.numPhases(), &A_[0], &saturation[0], &surfacevol[0]);
}

View File

@ -89,6 +89,7 @@ namespace Opm
const double dt,
const double inflow_c,
std::vector<double>& saturation,
std::vector<double>& surfacevol,
std::vector<double>& concentration,
std::vector<double>& cmax);