1*21617c04Sjeremylt // Copyright (c) 2017-2018, Lawrence Livermore National Security, LLC. 2*21617c04Sjeremylt // Produced at the Lawrence Livermore National Laboratory. LLNL-CODE-734707. 3*21617c04Sjeremylt // All Rights reserved. See files LICENSE and NOTICE for details. 4*21617c04Sjeremylt // 5*21617c04Sjeremylt // This file is part of CEED, a collection of benchmarks, miniapps, software 6*21617c04Sjeremylt // libraries and APIs for efficient high-order finite element and spectral 7*21617c04Sjeremylt // element discretizations for exascale applications. For more information and 8*21617c04Sjeremylt // source code availability see http://github.com/ceed. 9*21617c04Sjeremylt // 10*21617c04Sjeremylt // The CEED research is supported by the Exascale Computing Project 17-SC-20-SC, 11*21617c04Sjeremylt // a collaborative effort of two U.S. Department of Energy organizations (Office 12*21617c04Sjeremylt // of Science and the National Nuclear Security Administration) responsible for 13*21617c04Sjeremylt // the planning and preparation of a capable exascale ecosystem, including 14*21617c04Sjeremylt // software, applications, hardware, advanced system engineering and early 15*21617c04Sjeremylt // testbed platforms, in support of the nation's exascale computing imperative. 16*21617c04Sjeremylt 17*21617c04Sjeremylt #include <ceed-impl.h> 18*21617c04Sjeremylt #include <string.h> 19*21617c04Sjeremylt 20*21617c04Sjeremylt typedef struct { 21*21617c04Sjeremylt CeedScalar *array; 22*21617c04Sjeremylt CeedScalar *array_allocated; 23*21617c04Sjeremylt } CeedVector_Ref; 24*21617c04Sjeremylt 25*21617c04Sjeremylt typedef struct { 26*21617c04Sjeremylt const CeedInt *indices; 27*21617c04Sjeremylt CeedInt *indices_allocated; 28*21617c04Sjeremylt } CeedElemRestriction_Ref; 29*21617c04Sjeremylt 30*21617c04Sjeremylt typedef struct { 31*21617c04Sjeremylt CeedVector etmp; 32*21617c04Sjeremylt CeedVector qdata; 33*21617c04Sjeremylt } CeedOperator_Ref; 34*21617c04Sjeremylt 35*21617c04Sjeremylt CEED_INTERN int CeedVectorCreate_Ref(Ceed ceed, CeedInt n, CeedVector vec); 36*21617c04Sjeremylt 37*21617c04Sjeremylt CEED_INTERN int CeedElemRestrictionCreate_Ref(CeedElemRestriction r, 38*21617c04Sjeremylt CeedMemType mtype, 39*21617c04Sjeremylt CeedCopyMode cmode, const CeedInt *indices); 40*21617c04Sjeremylt 41*21617c04Sjeremylt CEED_INTERN int CeedBasisCreateTensorH1_Ref(Ceed ceed, CeedInt dim, CeedInt P1d, 42*21617c04Sjeremylt CeedInt Q1d, const CeedScalar *interp1d, 43*21617c04Sjeremylt const CeedScalar *grad1d, 44*21617c04Sjeremylt const CeedScalar *qref1d, 45*21617c04Sjeremylt const CeedScalar *qweight1d, 46*21617c04Sjeremylt CeedBasis basis); 47*21617c04Sjeremylt 48*21617c04Sjeremylt CEED_INTERN int CeedQFunctionCreate_Ref(CeedQFunction qf); 49*21617c04Sjeremylt 50*21617c04Sjeremylt CEED_INTERN int CeedOperatorCreate_Ref(CeedOperator op); 51