fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / OpenFOAM / matrices / blockLduMatrix / BlockLduSolvers / BlockLduSolver / BlockSolverPerformance.C
blob904ad340d724d2907de34cf2b6a82915b4780504
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-6 H. Jasak All rights reserved
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software; you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation; either version 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 \*---------------------------------------------------------------------------*/
27 #include "BlockSolverPerformance.H"
29 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
31 template<class Type>
32 bool Foam::BlockSolverPerformance<Type>::checkConvergence
34     const scalar Tolerance,
35     const scalar RelTolerance
38     if (BlockLduMatrix<Type>::debug >= 2)
39     {
40         Info<< solverName_
41             << ":  Iteration " << nIterations_
42             << " residual = " << finalResidual_
43             << endl;
44     }
46     if
47     (
48         mag(finalResidual_) < Tolerance
49      || (
50             RelTolerance > SMALL
51          && mag(finalResidual_) <= RelTolerance*mag(initialResidual_)
52         )
53     )
54     {
55         converged_ = true;
56     }
57     else
58     {
59         converged_ = false;
60     }
62     return converged_;
66 template<class Type>
67 bool Foam::BlockSolverPerformance<Type>::checkSingularity
69     const scalar& residual
72     if (mag(residual) > VSMALL)
73     {
74         singular_ = false;
75     }
76     else
77     {
78         singular_ = true;
79     }
81     return singular_;
85 template<class Type>
86 void Foam::BlockSolverPerformance<Type>::print() const
88     if (BlockLduMatrix<Type>::debug)
89     {
90         Info<< solverName_ << ":  Solving for " << fieldName_;
92         if (singular())
93         {
94             Info<< ":  solution singularity" << endl;
95         }
96         else
97         {
98             Info<< ", Initial residual = " << initialResidual_
99                 << ", Final residual = " << finalResidual_
100                 << ", No Iterations " << nIterations_
101                 << endl;
102         }
103     }
107 // ************************************************************************* //