Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <OpenFOAM/tolerances.H>
00027
00028
00029
00030 namespace Foam
00031 {
00032
00033
00034
00035 tolerances::tolerances(const Time& t, const fileName& dictName)
00036 :
00037 IOdictionary
00038 (
00039 IOobject
00040 (
00041 dictName,
00042 t.system(),
00043 t,
00044 IOobject::MUST_READ,
00045 IOobject::NO_WRITE
00046 )
00047 ),
00048 relaxationFactors_(ITstream("relaxationFactors", tokenList())()),
00049 solverTolerances_(ITstream("solverTolerances", tokenList())()),
00050 solverRelativeTolerances_
00051 (
00052 ITstream("solverRelativeTolerances", tokenList())()
00053 )
00054 {
00055 read();
00056 }
00057
00058
00059
00060
00061 bool tolerances::read()
00062 {
00063 if (regIOobject::read())
00064 {
00065 word toleranceSetName(lookup("toleranceSet"));
00066 const dictionary& toleranceSet(subDict(toleranceSetName));
00067
00068 if (toleranceSet.found("relaxationFactors"))
00069 {
00070 relaxationFactors_ = toleranceSet.subDict("relaxationFactors");
00071 }
00072
00073 if (toleranceSet.found("solverTolerances"))
00074 {
00075 solverTolerances_ = toleranceSet.subDict("solverTolerances");
00076 }
00077
00078 if (toleranceSet.found("solverRelativeTolerances"))
00079 {
00080 solverRelativeTolerances_ =
00081 toleranceSet.subDict("solverRelativeTolerances");
00082 }
00083
00084 return true;
00085 }
00086 else
00087 {
00088 return false;
00089 }
00090 }
00091
00092
00093 bool tolerances::relax(const word& name) const
00094 {
00095 return relaxationFactors_.found(name);
00096 }
00097
00098 scalar tolerances::relaxationFactor(const word& name) const
00099 {
00100 return readScalar(relaxationFactors_.lookup(name));
00101 }
00102
00103 scalar tolerances::solverTolerance(const word& name) const
00104 {
00105 return readScalar(solverTolerances_.lookup(name));
00106 }
00107
00108 bool tolerances::solverRelativeTolerances() const
00109 {
00110 return solverRelativeTolerances_.size();
00111 }
00112
00113 scalar tolerances::solverRelativeTolerance(const word& name) const
00114 {
00115 return readScalar(solverRelativeTolerances_.lookup(name));
00116 }
00117
00118
00119
00120
00121 }
00122
00123