initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / OpenFOAM / matrices / tolerances / tolerances.C
blob21476e27307f6b8b5adc59613d2808ab695be02f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
27 #include "tolerances.H"
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 namespace Foam
34 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
36 tolerances::tolerances(const Time& t, const fileName& dictName)
38     IOdictionary
39     (
40         IOobject
41         (
42             dictName,
43             t.system(),
44             t,
45             IOobject::MUST_READ,
46             IOobject::NO_WRITE
47         )
48     ),
49     relaxationFactors_(ITstream("relaxationFactors", tokenList())()),
50     solverTolerances_(ITstream("solverTolerances", tokenList())()),
51     solverRelativeTolerances_
52     (
53         ITstream("solverRelativeTolerances", tokenList())()
54     )
56     read();
60 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
62 bool tolerances::read()
64     if (regIOobject::read())
65     {
66         word toleranceSetName(lookup("toleranceSet"));
67         const dictionary& toleranceSet(subDict(toleranceSetName));
69         if (toleranceSet.found("relaxationFactors"))
70         {
71             relaxationFactors_ = toleranceSet.subDict("relaxationFactors");
72         }
74         if (toleranceSet.found("solverTolerances"))
75         {
76             solverTolerances_ = toleranceSet.subDict("solverTolerances");
77         }
79         if (toleranceSet.found("solverRelativeTolerances"))
80         {
81             solverRelativeTolerances_ =
82                 toleranceSet.subDict("solverRelativeTolerances");
83         }
85         return true;
86     }
87     else
88     {
89         return false;
90     }
94 bool tolerances::relax(const word& name) const
96     return relaxationFactors_.found(name);
99 scalar tolerances::relaxationFactor(const word& name) const
101     return readScalar(relaxationFactors_.lookup(name));
104 scalar tolerances::solverTolerance(const word& name) const
106     return readScalar(solverTolerances_.lookup(name));
109 bool tolerances::solverRelativeTolerances() const
111     return solverRelativeTolerances_.size();
114 scalar tolerances::solverRelativeTolerance(const word& name) const
116     return readScalar(solverRelativeTolerances_.lookup(name));
120 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 } // End namespace Foam
124 // ************************************************************************* //