Corrected typing pointed out by atgeirr in respose to pullrequest

This commit is contained in:
Halvor Møll Nilsen 2012-08-24 12:52:41 +02:00
parent bf082c57b6
commit fd0d060ed8
3 changed files with 60 additions and 53 deletions

View File

@ -132,10 +132,11 @@ namespace Opm
return pimpl_->run(timer, state, well_state); return pimpl_->run(timer, state, well_state);
} }
static void reportVolumes(std::ostream &os,double satvol[2],double tot_porevol_init, static void reportVolumes(std::ostream &os,double satvol[2],double tot_porevol_init,
double tot_injected[2],double tot_produced[2], double tot_injected[2], double tot_produced[2],
double injected[2], double produced[2], double injected[2], double produced[2],
double init_satvol[2]){ double init_satvol[2])
{
std::cout.precision(5); std::cout.precision(5);
const int width = 18; const int width = 18;
os << "\nVolume balance report (all numbers relative to total pore volume).\n"; os << "\nVolume balance report (all numbers relative to total pore volume).\n";
@ -174,10 +175,10 @@ namespace Opm
vtkfilename << output_dir << "/vtk_files"; vtkfilename << output_dir << "/vtk_files";
boost::filesystem::path fpath(vtkfilename.str()); boost::filesystem::path fpath(vtkfilename.str());
try { try {
create_directories(fpath); create_directories(fpath);
} }
catch (...) { catch (...) {
THROW("Creating directories failed: " << fpath); THROW("Creating directories failed: " << fpath);
} }
vtkfilename << "/" << std::setw(3) << std::setfill('0') << step << ".vtu"; vtkfilename << "/" << std::setw(3) << std::setfill('0') << step << ".vtu";
std::ofstream vtkfile(vtkfilename.str().c_str()); std::ofstream vtkfile(vtkfilename.str().c_str());
@ -193,47 +194,47 @@ namespace Opm
Opm::writeVtkData(grid, dm, vtkfile); Opm::writeVtkData(grid, dm, vtkfile);
} }
static void outputVectorMatlab(const std::string name, static void outputVectorMatlab(const std::string name,
const std::vector<int> vec, const std::vector<int>& vec,
const int step, const int step,
const std::string& output_dir) const std::string& output_dir)
{ {
std::ostringstream fname; std::ostringstream fname;
fname << output_dir << "/" << name; fname << output_dir << "/" << name;
boost::filesystem::path fpath = fname.str(); boost::filesystem::path fpath = fname.str();
try { try {
create_directories(fpath); create_directories(fpath);
} }
catch (...) { catch (...) {
THROW("Creating directories failed: " << fpath); THROW("Creating directories failed: " << fpath);
} }
fname << "/" << std::setw(3) << std::setfill('0') << step << ".txt"; fname << "/" << std::setw(3) << std::setfill('0') << step << ".txt";
std::ofstream file(fname.str().c_str()); std::ofstream file(fname.str().c_str());
if (!file) { if (!file) {
THROW("Failed to open " << fname.str()); THROW("Failed to open " << fname.str());
} }
std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(file, "\n")); std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(file, "\n"));
} }
static void outputVectorMatlab(const std::string name, static void outputVectorMatlab(const std::string name,
const std::vector<double> vec, const std::vector<double> vec,
const int step, const int step,
const std::string& output_dir) const std::string& output_dir)
{ {
std::ostringstream fname; std::ostringstream fname;
fname << output_dir << "/" << name; fname << output_dir << "/" << name;
boost::filesystem::path fpath = fname.str(); boost::filesystem::path fpath = fname.str();
try { try {
create_directories(fpath); create_directories(fpath);
} }
catch (...) { catch (...) {
THROW("Creating directories failed: " << fpath); THROW("Creating directories failed: " << fpath);
} }
fname << "/" << std::setw(3) << std::setfill('0') << step << ".txt"; fname << "/" << std::setw(3) << std::setfill('0') << step << ".txt";
std::ofstream file(fname.str().c_str()); std::ofstream file(fname.str().c_str());
if (!file) { if (!file) {
THROW("Failed to open " << fname.str()); THROW("Failed to open " << fname.str());
} }
std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(file, "\n")); std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(file, "\n"));
} }
@ -255,10 +256,10 @@ namespace Opm
fname << output_dir << "/" << it->first; fname << output_dir << "/" << it->first;
boost::filesystem::path fpath = fname.str(); boost::filesystem::path fpath = fname.str();
try { try {
create_directories(fpath); create_directories(fpath);
} }
catch (...) { catch (...) {
THROW("Creating directories failed: " << fpath); THROW("Creating directories failed: " << fpath);
} }
fname << "/" << std::setw(3) << std::setfill('0') << step << ".txt"; fname << "/" << std::setw(3) << std::setfill('0') << step << ".txt";
std::ofstream file(fname.str().c_str()); std::ofstream file(fname.str().c_str());
@ -543,18 +544,18 @@ namespace Opm
} }
for (int tr_substep = 0; tr_substep < num_transport_substeps_; ++tr_substep) { for (int tr_substep = 0; tr_substep < num_transport_substeps_; ++tr_substep) {
tsolver_.solve(&state.faceflux()[0], &porevol[0], &transport_src[0], tsolver_.solve(&state.faceflux()[0], &porevol[0], &transport_src[0],
stepsize, state.saturation()); stepsize, state.saturation());
Opm::computeInjectedProduced(props_, state.saturation(), transport_src, stepsize, injected, produced); Opm::computeInjectedProduced(props_, state.saturation(), transport_src, stepsize, injected, produced);
if (use_segregation_split_) { if (use_segregation_split_) {
tsolver_.solveGravity(columns_, &porevol[0], stepsize, state.saturation()); tsolver_.solveGravity(columns_, &porevol[0], stepsize, state.saturation());
} }
watercut.push(timer.currentTime() + timer.currentStepLength(), watercut.push(timer.currentTime() + timer.currentStepLength(),
produced[0]/(produced[0] + produced[1]), produced[0]/(produced[0] + produced[1]),
tot_produced[0]/tot_porevol_init); tot_produced[0]/tot_porevol_init);
if (wells_) { if (wells_) {
wellreport.push(props_, *wells_, state.saturation(), wellreport.push(props_, *wells_, state.saturation(),
timer.currentTime() + timer.currentStepLength(), timer.currentTime() + timer.currentStepLength(),
well_state.bhp(), well_state.perfRates()); well_state.bhp(), well_state.perfRates());
} }
} }
transport_timer.stop(); transport_timer.stop();

View File

@ -171,7 +171,7 @@ namespace Opm
// if (std::fabs(r0) < tol_) { // if (std::fabs(r0) < tol_) {
// return; // return;
// } // }
int iters_used=0; int iters_used = 0;
// saturation_[cell] = modifiedRegulaFalsi(res, smin_[2*cell], smax_[2*cell], maxit_, tol_, iters_used); // saturation_[cell] = modifiedRegulaFalsi(res, smin_[2*cell], smax_[2*cell], maxit_, tol_, iters_used);
saturation_[cell] = RootFinder::solve(res, saturation_[cell], 0.0, 1.0, maxit_, tol_, iters_used); saturation_[cell] = RootFinder::solve(res, saturation_[cell], 0.0, 1.0, maxit_, tol_, iters_used);
// add if it is iteration on an out loop // add if it is iteration on an out loop
@ -547,7 +547,7 @@ namespace Opm
const int cell = cells[pos]; const int cell = cells[pos];
GravityResidual res(*this, cells, pos, gravflux); GravityResidual res(*this, cells, pos, gravflux);
if (std::fabs(res(saturation_[cell])) > tol_) { if (std::fabs(res(saturation_[cell])) > tol_) {
int iters_used=0; int iters_used = 0;
saturation_[cell] = RootFinder::solve(res, smin_[2*cell], smax_[2*cell], maxit_, tol_, iters_used); saturation_[cell] = RootFinder::solve(res, smin_[2*cell], smax_[2*cell], maxit_, tol_, iters_used);
reorder_iterations_[cell] = reorder_iterations_[cell] + iters_used; reorder_iterations_[cell] = reorder_iterations_[cell] + iters_used;
} }
@ -645,6 +645,10 @@ namespace Opm
toBothSat(saturation_, saturation); toBothSat(saturation_, saturation);
} }
void TransportModelTwophase::getReorderIterations()
{
return reorder_iterations_;
};
} // namespace Opm } // namespace Opm

View File

@ -74,7 +74,9 @@ namespace Opm
const double* porevolume, const double* porevolume,
const double dt, const double dt,
std::vector<double>& saturation); std::vector<double>& saturation);
void reportIterations(std::ostream &os); //// Return reorder iterations
////
//// \param[out] vector of iteration per cell
const std::vector<int>& getReorderIterations(){return reorder_iterations_;}; const std::vector<int>& getReorderIterations(){return reorder_iterations_;};
private: private:
virtual void solveSingleCell(const int cell); virtual void solveSingleCell(const int cell);