static const char help[] = "Test freeing of MPI types in PetscSF\n\n"; #include #include #include int main(int argc, char **argv) { PetscInt ierr; PetscSF sf; Vec A,Aout; PetscScalar *bufA; PetscScalar *bufAout; PetscMPIInt rank, size; PetscInt nroots, nleaves; PetscInt i; PetscInt *ilocal; PetscSFNode *iremote; PetscBool test_dupped_type; MPI_Datatype contig; CHKERRQ(PetscInitialize(&argc,&argv,NULL,help)); CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); PetscCheckFalse(size != 1,PETSC_COMM_WORLD, PETSC_ERR_USER, "Only coded for one MPI process"); ierr = PetscOptionsBegin(PETSC_COMM_WORLD,"","PetscSF type freeing options","none");CHKERRQ(ierr); test_dupped_type = PETSC_FALSE; CHKERRQ(PetscOptionsBool("-test_dupped_type", "Test dupped input type","",test_dupped_type,&test_dupped_type,NULL)); ierr = PetscOptionsEnd();CHKERRQ(ierr); CHKERRQ(PetscSFCreate(PETSC_COMM_WORLD,&sf)); CHKERRQ(PetscSFSetFromOptions(sf)); nleaves = 1; nroots = 1; CHKERRQ(PetscMalloc1(nleaves,&ilocal)); for (i = 0; i