static char help[] = "Tests DMSwarm\n\n"; #include #include #include /* Checks for variable blocksize */ PetscErrorCode ex2_1(void) { DM dms; Vec x; PetscMPIInt rank; PetscInt p,bs,nlocal; PetscFunctionBegin; PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); PetscCall(DMCreate(PETSC_COMM_WORLD,&dms)); PetscCall(DMSetType(dms,DMSWARM)); PetscCall(PetscObjectSetName((PetscObject) dms, "Particles")); PetscCall(DMSwarmInitializeFieldRegister(dms)); PetscCall(DMSwarmRegisterPetscDatatypeField(dms,"viscosity",1,PETSC_REAL)); PetscCall(DMSwarmRegisterPetscDatatypeField(dms,"strain",3,PETSC_REAL)); PetscCall(DMSwarmFinalizeFieldRegister(dms)); PetscCall(DMSwarmSetLocalSizes(dms,5+rank,4)); PetscCall(DMView(dms,PETSC_VIEWER_STDOUT_WORLD)); PetscCall(DMSwarmGetLocalSize(dms,&nlocal)); { PetscReal *array; PetscCall(DMSwarmGetField(dms,"viscosity",&bs,NULL,(void**)&array)); for (p=0; p