49 #ifndef INTREPID_INTREPID_TYPES_HPP 50 #define INTREPID_INTREPID_TYPES_HPP 52 #ifdef HAVE_INTREPID_DEBUG 53 #define INTREPID_VALIDATE( A ) A 55 #define INTREPID_VALIDATE( A ) 58 #include <Teuchos_ScalarTraits.hpp> 63 #define INTREPID_MAX_ORDER 10 68 #define INTREPID_MAX_INTEGRATION_POINTS 1001 74 #define INTREPID_MAX_CUBATURE_DEGREE_EDGE 61 80 #define INTREPID_MAX_CUBATURE_DEGREE_TRI 20 86 #define INTREPID_MAX_CUBATURE_DEGREE_TET 20 92 #define INTREPID_MAX_CUBATURE_DEGREE_PYR 11 97 #define INTREPID_MAX_DIMENSION 3 103 #define INTREPID_MAX_NEWTON 15 108 #define INTREPID_MAX_DERIVATIVE 10 128 COORDINATES_CARTESIAN=0,
130 COORDINATES_CYLINDRICAL,
131 COORDINATES_SPHERICAL,
135 inline std::string ECoordinatesToString(ECoordinates coords) {
136 std::string retString;
138 case COORDINATES_CARTESIAN: retString =
"Cartesian";
break;
139 case COORDINATES_POLAR: retString =
"Polar";
break;
140 case COORDINATES_CYLINDRICAL: retString =
"Cylindrical";
break;
141 case COORDINATES_SPHERICAL: retString =
"Spherical";
break;
142 case COORDINATES_MAX: retString =
"Max. Coordinates";
break;
143 default: retString =
"INVALID ECoordinates";
154 return( ( coordinateType == COORDINATES_CARTESIAN) ||
155 ( coordinateType == COORDINATES_POLAR) ||
156 ( coordinateType == COORDINATES_CYLINDRICAL) ||
157 ( coordinateType == COORDINATES_SPHERICAL) );
173 inline std::string ENormToString(ENorm norm) {
174 std::string retString;
176 case NORM_ONE: retString =
"1-Norm";
break;
177 case NORM_TWO: retString =
"2-Norm";
break;
178 case NORM_INF: retString =
"Infinity Norm";
break;
179 case NORM_FRO: retString =
"Frobenius Norm";
break;
180 case NORM_MAX: retString =
"Max. Norm";
break;
181 default: retString =
"INVALID ENorm";
192 return( (normType == NORM_ONE) ||
193 (normType == NORM_TWO) ||
194 (normType == NORM_INF) ||
195 (normType == NORM_FRO) ||
196 (normType == NORM_MAX) );
224 inline std::string EOperatorToString(EOperator op) {
225 std::string retString;
227 case OPERATOR_VALUE: retString =
"Value";
break;
228 case OPERATOR_GRAD: retString =
"Grad";
break;
229 case OPERATOR_CURL: retString =
"Curl";
break;
230 case OPERATOR_DIV: retString =
"Div";
break;
231 case OPERATOR_D1: retString =
"D1";
break;
232 case OPERATOR_D2: retString =
"D2";
break;
233 case OPERATOR_D3: retString =
"D3";
break;
234 case OPERATOR_D4: retString =
"D4";
break;
235 case OPERATOR_D5: retString =
"D5";
break;
236 case OPERATOR_D6: retString =
"D6";
break;
237 case OPERATOR_D7: retString =
"D7";
break;
238 case OPERATOR_D8: retString =
"D8";
break;
239 case OPERATOR_D9: retString =
"D9";
break;
240 case OPERATOR_D10: retString =
"D10";
break;
241 case OPERATOR_MAX: retString =
"Max. Operator";
break;
242 default: retString =
"INVALID EOperator";
247 inline EOperator & operator++(EOperator &type) {
248 return type =
static_cast<EOperator>(type+1);
251 inline EOperator operator++(EOperator &type,
int) {
257 inline EOperator & operator--(EOperator &type) {
258 return type =
static_cast<EOperator>(type-1);
261 inline EOperator operator--(EOperator &type,
int) {
273 return ( (operatorType == OPERATOR_VALUE) ||
274 (operatorType == OPERATOR_GRAD) ||
275 (operatorType == OPERATOR_CURL) ||
276 (operatorType == OPERATOR_DIV) ||
277 (operatorType == OPERATOR_D1) ||
278 (operatorType == OPERATOR_D2) ||
279 (operatorType == OPERATOR_D3) ||
280 (operatorType == OPERATOR_D4) ||
281 (operatorType == OPERATOR_D5) ||
282 (operatorType == OPERATOR_D6) ||
283 (operatorType == OPERATOR_D7) ||
284 (operatorType == OPERATOR_D8) ||
285 (operatorType == OPERATOR_D9) ||
286 (operatorType == OPERATOR_D10) );
295 FUNCTION_SPACE_HGRAD = 0,
296 FUNCTION_SPACE_HCURL,
299 FUNCTION_SPACE_VECTOR_HGRAD,
300 FUNCTION_SPACE_TENSOR_HGRAD,
304 inline std::string EFunctionSpaceToString(EFunctionSpace space) {
305 std::string retString;
307 case FUNCTION_SPACE_HGRAD: retString =
"H(grad)";
break;
308 case FUNCTION_SPACE_HCURL: retString =
"H(curl)";
break;
309 case FUNCTION_SPACE_HDIV: retString =
"H(div)";
break;
310 case FUNCTION_SPACE_HVOL: retString =
"H(vol)";
break;
311 case FUNCTION_SPACE_VECTOR_HGRAD: retString =
"Vector H(grad)";
break;
312 case FUNCTION_SPACE_TENSOR_HGRAD: retString =
"Tensor H(grad)";
break;
313 case FUNCTION_SPACE_MAX: retString =
"Max. Function space";
break;
314 default: retString =
"INVALID EFunctionSpace";
325 return ( (spaceType == FUNCTION_SPACE_HGRAD) ||
326 (spaceType == FUNCTION_SPACE_HCURL) ||
327 (spaceType == FUNCTION_SPACE_HDIV) ||
328 (spaceType == FUNCTION_SPACE_HVOL) ||
329 (spaceType == FUNCTION_SPACE_VECTOR_HGRAD) ||
330 (spaceType == FUNCTION_SPACE_TENSOR_HGRAD) );
345 DISCRETE_SPACE_COMPLETE = 0,
346 DISCRETE_SPACE_INCOMPLETE,
347 DISCRETE_SPACE_BROKEN,
351 inline std::string EDiscreteSpaceToString(EDiscreteSpace space) {
352 std::string retString;
354 case DISCRETE_SPACE_COMPLETE: retString =
"Complete";
break;
355 case DISCRETE_SPACE_INCOMPLETE: retString =
"Incomplete";
break;
356 case DISCRETE_SPACE_BROKEN: retString =
"Broken";
break;
357 case DISCRETE_SPACE_MAX: retString =
"Max. Rec. Space";
break;
358 default: retString =
"INVALID EDiscreteSpace";
369 return ( (spaceType == DISCRETE_SPACE_COMPLETE) ||
370 (spaceType == DISCRETE_SPACE_INCOMPLETE) ||
371 (spaceType ==DISCRETE_SPACE_BROKEN) );
379 POINTTYPE_EQUISPACED = 0,
381 POINTTYPE_SPECTRAL_OPEN,
385 inline std::string EPointTypeToString(EPointType pointType) {
386 std::string retString;
388 case POINTTYPE_EQUISPACED:
389 retString =
"Equispaced Points";
391 case POINTTYPE_WARPBLEND:
392 retString =
"WarpBlend Points";
394 case POINTTYPE_SPECTRAL:
395 retString =
"Spectral Points";
397 case POINTTYPE_SPECTRAL_OPEN:
398 retString =
"Open Spectral Points";
410 return ( (pointType == POINTTYPE_EQUISPACED ) ||
411 (pointType == POINTTYPE_WARPBLEND ) );
419 BASIS_FEM_DEFAULT = 0,
420 BASIS_FEM_HIERARCHICAL,
428 inline std::string EBasisToString(EBasis basis) {
429 std::string retString;
431 case BASIS_FEM_DEFAULT: retString =
"FEM Default";
break;
432 case BASIS_FEM_HIERARCHICAL: retString =
"FEM Hierarchical";
break;
433 case BASIS_FEM_FIAT: retString =
"FEM FIAT";
break;
434 case BASIS_FVD_DEFAULT: retString =
"FVD Default";
break;
435 case BASIS_FVD_COVOLUME: retString =
"FVD Covolume";
break;
436 case BASIS_FVD_MIMETIC: retString =
"FVD Mimetic";
break;
437 case BASIS_MAX: retString =
"Max. Basis";
break;
438 default: retString =
"INVALID EBasis";
449 return ( (basisType == BASIS_FEM_DEFAULT) ||
450 (basisType == BASIS_FEM_HIERARCHICAL) ||
451 (basisType == BASIS_FEM_FIAT) ||
452 (basisType == BASIS_FVD_DEFAULT) ||
453 (basisType == BASIS_FVD_COVOLUME) ||
454 (basisType == BASIS_FVD_MIMETIC) );
535 inline std::string ECompEngineToString(ECompEngine cEngine) {
536 std::string retString;
538 case COMP_CPP: retString =
"Native C++";
break;
539 case COMP_BLAS: retString =
"BLAS";
break;
540 case COMP_ENGINE_MAX: retString =
"Max. Comp. Engine";
break;
541 default: retString =
"INVALID ECompEngine";
546 inline ECompEngine & operator++(ECompEngine &type) {
550 inline ECompEngine operator++(ECompEngine &type,
int) {
556 inline ECompEngine & operator--(ECompEngine &type) {
560 inline ECompEngine operator--(ECompEngine &type,
int) {
573 return ( (compEngType == COMP_CPP) ||
574 (compEngType == COMP_BLAS) );
ENorm
Enumeration of norm types for vectors and functions.
int isValidPointType(const EPointType pointType)
Verifies validity of a point type enum.
int isValidCoordinate(ECoordinates coordinateType)
Verifies validity of a Coordinate enum.
int isValidFunctionSpace(const EFunctionSpace spaceType)
Verifies validity of a function space enum.
int isValidCompEngine(const ECompEngine compEngType)
Verifies validity of a computational engine enum.
int isValidNorm(ENorm normType)
Verifies validity of a Norm enum.
int isValidDiscreteSpace(const EDiscreteSpace spaceType)
Verifies validity of a discrete space enum.
EOperator
Enumeration of primitive operators available in Intrepid. Primitive operators act on reconstructed fu...
int isValidBasis(const EBasis basisType)
Verifies validity of a basis enum.
ECoordinates
Enumeration of coordinate systems for geometrical entities (cells, points).
#define INTREPID_MAX_DIMENSION
The maximum ambient space dimension.
static const double INTREPID_THRESHOLD
Tolerance for various cell inclusion tests.
Template for the cubature rules used by Intrepid. Cubature template consists of cubature points and...
#define INTREPID_MAX_INTEGRATION_POINTS
The maximum number of integration points for direct cubature rules.
EPointType
Enumeration of types of point distributions in Intrepid.
int isValidOperator(const EOperator operatorType)
Verifies validity of an operator enum.
double points_[INTREPID_MAX_INTEGRATION_POINTS][INTREPID_MAX_DIMENSION]
Array with the (X,Y,Z) coordinates of the cubature points.
static const double INTREPID_EPSILON
Platform-dependent machine epsilon.
double weights_[INTREPID_MAX_INTEGRATION_POINTS]
Array with the associated cubature weights.
ECompEngine
Specifies how operators and functionals are computed internally (COMP_MANUAL = native C++ implementat...
int numPoints_
Number of cubature points stored in the template.
static const double INTREPID_TOL
General purpose tolerance in, e.g., internal Newton's method to invert ref to phys maps...
EDiscreteSpace
Enumeration of the discrete spaces used to define bases for function spaces. Intrepid allows up to th...
EBasis
Enumeration of basis types for discrete spaces in Intrepid.