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