1 #include <petsc/private/dmimpl.h> /*I "petscdm.h" I*/ 2 3 #ifdef PETSC_HAVE_LIBCEED 4 #include <petscdmceed.h> 5 6 /*@C 7 DMGetCeed - Get the LibCEED context associated with this DM 8 9 Not collective 10 11 Input Parameter: 12 . DM - The DM 13 14 Output Parameter: 15 . ceed - The LibCEED context 16 17 Level: intermediate 18 19 .seealso: DMCreate() 20 @*/ 21 PetscErrorCode DMGetCeed(DM dm, Ceed *ceed) 22 { 23 PetscErrorCode ierr; 24 25 PetscFunctionBegin; 26 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); 27 PetscValidPointer(ceed, 2); 28 if (!dm->ceed) { 29 char ceedresource[PETSC_MAX_PATH_LEN]; /* libCEED resource specifier */ 30 const char *prefix; 31 32 ierr = PetscStrcpy(ceedresource, "/cpu/self");CHKERRQ(ierr); 33 ierr = PetscObjectGetOptionsPrefix((PetscObject) dm, &prefix);CHKERRQ(ierr); 34 ierr = PetscOptionsGetString(NULL, prefix, "-dm_ceed", ceedresource, sizeof(ceedresource), NULL);CHKERRQ(ierr); 35 ierr = CeedInit(ceedresource, &dm->ceed);CHKERRQ(ierr); 36 } 37 *ceed = dm->ceed; 38 PetscFunctionReturn(0); 39 } 40 41 #endif 42