/* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. This software is distributed under the GNU General Public License. See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ /* Adapted from fix ave/spatial by Niall Jackson */ #ifdef FIX_CLASS FixStyle(ave/spatial/spherical,FixAveSpatialSpherical) #else #ifndef LMP_FIX_AVE_SPATIAL_SPHERICAL_H #define LMP_FIX_AVE_SPATIAL_SPHERICAL_H #include "stdio.h" #include "fix.h" namespace LAMMPS_NS { class FixAveSpatialSpherical : public Fix { public: FixAveSpatialSpherical(class LAMMPS *, int, char **); ~FixAveSpatialSpherical(); int setmask(); void init(); void setup(int); void end_of_step(); double memory_usage(); double compute_array(int,int); void reset_timestep(bigint); private: int me; //rank of the MPI Process int nfreq; //fix nfreq parameter int nrepeat; //fix nrepeat parameter bigint nvalid; //the next timestep on which I'll be invoked //controls for various optional behaviours int normflag; //what type of normalisation to do int norm; int scaleflag; //default units (lattice, box, etc.) double scale; //coordinate scaling factor int regionflag; //restricted to a particular region? char *idregion; //name of the region to use class Region *region; //pointer to the region FILE *fp; //pointer for the output file long int filepos; //file position pointer int ave; //averaging mode int nwindow; //number of averaging windows int iwindow; //current window int window_limit; int overwrite; //continuously overwrite the output (requires ave running) //used to keep track of which per-atom values we deal with int nvalues; //number of variables to average int *argindex; //if the variable is an array, this is the offset in that array int *value2index; int *which; //what sort of variable is arg i? Variable, compute, etc? char **ids; //names of the variables int maxvar; //current size of the varatom array double* varatom; //contains the peratom values of a variable //details of the sphere and the bins int maxbin; //current number of bins in memory (relevant if box changes) int nbins; //number of spherical bins int maxatom; //current size of the bin array int *bin; //stores the bin of each atom double *coord; //values of r at the mid points of the bins double *binvol; //volumes of the bins double *count_one, *count_many, *count_sum, *count_total; //bin populations double **values_one, **values_many, **values_sum, **values_total; //accumulated bin values double origin[3]; //origin coordinates of the sphere int origin_type[3]; //are origin coordinates constant or variable? char *origin_ids[3]; //store the names of variables used to access the origin int origin_index[3]; //indices for the origin variables int origin_val2idx[3]; //compute/variable indices double r_min, r_minsq; //minimum radius, and its square double r_max, r_maxsq; //maximum radius, and its square double deltar, inv_deltar; //radial width of a bin, and its inverse (and their squares) void setup_bins(); //create the bin arrays void set_bin_volumes(); //calculate the volume of each bin void bin_atoms(); //put the atom into bins based on their coordinates bigint nextvalid(); //return the next timestep on which this is invoked //NEED TO BE CATEGORISED int irepeat; double **count_list; double ***values_list; }; } #endif #endif /* ERROR/WARNING messages: E: Illegal ... command Self-explanatory. Check the input script syntax and compare to the documentation for the command. You can use -echo screen as a command-line option when running LAMMPS to see the offending line. E: Region ID for fix ave/spatial/spherical does not exist Self-explanatory. E: Cannot open fix ave/spatial/spherical file %s The specified file cannot be opened. Check that the path and name are correct. E: Compute ID for fix ave/spatial/spherical does not exist Self-explanatory. E: Fix ave/spatial/spherical compute does not calculate per-atom values A compute used by fix ave/spatial/spherical must generate per-atom values. E: Fix ave/spatial/spherical compute does not calculate a per-atom vector A compute used by fix ave/spatial/spherical must generate per-atom values. E: Fix ave/spatial/spherical compute does not calculate a per-atom array Self-explanatory. E: Fix ave/spatial/spherical compute vector is accessed out-of-range The index for the vector is out of bounds. E: Fix ID for fix ave/spatial/spherical does not exist Self-explanatory. E: Fix ave/spatial/spherical fix does not calculate per-atom values A fix used by fix ave/spatial/spherical must generate per-atom values. E: Fix ave/spatial/spherical fix does not calculate a per-atom vector A fix used by fix ave/spatial/spherical must generate per-atom values. E: Fix ave/spatial/spherical fix does not calculate a per-atom array Self-explanatory. E: Fix ave/spatial/spherical fix vector is accessed out-of-range The index for the vector is out of bounds. E: Variable name for fix ave/spatial/spherical does not exist Self-explanatory. E: Fix ave/spatial/spherical variable is not atom-style variable A variable used by fix ave/spatial/spherical must generate per-atom values. E: Fix ave/spatial/spherical for triclinic boxes requires units reduced Self-explanatory. E: Fix ave/spatial/spherical requires reduced units if the box changes size. If the box size changes, only the units reduced option can be used. E: Fix for fix ave/spatial/spherical not computed at compatible time Fixes generate their values on specific timesteps. Fix ave/spatial/spherical is requesting a value on a non-allowed timestep. E: Fix ave/spatial/spherical missed timestep You cannot reset the timestep to a value beyond where the fix expects to next perform averaging. */