Actual source code: dmceed.c

  1: #include <petsc/private/dmimpl.h>

  3: #ifdef PETSC_HAVE_LIBCEED
  4: #include <petscdmceed.h>

  6: /*@C
  7:   DMGetCeed - Get the LibCEED context associated with this `DM`

  9:   Not Collective

 11:   Input Parameter:
 12: . DM   - The `DM`

 14:   Output Parameter:
 15: . ceed - The LibCEED context

 17:   Level: intermediate

 19: .seealso: `DM`, `DMCreate()`
 20: @*/
 21: PetscErrorCode DMGetCeed(DM dm, Ceed *ceed)
 22: {
 23:   PetscFunctionBegin;
 26:   if (!dm->ceed) {
 27:     char        ceedresource[PETSC_MAX_PATH_LEN]; /* libCEED resource specifier */
 28:     const char *prefix;

 30:     PetscCall(PetscStrncpy(ceedresource, "/cpu/self", sizeof(ceedresource)));
 31:     PetscCall(PetscObjectGetOptionsPrefix((PetscObject)dm, &prefix));
 32:     PetscCall(PetscOptionsGetString(NULL, prefix, "-dm_ceed", ceedresource, sizeof(ceedresource), NULL));
 33:     PetscCallCEED(CeedInit(ceedresource, &dm->ceed));
 34:   }
 35:   *ceed = dm->ceed;
 36:   PetscFunctionReturn(PETSC_SUCCESS);
 37: }

 39: #endif