xref: /libCEED/python/ceed_constants.py (revision 356036fa84f714fa73ef64c9a80ce2028dde816f)
13d8e8822SJeremy L Thompson# Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors
23d8e8822SJeremy L Thompson# All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3bfbc6bf6Sjeremylt#
43d8e8822SJeremy L Thompson# SPDX-License-Identifier: BSD-2-Clause
5bfbc6bf6Sjeremylt#
63d8e8822SJeremy L Thompson# This file is part of CEED:  http://github.com/ceed
7bfbc6bf6Sjeremylt
8bfbc6bf6Sjeremyltfrom _ceed_cffi import ffi, lib
9bfbc6bf6Sjeremyltfrom abc import ABC
10bfbc6bf6Sjeremylt
11bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
12bfbc6bf6Sjeremylt# Ceed Enums
13bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
14bfbc6bf6Sjeremylt# CeedMemType
15bfbc6bf6SjeremyltMEM_HOST = lib.CEED_MEM_HOST
16bfbc6bf6SjeremyltMEM_DEVICE = lib.CEED_MEM_DEVICE
17bfbc6bf6Sjeremyltmem_types = {MEM_HOST: "host",
18bfbc6bf6Sjeremylt             MEM_DEVICE: "device"}
19bfbc6bf6Sjeremylt
2080a9ef05SNatalie Beams# CeedScalarType
2180a9ef05SNatalie BeamsSCALAR_FP32 = lib.CEED_SCALAR_FP32
2280a9ef05SNatalie BeamsSCALAR_FP64 = lib.CEED_SCALAR_FP64
2380a9ef05SNatalie Beamsscalar_types = {SCALAR_FP32: "float32",
2480a9ef05SNatalie Beams                SCALAR_FP64: "float64"}
2580a9ef05SNatalie Beams# Machine eps corresponding to CeedScalar
2680a9ef05SNatalie BeamsEPSILON = lib.CEED_EPSILON
2780a9ef05SNatalie Beams
28bfbc6bf6Sjeremylt# CeedCopyMode
29bfbc6bf6SjeremyltCOPY_VALUES = lib.CEED_COPY_VALUES
30bfbc6bf6SjeremyltUSE_POINTER = lib.CEED_USE_POINTER
31bfbc6bf6SjeremyltOWN_POINTER = lib.CEED_OWN_POINTER
32bfbc6bf6Sjeremyltcopy_modes = {COPY_VALUES: "copy values",
33bfbc6bf6Sjeremylt              USE_POINTER: "use pointer",
34bfbc6bf6Sjeremylt              OWN_POINTER: "own pointer"}
35bfbc6bf6Sjeremylt
36547d9b97Sjeremylt# CeedNormType
37547d9b97SjeremyltNORM_1 = lib.CEED_NORM_1
38547d9b97SjeremyltNORM_2 = lib.CEED_NORM_2
39547d9b97SjeremyltNORM_MAX = lib.CEED_NORM_MAX
40547d9b97Sjeremyltnorm_types = {NORM_1: "L1 norm",
41547d9b97Sjeremylt              NORM_2: "L2 norm",
42547d9b97Sjeremylt              NORM_MAX: "max norm"}
43547d9b97Sjeremylt
44bfbc6bf6Sjeremylt# CeedTransposeMode
45bfbc6bf6SjeremyltTRANSPOSE = lib.CEED_TRANSPOSE
46bfbc6bf6SjeremyltNOTRANSPOSE = lib.CEED_NOTRANSPOSE
47bfbc6bf6Sjeremylttranspose_modes = {TRANSPOSE: "transpose",
48bfbc6bf6Sjeremylt                   NOTRANSPOSE: "no transpose"}
49bfbc6bf6Sjeremylt
50bfbc6bf6Sjeremylt# CeedEvalMode
51bfbc6bf6SjeremyltEVAL_NONE = lib.CEED_EVAL_NONE
52bfbc6bf6SjeremyltEVAL_INTERP = lib.CEED_EVAL_INTERP
53bfbc6bf6SjeremyltEVAL_GRAD = lib.CEED_EVAL_GRAD
54bfbc6bf6SjeremyltEVAL_DIV = lib.CEED_EVAL_DIV
55bfbc6bf6SjeremyltEVAL_CURL = lib.CEED_EVAL_CURL
56bfbc6bf6SjeremyltEVAL_WEIGHT = lib.CEED_EVAL_WEIGHT
57bfbc6bf6Sjeremylteval_modes = {EVAL_NONE: "none",
58bfbc6bf6Sjeremylt              EVAL_INTERP: "interpolation",
59bfbc6bf6Sjeremylt              EVAL_GRAD: "gradient",
60bfbc6bf6Sjeremylt              EVAL_DIV: "divergence",
61bfbc6bf6Sjeremylt              EVAL_CURL: "curl",
62bfbc6bf6Sjeremylt              EVAL_WEIGHT: "quadrature weights"}
63bfbc6bf6Sjeremylt
64bfbc6bf6Sjeremylt# CeedQuadMode
65bfbc6bf6SjeremyltGAUSS = lib.CEED_GAUSS
66bfbc6bf6SjeremyltGAUSS_LOBATTO = lib.CEED_GAUSS_LOBATTO
67bfbc6bf6Sjeremyltquad_modes = {GAUSS: "Gauss",
68bfbc6bf6Sjeremylt              GAUSS_LOBATTO: "Gauss Lobatto"}
69bfbc6bf6Sjeremylt
70bfbc6bf6Sjeremylt# CeedElemTopology
7150c301a5SRezgar ShakeriLINE = lib.CEED_TOPOLOGY_LINE
7250c301a5SRezgar ShakeriTRIANGLE = lib.CEED_TOPOLOGY_TRIANGLE
7350c301a5SRezgar ShakeriQUAD = lib.CEED_TOPOLOGY_QUAD
7450c301a5SRezgar ShakeriTET = lib.CEED_TOPOLOGY_TET
7550c301a5SRezgar ShakeriPYRAMID = lib.CEED_TOPOLOGY_PYRAMID
7650c301a5SRezgar ShakeriPRISM = lib.CEED_TOPOLOGY_PRISM
7750c301a5SRezgar ShakeriHEX = lib.CEED_TOPOLOGY_HEX
78bfbc6bf6Sjeremyltelem_topologies = {LINE: "line",
79bfbc6bf6Sjeremylt                   TRIANGLE: "triangle",
80bfbc6bf6Sjeremylt                   QUAD: "quadrilateral",
81bfbc6bf6Sjeremylt                   TET: "tetrahedron",
82bfbc6bf6Sjeremylt                   PYRAMID: "pyramid",
83bfbc6bf6Sjeremylt                   PRISM: "prism",
84bfbc6bf6Sjeremylt                   HEX: "hexahedron"}
85bfbc6bf6Sjeremylt
86bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
87bfbc6bf6Sjeremylt# Ceed Constants
88bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
89bfbc6bf6Sjeremylt
90bfbc6bf6Sjeremylt# Requests
91bfbc6bf6SjeremyltREQUEST_IMMEDIATE = lib.CEED_REQUEST_IMMEDIATE
92bfbc6bf6SjeremyltREQUEST_ORDERED = lib.CEED_REQUEST_ORDERED
93bfbc6bf6Sjeremylt
94bfbc6bf6Sjeremylt# Object shell
957a7b0fa3SJed Brown
967a7b0fa3SJed Brown
97bfbc6bf6Sjeremyltclass _CeedConstantObject(ABC):
98bfbc6bf6Sjeremylt    """Shell for holding constant Vector and Basis constants."""
99bfbc6bf6Sjeremylt
100bfbc6bf6Sjeremylt    def __init__(self, constant):
101bfbc6bf6Sjeremylt        self._pointer = [constant]
102bfbc6bf6Sjeremylt
1037a7b0fa3SJed Brown
104bfbc6bf6Sjeremylt# Vectors
105bfbc6bf6SjeremyltVECTOR_ACTIVE = _CeedConstantObject(lib.CEED_VECTOR_ACTIVE)
106bfbc6bf6SjeremyltVECTOR_NONE = _CeedConstantObject(lib.CEED_VECTOR_NONE)
107bfbc6bf6Sjeremylt
10856d8cfc2Sjeremylt# ElemRestriction
10956d8cfc2SjeremyltELEMRESTRICTION_NONE = _CeedConstantObject(lib.CEED_ELEMRESTRICTION_NONE)
11056d8cfc2Sjeremylt
111bfbc6bf6Sjeremylt# Basis
112*356036faSJeremy L ThompsonBASIS_NONE = _CeedConstantObject(lib.CEED_BASIS_NONE)
113bfbc6bf6Sjeremylt
114bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------
115