1*e83e87a5Sjeremylt #ifndef petscutils_h 2*e83e87a5Sjeremylt #define petscutils_h 3*e83e87a5Sjeremylt 4*e83e87a5Sjeremylt #include <ceed.h> 5*e83e87a5Sjeremylt #include <petsc.h> 6*e83e87a5Sjeremylt #include <petscdmplex.h> 7*e83e87a5Sjeremylt #include <petscfe.h> 8*e83e87a5Sjeremylt 9*e83e87a5Sjeremylt CeedMemType MemTypeP2C(PetscMemType mtype); 10*e83e87a5Sjeremylt PetscErrorCode PetscFECreateByDegree(DM dm, PetscInt dim, PetscInt Nc, 11*e83e87a5Sjeremylt PetscBool isSimplex, const char prefix[], 12*e83e87a5Sjeremylt PetscInt order, PetscFE *fem); 13*e83e87a5Sjeremylt PetscErrorCode ProjectToUnitSphere(DM dm); 14*e83e87a5Sjeremylt typedef PetscErrorCode (*BCFunction)(PetscInt dim, PetscReal time, 15*e83e87a5Sjeremylt const PetscReal x[], 16*e83e87a5Sjeremylt PetscInt ncompu, PetscScalar *u, void *ctx); 17*e83e87a5Sjeremylt PetscErrorCode SetupDMByDegree(DM dm, PetscInt degree, PetscInt ncompu, 18*e83e87a5Sjeremylt PetscInt topodim, 19*e83e87a5Sjeremylt bool enforcebc, BCFunction bcsfunc); 20*e83e87a5Sjeremylt PetscErrorCode CreateRestrictionFromPlex(Ceed ceed, DM dm, CeedInt P, 21*e83e87a5Sjeremylt CeedInt topodim, CeedInt height, DMLabel domainLabel, CeedInt value, 22*e83e87a5Sjeremylt CeedElemRestriction *Erestrict); 23*e83e87a5Sjeremylt 24*e83e87a5Sjeremylt #endif // petscutils_h 25