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