Make column gravity Gauss-Seidel solver report average number of iterations.

This commit is contained in:
Atgeirr Flø Rasmussen 2012-04-19 11:46:41 +02:00
parent c8dfdecb7c
commit 74b3a40bbf
2 changed files with 7 additions and 5 deletions

View File

@ -549,7 +549,7 @@ namespace Opm
void TransportModelTwophase::solveGravityColumn(const std::vector<int>& cells) int TransportModelTwophase::solveGravityColumn(const std::vector<int>& cells)
{ {
// Set up column gravflux. // Set up column gravflux.
const int nc = cells.size(); const int nc = cells.size();
@ -597,7 +597,7 @@ namespace Opm
THROW("In solveGravityColumn(), we did not converge after " THROW("In solveGravityColumn(), we did not converge after "
<< num_iters << " iterations. Delta s = " << max_s_change); << num_iters << " iterations. Delta s = " << max_s_change);
} }
// Repeat if necessary. return num_iters + 1;
} }
@ -629,11 +629,13 @@ namespace Opm
saturation_ = &saturation[0]; saturation_ = &saturation[0];
// Solve on all columns. // Solve on all columns.
int num_iters = 0;
for (std::vector<std::vector<int> >::size_type i = 0; i < columns.second.size(); i++) { for (std::vector<std::vector<int> >::size_type i = 0; i < columns.second.size(); i++) {
// std::cout << "==== new column" << std::endl; // std::cout << "==== new column" << std::endl;
solveGravityColumn(columns.second[i]); num_iters += solveGravityColumn(columns.second[i]);
} }
std::cout << "Gauss-Seidel column solver average iterations: "
<< double(num_iters)/double(columns.second.size()) << std::endl;
} }
} // namespace Opm } // namespace Opm

View File

@ -52,7 +52,7 @@ namespace Opm
void solveSingleCellGravity(const std::vector<int>& cells, void solveSingleCellGravity(const std::vector<int>& cells,
const int pos, const int pos,
const double* gravflux); const double* gravflux);
void solveGravityColumn(const std::vector<int>& cells); int solveGravityColumn(const std::vector<int>& cells);
void solveGravity(const std::pair<std::vector<int>, std::vector<std::vector<int> > >& columns, void solveGravity(const std::pair<std::vector<int>, std::vector<std::vector<int> > >& columns,
const double* porevolume, const double* porevolume,
const double dt, const double dt,