Skip to content
Snippets Groups Projects
Commit 3cda61ee authored by Andreas Lauser's avatar Andreas Lauser
Browse files

tabulated component: print the warnings only once

(also only print something if not compiled with NDEBUG)

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@4452 2fb0f335-1f38-0410-981e-8018bf24f1b0
parent 740f126f
No related branches found
No related tags found
No related merge requests found
...@@ -67,6 +67,10 @@ public: ...@@ -67,6 +67,10 @@ public:
static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp, static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp,
Scalar pressMin, Scalar pressMax, unsigned nPress) Scalar pressMin, Scalar pressMax, unsigned nPress)
{ {
#ifndef NDEBUG
initialized_ = true;
warningPrinted_ = false;
#endif
tempMin_ = tempMin; tempMin_ = tempMin;
tempMax_ = tempMax; tempMax_ = tempMax;
nTemp_ = nTemp; nTemp_ = nTemp;
...@@ -250,8 +254,7 @@ public: ...@@ -250,8 +254,7 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("gasEnthalpy", temperature, pressure);
std::cerr << "forward gasEnthalpy("<<temperature<<", "<<pressure<<")\n";
return RawComponent::gasEnthalpy(temperature, pressure); return RawComponent::gasEnthalpy(temperature, pressure);
} }
return result; return result;
...@@ -269,8 +272,7 @@ public: ...@@ -269,8 +272,7 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("liquidEnthalpy", temperature, pressure);
std::cerr << "forward liquidEnthalpy("<<temperature<<", "<<pressure<<")\n";
return RawComponent::liquidEnthalpy(temperature, pressure); return RawComponent::liquidEnthalpy(temperature, pressure);
} }
return result; return result;
...@@ -288,8 +290,7 @@ public: ...@@ -288,8 +290,7 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("gasInternalEnergy", temperature, pressure);
std::cerr << "forward gasInternalEnergy("<<temperature<<", "<<pressure<<")\n";
return RawComponent::gasInternalEnergy(temperature, pressure); return RawComponent::gasInternalEnergy(temperature, pressure);
} }
return result; return result;
...@@ -307,8 +308,7 @@ public: ...@@ -307,8 +308,7 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("liquidInternalEnergy", temperature, pressure);
std::cerr << "forward liquidInternalEnergy("<<temperature<<", "<<pressure<<")\n";
return RawComponent::liquidInternalEnergy(temperature, pressure); return RawComponent::liquidInternalEnergy(temperature, pressure);
} }
return result; return result;
...@@ -327,8 +327,7 @@ public: ...@@ -327,8 +327,7 @@ public:
temperature, temperature,
density); density);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("gasPressure", temperature, density);
std::cerr << "forward gasPressure("<<temperature<<", "<<density<<")\n";
return RawComponent::gasPressure(temperature, return RawComponent::gasPressure(temperature,
density); density);
} }
...@@ -347,8 +346,7 @@ public: ...@@ -347,8 +346,7 @@ public:
temperature, temperature,
density); density);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("liquidPressure", temperature, density);
std::cerr << "forward liquidPressure("<<temperature<<", "<<density<<")\n";
return RawComponent::liquidPressure(temperature, return RawComponent::liquidPressure(temperature,
density); density);
} }
...@@ -368,8 +366,7 @@ public: ...@@ -368,8 +366,7 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("gasDensity", temperature, pressure);
std::cerr << "forward gasDensity("<<temperature<<", "<<pressure<<")\n";
return RawComponent::gasDensity(temperature, pressure); return RawComponent::gasDensity(temperature, pressure);
} }
return result; return result;
...@@ -388,8 +385,7 @@ public: ...@@ -388,8 +385,7 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("liquidDensity", temperature, pressure);
std::cerr << "forward liquidDensity("<<temperature<<", "<<pressure<<")\n";
return RawComponent::liquidDensity(temperature, pressure); return RawComponent::liquidDensity(temperature, pressure);
} }
return result; return result;
...@@ -407,8 +403,7 @@ public: ...@@ -407,8 +403,7 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("gasViscosity", temperature, pressure);
std::cerr << "forward gasViscosity("<<temperature<<", "<<pressure<<")\n";
return RawComponent::gasViscosity(temperature, pressure); return RawComponent::gasViscosity(temperature, pressure);
} }
return result; return result;
...@@ -426,14 +421,32 @@ public: ...@@ -426,14 +421,32 @@ public:
temperature, temperature,
pressure); pressure);
if (std::isnan(result)) { if (std::isnan(result)) {
if (verbose) printWarning_("liquidViscosity",temperature, pressure);
std::cerr << "forward liquidViscosity("<<temperature<<", "<<pressure<<")\n";
return RawComponent::liquidViscosity(temperature, pressure); return RawComponent::liquidViscosity(temperature, pressure);
} }
return result; return result;
}; };
private: private:
// prints a warning if the result is not in range or the table has
// not been initialized
static void printWarning_(const char *quantity, Scalar arg1, Scalar arg2)
{
#ifndef NDEBUG
if (warningPrinted_)
return;
if (!initialized_)
std::cerr << "TABULATED COMPONENT '" << name()
<< "' WAS NOT INITIALIZED! "
<< "PLEASE CALL FluidSystem::init()\n";
else if (verbose)
std::cerr << "FORWARD METHOD CALL "<<quantity<<"("<<arg1<<", "<<arg2<<") OF COMPONENT '"<<name()<<"'. TABULATION TOO SMALL?\n";
warningPrinted_ = true;
#endif
}
// returns an interpolated value depending on temperature // returns an interpolated value depending on temperature
static Scalar interpolateT_(const Scalar *values, Scalar T) static Scalar interpolateT_(const Scalar *values, Scalar T)
{ {
...@@ -640,6 +653,13 @@ private: ...@@ -640,6 +653,13 @@ private:
{ return maxGasDensity__[tempIdx]; } { return maxGasDensity__[tempIdx]; }
#ifndef NDEBUG
// specifies whether the table was initialized
static bool initialized_;
// specifies whether some warning was printed
static bool warningPrinted_;
#endif
// 1D fields with the temperature as degree of freedom // 1D fields with the temperature as degree of freedom
static Scalar *vaporPressure_; static Scalar *vaporPressure_;
...@@ -682,6 +702,14 @@ private: ...@@ -682,6 +702,14 @@ private:
static unsigned nDensity_; static unsigned nDensity_;
}; };
#ifndef NDEBUG
template <class Scalar, class RawComponent, bool verbose>
bool TabulatedComponent<Scalar, RawComponent, verbose>::initialized_ = false;
template <class Scalar, class RawComponent, bool verbose>
bool TabulatedComponent<Scalar, RawComponent, verbose>::warningPrinted_ = false;
#endif
template <class Scalar, class RawComponent, bool verbose> template <class Scalar, class RawComponent, bool verbose>
Scalar* TabulatedComponent<Scalar, RawComponent, verbose>::vaporPressure_; Scalar* TabulatedComponent<Scalar, RawComponent, verbose>::vaporPressure_;
template <class Scalar, class RawComponent, bool verbose> template <class Scalar, class RawComponent, bool verbose>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment