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