Added constants, assert

This commit is contained in:
J.A. de Jong @ vulgaris 2016-11-13 15:56:35 +01:00
parent b1495f4e12
commit 6ce400c7e2
5 changed files with 158 additions and 2 deletions

View File

@ -13,7 +13,7 @@ add_definitions(-DTRACER=1)
# add_definitions(-DTRACER_IN_COMMON) # add_definitions(-DTRACER_IN_COMMON)
add_definitions(-DTASMET_FLOAT=64) add_definitions(-DTASMET_FLOAT=64)
add_definitions(-DTASMET_DEBUG=1)
#==================================================== #====================================================
# Compiler settings ************************************************ # Compiler settings ************************************************
#==================================================== #====================================================

View File

@ -32,7 +32,7 @@ add_subdirectory(material)
# add_subdirectory(sys) # add_subdirectory(sys)
# add_subdirectory(var) # add_subdirectory(var)
add_library(tasmet_src tasmet_tracer.cpp tasmet_exception.cpp) add_library(tasmet_src tasmet_tracer.cpp tasmet_exception.cpp tasmet_assert.cpp)
target_link_libraries(tasmet_src target_link_libraries(tasmet_src
# duct # duct
# mech # mech

22
src/tasmet_assert.cpp Normal file
View File

@ -0,0 +1,22 @@
// tasmet_assert.cpp
//
// last-edit-by: J.A. de Jong
//
// Description:
//
//////////////////////////////////////////////////////////////////////
#include "tasmet_assert.h"
#if TASMET_DEBUG == 1
#include <cassert>
void tasmet_assertfailed(const char* filename,size_t linenr,const char* statement) {
cout << "ASSERT: file " << filename << ", line " << linenr <<". " << statement << endl;
assert(false);
}
#endif
//////////////////////////////////////////////////////////////////////

37
src/tasmet_assert.h Normal file
View File

@ -0,0 +1,37 @@
// tasmet_assert.h
//
// Author: J.A. de Jong
//
// Description:
// Implementation of asserts
//////////////////////////////////////////////////////////////////////
#pragma once
#ifndef TASMET_ASSERT_H
#define TASMET_ASSERT_H
#ifndef TASMET_DEBUG
#include <type_traits>
static_assert(false, "TASMET_DEBUG macro not defined. Please set it to 1 or 0");
#endif
#if TASMET_DEBUG == 1
#include <cassert>
#include "tasmet_io.h"
void tasmet_assertfailed(const char* filename,size_t linenr,const char* statement);
#define tasmet_assert(assertion,txt) \
if (!(assertion)) \
{ \
tasmet_assertfailed(__FILE__, __LINE__, txt ); \
} \
} \
#else
#define tasmet_assert(assertion,txt)
#endif
#endif // TASMET_ASSERT_H
//////////////////////////////////////////////////////////////////////

97
src/tasmet_constants.h Normal file
View File

@ -0,0 +1,97 @@
// constants.h
//
// Author: J.A. de Jong
//
// Description:
// Definition of important constants
//////////////////////////////////////////////////////////////////////
#pragma once
#ifndef CONSTANTS_H
#define CONSTANTS_H
#include "tasmet_enum.h"
#include "tasmet_types.h"
template<typename T>
T max(T t1,T t2) { return t1>t2?t1:t2;}
template<typename T>
T min(T t1,T t2) { return t1>t2?t2:t1;}
// Variables and their names
// Unfortunately to let the code compile with Swig v 2.0, strongly
// typed enums are not supported. Therefore this is a normal
// enumerated type and not an enum class.
DECLARE_ENUM(Varnr,
none, // None
rho, // Density
m, // Mass flow (rho*U)
T, // Temperature
p, // Pressure
Ts, // Temperature of the solid
Tw, // Temperature of the solid wall
mH, // Enthalpy flow (Watts)
U, // Volume flow (m^3/s)
u, // Velocity (U/Sf)
mu, // Momentum flux
Q, // Heat flow
Qs, // Solid heat Flow
F, // A mechanical domain force [N]
x, // A mechanical displacement [m]
Z, // A mechanical impedance [N/m]
mEkin // Kinetic energy flow (Watts)
);
DECLARE_ENUM(Pos,left=0,right=1);
DECLARE_ENUM(EqType,
Con, // Continuity
Mom, // Momentum
Ene, // Energy-like equation
Ise, // Isentropic
Sta, // State
Sol, // SolidEnergy
SolTwEq, // Solid wall temperature equation
Mu_is_m_u, // momentumflow is massflow_squared div
// density*cs_area
BcEqP,
BcEqu,
BcEqStateBc
);
namespace constants {
typedef unsigned us;
const us mingp=4; // Minimum number of gridpoints
const us maxgp=3000; // Maximum number of gridpoints
const us maxNf=100; // Maximum number of frequencies
const d minomg=1e-3; // Minimal oscillation frequency
const d maxomg=1e5;
const int maxsegs=30; // Maximum number of segments in a TaSystem
const int maxndofs=600000; // Maximum number of DOFS
const d minp=1e0;
const d maxp=1e7;
const d minT=2; // Minimal temperature
const d maxT=2000; // Maximal temperature
const d p0=101325; // Reference pressure [Pa]
const d T0=293.15; // Reference temperature [K]
// These variable numbers are important, as they determine the
// position of these variables in the array in cell.h
// const int rho=1;
// const int m=2;
// const int T=3;
// const int p=4;
// const int Ts=5;
// Number of variables
const int nvars_reserve=7;
const int neqs_reserve=7;
} // namespace constants
#endif // CONSTANTS_H