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