xref: /libCEED/python/ceed_constants.py (revision 80a9ef0545a39c00cdcaab1ca26f8053604f3120)
1bfbc6bf6Sjeremylt# Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2bfbc6bf6Sjeremylt# the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3bfbc6bf6Sjeremylt# reserved. See files LICENSE and NOTICE for details.
4bfbc6bf6Sjeremylt#
5bfbc6bf6Sjeremylt# This file is part of CEED, a collection of benchmarks, miniapps, software
6bfbc6bf6Sjeremylt# libraries and APIs for efficient high-order finite element and spectral
7bfbc6bf6Sjeremylt# element discretizations for exascale applications. For more information and
8bfbc6bf6Sjeremylt# source code availability see http://github.com/ceed.
9bfbc6bf6Sjeremylt#
10bfbc6bf6Sjeremylt# The CEED research is supported by the Exascale Computing Project 17-SC-20-SC,
11bfbc6bf6Sjeremylt# a collaborative effort of two U.S. Department of Energy organizations (Office
12bfbc6bf6Sjeremylt# of Science and the National Nuclear Security Administration) responsible for
13bfbc6bf6Sjeremylt# the planning and preparation of a capable exascale ecosystem, including
14bfbc6bf6Sjeremylt# software, applications, hardware, advanced system engineering and early
15bfbc6bf6Sjeremylt# testbed platforms, in support of the nation's exascale computing imperative.
16bfbc6bf6Sjeremylt
17bfbc6bf6Sjeremyltfrom _ceed_cffi import ffi, lib
18bfbc6bf6Sjeremyltfrom abc import ABC
19bfbc6bf6Sjeremylt
20bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
21bfbc6bf6Sjeremylt# Ceed Enums
22bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
23bfbc6bf6Sjeremylt# CeedMemType
24bfbc6bf6SjeremyltMEM_HOST = lib.CEED_MEM_HOST
25bfbc6bf6SjeremyltMEM_DEVICE = lib.CEED_MEM_DEVICE
26bfbc6bf6Sjeremyltmem_types = {MEM_HOST: "host",
27bfbc6bf6Sjeremylt             MEM_DEVICE: "device"}
28bfbc6bf6Sjeremylt
29*80a9ef05SNatalie Beams# CeedScalarType
30*80a9ef05SNatalie BeamsSCALAR_FP32 = lib.CEED_SCALAR_FP32
31*80a9ef05SNatalie BeamsSCALAR_FP64 = lib.CEED_SCALAR_FP64
32*80a9ef05SNatalie Beamsscalar_types = {SCALAR_FP32: "float32",
33*80a9ef05SNatalie Beams                SCALAR_FP64: "float64"}
34*80a9ef05SNatalie Beams# Machine eps corresponding to CeedScalar
35*80a9ef05SNatalie BeamsEPSILON = lib.CEED_EPSILON
36*80a9ef05SNatalie Beams
37bfbc6bf6Sjeremylt# CeedCopyMode
38bfbc6bf6SjeremyltCOPY_VALUES = lib.CEED_COPY_VALUES
39bfbc6bf6SjeremyltUSE_POINTER = lib.CEED_USE_POINTER
40bfbc6bf6SjeremyltOWN_POINTER = lib.CEED_OWN_POINTER
41bfbc6bf6Sjeremyltcopy_modes = {COPY_VALUES: "copy values",
42bfbc6bf6Sjeremylt              USE_POINTER: "use pointer",
43bfbc6bf6Sjeremylt              OWN_POINTER: "own pointer"}
44bfbc6bf6Sjeremylt
45547d9b97Sjeremylt# CeedNormType
46547d9b97SjeremyltNORM_1 = lib.CEED_NORM_1
47547d9b97SjeremyltNORM_2 = lib.CEED_NORM_2
48547d9b97SjeremyltNORM_MAX = lib.CEED_NORM_MAX
49547d9b97Sjeremyltnorm_types = {NORM_1: "L1 norm",
50547d9b97Sjeremylt              NORM_2: "L2 norm",
51547d9b97Sjeremylt              NORM_MAX: "max norm"}
52547d9b97Sjeremylt
53bfbc6bf6Sjeremylt# CeedTransposeMode
54bfbc6bf6SjeremyltTRANSPOSE = lib.CEED_TRANSPOSE
55bfbc6bf6SjeremyltNOTRANSPOSE = lib.CEED_NOTRANSPOSE
56bfbc6bf6Sjeremylttranspose_modes = {TRANSPOSE: "transpose",
57bfbc6bf6Sjeremylt                   NOTRANSPOSE: "no transpose"}
58bfbc6bf6Sjeremylt
59bfbc6bf6Sjeremylt# CeedEvalMode
60bfbc6bf6SjeremyltEVAL_NONE = lib.CEED_EVAL_NONE
61bfbc6bf6SjeremyltEVAL_INTERP = lib.CEED_EVAL_INTERP
62bfbc6bf6SjeremyltEVAL_GRAD = lib.CEED_EVAL_GRAD
63bfbc6bf6SjeremyltEVAL_DIV = lib.CEED_EVAL_DIV
64bfbc6bf6SjeremyltEVAL_CURL = lib.CEED_EVAL_CURL
65bfbc6bf6SjeremyltEVAL_WEIGHT = lib.CEED_EVAL_WEIGHT
66bfbc6bf6Sjeremylteval_modes = {EVAL_NONE: "none",
67bfbc6bf6Sjeremylt              EVAL_INTERP: "interpolation",
68bfbc6bf6Sjeremylt              EVAL_GRAD: "gradient",
69bfbc6bf6Sjeremylt              EVAL_DIV: "divergence",
70bfbc6bf6Sjeremylt              EVAL_CURL: "curl",
71bfbc6bf6Sjeremylt              EVAL_WEIGHT: "quadrature weights"}
72bfbc6bf6Sjeremylt
73bfbc6bf6Sjeremylt# CeedQuadMode
74bfbc6bf6SjeremyltGAUSS = lib.CEED_GAUSS
75bfbc6bf6SjeremyltGAUSS_LOBATTO = lib.CEED_GAUSS_LOBATTO
76bfbc6bf6Sjeremyltquad_modes = {GAUSS: "Gauss",
77bfbc6bf6Sjeremylt              GAUSS_LOBATTO: "Gauss Lobatto"}
78bfbc6bf6Sjeremylt
79bfbc6bf6Sjeremylt# CeedElemTopology
80bfbc6bf6SjeremyltLINE = lib.CEED_LINE
81bfbc6bf6SjeremyltTRIANGLE = lib.CEED_TRIANGLE
82bfbc6bf6SjeremyltQUAD = lib.CEED_QUAD
83bfbc6bf6SjeremyltTET = lib.CEED_TET
84bfbc6bf6SjeremyltPYRAMID = lib.CEED_PYRAMID
85bfbc6bf6SjeremyltPRISM = lib.CEED_PRISM
86bfbc6bf6SjeremyltHEX = lib.CEED_HEX
87bfbc6bf6Sjeremyltelem_topologies = {LINE: "line",
88bfbc6bf6Sjeremylt                   TRIANGLE: "triangle",
89bfbc6bf6Sjeremylt                   QUAD: "quadrilateral",
90bfbc6bf6Sjeremylt                   TET: "tetrahedron",
91bfbc6bf6Sjeremylt                   PYRAMID: "pyramid",
92bfbc6bf6Sjeremylt                   PRISM: "prism",
93bfbc6bf6Sjeremylt                   HEX: "hexahedron"}
94bfbc6bf6Sjeremylt
95bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
96bfbc6bf6Sjeremylt# Ceed Constants
97bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
98bfbc6bf6Sjeremylt
99bfbc6bf6Sjeremylt# Requests
100bfbc6bf6SjeremyltREQUEST_IMMEDIATE = lib.CEED_REQUEST_IMMEDIATE
101bfbc6bf6SjeremyltREQUEST_ORDERED = lib.CEED_REQUEST_ORDERED
102bfbc6bf6Sjeremylt
103bfbc6bf6Sjeremylt# Object shell
1047a7b0fa3SJed Brown
1057a7b0fa3SJed Brown
106bfbc6bf6Sjeremyltclass _CeedConstantObject(ABC):
107bfbc6bf6Sjeremylt    """Shell for holding constant Vector and Basis constants."""
108bfbc6bf6Sjeremylt
109bfbc6bf6Sjeremylt    def __init__(self, constant):
110bfbc6bf6Sjeremylt        self._pointer = [constant]
111bfbc6bf6Sjeremylt
1127a7b0fa3SJed Brown
113bfbc6bf6Sjeremylt# Vectors
114bfbc6bf6SjeremyltVECTOR_ACTIVE = _CeedConstantObject(lib.CEED_VECTOR_ACTIVE)
115bfbc6bf6SjeremyltVECTOR_NONE = _CeedConstantObject(lib.CEED_VECTOR_NONE)
116bfbc6bf6Sjeremylt
11756d8cfc2Sjeremylt# ElemRestriction
11856d8cfc2SjeremyltELEMRESTRICTION_NONE = _CeedConstantObject(lib.CEED_ELEMRESTRICTION_NONE)
11956d8cfc2Sjeremylt
120bfbc6bf6Sjeremylt# Basis
121bfbc6bf6SjeremyltBASIS_COLLOCATED = _CeedConstantObject(lib.CEED_BASIS_COLLOCATED)
122bfbc6bf6Sjeremylt
123bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
124