Cantera  2.4.0
checkFinite.cpp
Go to the documentation of this file.
1 /**
2  * @file checkFinite.cpp Declarations for routines that check for the
3  * presence of NaNs in the code.
4  */
5 
6 // This file is part of Cantera. See License.txt in the top-level directory or
7 // at http://www.cantera.org/license.txt for license and copyright information.
8 
9 #include "cantera/base/ct_defs.h"
12 
13 namespace Cantera {
14 
15 void checkFinite(const double tmp)
16 {
17  if (!std::isfinite(tmp)) {
18  if (std::isnan(tmp)) {
19  throw CanteraError("checkFinite", "found NaN");
20  } else if (tmp > 0) {
21  throw CanteraError("checkFinite", "found +Inf");
22  } else {
23  throw CanteraError("checkFinite", "found -Inf");
24  }
25  }
26 }
27 
28 void checkFinite(const std::string& name, double* values, size_t N)
29 {
30  for (size_t i = 0; i < N; i++) {
31  if (!std::isfinite(values[i])) {
32  std::string message = name + " contains non-finite elements:\n\n";
33  for (size_t j = 0; j < N; j++) {
34  if (!std::isfinite(values[j])) {
35  message += fmt::format("{}[{}] = {}\n", name, j, values[j]);
36  }
37  }
38  throw CanteraError("checkFinite", message);
39  }
40  }
41 }
42 
43 }
void checkFinite(const double tmp)
Check to see that a number is finite (not NaN, +Inf or -Inf)
Definition: checkFinite.cpp:15
This file contains definitions of terms that are used in internal routines and are unlikely to need m...
Base class for exceptions thrown by Cantera classes.
Definition: ctexceptions.h:65
Contains declarations for string manipulation functions within Cantera.
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:8
Definitions for the classes that are thrown when Cantera experiences an error condition (also contain...