1*9ba83ac0SJeremy L Thompson# Copyright (c) 2017-2026, 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 112356036faSJeremy L ThompsonBASIS_NONE = _CeedConstantObject(lib.CEED_BASIS_NONE) 113bfbc6bf6Sjeremylt 114bfbc6bf6Sjeremylt# ------------------------------------------------------------------------------ 115