xref: /petsc/src/dm/interface/dmceed.c (revision 3ba1676111f5c958fe6c2729b46ca4d523958bb3)
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
7f918ec44SMatthew G. Knepley   DMGetCeed - Get the LibCEED context associated with this DM
8f918ec44SMatthew G. Knepley 
9f918ec44SMatthew G. Knepley   Not collective
10f918ec44SMatthew G. Knepley 
11f918ec44SMatthew G. Knepley   Input Parameter:
12f918ec44SMatthew G. Knepley . 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 
19db781477SPatrick Sanan .seealso: `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 
309566063dSJacob Faibussowitsch     PetscCall(PetscStrcpy(ceedresource, "/cpu/self"));
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;
36*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
37f918ec44SMatthew G. Knepley }
38f918ec44SMatthew G. Knepley 
39f918ec44SMatthew G. Knepley #endif
40