From 74b3a40bbf1b6e78778f6830a2daa5611f566bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Thu, 19 Apr 2012 11:46:41 +0200 Subject: [PATCH] Make column gravity Gauss-Seidel solver report average number of iterations. --- opm/core/transport/reorder/TransportModelTwophase.cpp | 10 ++++++---- opm/core/transport/reorder/TransportModelTwophase.hpp | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/opm/core/transport/reorder/TransportModelTwophase.cpp b/opm/core/transport/reorder/TransportModelTwophase.cpp index 33a91905a..d52becc9b 100644 --- a/opm/core/transport/reorder/TransportModelTwophase.cpp +++ b/opm/core/transport/reorder/TransportModelTwophase.cpp @@ -549,7 +549,7 @@ namespace Opm - void TransportModelTwophase::solveGravityColumn(const std::vector& cells) + int TransportModelTwophase::solveGravityColumn(const std::vector& 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 >::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 diff --git a/opm/core/transport/reorder/TransportModelTwophase.hpp b/opm/core/transport/reorder/TransportModelTwophase.hpp index 957a58f2c..ba1062d69 100644 --- a/opm/core/transport/reorder/TransportModelTwophase.hpp +++ b/opm/core/transport/reorder/TransportModelTwophase.hpp @@ -52,7 +52,7 @@ namespace Opm void solveSingleCellGravity(const std::vector& cells, const int pos, const double* gravflux); - void solveGravityColumn(const std::vector& cells); + int solveGravityColumn(const std::vector& cells); void solveGravity(const std::pair, std::vector > >& columns, const double* porevolume, const double dt,