xref: /libCEED/backends/ref/ceed-ref.c (revision 3d8e882215d238700cdceb37404f76ca7fa24eaa)
1*3d8e8822SJeremy L Thompson // Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
2*3d8e8822SJeremy L Thompson // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3ae3cba82Scamierjs //
4*3d8e8822SJeremy L Thompson // SPDX-License-Identifier: BSD-2-Clause
5ae3cba82Scamierjs //
6*3d8e8822SJeremy L Thompson // This file is part of CEED:  http://github.com/ceed
7ae3cba82Scamierjs 
8ec3da8bcSJed Brown #include <ceed/ceed.h>
9ec3da8bcSJed Brown #include <ceed/backend.h>
103d576824SJeremy L Thompson #include <string.h>
1121617c04Sjeremylt #include "ceed-ref.h"
12ae3cba82Scamierjs 
13f10650afSjeremylt //------------------------------------------------------------------------------
14f10650afSjeremylt // Backend Init
15f10650afSjeremylt //------------------------------------------------------------------------------
16ae3cba82Scamierjs static int CeedInit_Ref(const char *resource, Ceed ceed) {
17fe2413ffSjeremylt   int ierr;
186f7d248dSjeremylt   if (strcmp(resource, "/cpu/self") && strcmp(resource, "/cpu/self/ref")
19856142e1Sjeremylt       && strcmp(resource, "/cpu/self/ref/serial"))
20c042f62fSJeremy L Thompson     // LCOV_EXCL_START
21e15f9bd0SJeremy L Thompson     return CeedError(ceed, CEED_ERROR_BACKEND,
22e15f9bd0SJeremy L Thompson                      "Ref backend cannot use resource: %s", resource);
23c042f62fSJeremy L Thompson   // LCOV_EXCL_STOP
24e15f9bd0SJeremy L Thompson   ierr = CeedSetDeterministic(ceed, true); CeedChkBackend(ierr);
256f7d248dSjeremylt 
26f8902d9eSjeremylt   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "VectorCreate",
27e15f9bd0SJeremy L Thompson                                 CeedVectorCreate_Ref); CeedChkBackend(ierr);
28fe2413ffSjeremylt   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "BasisCreateTensorH1",
29e15f9bd0SJeremy L Thompson                                 CeedBasisCreateTensorH1_Ref); CeedChkBackend(ierr);
30fe2413ffSjeremylt   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "BasisCreateH1",
31e15f9bd0SJeremy L Thompson                                 CeedBasisCreateH1_Ref); CeedChkBackend(ierr);
3250c301a5SRezgar Shakeri   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "BasisCreateHdiv",
3350c301a5SRezgar Shakeri                                 CeedBasisCreateHdiv_Ref); CeedChkBackend(ierr);
342f86a920SJeremy L Thompson   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "TensorContractCreate",
35e15f9bd0SJeremy L Thompson                                 CeedTensorContractCreate_Ref); CeedChkBackend(ierr);
36fe2413ffSjeremylt   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "ElemRestrictionCreate",
37e15f9bd0SJeremy L Thompson                                 CeedElemRestrictionCreate_Ref); CeedChkBackend(ierr);
381dfeef1dSjeremylt   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed,
39fc0567d9Srezgarshakeri                                 "ElemRestrictionCreateOriented",
40fc0567d9Srezgarshakeri                                 CeedElemRestrictionCreateOriented_Ref); CeedChkBackend(ierr);
41fc0567d9Srezgarshakeri   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed,
421dfeef1dSjeremylt                                 "ElemRestrictionCreateBlocked",
43e15f9bd0SJeremy L Thompson                                 CeedElemRestrictionCreate_Ref); CeedChkBackend(ierr);
44fe2413ffSjeremylt   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "QFunctionCreate",
45e15f9bd0SJeremy L Thompson                                 CeedQFunctionCreate_Ref); CeedChkBackend(ierr);
46777ff853SJeremy L Thompson   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "QFunctionContextCreate",
47e15f9bd0SJeremy L Thompson                                 CeedQFunctionContextCreate_Ref); CeedChkBackend(ierr);
48fe2413ffSjeremylt   ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "OperatorCreate",
49e15f9bd0SJeremy L Thompson                                 CeedOperatorCreate_Ref); CeedChkBackend(ierr);
50e15f9bd0SJeremy L Thompson   return CEED_ERROR_SUCCESS;
51ae3cba82Scamierjs }
52ae3cba82Scamierjs 
53f10650afSjeremylt //------------------------------------------------------------------------------
54f10650afSjeremylt // Backend Register
55f10650afSjeremylt //------------------------------------------------------------------------------
561d013790SJed Brown CEED_INTERN int CeedRegister_Ref(void) {
571d013790SJed Brown   return
589ddbf157Sjeremylt //! [Register]
59706bc5e6Sjeremylt     CeedRegister("/cpu/self/ref/serial", CeedInit_Ref, 50);
609ddbf157Sjeremylt //! [Register]
61ae3cba82Scamierjs }
62f10650afSjeremylt //------------------------------------------------------------------------------
63