double Properties::min_radius() { const double maxtype = max_type(); double minRadius = BIG; // check local particles for (int i=0;i<atom->nlocal;i++) { const double irad = atom->radius[i]; // minimum if (irad < minRadius) minRadius = irad; } // check all fixes // such as fix insert, fix change/type, fix wall, fix pour for(int i=0;i<modify->nfix;i++) { // checks Fix *fix = modify->fix[i]; if(!fix->use_rad_for_cut_neigh_and_ghost()) continue; // loop over all types since min_rad(int) and max_rad(int) need a type for (int j=1;j<maxtype+1;j++) { const double f_minrad = fix->min_rad(j); if(f_minrad > SMALL && f_minrad < minRadius) minRadius = f_minrad; } } //Get min/max from other procs double minRadius_all; MPI_Allreduce(&minRadius,&minRadius_all, 1, MPI_DOUBLE, MPI_MIN, world); minRadius = minRadius_all; //error check if(minRadius <= SMALL) error->all(FLERR,"Atom radius must be bigger than zero for granular simulations"); return minRadius; }