static char help[] = "Example program demonstrating projection between particle and finite element spaces\n\n"; #include "petscdmplex.h" #include "petscds.h" #include "petscdmswarm.h" #include "petscksp.h" int main(int argc, char **argv) { DM dm, sw; PetscFE fe; KSP ksp; PC pc; Mat M_p, PM_p=NULL; Vec f, rho, rhs; PetscInt dim, Nc = 1, timestep = 0, i, faces[3]; PetscInt Np = 10, p, field = 0, zero = 0, bs; PetscReal time = 0.0, norm, energy_0, energy_1; PetscReal lo[3], hi[3], h[3]; PetscBool removePoints = PETSC_TRUE; PetscReal *wq, *coords; PetscDataType dtype; PetscErrorCode ierr; PetscBool is_bjac; ierr = PetscInitialize(&argc, &argv, NULL,help);if (ierr) return ierr; /* Create a mesh */ ierr = DMCreate(PETSC_COMM_WORLD, &dm);CHKERRQ(ierr); ierr = DMSetType(dm, DMPLEX);CHKERRQ(ierr); ierr = DMSetFromOptions(dm);CHKERRQ(ierr); ierr = DMViewFromOptions(dm, NULL, "-dm_view");CHKERRQ(ierr); ierr = DMGetDimension(dm, &dim);CHKERRQ(ierr); i = dim; ierr = PetscOptionsGetIntArray(NULL, NULL, "-dm_plex_box_faces", faces, &i, NULL);CHKERRQ(ierr); ierr = PetscOptionsGetInt(NULL, NULL, "-np", &Np, NULL);CHKERRQ(ierr); ierr = DMGetBoundingBox(dm, lo, hi);CHKERRQ(ierr); for (i=0;i