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 0badf481b5
commit 74c8cc68e8
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.
const int nc = cells.size();
@ -597,7 +597,7 @@ namespace Opm
THROW("In solveGravityColumn(), we did not converge after "
<< num_iters << " iterations. Delta s = " << max_s_change);
}
// Repeat if necessary.
return num_iters + 1;
}
@ -629,11 +629,13 @@ namespace Opm
saturation_ = &saturation[0];
// Solve on all columns.
int num_iters = 0;
for (std::vector<std::vector<int> >::size_type i = 0; i < columns.second.size(); i++) {
// 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

View File

@ -52,7 +52,7 @@ namespace Opm
void solveSingleCellGravity(const std::vector<int>& cells,
const int pos,
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,
const double* porevolume,
const double dt,