From 7ff6b3c37664e554633b126a9d5180ef881964ad Mon Sep 17 00:00:00 2001 From: Kutalmis Bercin <kutalmis.bercin@esi-group.com> Date: Mon, 19 Jul 2021 12:24:24 +0100 Subject: [PATCH] ENH: linear solvers: add variable-specific debug flags Introduces a new optional keyword of label type 'log' to linear-solver dictionaries to enable variable-specific debug statements. For example, in fvOptions file: solvers { p { solver GAMG; ... log 2; } U { ... log 0; } } The meanings of values of 'log' are: log 0; <!-- no output log 1; <!-- standard output log 2; <!-- debug output // values higher than 2 are expected to have no effect This keyword makes various DebugSwitches redundant or reduces their coverage. The effected DebugSwitches are: DebugSwitches { SolverPerformance 0; GAMG 0; PCG 0; PBiCG 0; smoothSolver 0; } --- .../matrices/LduMatrix/LduMatrix/LduMatrix.H | 5 ++++- .../LduMatrix/LduMatrix/LduMatrixSolver.C | 4 +++- .../LduMatrix/LduMatrix/SolverPerformance.C | 6 ++++-- .../LduMatrix/LduMatrix/SolverPerformance.H | 4 +++- .../LduMatrix/Solvers/PBiCCCG/PBiCCCG.C | 17 +++++++++++++--- .../LduMatrix/Solvers/PBiCICG/PBiCICG.C | 20 ++++++++++++++++--- .../matrices/LduMatrix/Solvers/PCICG/PCICG.C | 17 +++++++++++++--- .../Solvers/SmoothSolver/SmoothSolver.C | 17 +++++++++++++--- .../matrices/lduMatrix/lduMatrix/lduMatrix.H | 5 ++++- .../lduMatrix/lduMatrix/lduMatrixSolver.C | 3 ++- .../lduMatrix/solvers/GAMG/GAMGSolver.C | 6 +++--- .../lduMatrix/solvers/GAMG/GAMGSolverSolve.C | 18 ++++++++--------- .../matrices/lduMatrix/solvers/PBiCG/PBiCG.C | 8 ++++---- .../lduMatrix/solvers/PBiCGStab/PBiCGStab.C | 10 +++++----- .../matrices/lduMatrix/solvers/PCG/PCG.C | 8 ++++---- .../matrices/lduMatrix/solvers/PPCG/PPCG.C | 4 ++-- .../solvers/smoothSolver/smoothSolver.C | 8 ++++---- .../fvMatrices/fvMatrix/fvMatrixSolve.C | 18 +++++++++++------ .../fvScalarMatrix/fvScalarMatrix.C | 14 +++++++++---- 19 files changed, 132 insertions(+), 60 deletions(-) diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H index bae2bd10d59..c0673eb34f7 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrix.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -134,6 +134,9 @@ public: //- Minimum number of iterations in the solver label minIter_; + //- Level of verbosity in the solver output statements + label log_; + //- Final convergence tolerance Type tolerance_; diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C index 26e0dab299c..54a5923603c 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixSolver.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -131,6 +131,7 @@ Foam::LduMatrix<Type, DType, LUType>::solver::solver maxIter_(defaultMaxIter_), minIter_(0), + log_(1), tolerance_(1e-6*pTraits<Type>::one), relTol_(Zero) { @@ -145,6 +146,7 @@ void Foam::LduMatrix<Type, DType, LUType>::solver::readControls() { readControl(controlDict_, maxIter_, "maxIter"); readControl(controlDict_, minIter_, "minIter"); + readControl(controlDict_, log_, "log"); readControl(controlDict_, tolerance_, "tolerance"); readControl(controlDict_, relTol_, "relTol"); } diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.C b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.C index e291b0289ab..cf8b0baa773 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.C +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -62,10 +63,11 @@ template<class Type> bool Foam::SolverPerformance<Type>::checkConvergence ( const Type& Tolerance, - const Type& RelTolerance + const Type& RelTolerance, + const label log ) { - if (debug >= 2) + if (log >= 2) { Info<< solverName_ << ": Iteration " << nIterations_ diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H index 9d835599ce5..476e842cb3c 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2012-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -218,7 +219,8 @@ public: bool checkConvergence ( const Type& tolerance, - const Type& relTolerance + const Type& relTolerance, + const label log ); //- Singularity test diff --git a/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.C b/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.C index f20a64a0260..ad00004447e 100644 --- a/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.C +++ b/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCCCG/PBiCCCG.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -98,7 +99,7 @@ Foam::PBiCCCG<Type, DType, LUType>::solve // --- Calculate normalisation factor Type normFactor = this->normFactor(psi, wA, pA); - if (LduMatrix<Type, DType, LUType>::debug >= 2) + if (this->log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -111,7 +112,12 @@ Foam::PBiCCCG<Type, DType, LUType>::solve if ( this->minIter_ > 0 - || !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + || !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) ) { // --- Select and construct the preconditioner @@ -192,7 +198,12 @@ Foam::PBiCCCG<Type, DType, LUType>::solve ( ( nIter++ < this->maxIter_ - && !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + && !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) ) || nIter < this->minIter_ ); diff --git a/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCICG/PBiCICG.C b/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCICG/PBiCICG.C index 5796597fac9..0495aa196ea 100644 --- a/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCICG/PBiCICG.C +++ b/src/OpenFOAM/matrices/LduMatrix/Solvers/PBiCICG/PBiCICG.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -95,7 +96,7 @@ Foam::PBiCICG<Type, DType, LUType>::solve(Field<Type>& psi) const // --- Calculate normalisation factor Type normFactor = this->normFactor(psi, wA, pA); - if (LduMatrix<Type, DType, LUType>::debug >= 2) + if (this->log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -105,7 +106,15 @@ Foam::PBiCICG<Type, DType, LUType>::solve(Field<Type>& psi) const solverPerf.finalResidual() = solverPerf.initialResidual(); // --- Check convergence, solve if not converged - if (!solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + if + ( + !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) + ) { // --- Select and construct the preconditioner autoPtr<typename LduMatrix<Type, DType, LUType>::preconditioner> @@ -192,7 +201,12 @@ Foam::PBiCICG<Type, DType, LUType>::solve(Field<Type>& psi) const } while ( nIter++ < this->maxIter_ - && !(solverPerf.checkConvergence(this->tolerance_, this->relTol_)) + && !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) ); } diff --git a/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.C b/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.C index 7adf70b392f..fe8c1b92bd4 100644 --- a/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.C +++ b/src/OpenFOAM/matrices/LduMatrix/Solvers/PCICG/PCICG.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -86,7 +87,7 @@ Foam::PCICG<Type, DType, LUType>::solve(Field<Type>& psi) const // --- Calculate normalisation factor Type normFactor = this->normFactor(psi, wA, pA); - if (LduMatrix<Type, DType, LUType>::debug >= 2) + if (this->log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -99,7 +100,12 @@ Foam::PCICG<Type, DType, LUType>::solve(Field<Type>& psi) const if ( this->minIter_ > 0 - || !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + || !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) ) { // --- Select and construct the preconditioner @@ -184,7 +190,12 @@ Foam::PCICG<Type, DType, LUType>::solve(Field<Type>& psi) const ( ( nIter++ < this->maxIter_ - && !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + && !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) ) || nIter < this->minIter_ ); diff --git a/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.C b/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.C index 9c5a5c80fd7..fa5d0528e15 100644 --- a/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.C +++ b/src/OpenFOAM/matrices/LduMatrix/Solvers/SmoothSolver/SmoothSolver.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -110,7 +111,7 @@ Foam::SmoothSolver<Type, DType, LUType>::solve(Field<Type>& psi) const solverPerf.finalResidual() = solverPerf.initialResidual(); } - if (LduMatrix<Type, DType, LUType>::debug >= 2) + if (this->log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -120,7 +121,12 @@ Foam::SmoothSolver<Type, DType, LUType>::solve(Field<Type>& psi) const if ( this->minIter_ > 0 - || !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + || !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) ) { autoPtr<typename LduMatrix<Type, DType, LUType>::smoother> @@ -150,7 +156,12 @@ Foam::SmoothSolver<Type, DType, LUType>::solve(Field<Type>& psi) const ( ( (nIter += nSweeps_) < this->maxIter_ - && !solverPerf.checkConvergence(this->tolerance_, this->relTol_) + && !solverPerf.checkConvergence + ( + this->tolerance_, + this->relTol_, + this->log_ + ) ) || nIter < this->minIter_ ); diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H index a99c4884743..7dccfeb71e1 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrix.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2016-2019 OpenCFD Ltd. + Copyright (C) 2016-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -119,6 +119,9 @@ public: //- Minimum number of iterations in the solver label minIter_; + //- Level of verbosity in the solver output statements + label log_; + //- Final convergence tolerance scalar tolerance_; diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C index d3da2cf324d..bec82972f04 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixSolver.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2016-2020 OpenCFD Ltd. + Copyright (C) 2016-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -164,6 +164,7 @@ void Foam::lduMatrix::solver::readControls() { maxIter_ = controlDict_.getOrDefault<label>("maxIter", defaultMaxIter_); minIter_ = controlDict_.getOrDefault<label>("minIter", 0); + log_ = controlDict_.getOrDefault<label>("log", 1); tolerance_ = controlDict_.getOrDefault<scalar>("tolerance", 1e-6); relTol_ = controlDict_.getOrDefault<scalar>("relTol", 0); } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C index 946ae1d49f6..43ce20eca00 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -208,8 +209,7 @@ Foam::GAMGSolver::GAMGSolver } } - - if (debug & 2) + if (log_ >= 2) { for ( @@ -368,7 +368,7 @@ void Foam::GAMGSolver::readControls() controlDict_.readIfPresent("scaleCorrection", scaleCorrection_); controlDict_.readIfPresent("directSolveCoarsest", directSolveCoarsest_); - if (debug) + if (log_ >= 2) { Info<< "GAMGSolver settings :" << " cacheAgglomeration:" << cacheAgglomeration_ diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C index a8d1dbf175e..18a844dfe99 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2016-2019 OpenCFD Ltd. + Copyright (C) 2016-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -59,7 +59,7 @@ Foam::solverPerformance Foam::GAMGSolver::solve solveScalar normFactor = this->normFactor(psi, tsource(), Apsi, finestCorrection); - if (debug >= 2) + if (log_ >= 2) { Pout<< " Normalisation factor = " << normFactor << endl; } @@ -87,7 +87,7 @@ Foam::solverPerformance Foam::GAMGSolver::solve if ( minIter_ > 0 - || !solverPerf.checkConvergence(tolerance_, relTol_) + || !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) { // Create coarse grid correction fields @@ -144,7 +144,7 @@ Foam::solverPerformance Foam::GAMGSolver::solve matrix().mesh().comm() )/normFactor; - if (debug >= 2) + if (log_ >= 2) { solverPerf.print(Info.masterStream(matrix().mesh().comm())); } @@ -152,7 +152,7 @@ Foam::solverPerformance Foam::GAMGSolver::solve ( ( ++solverPerf.nIterations() < maxIter_ - && !solverPerf.checkConvergence(tolerance_, relTol_) + && !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) || solverPerf.nIterations() < minIter_ ); @@ -193,7 +193,7 @@ void Foam::GAMGSolver::Vcycle // Restrict finest grid residual for the next level up. agglomeration_.restrictField(coarseSources[0], finestResidual, 0, true); - if (debug >= 2 && nPreSweeps_) + if (log_ >= 2 && nPreSweeps_) { Pout<< "Pre-smoothing scaling factors: "; } @@ -274,7 +274,7 @@ void Foam::GAMGSolver::Vcycle } } - if (debug >= 2 && nPreSweeps_) + if (log_ >= 2 && nPreSweeps_) { Pout<< endl; } @@ -290,7 +290,7 @@ void Foam::GAMGSolver::Vcycle ); } - if (debug >= 2) + if (log_ >= 2) { Pout<< "Post-smoothing scaling factors: "; } @@ -703,7 +703,7 @@ void Foam::GAMGSolver::solveCoarsestLevel ) ); - if (debug) + if (log_ >= 2) { coarseSolverPerf.print(Info.masterStream(coarseComm)); } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C index cba20eba933..9bcc1c7d530 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -111,7 +111,7 @@ Foam::solverPerformance Foam::PBiCG::solve // --- Calculate normalisation factor const solveScalar normFactor = this->normFactor(psi, tsource(), wA, pA); - if (lduMatrix::debug >= 2) + if (log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -126,7 +126,7 @@ Foam::solverPerformance Foam::PBiCG::solve if ( minIter_ > 0 - || !solverPerf.checkConvergence(tolerance_, relTol_) + || !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) { solveScalarField pT(nCells, 0); @@ -217,7 +217,7 @@ Foam::solverPerformance Foam::PBiCG::solve ( ( ++solverPerf.nIterations() < maxIter_ - && !solverPerf.checkConvergence(tolerance_, relTol_) + && !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) || solverPerf.nIterations() < minIter_ ); diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C index 086fba5c07b..e23efb876b9 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCGStab/PBiCGStab.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016-2017 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -110,7 +110,7 @@ Foam::solverPerformance Foam::PBiCGStab::scalarSolve // --- Calculate normalisation factor const solveScalar normFactor = this->normFactor(psi, source, yA, pA); - if (lduMatrix::debug >= 2) + if (log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -125,7 +125,7 @@ Foam::solverPerformance Foam::PBiCGStab::scalarSolve if ( minIter_ > 0 - || !solverPerf.checkConvergence(tolerance_, relTol_) + || !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) { solveScalarField AyA(nCells); @@ -219,7 +219,7 @@ Foam::solverPerformance Foam::PBiCGStab::scalarSolve if ( solverPerf.nIterations() >= minIter_ - && solverPerf.checkConvergence(tolerance_, relTol_) + && solverPerf.checkConvergence(tolerance_, relTol_, log_) ) { for (label cell=0; cell<nCells; cell++) @@ -258,7 +258,7 @@ Foam::solverPerformance Foam::PBiCGStab::scalarSolve ( ( ++solverPerf.nIterations() < maxIter_ - && !solverPerf.checkConvergence(tolerance_, relTol_) + && !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) || solverPerf.nIterations() < minIter_ ); diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C index 2b34a6aad37..de3ef3fae72 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -110,7 +110,7 @@ Foam::solverPerformance Foam::PCG::scalarSolve // --- Calculate normalisation factor solveScalar normFactor = this->normFactor(psi, source, wA, pA); - if (lduMatrix::debug >= 2) + if (log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -125,7 +125,7 @@ Foam::solverPerformance Foam::PCG::scalarSolve if ( minIter_ > 0 - || !solverPerf.checkConvergence(tolerance_, relTol_) + || !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) { // --- Select and construct the preconditioner @@ -193,7 +193,7 @@ Foam::solverPerformance Foam::PCG::scalarSolve ( ( ++solverPerf.nIterations() < maxIter_ - && !solverPerf.checkConvergence(tolerance_, relTol_) + && !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) || solverPerf.nIterations() < minIter_ ); diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PPCG/PPCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PPCG/PPCG.C index d231a2daac6..5189cfc3977 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/PPCG/PPCG.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PPCG/PPCG.C @@ -107,7 +107,7 @@ Foam::solverPerformance Foam::PPCG::scalarSolveCG solveScalarField p(nCells); const solveScalar normFactor = this->normFactor(psi, source, w, p); - if (lduMatrix::debug >= 2) + if (log_ >= 2) { Info<< " Normalisation factor = " << normFactor << endl; } @@ -190,7 +190,7 @@ Foam::solverPerformance Foam::PPCG::scalarSolveCG if ( (minIter_ <= 0 || solverPerf.nIterations() >= minIter_) - && solverPerf.checkConvergence(tolerance_, relTol_) + && solverPerf.checkConvergence(tolerance_, relTol_, log_) ) { break; diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C b/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C index 78e6a7c62d8..68b0389b973 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/smoothSolver/smoothSolver.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2014 OpenFOAM Foundation - Copyright (C) 2016-2020 OpenCFD Ltd. + Copyright (C) 2016-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -149,7 +149,7 @@ Foam::solverPerformance Foam::smoothSolver::solve solverPerf.finalResidual() = solverPerf.initialResidual(); } - if (lduMatrix::debug >= 2) + if (log_ >= 2) { Info.masterStream(matrix().mesh().comm()) << " Normalisation factor = " << normFactor << endl; @@ -160,7 +160,7 @@ Foam::solverPerformance Foam::smoothSolver::solve if ( minIter_ > 0 - || !solverPerf.checkConvergence(tolerance_, relTol_) + || !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) { addProfiling(solve, "lduMatrix::smoother." + fieldName_); @@ -203,7 +203,7 @@ Foam::solverPerformance Foam::smoothSolver::solve ( ( (solverPerf.nIterations() += nSweeps_) < maxIter_ - && !solverPerf.checkConvergence(tolerance_, relTol_) + && !solverPerf.checkConvergence(tolerance_, relTol_, log_) ) || solverPerf.nIterations() < minIter_ ); diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C index dcc77cfd3c8..987f89e52bc 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2016-2020 OpenCFD Ltd. + Copyright (C) 2016-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -70,7 +70,9 @@ Foam::SolverPerformance<Type> Foam::fvMatrix<Type>::solveSegregatedOrCoupled } addProfiling(solve, "fvMatrix::solve." + regionName + psi_.name()); - if (debug) + const label log = solverControls.getOrDefault<label>("log", 1); + + if (log >= 2) { Info.masterStream(this->mesh().comm()) << "fvMatrix<Type>::solveSegregatedOrCoupled" @@ -116,7 +118,9 @@ Foam::SolverPerformance<Type> Foam::fvMatrix<Type>::solveSegregated const dictionary& solverControls ) { - if (debug) + const label log = solverControls.getOrDefault<label>("log", 1); + + if (log >= 2) { Info.masterStream(this->mesh().comm()) << "fvMatrix<Type>::solveSegregated" @@ -216,7 +220,7 @@ Foam::SolverPerformance<Type> Foam::fvMatrix<Type>::solveSegregated solverControls )->solve(psiCmpt, sourceCmpt, cmpt); - if (SolverPerformance<Type>::debug) + if (log) { solverPerf.print(Info.masterStream(this->mesh().comm())); } @@ -242,7 +246,9 @@ Foam::SolverPerformance<Type> Foam::fvMatrix<Type>::solveCoupled const dictionary& solverControls ) { - if (debug) + const label log = solverControls.getOrDefault<label>("log", 1); + + if (log >= 2) { Info.masterStream(this->mesh().comm()) << "fvMatrix<Type>::solveCoupled" @@ -283,7 +289,7 @@ Foam::SolverPerformance<Type> Foam::fvMatrix<Type>::solveCoupled coupledMatrixSolver->solve(psi) ); - if (SolverPerformance<Type>::debug) + if (log) { solverPerf.print(Info.masterStream(this->mesh().comm())); } diff --git a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C index e5b1e88aa4c..d7b82ecf3da 100644 --- a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C +++ b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C @@ -71,7 +71,9 @@ Foam::fvMatrix<Foam::scalar>::solver } addProfiling(solve, "fvMatrix::solve." + regionName + psi_.name()); - if (debug) + const label log = solverControls.getOrDefault<label>("log", 1); + + if (log >= 2) { Info.masterStream(this->mesh().comm()) << "fvMatrix<scalar>::solver(const dictionary& solverControls) : " @@ -130,7 +132,9 @@ Foam::solverPerformance Foam::fvMatrix<Foam::scalar>::fvSolver::solve totalSource ); - if (solverPerformance::debug) + const label log = solverControls.getOrDefault<label>("log", 1); + + if (log) { solverPerf.print(Info.masterStream(fvMat_.mesh().comm())); } @@ -151,7 +155,9 @@ Foam::solverPerformance Foam::fvMatrix<Foam::scalar>::solveSegregated const dictionary& solverControls ) { - if (debug) + const label log = solverControls.getOrDefault<label>("log", 1); + + if (log >= 2) { Info.masterStream(this->mesh().comm()) << "fvMatrix<scalar>::solveSegregated" @@ -180,7 +186,7 @@ Foam::solverPerformance Foam::fvMatrix<Foam::scalar>::solveSegregated solverControls )->solve(psi.primitiveFieldRef(), totalSource); - if (solverPerformance::debug) + if (log) { solverPerf.print(Info.masterStream(mesh().comm())); } -- GitLab