xref: /petsc/src/dm/interface/dmceed.c (revision 20f4b53cbb5e9bd9ef12b76a8697d60d197cda17)
1f918ec44SMatthew G. Knepley #include <petsc/private/dmimpl.h> /*I      "petscdm.h"          I*/
2f918ec44SMatthew G. Knepley 
3f918ec44SMatthew G. Knepley #ifdef PETSC_HAVE_LIBCEED
4f918ec44SMatthew G. Knepley   #include <petscdmceed.h>
5f918ec44SMatthew G. Knepley 
6f918ec44SMatthew G. Knepley /*@C
7*20f4b53cSBarry Smith   DMGetCeed - Get the LibCEED context associated with this `DM`
8f918ec44SMatthew G. Knepley 
9*20f4b53cSBarry Smith   Not Collective
10f918ec44SMatthew G. Knepley 
11f918ec44SMatthew G. Knepley   Input Parameter:
12*20f4b53cSBarry Smith . DM   - The `DM`
13f918ec44SMatthew G. Knepley 
14f918ec44SMatthew G. Knepley   Output Parameter:
15f918ec44SMatthew G. Knepley . ceed - The LibCEED context
16f918ec44SMatthew G. Knepley 
17f918ec44SMatthew G. Knepley   Level: intermediate
18f918ec44SMatthew G. Knepley 
19*20f4b53cSBarry Smith .seealso: `DM`, `DMCreate()`
20f918ec44SMatthew G. Knepley @*/
21d71ae5a4SJacob Faibussowitsch PetscErrorCode DMGetCeed(DM dm, Ceed *ceed)
22d71ae5a4SJacob Faibussowitsch {
23f918ec44SMatthew G. Knepley   PetscFunctionBegin;
24f918ec44SMatthew G. Knepley   PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
25f918ec44SMatthew G. Knepley   PetscValidPointer(ceed, 2);
26f918ec44SMatthew G. Knepley   if (!dm->ceed) {
27f918ec44SMatthew G. Knepley     char        ceedresource[PETSC_MAX_PATH_LEN]; /* libCEED resource specifier */
28f918ec44SMatthew G. Knepley     const char *prefix;
29f918ec44SMatthew G. Knepley 
30c6a7a370SJeremy L Thompson     PetscCall(PetscStrncpy(ceedresource, "/cpu/self", sizeof(ceedresource)));
319566063dSJacob Faibussowitsch     PetscCall(PetscObjectGetOptionsPrefix((PetscObject)dm, &prefix));
329566063dSJacob Faibussowitsch     PetscCall(PetscOptionsGetString(NULL, prefix, "-dm_ceed", ceedresource, sizeof(ceedresource), NULL));
339566063dSJacob Faibussowitsch     PetscCallCEED(CeedInit(ceedresource, &dm->ceed));
34f918ec44SMatthew G. Knepley   }
35f918ec44SMatthew G. Knepley   *ceed = dm->ceed;
363ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
37f918ec44SMatthew G. Knepley }
38f918ec44SMatthew G. Knepley 
39f918ec44SMatthew G. Knepley #endif
40