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; CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); CHKERRQ(DMCreate(PETSC_COMM_WORLD,&dms)); CHKERRQ(DMSetType(dms,DMSWARM)); CHKERRQ(DMSwarmInitializeFieldRegister(dms)); CHKERRQ(DMSwarmRegisterPetscDatatypeField(dms,"viscosity",1,PETSC_REAL)); CHKERRQ(DMSwarmRegisterPetscDatatypeField(dms,"strain",3,PETSC_REAL)); CHKERRQ(DMSwarmFinalizeFieldRegister(dms)); CHKERRQ(DMSwarmSetLocalSizes(dms,5+rank,4)); CHKERRQ(DMView(dms,PETSC_VIEWER_STDOUT_WORLD)); CHKERRQ(DMSwarmGetLocalSize(dms,&nlocal)); { PetscReal *array; CHKERRQ(DMSwarmGetField(dms,"viscosity",&bs,NULL,(void**)&array)); for (p=0; p