summaryrefslogtreecommitdiff
path: root/Utilib/src/common.h
diff options
context:
space:
mode:
authorstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
committerstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
commit7dfcc480ba1e19bd3232349fc733caef94034292 (patch)
tree03ee104eb8846d5cc1a981d267687a729185d3f3 /Utilib/src/common.h
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Utilib/src/common.h')
-rw-r--r--Utilib/src/common.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/Utilib/src/common.h b/Utilib/src/common.h
new file mode 100644
index 0000000..89afe12
--- /dev/null
+++ b/Utilib/src/common.h
@@ -0,0 +1,90 @@
+#ifndef FREESTEAM_COMMON_H
+#define FREESTEAM_COMMON_H
+
+#include "config.h"
+
+#define FREESTEAM_CHAR int
+
+/*
+ ASCEND code in base/generic only EXPORTS symbols, no imports.
+ The FREESTEAM_DLLSPEC macro will, depending on whether we are
+ FREESTEAM_BUILDING_LIBASCEND (building libascend.so aka ascend.dll)
+ or FREESTEAM_BUILDING_INTERFACE (building for example _ascpy.dll or
+ ascendtcl.dll), act respectively to declare symbols as being
+ *exported* or *imported*.
+
+ New versions of GCC are able to make use of these declarations
+ as well.
+*/
+#ifdef __WIN32__
+# define FREESTEAM_EXPORT __declspec(dllexport)
+# define FREESTEAM_IMPORT __declspec(dllimport)
+#else
+# ifdef HAVE_GCCVISIBILITY
+# define FREESTEAM_EXPORT __attribute__ ((visibility("default")))
+# define FREESTEAM_IMPORT
+# else
+# define FREESTEAM_EXPORT
+# define FREESTEAM_IMPORT
+# endif
+#endif
+
+#ifdef FREESTEAM_BUILDING_LIB
+# define FREESTEAM_DLL extern FREESTEAM_EXPORT
+#else
+# define FREESTEAM_DLL extern FREESTEAM_IMPORT
+#endif
+
+#if !defined(FREESTEAM_DLL) || !defined(FREESTEAM_EXPORT) || !defined(FREESTEAM_IMPORT)
+# error "NO FREESTEAM_DLL DEFINED"
+#endif
+
+/* Constants used throughout IAPWS-IF97 */
+
+#define IAPWS97_PMAX 100e6 /* Pa */
+#define IAPWS97_TMIN 273.15 /* K */
+#define IAPWS97_TMAX 1073.15 /* K */
+
+#define IAPWS97_TCRIT 647.096 /* K */
+#define IAPWS97_PCRIT 22.064e6 /* Pa */
+#define IAPWS97_RHOCRIT 322. /* kg/m3 */
+
+#define IAPWS97_PTRIPLE 611.657 /* Pa */
+
+#define IAPWS97_R 461.526 /* J/kgK */
+
+#ifndef __GNUC__
+# define __func__ "<function>"
+#endif
+
+#ifdef IAPWS97_WARN_APPROX
+# define IAPWS97_APPROXIMATE \
+ static char _warn_approx=0; \
+ if(!_warn_approx){ \
+ _warn_approx = 1; \
+ fprintf(stderr \
+ ,"WARNING: %s (%s:%d): backwards or approximation function used!\n" \
+ ,__func__,__FILE__,__LINE__ \
+ ); \
+ }
+#else
+# define IAPWS97_APPROXIMATE
+#endif
+
+#define SQ(X) ((X)*(X))
+
+/* Basic math routines, if necesary... */
+
+FREESTEAM_DLL double freesteam_ipow(double x, int n);
+
+#ifdef FREESTEAM_BUILDING_LIB
+/* our local ipow implementation */
+# define ipow freesteam_ipow
+/* 'isnan' function for use with Windows */
+# ifdef WIN32
+# include <float.h>
+# define isnan _isnan
+# endif
+#endif
+
+#endif /* FREESTEAM_COMMON_H */