xref: /libCEED/backends/ref/ceed-ref.h (revision 21617c043cf2be06120e43f272b68c5ebd5f09fa)
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