- New files for the pair interactions - New files for the documentation - Spin orbit coupling via Neel approach
19344 lines
1.4 MiB
19344 lines
1.4 MiB
angle.cpp:/* ----------------------------------------------------------------------
|
|
angle.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
angle.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
angle.cpp:------------------------------------------------------------------------- */
|
|
angle.cpp:/* ---------------------------------------------------------------------- */
|
|
angle.cpp:/* ---------------------------------------------------------------------- */
|
|
angle.cpp:/* ----------------------------------------------------------------------
|
|
angle.cpp:------------------------------------------------------------------------- */
|
|
angle.cpp:/* ----------------------------------------------------------------------
|
|
angle.cpp:------------------------------------------------------------------------- */
|
|
angle.cpp: eflag_atom = eflag / 2;
|
|
angle.cpp: vflag_atom = vflag / 4;
|
|
angle.cpp: // reallocate per-atom arrays if necessary
|
|
angle.cpp: // zero accumulators
|
|
angle.cpp:/* ----------------------------------------------------------------------
|
|
angle.cpp:------------------------------------------------------------------------- */
|
|
angle.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
angle_hybrid.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
angle_hybrid.cpp:------------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_hybrid.cpp: // save ptrs to original anglelist
|
|
angle_hybrid.cpp: // if this is re-neighbor step, create sub-style anglelists
|
|
angle_hybrid.cpp: // nanglelist[] = length of each sub-style list
|
|
angle_hybrid.cpp: // realloc sub-style anglelist if necessary
|
|
angle_hybrid.cpp: // load sub-style anglelist with 4 values from original anglelist
|
|
angle_hybrid.cpp: // call each sub-style's compute function
|
|
angle_hybrid.cpp: // set neighbor->anglelist to sub-style anglelist before call
|
|
angle_hybrid.cpp: // accumulate sub-style global/peratom energy/virial in hybrid
|
|
angle_hybrid.cpp: // restore ptrs to original anglelist
|
|
angle_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp:------------------------------------------------------------------------- */
|
|
angle_hybrid.cpp: // delete old lists, since cannot just change settings
|
|
angle_hybrid.cpp: // count sub-styles by skipping numeric args
|
|
angle_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric word
|
|
angle_hybrid.cpp: // need a better way to skip these exceptions
|
|
angle_hybrid.cpp: // allocate list of sub-styles
|
|
angle_hybrid.cpp: // allocate each sub-style and call its settings() with subset of args
|
|
angle_hybrid.cpp: // allocate uses suffix, but don't store suffix version in keywords,
|
|
angle_hybrid.cpp: // else syntax in coeff() will not match
|
|
angle_hybrid.cpp: // define subset of args for a sub-style by skipping numeric args
|
|
angle_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric
|
|
angle_hybrid.cpp: // need a better way to skip these exceptions
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp:---------------------------------------------------------------------- */
|
|
angle_hybrid.cpp: // 2nd arg = angle sub-style name
|
|
angle_hybrid.cpp: // allow for "none" or "skip" as valid sub-style name
|
|
angle_hybrid.cpp: // move 1st arg to 2nd arg
|
|
angle_hybrid.cpp: // just copy ptrs, since arg[] points into original input line
|
|
angle_hybrid.cpp: // invoke sub-style coeff() starting with 1st arg
|
|
angle_hybrid.cpp: // set setflag and which type maps to which sub-style
|
|
angle_hybrid.cpp: // if sub-style is skip: auxiliary class2 setting in data file so ignore
|
|
angle_hybrid.cpp: // if sub-style is none: set hybrid setflag, wipe out map
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp:------------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp:------------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp:------------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp:------------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
angle_hybrid.cpp:------------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ----------------------------------------------------------------------
|
|
angle_zero.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
angle_zero.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
angle_zero.cpp:------------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ----------------------------------------------------------------------
|
|
angle_zero.cpp:------------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ----------------------------------------------------------------------
|
|
angle_zero.cpp:------------------------------------------------------------------------- */
|
|
angle_zero.cpp: // convert theta0 from degrees to radians
|
|
angle_zero.cpp: theta0[i] = theta0_one/180.0 * MY_PI;
|
|
angle_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ----------------------------------------------------------------------
|
|
angle_zero.cpp:------------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ----------------------------------------------------------------------
|
|
angle_zero.cpp:------------------------------------------------------------------------- */
|
|
angle_zero.cpp:/* ----------------------------------------------------------------------
|
|
angle_zero.cpp:------------------------------------------------------------------------- */
|
|
angle_zero.cpp: fprintf(fp,"%d %g\n",i,theta0[i]/MY_PI*180.0);
|
|
angle_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
atom.cpp:/* ---------------------------------------------------------------------- */
|
|
atom.cpp: // initialize atom arrays
|
|
atom.cpp: // customize by adding new array
|
|
atom.cpp: // USER-SPIN
|
|
atom.cpp: // USER-DPD
|
|
atom.cpp: // USER-SMD
|
|
atom.cpp: // molecular info
|
|
atom.cpp: // user-defined molecules
|
|
atom.cpp: // custom atom arrays
|
|
atom.cpp: // initialize atom style and array existence flags
|
|
atom.cpp: // customize by adding new flag
|
|
atom.cpp: //Magnetic flags
|
|
atom.cpp: // USER-SMD
|
|
atom.cpp: // Peridynamic scale factor
|
|
atom.cpp: // ntype-length arrays
|
|
atom.cpp: // callback lists & extra restart info
|
|
atom.cpp: // default atom ID and mapping values
|
|
atom.cpp:/* ---------------------------------------------------------------------- */
|
|
atom.cpp: // delete atom arrays
|
|
atom.cpp: // customize by adding new array
|
|
atom.cpp: // delete custom atom arrays
|
|
atom.cpp: // delete user-defined molecules
|
|
atom.cpp: // delete per-type arrays
|
|
atom.cpp: // delete extra arrays
|
|
atom.cpp: // delete mapping data structures
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // unset atom style and array existence flags
|
|
atom.cpp: // may have been set by old avec
|
|
atom.cpp: // customize by adding new flag
|
|
atom.cpp: //Magnetic flags
|
|
atom.cpp: // create instance of AtomVec
|
|
atom.cpp: // use grow() to initialize atom-based arrays to length 1
|
|
atom.cpp: // so that x[0][0] can always be referenced even if proc has no atoms
|
|
atom.cpp: if (sflag == 1) sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
atom.cpp: else sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
atom.cpp: // if molecular system:
|
|
atom.cpp: // atom IDs must be defined
|
|
atom.cpp: // force atom map to be created
|
|
atom.cpp: // map style may be reset by map_init() and its call to map_style_set()
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
atom.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
atom.cpp: //printf("test entries function: %s, %d, %d \n ",style, trysuffix, &sflag);
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ---------------------------------------------------------------------- */
|
|
atom.cpp: // delete extra array since it doesn't persist past first run
|
|
atom.cpp: // check arrays that are atom type in length
|
|
atom.cpp: // setup of firstgroup
|
|
atom.cpp: // init AtomVec
|
|
atom.cpp:/* ---------------------------------------------------------------------- */
|
|
atom.cpp: // setup bins for sorting
|
|
atom.cpp: // cannot do this in init() because uses neighbor cutoff
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // maxtag_all = max tag for all atoms
|
|
atom.cpp: // DEBUG: useful for generating 64-bit IDs even for small systems
|
|
atom.cpp: // use only when LAMMPS is compiled with BIGBIG
|
|
atom.cpp: //maxtag_all += 1000000000000;
|
|
atom.cpp: // notag = # of atoms I own with no tag (tag = 0)
|
|
atom.cpp: // notag_sum = # of total atoms on procs <= me with no tag
|
|
atom.cpp: // itag = 1st new tag that my untagged atoms should use
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // set bounds for my proc
|
|
atom.cpp: // if periodic and I am lo/hi proc, adjust bounds by EPSILON
|
|
atom.cpp: // insures all data atoms will be owned even with round-off
|
|
atom.cpp: // xptr = which word in line starts xyz coords
|
|
atom.cpp: // iptr = which word in line starts ix,iy,iz image flags
|
|
atom.cpp: // loop over lines of atom data
|
|
atom.cpp: // tokenize the line into values
|
|
atom.cpp: // extract xyz coords and image flags
|
|
atom.cpp: // remap atom into simulation box
|
|
atom.cpp: // if atom is in my sub-domain, unpack its values
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // loop over lines of atom velocities
|
|
atom.cpp: // tokenize the line into values
|
|
atom.cpp: // if I own atom tag, unpack its values
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // loop over lines of bonus atom data
|
|
atom.cpp: // tokenize the line into values
|
|
atom.cpp: // if I own atom tag, unpack its values
|
|
atom.cpp: // ok to call child's data_atom_bonus() method thru parent avec_bonus,
|
|
atom.cpp: // since data_bonus() was called with child ptr, and method is virtual
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // loop over lines of body data
|
|
atom.cpp: // if I own atom tag, tokenize lines into ivalues/dvalues, call data_body()
|
|
atom.cpp: // else skip values
|
|
atom.cpp: nvalues = ninteger + ndouble; // number of values to skip
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp: init per-atom fix/compute/variable values for newly created atoms
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // 1st molecule in set stores nset = # of mols, others store nset = 0
|
|
atom.cpp: // ifile = count of molecules in set
|
|
atom.cpp: // index = argument index where next molecule starts, updated by constructor
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: rmass[ilocal] = 4.0*MY_PI/3.0 *
|
|
atom.cpp: body[ilocal] = 0; // as if a body read from data file
|
|
atom.cpp: // add bond topology info
|
|
atom.cpp: // for molecular atom styles, but not atom style template
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // insure there is one extra atom location at end of arrays for swaps
|
|
atom.cpp: // loop over owned atoms
|
|
atom.cpp: // nfirst = index of first atom not in firstgroup
|
|
atom.cpp: // when find firstgroup atom out of place, swap it with atom nfirst
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp: don't have to worry about clearing/setting atom->map since done in comm
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // set next timestep for sorting to take place
|
|
atom.cpp: nextsort = (update->ntimestep/sortfreq)*sortfreq + sortfreq;
|
|
atom.cpp: // re-setup sort bins if needed
|
|
atom.cpp: // reallocate per-atom vectors if needed
|
|
atom.cpp: // insure there is one extra atom location at end of arrays for swaps
|
|
atom.cpp: // bin atoms in reverse order so linked list will be in forward order
|
|
atom.cpp: // permute = desired permutation of atoms
|
|
atom.cpp: // permute[I] = J means Ith new atom will be Jth old atom
|
|
atom.cpp: // current = current permutation, just reuse next vector
|
|
atom.cpp: // current[I] = J means Ith current atom is Jth old atom
|
|
atom.cpp: // reorder local atom list, when done, current = permute
|
|
atom.cpp: // perform "in place" using copy() to extra atom location at end of list
|
|
atom.cpp: // inner while loop processes one cycle of the permutation
|
|
atom.cpp: // copy before inner-loop moves an atom to end of atom list
|
|
atom.cpp: // copy after inner-loop moves atom at end of list back into list
|
|
atom.cpp: // empty = location in atom list that is currently empty
|
|
atom.cpp: // sanity check that current = permute
|
|
atom.cpp: //int flag = 0;
|
|
atom.cpp: //for (i = 0; i < nlocal; i++)
|
|
atom.cpp: // if (current[i] != permute[i]) flag = 1;
|
|
atom.cpp: //int flagall;
|
|
atom.cpp: //MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world);
|
|
atom.cpp: //if (flagall) error->all(FLERR,"Atom sort did not operate correctly");
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // binsize:
|
|
atom.cpp: // user setting if explicitly set
|
|
atom.cpp: // default = 1/2 of neighbor cutoff
|
|
atom.cpp: // check if neighbor cutoff = 0.0
|
|
atom.cpp: double bininv = 1.0/binsize;
|
|
atom.cpp: // nbin xyz = local bins
|
|
atom.cpp: // bbox lo/hi = bounding box of my sub-domain
|
|
atom.cpp: bininvx = nbinx / (bboxhi[0]-bboxlo[0]);
|
|
atom.cpp: bininvy = nbiny / (bboxhi[1]-bboxlo[1]);
|
|
atom.cpp: bininvz = nbinz / (bboxhi[2]-bboxlo[2]);
|
|
atom.cpp: // reallocate per-bin memory if needed
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // find the fix
|
|
atom.cpp: // if find NULL ptr:
|
|
atom.cpp: // it's this one, since it is being replaced and has just been deleted
|
|
atom.cpp: // at this point in re-creation
|
|
atom.cpp: // if don't find NULL ptr:
|
|
atom.cpp: // i is set to nfix = new one currently being added at end of list
|
|
atom.cpp: // add callback to lists, reallocating if necessary
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp: // compact the list of callbacks
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp: return index if found, and flag = 0/1 for int/double
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp: add a custom variable with name of type flag = 0/1 for int/double
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp: remove a custom variable of type flag = 0/1 for int/double at index
|
|
atom.cpp: ivector/dvector and iname/dname lists never shrink
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom.cpp:/* ----------------------------------------------------------------------
|
|
atom.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_map.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp: // check for new map style if max atomID changed (check = 1 = default)
|
|
atom_map.cpp: // recreate = 1 if must delete old map and create new map
|
|
atom_map.cpp: // recreate = 0 if can re-use old map w/out realloc and just adjust settings
|
|
atom_map.cpp: // map_maxarray/map_nhash initially -1, to force recreate even when no atoms
|
|
atom_map.cpp: // if not recreating:
|
|
atom_map.cpp: // for array, initialize current map_tag_max values
|
|
atom_map.cpp: // for hash, set all buckets to empty, put all entries in free list
|
|
atom_map.cpp: // recreating: delete old map and create new one for array or hash
|
|
atom_map.cpp: // map_nhash = max # of atoms that can be hashed on this proc
|
|
atom_map.cpp: // set to max of ave atoms/proc or atoms I can store
|
|
atom_map.cpp: // multiply by 2, require at least 1000
|
|
atom_map.cpp: // doubling means hash table will need to be re-init only rarely
|
|
atom_map.cpp: int nper = static_cast<int> (natoms/comm->nprocs);
|
|
atom_map.cpp: // map_nbucket = prime just larger than map_nhash
|
|
atom_map.cpp: // next_prime() should be fast enough,
|
|
atom_map.cpp: // about 10% of odd integers are prime above 1M
|
|
atom_map.cpp: // set all buckets to empty
|
|
atom_map.cpp: // set hash to map_nhash in length
|
|
atom_map.cpp: // put all hash entries in free list and point them to each other
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp: // search for key
|
|
atom_map.cpp: // if don't find it, done
|
|
atom_map.cpp: // delete the hash entry and add it to free list
|
|
atom_map.cpp: // special logic if entry is 1st in the bucket
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp: // possible reallocation of sametag must come before loop over atoms
|
|
atom_map.cpp: // since loop sets sametag
|
|
atom_map.cpp: // if this proc has more atoms than hash table size, call map_init()
|
|
atom_map.cpp: // call with 0 since max atomID in system has not changed
|
|
atom_map.cpp: // possible reallocation of sametag must come after map_init(),
|
|
atom_map.cpp: // b/c map_init() may invoke map_delete(), whacking sametag
|
|
atom_map.cpp: // search for key
|
|
atom_map.cpp: // if found it, just overwrite local value with index
|
|
atom_map.cpp: // take one entry from free list
|
|
atom_map.cpp: // add the new global/local pair as entry at end of bucket list
|
|
atom_map.cpp: // special logic if this entry is 1st in bucket
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp: // search for key
|
|
atom_map.cpp: // if found it, just overwrite local value with index
|
|
atom_map.cpp: // take one entry from free list
|
|
atom_map.cpp: // add the new global/local pair as entry at end of bucket list
|
|
atom_map.cpp: // special logic if this entry is 1st in bucket
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp: // map_tag_max = max ID of any atom that will be in new map
|
|
atom_map.cpp: // map_tag_max = -1 if no atoms
|
|
atom_map.cpp: // set map_style for new map
|
|
atom_map.cpp: // if user-selected, use that setting
|
|
atom_map.cpp: // else if map_tag_max > 1M, use hash
|
|
atom_map.cpp: // else use array
|
|
atom_map.cpp: // recreate = 1 if must create new map b/c map_style changed
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_map.cpp:/* ----------------------------------------------------------------------
|
|
atom_map.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_atomic.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_atomic.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_atomic.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_body.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: // size_forward and size_border set in settings(), via Body class
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: // max size of forward/border comm
|
|
atom_vec_body.cpp: // 7,16 are packed in pack_comm/pack_border
|
|
atom_vec_body.cpp: // bptr values = max number of additional ivalues/dvalues from Body class
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: // if deleting atom J via delflag and J has bonus data, then delete it
|
|
atom_vec_body.cpp: // if atom I has bonus data, reset I's bonus.ilocal to loc J
|
|
atom_vec_body.cpp: // do NOT do this if self-copy (I=J) since I's bonus data is already deleted
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: // corresponding put() calls are in clear_bonus()
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: // corresponding put() calls are in clear_bonus()
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: // corresponding put() calls are in clear_bonus()
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: else m += (bonus[j].ninteger+1)/2;
|
|
atom_vec_body.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: // corresponding put() calls are in copy()
|
|
atom_vec_body.cpp: else m += (bonus[nlocal_bonus].ninteger+1)/2;
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: else n += (bonus[body[i]].ninteger+1)/2;
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: else m += (bonus[j].ninteger+1)/2;
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp: else m += (bonus[nlocal_bonus].ninteger+1)/2;
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp: body computes its size based on ivalues/dvalues and returns it
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_body.cpp: debug method for sanity checking of own/bonus data pointers
|
|
atom_vec_body.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_body.cpp:/*
|
|
atom_vec_body.cpp:*/
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_charge.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_charge.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_charge.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp: nmax = nmax/DELTA * DELTA;
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp: nmax_bonus = nmax_bonus/DELTA_BONUS * DELTA_BONUS;
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp: do not count/pack bonds with bondtype = 0
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp: do not count/pack angles with angletype = 0
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_ellipsoid.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp: // if deleting atom J via delflag and J has bonus data, then delete it
|
|
atom_vec_ellipsoid.cpp: // if atom I has bonus data, reset I's bonus.ilocal to loc J
|
|
atom_vec_ellipsoid.cpp: // do NOT do this if self-copy (I=J) since I's bonus data is already deleted
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp: // reset ellipsoid mass
|
|
atom_vec_ellipsoid.cpp: // previously stored density in rmass
|
|
atom_vec_ellipsoid.cpp: rmass[m] *= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2];
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp: buf[i][3] = rmass[i] / (4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]);
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp: buf[1] = rmass[i] / (4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]);
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_ellipsoid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_ellipsoid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_hybrid.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // build list of all known atom styles
|
|
atom_vec_hybrid.cpp: // allocate list of sub-styles as big as possibly needed if no extra args
|
|
atom_vec_hybrid.cpp: // allocate each sub-style
|
|
atom_vec_hybrid.cpp: // call process_args() with set of args that are not atom style names
|
|
atom_vec_hybrid.cpp: // use known_style() to determine which args these are
|
|
atom_vec_hybrid.cpp: // free allstyles created by build_styles()
|
|
atom_vec_hybrid.cpp: // hybrid settings are MAX or MIN of sub-style settings
|
|
atom_vec_hybrid.cpp: // hybrid sizes are minimal values plus extra values for each sub-style
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // sub-styles perform all reallocation
|
|
atom_vec_hybrid.cpp: // turn off nextra_grow so hybrid can do that once below
|
|
atom_vec_hybrid.cpp: // insure hybrid local ptrs and sub-style ptrs are up to date
|
|
atom_vec_hybrid.cpp: // for sub-styles, do this in case
|
|
atom_vec_hybrid.cpp: // multiple sub-style reallocs of same array occurred
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // pack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // pack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // unpack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // unpack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // pack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // unpack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // pack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // pack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // unpack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // unpack sub-style contributions as contiguous chunks
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // each sub-style parses sub-style specific values
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: // each sub-style parses sub-style specific values
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp: int index = multiindex/nstyles;
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_hybrid.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_line.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: // if deleting atom J via delflag and J has bonus data, then delete it
|
|
atom_vec_line.cpp: // if atom I has bonus data, reset I's bonus.ilocal to loc J
|
|
atom_vec_line.cpp: // do NOT do this if self-copy (I=J) since I's bonus data is already deleted
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: // also set radius = half of length
|
|
atom_vec_line.cpp: // unless value = 0.0, then set diameter = 1.0
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal];
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: rmass[nlocal] *= 4.0*MY_PI/3.0 *
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: rmass[nlocal] *= 4.0*MY_PI/3.0 *
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: if (dy >= 0.0) bonus[nlocal_bonus].theta = acos(dx/length);
|
|
atom_vec_line.cpp: else bonus[nlocal_bonus].theta = -acos(dx/length);
|
|
atom_vec_line.cpp: if (delta/length > EPSILON)
|
|
atom_vec_line.cpp: // reset line radius and mass
|
|
atom_vec_line.cpp: // rmass currently holds density
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: buf[i][4] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]);
|
|
atom_vec_line.cpp: else buf[i][4] = rmass[i]/bonus[line[i]].length;
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp: buf[2] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]);
|
|
atom_vec_line.cpp: else buf[2] = rmass[i]/bonus[line[i]].length;
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_line.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_line.cpp:/*
|
|
atom_vec_line.cpp: //if (comm->me == 1 && update->ntimestep == 873)
|
|
atom_vec_line.cpp: // printf("CCHK %s: %d %d: %d %d: %d %d\n",
|
|
atom_vec_line.cpp: // str,i,n,line[i],nlocal_bonus,bonus[line[i]].ilocal,iflag);
|
|
atom_vec_line.cpp:*/
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp: // set radvary if particle diameters are time-varying due to fix adapt
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp: rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal];
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp: rmass[nlocal] = 4.0*MY_PI/3.0 *
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp: rmass[nlocal] = 4.0*MY_PI/3.0 *
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp: buf[i][3] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]);
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp: else buf[1] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]);
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_sphere.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_sphere.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_spin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp: mass_type = 1; //check why
|
|
atom_vec_spin.cpp: //comm_x_only = 0;
|
|
atom_vec_spin.cpp: //comm_f_only = 1;
|
|
atom_vec_spin.cpp: size_data_atom = 9; //to check later
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp: //Allocating mag. quantities
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_spin.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_spin.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
atom_vec_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: // if deleting atom J via delflag and J has bonus data, then delete it
|
|
atom_vec_tri.cpp: // if atom I has bonus data, reset I's bonus.ilocal to loc J
|
|
atom_vec_tri.cpp: // do NOT do this if self-copy (I=J) since I's bonus data is already deleted
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: // also set radius = distance from center to corner-pt = len(c1)
|
|
atom_vec_tri.cpp: // unless size = 0.0, then set diameter = 1.0
|
|
atom_vec_tri.cpp: c1[0] = -size/2.0;
|
|
atom_vec_tri.cpp: c1[1] = -sqrt(3.0)/2.0 * size / 3.0;
|
|
atom_vec_tri.cpp: c2[0] = size/2.0;
|
|
atom_vec_tri.cpp: c2[1] = -sqrt(3.0)/2.0 * size / 3.0;
|
|
atom_vec_tri.cpp: c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0;
|
|
atom_vec_tri.cpp: inertia[0] = sqrt(3.0)/96.0 * size*size*size*size;
|
|
atom_vec_tri.cpp: inertia[1] = sqrt(3.0)/96.0 * size*size*size*size;
|
|
atom_vec_tri.cpp: inertia[2] = sqrt(3.0)/48.0 * size*size*size*size;
|
|
atom_vec_tri.cpp: c1[0] = -size/2.0;
|
|
atom_vec_tri.cpp: c1[1] = -sqrt(3.0)/2.0 * size / 3.0;
|
|
atom_vec_tri.cpp: c2[0] = size/2.0;
|
|
atom_vec_tri.cpp: c2[1] = -sqrt(3.0)/2.0 * size / 3.0;
|
|
atom_vec_tri.cpp: c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0;
|
|
atom_vec_tri.cpp: inertia[0] = sqrt(3.0)/96.0 * size*size*size*size;
|
|
atom_vec_tri.cpp: inertia[1] = sqrt(3.0)/96.0 * size*size*size*size;
|
|
atom_vec_tri.cpp: inertia[2] = sqrt(3.0)/48.0 * size*size*size*size;
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal];
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: rmass[nlocal] *= 4.0*MY_PI/3.0 *
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: rmass[nlocal] *= 4.0*MY_PI/3.0 *
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: // check for duplicate points
|
|
atom_vec_tri.cpp: // size = length of one edge
|
|
atom_vec_tri.cpp: // centroid = 1/3 of sum of vertices
|
|
atom_vec_tri.cpp: centroid[0] = (c1[0]+c2[0]+c3[0]) / 3.0;
|
|
atom_vec_tri.cpp: centroid[1] = (c1[1]+c2[1]+c3[1]) / 3.0;
|
|
atom_vec_tri.cpp: centroid[2] = (c1[2]+c2[2]+c3[2]) / 3.0;
|
|
atom_vec_tri.cpp: if (delta/size > EPSILON)
|
|
atom_vec_tri.cpp: // reset tri radius and mass
|
|
atom_vec_tri.cpp: // rmass currently holds density
|
|
atom_vec_tri.cpp: // tri area = 0.5 len(U x V), where U,V are edge vectors from one vertex
|
|
atom_vec_tri.cpp: // inertia = inertia tensor of triangle as 6-vector in Voigt notation
|
|
atom_vec_tri.cpp: // diagonalize inertia tensor via Jacobi rotations
|
|
atom_vec_tri.cpp: // bonus[].inertia = 3 eigenvalues = principal moments of inertia
|
|
atom_vec_tri.cpp: // evectors and exzy_space = 3 evectors = principal axes of triangle
|
|
atom_vec_tri.cpp: // enforce 3 orthogonal vectors as a right-handed coordinate system
|
|
atom_vec_tri.cpp: // flip 3rd vector if needed
|
|
atom_vec_tri.cpp: // create initial quaternion
|
|
atom_vec_tri.cpp: // bonus c1,c2,c3 = displacement of c1,c2,c3 from centroid
|
|
atom_vec_tri.cpp: // in basis of principal axes
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: buf[i][4] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]);
|
|
atom_vec_tri.cpp: buf[i][4] = rmass[i]/area;
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp: buf[2] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]);
|
|
atom_vec_tri.cpp: buf[2] = rmass[i]/area;
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
atom_vec_tri.cpp:/* ----------------------------------------------------------------------
|
|
atom_vec_tri.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
balance.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp://#define BALANCE_DEBUG 1
|
|
balance.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
balance.cpp:/* ---------------------------------------------------------------------- */
|
|
balance.cpp:/* ---------------------------------------------------------------------- */
|
|
balance.cpp: // check nfix in case all fixes have already been deleted
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // parse required arguments
|
|
balance.cpp: // error checks
|
|
balance.cpp: // process remaining optional args
|
|
balance.cpp: // insure particles are in current box & update box via shrink-wrap
|
|
balance.cpp: // init entire system since comm->setup is done
|
|
balance.cpp: // comm::init needs neighbor::init needs pair::init needs kspace::init, etc
|
|
balance.cpp: // must reset atom map after exchange() since it clears it
|
|
balance.cpp: // imbinit = initial imbalance
|
|
balance.cpp: // no load-balance if imbalance doesn't exceed threshold
|
|
balance.cpp: // unless switching from tiled to non tiled layout, then force rebalance
|
|
balance.cpp: // debug output of initial state
|
|
balance.cpp: // perform load-balance
|
|
balance.cpp: // style XYZ = explicit setting of cutting planes of logical 3d grid
|
|
balance.cpp: comm->xsplit[i] = i * 1.0/procgrid[0];
|
|
balance.cpp: comm->ysplit[i] = i * 1.0/procgrid[1];
|
|
balance.cpp: comm->zsplit[i] = i * 1.0/procgrid[2];
|
|
balance.cpp: // style SHIFT = adjust cutting planes of logical 3d grid
|
|
balance.cpp: // style BISECTION = recursive coordinate bisectioning
|
|
balance.cpp: // reset proc sub-domains
|
|
balance.cpp: // for either brick or tiled comm style
|
|
balance.cpp: // move particles to new processors via irregular()
|
|
balance.cpp: // output of final result
|
|
balance.cpp: // check if any particles were lost
|
|
balance.cpp: // imbfinal = final imbalance
|
|
balance.cpp: // stats output
|
|
balance.cpp: fprintf(screen," initial/final max load/proc = %g %g\n",
|
|
balance.cpp: fprintf(screen," initial/final imbalance factor = %g %g\n",
|
|
balance.cpp: fprintf(logfile," initial/final max load/proc = %g %g\n",
|
|
balance.cpp: fprintf(logfile," initial/final imbalance factor = %g %g\n",
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // count max number of weight settings
|
|
balance.cpp: // output file
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp: return imbalance = max load per proc / ave load per proc
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: if (maxcost > 0.0) imbalance = maxcost / (totalcost/nprocs);
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // NOTE: this logic is specific to orthogonal boxes, not triclinic
|
|
balance.cpp: // shrink-wrap simulation box around atoms for input to RCB
|
|
balance.cpp: // leads to better-shaped sub-boxes when atoms are far from box boundaries
|
|
balance.cpp: // invoke RCB
|
|
balance.cpp: // then invert() to create list of proc assignments for my atoms
|
|
balance.cpp: // NOTE: (3/2017) can remove undocumented "old" option at some point
|
|
balance.cpp: // ditto in rcb.cpp
|
|
balance.cpp: // reset RCB lo/hi bounding box to full simulation box as needed
|
|
balance.cpp: // store RCB cut, dim, lo/hi box in CommTiled
|
|
balance.cpp: // cut and lo/hi need to be in fractional form so can
|
|
balance.cpp: // OK if changes by epsilon from what RCB used since atoms
|
|
balance.cpp: // will subsequently migrate to new owning procs by exchange() anyway
|
|
balance.cpp: // ditto for atoms exactly on lo/hi RCB box boundaries due to ties
|
|
balance.cpp: if (idim >= 0) comm->rcbcutfrac = (rcb->cut - boxlo[idim]) / prd[idim];
|
|
balance.cpp: mysplit[0][0] = (lo[0] - boxlo[0]) / prd[0];
|
|
balance.cpp: else mysplit[0][1] = (hi[0] - boxlo[0]) / prd[0];
|
|
balance.cpp: mysplit[1][0] = (lo[1] - boxlo[1]) / prd[1];
|
|
balance.cpp: else mysplit[1][1] = (hi[1] - boxlo[1]) / prd[1];
|
|
balance.cpp: mysplit[2][0] = (lo[2] - boxlo[2]) / prd[2];
|
|
balance.cpp: else mysplit[2][1] = (hi[2] - boxlo[2]) / prd[2];
|
|
balance.cpp: // return list of procs to send my atoms to
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // if current layout is TILED, set initial uniform splits in Comm
|
|
balance.cpp: // this gives starting point to subsequent shift balancing
|
|
balance.cpp: for (int i = 0; i < procgrid[0]; i++) xsplit[i] = i * 1.0/procgrid[0];
|
|
balance.cpp: for (int i = 0; i < procgrid[1]; i++) ysplit[i] = i * 1.0/procgrid[1];
|
|
balance.cpp: for (int i = 0; i < procgrid[2]; i++) zsplit[i] = i * 1.0/procgrid[2];
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // no balancing if no atoms
|
|
balance.cpp: // set delta for 1d balancing = root of threshold
|
|
balance.cpp: // root = # of dimensions being balanced on
|
|
balance.cpp: double delta = pow(stopthresh,1.0/ndim) - 1.0;
|
|
balance.cpp: // all balancing done in lamda coords
|
|
balance.cpp: // loop over dimensions in balance string
|
|
balance.cpp: // split = ptr to xyz split in Comm
|
|
balance.cpp: // initial count and sum
|
|
balance.cpp: // target[i] = desired sum at split I
|
|
balance.cpp: for (i = 0; i < np; i++) target[i] = totalcost/np * i;
|
|
balance.cpp: // lo[i] = closest split <= split[i] with a sum <= target
|
|
balance.cpp: // hi[i] = closest split >= split[i] with a sum >= target
|
|
balance.cpp: // iterate until balanced
|
|
balance.cpp: // stop if no change in splits, b/c all targets are met exactly
|
|
balance.cpp: // stop if all split sums are within delta of targets
|
|
balance.cpp: // this is a 1d test of particle count per slice
|
|
balance.cpp: // assumption is that this is sufficient accuracy
|
|
balance.cpp: // for 3d imbalance factor to reach threshold
|
|
balance.cpp: if (fabs(1.0*(sum[i]-target[i]))/target[i] > delta) doneflag = 0;
|
|
balance.cpp: // eliminate final adjacent splits that are duplicates
|
|
balance.cpp: // can happen if particle distribution is narrow and Nitermax is small
|
|
balance.cpp: // set lo = midpt between splits
|
|
balance.cpp: // spread duplicates out evenly between bounding midpts with non-duplicates
|
|
balance.cpp: // i,j = lo/hi indices of set of duplicate splits
|
|
balance.cpp: // delta = new spacing between duplicates
|
|
balance.cpp: // bounding midpts = lo[i-1] and lo[j]
|
|
balance.cpp: delta = (lo[j] - lo[i-1]) / (j-i+2);
|
|
balance.cpp: // sanity check on bad duplicate or inverted splits
|
|
balance.cpp: // zero or negative width sub-domains will break Comm class
|
|
balance.cpp: // should never happen if recursive multisection algorithm is correct
|
|
balance.cpp: /*
|
|
balance.cpp: */
|
|
balance.cpp: // stop at this point in bstr if imbalance factor < threshold
|
|
balance.cpp: // this is a true 3d test of particle count per processor
|
|
balance.cpp: // restore real coords
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp: lo/hi = split values that bound current split
|
|
balance.cpp: update lo/hi to reflect sums at current split values
|
|
balance.cpp: recursive bisectioning zooms in on each cut by halving lo/hi
|
|
balance.cpp: return 0 if no changes in any splits, b/c they are all perfect
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // reset lo/hi based on current sum and splits
|
|
balance.cpp: // insure lo is monotonically increasing, ties are OK
|
|
balance.cpp: // insure hi is monotonically decreasing, ties are OK
|
|
balance.cpp: // this effectively uses info from nearby splits
|
|
balance.cpp: // to possibly tighten bounds on lo/hi
|
|
balance.cpp: fraction = 1.0*(target[i]-losum[i]) / (hisum[i]-losum[i]);
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp: return imbalance factor = max load per proc / ave load per proc
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // one proc's particles may map to many partitions, so must Allreduce
|
|
balance.cpp: if (maxcost > 0.0) imbalance = maxcost / (totalcost/nprocs);
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // insure vec[lo] <= value < vec[hi] at every iteration
|
|
balance.cpp: // done when lo,hi are adjacent
|
|
balance.cpp: int index = (lo+hi)/2;
|
|
balance.cpp: index = (lo+hi)/2;
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: // Allgather each proc's sub-box
|
|
balance.cpp: // could use Gather, but that requires MPI to alloc memory
|
|
balance.cpp: // proc 0 writes out nodal coords
|
|
balance.cpp: // some will be duplicates
|
|
balance.cpp: // write out one square/cube per processor for 2d/3d
|
|
balance.cpp:/* ----------------------------------------------------------------------
|
|
balance.cpp:------------------------------------------------------------------------- */
|
|
balance.cpp: fprintf(stderr," Imbalance factor: %g\n",1.0*max*np/target[np]);
|
|
body.cpp:/* ----------------------------------------------------------------------
|
|
body.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
body.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
body.cpp:------------------------------------------------------------------------- */
|
|
body.cpp:/* ---------------------------------------------------------------------- */
|
|
body.cpp:/* ---------------------------------------------------------------------- */
|
|
bond.cpp:/* ----------------------------------------------------------------------
|
|
bond.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
bond.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
bond.cpp:------------------------------------------------------------------------- */
|
|
bond.cpp:/* -----------------------------------------------------------------------
|
|
bond.cpp:------------------------------------------------------------------------- */
|
|
bond.cpp:/* ---------------------------------------------------------------------- */
|
|
bond.cpp:/* ----------------------------------------------------------------------
|
|
bond.cpp:------------------------------------------------------------------------- */
|
|
bond.cpp:/* ----------------------------------------------------------------------
|
|
bond.cpp:------------------------------------------------------------------------- */
|
|
bond.cpp: eflag_atom = eflag / 2;
|
|
bond.cpp: vflag_atom = vflag / 4;
|
|
bond.cpp: // reallocate per-atom arrays if necessary
|
|
bond.cpp: // zero accumulators
|
|
bond.cpp:/* ----------------------------------------------------------------------
|
|
bond.cpp:------------------------------------------------------------------------- */
|
|
bond.cpp:/* ----------------------------------------------------------------------
|
|
bond.cpp: write a table of bond potential energy/force vs distance to a file
|
|
bond.cpp:------------------------------------------------------------------------- */
|
|
bond.cpp: // parse optional arguments
|
|
bond.cpp: error->all(FLERR,"Invalid rlo/rhi values in bond_write command");
|
|
bond.cpp: // open file in append mode
|
|
bond.cpp: // print header in format used by bond_style table
|
|
bond.cpp: // initialize potentials before evaluating bond potential
|
|
bond.cpp: // insures all bond coeffs are set and force constants
|
|
bond.cpp: // also initialize neighbor so that neighbor requests are processed
|
|
bond.cpp: // NOTE: might be safest to just do lmp->init()
|
|
bond.cpp: // evaluate energy and force at each of N distances
|
|
bond.cpp: // note that Bond::single() takes r**2 and returns f/r.
|
|
bond.cpp: const double dr = (outer-inner) / static_cast<double>(n-1);
|
|
bond.cpp:/* ---------------------------------------------------------------------- */
|
|
bond.cpp:/* -----------------------------------------------------------------------
|
|
bond.cpp:-------------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
bond_hybrid.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
bond_hybrid.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
bond_hybrid.cpp:------------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_hybrid.cpp: // save ptrs to original bondlist
|
|
bond_hybrid.cpp: // if this is re-neighbor step, create sub-style bondlists
|
|
bond_hybrid.cpp: // nbondlist[] = length of each sub-style list
|
|
bond_hybrid.cpp: // realloc sub-style bondlist if necessary
|
|
bond_hybrid.cpp: // load sub-style bondlist with 3 values from original bondlist
|
|
bond_hybrid.cpp: // call each sub-style's compute function
|
|
bond_hybrid.cpp: // set neighbor->bondlist to sub-style bondlist before call
|
|
bond_hybrid.cpp: // accumulate sub-style global/peratom energy/virial in hybrid
|
|
bond_hybrid.cpp: // restore ptrs to original bondlist
|
|
bond_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
bond_hybrid.cpp:------------------------------------------------------------------------- */
|
|
bond_hybrid.cpp: // delete old lists, since cannot just change settings
|
|
bond_hybrid.cpp: // count sub-styles by skipping numeric args
|
|
bond_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric word
|
|
bond_hybrid.cpp: // need a better way to skip these exceptions
|
|
bond_hybrid.cpp: // allocate list of sub-styles
|
|
bond_hybrid.cpp: // allocate each sub-style and call its settings() with subset of args
|
|
bond_hybrid.cpp: // allocate uses suffix, but don't store suffix version in keywords,
|
|
bond_hybrid.cpp: // else syntax in coeff() will not match
|
|
bond_hybrid.cpp: // define subset of args for a sub-style by skipping numeric args
|
|
bond_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric
|
|
bond_hybrid.cpp: // need a better way to skip these exceptions
|
|
bond_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
bond_hybrid.cpp:---------------------------------------------------------------------- */
|
|
bond_hybrid.cpp: // 2nd arg = bond sub-style name
|
|
bond_hybrid.cpp: // allow for "none" as valid sub-style name
|
|
bond_hybrid.cpp: // move 1st arg to 2nd arg
|
|
bond_hybrid.cpp: // just copy ptrs, since arg[] points into original input line
|
|
bond_hybrid.cpp: // invoke sub-style coeff() starting with 1st arg
|
|
bond_hybrid.cpp: // set setflag and which type maps to which sub-style
|
|
bond_hybrid.cpp: // if sub-style is none: set hybrid setflag, wipe out map
|
|
bond_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
bond_hybrid.cpp:------------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
bond_hybrid.cpp:------------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
bond_hybrid.cpp:------------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
bond_hybrid.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ----------------------------------------------------------------------
|
|
bond_zero.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
bond_zero.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
bond_zero.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ----------------------------------------------------------------------
|
|
bond_zero.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ----------------------------------------------------------------------
|
|
bond_zero.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ----------------------------------------------------------------------
|
|
bond_zero.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ----------------------------------------------------------------------
|
|
bond_zero.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ----------------------------------------------------------------------
|
|
bond_zero.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ----------------------------------------------------------------------
|
|
bond_zero.cpp:------------------------------------------------------------------------- */
|
|
bond_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
change_box.cpp:/* ----------------------------------------------------------------------
|
|
change_box.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
change_box.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
change_box.cpp:------------------------------------------------------------------------- */
|
|
change_box.cpp:/* ---------------------------------------------------------------------- */
|
|
change_box.cpp:/* ---------------------------------------------------------------------- */
|
|
change_box.cpp: // group
|
|
change_box.cpp: // parse operation arguments
|
|
change_box.cpp: // allocate ops to max possible length
|
|
change_box.cpp: // volume option does not increment nops
|
|
change_box.cpp: // read options from end of input line
|
|
change_box.cpp: // compute scale factors if FINAL,DELTA used since they have distance units
|
|
change_box.cpp: // perform sequence of operations
|
|
change_box.cpp: // first insure atoms are in current box & update box via shrink-wrap
|
|
change_box.cpp: // no exchange() since doesn't matter if atoms are assigned to correct procs
|
|
change_box.cpp: // save current box state so can remap atoms from it, if requested
|
|
change_box.cpp: "Cannot change box ortho/triclinic with dumps defined");
|
|
change_box.cpp: "Cannot change box ortho/triclinic with "
|
|
change_box.cpp: "Cannot change box ortho/triclinic with dumps defined");
|
|
change_box.cpp: "Cannot change box ortho/triclinic with "
|
|
change_box.cpp: // convert atoms to lamda coords, using last box state
|
|
change_box.cpp: // convert atoms back to box coords, using current box state
|
|
change_box.cpp: // save current box state
|
|
change_box.cpp: // clean up
|
|
change_box.cpp: // apply shrink-wrap boundary conditions
|
|
change_box.cpp: // move atoms back inside simulation box and to new processors
|
|
change_box.cpp: // use remap() instead of pbc()
|
|
change_box.cpp: // in case box moved a long distance relative to atoms
|
|
change_box.cpp: // use irregular() in case box moved a long distance relative to atoms
|
|
change_box.cpp: // check if any atoms were lost
|
|
change_box.cpp:/* ----------------------------------------------------------------------
|
|
change_box.cpp:------------------------------------------------------------------------- */
|
|
change_box.cpp:/* ----------------------------------------------------------------------
|
|
change_box.cpp:------------------------------------------------------------------------- */
|
|
change_box.cpp:/* ----------------------------------------------------------------------
|
|
change_box.cpp: reset box lengths of dim1/2 to preserve old volume
|
|
change_box.cpp:------------------------------------------------------------------------- */
|
|
change_box.cpp: // invoke set_initial_box()
|
|
change_box.cpp: // in case change by caller to dim3 was invalid or on shrink-wrapped dim
|
|
change_box.cpp: // calculate newvol using boxlo/hi since xyz prd are not yet reset
|
|
change_box.cpp: double scale = oldvol/newvol;
|
|
change_box.cpp: // change dim1 only
|
|
change_box.cpp: // change dim1 and dim2, keeping their relative aspect ratio constant
|
|
change_box.cpp: // both are scaled by sqrt(scale)
|
|
citeme.cpp:/* ----------------------------------------------------------------------
|
|
citeme.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
citeme.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
citeme.cpp:------------------------------------------------------------------------- */
|
|
citeme.cpp: "following references. See http://lammps.sandia.gov/cite.html\n"
|
|
citeme.cpp:/* ---------------------------------------------------------------------- */
|
|
citeme.cpp:/* ----------------------------------------------------------------------
|
|
citeme.cpp:------------------------------------------------------------------------- */
|
|
citeme.cpp:/* ----------------------------------------------------------------------
|
|
citeme.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
comm_brick.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:enum{SINGLE,MULTI}; // same as in Comm
|
|
comm_brick.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
comm_brick.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_brick.cpp://IMPORTANT: we *MUST* pass "*oldcomm" to the Comm initializer here, as
|
|
comm_brick.cpp:// the code below *requires* that the (implicit) copy constructor
|
|
comm_brick.cpp:// for Comm is run and thus creating a shallow copy of "oldcomm".
|
|
comm_brick.cpp:// The call to Comm::copy_arrays() then converts the shallow copy
|
|
comm_brick.cpp:// into a deep copy of the class with the new layout.
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // bufextra = max size of one exchanged atom
|
|
comm_brick.cpp: // = allowed overflow of sendbuf in exchange()
|
|
comm_brick.cpp: // atomvec, fix reset these 2 maxexchange values if needed
|
|
comm_brick.cpp: // only necessary if their size > BUFEXTRA
|
|
comm_brick.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_brick.cpp: // memory for multi-style communication
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // cutghost[] = max distance at which ghost atoms need to be acquired
|
|
comm_brick.cpp: // for orthogonal:
|
|
comm_brick.cpp: // cutghost is in box coords = neigh->cutghost in all 3 dims
|
|
comm_brick.cpp: // for triclinic:
|
|
comm_brick.cpp: // neigh->cutghost = distance between tilted planes in box coords
|
|
comm_brick.cpp: // cutghost is in lamda coords = distance between those planes
|
|
comm_brick.cpp: // for multi:
|
|
comm_brick.cpp: // cutghostmulti = same as cutghost, only for each atom type
|
|
comm_brick.cpp: // recvneed[idim][0/1] = # of procs away I recv atoms from, within cutghost
|
|
comm_brick.cpp: // 0 = from left, 1 = from right
|
|
comm_brick.cpp: // do not cross non-periodic boundaries, need[2] = 0 for 2d
|
|
comm_brick.cpp: // sendneed[idim][0/1] = # of procs away I send atoms to
|
|
comm_brick.cpp: // 0 = to left, 1 = to right
|
|
comm_brick.cpp: // set equal to recvneed[idim][1/0] of neighbor proc
|
|
comm_brick.cpp: // maxneed[idim] = max procs away any proc recvs atoms in either direction
|
|
comm_brick.cpp: // layout = UNIFORM = uniform sized sub-domains:
|
|
comm_brick.cpp: // maxneed is directly computable from sub-domain size
|
|
comm_brick.cpp: // limit to procgrid-1 for non-PBC
|
|
comm_brick.cpp: // recvneed = maxneed except for procs near non-PBC
|
|
comm_brick.cpp: // sendneed = recvneed of neighbor on each side
|
|
comm_brick.cpp: // layout = NONUNIFORM = non-uniform sized sub-domains:
|
|
comm_brick.cpp: // compute recvneed via updown() which accounts for non-PBC
|
|
comm_brick.cpp: // sendneed = recvneed of neighbor on each side
|
|
comm_brick.cpp: // maxneed via Allreduce() of recvneed
|
|
comm_brick.cpp: maxneed[0] = static_cast<int> (cutghost[0] * procgrid[0] / prd[0]) + 1;
|
|
comm_brick.cpp: maxneed[1] = static_cast<int> (cutghost[1] * procgrid[1] / prd[1]) + 1;
|
|
comm_brick.cpp: maxneed[2] = static_cast<int> (cutghost[2] * procgrid[2] / prd[2]) + 1;
|
|
comm_brick.cpp: // allocate comm memory
|
|
comm_brick.cpp: // setup parameters for each exchange:
|
|
comm_brick.cpp: // sendproc = proc to send to at each swap
|
|
comm_brick.cpp: // recvproc = proc to recv from at each swap
|
|
comm_brick.cpp: // for mode SINGLE:
|
|
comm_brick.cpp: // slablo/slabhi = boundaries for slab of atoms to send at each swap
|
|
comm_brick.cpp: // use -BIG/midpt/BIG to insure all atoms included even if round-off occurs
|
|
comm_brick.cpp: // if round-off, atoms recvd across PBC can be < or > than subbox boundary
|
|
comm_brick.cpp: // note that borders() only loops over subset of atoms during each swap
|
|
comm_brick.cpp: // treat all as PBC here, non-PBC is handled in borders() via r/s need[][]
|
|
comm_brick.cpp: // for mode MULTI:
|
|
comm_brick.cpp: // multilo/multihi is same, with slablo/slabhi for each atom type
|
|
comm_brick.cpp: // pbc_flag: 0 = nothing across a boundary, 1 = something across a boundary
|
|
comm_brick.cpp: // pbc = -1/0/1 for PBC factor in each of 3/6 orthogonal/triclinic dirs
|
|
comm_brick.cpp: // for triclinic, slablo/hi and pbc_border will be used in lamda (0-1) coords
|
|
comm_brick.cpp: // 1st part of if statement is sending to the west/south/down
|
|
comm_brick.cpp: // 2nd part of if statement is sending to the east/north/up
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: walk up/down the extent of nearby processors in dim and dir
|
|
comm_brick.cpp: dir = 0/1 = walk to left/right
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: frac = cutghost[dim]/prd;
|
|
comm_brick.cpp: frac = cutghost[dim]/prd;
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: other per-atom attributes may also be sent via pack/unpack routines
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // exchange data with another proc
|
|
comm_brick.cpp: // if other proc is self, just copy
|
|
comm_brick.cpp: // if comm_x_only set, exchange or copy directly to x, don't unpack
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: other per-atom attributes may also be sent via pack/unpack routines
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // exchange data with another proc
|
|
comm_brick.cpp: // if other proc is self, just copy
|
|
comm_brick.cpp: // if comm_f_only set, exchange or copy directly from f, don't pack
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // clear global->local map for owned and ghost atoms
|
|
comm_brick.cpp: // b/c atoms migrate to new procs in exchange() and
|
|
comm_brick.cpp: // new ghosts are created in borders()
|
|
comm_brick.cpp: // map_set() is done at end of borders()
|
|
comm_brick.cpp: // clear ghost count and any ghost bonus data internal to AtomVec
|
|
comm_brick.cpp: // insure send buf is large enough for single atom
|
|
comm_brick.cpp: // bufextra = max size of one atom = allowed overflow of sendbuf
|
|
comm_brick.cpp: // fixes can change per-atom size requirement on-the-fly
|
|
comm_brick.cpp: // subbox bounds for orthogonal or triclinic
|
|
comm_brick.cpp: // loop over dimensions
|
|
comm_brick.cpp: // fill buffer with atoms leaving my box, using < and >=
|
|
comm_brick.cpp: // when atom is deleted, fill it in with last atom
|
|
comm_brick.cpp: // send/recv atoms in both directions
|
|
comm_brick.cpp: // send size of message first so receiver can realloc buf_recv if needed
|
|
comm_brick.cpp: // if 1 proc in dimension, no send/recv
|
|
comm_brick.cpp: // set nrecv = 0 so buf_send atoms will be lost
|
|
comm_brick.cpp: // if 2 procs in dimension, single send/recv
|
|
comm_brick.cpp: // if more than 2 procs in dimension, send/recv to both neighbors
|
|
comm_brick.cpp: // check incoming atoms to see if they are in my box
|
|
comm_brick.cpp: // if so, add to my list
|
|
comm_brick.cpp: // box check is only for this dimension,
|
|
comm_brick.cpp: // atom may be passed to another proc in later dims
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // do swaps over all 3 dimensions
|
|
comm_brick.cpp: // find atoms within slab boundaries lo/hi using <= and >=
|
|
comm_brick.cpp: // check atoms between nfirst and nlast
|
|
comm_brick.cpp: // for first swaps in a dim, check owned and ghost
|
|
comm_brick.cpp: // for later swaps in a dim, only check newly arrived ghosts
|
|
comm_brick.cpp: // store sent atom indices in sendlist for use in future timesteps
|
|
comm_brick.cpp: // sendflag = 0 if I do not send on this swap
|
|
comm_brick.cpp: // sendneed test indicates receiver no longer requires data
|
|
comm_brick.cpp: // e.g. due to non-PBC or non-uniform sub-domains
|
|
comm_brick.cpp: if (ineed/2 >= sendneed[dim][ineed % 2]) sendflag = 0;
|
|
comm_brick.cpp: // find send atoms according to SINGLE vs MULTI
|
|
comm_brick.cpp: // all atoms eligible versus only atoms in bordergroup
|
|
comm_brick.cpp: // can only limit loop to bordergroup for first sends (ineed < 2)
|
|
comm_brick.cpp: // on these sends, break loop in two: owned (in group) and ghost
|
|
comm_brick.cpp: // pack up list of border atoms
|
|
comm_brick.cpp: // swap atoms with other proc
|
|
comm_brick.cpp: // no MPI calls except SendRecv if nsend/nrecv = 0
|
|
comm_brick.cpp: // put incoming ghosts at end of my atom arrays
|
|
comm_brick.cpp: // if swapping with self, simply copy, no messages
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp: // set all pointers & counters
|
|
comm_brick.cpp: // insure send/recv buffers are long enough for all forward & reverse comm
|
|
comm_brick.cpp: // reset global->local map
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: size/nsize used only to set recv buffer limit
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: size/nsize used only to set recv buffer limit
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: handshake sizes before each Irecv/Send to insure buf_recv is big enough
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // insure send/recv bufs are big enough for nsize
|
|
comm_brick.cpp: // based on smax/rmax from most recent borders() invocation
|
|
comm_brick.cpp: // pack buffer
|
|
comm_brick.cpp: // exchange with another proc
|
|
comm_brick.cpp: // if self, set recv buffer to send buffer
|
|
comm_brick.cpp: // unpack buffer
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: // loop over dimensions
|
|
comm_brick.cpp: // no exchange if only one proc in a dimension
|
|
comm_brick.cpp: // send/recv info in both directions using same buf_recv
|
|
comm_brick.cpp: // if 2 procs in dimension, single send/recv
|
|
comm_brick.cpp: // if more than 2 procs in dimension, send/recv to both neighbors
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: if flag = 0, don't need to realloc with copy, just free/malloc
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp: free/malloc the size of the recv buffer as needed with BUFFACTOR
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp:/* ----------------------------------------------------------------------
|
|
comm_brick.cpp:------------------------------------------------------------------------- */
|
|
comm_brick.cpp: bytes += nprocs * sizeof(int); // grid2proc
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
comm.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp:#define BUFMIN 1000 // also in comm styles
|
|
comm.cpp:enum{SINGLE,MULTI}; // same as in Comm sub-styles
|
|
comm.cpp:enum{MULTIPLE}; // same as in ProcMap
|
|
comm.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
comm.cpp:/* ---------------------------------------------------------------------- */
|
|
comm.cpp: // use of OpenMP threads
|
|
comm.cpp: // query OpenMP for number of threads/process set by user at run-time
|
|
comm.cpp: // if the OMP_NUM_THREADS environment variable is not set, we default
|
|
comm.cpp: // to using 1 thread. This follows the principle of the least surprise,
|
|
comm.cpp: // while practically all OpenMP implementations violate it by using
|
|
comm.cpp: // as many threads as there are (virtual) CPU cores by default.
|
|
comm.cpp: // enforce consistent number of threads across all MPI tasks
|
|
comm.cpp:/* ---------------------------------------------------------------------- */
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp: all public/protected vectors/arrays in parent Comm class must be copied
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp: // check warn if any proc's subbox is smaller than neigh skin
|
|
comm.cpp: // since may lead to lost atoms in exchange()
|
|
comm.cpp: // really should check every exchange() in case box size is shrinking
|
|
comm.cpp: // but seems overkill to do that (fix balance does perform this check)
|
|
comm.cpp: // comm_only = 1 if only x,f are exchanged in forward/reverse comm
|
|
comm.cpp: // comm_x_only = 0 if ghost_velocity since velocities are added
|
|
comm.cpp: // set per-atom sizes for forward/reverse/border comm
|
|
comm.cpp: // augment by velocity and fix quantities if needed
|
|
comm.cpp: // per-atom limits for communication
|
|
comm.cpp: // maxexchange = max # of datums in exchange comm, set in exchange()
|
|
comm.cpp: // maxforward = # of datums in largest forward comm
|
|
comm.cpp: // maxreverse = # of datums in largest reverse comm
|
|
comm.cpp: // query pair,fix,compute,dump for their requirements
|
|
comm.cpp: // pair style can force reverse comm even if newton off
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp: // need to reset cutghostuser when switching comm mode
|
|
comm.cpp: // need to reset cutghostuser when switching comm mode
|
|
comm.cpp: "Use cutoff/multi keyword to set cutoff in multi mode");
|
|
comm.cpp: } else if (strcmp(arg[iarg],"cutoff/multi") == 0) {
|
|
comm.cpp: "Cannot set cutoff/multi before simulation box is defined");
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp: else if (strcmp(arg[iarg+1],"cart/reorder") == 0) mapflag = CARTREORDER;
|
|
comm.cpp: // only receiver has otherflag dependency
|
|
comm.cpp: // error checks
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp: // recv 3d proc grid of another partition if my 3d grid depends on it
|
|
comm.cpp: // create ProcMap class to create 3d grid and map procs to it
|
|
comm.cpp: // create 3d grid of processors
|
|
comm.cpp: // produces procgrid and coregrid (if relevant)
|
|
comm.cpp: // error check on procgrid
|
|
comm.cpp: // should not be necessary due to ProcMap
|
|
comm.cpp: // grid2proc[i][j][k] = proc that owns i,j,k location in 3d grid
|
|
comm.cpp: // map processor IDs to 3d processor grid
|
|
comm.cpp: // produces myloc, procneigh, grid2proc
|
|
comm.cpp: // print 3d grid info to screen and logfile
|
|
comm.cpp: // print 3d grid details to outfile
|
|
comm.cpp: // free ProcMap class
|
|
comm.cpp: // set xsplit,ysplit,zsplit for uniform spacings
|
|
comm.cpp: for (int i = 0; i < procgrid[0]; i++) xsplit[i] = i * 1.0/procgrid[0];
|
|
comm.cpp: for (int i = 0; i < procgrid[1]; i++) ysplit[i] = i * 1.0/procgrid[1];
|
|
comm.cpp: for (int i = 0; i < procgrid[2]; i++) zsplit[i] = i * 1.0/procgrid[2];
|
|
comm.cpp: // set lamda box params after procs are assigned
|
|
comm.cpp: // only set once unless load-balancing occurs
|
|
comm.cpp: // send my 3d proc grid to another partition if requested
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp: // initialize triclinic b/c coord2proc can be called before Comm::init()
|
|
comm.cpp: // via Irregular::migrate_atoms()
|
|
comm.cpp: igx = static_cast<int> (procgrid[0] * (x[0]-boxlo[0]) / prd[0]);
|
|
comm.cpp: igy = static_cast<int> (procgrid[1] * (x[1]-boxlo[1]) / prd[1]);
|
|
comm.cpp: igz = static_cast<int> (procgrid[2] * (x[2]-boxlo[2]) / prd[2]);
|
|
comm.cpp: igx = binary((x[0]-boxlo[0])/prd[0],procgrid[0],xsplit);
|
|
comm.cpp: igy = binary((x[1]-boxlo[1])/prd[1],procgrid[1],ysplit);
|
|
comm.cpp: igz = binary((x[2]-boxlo[2])/prd[2],procgrid[2],zsplit);
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp: // insure vec[lo] <= value < vec[hi] at every iteration
|
|
comm.cpp: // done when lo,hi are adjacent
|
|
comm.cpp: int index = (lo+hi)/2;
|
|
comm.cpp: index = (lo+hi)/2;
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp: callback() is invoked to allow caller to process/update each proc's inbuf
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp: // no need to communicate without data
|
|
comm.cpp: if (self || loop < nprocs-1) callback(nbytes/nper,buf);
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm.cpp:/* ----------------------------------------------------------------------
|
|
comm.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
comm_tiled.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:enum{SINGLE,MULTI}; // same as in Comm
|
|
comm_tiled.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
comm_tiled.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_tiled.cpp://IMPORTANT: we *MUST* pass "*oldcomm" to the Comm initializer here, as
|
|
comm_tiled.cpp:// the code below *requires* that the (implicit) copy constructor
|
|
comm_tiled.cpp:// for Comm is run and thus creating a shallow copy of "oldcomm".
|
|
comm_tiled.cpp:// The call to Comm::copy_arrays() then converts the shallow copy
|
|
comm_tiled.cpp:// into a deep copy of the class with the new layout.
|
|
comm_tiled.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // bufextra = max size of one exchanged atom
|
|
comm_tiled.cpp: // = allowed overflow of sendbuf in exchange()
|
|
comm_tiled.cpp: // atomvec, fix reset these 2 maxexchange values if needed
|
|
comm_tiled.cpp: // only necessary if their size > BUFEXTRA
|
|
comm_tiled.cpp:/* ---------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // temporary restrictions
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // domain properties used in setup method and methods it calls
|
|
comm_tiled.cpp: // set function pointers
|
|
comm_tiled.cpp: // if RCB decomp exists and just changed, gather needed global RCB info
|
|
comm_tiled.cpp: // set cutoff for comm forward and comm reverse
|
|
comm_tiled.cpp: // check that cutoff < any periodic box length
|
|
comm_tiled.cpp: // if cut = 0.0, set to epsilon to induce nearest neighbor comm
|
|
comm_tiled.cpp: // this is b/c sendproc is used below to infer touching exchange procs
|
|
comm_tiled.cpp: // exchange procs will be empty (leading to lost atoms) if sendproc = 0
|
|
comm_tiled.cpp: // will reset sendproc/etc to 0 after exchange is setup, down below
|
|
comm_tiled.cpp: // setup forward/reverse communication
|
|
comm_tiled.cpp: // loop over 6 swap directions
|
|
comm_tiled.cpp: // determine which procs I will send to and receive from in each swap
|
|
comm_tiled.cpp: // done by intersecting ghost box with all proc sub-boxes it overlaps
|
|
comm_tiled.cpp: // sets nsendproc, nrecvproc, sendproc, recvproc
|
|
comm_tiled.cpp: // sets sendother, recvother, sendself, pbc_flag, pbc, sendbox
|
|
comm_tiled.cpp: // resets nprocmax
|
|
comm_tiled.cpp: // one = first ghost box in same periodic image
|
|
comm_tiled.cpp: // two = second ghost box wrapped across periodic boundary
|
|
comm_tiled.cpp: // either may not exist
|
|
comm_tiled.cpp: // noverlap = # of overlaps of box1/2 with procs via box_drop()
|
|
comm_tiled.cpp: // overlap = list of overlapping procs
|
|
comm_tiled.cpp: // if overlap with self, indexme = index of me in list
|
|
comm_tiled.cpp: // if self is in overlap list, move it to end of list
|
|
comm_tiled.cpp: // reallocate 2nd dimensions of all send/recv arrays, based on noverlap
|
|
comm_tiled.cpp: // # of sends of this swap = # of recvs of iswap +/- 1
|
|
comm_tiled.cpp: // overlap how has list of noverlap procs
|
|
comm_tiled.cpp: // includes PBC effects
|
|
comm_tiled.cpp: // compute sendbox for each of my sends
|
|
comm_tiled.cpp: // obox = intersection of ghostbox with other proc's sub-domain
|
|
comm_tiled.cpp: // sbox = what I need to send to other proc
|
|
comm_tiled.cpp: // = sublo to MIN(sublo+cut,subhi) in idim, for idir = 0
|
|
comm_tiled.cpp: // = MIN(subhi-cut,sublo) to subhi in idim, for idir = 1
|
|
comm_tiled.cpp: // = obox in other 2 dims
|
|
comm_tiled.cpp: // if sbox touches other proc's sub-box boundaries in lower dims,
|
|
comm_tiled.cpp: // extend sbox in those lower dims to include ghost atoms
|
|
comm_tiled.cpp: // setup exchange communication = subset of forward/reverse comm procs
|
|
comm_tiled.cpp: // loop over dimensions
|
|
comm_tiled.cpp: // determine which procs I will exchange with in each dimension
|
|
comm_tiled.cpp: // subset of procs that touch my proc in forward/reverse comm
|
|
comm_tiled.cpp: // sets nexchproc & exchproc, resets nexchprocmax
|
|
comm_tiled.cpp: // overlap = list of procs that touch my sub-box in idim
|
|
comm_tiled.cpp: // proc can appear twice in list if touches in both directions
|
|
comm_tiled.cpp: // 2nd add-to-list checks to insure each proc appears exactly once
|
|
comm_tiled.cpp: // reallocate exchproc and exchnum if needed based on noverlap
|
|
comm_tiled.cpp: // reset sendproc/etc to 0 if cut is really 0.0
|
|
comm_tiled.cpp: // reallocate MPI Requests and Statuses as needed
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: other per-atom attributes may also be sent via pack/unpack routines
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // exchange data with another set of procs in each swap
|
|
comm_tiled.cpp: // post recvs from all procs except self
|
|
comm_tiled.cpp: // send data to all procs except self
|
|
comm_tiled.cpp: // copy data to self if sendself is set
|
|
comm_tiled.cpp: // wait on all procs except self and unpack received data
|
|
comm_tiled.cpp: // if comm_x_only set, exchange or copy directly to x, don't unpack
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: other per-atom attributes may also be sent via pack/unpack routines
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // exchange data with another set of procs in each swap
|
|
comm_tiled.cpp: // post recvs from all procs except self
|
|
comm_tiled.cpp: // send data to all procs except self
|
|
comm_tiled.cpp: // copy data to self if sendself is set
|
|
comm_tiled.cpp: // wait on all procs except self and unpack received data
|
|
comm_tiled.cpp: // if comm_f_only set, exchange or copy directly from f, don't pack
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // clear global->local map for owned and ghost atoms
|
|
comm_tiled.cpp: // b/c atoms migrate to new procs in exchange() and
|
|
comm_tiled.cpp: // new ghosts are created in borders()
|
|
comm_tiled.cpp: // map_set() is done at end of borders()
|
|
comm_tiled.cpp: // clear ghost count and any ghost bonus data internal to AtomVec
|
|
comm_tiled.cpp: // insure send buf is large enough for single atom
|
|
comm_tiled.cpp: // bufextra = max size of one atom = allowed overflow of sendbuf
|
|
comm_tiled.cpp: // fixes can change per-atom size requirement on-the-fly
|
|
comm_tiled.cpp: // domain properties used in exchange method and methods it calls
|
|
comm_tiled.cpp: // subbox bounds for orthogonal or triclinic
|
|
comm_tiled.cpp: // loop over dimensions
|
|
comm_tiled.cpp: // fill buffer with atoms leaving my box, using < and >=
|
|
comm_tiled.cpp: // when atom is deleted, fill it in with last atom
|
|
comm_tiled.cpp: // send and recv atoms from neighbor procs that touch my sub-box in dim
|
|
comm_tiled.cpp: // no send/recv with self
|
|
comm_tiled.cpp: // send size of message first
|
|
comm_tiled.cpp: // receiver may receive multiple messages, realloc buf_recv if needed
|
|
comm_tiled.cpp: // check incoming atoms to see if I own it and they are in my box
|
|
comm_tiled.cpp: // if so, add to my list
|
|
comm_tiled.cpp: // box check is only for this dimension,
|
|
comm_tiled.cpp: // atom may be passed to another proc in later dims
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: one list is created per swap/proc that will be made
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // send/recv max one = max # of atoms in single send/recv for any swap
|
|
comm_tiled.cpp: // send/recv max all = max # of atoms in all sends/recvs within any swap
|
|
comm_tiled.cpp: // loop over swaps in all dimensions
|
|
comm_tiled.cpp: // find atoms within sendboxes using >= and <
|
|
comm_tiled.cpp: // hi test with ">" is important b/c don't want to send an atom
|
|
comm_tiled.cpp: // in lower dim (on boundary) that a proc will recv again in higher dim
|
|
comm_tiled.cpp: // for x-dim swaps, check owned atoms
|
|
comm_tiled.cpp: // for yz-dim swaps, check owned and ghost atoms
|
|
comm_tiled.cpp: // store sent atom indices in sendlist for use in future timesteps
|
|
comm_tiled.cpp: // NOTE: assume SINGLE mode, add logic for MULTI mode later
|
|
comm_tiled.cpp: // send sendnum counts to procs who recv from me except self
|
|
comm_tiled.cpp: // copy data to self if sendself is set
|
|
comm_tiled.cpp: // setup other per swap/proc values from sendnum and recvnum
|
|
comm_tiled.cpp: // insure send/recv buffers are large enough for this border comm swap
|
|
comm_tiled.cpp: // swap atoms with other procs using pack_border(), unpack_border()
|
|
comm_tiled.cpp: // use Waitall() instead of Waitany() because calls to unpack_border()
|
|
comm_tiled.cpp: // must increment per-atom arrays in ascending order
|
|
comm_tiled.cpp: // increment ghost atoms
|
|
comm_tiled.cpp: // insure send/recv buffers are long enough for all forward & reverse comm
|
|
comm_tiled.cpp: // send buf is for one forward or reverse sends to one proc
|
|
comm_tiled.cpp: // recv buf is for all forward or reverse recvs in one swap
|
|
comm_tiled.cpp: // reset global->local map
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: size/nsize used only to set recv buffer limit
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: size/nsize used only to set recv buffer limit
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // insure send/recv bufs are big enough for nsize
|
|
comm_tiled.cpp: // based on smaxone/rmaxall from most recent borders() invocation
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: determine overlap list of Noverlap procs the lo/hi box overlaps
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // NOTE: this is not triclinic compatible
|
|
comm_tiled.cpp: // NOTE: these error messages are internal sanity checks
|
|
comm_tiled.cpp: // should not occur, can be removed at some point
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: determine overlap list of Noverlap procs the lo/hi box overlaps
|
|
comm_tiled.cpp: no need to split lo/hi box as recurse b/c OK if box extends outside RCB box
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // end recursion when partition is a single proc
|
|
comm_tiled.cpp: // add proc to overlap list
|
|
comm_tiled.cpp: // drop box on each side of cut it extends beyond
|
|
comm_tiled.cpp: // use > and < criteria so does not include a box it only touches
|
|
comm_tiled.cpp: // procmid = 1st processor in upper half of partition
|
|
comm_tiled.cpp: // = location in tree that stores this cut
|
|
comm_tiled.cpp: // dim = 0,1,2 dimension of cut
|
|
comm_tiled.cpp: // cut = position of cut
|
|
comm_tiled.cpp: int procmid = proclower + (procupper - proclower) / 2 + 1;
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: return other box owned by proc as lo/hi corner pts
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: return other box owned by proc as lo/hi corner pts
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // sending to left
|
|
comm_tiled.cpp: // only touches if proc hi = my lo, or if proc hi = boxhi and my lo = boxlo
|
|
comm_tiled.cpp: // sending to right
|
|
comm_tiled.cpp: // only touches if proc lo = my hi, or if proc lo = boxlo and my hi = boxhi
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: // end recursion when partition is a single proc
|
|
comm_tiled.cpp: // return proc
|
|
comm_tiled.cpp: // drop point on side of cut it is on
|
|
comm_tiled.cpp: // use < criterion so point is not on high edge of proc sub-domain
|
|
comm_tiled.cpp: // procmid = 1st processor in upper half of partition
|
|
comm_tiled.cpp: // = location in tree that stores this cut
|
|
comm_tiled.cpp: // dim = 0,1,2 dimension of cut
|
|
comm_tiled.cpp: // cut = position of cut
|
|
comm_tiled.cpp: int procmid = proclower + (procupper - proclower) / 2 + 1;
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: if flag = 0, don't need to realloc with copy, just free/malloc
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp: free/malloc the size of the recv buffer as needed with BUFFACTOR
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: nexchproc = new int[n/2];
|
|
comm_tiled.cpp: nexchprocmax = new int[n/2];
|
|
comm_tiled.cpp: exchproc = new int*[n/2];
|
|
comm_tiled.cpp: exchnum = new int*[n/2];
|
|
comm_tiled.cpp: for (int i = 0; i < n/2; i++) {
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
comm_tiled.cpp: for (int i = 0; i < n/2; i++) {
|
|
comm_tiled.cpp:/* ----------------------------------------------------------------------
|
|
comm_tiled.cpp:------------------------------------------------------------------------- */
|
|
compute_angle.cpp:/* ----------------------------------------------------------------------
|
|
compute_angle.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_angle.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_angle.cpp:------------------------------------------------------------------------- */
|
|
compute_angle.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle.cpp: // check if bond style hybrid exists
|
|
compute_angle.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle.cpp: // recheck angle style in case it has been changed
|
|
compute_angle.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_angle_local.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_angle_local.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_angle_local.cpp:------------------------------------------------------------------------- */
|
|
compute_angle_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle_local.cpp: if (narg < 4) error->all(FLERR,"Illegal compute angle/local command");
|
|
compute_angle_local.cpp: error->all(FLERR,"Compute angle/local used when angles are not allowed");
|
|
compute_angle_local.cpp: else error->all(FLERR,"Invalid keyword in compute angle/local command");
|
|
compute_angle_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle_local.cpp: error->all(FLERR,"No angle style is defined for compute angle/local");
|
|
compute_angle_local.cpp: // do initial memory allocation so that memory_usage() is correct
|
|
compute_angle_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle_local.cpp: // count local entries and compute angle info
|
|
compute_angle_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_angle_local.cpp:------------------------------------------------------------------------- */
|
|
compute_angle_local.cpp: // c = cosine of angle
|
|
compute_angle_local.cpp: c /= r1*r2;
|
|
compute_angle_local.cpp: tbuf[n] = 180.0*acos(c)/MY_PI;
|
|
compute_angle_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angle_local.cpp: // grow vector_local or array_local
|
|
compute_angle_local.cpp: memory->create(vlocal,nmax,"angle/local:vector_local");
|
|
compute_angle_local.cpp: memory->create(alocal,nmax,nvalues,"angle/local:array_local");
|
|
compute_angle_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_angle_local.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_angmom_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp: if (narg != 4) error->all(FLERR,"Illegal compute angmom/chunk command");
|
|
compute_angmom_chunk.cpp: // ID of compute chunk/atom
|
|
compute_angmom_chunk.cpp: // chunk-based data
|
|
compute_angmom_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_angmom_chunk.cpp: "compute angmom/chunk");
|
|
compute_angmom_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_angmom_chunk.cpp: error->all(FLERR,"Compute angmom/chunk does not use chunk/atom compute");
|
|
compute_angmom_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_angmom_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_angmom_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_angmom_chunk.cpp: // zero local per-chunk values
|
|
compute_angmom_chunk.cpp: // compute COM for each chunk
|
|
compute_angmom_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_angmom_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_angmom_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_angmom_chunk.cpp: // compute angmom for each chunk
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_angmom_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_angmom_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_angmom_chunk.cpp: memory->create(massproc,maxchunk,"angmom/chunk:massproc");
|
|
compute_angmom_chunk.cpp: memory->create(masstotal,maxchunk,"angmom/chunk:masstotal");
|
|
compute_angmom_chunk.cpp: memory->create(com,maxchunk,3,"angmom/chunk:com");
|
|
compute_angmom_chunk.cpp: memory->create(comall,maxchunk,3,"angmom/chunk:comall");
|
|
compute_angmom_chunk.cpp: memory->create(angmom,maxchunk,3,"angmom/chunk:angmom");
|
|
compute_angmom_chunk.cpp: memory->create(angmomall,maxchunk,3,"angmom/chunk:angmomall");
|
|
compute_angmom_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_angmom_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_bond.cpp:/* ----------------------------------------------------------------------
|
|
compute_bond.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_bond.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_bond.cpp:------------------------------------------------------------------------- */
|
|
compute_bond.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond.cpp: // check if bond style hybrid exists
|
|
compute_bond.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond.cpp: // recheck bond style in case it has been changed
|
|
compute_bond.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_bond_local.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_bond_local.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_bond_local.cpp:------------------------------------------------------------------------- */
|
|
compute_bond_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp: if (narg < 4) error->all(FLERR,"Illegal compute bond/local command");
|
|
compute_bond_local.cpp: error->all(FLERR,"Compute bond/local used when bonds are not allowed");
|
|
compute_bond_local.cpp: else error->all(FLERR,"Invalid keyword in compute bond/local command");
|
|
compute_bond_local.cpp: // set singleflag if need to call bond->single()
|
|
compute_bond_local.cpp: // set velflag if compute any quantities based on velocities
|
|
compute_bond_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp: error->all(FLERR,"No bond style is defined for compute bond/local");
|
|
compute_bond_local.cpp: // set ghostvelflag if need to acquire ghost atom velocities
|
|
compute_bond_local.cpp: // do initial memory allocation so that memory_usage() is correct
|
|
compute_bond_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp: // count local entries and compute bond info
|
|
compute_bond_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_bond_local.cpp:------------------------------------------------------------------------- */
|
|
compute_bond_local.cpp: // communicate ghost velocities if needed
|
|
compute_bond_local.cpp: // loop over all atoms and their bonds
|
|
compute_bond_local.cpp: invmasstotal = 1.0 / (masstotal);
|
|
compute_bond_local.cpp: // r12 = unit bond vector from atom1 to atom2
|
|
compute_bond_local.cpp: // delr = vector from COM to each atom
|
|
compute_bond_local.cpp: // delv = velocity of each atom relative to COM
|
|
compute_bond_local.cpp: // vpar = component of delv parallel to bond vector
|
|
compute_bond_local.cpp: // vvib = relative velocity of 2 atoms along bond direction
|
|
compute_bond_local.cpp: // vvib < 0 for 2 atoms moving towards each other
|
|
compute_bond_local.cpp: // vvib > 0 for 2 atoms moving apart
|
|
compute_bond_local.cpp: // vrotsq = tangential speed squared of atom1 only
|
|
compute_bond_local.cpp: // omegasq = omega squared, and is the same for atom1 and atom2
|
|
compute_bond_local.cpp: omegasq = vrotsq / MathExtra::lensq3(delr1);
|
|
compute_bond_local.cpp: // sanity check: engtotal = engtrans + engvib + engrot
|
|
compute_bond_local.cpp: //engtot = 0.5 * (mass1*MathExtra::lensq3(v[atom1]) +
|
|
compute_bond_local.cpp: // mass2*MathExtra::lensq3(v[atom2]));
|
|
compute_bond_local.cpp: //if (fabs(engtot-engtrans-engvib-engrot) > EPSILON)
|
|
compute_bond_local.cpp: // error->one(FLERR,"Sanity check on 3 energy components failed");
|
|
compute_bond_local.cpp: // scale energies by units
|
|
compute_bond_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_bond_local.cpp: // grow vector_local or array_local
|
|
compute_bond_local.cpp: memory->create(vlocal,nmax,"bond/local:vector_local");
|
|
compute_bond_local.cpp: memory->create(alocal,nmax,nvalues,"bond/local:array_local");
|
|
compute_bond_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_bond_local.cpp:------------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_centro_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_centro_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_centro_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_centro_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp: if (narg < 4 || narg > 6) error->all(FLERR,"Illegal compute centro/atom command");
|
|
compute_centro_atom.cpp: // default values
|
|
compute_centro_atom.cpp: // optional keywords
|
|
compute_centro_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute centro/atom command3");
|
|
compute_centro_atom.cpp: else error->all(FLERR,"Illegal compute centro/atom command2");
|
|
compute_centro_atom.cpp: } else error->all(FLERR,"Illegal compute centro/atom command1");
|
|
compute_centro_atom.cpp: error->all(FLERR,"Illegal neighbor value for compute centro/atom command");
|
|
compute_centro_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp: error->all(FLERR,"Compute centro/atom requires a pair style be defined");
|
|
compute_centro_atom.cpp: if (strcmp(modify->compute[i]->style,"centro/atom") == 0) count++;
|
|
compute_centro_atom.cpp: error->warning(FLERR,"More than one compute centro/atom");
|
|
compute_centro_atom.cpp: // need an occasional full neighbor list
|
|
compute_centro_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp: // grow centro array if necessary
|
|
compute_centro_atom.cpp: // grow array_atom array if axes_flag set
|
|
compute_centro_atom.cpp: memory->create(centro,nmax,"centro/atom:centro");
|
|
compute_centro_atom.cpp: memory->create(centro,nmax,"centro/atom:centro");
|
|
compute_centro_atom.cpp: memory->create(array_atom,nmax,size_peratom_cols,"centro/atom:array_atom");
|
|
compute_centro_atom.cpp: // invoke full neighbor list (will copy or build if necessary)
|
|
compute_centro_atom.cpp: // npairs = number of unique pairs
|
|
compute_centro_atom.cpp: int nhalf = nnn/2;
|
|
compute_centro_atom.cpp: int npairs = nnn * (nnn-1) / 2;
|
|
compute_centro_atom.cpp: // compute centro-symmetry parameter for each atom in group
|
|
compute_centro_atom.cpp: // use full neighbor list
|
|
compute_centro_atom.cpp: // insure distsq and nearest arrays are long enough
|
|
compute_centro_atom.cpp: memory->create(distsq,maxneigh,"centro/atom:distsq");
|
|
compute_centro_atom.cpp: memory->create(nearest,maxneigh,"centro/atom:nearest");
|
|
compute_centro_atom.cpp: // loop over list of all neighbors within force cutoff
|
|
compute_centro_atom.cpp: // distsq[] = distance sq to each
|
|
compute_centro_atom.cpp: // nearest[] = atom indices of neighbors
|
|
compute_centro_atom.cpp: // check whether to include local crystal symmetry axes
|
|
compute_centro_atom.cpp: // if not nnn neighbors, centro = 0.0
|
|
compute_centro_atom.cpp: // store nnn nearest neighs in 1st nnn locations of distsq and nearest
|
|
compute_centro_atom.cpp: // R = Ri + Rj for each of npairs i,j pairs among nnn neighbors
|
|
compute_centro_atom.cpp: // pairs = squared length of each R
|
|
compute_centro_atom.cpp: // calculate local crystal symmetry axes
|
|
compute_centro_atom.cpp: // rsq1, rsq2 are two smallest values of R^2
|
|
compute_centro_atom.cpp: // R1, R2 are corresponding vectors Ri - Rj
|
|
compute_centro_atom.cpp: // R3 is normal to R1, R2
|
|
compute_centro_atom.cpp: // store nnn nearest neighs in 1st nnn locations of distsq and nearest
|
|
compute_centro_atom.cpp: // store nhalf smallest pair distances in 1st nhalf locations of pairs
|
|
compute_centro_atom.cpp: // centrosymmetry = sum of nhalf smallest squared values
|
|
compute_centro_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_centro_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_centro_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_centro_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_chunk_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp:// NOTE: allow for bin center to be variables for sphere/cylinder
|
|
compute_chunk_atom.cpp:enum{ONCE,NFREQ,EVERY}; // used in several files
|
|
compute_chunk_atom.cpp:// allocate space for static class variable
|
|
compute_chunk_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: if (narg < 4) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: // chunk style and its args
|
|
compute_chunk_atom.cpp: if (strcmp(arg[3],"bin/1d") == 0) {
|
|
compute_chunk_atom.cpp: } else if (strcmp(arg[3],"bin/2d") == 0) {
|
|
compute_chunk_atom.cpp: } else if (strcmp(arg[3],"bin/3d") == 0) {
|
|
compute_chunk_atom.cpp: } else if (strcmp(arg[3],"bin/sphere") == 0) {
|
|
compute_chunk_atom.cpp: if (iarg+6 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: } else if (strcmp(arg[3],"bin/cylinder") == 0) {
|
|
compute_chunk_atom.cpp: if (iarg+5 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: } else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: // optional args
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Region ID for compute chunk/atom does not exist");
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (limit < 0) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: } else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: // set nchunkflag and discard to default values if not explicitly set
|
|
compute_chunk_atom.cpp: // for binning style, also check in init() if simulation box is static,
|
|
compute_chunk_atom.cpp: // which sets nchunkflag = ONCE
|
|
compute_chunk_atom.cpp: // error checks
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom molecule for non-molecular system");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom without bins "
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom sphere z origin must be 0.0 for 2d");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom cylinder axis must be z for 2d");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute ID for compute chunk /atom does not exist");
|
|
compute_chunk_atom.cpp: "Compute chunk/atom compute does not calculate "
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom compute does not "
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom compute does not "
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom compute array is "
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Fix ID for compute chunk/atom does not exist");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom fix does not calculate "
|
|
compute_chunk_atom.cpp: "Compute chunk/atom fix does not calculate a per-atom vector");
|
|
compute_chunk_atom.cpp: "Compute chunk/atom fix does not calculate a per-atom array");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom fix array is accessed out-of-range");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Variable name for compute chunk/atom does not exist");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom variable is not "
|
|
compute_chunk_atom.cpp: // setup scaling
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom for triclinic boxes "
|
|
compute_chunk_atom.cpp: // apply scaling factors and cylinder dims orthogonal to axis
|
|
compute_chunk_atom.cpp: invdelta[idim] = 1.0/delta[idim];
|
|
compute_chunk_atom.cpp: sradmin_user *= xscale; // radii are scaled by xscale
|
|
compute_chunk_atom.cpp: cradmin_user *= yscale; // radii are scaled by first non-axis dim
|
|
compute_chunk_atom.cpp: // initialize chunk vector and per-chunk info
|
|
compute_chunk_atom.cpp: // computeflag = 1 if this compute might invoke another compute
|
|
compute_chunk_atom.cpp: // during assign_chunk_ids()
|
|
compute_chunk_atom.cpp: // other initializations
|
|
compute_chunk_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // check nfix in case all fixes have already been deleted
|
|
compute_chunk_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // set and check validity of region
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Region ID for compute chunk/atom does not exist");
|
|
compute_chunk_atom.cpp: // set compute,fix,variable
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute ID for compute chunk/atom does not exist");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Fix ID for compute chunk/atom does not exist");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Variable name for compute chunk/atom does not exist");
|
|
compute_chunk_atom.cpp: // for style MOLECULE, check that no mol IDs exceed MAXSMALLINT
|
|
compute_chunk_atom.cpp: // don't worry about group or optional region
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Molecule IDs too large for compute chunk/atom");
|
|
compute_chunk_atom.cpp: // for binning, if nchunkflag not already set, set it to ONCE or EVERY
|
|
compute_chunk_atom.cpp: // depends on whether simulation box size is static or dynamic
|
|
compute_chunk_atom.cpp: // reset invoked_setup if this is not first run and box just became static
|
|
compute_chunk_atom.cpp: // require nchunkflag = ONCE if idsflag = ONCE
|
|
compute_chunk_atom.cpp: // b/c nchunk cannot change if chunk IDs are frozen
|
|
compute_chunk_atom.cpp: // can't check until now since nchunkflag may have been adjusted in init()
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom ids once but nchunk is not once");
|
|
compute_chunk_atom.cpp: // create/destroy fix STORE for persistent chunk IDs as needed
|
|
compute_chunk_atom.cpp: // need to do this if idsflag = ONCE or locks will be used by other commands
|
|
compute_chunk_atom.cpp: // need to wait until init() so that fix command(s) are in place
|
|
compute_chunk_atom.cpp: // they increment lockcount if they lock this compute
|
|
compute_chunk_atom.cpp: // fixstore ID = compute-ID + COMPUTE_STORE, fix group = compute group
|
|
compute_chunk_atom.cpp: // fixstore initializes all values to 0.0
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp: invoke setup_chunks and/or compute_ichunk if only done ONCE
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // grow floating point chunk vector if necessary
|
|
compute_chunk_atom.cpp: memory->create(chunk,nmax,"chunk/atom:chunk");
|
|
compute_chunk_atom.cpp: // copy integer indices into floating-point chunk vector
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: "same compute chunk/atom command in incompatible ways");
|
|
compute_chunk_atom.cpp: // set lock to last calling Fix, since it will be last to unlock()
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // skip if already done on this step
|
|
compute_chunk_atom.cpp: // if old IDs persist via storage in fixstore, then just retrieve them
|
|
compute_chunk_atom.cpp: // yes if idsflag = ONCE, and already done once
|
|
compute_chunk_atom.cpp: // or if idsflag = NFREQ and lock is in place and are on later timestep
|
|
compute_chunk_atom.cpp: // else proceed to recalculate per-atom chunk assignments
|
|
compute_chunk_atom.cpp: // assign chunk IDs to atoms
|
|
compute_chunk_atom.cpp: // will exclude atoms not in group or in optional region
|
|
compute_chunk_atom.cpp: // already invoked if this is same timestep as last setup_chunks()
|
|
compute_chunk_atom.cpp: // compress chunk IDs via hash of the original uncompressed IDs
|
|
compute_chunk_atom.cpp: // also apply discard rule except for binning styles which already did
|
|
compute_chunk_atom.cpp: // else if no compression apply discard rule by itself
|
|
compute_chunk_atom.cpp: // set ichunk = 0 for excluded atoms
|
|
compute_chunk_atom.cpp: // this should set any ichunk values which have not yet been set
|
|
compute_chunk_atom.cpp: // if newly calculated IDs need to persist, store them in fixstore
|
|
compute_chunk_atom.cpp: // yes if idsflag = ONCE or idsflag = NFREQ and lock is in place
|
|
compute_chunk_atom.cpp: // one-time check if which = MOLECULE and
|
|
compute_chunk_atom.cpp: // any chunks do not contain all atoms in the molecule
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // check if setup needs to be done
|
|
compute_chunk_atom.cpp: // no if lock is in place
|
|
compute_chunk_atom.cpp: // no if nchunkflag = ONCE, and already done once
|
|
compute_chunk_atom.cpp: // otherwise yes
|
|
compute_chunk_atom.cpp: // even if no, check if need to re-compute bin volumes
|
|
compute_chunk_atom.cpp: // so that fix ave/chunk can do proper density normalization
|
|
compute_chunk_atom.cpp: // assign chunk IDs to atoms
|
|
compute_chunk_atom.cpp: // will exclude atoms not in group or in optional region
|
|
compute_chunk_atom.cpp: // for binning styles, need to setup bins and their volume first
|
|
compute_chunk_atom.cpp: // else chunk_volume_scalar = entire box volume
|
|
compute_chunk_atom.cpp: // IDs are needed to scan for max ID and for compress()
|
|
compute_chunk_atom.cpp: // set nchunk for chunk styles other than binning
|
|
compute_chunk_atom.cpp: // for styles other than TYPE, scan for max ID
|
|
compute_chunk_atom.cpp: // apply limit setting as well as compression of chunks with no atoms
|
|
compute_chunk_atom.cpp: // if limit is set, there are 3 cases:
|
|
compute_chunk_atom.cpp: // no compression, limit specified before compression, or vice versa
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp: also set exclude vector to 0/1 for all atoms
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // grow integer chunk index vector if necessary
|
|
compute_chunk_atom.cpp: memory->create(ichunk,nmaxint,"chunk/atom:ichunk");
|
|
compute_chunk_atom.cpp: memory->create(exclude,nmaxint,"chunk/atom:exclude");
|
|
compute_chunk_atom.cpp: // update region if necessary
|
|
compute_chunk_atom.cpp: // exclude = 1 if atom is not assigned to a chunk
|
|
compute_chunk_atom.cpp: // exclude atoms not in group or not in optional region
|
|
compute_chunk_atom.cpp: // set ichunk to style value for included atoms
|
|
compute_chunk_atom.cpp: // binning styles apply discard rule, others do not yet
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Fix used in compute chunk/atom not "
|
|
compute_chunk_atom.cpp: memory->create(varatom,maxvar,"chunk/atom:varatom");
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // put my IDs into hash
|
|
compute_chunk_atom.cpp: // n = # of my populated IDs
|
|
compute_chunk_atom.cpp: // nall = n summed across all procs
|
|
compute_chunk_atom.cpp: // create my list of populated IDs
|
|
compute_chunk_atom.cpp: memory->create(list,n,"chunk/atom:list");
|
|
compute_chunk_atom.cpp: // if nall < 1M, just allgather all ID lists on every proc
|
|
compute_chunk_atom.cpp: // else perform ring comm
|
|
compute_chunk_atom.cpp: // add IDs from all procs to my hash
|
|
compute_chunk_atom.cpp: // setup for allgatherv
|
|
compute_chunk_atom.cpp: memory->create(recvcounts,nprocs,"chunk/atom:recvcounts");
|
|
compute_chunk_atom.cpp: memory->create(displs,nprocs,"chunk/atom:displs");
|
|
compute_chunk_atom.cpp: memory->create(listall,nall,"chunk/atom:listall");
|
|
compute_chunk_atom.cpp: // allgatherv acquires list of populated IDs from all procs
|
|
compute_chunk_atom.cpp: // add all unique IDs in listall to my hash
|
|
compute_chunk_atom.cpp: // clean up
|
|
compute_chunk_atom.cpp: // nchunk = length of hash containing populated IDs from all procs
|
|
compute_chunk_atom.cpp: // reset hash value of each original chunk ID to ordered index
|
|
compute_chunk_atom.cpp: // ordered index = new compressed chunk ID (1 to Nchunk)
|
|
compute_chunk_atom.cpp: // leverages fact that map stores keys in ascending order
|
|
compute_chunk_atom.cpp: // also allocate and set chunkID = list of original chunk IDs
|
|
compute_chunk_atom.cpp: // used by fix ave/chunk and compute property/chunk
|
|
compute_chunk_atom.cpp: memory->create(chunkID,nchunk,"chunk/atom:chunkID");
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // lo = bin boundary immediately below boxlo or minvalue
|
|
compute_chunk_atom.cpp: // hi = bin boundary immediately above boxhi or maxvalue
|
|
compute_chunk_atom.cpp: // allocate and initialize arrays based on new bin count
|
|
compute_chunk_atom.cpp: if (lo > hi) error->all(FLERR,"Invalid bin bounds in compute chunk/atom");
|
|
compute_chunk_atom.cpp: // allocate and set bin coordinates
|
|
compute_chunk_atom.cpp: memory->create(coord,nbins,ndim,"chunk/atom:coord");
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // convert sorigin_user to sorigin
|
|
compute_chunk_atom.cpp: // sorigin,srad are always in box units, for orthogonal or triclinic domains
|
|
compute_chunk_atom.cpp: // lamda2x works for either orthogonal or triclinic
|
|
compute_chunk_atom.cpp: // if pbcflag set, sradmax must be < 1/2 box in any periodic dim
|
|
compute_chunk_atom.cpp: // treat orthogonal and triclinic the same
|
|
compute_chunk_atom.cpp: // check every time bins are created
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom bin/sphere radius "
|
|
compute_chunk_atom.cpp: sinvrad = nsbin / (sradmax-sradmin);
|
|
compute_chunk_atom.cpp: // allocate and set bin coordinates
|
|
compute_chunk_atom.cpp: // coord = midpt of radii for a spherical shell
|
|
compute_chunk_atom.cpp: memory->create(coord,nsbin,1,"chunk/atom:coord");
|
|
compute_chunk_atom.cpp: rlo = sradmin + i * (sradmax-sradmin) / nsbin;
|
|
compute_chunk_atom.cpp: rhi = sradmin + (i+1) * (sradmax-sradmin) / nsbin;
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // setup bins along cylinder axis
|
|
compute_chunk_atom.cpp: // ncplane = # of axis bins
|
|
compute_chunk_atom.cpp: // convert corigin_user to corigin
|
|
compute_chunk_atom.cpp: // corigin is always in box units, for orthogonal or triclinic domains
|
|
compute_chunk_atom.cpp: // lamda2x works for either orthogonal or triclinic
|
|
compute_chunk_atom.cpp: // if pbcflag set, sradmax must be < 1/2 box in any periodic non-axis dim
|
|
compute_chunk_atom.cpp: // treat orthogonal and triclinic the same
|
|
compute_chunk_atom.cpp: // check every time bins are created
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Compute chunk/atom bin/cylinder radius "
|
|
compute_chunk_atom.cpp: cinvrad = ncbin / (cradmax-cradmin);
|
|
compute_chunk_atom.cpp: // allocate and set radial bin coordinates
|
|
compute_chunk_atom.cpp: // radial coord = midpt of radii for a cylindrical shell
|
|
compute_chunk_atom.cpp: // axiscoord = saved bin coords along cylndrical axis
|
|
compute_chunk_atom.cpp: // radcoord = saved bin coords in radial direction
|
|
compute_chunk_atom.cpp: memory->create(coord,ncbin,1,"chunk/atom:coord");
|
|
compute_chunk_atom.cpp: rlo = cradmin + i * (cradmax-cradmin) / ncbin;
|
|
compute_chunk_atom.cpp: rhi = cradmin + (i+1) * (cradmax-cradmin) / ncbin;
|
|
compute_chunk_atom.cpp: // create array of combined coords for all bins
|
|
compute_chunk_atom.cpp: memory->create(coord,ncbin*ncplane,2,"chunk/atom:coord");
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: chunk_volume_scalar *= delta[m]/prd[dim[m]];
|
|
compute_chunk_atom.cpp: memory->create(chunk_volume_vec,nchunk,"chunk/atom:chunk_volume_vec");
|
|
compute_chunk_atom.cpp: rlo = sradmin + i * (sradmax-sradmin) / nsbin;
|
|
compute_chunk_atom.cpp: rhi = sradmin + (i+1) * (sradmax-sradmin) / nsbin;
|
|
compute_chunk_atom.cpp: vollo = 4.0/3.0 * MY_PI * rlo*rlo*rlo;
|
|
compute_chunk_atom.cpp: volhi = 4.0/3.0 * MY_PI * rhi*rhi*rhi;
|
|
compute_chunk_atom.cpp: memory->create(chunk_volume_vec,nchunk,"chunk/atom:chunk_volume_vec");
|
|
compute_chunk_atom.cpp: // slabthick = delta of bins along cylinder axis
|
|
compute_chunk_atom.cpp: double slabthick = domain->prd[dim[0]] * delta[0]/prd[dim[0]];
|
|
compute_chunk_atom.cpp: // area lo/hi of concentric circles in radial direction
|
|
compute_chunk_atom.cpp: iradbin = i / ncplane;
|
|
compute_chunk_atom.cpp: rlo = cradmin + iradbin * (cradmax-cradmin) / ncbin;
|
|
compute_chunk_atom.cpp: rhi = cradmin + (iradbin+1) * (cradmax-cradmin) / ncbin;
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // remap each atom's relevant coord back into box via PBC if necessary
|
|
compute_chunk_atom.cpp: // if scaleflag = REDUCED, box coords -> lamda coords
|
|
compute_chunk_atom.cpp: // apply discard rule
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // remap each atom's relevant coord back into box via PBC if necessary
|
|
compute_chunk_atom.cpp: // if scaleflag = REDUCED, box coords -> lamda coords
|
|
compute_chunk_atom.cpp: // apply discard rule
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // remap each atom's relevant coord back into box via PBC if necessary
|
|
compute_chunk_atom.cpp: // if scaleflag = REDUCED, box coords -> lamda coords
|
|
compute_chunk_atom.cpp: // apply discard rule
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // remap each atom's relevant coords back into box via PBC if necessary
|
|
compute_chunk_atom.cpp: // apply discard rule based on rmin and rmax
|
|
compute_chunk_atom.cpp: // if requested, apply PBC to distance from sphere center
|
|
compute_chunk_atom.cpp: // treat orthogonal and triclinic the same
|
|
compute_chunk_atom.cpp: // with dx,dy,dz = lengths independent of each other
|
|
compute_chunk_atom.cpp: // so do not use domain->minimum_image() which couples for triclinic
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: // first use atom2bin1d() to bin all atoms along cylinder axis
|
|
compute_chunk_atom.cpp: // now bin in radial direction
|
|
compute_chunk_atom.cpp: // kbin = bin along cylinder axis
|
|
compute_chunk_atom.cpp: // rbin = bin in radial direction
|
|
compute_chunk_atom.cpp: // remap each atom's relevant coords back into box via PBC if necessary
|
|
compute_chunk_atom.cpp: // apply discard rule based on rmin and rmax
|
|
compute_chunk_atom.cpp: // if requested, apply PBC to distance from cylinder axis
|
|
compute_chunk_atom.cpp: // treat orthogonal and triclinic the same
|
|
compute_chunk_atom.cpp: // with d1,d2 = lengths independent of each other
|
|
compute_chunk_atom.cpp: // combine axis and radial bin indices to set ichunk
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: if (narg < iarg+3) error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: else error->all(FLERR,"Illegal compute chunk/atom command");
|
|
compute_chunk_atom.cpp: error->all(FLERR,"Cannot use compute chunk/atom bin z for 2d model");
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_chunk_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_chunk_atom.cpp: double bytes = 2*MAX(nmaxint,0) * sizeof(int); // ichunk,exclude
|
|
compute_chunk_atom.cpp: bytes += nmax * sizeof(double); // chunk
|
|
compute_chunk_atom.cpp: bytes += ncoord*nchunk * sizeof(double); // coord
|
|
compute_chunk_atom.cpp: if (compress) bytes += nchunk * sizeof(int); // chunkID
|
|
compute_cluster_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_cluster_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_cluster_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_cluster_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp: if (narg != 4) error->all(FLERR,"Illegal compute cluster/atom command");
|
|
compute_cluster_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp: error->all(FLERR,"Cannot use compute cluster/atom unless atoms have IDs");
|
|
compute_cluster_atom.cpp: error->all(FLERR,"Compute cluster/atom requires a pair style be defined");
|
|
compute_cluster_atom.cpp: "Compute cluster/atom cutoff is longer than pairwise cutoff");
|
|
compute_cluster_atom.cpp: // need an occasional full neighbor list
|
|
compute_cluster_atom.cpp: // full required so that pair of atoms on 2 procs both set their clusterID
|
|
compute_cluster_atom.cpp: if (strcmp(modify->compute[i]->style,"cluster/atom") == 0) count++;
|
|
compute_cluster_atom.cpp: error->warning(FLERR,"More than one compute cluster/atom");
|
|
compute_cluster_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp: // grow clusterID array if necessary
|
|
compute_cluster_atom.cpp: memory->create(clusterID,nmax,"cluster/atom:clusterID");
|
|
compute_cluster_atom.cpp: // invoke full neighbor list (will copy or build if necessary)
|
|
compute_cluster_atom.cpp: // if group is dynamic, insure ghost atom masks are current
|
|
compute_cluster_atom.cpp: // every atom starts in its own cluster, with clusterID = atomID
|
|
compute_cluster_atom.cpp: // loop until no more changes on any proc:
|
|
compute_cluster_atom.cpp: // acquire clusterIDs of ghost atoms
|
|
compute_cluster_atom.cpp: // loop over my atoms, checking distance to neighbors
|
|
compute_cluster_atom.cpp: // if both atoms are in cluster, assign lowest clusterID to both
|
|
compute_cluster_atom.cpp: // iterate until no changes in my atoms
|
|
compute_cluster_atom.cpp: // then check if any proc made changes
|
|
compute_cluster_atom.cpp: // stop if all procs are done
|
|
compute_cluster_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cluster_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_cluster_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_cna_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_cna_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_cna_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_cna_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp: if (narg != 4) error->all(FLERR,"Illegal compute cna/atom command");
|
|
compute_cna_atom.cpp: if (cutoff < 0.0) error->all(FLERR,"Illegal compute cna/atom command");
|
|
compute_cna_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp: error->all(FLERR,"Compute cna/atom requires a pair style be defined");
|
|
compute_cna_atom.cpp: error->all(FLERR,"Compute cna/atom cutoff is longer than pairwise cutoff");
|
|
compute_cna_atom.cpp: // cannot use neighbor->cutneighmax b/c neighbor has not yet been init
|
|
compute_cna_atom.cpp: error->warning(FLERR,"Compute cna/atom cutoff may be too large to find "
|
|
compute_cna_atom.cpp: if (strcmp(modify->compute[i]->style,"cna/atom") == 0) count++;
|
|
compute_cna_atom.cpp: error->warning(FLERR,"More than one compute cna/atom defined");
|
|
compute_cna_atom.cpp: // need an occasional full neighbor list
|
|
compute_cna_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_cna_atom.cpp: // grow arrays if necessary
|
|
compute_cna_atom.cpp: // invoke full neighbor list (will copy or build if necessary)
|
|
compute_cna_atom.cpp: // find the neigbours of each atom within cutoff using full neighbor list
|
|
compute_cna_atom.cpp: // nearest[] = atom indices of nearest neighbors, up to MAXNEAR
|
|
compute_cna_atom.cpp: // do this for all atoms, not just compute group
|
|
compute_cna_atom.cpp: // since CNA calculation requires neighbors of neighbors
|
|
compute_cna_atom.cpp: // warning message
|
|
compute_cna_atom.cpp: // compute CNA for each atom in group
|
|
compute_cna_atom.cpp: // only performed if # of nearest neighbors = 12 or 14 (fcc,hcp)
|
|
compute_cna_atom.cpp: // loop over near neighbors of I to build cna data structure
|
|
compute_cna_atom.cpp: // cna[k][NCOMMON] = # of common neighbors of I with each of its neighs
|
|
compute_cna_atom.cpp: // cna[k][NBONDS] = # of bonds between those common neighbors
|
|
compute_cna_atom.cpp: // cna[k][MAXBOND] = max # of bonds of any common neighbor
|
|
compute_cna_atom.cpp: // cna[k][MINBOND] = min # of bonds of any common neighbor
|
|
compute_cna_atom.cpp: // common = list of neighbors common to atom I and atom J
|
|
compute_cna_atom.cpp: // if J is an owned atom, use its near neighbor list to find them
|
|
compute_cna_atom.cpp: // if J is a ghost atom, use full neighbor list of I to find them
|
|
compute_cna_atom.cpp: // in latter case, must exclude J from I's neighbor list
|
|
compute_cna_atom.cpp: // calculate total # of bonds between common neighbor atoms
|
|
compute_cna_atom.cpp: // also max and min # of common atoms any common atom is bonded to
|
|
compute_cna_atom.cpp: // bond = pair of atoms within cutoff
|
|
compute_cna_atom.cpp: // detect CNA pattern of the atom
|
|
compute_cna_atom.cpp: // warning message
|
|
compute_cna_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_cna_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_com_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp: if (narg != 4) error->all(FLERR,"Illegal compute com/chunk command");
|
|
compute_com_chunk.cpp: // ID of compute chunk/atom
|
|
compute_com_chunk.cpp: // chunk-based data
|
|
compute_com_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for compute com/chunk");
|
|
compute_com_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_com_chunk.cpp: error->all(FLERR,"Compute com/chunk does not use chunk/atom compute");
|
|
compute_com_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp: // one-time calculation of per-chunk mass
|
|
compute_com_chunk.cpp: // done in setup, so that ComputeChunkAtom::setup() is already called
|
|
compute_com_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_com_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_com_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_com_chunk.cpp: // zero local per-chunk values
|
|
compute_com_chunk.cpp: // compute COM for each chunk
|
|
compute_com_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_com_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_com_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_com_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_com_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com_chunk.cpp: memory->create(massproc,maxchunk,"com/chunk:massproc");
|
|
compute_com_chunk.cpp: memory->create(masstotal,maxchunk,"com/chunk:masstotal");
|
|
compute_com_chunk.cpp: memory->create(com,maxchunk,3,"com/chunk:com");
|
|
compute_com_chunk.cpp: memory->create(comall,maxchunk,3,"com/chunk:comall");
|
|
compute_com_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_com_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_com.cpp:/* ----------------------------------------------------------------------
|
|
compute_com.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_com.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_com.cpp:------------------------------------------------------------------------- */
|
|
compute_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_contact_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_contact_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_contact_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp: if (narg != 3) error->all(FLERR,"Illegal compute contact/atom command");
|
|
compute_contact_atom.cpp: // error checks
|
|
compute_contact_atom.cpp: error->all(FLERR,"Compute contact/atom requires atom style sphere");
|
|
compute_contact_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp: error->all(FLERR,"Compute contact/atom requires a pair style be defined");
|
|
compute_contact_atom.cpp: if (strcmp(modify->compute[i]->style,"contact/atom") == 0) count++;
|
|
compute_contact_atom.cpp: error->warning(FLERR,"More than one compute contact/atom");
|
|
compute_contact_atom.cpp: // need an occasional neighbor list
|
|
compute_contact_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp: // grow contact array if necessary
|
|
compute_contact_atom.cpp: memory->create(contact,nmax,"contact/atom:contact");
|
|
compute_contact_atom.cpp: // invoke neighbor list (will copy or build if necessary)
|
|
compute_contact_atom.cpp: // compute number of contacts for each atom in group
|
|
compute_contact_atom.cpp: // contact if distance <= sum of radii
|
|
compute_contact_atom.cpp: // tally for both I and J
|
|
compute_contact_atom.cpp: // communicate ghost atom counts between neighbor procs if necessary
|
|
compute_contact_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_contact_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_contact_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_coord_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_coord_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_coord_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp: if (narg < 5) error->all(FLERR,"Illegal compute coord/atom command");
|
|
compute_coord_atom.cpp: error->all(FLERR,"Illegal compute coord/atom command");
|
|
compute_coord_atom.cpp: if (narg != 6) error->all(FLERR,"Illegal compute coord/atom command");
|
|
compute_coord_atom.cpp: error->all(FLERR,"Could not find compute coord/atom compute ID");
|
|
compute_coord_atom.cpp: if (strcmp(modify->compute[iorientorder]->style,"orientorder/atom") != 0)
|
|
compute_coord_atom.cpp: error->all(FLERR,"Compute coord/atom compute ID is not orientorder/atom");
|
|
compute_coord_atom.cpp: error->all(FLERR,"Compute coord/atom threshold not between -1 and 1");
|
|
compute_coord_atom.cpp: } else error->all(FLERR,"Invalid cstyle in compute coord/atom");
|
|
compute_coord_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp: // communicate real and imaginary 2*l+1 components of the normalized vector
|
|
compute_coord_atom.cpp: error->all(FLERR,"Compute coord/atom requires components "
|
|
compute_coord_atom.cpp: "option in compute orientorder/atom");
|
|
compute_coord_atom.cpp: error->all(FLERR,"Compute coord/atom requires a pair style be defined");
|
|
compute_coord_atom.cpp: "Compute coord/atom cutoff is longer than pairwise cutoff");
|
|
compute_coord_atom.cpp: // need an occasional full neighbor list
|
|
compute_coord_atom.cpp: if (strcmp(modify->compute[i]->style,"coord/atom") == 0) count++;
|
|
compute_coord_atom.cpp: error->warning(FLERR,"More than one compute coord/atom");
|
|
compute_coord_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp: // grow coordination array if necessary
|
|
compute_coord_atom.cpp: memory->create(cvec,nmax,"coord/atom:cvec");
|
|
compute_coord_atom.cpp: memory->create(carray,nmax,ncol,"coord/atom:carray");
|
|
compute_coord_atom.cpp: // invoke full neighbor list (will copy or build if necessary)
|
|
compute_coord_atom.cpp: // compute coordination number(s) for each atom in group
|
|
compute_coord_atom.cpp: // use full neighbor list to count atoms less than cutoff
|
|
compute_coord_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_coord_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_coord_atom.cpp:------------------------------------------------------------------------- */
|
|
compute.cpp:/* ----------------------------------------------------------------------
|
|
compute.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute.cpp:------------------------------------------------------------------------- */
|
|
compute.cpp:// allocate space for static class instance variable and initialize it
|
|
compute.cpp:/* ---------------------------------------------------------------------- */
|
|
compute.cpp: // compute ID, group, and style
|
|
compute.cpp: // ID must be all alphanumeric chars or underscores
|
|
compute.cpp: // set child class defaults
|
|
compute.cpp: // set modify defaults
|
|
compute.cpp: // setup list of timesteps
|
|
compute.cpp: // data masks
|
|
compute.cpp:/* ---------------------------------------------------------------------- */
|
|
compute.cpp:/* ---------------------------------------------------------------------- */
|
|
compute.cpp: // added more specific keywords in Mar17
|
|
compute.cpp: // at some point, remove generic extra and dynamic
|
|
compute.cpp: strcmp(arg[iarg],"extra/dof") == 0) {
|
|
compute.cpp: strcmp(arg[iarg],"dynamic/dof") == 0) {
|
|
compute.cpp:/* ----------------------------------------------------------------------
|
|
compute.cpp:------------------------------------------------------------------------- */
|
|
compute.cpp:/* ----------------------------------------------------------------------
|
|
compute.cpp:------------------------------------------------------------------------- */
|
|
compute.cpp:/* ---------------------------------------------------------------------- */
|
|
compute.cpp:/* ----------------------------------------------------------------------
|
|
compute.cpp:------------------------------------------------------------------------- */
|
|
compute.cpp: // i = location in list to insert ntimestep
|
|
compute.cpp: // extend list as needed
|
|
compute.cpp: // move remainder of list upward and insert ntimestep
|
|
compute.cpp:/* ----------------------------------------------------------------------
|
|
compute.cpp: return 1/0 if ntimestep is or is not in list of calling timesteps
|
|
compute.cpp:------------------------------------------------------------------------- */
|
|
compute.cpp:/* ----------------------------------------------------------------------
|
|
compute.cpp:------------------------------------------------------------------------- */
|
|
compute_dihedral.cpp:/* ----------------------------------------------------------------------
|
|
compute_dihedral.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_dihedral.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_dihedral.cpp:------------------------------------------------------------------------- */
|
|
compute_dihedral.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral.cpp: // check if dihedral style hybrid exists
|
|
compute_dihedral.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral.cpp: // recheck dihedral style in case it has been changed
|
|
compute_dihedral.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_dihedral_local.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_dihedral_local.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_dihedral_local.cpp:------------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp: if (narg < 4) error->all(FLERR,"Illegal compute dihedral/local command");
|
|
compute_dihedral_local.cpp: "Compute dihedral/local used when dihedrals are not allowed");
|
|
compute_dihedral_local.cpp: else error->all(FLERR,"Invalid keyword in compute dihedral/local command");
|
|
compute_dihedral_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp: error->all(FLERR,"No dihedral style is defined for compute dihedral/local");
|
|
compute_dihedral_local.cpp: // do initial memory allocation so that memory_usage() is correct
|
|
compute_dihedral_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp: // count local entries and compute dihedral info
|
|
compute_dihedral_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_dihedral_local.cpp:------------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp: // phi calculation from dihedral style harmonic
|
|
compute_dihedral_local.cpp: if (rasq > 0) ra2inv = 1.0/rasq;
|
|
compute_dihedral_local.cpp: if (rbsq > 0) rb2inv = 1.0/rbsq;
|
|
compute_dihedral_local.cpp: pbuf[n] = 180.0*atan2(s,c)/MY_PI;
|
|
compute_dihedral_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dihedral_local.cpp: // grow vector_local or array_local
|
|
compute_dihedral_local.cpp: memory->create(vlocal,nmax,"dihedral/local:vector_local");
|
|
compute_dihedral_local.cpp: memory->create(alocal,nmax,nvalues,"dihedral/local:array_local");
|
|
compute_dihedral_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_dihedral_local.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_dipole_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp: error->all(FLERR,"Illegal compute dipole/chunk command");
|
|
compute_dipole_chunk.cpp: // ID of compute chunk/atom
|
|
compute_dipole_chunk.cpp: else error->all(FLERR,"Illegal compute dipole/chunk command");
|
|
compute_dipole_chunk.cpp: // chunk-based data
|
|
compute_dipole_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_dipole_chunk.cpp: "compute dipole/chunk");
|
|
compute_dipole_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_dipole_chunk.cpp: error->all(FLERR,"Compute dipole/chunk does not use chunk/atom compute");
|
|
compute_dipole_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_dipole_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_dipole_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_dipole_chunk.cpp: // zero local per-chunk values
|
|
compute_dipole_chunk.cpp: // compute COM for each chunk
|
|
compute_dipole_chunk.cpp: } else massone = 1.0; // usecenter == GEOMCENTER
|
|
compute_dipole_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_dipole_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_dipole_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_dipole_chunk.cpp: // compute dipole for each chunk
|
|
compute_dipole_chunk.cpp: // correct for position dependence with charged chunks
|
|
compute_dipole_chunk.cpp: // compute total dipole moment
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_dipole_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_dipole_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_dipole_chunk.cpp: memory->create(massproc,maxchunk,"dipole/chunk:massproc");
|
|
compute_dipole_chunk.cpp: memory->create(masstotal,maxchunk,"dipole/chunk:masstotal");
|
|
compute_dipole_chunk.cpp: memory->create(chrgproc,maxchunk,"dipole/chunk:chrgproc");
|
|
compute_dipole_chunk.cpp: memory->create(chrgtotal,maxchunk,"dipole/chunk:chrgtotal");
|
|
compute_dipole_chunk.cpp: memory->create(com,maxchunk,3,"dipole/chunk:com");
|
|
compute_dipole_chunk.cpp: memory->create(comall,maxchunk,3,"dipole/chunk:comall");
|
|
compute_dipole_chunk.cpp: memory->create(dipole,maxchunk,4,"dipole/chunk:dipole");
|
|
compute_dipole_chunk.cpp: memory->create(dipoleall,maxchunk,4,"dipole/chunk:dipoleall");
|
|
compute_dipole_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_dipole_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_displace_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_displace_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_displace_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_displace_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_displace_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_displace_atom.cpp: if (narg != 3) error->all(FLERR,"Illegal compute displace/atom command");
|
|
compute_displace_atom.cpp: // create a new fix STORE style
|
|
compute_displace_atom.cpp: // id = compute-ID + COMPUTE_STORE, fix group = compute group
|
|
compute_displace_atom.cpp: // calculate xu,yu,zu for fix store array
|
|
compute_displace_atom.cpp: // skip if reset from restart file
|
|
compute_displace_atom.cpp: // per-atom displacement array
|
|
compute_displace_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_displace_atom.cpp: // check nfix in case all fixes have already been deleted
|
|
compute_displace_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_displace_atom.cpp: // set fix which stores original atom coords
|
|
compute_displace_atom.cpp: if (ifix < 0) error->all(FLERR,"Could not find compute displace/atom fix ID");
|
|
compute_displace_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_displace_atom.cpp: // grow local displacement array if necessary
|
|
compute_displace_atom.cpp: memory->create(displace,nmax,4,"displace/atom:displace");
|
|
compute_displace_atom.cpp: // dx,dy,dz = displacement of atom from original position
|
|
compute_displace_atom.cpp: // original unwrapped position is stored by fix
|
|
compute_displace_atom.cpp: // for triclinic, need to unwrap current atom coord via h matrix
|
|
compute_displace_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_displace_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_displace_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_displace_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_erotate_sphere_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_erotate_sphere_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_erotate_sphere_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_erotate_sphere_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_erotate_sphere_atom.cpp:#define INERTIA 0.4 // moment of inertia prefactor for sphere
|
|
compute_erotate_sphere_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_erotate_sphere_atom.cpp: error->all(FLERR,"Illegal compute erotate/sphere//atom command");
|
|
compute_erotate_sphere_atom.cpp: // error check
|
|
compute_erotate_sphere_atom.cpp: error->all(FLERR,"Compute erotate/sphere/atom requires atom style sphere");
|
|
compute_erotate_sphere_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_erotate_sphere_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_erotate_sphere_atom.cpp: if (strcmp(modify->compute[i]->style,"erotate/sphere/atom") == 0) count++;
|
|
compute_erotate_sphere_atom.cpp: error->warning(FLERR,"More than one compute erotate/sphere/atom");
|
|
compute_erotate_sphere_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_erotate_sphere_atom.cpp: // grow erot array if necessary
|
|
compute_erotate_sphere_atom.cpp: memory->create(erot,nmax,"erotate/sphere/atom:erot");
|
|
compute_erotate_sphere_atom.cpp: // compute rotational kinetic energy for each atom in group
|
|
compute_erotate_sphere_atom.cpp: // point particles will have erot = 0.0, due to radius = 0.0
|
|
compute_erotate_sphere_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_erotate_sphere_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_erotate_sphere.cpp:/* ----------------------------------------------------------------------
|
|
compute_erotate_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_erotate_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_erotate_sphere.cpp:------------------------------------------------------------------------- */
|
|
compute_erotate_sphere.cpp:#define INERTIA 0.4 // moment of inertia prefactor for sphere
|
|
compute_erotate_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_erotate_sphere.cpp: if (narg != 3) error->all(FLERR,"Illegal compute erotate/sphere command");
|
|
compute_erotate_sphere.cpp: // error check
|
|
compute_erotate_sphere.cpp: error->all(FLERR,"Compute erotate/sphere requires atom style sphere");
|
|
compute_erotate_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_erotate_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_erotate_sphere.cpp: // sum rotational energy for each particle
|
|
compute_erotate_sphere.cpp: // point particles will not contribute, due to radius = 0.0
|
|
compute_global_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_global_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_global_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_global_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_global_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_global_atom.cpp: if (narg < 5) error->all(FLERR,"Illegal compute global/atom command");
|
|
compute_global_atom.cpp: // process index arg
|
|
compute_global_atom.cpp: error->all(FLERR,"Illegal compute global/atom command");
|
|
compute_global_atom.cpp: } else error->all(FLERR,"Illegal compute global/atom command");
|
|
compute_global_atom.cpp: // expand args if any have wildcard character "*"
|
|
compute_global_atom.cpp: // parse values until one isn't recognized
|
|
compute_global_atom.cpp: error->all(FLERR,"Illegal compute global/atom command");
|
|
compute_global_atom.cpp: } else error->all(FLERR,"Illegal compute global/atom command");
|
|
compute_global_atom.cpp: // if wildcard expansion occurred, free earg memory from expand_args()
|
|
compute_global_atom.cpp: // setup and error check both index arg and values
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom compute does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom compute does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom compute does not "
|
|
compute_global_atom.cpp: "Compute global/atom compute array is accessed out-of-range");
|
|
compute_global_atom.cpp: error->all(FLERR,"Fix ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom fix does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom fix does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom fix does not "
|
|
compute_global_atom.cpp: "Compute global/atom fix array is accessed out-of-range");
|
|
compute_global_atom.cpp: error->all(FLERR,"Variable name for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom variable is not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom compute does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom compute does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom compute array is "
|
|
compute_global_atom.cpp: error->all(FLERR,"Fix ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom fix does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom fix does not "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom fix array is "
|
|
compute_global_atom.cpp: error->all(FLERR,"Variable name for compute global/atom "
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute global/atom variable is not "
|
|
compute_global_atom.cpp: // this compute produces either a peratom vector or array
|
|
compute_global_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_global_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_global_atom.cpp: // set indices of all computes,fixes,variables
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Fix ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Variable name for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Compute ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Fix ID for compute global/atom does not exist");
|
|
compute_global_atom.cpp: error->all(FLERR,"Variable name for compute global/atom "
|
|
compute_global_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_global_atom.cpp: // grow indices and output vector or array if necessary
|
|
compute_global_atom.cpp: memory->create(indices,nmax,"global/atom:indices");
|
|
compute_global_atom.cpp: memory->create(vector_atom,nmax,"global/atom:vector_atom");
|
|
compute_global_atom.cpp: memory->create(array_atom,nmax,nvalues,"global/atom:array_atom");
|
|
compute_global_atom.cpp: // setup current peratom indices
|
|
compute_global_atom.cpp: // integer indices are rounded down from double values
|
|
compute_global_atom.cpp: // indices are decremented from 1 to N -> 0 to N-1
|
|
compute_global_atom.cpp: error->all(FLERR,"Fix used in compute global/atom not "
|
|
compute_global_atom.cpp: memory->create(varatom,nmax,"global/atom:varatom");
|
|
compute_global_atom.cpp: // loop over values to fill output vector or array
|
|
compute_global_atom.cpp: // output = vector
|
|
compute_global_atom.cpp: error->all(FLERR,"Fix used in compute global/atom not "
|
|
compute_global_atom.cpp: memory->create(vecglobal,maxvector,"global/atom:vecglobal");
|
|
compute_global_atom.cpp: // output = array
|
|
compute_global_atom.cpp: memory->create(vecglobal,maxvector,"global/atom:vecglobal");
|
|
compute_global_atom.cpp: error->all(FLERR,"Fix used in compute global/atom not "
|
|
compute_global_atom.cpp: memory->create(vecglobal,maxvector,"global/atom:vecglobal");
|
|
compute_global_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_global_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_global_atom.cpp: bytes += nmax * sizeof(int); // indices
|
|
compute_global_atom.cpp: if (varatom) bytes += nmax * sizeof(double); // varatom
|
|
compute_global_atom.cpp: bytes += maxvector * sizeof(double); // vecglobal
|
|
compute_group_group.cpp:/* ----------------------------------------------------------------------
|
|
compute_group_group.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_group_group.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_group_group.cpp:------------------------------------------------------------------------- */
|
|
compute_group_group.cpp:/* ----------------------------------------------------------------------
|
|
compute_group_group.cpp:------------------------------------------------------------------------- */
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp: if (narg < 4) error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: error->all(FLERR,"Compute group/group group ID does not exist");
|
|
compute_group_group.cpp: error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: else error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: else error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: else error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: else error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp: error->all(FLERR,"Compute group/group molecule requires molecule IDs");
|
|
compute_group_group.cpp: } else error->all(FLERR,"Illegal compute group/group command");
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp: // if non-hybrid, then error if single_enable = 0
|
|
compute_group_group.cpp: // if hybrid, let hybrid determine if sub-style sets single_enable = 0
|
|
compute_group_group.cpp: error->all(FLERR,"No pair style defined for compute group/group");
|
|
compute_group_group.cpp: error->all(FLERR,"Pair style does not support compute group/group");
|
|
compute_group_group.cpp: // error if Kspace style does not compute group/group interactions
|
|
compute_group_group.cpp: error->all(FLERR,"No Kspace style defined for compute group/group");
|
|
compute_group_group.cpp: error->all(FLERR,"Kspace style does not support compute group/group");
|
|
compute_group_group.cpp: // compute Kspace correction terms
|
|
compute_group_group.cpp: sprintf(str,"Both groups in compute group/group have a net charge; "
|
|
compute_group_group.cpp: // recheck that group 2 has not been deleted
|
|
compute_group_group.cpp: error->all(FLERR,"Compute group/group group ID does not exist");
|
|
compute_group_group.cpp: // need an occasional half neighbor list
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp: // invoke half neighbor list (will copy or build if necessary)
|
|
compute_group_group.cpp: // loop over neighbors of my atoms
|
|
compute_group_group.cpp: // skip if I,J are not in 2 groups
|
|
compute_group_group.cpp: // skip if atom I is not in either group
|
|
compute_group_group.cpp: // skip if atom J is not in either group
|
|
compute_group_group.cpp: // skip if atoms I,J are only in the same group
|
|
compute_group_group.cpp: // skip if molecule IDs of atoms I,J do not satisfy molflag setting
|
|
compute_group_group.cpp: // energy only computed once so tally full amount
|
|
compute_group_group.cpp: // force tally is jgroup acting on igroup
|
|
compute_group_group.cpp: // energy computed twice so tally half amount
|
|
compute_group_group.cpp: // only tally force if I own igroup atom
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp: // subtract extra A <--> A Kspace interaction so energy matches
|
|
compute_group_group.cpp: // real-space style of compute group-group
|
|
compute_group_group.cpp: // add extra Kspace term to energy
|
|
compute_group_group.cpp: // self energy correction term
|
|
compute_group_group.cpp: // k=0 boundary correction term
|
|
compute_group_group.cpp: // adjustment of z dimension for 2d slab Ewald
|
|
compute_group_group.cpp: // 3d Ewald just uses zprd since slab_volfactor = 1.0
|
|
compute_group_group.cpp: scalar -= e_correction/volume;
|
|
compute_group_group.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_group_group.cpp: // total charge of groups A & B, needed for correction term
|
|
compute_group_group.cpp: // self-energy correction
|
|
compute_group_group.cpp: e_self = qscale * g_ewald*qsqsum_group/MY_PIS;
|
|
compute_group_group.cpp: // subtract extra AA terms
|
|
compute_group_group.cpp: // k=0 energy correction term (still need to divide by volume above)
|
|
compute_group_group.cpp: e_correction *= qscale * MY_PI2 / (g_ewald*g_ewald);
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_gyration_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp: if (narg < 4) error->all(FLERR,"Illegal compute gyration/chunk command");
|
|
compute_gyration_chunk.cpp: // ID of compute chunk/atom
|
|
compute_gyration_chunk.cpp: // optional args
|
|
compute_gyration_chunk.cpp: } else error->all(FLERR,"Illegal compute gyration/chunk command");
|
|
compute_gyration_chunk.cpp: // chunk-based data
|
|
compute_gyration_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_gyration_chunk.cpp: "compute gyration/chunk");
|
|
compute_gyration_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_gyration_chunk.cpp: error->all(FLERR,"Compute gyration/chunk does not use chunk/atom compute");
|
|
compute_gyration_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp: // compute Rg for each chunk
|
|
compute_gyration_chunk.cpp: rgall[i] = sqrt(rgall[i]/masstotal[i]);
|
|
compute_gyration_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp: rgtall[i][j] = rgtall[i][j]/masstotal[i];
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_gyration_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_gyration_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_gyration_chunk.cpp: // zero local per-chunk values
|
|
compute_gyration_chunk.cpp: // compute COM for each chunk
|
|
compute_gyration_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_gyration_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_gyration_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_gyration_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_gyration_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration_chunk.cpp: memory->create(massproc,maxchunk,"gyration/chunk:massproc");
|
|
compute_gyration_chunk.cpp: memory->create(masstotal,maxchunk,"gyration/chunk:masstotal");
|
|
compute_gyration_chunk.cpp: memory->create(com,maxchunk,3,"gyration/chunk:com");
|
|
compute_gyration_chunk.cpp: memory->create(comall,maxchunk,3,"gyration/chunk:comall");
|
|
compute_gyration_chunk.cpp: memory->create(rgt,maxchunk,6,"gyration/chunk:rgt");
|
|
compute_gyration_chunk.cpp: memory->create(rgtall,maxchunk,6,"gyration/chunk:rgtall");
|
|
compute_gyration_chunk.cpp: memory->create(rg,maxchunk,"gyration/chunk:rg");
|
|
compute_gyration_chunk.cpp: memory->create(rgall,maxchunk,"gyration/chunk:rgall");
|
|
compute_gyration_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_gyration.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_gyration.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_gyration.cpp:/* ----------------------------------------------------------------------
|
|
compute_gyration.cpp:------------------------------------------------------------------------- */
|
|
compute_gyration.cpp: vector[i] /= masstotal;
|
|
compute_heat_flux.cpp:/* ----------------------------------------------------------------------
|
|
compute_heat_flux.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_heat_flux.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_heat_flux.cpp:------------------------------------------------------------------------- */
|
|
compute_heat_flux.cpp:/* ----------------------------------------------------------------------
|
|
compute_heat_flux.cpp:------------------------------------------------------------------------- */
|
|
compute_heat_flux.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_heat_flux.cpp: if (narg != 6) error->all(FLERR,"Illegal compute heat/flux command");
|
|
compute_heat_flux.cpp: // store ke/atom, pe/atom, stress/atom IDs used by heat flux computation
|
|
compute_heat_flux.cpp: // insure they are valid for these computations
|
|
compute_heat_flux.cpp: error->all(FLERR,"Could not find compute heat/flux compute ID");
|
|
compute_heat_flux.cpp: if (strcmp(modify->compute[ike]->style,"ke/atom") != 0)
|
|
compute_heat_flux.cpp: error->all(FLERR,"Compute heat/flux compute ID does not compute ke/atom");
|
|
compute_heat_flux.cpp: error->all(FLERR,"Compute heat/flux compute ID does not compute pe/atom");
|
|
compute_heat_flux.cpp: "Compute heat/flux compute ID does not compute stress/atom");
|
|
compute_heat_flux.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_heat_flux.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_heat_flux.cpp: // error checks
|
|
compute_heat_flux.cpp: error->all(FLERR,"Could not find compute heat/flux compute ID");
|
|
compute_heat_flux.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_heat_flux.cpp: // invoke 3 computes if they haven't been already
|
|
compute_heat_flux.cpp: // heat flux vector = jc[3] + jv[3]
|
|
compute_heat_flux.cpp: // jc[3] = convective portion of heat flux = sum_i (ke_i + pe_i) v_i[3]
|
|
compute_heat_flux.cpp: // jv[3] = virial portion of heat flux = sum_i (stress_tensor_i . v_i[3])
|
|
compute_heat_flux.cpp: // normalization by volume is not included
|
|
compute_heat_flux.cpp: // convert jv from stress*volume to energy units via nktv2p factor
|
|
compute_heat_flux.cpp: jv[0] /= nktv2p;
|
|
compute_heat_flux.cpp: jv[1] /= nktv2p;
|
|
compute_heat_flux.cpp: jv[2] /= nktv2p;
|
|
compute_heat_flux.cpp: // sum across all procs
|
|
compute_heat_flux.cpp: // 1st 3 terms are total heat flux
|
|
compute_heat_flux.cpp: // 2nd 3 terms are just conductive portion
|
|
compute_hexorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_hexorder_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_hexorder_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_hexorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_hexorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp: if (narg < 3 ) error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp: // process optional args
|
|
compute_hexorder_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp: error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp: error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp: error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp: } else error->all(FLERR,"Illegal compute hexorder/atom command");
|
|
compute_hexorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp: error->all(FLERR,"Compute hexorder/atom requires a pair style be defined");
|
|
compute_hexorder_atom.cpp: "Compute hexorder/atom cutoff is longer than pairwise cutoff");
|
|
compute_hexorder_atom.cpp: // need an occasional full neighbor list
|
|
compute_hexorder_atom.cpp: if (strcmp(modify->compute[i]->style,"hexorder/atom") == 0) count++;
|
|
compute_hexorder_atom.cpp: error->warning(FLERR,"More than one compute hexorder/atom");
|
|
compute_hexorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp: // grow order parameter array if necessary
|
|
compute_hexorder_atom.cpp: memory->create(qnarray,nmax,ncol,"hexorder/atom:qnarray");
|
|
compute_hexorder_atom.cpp: // invoke full neighbor list (will copy or build if necessary)
|
|
compute_hexorder_atom.cpp: // compute order parameter for each atom in group
|
|
compute_hexorder_atom.cpp: // use full neighbor list to count atoms less than cutoff
|
|
compute_hexorder_atom.cpp: // insure distsq and nearest arrays are long enough
|
|
compute_hexorder_atom.cpp: memory->create(distsq,maxneigh,"hexorder/atom:distsq");
|
|
compute_hexorder_atom.cpp: memory->create(nearest,maxneigh,"hexorder/atom:nearest");
|
|
compute_hexorder_atom.cpp: // loop over list of all neighbors within force cutoff
|
|
compute_hexorder_atom.cpp: // distsq[] = distance sq to each
|
|
compute_hexorder_atom.cpp: // nearest[] = atom indices of neighbors
|
|
compute_hexorder_atom.cpp: // if not nnn neighbors, order parameter = 0;
|
|
compute_hexorder_atom.cpp: // if nnn > 0, use only nearest nnn neighbors
|
|
compute_hexorder_atom.cpp: qn[0] = usum/nnn;
|
|
compute_hexorder_atom.cpp: qn[1] = vsum/nnn;
|
|
compute_hexorder_atom.cpp:// calculate order parameter using std::complex::pow function
|
|
compute_hexorder_atom.cpp: double rinv = 1.0/sqrt(delx*delx+dely*dely);
|
|
compute_hexorder_atom.cpp:// calculate order parameter using trig functions
|
|
compute_hexorder_atom.cpp:// this is usually slower, but can be used if <complex> not available
|
|
compute_hexorder_atom.cpp: if(dely > 0.0) ntheta = nnn * MY_PI / 2.0;
|
|
compute_hexorder_atom.cpp: else ntheta = nnn * 3.0 * MY_PI / 2.0;
|
|
compute_hexorder_atom.cpp: } else ntheta = nnn * atan(dely / delx);
|
|
compute_hexorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_hexorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_hexorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_hexorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_improper.cpp:/* ----------------------------------------------------------------------
|
|
compute_improper.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_improper.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_improper.cpp:------------------------------------------------------------------------- */
|
|
compute_improper.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper.cpp: // check if improper style hybrid exists
|
|
compute_improper.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper.cpp: // recheck improper style in case it has been changed
|
|
compute_improper.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_improper_local.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_improper_local.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_improper_local.cpp:------------------------------------------------------------------------- */
|
|
compute_improper_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper_local.cpp: if (narg < 4) error->all(FLERR,"Illegal compute improper/local command");
|
|
compute_improper_local.cpp: "Compute improper/local used when impropers are not allowed");
|
|
compute_improper_local.cpp: else error->all(FLERR,"Invalid keyword in compute improper/local command");
|
|
compute_improper_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper_local.cpp: error->all(FLERR,"No improper style is defined for compute improper/local");
|
|
compute_improper_local.cpp: // do initial memory allocation so that memory_usage() is correct
|
|
compute_improper_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper_local.cpp: // count local entries and compute improper info
|
|
compute_improper_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_improper_local.cpp:------------------------------------------------------------------------- */
|
|
compute_improper_local.cpp: // chi calculation from improper style harmonic
|
|
compute_improper_local.cpp: ss1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z);
|
|
compute_improper_local.cpp: ss2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z);
|
|
compute_improper_local.cpp: ss3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z);
|
|
compute_improper_local.cpp: s1 = 1.0 / s1;
|
|
compute_improper_local.cpp: s2 = 1.0 / s2;
|
|
compute_improper_local.cpp: cbuf[n] = 180.0*acos(c)/MY_PI;
|
|
compute_improper_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_improper_local.cpp: // grow vector_local or array_local
|
|
compute_improper_local.cpp: memory->create(vlocal,nmax,"improper/local:vector_local");
|
|
compute_improper_local.cpp: memory->create(alocal,nmax,nvalues,"improper/local:array_local");
|
|
compute_improper_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_improper_local.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_inertia_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp: if (narg != 4) error->all(FLERR,"Illegal compute inertia/chunk command");
|
|
compute_inertia_chunk.cpp: // ID of compute chunk/atom
|
|
compute_inertia_chunk.cpp: // chunk-based data
|
|
compute_inertia_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_inertia_chunk.cpp: "compute inertia/chunk");
|
|
compute_inertia_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_inertia_chunk.cpp: error->all(FLERR,"Compute inertia/chunk does not use chunk/atom compute");
|
|
compute_inertia_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_inertia_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_inertia_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_inertia_chunk.cpp: // zero local per-chunk values
|
|
compute_inertia_chunk.cpp: // compute COM for each chunk
|
|
compute_inertia_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_inertia_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_inertia_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_inertia_chunk.cpp: // compute inertia tensor for each chunk
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_inertia_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_inertia_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_inertia_chunk.cpp: memory->create(massproc,maxchunk,"inertia/chunk:massproc");
|
|
compute_inertia_chunk.cpp: memory->create(masstotal,maxchunk,"inertia/chunk:masstotal");
|
|
compute_inertia_chunk.cpp: memory->create(com,maxchunk,3,"inertia/chunk:com");
|
|
compute_inertia_chunk.cpp: memory->create(comall,maxchunk,3,"inertia/chunk:comall");
|
|
compute_inertia_chunk.cpp: memory->create(inertia,maxchunk,6,"inertia/chunk:inertia");
|
|
compute_inertia_chunk.cpp: memory->create(inertiaall,maxchunk,6,"inertia/chunk:inertiaall");
|
|
compute_inertia_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_inertia_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_ke_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_ke_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_ke_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_ke_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_ke_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_ke_atom.cpp: if (narg != 3) error->all(FLERR,"Illegal compute ke/atom command");
|
|
compute_ke_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_ke_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_ke_atom.cpp: if (strcmp(modify->compute[i]->style,"ke/atom") == 0) count++;
|
|
compute_ke_atom.cpp: error->warning(FLERR,"More than one compute ke/atom");
|
|
compute_ke_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_ke_atom.cpp: // grow ke array if necessary
|
|
compute_ke_atom.cpp: memory->create(ke,nmax,"ke/atom:ke");
|
|
compute_ke_atom.cpp: // compute kinetic energy for each atom in group
|
|
compute_ke_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_ke_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_ke.cpp:/* ----------------------------------------------------------------------
|
|
compute_ke.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_ke.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_ke.cpp:------------------------------------------------------------------------- */
|
|
compute_ke.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_ke.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_ke.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_msd_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp: if (narg != 4) error->all(FLERR,"Illegal compute msd/chunk command");
|
|
compute_msd_chunk.cpp: // ID of compute chunk/atom
|
|
compute_msd_chunk.cpp: // create a new fix STORE style for reference positions
|
|
compute_msd_chunk.cpp: // id = compute-ID + COMPUTE_STORE, fix group = compute group
|
|
compute_msd_chunk.cpp: // do not know size of array at this point, just allocate 1x3 array
|
|
compute_msd_chunk.cpp: // fix creation must be done now so that a restart run can
|
|
compute_msd_chunk.cpp: // potentially re-populate the fix array (and change it to correct size)
|
|
compute_msd_chunk.cpp: // otherwise size reset and init will be done in setup()
|
|
compute_msd_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp: // check nfix in case all fixes have already been deleted
|
|
compute_msd_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for compute msd/chunk");
|
|
compute_msd_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_msd_chunk.cpp: error->all(FLERR,"Compute msd/chunk does not use chunk/atom compute");
|
|
compute_msd_chunk.cpp: // set fix which stores reference atom coords
|
|
compute_msd_chunk.cpp: // if firstflag, will be created in setup()
|
|
compute_msd_chunk.cpp: if (ifix < 0) error->all(FLERR,"Could not find compute msd/chunk fix ID");
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp: // if fix->astore is already correct size, restart file set it up
|
|
compute_msd_chunk.cpp: // otherwise reset its size now and initialize to current COM
|
|
compute_msd_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_msd_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_msd_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_msd_chunk.cpp: // first time call, allocate per-chunk arrays
|
|
compute_msd_chunk.cpp: // thereafter, require nchunk remain the same
|
|
compute_msd_chunk.cpp: error->all(FLERR,"Compute msd/chunk nchunk is not static");
|
|
compute_msd_chunk.cpp: // zero local per-chunk values
|
|
compute_msd_chunk.cpp: // compute current COM for each chunk
|
|
compute_msd_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_msd_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_msd_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_msd_chunk.cpp: // MSD is difference between current and initial COM
|
|
compute_msd_chunk.cpp: // cominit is initilialized by setup() when firstflag is set
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_msd_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_msd_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd_chunk.cpp: memory->create(massproc,nchunk,"msd/chunk:massproc");
|
|
compute_msd_chunk.cpp: memory->create(masstotal,nchunk,"msd/chunk:masstotal");
|
|
compute_msd_chunk.cpp: memory->create(com,nchunk,3,"msd/chunk:com");
|
|
compute_msd_chunk.cpp: memory->create(comall,nchunk,3,"msd/chunk:comall");
|
|
compute_msd_chunk.cpp: memory->create(msd,nchunk,4,"msd/chunk:msd");
|
|
compute_msd_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_msd.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_msd.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_msd.cpp:------------------------------------------------------------------------- */
|
|
compute_msd.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd.cpp: // optional args
|
|
compute_msd.cpp: // create a new fix STORE style for reference positions
|
|
compute_msd.cpp: // id = compute-ID + COMPUTE_STORE, fix group = compute group
|
|
compute_msd.cpp: // calculate xu,yu,zu for fix store array
|
|
compute_msd.cpp: // skip if reset from restart file
|
|
compute_msd.cpp: // adjust for COM if requested
|
|
compute_msd.cpp: // initialize counter for average positions if requested
|
|
compute_msd.cpp: // displacement vector
|
|
compute_msd.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd.cpp: // check nfix in case all fixes have already been deleted
|
|
compute_msd.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd.cpp: // set fix which stores reference atom coords
|
|
compute_msd.cpp: // nmsd = # of atoms in group
|
|
compute_msd.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_msd.cpp: // cm = current center of mass
|
|
compute_msd.cpp: // dx,dy,dz = displacement of atom from reference position
|
|
compute_msd.cpp: // reference unwrapped position is stored by fix
|
|
compute_msd.cpp: // relative to center of mass if comflag is set
|
|
compute_msd.cpp: // for triclinic, need to unwrap current atom coord via h matrix
|
|
compute_msd.cpp: // update number of averages if requested
|
|
compute_msd.cpp: navfac = 1.0/(naverage+1);
|
|
compute_msd.cpp: // use running average position for reference if requested
|
|
compute_msd.cpp: // use running average position for reference if requested
|
|
compute_msd.cpp: vector[0] /= nmsd;
|
|
compute_msd.cpp: vector[1] /= nmsd;
|
|
compute_msd.cpp: vector[2] /= nmsd;
|
|
compute_msd.cpp: vector[3] /= nmsd;
|
|
compute_msd.cpp:/* ----------------------------------------------------------------------
|
|
compute_msd.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_omega_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp: if (narg != 4) error->all(FLERR,"Illegal compute omega/chunk command");
|
|
compute_omega_chunk.cpp: // ID of compute chunk/atom
|
|
compute_omega_chunk.cpp: // chunk-based data
|
|
compute_omega_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_omega_chunk.cpp: "compute omega/chunk");
|
|
compute_omega_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_omega_chunk.cpp: error->all(FLERR,"Compute omega/chunk does not use chunk/atom compute");
|
|
compute_omega_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_omega_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_omega_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_omega_chunk.cpp: // zero local per-chunk values
|
|
compute_omega_chunk.cpp: // compute COM for each chunk
|
|
compute_omega_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_omega_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_omega_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_omega_chunk.cpp: // compute inertia tensor for each chunk
|
|
compute_omega_chunk.cpp: // compute angmom for each chunk
|
|
compute_omega_chunk.cpp: // compute omega for each chunk
|
|
compute_omega_chunk.cpp: // determinant = triple product of rows of inertia matrix
|
|
compute_omega_chunk.cpp: // non-singular I matrix
|
|
compute_omega_chunk.cpp: // use L = Iw, inverting I to solve for w
|
|
compute_omega_chunk.cpp: invdeterminant = 1.0/determinant;
|
|
compute_omega_chunk.cpp: // handle each (nearly) singular I matrix
|
|
compute_omega_chunk.cpp: // due to 2-atom chunk or linear molecule
|
|
compute_omega_chunk.cpp: // use jacobi() and angmom_to_omega() to calculate valid omega
|
|
compute_omega_chunk.cpp: "Insufficient Jacobi rotations for omega/chunk");
|
|
compute_omega_chunk.cpp: // enforce 3 evectors as a right-handed coordinate system
|
|
compute_omega_chunk.cpp: // flip 3rd vector if needed
|
|
compute_omega_chunk.cpp: // if any principal moment < scaled EPSILON, set to 0.0
|
|
compute_omega_chunk.cpp: // calculate omega using diagonalized inertia matrix
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_omega_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_omega_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_omega_chunk.cpp: memory->create(massproc,maxchunk,"omega/chunk:massproc");
|
|
compute_omega_chunk.cpp: memory->create(masstotal,maxchunk,"omega/chunk:masstotal");
|
|
compute_omega_chunk.cpp: memory->create(com,maxchunk,3,"omega/chunk:com");
|
|
compute_omega_chunk.cpp: memory->create(comall,maxchunk,3,"omega/chunk:comall");
|
|
compute_omega_chunk.cpp: memory->create(inertia,maxchunk,6,"omega/chunk:inertia");
|
|
compute_omega_chunk.cpp: memory->create(inertiaall,maxchunk,6,"omega/chunk:inertiaall");
|
|
compute_omega_chunk.cpp: memory->create(angmom,maxchunk,3,"omega/chunk:angmom");
|
|
compute_omega_chunk.cpp: memory->create(angmomall,maxchunk,3,"omega/chunk:angmomall");
|
|
compute_omega_chunk.cpp: memory->create(omega,maxchunk,3,"omega/chunk:omega");
|
|
compute_omega_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_omega_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_orientorder_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp: if (narg < 3 ) error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: // set default values for optional args
|
|
compute_orientorder_atom.cpp: // specify which orders to request
|
|
compute_orientorder_atom.cpp: memory->create(qlist,nqlist,"orientorder/atom:qlist");
|
|
compute_orientorder_atom.cpp: // process optional args
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: memory->create(qlist,nqlist,"orientorder/atom:qlist");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp: } else error->all(FLERR,"Illegal compute orientorder/atom command");
|
|
compute_orientorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Compute orientorder/atom requires a "
|
|
compute_orientorder_atom.cpp: error->all(FLERR,"Compute orientorder/atom cutoff is "
|
|
compute_orientorder_atom.cpp: memory->create(qnm_r,qmax,2*qmax+1,"orientorder/atom:qnm_r");
|
|
compute_orientorder_atom.cpp: memory->create(qnm_i,qmax,2*qmax+1,"orientorder/atom:qnm_i");
|
|
compute_orientorder_atom.cpp: // need an occasional full neighbor list
|
|
compute_orientorder_atom.cpp: if (strcmp(modify->compute[i]->style,"orientorder/atom") == 0) count++;
|
|
compute_orientorder_atom.cpp: error->warning(FLERR,"More than one compute orientorder/atom");
|
|
compute_orientorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp: // grow order parameter array if necessary
|
|
compute_orientorder_atom.cpp: memory->create(qnarray,nmax,ncol,"orientorder/atom:qnarray");
|
|
compute_orientorder_atom.cpp: // invoke full neighbor list (will copy or build if necessary)
|
|
compute_orientorder_atom.cpp: // compute order parameter for each atom in group
|
|
compute_orientorder_atom.cpp: // use full neighbor list to count atoms less than cutoff
|
|
compute_orientorder_atom.cpp: // insure distsq and nearest arrays are long enough
|
|
compute_orientorder_atom.cpp: memory->create(distsq,maxneigh,"orientorder/atom:distsq");
|
|
compute_orientorder_atom.cpp: memory->create(rlist,maxneigh,3,"orientorder/atom:rlist");
|
|
compute_orientorder_atom.cpp: memory->create(nearest,maxneigh,"orientorder/atom:nearest");
|
|
compute_orientorder_atom.cpp: // loop over list of all neighbors within force cutoff
|
|
compute_orientorder_atom.cpp: // distsq[] = distance sq to each
|
|
compute_orientorder_atom.cpp: // rlist[] = distance vector to each
|
|
compute_orientorder_atom.cpp: // nearest[] = atom indices of neighbors
|
|
compute_orientorder_atom.cpp: // if not nnn neighbors, order parameter = 0;
|
|
compute_orientorder_atom.cpp: // if nnn > 0, use only nearest nnn neighbors
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:// Use no-op do while to create single statement
|
|
compute_orientorder_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp: double costheta = r[2] / rmag;
|
|
compute_orientorder_atom.cpp: double rxymaginv = 1.0/rxymag;
|
|
compute_orientorder_atom.cpp: double fac = sqrt(MY_4PI) / ncount;
|
|
compute_orientorder_atom.cpp: // printf("Ylm^2 = %d %d %g\n",n,m,
|
|
compute_orientorder_atom.cpp: // qnm_r[iw][m]*qnm_r[iw][m] + qnm_i[iw][m]*qnm_i[iw][m]);
|
|
compute_orientorder_atom.cpp: qn[iw] = fac * sqrt(qm_sum / (2*n+1));
|
|
compute_orientorder_atom.cpp: if (qlcompflag && iqlcomp == iw) normfac = 1.0/sqrt(qm_sum);
|
|
compute_orientorder_atom.cpp: // output of the complex vector
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp: prefactor = sqrt(static_cast<double>(2*l+1)/(MY_4PI*prefactor))
|
|
compute_orientorder_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_orientorder_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_orientorder_atom.cpp: - static_cast<double>(i+m-1)*pm2) / static_cast<double>(i-m);
|
|
compute_pair.cpp:/* ----------------------------------------------------------------------
|
|
compute_pair.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_pair.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_pair.cpp:------------------------------------------------------------------------- */
|
|
compute_pair.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair.cpp: // check if pair style with and without suffix exists
|
|
compute_pair.cpp: strcat(pstyle,"/");
|
|
compute_pair.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair.cpp: // recheck for pair style in case it has been deleted
|
|
compute_pair.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_pair_local.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_pair_local.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_pair_local.cpp:------------------------------------------------------------------------- */
|
|
compute_pair_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair_local.cpp: if (narg < 4) error->all(FLERR,"Illegal compute pair/local command");
|
|
compute_pair_local.cpp: "Invalid keyword in compute pair/local command");
|
|
compute_pair_local.cpp: // optional args
|
|
compute_pair_local.cpp: error->all(FLERR,"Illegal compute pair/local command");
|
|
compute_pair_local.cpp: else error->all(FLERR,"Illegal compute pair/local command");
|
|
compute_pair_local.cpp: } else error->all(FLERR,"Illegal compute pair/local command");
|
|
compute_pair_local.cpp: // error check
|
|
compute_pair_local.cpp: error->all(FLERR,"Compute pair/local requires atom attribute radius");
|
|
compute_pair_local.cpp: // set singleflag if need to call pair->single()
|
|
compute_pair_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair_local.cpp: error->all(FLERR,"No pair style is defined for compute pair/local");
|
|
compute_pair_local.cpp: error->all(FLERR,"Pair style does not support compute pair/local");
|
|
compute_pair_local.cpp: " requested by compute pair/local");
|
|
compute_pair_local.cpp: // need an occasional half neighbor list
|
|
compute_pair_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair_local.cpp: // count local entries and compute pair info
|
|
compute_pair_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_pair_local.cpp:------------------------------------------------------------------------- */
|
|
compute_pair_local.cpp: // invoke half neighbor list (will copy or build if necessary)
|
|
compute_pair_local.cpp: // loop over neighbors of my atoms
|
|
compute_pair_local.cpp: // skip if I or J are not in group
|
|
compute_pair_local.cpp: // for newton = 0 and J = ghost atom,
|
|
compute_pair_local.cpp: // need to insure I,J pair is only output by one proc
|
|
compute_pair_local.cpp: // use same itag,jtag logic as in Neighbor::neigh_half_nsq()
|
|
compute_pair_local.cpp: // for flag = 0, just count pair interactions within force cutoff
|
|
compute_pair_local.cpp: // for flag = 1, calculate requested output fields
|
|
compute_pair_local.cpp: // itag = jtag is possible for long cutoffs that include images of self
|
|
compute_pair_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pair_local.cpp: // grow vector_local or array_local
|
|
compute_pair_local.cpp: memory->create(vlocal,nmax,"pair/local:vector_local");
|
|
compute_pair_local.cpp: memory->create(alocal,nmax,nvalues,"pair/local:array_local");
|
|
compute_pair_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_pair_local.cpp:------------------------------------------------------------------------- */
|
|
compute_pe_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_pe_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_pe_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_pe_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_pe_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pe_atom.cpp: if (narg < 3) error->all(FLERR,"Illegal compute pe/atom command");
|
|
compute_pe_atom.cpp: else error->all(FLERR,"Illegal compute pe/atom command");
|
|
compute_pe_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pe_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pe_atom.cpp: // grow local energy array if necessary
|
|
compute_pe_atom.cpp: // needs to be atom->nmax in length
|
|
compute_pe_atom.cpp: memory->create(energy,nmax,"pe/atom:energy");
|
|
compute_pe_atom.cpp: // npair includes ghosts if either newton flag is set
|
|
compute_pe_atom.cpp: // b/c some bonds/dihedrals call pair::ev_tally with pairwise info
|
|
compute_pe_atom.cpp: // nbond includes ghosts if newton_bond is set
|
|
compute_pe_atom.cpp: // ntotal includes ghosts if either newton flag is set
|
|
compute_pe_atom.cpp: // KSpace includes ghosts if tip4pflag is set
|
|
compute_pe_atom.cpp: // clear local energy array
|
|
compute_pe_atom.cpp: // add in per-atom contributions from each force
|
|
compute_pe_atom.cpp: // add in per-atom contributions from relevant fixes
|
|
compute_pe_atom.cpp: // always only for owned atoms, not ghost
|
|
compute_pe_atom.cpp: // communicate ghost energy between neighbor procs
|
|
compute_pe_atom.cpp: // zero energy of atoms not in group
|
|
compute_pe_atom.cpp: // only do this after comm since ghost contributions must be included
|
|
compute_pe_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pe_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pe_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_pe_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_pe.cpp:/* ----------------------------------------------------------------------
|
|
compute_pe.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_pe.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_pe.cpp:------------------------------------------------------------------------- */
|
|
compute_pe.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pe.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pe.cpp: scalar += force->pair->etail / volume;
|
|
compute_pressure.cpp:/* ----------------------------------------------------------------------
|
|
compute_pressure.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_pressure.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_pressure.cpp:------------------------------------------------------------------------- */
|
|
compute_pressure.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pressure.cpp: // store temperature ID used by pressure computation
|
|
compute_pressure.cpp: // insure it is valid for temperature computation
|
|
compute_pressure.cpp: // process optional args
|
|
compute_pressure.cpp: // error check
|
|
compute_pressure.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pressure.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pressure.cpp: // set temperature compute, must be done in init()
|
|
compute_pressure.cpp: // fixes could have changed or compute_modify could have changed it
|
|
compute_pressure.cpp: // detect contributions to virial
|
|
compute_pressure.cpp: // vptr points to all virial[6] contributions
|
|
compute_pressure.cpp: // flag Kspace contribution separately, since not summed across procs
|
|
compute_pressure.cpp:/* ----------------------------------------------------------------------
|
|
compute_pressure.cpp:------------------------------------------------------------------------- */
|
|
compute_pressure.cpp: // invoke temperature if it hasn't been already
|
|
compute_pressure.cpp: inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
|
|
compute_pressure.cpp: virial[0] + virial[1] + virial[2]) / 3.0 * inv_volume * nktv2p;
|
|
compute_pressure.cpp: scalar = (virial[0] + virial[1] + virial[2]) / 3.0 * inv_volume * nktv2p;
|
|
compute_pressure.cpp: inv_volume = 1.0 / (domain->xprd * domain->yprd);
|
|
compute_pressure.cpp: virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
|
|
compute_pressure.cpp: scalar = (virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
|
|
compute_pressure.cpp:/* ----------------------------------------------------------------------
|
|
compute_pressure.cpp:------------------------------------------------------------------------- */
|
|
compute_pressure.cpp: error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' for "
|
|
compute_pressure.cpp: // invoke temperature if it hasn't been already
|
|
compute_pressure.cpp: inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
|
|
compute_pressure.cpp: inv_volume = 1.0 / (domain->xprd * domain->yprd);
|
|
compute_pressure.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_pressure.cpp: // sum contributions to virial from forces and fixes
|
|
compute_pressure.cpp: // sum virial across procs
|
|
compute_pressure.cpp: // KSpace virial contribution is already summed across procs
|
|
compute_pressure.cpp: // LJ long-range tail correction, only if pair contributions are included
|
|
compute_pressure.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_property_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_property_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp: if (narg < 4) error->all(FLERR,"Illegal compute property/atom command");
|
|
compute_property_atom.cpp: // parse input values
|
|
compute_property_atom.cpp: // customize a new keyword by adding to if statement
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_line) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_line) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_line) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_line) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_line) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_line) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: if (!avec_tri) error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom for "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom integer "
|
|
compute_property_atom.cpp: error->all(FLERR,"Compute property/atom floating point "
|
|
compute_property_atom.cpp: // check if atom style recognizes keyword
|
|
compute_property_atom.cpp: error->all(FLERR,"Invalid keyword in compute property/atom command");
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp: // grow vector or array if necessary
|
|
compute_property_atom.cpp: memory->create(vector_atom,nmax,"property/atom:vector");
|
|
compute_property_atom.cpp: memory->create(array_atom,nmax,nvalues,"property/atom:array");
|
|
compute_property_atom.cpp: // fill vector or array with per-atom values
|
|
compute_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_atom.cpp: one method for every keyword compute property/atom can output
|
|
compute_property_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp: double invxprd = 1.0/domain->xprd;
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp: double invyprd = 1.0/domain->yprd;
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp: double invzprd = 1.0/domain->zprd;
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_property_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp: if (narg < 5) error->all(FLERR,"Illegal compute property/chunk command");
|
|
compute_property_chunk.cpp: // ID of compute chunk/atom
|
|
compute_property_chunk.cpp: // parse values
|
|
compute_property_chunk.cpp: error->all(FLERR,"Compute chunk/atom stores no IDs for "
|
|
compute_property_chunk.cpp: "compute property/chunk");
|
|
compute_property_chunk.cpp: error->all(FLERR,"Compute chunk/atom stores no coord1 for "
|
|
compute_property_chunk.cpp: "compute property/chunk");
|
|
compute_property_chunk.cpp: error->all(FLERR,"Compute chunk/atom stores no coord2 for "
|
|
compute_property_chunk.cpp: "compute property/chunk");
|
|
compute_property_chunk.cpp: error->all(FLERR,"Compute chunk/atom stores no coord3 for "
|
|
compute_property_chunk.cpp: "compute property/chunk");
|
|
compute_property_chunk.cpp: "Invalid keyword in compute property/chunk command");
|
|
compute_property_chunk.cpp: // initialization
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_property_chunk.cpp: "compute property/chunk");
|
|
compute_property_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_property_chunk.cpp: error->all(FLERR,"Compute property/chunk does not use chunk/atom compute");
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_property_chunk.cpp: // if need count, extract ichunk index vector from compute
|
|
compute_property_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_property_chunk.cpp: // fill vector
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_property_chunk.cpp: // if need count, extract ichunk index vector from compute
|
|
compute_property_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_property_chunk.cpp: // fill array
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_property_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_property_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp: if (nvalues == 1) memory->create(vector,maxchunk,"property/chunk:vector");
|
|
compute_property_chunk.cpp: else memory->create(array,maxchunk,nvalues,"property/chunk:array");
|
|
compute_property_chunk.cpp: memory->create(count_one,maxchunk,"property/chunk:count_one");
|
|
compute_property_chunk.cpp: memory->create(count_all,maxchunk,"property/chunk:count_all");
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_chunk.cpp: one method for every keyword compute property/chunk can output
|
|
compute_property_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_property_local.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp: if (narg < 4) error->all(FLERR,"Illegal compute property/local command");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: "Compute property/local cannot use these inputs together");
|
|
compute_property_local.cpp: // optional args
|
|
compute_property_local.cpp: error->all(FLERR,"Illegal compute property/local command");
|
|
compute_property_local.cpp: else error->all(FLERR,"Illegal compute property/local command");
|
|
compute_property_local.cpp: } else error->all(FLERR,"Illegal compute property/local command");
|
|
compute_property_local.cpp: // error check
|
|
compute_property_local.cpp: error->all(FLERR,"Compute property/local does not (yet) work "
|
|
compute_property_local.cpp: "Compute property/local for property that isn't allocated");
|
|
compute_property_local.cpp: "Compute property/local for property that isn't allocated");
|
|
compute_property_local.cpp: "Compute property/local for property that isn't allocated");
|
|
compute_property_local.cpp: "Compute property/local for property that isn't allocated");
|
|
compute_property_local.cpp: error->all(FLERR,"Compute property/local requires atom attribute radius");
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp: error->all(FLERR,"No pair style is defined for compute property/local");
|
|
compute_property_local.cpp: error->all(FLERR,"Pair style does not support compute property/local");
|
|
compute_property_local.cpp: // for NEIGH/PAIR need an occasional half neighbor list
|
|
compute_property_local.cpp: // do initial memory allocation so that memory_usage() is correct
|
|
compute_property_local.cpp: // cannot be done yet for NEIGH/PAIR, since neigh list does not exist
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp: // count local entries and generate list of indices
|
|
compute_property_local.cpp: // fill vector or array with local values
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp: // invoke half neighbor list (will copy or build if necessary)
|
|
compute_property_local.cpp: // loop over neighbors of my atoms
|
|
compute_property_local.cpp: // skip if I or J are not in group
|
|
compute_property_local.cpp: // for newton = 0 and J = ghost atom,
|
|
compute_property_local.cpp: // need to insure I,J pair is only output by one proc
|
|
compute_property_local.cpp: // use same itag,jtag logic as in Neighbor::neigh_half_nsq()
|
|
compute_property_local.cpp: // itag = jtag is possible for long cutoffs that include images of self
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp: // grow vector_local or array_local, also indices
|
|
compute_property_local.cpp: memory->create(vlocal,nmax,"property/local:vector_local");
|
|
compute_property_local.cpp: memory->create(alocal,nmax,nvalues,"property/local:array_local");
|
|
compute_property_local.cpp: memory->create(indices,nmax,2,"property/local:indices");
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ----------------------------------------------------------------------
|
|
compute_property_local.cpp: one method for every keyword compute property/local can output
|
|
compute_property_local.cpp:------------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_property_local.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_rdf.cpp:/* ----------------------------------------------------------------------
|
|
compute_rdf.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_rdf.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_rdf.cpp:------------------------------------------------------------------------- */
|
|
compute_rdf.cpp:/* ----------------------------------------------------------------------
|
|
compute_rdf.cpp:------------------------------------------------------------------------- */
|
|
compute_rdf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_rdf.cpp: // optional args
|
|
compute_rdf.cpp: // nargpair = # of pairwise args, starting at iarg = 4
|
|
compute_rdf.cpp: // pairwise args
|
|
compute_rdf.cpp: else npairs = nargpair/2;
|
|
compute_rdf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_rdf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_rdf.cpp: double cutghost; // as computed by Neighbor and Comm
|
|
compute_rdf.cpp: delr = cutoff_user / nbin;
|
|
compute_rdf.cpp: } else delr = force->pair->cutforce / nbin;
|
|
compute_rdf.cpp: delrinv = 1.0/delr;
|
|
compute_rdf.cpp: // set 1st column of output array to bin coords
|
|
compute_rdf.cpp: // count atoms of each type that are also in group
|
|
compute_rdf.cpp: // icount = # of I atoms participating in I,J pairs for each histogram
|
|
compute_rdf.cpp: // jcount = # of J atoms participating in I,J pairs for each histogram
|
|
compute_rdf.cpp: // duplicates = # of atoms in both groups I and J for each histogram
|
|
compute_rdf.cpp: // need an occasional half neighbor list
|
|
compute_rdf.cpp: // if user specified, request a cutoff = cutoff_user + skin
|
|
compute_rdf.cpp: // skin is included b/c Neighbor uses this value similar
|
|
compute_rdf.cpp: // to its cutneighmax = force cutoff + skin
|
|
compute_rdf.cpp: // also, this NeighList may be used by this compute for multiple steps
|
|
compute_rdf.cpp: // (until next reneighbor), so it needs to contain atoms further
|
|
compute_rdf.cpp: // than cutoff_user apart, just like a normal neighbor list does
|
|
compute_rdf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_rdf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_rdf.cpp: // invoke half neighbor list (will copy or build if necessary)
|
|
compute_rdf.cpp: // zero the histogram counts
|
|
compute_rdf.cpp: // tally the RDF
|
|
compute_rdf.cpp: // both atom i and j must be in fix group
|
|
compute_rdf.cpp: // itype,jtype must have been specified by user
|
|
compute_rdf.cpp: // consider I,J as one interaction even if neighbor pair is stored on 2 procs
|
|
compute_rdf.cpp: // tally I,J pair each time I is central atom, and each time J is central
|
|
compute_rdf.cpp: // if both weighting factors are 0, skip this pair
|
|
compute_rdf.cpp: // could be 0 and still be in neigh list for long-range Coulombics
|
|
compute_rdf.cpp: // want consistency with non-charged pairs which wouldn't be in list
|
|
compute_rdf.cpp: // sum histograms across procs
|
|
compute_rdf.cpp: // convert counts to g(r) and coord(r) and copy into output array
|
|
compute_rdf.cpp: // vfrac = fraction of volume in shell m
|
|
compute_rdf.cpp: // npairs = number of pairs, corrected for duplicates
|
|
compute_rdf.cpp: // duplicates = pairs in which both atoms are the same
|
|
compute_rdf.cpp: constant = 4.0*MY_PI / (3.0*domain->xprd*domain->yprd*domain->zprd);
|
|
compute_rdf.cpp: - static_cast<double>(duplicates[m])/icount[m] : 0.0;
|
|
compute_rdf.cpp: gr = histall[m][ibin] / (vfrac * normfac * icount[m]);
|
|
compute_rdf.cpp: constant = MY_PI / (domain->xprd*domain->yprd);
|
|
compute_rdf.cpp: - static_cast<double>(duplicates[m])/icount[m] : 0.0;
|
|
compute_rdf.cpp: gr = histall[m][ibin] / (vfrac * normfac * icount[m]);
|
|
compute_reduce.cpp:/* ----------------------------------------------------------------------
|
|
compute_reduce.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_reduce.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_reduce.cpp:------------------------------------------------------------------------- */
|
|
compute_reduce.cpp:enum{SUM,SUMSQ,MINN,MAXX,AVE,AVESQ}; // also in ReduceRegion
|
|
compute_reduce.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_reduce.cpp: } else if (strcmp(style,"reduce/region") == 0) {
|
|
compute_reduce.cpp: if (narg < 6) error->all(FLERR,"Illegal compute reduce/region command");
|
|
compute_reduce.cpp: error->all(FLERR,"Region ID for compute reduce/region does not exist");
|
|
compute_reduce.cpp: // expand args if any have wildcard character "*"
|
|
compute_reduce.cpp: // parse values until one isn't recognized
|
|
compute_reduce.cpp: // optional args
|
|
compute_reduce.cpp: // delete replace if not set
|
|
compute_reduce.cpp: // if wildcard expansion occurred, free earg memory from expand_args()
|
|
compute_reduce.cpp: // setup and error check
|
|
compute_reduce.cpp: // this compute produces either a scalar or vector
|
|
compute_reduce.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_reduce.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_reduce.cpp: // set indices of all computes,fixes,variables
|
|
compute_reduce.cpp: // set index and check validity of region
|
|
compute_reduce.cpp: error->all(FLERR,"Region ID for compute reduce/region does not exist");
|
|
compute_reduce.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_reduce.cpp: if (n) scalar /= n;
|
|
compute_reduce.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_reduce.cpp: if (n) vector[m] /= n;
|
|
compute_reduce.cpp:/* ----------------------------------------------------------------------
|
|
compute_reduce.cpp: sum/min/max/ave all values in vector
|
|
compute_reduce.cpp:------------------------------------------------------------------------- */
|
|
compute_reduce.cpp: // invoke the appropriate attribute,compute,fix,variable
|
|
compute_reduce.cpp: // for flag = -1, compute scalar quantity by scanning over atom properties
|
|
compute_reduce.cpp: // only include atoms in group for atom properties and per-atom quantities
|
|
compute_reduce.cpp: // invoke compute if not previously invoked
|
|
compute_reduce.cpp: // access fix fields, check if fix frequency is a match
|
|
compute_reduce.cpp: // evaluate atom-style variable
|
|
compute_reduce.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_reduce.cpp:/* ----------------------------------------------------------------------
|
|
compute_reduce.cpp: for MIN/MAX, also update index with winner
|
|
compute_reduce.cpp:------------------------------------------------------------------------- */
|
|
compute_reduce.cpp:/* ----------------------------------------------------------------------
|
|
compute_reduce.cpp:------------------------------------------------------------------------- */
|
|
compute_reduce_region.cpp:/* ----------------------------------------------------------------------
|
|
compute_reduce_region.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_reduce_region.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_reduce_region.cpp:------------------------------------------------------------------------- */
|
|
compute_reduce_region.cpp:enum{SUM,SUMSQ,MINN,MAXX,AVE,AVESQ}; // also in ComputeReduce
|
|
compute_reduce_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_reduce_region.cpp:/* ----------------------------------------------------------------------
|
|
compute_reduce_region.cpp: sum/min/max/ave all values in vector
|
|
compute_reduce_region.cpp:------------------------------------------------------------------------- */
|
|
compute_reduce_region.cpp: // invoke the appropriate attribute,compute,fix,variable
|
|
compute_reduce_region.cpp: // compute scalar quantity by summing over atom scalars
|
|
compute_reduce_region.cpp: // only include atoms in group
|
|
compute_reduce_region.cpp: // invoke compute if not previously invoked
|
|
compute_reduce_region.cpp: // check if fix frequency is a match
|
|
compute_reduce_region.cpp: // evaluate atom-style variable
|
|
compute_reduce_region.cpp: memory->create(varatom,maxatom,"reduce/region:varatom");
|
|
compute_reduce_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_slice.cpp:/* ----------------------------------------------------------------------
|
|
compute_slice.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_slice.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_slice.cpp:------------------------------------------------------------------------- */
|
|
compute_slice.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_slice.cpp: // parse remaining values until one isn't recognized
|
|
compute_slice.cpp: // setup and error check
|
|
compute_slice.cpp: // this compute produces either a vector or array
|
|
compute_slice.cpp: // for vector, set intensive/extensive to mirror input values
|
|
compute_slice.cpp: // for array, set intensive if all input values are intensive, else extensive
|
|
compute_slice.cpp: size_vector = (nstop-nstart) / nskip;
|
|
compute_slice.cpp: size_array_rows = (nstop-nstart) / nskip;
|
|
compute_slice.cpp: // variable is always intensive, does not change extarray
|
|
compute_slice.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_slice.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_slice.cpp: // set indices and check validity of all computes,fixes
|
|
compute_slice.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_slice.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_slice.cpp:/* ----------------------------------------------------------------------
|
|
compute_slice.cpp:------------------------------------------------------------------------- */
|
|
compute_slice.cpp: // invoke the appropriate compute if needed
|
|
compute_slice.cpp: // access fix fields, check if fix frequency is a match
|
|
compute_slice.cpp: // invoke vector-style variable
|
|
compute_spin.cpp:/* ----------------------------------------------------------------------
|
|
compute_spin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_spin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_spin.cpp:------------------------------------------------------------------------- */
|
|
compute_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_spin.cpp: if ((narg != 3) && (narg != 4)) error->all(FLERR,"Illegal compute compute/spin command");
|
|
compute_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_spin.cpp: hbar = force->hplanck/MY_2PI;
|
|
compute_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_spin.cpp: // compute total magnetization and magnetic energy
|
|
compute_spin.cpp: // compute spin temperature; See Nurdin et al., Phys. Rev. E 61, 2000
|
|
compute_spin.cpp: else error->all(FLERR,"Compute spin/compute declared magnetic quantities (sp and mumag flags)");
|
|
compute_spin.cpp: double scale = 1.0/countsptot;
|
|
compute_spin.cpp: spintemperature = hbar*tempnumtot/2.0/kb/tempdenomtot;
|
|
compute_spin.cpp:/* ----------------------------------------------------------------------
|
|
compute_spin.cpp:------------------------------------------------------------------------- */
|
|
compute_spin.cpp: memory->create(mag,4,"compute/spin:mag");
|
|
compute_spin.cpp: memory->create(magtot,5,"compute/spin:mag");
|
|
compute_spin.cpp: memory->create(vector,7,"compute/spin:vector");
|
|
compute_stress_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_stress_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_stress_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_stress_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_stress_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_stress_atom.cpp: if (narg < 4) error->all(FLERR,"Illegal compute stress/atom command");
|
|
compute_stress_atom.cpp: // store temperature ID used by stress computation
|
|
compute_stress_atom.cpp: // insure it is valid for temperature computation
|
|
compute_stress_atom.cpp: error->all(FLERR,"Could not find compute stress/atom temperature ID");
|
|
compute_stress_atom.cpp: "Compute stress/atom temperature ID does not "
|
|
compute_stress_atom.cpp: // process optional args
|
|
compute_stress_atom.cpp: } else error->all(FLERR,"Illegal compute stress/atom command");
|
|
compute_stress_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_stress_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_stress_atom.cpp: // set temperature compute, must be done in init()
|
|
compute_stress_atom.cpp: // fixes could have changed or compute_modify could have changed it
|
|
compute_stress_atom.cpp: error->all(FLERR,"Could not find compute stress/atom temperature ID");
|
|
compute_stress_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_stress_atom.cpp: // grow local stress array if necessary
|
|
compute_stress_atom.cpp: // needs to be atom->nmax in length
|
|
compute_stress_atom.cpp: memory->create(stress,nmax,6,"stress/atom:stress");
|
|
compute_stress_atom.cpp: // npair includes ghosts if either newton flag is set
|
|
compute_stress_atom.cpp: // b/c some bonds/dihedrals call pair::ev_tally with pairwise info
|
|
compute_stress_atom.cpp: // nbond includes ghosts if newton_bond is set
|
|
compute_stress_atom.cpp: // ntotal includes ghosts if either newton flag is set
|
|
compute_stress_atom.cpp: // KSpace includes ghosts if tip4pflag is set
|
|
compute_stress_atom.cpp: // clear local stress array
|
|
compute_stress_atom.cpp: // add in per-atom contributions from each force
|
|
compute_stress_atom.cpp: // add in per-atom contributions from relevant fixes
|
|
compute_stress_atom.cpp: // skip if vatom = NULL
|
|
compute_stress_atom.cpp: // possible during setup phase if fix has not initialized its vatom yet
|
|
compute_stress_atom.cpp: // e.g. fix ave/spatial defined before fix shake,
|
|
compute_stress_atom.cpp: // and fix ave/spatial uses a per-atom stress from this compute as input
|
|
compute_stress_atom.cpp: // communicate ghost virials between neighbor procs
|
|
compute_stress_atom.cpp: // zero virial of atoms not in group
|
|
compute_stress_atom.cpp: // only do this after comm since ghost contributions must be included
|
|
compute_stress_atom.cpp: // include kinetic energy term for each atom in group
|
|
compute_stress_atom.cpp: // apply temperature bias is applicable
|
|
compute_stress_atom.cpp: // mvv2e converts mv^2 to energy
|
|
compute_stress_atom.cpp: // invoke temperature if it hasn't been already
|
|
compute_stress_atom.cpp: // this insures bias factor is pre-computed
|
|
compute_stress_atom.cpp: // convert to stress*volume units = -pressure*volume
|
|
compute_stress_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_stress_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_stress_atom.cpp:/* ----------------------------------------------------------------------
|
|
compute_stress_atom.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: if (narg < 4) error->all(FLERR,"Illegal compute temp/chunk command");
|
|
compute_temp_chunk.cpp: // ID of compute chunk/atom
|
|
compute_temp_chunk.cpp: // optional per-chunk values
|
|
compute_temp_chunk.cpp: // optional args
|
|
compute_temp_chunk.cpp: error->all(FLERR,"Illegal compute temp/chunk command");
|
|
compute_temp_chunk.cpp: else error->all(FLERR,"Illegal compute temp/chunk command");
|
|
compute_temp_chunk.cpp: error->all(FLERR,"Illegal compute temp/chunk command");
|
|
compute_temp_chunk.cpp: error->all(FLERR,"Illegal compute temp/chunk command");
|
|
compute_temp_chunk.cpp: error->all(FLERR,"Illegal compute temp/chunk command");
|
|
compute_temp_chunk.cpp: } else error->all(FLERR,"Illegal compute temp/chunk command");
|
|
compute_temp_chunk.cpp: // error check on bias compute
|
|
compute_temp_chunk.cpp: // this compute only calculates a bias, if comflag is set
|
|
compute_temp_chunk.cpp: // won't be two biases since comflag and biasflag cannot both be set
|
|
compute_temp_chunk.cpp: error->all(FLERR,"Cannot use both com and bias with compute temp/chunk");
|
|
compute_temp_chunk.cpp: // vector data
|
|
compute_temp_chunk.cpp: // chunk-based data
|
|
compute_temp_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_temp_chunk.cpp: "compute temp/chunk");
|
|
compute_temp_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_temp_chunk.cpp: error->all(FLERR,"Compute temp/chunk does not use chunk/atom compute");
|
|
compute_temp_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: // calculate chunk assignments,
|
|
compute_temp_chunk.cpp: // since only atoms in chunks contribute to global temperature
|
|
compute_temp_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_temp_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_temp_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_temp_chunk.cpp: // remove velocity bias
|
|
compute_temp_chunk.cpp: // calculate COM velocity for each chunk
|
|
compute_temp_chunk.cpp: // won't be invoked with bias also removed = 2 biases
|
|
compute_temp_chunk.cpp: // calculate global temperature, optionally removing COM velocity
|
|
compute_temp_chunk.cpp: // restore velocity bias
|
|
compute_temp_chunk.cpp: // final temperature
|
|
compute_temp_chunk.cpp: if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: // calculate chunk assignments,
|
|
compute_temp_chunk.cpp: // since only atoms in chunks contribute to global temperature
|
|
compute_temp_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_temp_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_temp_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_temp_chunk.cpp: // remove velocity bias
|
|
compute_temp_chunk.cpp: // calculate COM velocity for each chunk
|
|
compute_temp_chunk.cpp: // won't be invoked with bias also removed = 2 biases
|
|
compute_temp_chunk.cpp: // calculate KE tensor, optionally removing COM velocity
|
|
compute_temp_chunk.cpp: // restore velocity bias
|
|
compute_temp_chunk.cpp: // final KE
|
|
compute_temp_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_temp_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_temp_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_temp_chunk.cpp: // remove velocity bias
|
|
compute_temp_chunk.cpp: // calculate COM velocity for each chunk whether comflag set or not
|
|
compute_temp_chunk.cpp: // needed by some values even if comflag not set
|
|
compute_temp_chunk.cpp: // important to do this after velocity bias is removed
|
|
compute_temp_chunk.cpp: // otherwise per-chunk values that use both v and vcm will be inconsistent
|
|
compute_temp_chunk.cpp: // compute each value
|
|
compute_temp_chunk.cpp: // restore velocity bias
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: // avoid re-computing VCM more than once per step
|
|
compute_temp_chunk.cpp: vcmall[i][0] /= masstotal[i];
|
|
compute_temp_chunk.cpp: vcmall[i][1] /= masstotal[i];
|
|
compute_temp_chunk.cpp: vcmall[i][2] /= masstotal[i];
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: // zero local per-chunk values
|
|
compute_temp_chunk.cpp: // per-chunk temperature, option for removing COM velocity
|
|
compute_temp_chunk.cpp: // sum across procs
|
|
compute_temp_chunk.cpp: // normalize temperatures by per-chunk DOF
|
|
compute_temp_chunk.cpp: if (dof > 0.0) tfactor = mvv2e / (dof * boltz);
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: // zero local per-chunk values
|
|
compute_temp_chunk.cpp: // per-chunk COM KE
|
|
compute_temp_chunk.cpp: // sum across procs
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: // zero local per-chunk values
|
|
compute_temp_chunk.cpp: // per-chunk internal KE
|
|
compute_temp_chunk.cpp: // sum across procs
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_temp_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_temp_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_chunk.cpp: memory->create(sum,maxchunk,"temp/chunk:sum");
|
|
compute_temp_chunk.cpp: memory->create(sumall,maxchunk,"temp/chunk:sumall");
|
|
compute_temp_chunk.cpp: memory->create(count,maxchunk,"temp/chunk:count");
|
|
compute_temp_chunk.cpp: memory->create(countall,maxchunk,"temp/chunk:countall");
|
|
compute_temp_chunk.cpp: memory->create(array,maxchunk,nvalues,"temp/chunk:array");
|
|
compute_temp_chunk.cpp: memory->create(massproc,maxchunk,"vcm/chunk:massproc");
|
|
compute_temp_chunk.cpp: memory->create(masstotal,maxchunk,"vcm/chunk:masstotal");
|
|
compute_temp_chunk.cpp: memory->create(vcm,maxchunk,3,"vcm/chunk:vcm");
|
|
compute_temp_chunk.cpp: memory->create(vcmall,maxchunk,3,"vcm/chunk:vcmall");
|
|
compute_temp_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_com.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_com.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_com.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_com.cpp: if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_com.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_com.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_com.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_com.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_com.cpp:------------------------------------------------------------------------- */
|
|
compute_temp.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp.cpp:------------------------------------------------------------------------- */
|
|
compute_temp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp.cpp: if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_deform.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_deform.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_deform.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_deform.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp: if (narg != 3) error->all(FLERR,"Illegal compute temp/deform command");
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp: // check fix deform remap settings
|
|
compute_temp_deform.cpp: error->warning(FLERR,"Using compute temp/deform with inconsistent "
|
|
compute_temp_deform.cpp: "Using compute temp/deform with no fix deform defined");
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp: if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp: // lamda = 0-1 triclinic lamda coords
|
|
compute_temp_deform.cpp: // vstream = streaming velocity = Hrate*lamda + Hratelo
|
|
compute_temp_deform.cpp: // vthermal = thermal velocity = v - vstream
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_deform.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_deform.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp: memory->create(vbiasall,maxbias,3,"temp/deform:vbiasall");
|
|
compute_temp_deform.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_deform.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_deform.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_partial.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_partial.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_partial.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp: if (narg != 6) error->all(FLERR,"Illegal compute temp/partial command");
|
|
compute_temp_partial.cpp: error->all(FLERR,"Illegal compute temp/partial command");
|
|
compute_temp_partial.cpp: error->all(FLERR,"Compute temp/partial cannot use vz for 2d systemx");
|
|
compute_temp_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_partial.cpp: DOF = nper/dim (dim*N - S), where dim = dimensionality = 2 or 3
|
|
compute_temp_partial.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp: // distribute extra dofs evenly across active dimensions
|
|
compute_temp_partial.cpp: dof -= (1.0*nper/domain->dimension)*(fix_dof + extra_dof);
|
|
compute_temp_partial.cpp: if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_partial.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_partial.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp: memory->create(vbiasall,maxbias,3,"temp/partial:vbiasall");
|
|
compute_temp_partial.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_partial.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_partial.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_partial.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_profile.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp: if (narg < 7) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: error->all(FLERR,"Compute temp/profile cannot use vz for 2d systemx");
|
|
compute_temp_profile.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
|
|
compute_temp_profile.cpp: if (iarg+3 > narg) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: if (iarg+3 > narg) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
|
|
compute_temp_profile.cpp: if (iarg+3 > narg) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
|
|
compute_temp_profile.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
|
|
compute_temp_profile.cpp: } else error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: // optional keywords
|
|
compute_temp_profile.cpp: error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: else error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: } else error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: // setup
|
|
compute_temp_profile.cpp: if (nbins <= 0) error->all(FLERR,"Illegal compute temp/profile command");
|
|
compute_temp_profile.cpp: memory->create(vbin,nbins,ncount,"temp/profile:vbin");
|
|
compute_temp_profile.cpp: memory->create(binave,nbins,ncount,"temp/profile:binave");
|
|
compute_temp_profile.cpp: memory->create(tbin,nbins,"temp/profile:tbin");
|
|
compute_temp_profile.cpp: memory->create(tbinall,nbins,"temp/profile:tbinall");
|
|
compute_temp_profile.cpp: memory->create(array,nbins,2,"temp/profile:array");
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp: // ptrs to domain data
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp: // subtract additional d*Nbins DOF, as in Evans and Morriss paper
|
|
compute_temp_profile.cpp: if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp: if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp: // clear bins, including particle mass and count
|
|
compute_temp_profile.cpp: // sum each particle's mass-weighted velocity, mass, count to appropriate bin
|
|
compute_temp_profile.cpp: // sum bins across processors
|
|
compute_temp_profile.cpp: // compute ave COM velocity in each bin, checking for no particles
|
|
compute_temp_profile.cpp: binave[i][j] /= binave[i][nc2];
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp: invdelta[0] = nbinx / prd[0];
|
|
compute_temp_profile.cpp: invdelta[1] = nbiny / prd[1];
|
|
compute_temp_profile.cpp: invdelta[2] = nbinz / prd[2];
|
|
compute_temp_profile.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_profile.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_profile.cpp: // reallocate bin array if necessary
|
|
compute_temp_profile.cpp: memory->create(bin,maxatom,"temp/profile:bin");
|
|
compute_temp_profile.cpp: // assign each atom to a bin, accounting for PBC
|
|
compute_temp_profile.cpp: // if triclinic, do this in lamda space
|
|
compute_temp_profile.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_ramp.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_ramp.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_ramp.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp: // parse optional args
|
|
compute_temp_ramp.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/ramp command");
|
|
compute_temp_ramp.cpp: else error->all(FLERR,"Illegal compute temp/ramp command");
|
|
compute_temp_ramp.cpp: } else error->all(FLERR,"Illegal compute temp/ramp command");
|
|
compute_temp_ramp.cpp: // setup scaling
|
|
compute_temp_ramp.cpp: // read standard args and apply scaling
|
|
compute_temp_ramp.cpp: else error->all(FLERR,"Illegal compute temp/ramp command");
|
|
compute_temp_ramp.cpp: else error->all(FLERR,"Illegal compute temp/ramp command");
|
|
compute_temp_ramp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp: if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_ramp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp: fraction = (x[i][coord_dim] - coord_lo) / (coord_hi - coord_lo);
|
|
compute_temp_ramp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp: fraction = (x[i][coord_dim] - coord_lo) / (coord_hi - coord_lo);
|
|
compute_temp_ramp.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_ramp.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp: double fraction = (atom->x[i][coord_dim] - coord_lo) / (coord_hi - coord_lo);
|
|
compute_temp_ramp.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_ramp.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp: memory->create(vbiasall,maxbias,3,"temp/ramp:vbiasall");
|
|
compute_temp_ramp.cpp: fraction = (atom->x[i][coord_dim] - coord_lo) / (coord_hi - coord_lo);
|
|
compute_temp_ramp.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_ramp.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_ramp.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_ramp.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_region.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_region.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_region.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp: if (narg != 4) error->all(FLERR,"Illegal compute temp/region command");
|
|
compute_temp_region.cpp: error->all(FLERR,"Region ID for compute temp/region does not exist");
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp: // set index and check validity of region
|
|
compute_temp_region.cpp: error->all(FLERR,"Region ID for compute temp/region does not exist");
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp: if (dof > 0) scalar = force->mvv2e * tarray_all[1] / (dof * force->boltz);
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_region.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_region.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_region.cpp: memory->create(vbiasall,maxbias,3,"temp/region:vbiasall");
|
|
compute_temp_region.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_region.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_region.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_region.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_temp_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_temp_sphere.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp:#define INERTIA 0.4 // moment of inertia prefactor for sphere
|
|
compute_temp_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp: if (narg < 3) error->all(FLERR,"Illegal compute temp/sphere command");
|
|
compute_temp_sphere.cpp: error->all(FLERR,"Illegal compute temp/sphere command");
|
|
compute_temp_sphere.cpp: error->all(FLERR,"Illegal compute temp/sphere command");
|
|
compute_temp_sphere.cpp: else error->all(FLERR,"Illegal compute temp/sphere command");
|
|
compute_temp_sphere.cpp: } else error->all(FLERR,"Illegal compute temp/sphere command");
|
|
compute_temp_sphere.cpp: // when computing only the rotational temperature,
|
|
compute_temp_sphere.cpp: // do not remove DOFs for translation as set by default
|
|
compute_temp_sphere.cpp: // error checks
|
|
compute_temp_sphere.cpp: error->all(FLERR,"Compute temp/sphere requires atom style sphere");
|
|
compute_temp_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp: if (strcmp(tbias->style,"temp/region") == 0) tempbias = 2;
|
|
compute_temp_sphere.cpp: // init and setup bias compute because
|
|
compute_temp_sphere.cpp: // this compute's setup()->dof_compute() may be called first
|
|
compute_temp_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp: // 6 or 3 dof for extended/point particles for 3d
|
|
compute_temp_sphere.cpp: // 3 or 2 dof for extended/point particles for 2d
|
|
compute_temp_sphere.cpp: // which dof are included also depends on mode
|
|
compute_temp_sphere.cpp: // assume full rotation of extended particles
|
|
compute_temp_sphere.cpp: // user should correct this via compute_modify if needed
|
|
compute_temp_sphere.cpp: // additional adjustments to dof
|
|
compute_temp_sphere.cpp: if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
|
|
compute_temp_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp: // point particles will not contribute rotation due to radius = 0
|
|
compute_temp_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp: // point particles will not contribute rotation due to radius = 0
|
|
compute_temp_sphere.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_sphere.cpp:------------------------------------------------------------------------- */
|
|
compute_temp_sphere.cpp:/* ----------------------------------------------------------------------
|
|
compute_temp_sphere.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_torque_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp: if (narg != 4) error->all(FLERR,"Illegal compute torque/chunk command");
|
|
compute_torque_chunk.cpp: // ID of compute chunk/atom
|
|
compute_torque_chunk.cpp: // chunk-based data
|
|
compute_torque_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for "
|
|
compute_torque_chunk.cpp: "compute torque/chunk");
|
|
compute_torque_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_torque_chunk.cpp: error->all(FLERR,"Compute torque/chunk does not use chunk/atom compute");
|
|
compute_torque_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_torque_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_torque_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_torque_chunk.cpp: // zero local per-chunk values
|
|
compute_torque_chunk.cpp: // compute COM for each chunk
|
|
compute_torque_chunk.cpp: comall[i][0] /= masstotal[i];
|
|
compute_torque_chunk.cpp: comall[i][1] /= masstotal[i];
|
|
compute_torque_chunk.cpp: comall[i][2] /= masstotal[i];
|
|
compute_torque_chunk.cpp: // compute torque on each chunk
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_torque_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_torque_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_torque_chunk.cpp: memory->create(massproc,maxchunk,"torque/chunk:massproc");
|
|
compute_torque_chunk.cpp: memory->create(masstotal,maxchunk,"torque/chunk:masstotal");
|
|
compute_torque_chunk.cpp: memory->create(com,maxchunk,3,"torque/chunk:com");
|
|
compute_torque_chunk.cpp: memory->create(comall,maxchunk,3,"torque/chunk:comall");
|
|
compute_torque_chunk.cpp: memory->create(torque,maxchunk,3,"torque/chunk:torque");
|
|
compute_torque_chunk.cpp: memory->create(torqueall,maxchunk,3,"torque/chunk:torqueall");
|
|
compute_torque_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_torque_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vacf.cpp:/* ----------------------------------------------------------------------
|
|
compute_vacf.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_vacf.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_vacf.cpp:------------------------------------------------------------------------- */
|
|
compute_vacf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vacf.cpp: // create a new fix STORE style
|
|
compute_vacf.cpp: // id = compute-ID + COMPUTE_STORE, fix group = compute group
|
|
compute_vacf.cpp: // store current velocities in fix store array
|
|
compute_vacf.cpp: // skip if reset from restart file
|
|
compute_vacf.cpp: // displacement vector
|
|
compute_vacf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vacf.cpp: // check nfix in case all fixes have already been deleted
|
|
compute_vacf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vacf.cpp: // set fix which stores original atom velocities
|
|
compute_vacf.cpp: // nvacf = # of atoms in group
|
|
compute_vacf.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vacf.cpp: vector[0] /= nvacf;
|
|
compute_vacf.cpp: vector[1] /= nvacf;
|
|
compute_vacf.cpp: vector[2] /= nvacf;
|
|
compute_vacf.cpp: vector[3] /= nvacf;
|
|
compute_vacf.cpp:/* ----------------------------------------------------------------------
|
|
compute_vacf.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
compute_vcm_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp: if (narg != 4) error->all(FLERR,"Illegal compute vcm/chunk command");
|
|
compute_vcm_chunk.cpp: // ID of compute chunk/atom
|
|
compute_vcm_chunk.cpp: // chunk-based data
|
|
compute_vcm_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for compute vcm/chunk");
|
|
compute_vcm_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
compute_vcm_chunk.cpp: error->all(FLERR,"Compute vcm/chunk does not use chunk/atom compute");
|
|
compute_vcm_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp: // one-time calculation of per-chunk mass
|
|
compute_vcm_chunk.cpp: // done in setup, so that ComputeChunkAtom::setup() is already called
|
|
compute_vcm_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
compute_vcm_chunk.cpp: // extract ichunk index vector from compute
|
|
compute_vcm_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
compute_vcm_chunk.cpp: // zero local per-chunk values
|
|
compute_vcm_chunk.cpp: // compute VCM for each chunk
|
|
compute_vcm_chunk.cpp: vcmall[i][0] /= masstotal[i];
|
|
compute_vcm_chunk.cpp: vcmall[i][1] /= masstotal[i];
|
|
compute_vcm_chunk.cpp: vcmall[i][2] /= masstotal[i];
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp: lock methods: called by fix ave/time
|
|
compute_vcm_chunk.cpp: these methods insure vector/array size is locked for Nfreq epoch
|
|
compute_vcm_chunk.cpp: by passing lock info along to compute chunk/atom
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp: decrement lock counter in compute chunk/atom, it if still exists
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp: calculate and return # of chunks = length of vector/array
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
compute_vcm_chunk.cpp: memory->create(massproc,maxchunk,"vcm/chunk:massproc");
|
|
compute_vcm_chunk.cpp: memory->create(masstotal,maxchunk,"vcm/chunk:masstotal");
|
|
compute_vcm_chunk.cpp: memory->create(vcm,maxchunk,3,"vcm/chunk:vcm");
|
|
compute_vcm_chunk.cpp: memory->create(vcmall,maxchunk,3,"vcm/chunk:vcmall");
|
|
compute_vcm_chunk.cpp:/* ----------------------------------------------------------------------
|
|
compute_vcm_chunk.cpp:------------------------------------------------------------------------- */
|
|
create_atoms.cpp:/* ----------------------------------------------------------------------
|
|
create_atoms.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
create_atoms.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
create_atoms.cpp:------------------------------------------------------------------------- */
|
|
create_atoms.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
create_atoms.cpp:/* ---------------------------------------------------------------------- */
|
|
create_atoms.cpp:/* ---------------------------------------------------------------------- */
|
|
create_atoms.cpp: // parse arguments
|
|
create_atoms.cpp: // process optional keywords
|
|
create_atoms.cpp: // error checks
|
|
create_atoms.cpp: // error check and further setup for mode = MOLECULE
|
|
create_atoms.cpp: // create_atoms uses geoemetric center of molecule for insertion
|
|
create_atoms.cpp: // molecule random number generator, different for each proc
|
|
create_atoms.cpp: // error check and further setup for variable test
|
|
create_atoms.cpp: // demand non-none lattice be defined for BOX and REGION
|
|
create_atoms.cpp: // else setup scaling for SINGLE and RANDOM
|
|
create_atoms.cpp: // could use domain->lattice->lattice2box() to do conversion of
|
|
create_atoms.cpp: // lattice to box, but not consistent with other uses of units=lattice
|
|
create_atoms.cpp: // triclinic remapping occurs in add_single()
|
|
create_atoms.cpp: // set bounds for my proc in sublo[3] & subhi[3]
|
|
create_atoms.cpp: // if periodic and style = BOX or REGION, i.e. using lattice:
|
|
create_atoms.cpp: // should create exactly 1 atom when 2 images are both "on" the boundary
|
|
create_atoms.cpp: // either image may be slightly inside/outside true box due to round-off
|
|
create_atoms.cpp: // if I am lo proc, decrement lower bound by EPSILON
|
|
create_atoms.cpp: // this will insure lo image is created
|
|
create_atoms.cpp: // if I am hi proc, decrement upper bound by 2.0*EPSILON
|
|
create_atoms.cpp: // this will insure hi image is not created
|
|
create_atoms.cpp: // thus insertion box is EPSILON smaller than true box
|
|
create_atoms.cpp: // and is shifted away from true boundary
|
|
create_atoms.cpp: // which is where atoms are likely to be generated
|
|
create_atoms.cpp: // clear ghost count and any ghost bonus data internal to AtomVec
|
|
create_atoms.cpp: // same logic as beginning of Comm::exchange()
|
|
create_atoms.cpp: // do it now b/c creating atoms will overwrite ghost atoms
|
|
create_atoms.cpp: // add atoms/molecules in one of 3 ways
|
|
create_atoms.cpp: // init per-atom fix/compute/variable values for created atoms
|
|
create_atoms.cpp: // set new total # of atoms and error check
|
|
create_atoms.cpp: // add IDs for newly created atoms
|
|
create_atoms.cpp: // check that atom IDs are valid
|
|
create_atoms.cpp: // if global map exists, reset it
|
|
create_atoms.cpp: // invoke map_init() b/c atom count has grown
|
|
create_atoms.cpp: // for MOLECULE mode:
|
|
create_atoms.cpp: // molecule can mean just a mol ID or bonds/angles/etc or mol templates
|
|
create_atoms.cpp: // set molecule IDs for created atoms if atom->molecule_flag is set
|
|
create_atoms.cpp: // reset new molecule bond,angle,etc and special values if defined
|
|
create_atoms.cpp: // send atoms to new owning procs via irregular comm
|
|
create_atoms.cpp: // since not all atoms I created will be within my sub-domain
|
|
create_atoms.cpp: // perform special list build if needed
|
|
create_atoms.cpp: // molcreate = # of molecules I created
|
|
create_atoms.cpp: int molcreate = (atom->nlocal - nlocal_previous) / onemol->natoms;
|
|
create_atoms.cpp: // increment total bonds,angles,etc
|
|
create_atoms.cpp: // if atom style template
|
|
create_atoms.cpp: // maxmol = max molecule ID across all procs, for previous atoms
|
|
create_atoms.cpp: // moloffset = max molecule ID for all molecules owned by previous procs
|
|
create_atoms.cpp: // including molecules existing before this creation
|
|
create_atoms.cpp: // loop over molecules I created
|
|
create_atoms.cpp: // set their molecule ID
|
|
create_atoms.cpp: // reset their bond,angle,etc and special values
|
|
create_atoms.cpp: // perform irregular comm to migrate atoms to new owning procs
|
|
create_atoms.cpp: // clean up
|
|
create_atoms.cpp: // print status
|
|
create_atoms.cpp: // for MOLECULE mode:
|
|
create_atoms.cpp: // create special bond lists for molecular systems,
|
|
create_atoms.cpp: // but not for atom style template
|
|
create_atoms.cpp: // only if onemol added bonds but not special info
|
|
create_atoms.cpp:/* ----------------------------------------------------------------------
|
|
create_atoms.cpp:------------------------------------------------------------------------- */
|
|
create_atoms.cpp: // remap atom if requested
|
|
create_atoms.cpp: // if triclinic, convert to lamda coords (0-1)
|
|
create_atoms.cpp: // if atom/molecule is in my subbox, create it
|
|
create_atoms.cpp:/* ----------------------------------------------------------------------
|
|
create_atoms.cpp:------------------------------------------------------------------------- */
|
|
create_atoms.cpp: // random number generator, same for all procs
|
|
create_atoms.cpp: // bounding box for atom creation
|
|
create_atoms.cpp: // in real units, even if triclinic
|
|
create_atoms.cpp: // only limit bbox by region if its bboxflag is set (interior region)
|
|
create_atoms.cpp: // generate random positions for each new atom/molecule within bounding box
|
|
create_atoms.cpp: // iterate until atom is within region, variable, and triclinic simulation box
|
|
create_atoms.cpp: // if final atom position is in my subbox, create it
|
|
create_atoms.cpp: // if triclinic, coord is now in lamda units
|
|
create_atoms.cpp: // clean-up
|
|
create_atoms.cpp:/* ----------------------------------------------------------------------
|
|
create_atoms.cpp:------------------------------------------------------------------------- */
|
|
create_atoms.cpp: // convert 8 corners of my subdomain from box coords to lattice coords
|
|
create_atoms.cpp: // for orthogonal, use corner pts of my subbox
|
|
create_atoms.cpp: // for triclinic, use bounding box of my subbox
|
|
create_atoms.cpp: // xyz min to max = bounding box around the domain corners in lattice space
|
|
create_atoms.cpp: // ilo:ihi,jlo:jhi,klo:khi = loop bounds for lattice overlap of my subbox
|
|
create_atoms.cpp: // overlap = any part of a unit cell (face,edge,pt) in common with my subbox
|
|
create_atoms.cpp: // in lattice space, subbox is a tilted box
|
|
create_atoms.cpp: // but bbox of subbox is aligned with lattice axes
|
|
create_atoms.cpp: // so ilo:khi unit cells should completely tile bounding box
|
|
create_atoms.cpp: // decrement lo, increment hi to avoid round-off issues in lattice->bbox(),
|
|
create_atoms.cpp: // which can lead to missing atoms in rare cases
|
|
create_atoms.cpp: // extra decrement of lo if min < 0, since static_cast(-1.5) = -1
|
|
create_atoms.cpp: // iterate on 3d periodic lattice of unit cells using loop bounds
|
|
create_atoms.cpp: // iterate on nbasis atoms in each unit cell
|
|
create_atoms.cpp: // convert lattice coords to box coords
|
|
create_atoms.cpp: // add atom or molecule (on each basis point) if it meets all criteria
|
|
create_atoms.cpp: // convert from lattice coords to box coords
|
|
create_atoms.cpp: // if a region was specified, test if atom is in it
|
|
create_atoms.cpp: // if variable test specified, eval variable
|
|
create_atoms.cpp: // test if atom/molecule position is in my subbox
|
|
create_atoms.cpp: // add the atom or entire molecule to my list of atoms
|
|
create_atoms.cpp:/* ----------------------------------------------------------------------
|
|
create_atoms.cpp:------------------------------------------------------------------------- */
|
|
create_atoms.cpp: // create atoms in molecule with atom ID = 0 and mol ID = 0
|
|
create_atoms.cpp: // reset in caller after all molecules created by all procs
|
|
create_atoms.cpp: // pass add_molecule_atom an offset of 0 since don't know
|
|
create_atoms.cpp: // max tag of atoms in previous molecules at this point
|
|
create_atoms.cpp:/* ----------------------------------------------------------------------
|
|
create_atoms.cpp:------------------------------------------------------------------------- */
|
|
create_bonds.cpp:/* ----------------------------------------------------------------------
|
|
create_bonds.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
create_bonds.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
create_bonds.cpp:------------------------------------------------------------------------- */
|
|
create_bonds.cpp:/* ---------------------------------------------------------------------- */
|
|
create_bonds.cpp:/* ---------------------------------------------------------------------- */
|
|
create_bonds.cpp: // parse args
|
|
create_bonds.cpp: // store state before bond creation
|
|
create_bonds.cpp: // request a full neighbor list for use by this command
|
|
create_bonds.cpp: // init entire system since comm->borders and neighbor->build is done
|
|
create_bonds.cpp: // comm::init needs neighbor::init needs pair::init needs kspace::init, etc
|
|
create_bonds.cpp: // error check on cutoff
|
|
create_bonds.cpp: // if no pair style, neighbor list will be empty
|
|
create_bonds.cpp: // require special_bonds 1-2 weights = 0.0 and KSpace = NULL
|
|
create_bonds.cpp: // so that already bonded atom pairs do not appear in neighbor list
|
|
create_bonds.cpp: // otherwise with newton_bond = 1,
|
|
create_bonds.cpp: // would be hard to check if I-J bond already existed
|
|
create_bonds.cpp: // note that with KSpace, pair with weight = 0 could still be in neigh list
|
|
create_bonds.cpp: // setup domain, communication and neighboring
|
|
create_bonds.cpp: // acquire ghosts and build standard neighbor lists
|
|
create_bonds.cpp: // build neighbor list this command needs based on earlier request
|
|
create_bonds.cpp: // loop over all neighs of each atom
|
|
create_bonds.cpp: // compute distance between two atoms consistently on both procs
|
|
create_bonds.cpp: // add bond if group and distance criteria are met
|
|
create_bonds.cpp: // check that bond list does not overflow
|
|
create_bonds.cpp: // only consider bond creation if I,J distance between 2 cutoffs
|
|
create_bonds.cpp: // compute rsq identically on both I,J loop iterations
|
|
create_bonds.cpp: // if I,J tags equal, do not bond atom to itself
|
|
create_bonds.cpp: // only consider bond creation if igroup and jgroup match I,J atoms
|
|
create_bonds.cpp: // create bond, check for overflow
|
|
create_bonds.cpp: // on I,J loop iterations, store with 1 or 2 atoms based on newton_bond
|
|
create_bonds.cpp: // recount bonds
|
|
create_bonds.cpp: if (!force->newton_bond) atom->nbonds /= 2;
|
|
create_bonds.cpp: // print new bond count
|
|
create_bonds.cpp: // re-trigger special list build
|
|
create_box.cpp:/* ----------------------------------------------------------------------
|
|
create_box.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
create_box.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
create_box.cpp:------------------------------------------------------------------------- */
|
|
create_box.cpp:/* ---------------------------------------------------------------------- */
|
|
create_box.cpp:/* ---------------------------------------------------------------------- */
|
|
create_box.cpp: // region check
|
|
create_box.cpp: // if region not prism:
|
|
create_box.cpp: // setup orthogonal domain
|
|
create_box.cpp: // set simulation domain from region extent
|
|
create_box.cpp: // if region is prism:
|
|
create_box.cpp: // seutp triclinic domain
|
|
create_box.cpp: // set simulation domain params from prism params
|
|
create_box.cpp: // if molecular, zero out topology info
|
|
create_box.cpp: // set atom and topology type quantities
|
|
create_box.cpp: // process optional args that can overwrite default settings
|
|
create_box.cpp: if (strcmp(arg[iarg],"bond/types") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"angle/types") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"dihedral/types") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"improper/types") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"extra/bond/per/atom") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"extra/angle/per/atom") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"extra/dihedral/per/atom") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"extra/improper/per/atom") == 0) {
|
|
create_box.cpp: } else if (strcmp(arg[iarg],"extra/special/per/atom") == 0) {
|
|
create_box.cpp: // problem setup using info from header
|
|
create_box.cpp: // deallocate/grow insures any extra settings are used for topology arrays
|
|
create_box.cpp: // necessary in case no create_atoms is performed
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
delete_atoms.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp:// allocate space for static class variable
|
|
delete_atoms.cpp:/* ---------------------------------------------------------------------- */
|
|
delete_atoms.cpp:/* ---------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // store state before delete
|
|
delete_atoms.cpp: // flag atoms for deletion
|
|
delete_atoms.cpp: // if allflag = 1, just reset atom->nlocal
|
|
delete_atoms.cpp: // else delete atoms one by one
|
|
delete_atoms.cpp: // optionally delete additional bonds or atoms in molecules
|
|
delete_atoms.cpp: // delete local atoms flagged in dlist
|
|
delete_atoms.cpp: // reset nlocal
|
|
delete_atoms.cpp: // if non-molecular system and compress flag set,
|
|
delete_atoms.cpp: // reset atom tags to be contiguous
|
|
delete_atoms.cpp: // set all atom IDs to 0, call tag_extend()
|
|
delete_atoms.cpp: // reset atom->natoms and also topology counts
|
|
delete_atoms.cpp: // reset atom->map if it exists
|
|
delete_atoms.cpp: // set nghost to 0 so old ghosts of deleted atoms won't be mapped
|
|
delete_atoms.cpp: // print before and after atom and topology counts
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // check for special case of group = all
|
|
delete_atoms.cpp: // allocate and initialize deletion list
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // allocate and initialize deletion list
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // read args
|
|
delete_atoms.cpp: // request a full neighbor list for use by this command
|
|
delete_atoms.cpp: // init entire system since comm->borders and neighbor->build is done
|
|
delete_atoms.cpp: // comm::init needs neighbor::init needs pair::init needs kspace::init, etc
|
|
delete_atoms.cpp: // error check on cutoff
|
|
delete_atoms.cpp: // if no pair style, neighbor list will be empty
|
|
delete_atoms.cpp: // setup domain, communication and neighboring
|
|
delete_atoms.cpp: // acquire ghosts and build standard neighbor lists
|
|
delete_atoms.cpp: // build neighbor list this command needs based on earlier request
|
|
delete_atoms.cpp: // allocate and initialize deletion list
|
|
delete_atoms.cpp: // must be after exchange potentially changes nlocal
|
|
delete_atoms.cpp: // double loop over owned atoms and their full neighbor list
|
|
delete_atoms.cpp: // at end of loop, there are no more overlaps
|
|
delete_atoms.cpp: // only ever delete owned atom I in I loop iteration, never J even if owned
|
|
delete_atoms.cpp: // if both weighting factors are 0, skip this pair
|
|
delete_atoms.cpp: // could be 0 and still be in neigh list for long-range Coulombics
|
|
delete_atoms.cpp: // want consistency with non-charged pairs which wouldn't be in list
|
|
delete_atoms.cpp: // only consider deletion if I,J distance < cutoff
|
|
delete_atoms.cpp: // compute rsq identically on both I,J loop iterations
|
|
delete_atoms.cpp: // ignoring possibility that I,J tags are equal
|
|
delete_atoms.cpp: // only consider deletion if I,J are in groups 1,2 respectively
|
|
delete_atoms.cpp: // true whether J is owned or ghost atom
|
|
delete_atoms.cpp: // J is owned atom:
|
|
delete_atoms.cpp: // delete atom I if atom J has not already been deleted
|
|
delete_atoms.cpp: // J is ghost atom:
|
|
delete_atoms.cpp: // delete atom I if J,I is not a candidate deletion pair
|
|
delete_atoms.cpp: // due to being in groups 1,2 respectively
|
|
delete_atoms.cpp: // if they are candidate pair, then either:
|
|
delete_atoms.cpp: // another proc owns J and could delete J
|
|
delete_atoms.cpp: // J is a ghost of another of my owned atoms, and I could delete J
|
|
delete_atoms.cpp: // test on tags of I,J insures that only I or J is deleted
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // allocate and initialize deletion list
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // hash = for atom IDs being deleted by one processor
|
|
delete_atoms.cpp: // list of these IDs is sent around ring
|
|
delete_atoms.cpp: // at each stage of ring pass, hash is re-populated with received IDs
|
|
delete_atoms.cpp: // list = set of unique molecule IDs from which I deleted atoms
|
|
delete_atoms.cpp: // pass list to all other procs via comm->ring()
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // hash = unique molecule IDs from which I deleted atoms
|
|
delete_atoms.cpp: // list = set of unique molecule IDs from which I deleted atoms
|
|
delete_atoms.cpp: // pass list to all other procs via comm->ring()
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: if (!force->newton_bond) atom->nbonds /= 2;
|
|
delete_atoms.cpp: if (!force->newton_bond) atom->nangles /= 3;
|
|
delete_atoms.cpp: if (!force->newton_bond) atom->ndihedrals /= 4;
|
|
delete_atoms.cpp: if (!force->newton_bond) atom->nimpropers /= 4;
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // cbuf = list of N deleted atom IDs from other proc, put them in hash
|
|
delete_atoms.cpp: // loop over my atoms and their bond topology lists
|
|
delete_atoms.cpp: // if any atom in an interaction matches atom ID in hash, delete interaction
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_atoms.cpp: // cbuf = list of N molecule IDs from other proc, put them in hash
|
|
delete_atoms.cpp: // loop over my atoms, if matches molecule ID in hash, delete that atom
|
|
delete_atoms.cpp:/* ----------------------------------------------------------------------
|
|
delete_atoms.cpp:------------------------------------------------------------------------- */
|
|
delete_bonds.cpp:/* ----------------------------------------------------------------------
|
|
delete_bonds.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
delete_bonds.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
delete_bonds.cpp:------------------------------------------------------------------------- */
|
|
delete_bonds.cpp:/* ---------------------------------------------------------------------- */
|
|
delete_bonds.cpp:/* ---------------------------------------------------------------------- */
|
|
delete_bonds.cpp: // init entire system since comm->borders is done
|
|
delete_bonds.cpp: // comm::init needs neighbor::init needs pair::init needs kspace::init, etc
|
|
delete_bonds.cpp: // identify group
|
|
delete_bonds.cpp: // set style and which = type value
|
|
delete_bonds.cpp: // setup list of types (atom,bond,etc) to consider
|
|
delete_bonds.cpp: // use force->bounds(FLERR,) to allow setting of range of types
|
|
delete_bonds.cpp: // range can be 0 to ntypes inclusive
|
|
delete_bonds.cpp: // grab optional keywords
|
|
delete_bonds.cpp: // border swap to insure type and mask is current for off-proc atoms
|
|
delete_bonds.cpp: // enforce PBC before in case atoms are outside box
|
|
delete_bonds.cpp: // set topology interactions either off or on
|
|
delete_bonds.cpp: // criteria for an interaction to potentially be changed (set flag = 1)
|
|
delete_bonds.cpp: // all atoms or any atom in interaction must be in group, based on any_flag
|
|
delete_bonds.cpp: // for style = MULTI, all bond/angle/dihedral/improper, no other criteria
|
|
delete_bonds.cpp: // for style = ATOM, same as MULTI, plus at least one atom is specified type
|
|
delete_bonds.cpp: // for style = BOND/ANGLE/DIHEDRAL/IMPROPER, interaction is specified type
|
|
delete_bonds.cpp: // for style = STATS only compute stats, flag is always 0
|
|
delete_bonds.cpp: // if flag = 1
|
|
delete_bonds.cpp: // set interaction type negative if undo_flag = 0
|
|
delete_bonds.cpp: // set interaction type positive if undo_flag = 1
|
|
delete_bonds.cpp: // induce turn off of angles, dihedral, impropers due to turned off bonds
|
|
delete_bonds.cpp: // induce turn off of dihedrals due to turned off angles
|
|
delete_bonds.cpp: // all atoms or any atom in interaction must be in group, based on any_flag
|
|
delete_bonds.cpp: // circulate list of turned off bonds around ring of procs
|
|
delete_bonds.cpp: // circulate list of turned off angles around ring of procs
|
|
delete_bonds.cpp: // remove interactions if requested
|
|
delete_bonds.cpp: // all atoms or any atom in interaction must be in group, based on any_flag
|
|
delete_bonds.cpp: // if interactions were removed, recompute global counts
|
|
delete_bonds.cpp: if (force->newton_bond == 0) atom->nbonds /= 2;
|
|
delete_bonds.cpp: if (force->newton_bond == 0) atom->nangles /= 3;
|
|
delete_bonds.cpp: if (force->newton_bond == 0) atom->ndihedrals /= 4;
|
|
delete_bonds.cpp: if (force->newton_bond == 0) atom->nimpropers /= 4;
|
|
delete_bonds.cpp: // compute and print stats
|
|
delete_bonds.cpp: bond_on /= 2;
|
|
delete_bonds.cpp: bond_off /= 2;
|
|
delete_bonds.cpp: angle_on /= 3;
|
|
delete_bonds.cpp: angle_off /= 3;
|
|
delete_bonds.cpp: dihedral_on /= 4;
|
|
delete_bonds.cpp: dihedral_off /= 4;
|
|
delete_bonds.cpp: improper_on /= 4;
|
|
delete_bonds.cpp: improper_off /= 4;
|
|
delete_bonds.cpp: // re-compute special list if requested
|
|
dihedral.cpp:/* ----------------------------------------------------------------------
|
|
dihedral.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dihedral.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dihedral.cpp:------------------------------------------------------------------------- */
|
|
dihedral.cpp:/* ----------------------------------------------------------------------
|
|
dihedral.cpp:------------------------------------------------------------------------- */
|
|
dihedral.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral.cpp:/* ----------------------------------------------------------------------
|
|
dihedral.cpp:------------------------------------------------------------------------- */
|
|
dihedral.cpp:/* ----------------------------------------------------------------------
|
|
dihedral.cpp:------------------------------------------------------------------------- */
|
|
dihedral.cpp: eflag_atom = eflag / 2;
|
|
dihedral.cpp: vflag_atom = vflag / 4;
|
|
dihedral.cpp: // reallocate per-atom arrays if necessary
|
|
dihedral.cpp: // zero accumulators
|
|
dihedral.cpp:/* ----------------------------------------------------------------------
|
|
dihedral.cpp:------------------------------------------------------------------------- */
|
|
dihedral.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_hybrid.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dihedral_hybrid.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dihedral_hybrid.cpp:------------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp: // save ptrs to original dihedrallist
|
|
dihedral_hybrid.cpp: // if this is re-neighbor step, create sub-style dihedrallists
|
|
dihedral_hybrid.cpp: // ndihedrallist[] = length of each sub-style list
|
|
dihedral_hybrid.cpp: // realloc sub-style dihedrallist if necessary
|
|
dihedral_hybrid.cpp: // load sub-style dihedrallist with 5 values from original dihedrallist
|
|
dihedral_hybrid.cpp: // call each sub-style's compute function
|
|
dihedral_hybrid.cpp: // set neighbor->dihedrallist to sub-style dihedrallist before call
|
|
dihedral_hybrid.cpp: // accumulate sub-style global/peratom energy/virial in hybrid
|
|
dihedral_hybrid.cpp: // restore ptrs to original dihedrallist
|
|
dihedral_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_hybrid.cpp:------------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp: // delete old lists, since cannot just change settings
|
|
dihedral_hybrid.cpp: // count sub-styles by skipping numeric args
|
|
dihedral_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric word
|
|
dihedral_hybrid.cpp: // need a better way to skip these exceptions
|
|
dihedral_hybrid.cpp: // allocate list of sub-styles
|
|
dihedral_hybrid.cpp: // allocate each sub-style and call its settings() with subset of args
|
|
dihedral_hybrid.cpp: // allocate uses suffix, but don't store suffix version in keywords,
|
|
dihedral_hybrid.cpp: // else syntax in coeff() will not match
|
|
dihedral_hybrid.cpp: // define subset of args for a sub-style by skipping numeric args
|
|
dihedral_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric
|
|
dihedral_hybrid.cpp: // need a better way to skip these exceptions
|
|
dihedral_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_hybrid.cpp:---------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp: // 2nd arg = dihedral sub-style name
|
|
dihedral_hybrid.cpp: // allow for "none" or "skip" as valid sub-style name
|
|
dihedral_hybrid.cpp: // move 1st arg to 2nd arg
|
|
dihedral_hybrid.cpp: // just copy ptrs, since arg[] points into original input line
|
|
dihedral_hybrid.cpp: // invoke sub-style coeff() starting with 1st arg
|
|
dihedral_hybrid.cpp: // set setflag and which type maps to which sub-style
|
|
dihedral_hybrid.cpp: // if sub-style is skip: auxiliary class2 setting in data file so ignore
|
|
dihedral_hybrid.cpp: // if sub-style is none and not skip: set hybrid setflag, wipe out map
|
|
dihedral_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_hybrid.cpp:------------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_hybrid.cpp:------------------------------------------------------------------------- */
|
|
dihedral_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_hybrid.cpp:------------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_zero.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dihedral_zero.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dihedral_zero.cpp:------------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_zero.cpp:------------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_zero.cpp:------------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_zero.cpp:------------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_zero.cpp:------------------------------------------------------------------------- */
|
|
dihedral_zero.cpp:/* ----------------------------------------------------------------------
|
|
dihedral_zero.cpp:------------------------------------------------------------------------- */
|
|
displace_atoms.cpp:/* ----------------------------------------------------------------------
|
|
displace_atoms.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
displace_atoms.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
displace_atoms.cpp:------------------------------------------------------------------------- */
|
|
displace_atoms.cpp:/* ---------------------------------------------------------------------- */
|
|
displace_atoms.cpp:/* ---------------------------------------------------------------------- */
|
|
displace_atoms.cpp:/* ---------------------------------------------------------------------- */
|
|
displace_atoms.cpp: // group and style
|
|
displace_atoms.cpp: // set option defaults
|
|
displace_atoms.cpp: // read options from end of input line
|
|
displace_atoms.cpp: // setup scaling
|
|
displace_atoms.cpp: // move atoms by 3-vector or specified variable(s)
|
|
displace_atoms.cpp: // move atoms in ramped fashion
|
|
displace_atoms.cpp: fraction = (x[i][coord_dim] - coord_lo) / (coord_hi - coord_lo);
|
|
displace_atoms.cpp: // move atoms randomly
|
|
displace_atoms.cpp: // makes atom result independent of what proc owns it via random->reset()
|
|
displace_atoms.cpp: // rotate atoms by right-hand rule by theta around R
|
|
displace_atoms.cpp: // P = point = vector = point of rotation
|
|
displace_atoms.cpp: // R = vector = axis of rotation
|
|
displace_atoms.cpp: // R0 = runit = unit vector for R
|
|
displace_atoms.cpp: // D = X - P = vector from P to X
|
|
displace_atoms.cpp: // C = (D dot R0) R0 = projection of atom coord onto R line
|
|
displace_atoms.cpp: // A = D - C = vector from R line to X
|
|
displace_atoms.cpp: // B = R0 cross A = vector perp to A in plane of rotation
|
|
displace_atoms.cpp: // A,B define plane of circular rotation around R line
|
|
displace_atoms.cpp: // X = P + C + A cos(theta) + B sin(theta)
|
|
displace_atoms.cpp: runit[0] = axis[0]/len;
|
|
displace_atoms.cpp: runit[1] = axis[1]/len;
|
|
displace_atoms.cpp: runit[2] = axis[2]/len;
|
|
displace_atoms.cpp: double angle = MY_PI*theta/180.0;
|
|
displace_atoms.cpp: // flags for additional orientation info stored by some atom styles
|
|
displace_atoms.cpp: // AtomVec pointers to retrieve per-atom storage of extra quantities
|
|
displace_atoms.cpp: // theta for lines
|
|
displace_atoms.cpp: // quats for ellipsoids, tris, and bodies
|
|
displace_atoms.cpp: // move atoms back inside simulation box and to new processors
|
|
displace_atoms.cpp: // use remap() instead of pbc() in case atoms moved a long distance
|
|
displace_atoms.cpp: // use irregular() in case atoms moved a long distance
|
|
displace_atoms.cpp: // check if any atoms were lost
|
|
displace_atoms.cpp:/* ----------------------------------------------------------------------
|
|
displace_atoms.cpp:------------------------------------------------------------------------- */
|
|
displace_atoms.cpp:/* ----------------------------------------------------------------------
|
|
displace_atoms.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
domain.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp
|
|
domain.cpp:enum{IGNORE,WARN,ERROR}; // same as thermo.cpp
|
|
domain.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ---------------------------------------------------------------------- */
|
|
domain.cpp:/* ---------------------------------------------------------------------- */
|
|
domain.cpp: // set box_change flags if box size/shape/sub-domains ever change
|
|
domain.cpp: // due to shrink-wrapping or fixes that change box size/shape/sub-domains
|
|
domain.cpp: // check for fix deform
|
|
domain.cpp: // region inits
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: assumes boxlo/hi and triclinic tilts are already set
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // error checks for orthogonal and triclinic domains
|
|
domain.cpp: // error check or warning on triclinic tilt factors
|
|
domain.cpp: if ((fabs(xy/(boxhi[0]-boxlo[0])) > 0.5 && xperiodic) ||
|
|
domain.cpp: (fabs(xz/(boxhi[0]-boxlo[0])) > 0.5 && xperiodic) ||
|
|
domain.cpp: (fabs(yz/(boxhi[1]-boxlo[1])) > 0.5 && yperiodic)) {
|
|
domain.cpp: // set small based on box size and SMALL
|
|
domain.cpp: // this works for any unit system
|
|
domain.cpp: // if expandflag, adjust box lo/hi for shrink-wrapped dims
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: assumes boxlo/hi and triclinic tilts are already set
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: h_inv[0] = 1.0/h[0];
|
|
domain.cpp: h_inv[1] = 1.0/h[1];
|
|
domain.cpp: h_inv[2] = 1.0/h[2];
|
|
domain.cpp: h_inv[3] = -h[3] / (h[1]*h[2]);
|
|
domain.cpp: h_inv[4] = (h[3]*h[5] - h[1]*h[4]) / (h[0]*h[1]*h[2]);
|
|
domain.cpp: h_inv[5] = -h[5] / (h[0]*h[1]);
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: if shrink-wrapped, determine atom extent and reset boxlo/hi
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // perform shrink-wrapping
|
|
domain.cpp: // compute extent of atoms on this proc
|
|
domain.cpp: // for triclinic, this is done in lamda space
|
|
domain.cpp: // compute extent across all procs
|
|
domain.cpp: // flip sign of MIN to do it in one Allreduce MAX
|
|
domain.cpp: // for triclinic, convert back to box coords before changing box
|
|
domain.cpp: // in shrink-wrapped dims, set box by atom extent
|
|
domain.cpp: // if minimum set, enforce min box size settings
|
|
domain.cpp: // for triclinic, convert lamda extent to box coords, then set box lo/hi
|
|
domain.cpp: // decided NOT to do the next comment - don't want to sneakily change tilt
|
|
domain.cpp: // for triclinic, adjust tilt factors if 2nd dim is shrink-wrapped,
|
|
domain.cpp: // so that displacement in 1st dim stays the same
|
|
domain.cpp: //xy *= (boxhi[1]-boxlo[1]) / yprd;
|
|
domain.cpp: //xz *= (boxhi[2]-boxlo[2]) / xprd;
|
|
domain.cpp: //yz *= (boxhi[2]-boxlo[2]) / yprd;
|
|
domain.cpp: // reset box whether shrink-wrapping or not
|
|
domain.cpp: // if shrink-wrapped & kspace is defined (i.e. using MSM), call setup()
|
|
domain.cpp: // also call init() (to test for compatibility) ?
|
|
domain.cpp: //force->kspace->init();
|
|
domain.cpp: // if shrink-wrapped & triclinic, re-convert to lamda coords for new box
|
|
domain.cpp: // re-invoke pbc() b/c x2lamda result can be outside [0,1] due to roundoff
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: increment/decrement in wrap-around fashion
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // verify owned atoms have valid numerical coords
|
|
domain.cpp: // may not if computed pairwise force between 2 atoms at same location
|
|
domain.cpp: coord = &x[0][0]; // note: x is always initialized to at least one element.
|
|
domain.cpp: // setup for PBC checks
|
|
domain.cpp: // apply PBC to each owned atom
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // only need to check if system is molecular and some dimension is periodic
|
|
domain.cpp: // if running verlet/split, don't check on KSpace partition since
|
|
domain.cpp: // it has no ghost atoms and thus bond partners won't exist
|
|
domain.cpp: if (strncmp(update->integrate_style,"verlet/split",12) == 0 &&
|
|
domain.cpp: // communicate unwrapped position of owned atoms to ghost atoms
|
|
domain.cpp: // compute unwrapped extent of each bond
|
|
domain.cpp: // flag if any bond component is longer than 1/2 of periodic box length
|
|
domain.cpp: // flag if any bond component is longer than non-periodic box length
|
|
domain.cpp: // which means image flags in that dimension were different
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // only need to check if system is molecular and some dimension is periodic
|
|
domain.cpp: // if running verlet/split, don't check on KSpace partition since
|
|
domain.cpp: // it has no ghost atoms and thus bond partners won't exist
|
|
domain.cpp: if (strncmp(update->integrate_style,"verlet/split",12) == 0 &&
|
|
domain.cpp: // maxbondall = longest current bond length
|
|
domain.cpp: // if periodic box dim is tiny (less than 2 * bond-length),
|
|
domain.cpp: // minimum_image() itself may compute bad bond lengths
|
|
domain.cpp: // in this case, image_check() should warn,
|
|
domain.cpp: // assuming 2 atoms have consistent image flags
|
|
domain.cpp: // maxdelta = furthest apart 2 atoms in a bonded interaction can be
|
|
domain.cpp: // include BONDSTRETCH factor to account for dynamics
|
|
domain.cpp: // warn if maxdelta > than half any periodic box length
|
|
domain.cpp: // since atoms in the interaction could rotate into that dimension
|
|
domain.cpp: "Bond/angle/dihedral extent > half of periodic box length");
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: use 1/2 of box size as test
|
|
domain.cpp: for triclinic, also add/subtract tilt factors in other dims as needed
|
|
domain.cpp: b/c while could iterate forever
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: use 1/2 of box size as test
|
|
domain.cpp: for triclinic, also add/subtract tilt factors in other dims as needed
|
|
domain.cpp: b/c while could iterate forever
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: use 1/2 of box size as test
|
|
domain.cpp: for triclinic, also add/subtract tilt factors in other dims as needed
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: for triclinic, add/subtract tilt factors in other dims as needed
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: increment/decrement in wrap-around fashion
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // iterative form
|
|
domain.cpp: // if (xperiodic) {
|
|
domain.cpp: // while (coordnew[0]-coordold[0] > half[0]) coordnew[0] -= period[0];
|
|
domain.cpp: // while (coordold[0]-coordnew[0] > half[0]) coordnew[0] += period[0];
|
|
domain.cpp: // }
|
|
domain.cpp: n = static_cast<int> ((coordnew[0]-coordold[0])/period[0]);
|
|
domain.cpp: n = static_cast<int> ((coordold[0]-coordnew[0])/period[0]);
|
|
domain.cpp: n = static_cast<int> ((coordnew[1]-coordold[1])/period[1]);
|
|
domain.cpp: n = static_cast<int> ((coordold[1]-coordnew[1])/period[1]);
|
|
domain.cpp: n = static_cast<int> ((coordnew[2]-coordold[2])/period[2]);
|
|
domain.cpp: n = static_cast<int> ((coordold[2]-coordnew[2])/period[2]);
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: C' = C + pB + nA (C shifted by B and/or A)
|
|
domain.cpp: so that x_unwrap for each atom is same before/after
|
|
domain.cpp: this is b/c the xy flip dramatically changes which tiled image of
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // box and subbox bounds for orthogonal vs triclinic
|
|
domain.cpp: // check if atom did not return 1 only b/c it was
|
|
domain.cpp: // outside a shrink-wrapped boundary
|
|
domain.cpp: // newcoord = coords pushed back to be on shrink-wrapped boundary
|
|
domain.cpp: // newcoord is a copy, so caller's x[] is not affected
|
|
domain.cpp: // re-test for newcoord inside my sub-domain
|
|
domain.cpp: // use <= test for upper-boundary since may have just put atom at boxhi
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp: // extend Region list if necessary
|
|
domain.cpp: // create the Region
|
|
domain.cpp: sprintf(estyle,"%s/%s",arg[1],lmp->suffix);
|
|
domain.cpp: sprintf(estyle,"%s/%s",arg[1],lmp->suffix2);
|
|
domain.cpp: // initialize any region variables via init()
|
|
domain.cpp: // in case region is used between runs, e.g. to print a variable
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: convert 8 lamda corner pts of lo/hi box to box coords
|
|
domain.cpp: return bboxlo/hi = bounding box around 8 corner pts in box coords
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
domain.cpp:/* ----------------------------------------------------------------------
|
|
domain.cpp: compute 8 corner pts of any triclinic box with lo/hi in lamda coords
|
|
domain.cpp:------------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ----------------------------------------------------------------------
|
|
dump_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_atom.cpp:------------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp: // format = copy of default or user-specified line format
|
|
dump_atom.cpp: // default depends on image flags
|
|
dump_atom.cpp: // setup boundary string
|
|
dump_atom.cpp: // setup column string
|
|
dump_atom.cpp: // setup function ptrs
|
|
dump_atom.cpp: // open single file, one time only
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp: double invxprd = 1.0/domain->xprd;
|
|
dump_atom.cpp: double invyprd = 1.0/domain->yprd;
|
|
dump_atom.cpp: double invzprd = 1.0/domain->zprd;
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp: double invxprd = 1.0/domain->xprd;
|
|
dump_atom.cpp: double invyprd = 1.0/domain->yprd;
|
|
dump_atom.cpp: double invzprd = 1.0/domain->zprd;
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ----------------------------------------------------------------------
|
|
dump_atom.cpp:------------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp:/* ----------------------------------------------------------------------
|
|
dump_cfg.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_cfg.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_cfg.cpp:------------------------------------------------------------------------- */
|
|
dump_cfg.cpp:/* ----------------------------------------------------------------------
|
|
dump_cfg.cpp:------------------------------------------------------------------------- */
|
|
dump_cfg.cpp:enum{INT,DOUBLE,STRING,BIGINT}; // same as in DumpCustom
|
|
dump_cfg.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp: // use earg instead of original arg since it includes expanded wildcards
|
|
dump_cfg.cpp: // earg was created by parent DumpCustom
|
|
dump_cfg.cpp: // setup auxiliary property name strings
|
|
dump_cfg.cpp: // convert 'X_ID[m]' (X=c,f,v) to 'X_ID_m'
|
|
dump_cfg.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp: // setup function ptrs
|
|
dump_cfg.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp: // set scale factor used by AtomEye for CFG viz
|
|
dump_cfg.cpp: // default = 1.0
|
|
dump_cfg.cpp: // for peridynamics, set to pre-computed PD scale factor
|
|
dump_cfg.cpp: // so PD particles mimic C atoms
|
|
dump_cfg.cpp: // for unwrapped coords, set to UNWRAPEXPAND (10.0)
|
|
dump_cfg.cpp: // so molecules are not split across periodic box boundaries
|
|
dump_cfg.cpp:/* ----------------------------------------------------------------------
|
|
dump_cfg.cpp:------------------------------------------------------------------------- */
|
|
dump_cfg.cpp: unwrap_coord = (mybuf[m] - 0.5)/UNWRAPEXPAND + 0.5;
|
|
dump_cfg.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_cfg.cpp: unwrap_coord = (mybuf[m] - 0.5)/UNWRAPEXPAND + 0.5;
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp:// allocate space for static class variable
|
|
dump.cpp:/* ---------------------------------------------------------------------- */
|
|
dump.cpp: // parse filename for special syntax
|
|
dump.cpp: // if contains '%', write one file per proc and replace % with proc-ID
|
|
dump.cpp: // if contains '*', write one file per timestep and replace * with timestep
|
|
dump.cpp: // check file suffixes
|
|
dump.cpp: // if ends in .bin = binary file
|
|
dump.cpp: // else if ends in .gz = gzipped text file
|
|
dump.cpp: // else ASCII text file
|
|
dump.cpp:/* ---------------------------------------------------------------------- */
|
|
dump.cpp: // format_column_user is deallocated by child classes that use it
|
|
dump.cpp: // XTC style sets fp to NULL since it closes file in its destructor
|
|
dump.cpp:/* ---------------------------------------------------------------------- */
|
|
dump.cpp: // set reorderflag = 1 if can simply reorder local atoms rather than sort
|
|
dump.cpp: // criteria: sorting by ID, atom IDs are consecutive from 1 to Natoms
|
|
dump.cpp: // min/max IDs of group match size of group
|
|
dump.cpp: // compute ntotal_reorder, nme_reorder, idlo/idhi to test against later
|
|
dump.cpp: idlo = static_cast<tagint> (range*me/nprocs + minall);
|
|
dump.cpp: tagint idhi = static_cast<tagint> (range*(me+1)/nprocs + minall);
|
|
dump.cpp: tagint lom1 = static_cast<tagint> ((idlo-1-minall)/range * nprocs);
|
|
dump.cpp: tagint lo = static_cast<tagint> ((idlo-minall)/range * nprocs);
|
|
dump.cpp: tagint him1 = static_cast<tagint> ((idhi-1-minall)/range * nprocs);
|
|
dump.cpp: tagint hi = static_cast<tagint> ((idhi-minall)/range * nprocs);
|
|
dump.cpp: // preallocation for PBC copies if requested
|
|
dump.cpp:/* ---------------------------------------------------------------------- */
|
|
dump.cpp:/* ---------------------------------------------------------------------- */
|
|
dump.cpp: // if file per timestep, open new file
|
|
dump.cpp: // simulation box bounds
|
|
dump.cpp: // nme = # of dump lines this proc contributes to dump
|
|
dump.cpp: // ntotal = total # of dump lines in snapshot
|
|
dump.cpp: // nmax = max # of dump lines on any proc
|
|
dump.cpp: // write timestep header
|
|
dump.cpp: // for multiproc,
|
|
dump.cpp: // nheader = # of lines in this file via Allreduce on clustercomm
|
|
dump.cpp: // insure buf is sized for packing and communicating
|
|
dump.cpp: // use nmax to insure filewriter proc can receive info from others
|
|
dump.cpp: // limit nmax*size_one to int since used as arg in MPI calls
|
|
dump.cpp: // insure ids buffer is sized for sorting
|
|
dump.cpp: // apply PBC on copy of x,v,image if requested
|
|
dump.cpp: // pack my data into buf
|
|
dump.cpp: // if sorting on IDs also request ID list from pack()
|
|
dump.cpp: // sort buf as needed
|
|
dump.cpp: // if buffering, convert doubles into strings
|
|
dump.cpp: // insure sbuf is sized for communicating
|
|
dump.cpp: // cannot buffer if output is to binary file
|
|
dump.cpp: // filewriter = 1 = this proc writes to file
|
|
dump.cpp: // ping each proc in my cluster, receive its data, write data to file
|
|
dump.cpp: // else wait for ping from fileproc, send my data to fileproc
|
|
dump.cpp: // comm and output buf of doubles
|
|
dump.cpp: nlines /= size_one;
|
|
dump.cpp: // comm and output sbuf = one big string of formatted values per proc
|
|
dump.cpp: // restore original x,v,image unaltered by PBC
|
|
dump.cpp: // if file per timestep, close file if I am filewriter
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp: // single file, already opened, so just return
|
|
dump.cpp: // if one file per timestep, replace '*' with current timestep
|
|
dump.cpp: // each proc with filewriter = 1 opens a file
|
|
dump.cpp: // delete string with timestep replaced
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp: // if single proc, swap ptrs to buf,ids <-> bufsort,idsort
|
|
dump.cpp: // if multiple procs, exchange datums between procs via irregular
|
|
dump.cpp: // grow proclist if necessary
|
|
dump.cpp: // proclist[i] = which proc Ith datum will be sent to
|
|
dump.cpp: // use 0.5 instead of EPSILON since atom IDs are integers
|
|
dump.cpp: // if use EPSILON, it can be lost if 64-bit maxall-minall is too big
|
|
dump.cpp: // then iproc == nprocs for largest ID, causing irregular to crash
|
|
dump.cpp: iproc = static_cast<int> ((ids[i]-minall)/range * nprocs);
|
|
dump.cpp: // proc assignment is inverted if sortorder = DESCEND
|
|
dump.cpp: iproc = static_cast<int> ((value-minall)/range * nprocs);
|
|
dump.cpp: // create comm plan, grow recv bufs if necessary,
|
|
dump.cpp: // exchange datums, destroy plan
|
|
dump.cpp: // if sorting on atom IDs, exchange IDs also
|
|
dump.cpp: // if reorder flag is set & total/per-proc counts match pre-computed values,
|
|
dump.cpp: // then create index directly from idsort
|
|
dump.cpp: // else quicksort of index using IDs or buf column as comparator
|
|
dump.cpp: // reset buf size and maxbuf to largest of any post-sort nme values
|
|
dump.cpp: // this insures proc 0 can receive everyone's info
|
|
dump.cpp: // copy data from bufsort to buf using index
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp: multiproc = nprocs/nper;
|
|
dump.cpp: fileproc = me/nper * nper;
|
|
dump.cpp: int icluster = fileproc/nper;
|
|
dump.cpp: // pass format none to child classes which may use it
|
|
dump.cpp: // not an error if they don't
|
|
dump.cpp: } else { // pass other format options to child classes
|
|
dump.cpp: int icluster = static_cast<int> ((bigint) me * nfile/nprocs);
|
|
dump.cpp: fileproc = static_cast<int> ((bigint) icluster * nprocs/nfile);
|
|
dump.cpp: int fcluster = static_cast<int> ((bigint) fileproc * nfile/nprocs);
|
|
dump.cpp: static_cast<int> ((bigint) (icluster+1) * nprocs/nfile);
|
|
dump.cpp: fcluster = static_cast<int> ((bigint) fileprocnext * nfile/nprocs);
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump.cpp:/* ----------------------------------------------------------------------
|
|
dump.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_custom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:// customize by adding keyword
|
|
dump_custom.cpp:// also customize compute_atom_property.cpp
|
|
dump_custom.cpp:enum{INT,DOUBLE,STRING,BIGINT}; // same as in DumpCFG
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: // expand args if any have wildcard character "*"
|
|
dump_custom.cpp: // ok to include trailing optional args,
|
|
dump_custom.cpp: // so long as they do not have "*" between square brackets
|
|
dump_custom.cpp: // nfield may be shrunk below if extra optional args exist
|
|
dump_custom.cpp: // allocate field vectors
|
|
dump_custom.cpp: // computes, fixes, variables which the dump accesses
|
|
dump_custom.cpp: // process attributes
|
|
dump_custom.cpp: // ioptional = start of additional optional args in expanded args
|
|
dump_custom.cpp: // noptional = # of optional args
|
|
dump_custom.cpp: // reset nfield to subtract off optional args
|
|
dump_custom.cpp: // reset ioptional to what it would be in original arg list
|
|
dump_custom.cpp: // only dump image and dump movie styles process optional args,
|
|
dump_custom.cpp: // they do not use expanded earg list
|
|
dump_custom.cpp: // atom selection arrays
|
|
dump_custom.cpp: // default element name for all types = C
|
|
dump_custom.cpp: // setup format strings
|
|
dump_custom.cpp: // setup column string
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: // if wildcard expansion occurred, free earg memory from expand_args()
|
|
dump_custom.cpp: // could not do in constructor, b/c some derived classes process earg
|
|
dump_custom.cpp: // check nfix in case all fixes have already been deleted
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: // format = copy of default or user-specified line format
|
|
dump_custom.cpp: // tokenize the format string and add space at end of each format element
|
|
dump_custom.cpp: // if user-specified int/float format exists, use it instead
|
|
dump_custom.cpp: // if user-specified column format exists, use it instead
|
|
dump_custom.cpp: // lo priority = line, medium priority = int/float, hi priority = column
|
|
dump_custom.cpp: // setup boundary string
|
|
dump_custom.cpp: // setup function ptrs
|
|
dump_custom.cpp: // find current ptr for each compute,fix,variable
|
|
dump_custom.cpp: // check that fix frequency is acceptable
|
|
dump_custom.cpp: // set index and check validity of region
|
|
dump_custom.cpp: // open single file, one time only
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: // grow choose and variable vbuf arrays if needed
|
|
dump_custom.cpp: // invoke Computes for per-atom quantities
|
|
dump_custom.cpp: // only if within a run or minimize
|
|
dump_custom.cpp: // else require that computes are current
|
|
dump_custom.cpp: // this prevents a compute from being invoked by the WriteDump class
|
|
dump_custom.cpp: // evaluate atom-style Variables for per-atom quantities
|
|
dump_custom.cpp: // choose all local atoms for output
|
|
dump_custom.cpp: // un-choose if not in group
|
|
dump_custom.cpp: // un-choose if not in region
|
|
dump_custom.cpp: // un-choose if any threshold criterion isn't met
|
|
dump_custom.cpp: // customize by adding to if statement
|
|
dump_custom.cpp: double invxprd = 1.0/domain->xprd;
|
|
dump_custom.cpp: double invyprd = 1.0/domain->yprd;
|
|
dump_custom.cpp: double invzprd = 1.0/domain->zprd;
|
|
dump_custom.cpp: double invxprd = 1.0/domain->xprd;
|
|
dump_custom.cpp: double invyprd = 1.0/domain->yprd;
|
|
dump_custom.cpp: double invzprd = 1.0/domain->zprd;
|
|
dump_custom.cpp: } else if (thresh_array[ithresh] == MUMAG) {//Magnetic properties
|
|
dump_custom.cpp: // unselect atoms that don't meet threshold criterion
|
|
dump_custom.cpp: // compare to single value or values stored in threshfix
|
|
dump_custom.cpp: // copy ptr attribute into thresh_fix if this is first comparison
|
|
dump_custom.cpp: // update values stored in threshfix
|
|
dump_custom.cpp: // compress choose flags into clist
|
|
dump_custom.cpp: // nchoose = # of selected atoms
|
|
dump_custom.cpp: // clist[i] = local index of each selected atom
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: // customize by adding to if statement
|
|
dump_custom.cpp: } else if (strcmp(arg[iarg],"mumag") == 0) {//Magnetic properties
|
|
dump_custom.cpp: // compute value = c_ID
|
|
dump_custom.cpp: // if no trailing [], then arg is set to 0, else arg is int between []
|
|
dump_custom.cpp: // fix value = f_ID
|
|
dump_custom.cpp: // if no trailing [], then arg is set to 0, else arg is between []
|
|
dump_custom.cpp: // variable value = v_name
|
|
dump_custom.cpp: // custom per-atom floating point value = d_ID
|
|
dump_custom.cpp: // custom per-atom integer value = i_ID
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: // just clear format_column_user allocated by this dump child class
|
|
dump_custom.cpp: // replace "d" in format_int_user with bigint format specifier
|
|
dump_custom.cpp: // use of &str[1] removes leading '%' from BIGINT_FORMAT string
|
|
dump_custom.cpp: // grow threshold arrays
|
|
dump_custom.cpp: // set attribute type of threshold
|
|
dump_custom.cpp: // customize by adding to if statement
|
|
dump_custom.cpp: //Magnetic quantities
|
|
dump_custom.cpp: // compute value = c_ID
|
|
dump_custom.cpp: // if no trailing [], then arg is set to 0, else arg is between []
|
|
dump_custom.cpp: // must grow field2index and argindex arrays, since access is beyond nfield
|
|
dump_custom.cpp: // fix value = f_ID
|
|
dump_custom.cpp: // if no trailing [], then arg is set to 0, else arg is between []
|
|
dump_custom.cpp: // must grow field2index and argindex arrays, since access is beyond nfield
|
|
dump_custom.cpp: // variable value = v_ID
|
|
dump_custom.cpp: // must grow field2index and argindex arrays, since access is beyond nfield
|
|
dump_custom.cpp: // custom per atom floating point value = d_ID
|
|
dump_custom.cpp: // must grow field2index and argindex arrays, since access is beyond nfield
|
|
dump_custom.cpp: // custom per atom integer value = i_ID
|
|
dump_custom.cpp: // must grow field2index and argindex arrays, since access is beyond nfield
|
|
dump_custom.cpp: // set operation type of threshold
|
|
dump_custom.cpp: // set threshold value as number or special LAST keyword
|
|
dump_custom.cpp: // create FixStore to hold LAST values, should work with restart
|
|
dump_custom.cpp: // id = dump-ID + nthreshlast + DUMP_STORE, fix group = dump group
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: if (flag_custom[index] == 0) { // integer
|
|
dump_custom.cpp: } else if (flag_custom[index] == 1) { // double
|
|
dump_custom.cpp:/* ----------------------------------------------------------------------
|
|
dump_custom.cpp:------------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: double invxprd = 1.0/domain->xprd;
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: double invyprd = 1.0/domain->yprd;
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: double invzprd = 1.0/domain->zprd;
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: double invxprd = 1.0/domain->xprd;
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: double invyprd = 1.0/domain->yprd;
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp: double invzprd = 1.0/domain->zprd;
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp://Magnetic quantities
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_custom.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ----------------------------------------------------------------------
|
|
dump_dcd.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_dcd.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_dcd.cpp:------------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ----------------------------------------------------------------------
|
|
dump_dcd.cpp:------------------------------------------------------------------------- */
|
|
dump_dcd.cpp:// necessary to set SEEK params b/c MPI-2 messes with these settings
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp: // allocate global array for atom coords
|
|
dump_dcd.cpp: if (n > static_cast<bigint>(MAXSMALLINT/3/sizeof(float)))
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp: // check that dump frequency has not changed and is not a variable
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp: // first time, write header for entire file
|
|
dump_dcd.cpp: // dim[] = size and angle cosines of orthogonal or triclinic box
|
|
dump_dcd.cpp: // dim[0] = a = length of unit cell vector along x-axis
|
|
dump_dcd.cpp: // dim[1] = gamma = cosine of angle between a and b
|
|
dump_dcd.cpp: // dim[2] = b = length of unit cell vector in xy-plane
|
|
dump_dcd.cpp: // dim[3] = beta = cosine of angle between a and c
|
|
dump_dcd.cpp: // dim[4] = alpha = cosine of angle between b and c
|
|
dump_dcd.cpp: // dim[5] = c = length of final unit cell vector
|
|
dump_dcd.cpp: // 48 = 6 doubles
|
|
dump_dcd.cpp: dim[4] = (h[5]*h[4] + h[1]*h[3]) / blen/clen; // alpha
|
|
dump_dcd.cpp: dim[3] = (h[0]*h[4]) / alen/clen; // beta
|
|
dump_dcd.cpp: dim[1] = (h[0]*h[5]) / alen/blen; // gamma
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp: // copy buf atom coords into 3 global arrays
|
|
dump_dcd.cpp: // if last chunk of atoms in this snapshot, write global arrays to file
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ----------------------------------------------------------------------
|
|
dump_dcd.cpp:------------------------------------------------------------------------- */
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp: // write coords
|
|
dump_dcd.cpp: // update NFILE and NSTEP fields in DCD header
|
|
dump_dcd.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_dcd.cpp: fwrite_int32(fp,0); // NFILE = # of snapshots in file
|
|
dump_dcd.cpp: fwrite_int32(fp,ntimestep); // START = timestep of first snapshot
|
|
dump_dcd.cpp: fwrite_int32(fp,nevery_save); // SKIP = interval between snapshots
|
|
dump_dcd.cpp: fwrite_int32(fp,ntimestep); // NSTEP = timestep of last snapshot
|
|
dump_dcd.cpp: fwrite_int32(fp,0); // NAMD writes NSTEP or ISTART
|
|
dump_dcd.cpp: fwrite_int32(fp,24); // pretend to be Charmm version 24
|
|
dump_dcd.cpp: fwrite_int32(fp,natoms); // number of atoms in each snapshot
|
|
dump_image.cpp:/* ----------------------------------------------------------------------
|
|
dump_image.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_image.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_image.cpp:------------------------------------------------------------------------- */
|
|
dump_image.cpp:enum{SPHERE,LINE,TRI}; // also in some Body and Fix child classes
|
|
dump_image.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_image.cpp: // force binary flag on to avoid corrupted output on Windows
|
|
dump_image.cpp: // set filetype based on filename suffix
|
|
dump_image.cpp: // atom color,diameter settings
|
|
dump_image.cpp: // create Image class with single colormap for atoms
|
|
dump_image.cpp: // change defaults for 2d
|
|
dump_image.cpp: // set defaults for optional args
|
|
dump_image.cpp: // parse optional args
|
|
dump_image.cpp: theta *= MY_PI/180.0;
|
|
dump_image.cpp: phi *= MY_PI/180.0;
|
|
dump_image.cpp: // error checks and setup for lineflag, triflag, bodyflag, fixflag
|
|
dump_image.cpp: // allocate image buffer now that image size is known
|
|
dump_image.cpp: // communication neede for bonds colored by atoms
|
|
dump_image.cpp: // additional defaults for dump_modify options
|
|
dump_image.cpp: // viewflag = DYNAMIC if any view parameter is dynamic
|
|
dump_image.cpp: // local data
|
|
dump_image.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_image.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_image.cpp: // check variables
|
|
dump_image.cpp: // set up type -> element mapping
|
|
dump_image.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_image.cpp: // open new file
|
|
dump_image.cpp: // reset box center and view parameters if dynamic
|
|
dump_image.cpp: // nme = # of atoms this proc will contribute to dump
|
|
dump_image.cpp: // pack buf with color & diameter
|
|
dump_image.cpp: // set minmax color range if using dynamic atom color map
|
|
dump_image.cpp: if (flag) error->all(FLERR,"Invalid color map min/max values");
|
|
dump_image.cpp: // create image on each proc, then merge them
|
|
dump_image.cpp: // write image file
|
|
dump_image.cpp:/* ----------------------------------------------------------------------
|
|
dump_image.cpp:------------------------------------------------------------------------- */
|
|
dump_image.cpp:/* ----------------------------------------------------------------------
|
|
dump_image.cpp:------------------------------------------------------------------------- */
|
|
dump_image.cpp:/* ----------------------------------------------------------------------
|
|
dump_image.cpp:------------------------------------------------------------------------- */
|
|
dump_image.cpp: // view direction theta and phi
|
|
dump_image.cpp: theta *= MY_PI/180.0;
|
|
dump_image.cpp: phi *= MY_PI/180.0;
|
|
dump_image.cpp: // up vector
|
|
dump_image.cpp: // zoom and perspective
|
|
dump_image.cpp: // remainder of view setup is internal to Image class
|
|
dump_image.cpp:/* ----------------------------------------------------------------------
|
|
dump_image.cpp:------------------------------------------------------------------------- */
|
|
dump_image.cpp: // render my atoms
|
|
dump_image.cpp: // do not draw if line,tri,body keywords enabled and atom is one of those
|
|
dump_image.cpp: // render atoms that are lines
|
|
dump_image.cpp: // render atoms that are triangles
|
|
dump_image.cpp: // tstyle = 1 for tri only, 2 for edges only, 3 for both
|
|
dump_image.cpp: // render atoms that are bodies
|
|
dump_image.cpp: // render bonds for my atoms
|
|
dump_image.cpp: // both atoms in bond must be selected for bond to be rendered
|
|
dump_image.cpp: // if newton_bond is off, only render bond once
|
|
dump_image.cpp: // render bond in 2 pieces if crosses periodic boundary
|
|
dump_image.cpp: // if bond is deleted (type = 0), do not render
|
|
dump_image.cpp: // if bond is turned off (type < 0), still render
|
|
dump_image.cpp: // communicate choose flag for ghost atoms to know if they are selected
|
|
dump_image.cpp: // if bcolor/bdiam = ATOM, setup bufcopy to comm atom color/diam attributes
|
|
dump_image.cpp: // draw cylinder in 2 pieces if bcolor = ATOM
|
|
dump_image.cpp: // or bond crosses periodic boundary
|
|
dump_image.cpp: // render objects provided by a fix
|
|
dump_image.cpp: // no fix draws spheres yet
|
|
dump_image.cpp: // render outline of my sub-box, orthogonal or triclinic
|
|
dump_image.cpp: // render outline of simulation box, orthogonal or triclinic
|
|
dump_image.cpp: // render XYZ axes in red/green/blue
|
|
dump_image.cpp: // offset by 10% of box size and scale by axeslen
|
|
dump_image.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_image.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_image.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_image.cpp: // ptrs = list of ncount colornames separated by '/'
|
|
dump_image.cpp: while ((nextptr = strchr(ptr,'/'))) {
|
|
dump_image.cpp: ptrs[ncount++] = strtok(arg[2],"/");
|
|
dump_image.cpp: while ((ptrs[ncount++] = strtok(NULL,"/")));
|
|
dump_image.cpp: // assign each of ncount colors in round-robin fashion to types
|
|
dump_image.cpp: // ptrs = list of ncount colornames separated by '/'
|
|
dump_image.cpp: while ((nextptr = strchr(ptr,'/'))) {
|
|
dump_image.cpp: ptrs[ncount++] = strtok(arg[2],"/");
|
|
dump_image.cpp: while ((ptrs[ncount++] = strtok(NULL,"/")));
|
|
dump_image.cpp: // assign each of ncount colors in round-robin fashion to types
|
|
dump_local.cpp:/* ----------------------------------------------------------------------
|
|
dump_local.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_local.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_local.cpp:------------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp: // expand args if any have wildcard character "*"
|
|
dump_local.cpp: // allocate field vectors
|
|
dump_local.cpp: // computes & fixes which the dump accesses
|
|
dump_local.cpp: // process attributes
|
|
dump_local.cpp: // setup format strings
|
|
dump_local.cpp: // setup column string
|
|
dump_local.cpp: // setup default label string
|
|
dump_local.cpp: // if wildcard expansion occurred, free earg memory from exapnd_args()
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp: // format = copy of default or user-specified line format
|
|
dump_local.cpp: // tokenize the format string and add space at end of each format element
|
|
dump_local.cpp: // if user-specified int/float format exists, use it instead
|
|
dump_local.cpp: // if user-specified column format exists, use it instead
|
|
dump_local.cpp: // lo priority = line, medium priority = int/float, hi priority = column
|
|
dump_local.cpp: // setup boundary string
|
|
dump_local.cpp: // setup function ptrs
|
|
dump_local.cpp: // find current ptr for each compute,fix,variable
|
|
dump_local.cpp: // check that fix frequency is acceptable
|
|
dump_local.cpp: // open single file, one time only
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp: // invoke Computes for local quantities
|
|
dump_local.cpp: // only if within a run or minimize
|
|
dump_local.cpp: // else require that computes are current
|
|
dump_local.cpp: // this prevents a compute from being invoked by the WriteDump class
|
|
dump_local.cpp: // nmine = # of local values I contribute
|
|
dump_local.cpp: // must be consistent for all input fields
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ----------------------------------------------------------------------
|
|
dump_local.cpp:------------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp: // customize by adding to if statement
|
|
dump_local.cpp: // compute value = c_ID
|
|
dump_local.cpp: // if no trailing [], then arg is set to 0, else arg is int between []
|
|
dump_local.cpp: // fix value = f_ID
|
|
dump_local.cpp: // if no trailing [], then arg is set to 0, else arg is between []
|
|
dump_local.cpp:/* ----------------------------------------------------------------------
|
|
dump_local.cpp:------------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ----------------------------------------------------------------------
|
|
dump_local.cpp:------------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ----------------------------------------------------------------------
|
|
dump_local.cpp:------------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ----------------------------------------------------------------------
|
|
dump_local.cpp:------------------------------------------------------------------------- */
|
|
dump_local.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_movie.cpp:/* ----------------------------------------------------------------------
|
|
dump_movie.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_movie.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_movie.cpp:------------------------------------------------------------------------- */
|
|
dump_movie.cpp:/* ----------------------------------------------------------------------
|
|
dump_movie.cpp:------------------------------------------------------------------------- */
|
|
dump_movie.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_movie.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_movie.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_movie.cpp: // initialize image style circumventing multifile check
|
|
dump_movie.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ----------------------------------------------------------------------
|
|
dump_xyz.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
dump_xyz.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
dump_xyz.cpp:------------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp: // format = copy of default or user-specified line format
|
|
dump_xyz.cpp: // initialize typenames array to be backward compatible by default
|
|
dump_xyz.cpp: // a 32-bit int can be maximally 10 digits plus sign
|
|
dump_xyz.cpp: // setup function ptr
|
|
dump_xyz.cpp: // open single file, one time only
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ----------------------------------------------------------------------
|
|
dump_xyz.cpp:------------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
dump_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
error.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ---------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
error.cpp:/* ----------------------------------------------------------------------
|
|
error.cpp:------------------------------------------------------------------------- */
|
|
finish.cpp:/* ----------------------------------------------------------------------
|
|
finish.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
finish.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
finish.cpp:------------------------------------------------------------------------- */
|
|
finish.cpp:// local function prototypes, code at end of file
|
|
finish.cpp:/* ---------------------------------------------------------------------- */
|
|
finish.cpp:/* ---------------------------------------------------------------------- */
|
|
finish.cpp: // recompute natoms in case atoms have been lost
|
|
finish.cpp: // choose flavors of statistical output
|
|
finish.cpp: // flag determines caller
|
|
finish.cpp: // flag = 0 = just loop summary
|
|
finish.cpp: // flag = 1 = dynamics or minimization
|
|
finish.cpp: // flag = 2 = PRD
|
|
finish.cpp: // flag = 3 = TAD
|
|
finish.cpp: // flag = 4 = HYPER
|
|
finish.cpp: // turn off neighflag for Kspace partition of verlet/split integrator
|
|
finish.cpp: strncmp(update->integrate_style,"verlet/split",12) == 0 &&
|
|
finish.cpp: // loop stats
|
|
finish.cpp: // overall loop time
|
|
finish.cpp: time_loop = tmp/nprocs;
|
|
finish.cpp: cpu_loop = tmp/nprocs;
|
|
finish.cpp: if (time_loop > 0.0) cpu_loop = cpu_loop/time_loop*100.0;
|
|
finish.cpp: // Gromacs/NAMD-style performance metric for suitable unit settings
|
|
finish.cpp: double t_step = ((double) time_loop) / ((double) update->nsteps);
|
|
finish.cpp: double step_t = 1.0/t_step;
|
|
finish.cpp: double tau_day = 24.0*3600.0 / t_step * update->dt / one_fs;
|
|
finish.cpp: const char perf[] = "Performance: %.3f tau/day, %.3f timesteps/s\n";
|
|
finish.cpp: double hrs_ns = t_step / update->dt * 1000000.0 * one_fs / 3600.0;
|
|
finish.cpp: double ns_day = 24.0*3600.0 / t_step * update->dt / one_fs/1000000.0;
|
|
finish.cpp: "Performance: %.3f ns/day, %.3f hours/ns, %.3f timesteps/s\n";
|
|
finish.cpp: // CPU use on MPI tasks and OpenMP threads
|
|
finish.cpp: // avoid division by zero for very short runs
|
|
finish.cpp: // get "Other" wall time for later use
|
|
finish.cpp: // minimization stats
|
|
finish.cpp: // PRD stats
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: if (me == 0) { // XXXX: replica comm, replica output
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: // TAD stats
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: // HYPER stats
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: time,time/time_loop*100.0);
|
|
finish.cpp: // further timing breakdowns
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: if (screen) fprintf(screen,fmt,time,time/time_loop*100.0);
|
|
finish.cpp: if (logfile) fprintf(logfile,fmt,time,time/time_loop*100.0);
|
|
finish.cpp: "\nThread timing breakdown (MPI rank %d):\nTotal threaded time %.4g / %.1f%%\n";
|
|
finish.cpp: // print thread breakdown only with full timer detail
|
|
finish.cpp: thr_total /= (double) nthreads;
|
|
finish.cpp: fprintf(screen,thr_hdr_fmt,me,thr_total,thr_total/time_loop*100.0);
|
|
finish.cpp: fprintf(logfile,thr_hdr_fmt,me,thr_total,thr_total/time_loop*100.0);
|
|
finish.cpp: "since GPU/CPU overlap is enabled\n"
|
|
finish.cpp: // FFT timing statistics
|
|
finish.cpp: // time3d,time1d = total time during run for 3d and 1d FFTs
|
|
finish.cpp: // loop on timing() until nsample FFTs require at least 1.0 CPU sec
|
|
finish.cpp: // time_kspace may be 0.0 if another partition is doing Kspace
|
|
finish.cpp: time3d = nsteps * time3d / nsample;
|
|
finish.cpp: time3d = tmp/nprocs;
|
|
finish.cpp: time1d = nsteps * time1d / nsample;
|
|
finish.cpp: time1d = tmp/nprocs;
|
|
finish.cpp: time_kspace = tmp/nprocs;
|
|
finish.cpp: if (time_kspace) fraction = time3d/time_kspace*100.0;
|
|
finish.cpp: flop3 = nfft*nflops/1.0e9/(time3d/nsteps);
|
|
finish.cpp: flop1 = nfft*nflops/1.0e9/(time1d/nsteps);
|
|
finish.cpp: // find a non-skip neighbor list containing half pairwise interactions
|
|
finish.cpp: // count neighbors in that list for stats purposes
|
|
finish.cpp: // allow it to be Kokkos neigh list as well
|
|
finish.cpp: // find a non-skip neighbor list containing full pairwise interactions
|
|
finish.cpp: // count neighbors in that list for stats purposes
|
|
finish.cpp: // allow it to be Kokkos neigh list as well
|
|
finish.cpp: fprintf(screen,"Ave neighs/atom = %g\n",nall/atom->natoms);
|
|
finish.cpp: fprintf(screen,"Ave special neighs/atom = %g\n",
|
|
finish.cpp: nspec_all/atom->natoms);
|
|
finish.cpp: fprintf(logfile,"Ave neighs/atom = %g\n",nall/atom->natoms);
|
|
finish.cpp: fprintf(logfile,"Ave special neighs/atom = %g\n",
|
|
finish.cpp: nspec_all/atom->natoms);
|
|
finish.cpp:/* ---------------------------------------------------------------------- */
|
|
finish.cpp: ave = tmp/ntotal;
|
|
finish.cpp: else m = static_cast<int> ((data[i]-min)/del * nhisto);
|
|
finish.cpp:/* ---------------------------------------------------------------------- */
|
|
finish.cpp: if (time/time_loop < 0.001) // insufficient timer resolution!
|
|
finish.cpp: time_cpu = time_cpu / time;
|
|
finish.cpp: time = tmp/nprocs;
|
|
finish.cpp: time_sq = tmp/nprocs;
|
|
finish.cpp: time_cpu = tmp/nprocs*100.0;
|
|
finish.cpp: // % variance from the average as measure of load imbalance
|
|
finish.cpp: if ((time > 0.001) && ((time_sq/time - time) > 1.0e-10))
|
|
finish.cpp: time_sq = sqrt(time_sq/time - time)*100.0;
|
|
finish.cpp: tmp = time/time_loop*100.0;
|
|
finish.cpp: time_loop = 100.0/time_loop;
|
|
finish.cpp:/* ---------------------------------------------------------------------- */
|
|
finish.cpp: time_avg /= nthreads;
|
|
finish.cpp: time_std /= nthreads;
|
|
finish.cpp: time_total /= nthreads;
|
|
finish.cpp: if ((time_avg > 0.001) && ((time_std/time_avg -time_avg) > 1.0e-10))
|
|
finish.cpp: time_std = sqrt(time_std/time_avg - time_avg)*100.0;
|
|
finish.cpp: time_avg/time_total*100.0);
|
|
finish.cpp: time_avg/time_total*100.0);
|
|
fix_adapt.cpp:/* ----------------------------------------------------------------------
|
|
fix_adapt.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_adapt.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_adapt.cpp:------------------------------------------------------------------------- */
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp: // count # of adaptations
|
|
fix_adapt.cpp: // parse keywords
|
|
fix_adapt.cpp: // optional keywords
|
|
fix_adapt.cpp: // allocate pair style arrays
|
|
fix_adapt.cpp: // allocate bond style arrays:
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp: // check nfix in case all fixes have already been deleted
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp:/* ----------------------------------------------------------------------
|
|
fix_adapt.cpp:------------------------------------------------------------------------- */
|
|
fix_adapt.cpp: // new id = fix-ID + FIX_STORE_ATTRIBUTE
|
|
fix_adapt.cpp: // new fix group = group for this fix
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp: // allow a dynamic group only if ATOM attribute not used
|
|
fix_adapt.cpp: // setup and error checks
|
|
fix_adapt.cpp: // if ad->pstyle has trailing sub-style annotation ":N",
|
|
fix_adapt.cpp: // strip it for pstyle arg to pair_match() and set nsub = N
|
|
fix_adapt.cpp: // this should work for appended suffixes as well
|
|
fix_adapt.cpp: strcat(psuffix,"/");
|
|
fix_adapt.cpp: // for pair styles only parameters that are 2-d arrays in atom types or
|
|
fix_adapt.cpp: // scalars are supported
|
|
fix_adapt.cpp: // if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style
|
|
fix_adapt.cpp: strcmp(force->pair_style,"hybrid/overlay") == 0) {
|
|
fix_adapt.cpp: strcat(bsuffix,"/");
|
|
fix_adapt.cpp: // for bond styles, use a vector
|
|
fix_adapt.cpp: // make copy of original pair/bond array values
|
|
fix_adapt.cpp: // fixes that store initial per-atom values
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_adapt.cpp:/* ----------------------------------------------------------------------
|
|
fix_adapt.cpp:------------------------------------------------------------------------- */
|
|
fix_adapt.cpp: // variable evaluation may invoke computes so wrap with clear/add
|
|
fix_adapt.cpp: // set global scalar or type pair array values
|
|
fix_adapt.cpp: // set bond type array values:
|
|
fix_adapt.cpp: // set kspace scale factor
|
|
fix_adapt.cpp: // set per atom values, also make changes for ghost atoms
|
|
fix_adapt.cpp: // reset radius from diameter
|
|
fix_adapt.cpp: // also scale rmass to new value
|
|
fix_adapt.cpp: density = rmass[i] / (4.0*MY_PI/3.0 *
|
|
fix_adapt.cpp: rmass[i] = 4.0*MY_PI/3.0 *
|
|
fix_adapt.cpp: // re-initialize pair styles if any PAIR settings were changed
|
|
fix_adapt.cpp: // ditto for bond styles if any BOND setitings were changes
|
|
fix_adapt.cpp: // this resets other coeffs that may depend on changed values,
|
|
fix_adapt.cpp: // and also offset and tail corrections
|
|
fix_adapt.cpp: // reset KSpace charges if charges have changed
|
|
fix_adapt.cpp:/* ----------------------------------------------------------------------
|
|
fix_adapt.cpp:------------------------------------------------------------------------- */
|
|
fix_adapt.cpp: density = rmass[i] / (4.0*MY_PI/3.0 *
|
|
fix_adapt.cpp: rmass[i] = 4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i] * density;
|
|
fix_adapt.cpp:/* ----------------------------------------------------------------------
|
|
fix_adapt.cpp:------------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_addforce.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_addforce.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_addforce.cpp:------------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp: // optional args
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp: // check variables
|
|
fix_addforce.cpp: // set index and check validity of region
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp: // update region if necessary
|
|
fix_addforce.cpp: // reallocate sforce array if necessary
|
|
fix_addforce.cpp: // foriginal[0] = "potential energy" for added force
|
|
fix_addforce.cpp: // foriginal[123] = force on atoms before extra force added
|
|
fix_addforce.cpp: // constant force
|
|
fix_addforce.cpp: // potential energy = - x dot f in unwrapped coords
|
|
fix_addforce.cpp: // variable force, wrap with clear/add
|
|
fix_addforce.cpp: // potential energy = evar if defined, else 0.0
|
|
fix_addforce.cpp: // wrap with clear/add
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_addforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_addforce.cpp:------------------------------------------------------------------------- */
|
|
fix_addforce.cpp: // only sum across procs one time
|
|
fix_addforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_addforce.cpp:------------------------------------------------------------------------- */
|
|
fix_addforce.cpp: // only sum across procs one time
|
|
fix_addforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_addforce.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_ave_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp: if (narg < 7) error->all(FLERR,"Illegal fix ave/atom command");
|
|
fix_ave_atom.cpp: // expand args if any have wildcard character "*"
|
|
fix_ave_atom.cpp: // this can reset nvalues
|
|
fix_ave_atom.cpp: // parse values
|
|
fix_ave_atom.cpp: error->all(FLERR,"Illegal fix ave/atom command");
|
|
fix_ave_atom.cpp: } else error->all(FLERR,"Illegal fix ave/atom command");
|
|
fix_ave_atom.cpp: // if wildcard expansion occurred, free earg memory from exapnd_args()
|
|
fix_ave_atom.cpp: // setup and error check
|
|
fix_ave_atom.cpp: // for fix inputs, check that fix frequency is acceptable
|
|
fix_ave_atom.cpp: error->all(FLERR,"Illegal fix ave/atom command");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Illegal fix ave/atom command");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Compute ID for fix ave/atom does not exist");
|
|
fix_ave_atom.cpp: "Fix ave/atom compute does not calculate per-atom values");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ave/atom compute does not "
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ave/atom compute does not "
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ave/atom compute array is accessed out-of-range");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ID for fix ave/atom does not exist");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ave/atom fix does not calculate per-atom values");
|
|
fix_ave_atom.cpp: "Fix ave/atom fix does not calculate a per-atom vector");
|
|
fix_ave_atom.cpp: "Fix ave/atom fix does not calculate a per-atom array");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ave/atom fix array is accessed out-of-range");
|
|
fix_ave_atom.cpp: "Fix for fix ave/atom not computed at compatible time");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Variable name for fix ave/atom does not exist");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ave/atom variable is not atom-style variable");
|
|
fix_ave_atom.cpp: // this fix produces either a per-atom vector or array
|
|
fix_ave_atom.cpp: // perform initial allocation of atom-based array
|
|
fix_ave_atom.cpp: // register with Atom class
|
|
fix_ave_atom.cpp: // zero the array since dump may access it on timestep 0
|
|
fix_ave_atom.cpp: // zero the array since a variable may access it before first run
|
|
fix_ave_atom.cpp: // nvalid = next step on which end_of_step does something
|
|
fix_ave_atom.cpp: // add nvalid to all computes that store invocation times
|
|
fix_ave_atom.cpp: // since don't know a priori which are invoked by this fix
|
|
fix_ave_atom.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_ave_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp: // unregister callback to this fix from Atom class
|
|
fix_ave_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp: // set indices and check validity of all computes,fixes,variables
|
|
fix_ave_atom.cpp: error->all(FLERR,"Compute ID for fix ave/atom does not exist");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Fix ID for fix ave/atom does not exist");
|
|
fix_ave_atom.cpp: error->all(FLERR,"Variable name for fix ave/atom does not exist");
|
|
fix_ave_atom.cpp: // need to reset nvalid if nvalid < ntimestep b/c minimize was performed
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp: // skip if not step which requires doing something
|
|
fix_ave_atom.cpp: // error check if timestep was reset in an invalid manner
|
|
fix_ave_atom.cpp: error->all(FLERR,"Invalid timestep reset for fix ave/atom");
|
|
fix_ave_atom.cpp: // zero if first step
|
|
fix_ave_atom.cpp: // accumulate results of attributes,computes,fixes,variables to local copy
|
|
fix_ave_atom.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_ave_atom.cpp: // invoke compute if not previously invoked
|
|
fix_ave_atom.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_atom.cpp: // evaluate atom-style variable
|
|
fix_ave_atom.cpp: // final argument = 1 sums result to array
|
|
fix_ave_atom.cpp: // done if irepeat < nrepeat
|
|
fix_ave_atom.cpp: // else reset irepeat and nvalid
|
|
fix_ave_atom.cpp: // average the final result for the Nfreq timestep
|
|
fix_ave_atom.cpp: array[i][m] /= repeat;
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp: memory->grow(array,nmax,nvalues,"fix_ave/atom:array");
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_atom.cpp: bigint nvalid = (update->ntimestep/peratom_freq)*peratom_freq + peratom_freq;
|
|
fix_ave_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_ave_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_ave_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: if (narg < 7) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: // expand args if any have wildcard character "*"
|
|
fix_ave_chunk.cpp: // parse values until one isn't recognized
|
|
fix_ave_chunk.cpp: } else if (strcmp(arg[iarg],"density/number") == 0) {
|
|
fix_ave_chunk.cpp: } else if (strcmp(arg[iarg],"density/mass") == 0) {
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (nvalues == 0) error->all(FLERR,"No values in fix ave/chunk command");
|
|
fix_ave_chunk.cpp: // optional args
|
|
fix_ave_chunk.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: } else error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: else error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: sprintf(str,"Cannot open fix ave/chunk file %s",arg[iarg+1]);
|
|
fix_ave_chunk.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: } else error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: // setup and error check
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Illegal fix ave/chunk command");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Compute ID for fix ave/chunk does not exist");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ave/chunk compute does not "
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ave/chunk compute does not "
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ave/chunk compute does not "
|
|
fix_ave_chunk.cpp: "Fix ave/chunk compute vector is accessed out-of-range");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ID for fix ave/chunk does not exist");
|
|
fix_ave_chunk.cpp: "Fix ave/chunk fix does not calculate per-atom values");
|
|
fix_ave_chunk.cpp: "Fix ave/chunk fix does not calculate a per-atom vector");
|
|
fix_ave_chunk.cpp: "Fix ave/chunk fix does not calculate a per-atom array");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ave/chunk fix vector is accessed out-of-range");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Variable name for fix ave/chunk does not exist");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ave/chunk variable is not atom-style variable");
|
|
fix_ave_chunk.cpp: // increment lock counter in compute chunk/atom
|
|
fix_ave_chunk.cpp: // only if nrepeat > 1 or ave = RUNNING/WINDOW,
|
|
fix_ave_chunk.cpp: // so that locking spans multiple timesteps
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for fix ave/chunk");
|
|
fix_ave_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ave/chunk does not use chunk/atom compute");
|
|
fix_ave_chunk.cpp: // print file comment lines
|
|
fix_ave_chunk.cpp: // if wildcard expansion occurred, free earg memory from expand_args()
|
|
fix_ave_chunk.cpp: // wait to do this until after file comment lines are printed
|
|
fix_ave_chunk.cpp: // this fix produces a global array
|
|
fix_ave_chunk.cpp: // size_array_rows is variable and set by allocate()
|
|
fix_ave_chunk.cpp: // initializations
|
|
fix_ave_chunk.cpp: // nvalid = next step on which end_of_step does something
|
|
fix_ave_chunk.cpp: // add nvalid to all computes that store invocation times
|
|
fix_ave_chunk.cpp: // since don't know a priori which are invoked by this fix
|
|
fix_ave_chunk.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_ave_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: // decrement lock counter in compute chunk/atom, it if still exists
|
|
fix_ave_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: // set indices and check validity of all computes,fixes,variables
|
|
fix_ave_chunk.cpp: // check that fix frequency is acceptable
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for fix ave/chunk");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Compute ID for fix ave/chunk does not exist");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Fix ID for fix ave/chunk does not exist");
|
|
fix_ave_chunk.cpp: "Fix for fix ave/chunk not computed at compatible time");
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Variable name for fix ave/chunk does not exist");
|
|
fix_ave_chunk.cpp: // need to reset nvalid if nvalid < ntimestep b/c minimize was performed
|
|
fix_ave_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_chunk.cpp: do not call setup_chunks(), even though fix ave/spatial called setup_bins()
|
|
fix_ave_chunk.cpp: b/c could cause nchunk to change if Nfreq epoch crosses 2 runs
|
|
fix_ave_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: // skip if not step which requires doing something
|
|
fix_ave_chunk.cpp: // error check if timestep was reset in an invalid manner
|
|
fix_ave_chunk.cpp: error->all(FLERR,"Invalid timestep reset for fix ave/chunk");
|
|
fix_ave_chunk.cpp: // first sample within single Nfreq epoch
|
|
fix_ave_chunk.cpp: // zero out arrays that accumulate over many samples, but not across epochs
|
|
fix_ave_chunk.cpp: // invoke setup_chunks() to determine current nchunk
|
|
fix_ave_chunk.cpp: // re-allocate per-chunk arrays if needed
|
|
fix_ave_chunk.cpp: // invoke lock() in two cases:
|
|
fix_ave_chunk.cpp: // if nrepeat > 1: so nchunk cannot change until Nfreq epoch is over,
|
|
fix_ave_chunk.cpp: // will be unlocked on last repeat of this Nfreq
|
|
fix_ave_chunk.cpp: // if ave = RUNNING/WINDOW and not yet locked:
|
|
fix_ave_chunk.cpp: // set forever, will be unlocked in fix destructor
|
|
fix_ave_chunk.cpp: // wrap setup_chunks in clearstep/addstep b/c it may invoke computes
|
|
fix_ave_chunk.cpp: // both nevery and nfreq are future steps,
|
|
fix_ave_chunk.cpp: // since call below to cchunk->ichunk()
|
|
fix_ave_chunk.cpp: // does not re-invoke internal cchunk compute on this same step
|
|
fix_ave_chunk.cpp: // if any DENSITY requested, invoke setup_chunks() on each sampling step
|
|
fix_ave_chunk.cpp: // nchunk will not change but bin volumes might, e.g. for NPT simulation
|
|
fix_ave_chunk.cpp: // zero out arrays for one sample
|
|
fix_ave_chunk.cpp: // compute chunk/atom assigns atoms to chunk IDs
|
|
fix_ave_chunk.cpp: // extract ichunk index vector from compute
|
|
fix_ave_chunk.cpp: // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
|
|
fix_ave_chunk.cpp: // wrap compute_ichunk in clearstep/addstep b/c it may invoke computes
|
|
fix_ave_chunk.cpp: // perform the computation for one sample
|
|
fix_ave_chunk.cpp: // count # of atoms in each bin
|
|
fix_ave_chunk.cpp: // accumulate results of attributes,computes,fixes,variables to local copy
|
|
fix_ave_chunk.cpp: // sum within each chunk, only include atoms in fix group
|
|
fix_ave_chunk.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_ave_chunk.cpp: // V,F adds velocities,forces to values
|
|
fix_ave_chunk.cpp: // DENSITY_NUMBER adds 1 to values
|
|
fix_ave_chunk.cpp: // DENSITY_MASS or MASS adds mass to values
|
|
fix_ave_chunk.cpp: // TEMPERATURE adds KE to values
|
|
fix_ave_chunk.cpp: // subtract and restore velocity bias if requested
|
|
fix_ave_chunk.cpp: // COMPUTE adds its scalar or vector component to values
|
|
fix_ave_chunk.cpp: // invoke compute if not previously invoked
|
|
fix_ave_chunk.cpp: // FIX adds its scalar or vector component to values
|
|
fix_ave_chunk.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_chunk.cpp: // VARIABLE adds its per-atom quantities to values
|
|
fix_ave_chunk.cpp: // evaluate atom-style variable
|
|
fix_ave_chunk.cpp: memory->create(varatom,maxvar,"ave/chunk:varatom");
|
|
fix_ave_chunk.cpp: // process the current sample
|
|
fix_ave_chunk.cpp: // if normflag = ALL, accumulate values,count separately to many
|
|
fix_ave_chunk.cpp: // if normflag = SAMPLE, one = value/count, accumulate one to many
|
|
fix_ave_chunk.cpp: // count is MPI summed here, value is MPI summed below across samples
|
|
fix_ave_chunk.cpp: // exception is TEMPERATURE: normalize by DOF
|
|
fix_ave_chunk.cpp: // exception is DENSITY_NUMBER:
|
|
fix_ave_chunk.cpp: // normalize by bin volume, not by atom count
|
|
fix_ave_chunk.cpp: // exception is DENSITY_MASS:
|
|
fix_ave_chunk.cpp: // scale by mv2d, normalize by bin volume, not by atom count
|
|
fix_ave_chunk.cpp: // exception is scaleflag = NOSCALE (norm = NONE):
|
|
fix_ave_chunk.cpp: // no normalize by atom count
|
|
fix_ave_chunk.cpp: // check last so other options can take precedence
|
|
fix_ave_chunk.cpp: values_many[m][j] += mvv2e*values_one[m][j] /
|
|
fix_ave_chunk.cpp: if (volflag == SCALAR) values_one[m][j] /= chunk_volume_scalar;
|
|
fix_ave_chunk.cpp: else values_one[m][j] /= chunk_volume_vec[m];
|
|
fix_ave_chunk.cpp: if (volflag == SCALAR) values_one[m][j] /= chunk_volume_scalar;
|
|
fix_ave_chunk.cpp: else values_one[m][j] /= chunk_volume_vec[m];
|
|
fix_ave_chunk.cpp: values_many[m][j] += values_one[m][j]/count_many[m];
|
|
fix_ave_chunk.cpp: // done if irepeat < nrepeat
|
|
fix_ave_chunk.cpp: // else reset irepeat and nvalid
|
|
fix_ave_chunk.cpp: // unlock compute chunk/atom at end of Nfreq epoch
|
|
fix_ave_chunk.cpp: // do not unlock if ave = RUNNING or WINDOW
|
|
fix_ave_chunk.cpp: // time average across samples
|
|
fix_ave_chunk.cpp: // if normflag = ALL, final is total value / total count
|
|
fix_ave_chunk.cpp: // exception is TEMPERATURE: normalize by DOF for total count
|
|
fix_ave_chunk.cpp: // exception is DENSITY_NUMBER:
|
|
fix_ave_chunk.cpp: // normalize by final bin_volume and repeat, not by total count
|
|
fix_ave_chunk.cpp: // exception is DENSITY_MASS:
|
|
fix_ave_chunk.cpp: // scale by mv2d, normalize by bin volume and repeat, not by total count
|
|
fix_ave_chunk.cpp: // exception is scaleflag == NOSCALE:
|
|
fix_ave_chunk.cpp: // normalize by repeat, not by total count
|
|
fix_ave_chunk.cpp: // check last so other options can take precedence
|
|
fix_ave_chunk.cpp: // if normflag = SAMPLE, final is sum of ave / repeat
|
|
fix_ave_chunk.cpp: values_sum[m][j] *= mvv2e / ((cdof + adof*count_sum[m]) * boltz);
|
|
fix_ave_chunk.cpp: if (volflag == SCALAR) values_sum[m][j] /= chunk_volume_scalar;
|
|
fix_ave_chunk.cpp: else values_sum[m][j] /= chunk_volume_vec[m];
|
|
fix_ave_chunk.cpp: values_sum[m][j] /= repeat;
|
|
fix_ave_chunk.cpp: if (volflag == SCALAR) values_sum[m][j] /= chunk_volume_scalar;
|
|
fix_ave_chunk.cpp: else values_sum[m][j] /= chunk_volume_vec[m];
|
|
fix_ave_chunk.cpp: values_sum[m][j] *= mv2d/repeat;
|
|
fix_ave_chunk.cpp: values_sum[m][j] /= repeat;
|
|
fix_ave_chunk.cpp: values_sum[m][j] /= count_sum[m];
|
|
fix_ave_chunk.cpp: count_sum[m] /= repeat;
|
|
fix_ave_chunk.cpp: for (j = 0; j < nvalues; j++) values_sum[m][j] /= repeat;
|
|
fix_ave_chunk.cpp: count_sum[m] /= repeat;
|
|
fix_ave_chunk.cpp: // if ave = ONE, only single Nfreq timestep value is needed
|
|
fix_ave_chunk.cpp: // if ave = RUNNING, combine with all previous Nfreq timestep values
|
|
fix_ave_chunk.cpp: // if ave = WINDOW, comine with nwindow most recent Nfreq timestep values
|
|
fix_ave_chunk.cpp: // output result to file
|
|
fix_ave_chunk.cpp: fprintf(fp," %d %g",m+1,count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp: count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp: count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp: coord[m][0],coord[m][1],coord[m][2],count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp," %d %d %g",m+1,chunkID[m],count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp: count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp: count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp: coord[j-1][1],coord[j-1][2],count_total[m]/normcount);
|
|
fix_ave_chunk.cpp: fprintf(fp,format,values_total[m][i]/normcount);
|
|
fix_ave_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: // reallocate chunk arrays if needed
|
|
fix_ave_chunk.cpp: memory->grow(count_one,nchunk,"ave/chunk:count_one");
|
|
fix_ave_chunk.cpp: memory->grow(count_many,nchunk,"ave/chunk:count_many");
|
|
fix_ave_chunk.cpp: memory->grow(count_sum,nchunk,"ave/chunk:count_sum");
|
|
fix_ave_chunk.cpp: memory->grow(count_total,nchunk,"ave/chunk:count_total");
|
|
fix_ave_chunk.cpp: memory->grow(values_one,nchunk,nvalues,"ave/chunk:values_one");
|
|
fix_ave_chunk.cpp: memory->grow(values_many,nchunk,nvalues,"ave/chunk:values_many");
|
|
fix_ave_chunk.cpp: memory->grow(values_sum,nchunk,nvalues,"ave/chunk:values_sum");
|
|
fix_ave_chunk.cpp: memory->grow(values_total,nchunk,nvalues,"ave/chunk:values_total");
|
|
fix_ave_chunk.cpp: // only allocate count and values list for ave = WINDOW
|
|
fix_ave_chunk.cpp: memory->create(count_list,nwindow,nchunk,"ave/chunk:count_list");
|
|
fix_ave_chunk.cpp: "ave/chunk:values_list");
|
|
fix_ave_chunk.cpp: // reinitialize regrown count/values total since they accumulate
|
|
fix_ave_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: if (j < 0) return count_total[i]/normcount;
|
|
fix_ave_chunk.cpp: return values_total[i][j]/normcount;
|
|
fix_ave_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: bigint nvalid = (update->ntimestep/nfreq)*nfreq + nfreq;
|
|
fix_ave_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_chunk.cpp: double bytes = maxvar * sizeof(double); // varatom
|
|
fix_ave_chunk.cpp: bytes += 4*maxchunk * sizeof(double); // count one,many,sum,total
|
|
fix_ave_chunk.cpp: bytes += nvalues*maxchunk * sizeof(double); // values one,many,sum,total
|
|
fix_ave_chunk.cpp: bytes += nwindow*maxchunk * sizeof(double); // count_list
|
|
fix_ave_chunk.cpp: bytes += nwindow*maxchunk*nvalues * sizeof(double); // values_list
|
|
fix_ave_correlate.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_correlate.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_ave_correlate.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_ave_correlate.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_correlate.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp: if (narg < 7) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: // expand args if any have wildcard character "*"
|
|
fix_ave_correlate.cpp: // parse values until one isn't recognized
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: // optional args
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: else if (strcmp(arg[iarg+1],"auto/upper") == 0) type = AUTOUPPER;
|
|
fix_ave_correlate.cpp: else if (strcmp(arg[iarg+1],"auto/lower") == 0) type = AUTOLOWER;
|
|
fix_ave_correlate.cpp: else error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: else error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: sprintf(str,"Cannot open fix ave/correlate file %s",arg[iarg+1]);
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: } else error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: // setup and error check
|
|
fix_ave_correlate.cpp: // for fix inputs, check that fix frequency is acceptable
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Illegal fix ave/correlate command");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Compute ID for fix ave/correlate does not exist");
|
|
fix_ave_correlate.cpp: "Fix ave/correlate compute does not calculate a scalar");
|
|
fix_ave_correlate.cpp: "Fix ave/correlate compute does not calculate a vector");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Fix ave/correlate compute vector "
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Fix ID for fix ave/correlate does not exist");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Fix ave/correlate fix does not calculate a scalar");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Fix ave/correlate fix does not calculate a vector");
|
|
fix_ave_correlate.cpp: "Fix ave/correlate fix vector is accessed out-of-range");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Fix for fix ave/correlate "
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Variable name for fix ave/correlate does not exist");
|
|
fix_ave_correlate.cpp: "Fix ave/correlate variable is not equal-style variable");
|
|
fix_ave_correlate.cpp: "Fix ave/correlate variable is not vector-style variable");
|
|
fix_ave_correlate.cpp: // npair = # of correlation pairs to calculate
|
|
fix_ave_correlate.cpp: if (type == UPPER || type == LOWER) npair = nvalues*(nvalues-1)/2;
|
|
fix_ave_correlate.cpp: if (type == AUTOUPPER || type == AUTOLOWER) npair = nvalues*(nvalues+1)/2;
|
|
fix_ave_correlate.cpp: // print file comment lines
|
|
fix_ave_correlate.cpp: // if wildcard expansion occurred, free earg memory from expand_args()
|
|
fix_ave_correlate.cpp: // wait to do this until after file comment lines are printed
|
|
fix_ave_correlate.cpp: // allocate and initialize memory for averaging
|
|
fix_ave_correlate.cpp: // set count and corr to zero since they accumulate
|
|
fix_ave_correlate.cpp: // also set save versions to zero in case accessed via compute_array()
|
|
fix_ave_correlate.cpp: memory->create(values,nrepeat,nvalues,"ave/correlate:values");
|
|
fix_ave_correlate.cpp: memory->create(count,nrepeat,"ave/correlate:count");
|
|
fix_ave_correlate.cpp: memory->create(save_count,nrepeat,"ave/correlate:save_count");
|
|
fix_ave_correlate.cpp: memory->create(corr,nrepeat,npair,"ave/correlate:corr");
|
|
fix_ave_correlate.cpp: memory->create(save_corr,nrepeat,npair,"ave/correlate:save_corr");
|
|
fix_ave_correlate.cpp: // this fix produces a global array
|
|
fix_ave_correlate.cpp: // nvalid = next step on which end_of_step does something
|
|
fix_ave_correlate.cpp: // add nvalid to all computes that store invocation times
|
|
fix_ave_correlate.cpp: // since don't know a priori which are invoked by this fix
|
|
fix_ave_correlate.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_ave_correlate.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp: // set current indices for all computes,fixes,variables
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Compute ID for fix ave/correlate does not exist");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Fix ID for fix ave/correlate does not exist");
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Variable name for fix ave/correlate does not exist");
|
|
fix_ave_correlate.cpp: // need to reset nvalid if nvalid < ntimestep b/c minimize was performed
|
|
fix_ave_correlate.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_correlate.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp: // skip if not step which requires doing something
|
|
fix_ave_correlate.cpp: // error check if timestep was reset in an invalid manner
|
|
fix_ave_correlate.cpp: error->all(FLERR,"Invalid timestep reset for fix ave/correlate");
|
|
fix_ave_correlate.cpp: // accumulate results of computes,fixes,variables to origin
|
|
fix_ave_correlate.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_ave_correlate.cpp: // lastindex = index in values ring of latest time sample
|
|
fix_ave_correlate.cpp: // invoke compute if not previously invoked
|
|
fix_ave_correlate.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_correlate.cpp: // evaluate equal-style or vector-style variable
|
|
fix_ave_correlate.cpp: // fistindex = index in values ring of earliest time sample
|
|
fix_ave_correlate.cpp: // nsample = number of time samples in values ring
|
|
fix_ave_correlate.cpp: // calculate all Cij() enabled by latest values
|
|
fix_ave_correlate.cpp: // save results in save_count and save_corr
|
|
fix_ave_correlate.cpp: save_corr[i][j] = prefactor*corr[i][j]/count[i];
|
|
fix_ave_correlate.cpp: // output result to file
|
|
fix_ave_correlate.cpp: fprintf(fp," %g",prefactor*corr[i][j]/count[i]);
|
|
fix_ave_correlate.cpp: // zero accumulation if requested
|
|
fix_ave_correlate.cpp: // recalculate Cij(0)
|
|
fix_ave_correlate.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_correlate.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_correlate.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_correlate.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_correlate.cpp: if (nvalid % nevery) nvalid = (nvalid/nevery)*nevery + nevery;
|
|
fix_aveforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_aveforce.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_aveforce.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_aveforce.cpp:------------------------------------------------------------------------- */
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp: // optional args
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp: // check variables
|
|
fix_aveforce.cpp: // set index and check validity of region
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp: // update region if necessary
|
|
fix_aveforce.cpp: // sum forces on participating atoms
|
|
fix_aveforce.cpp: // average the force on participating atoms
|
|
fix_aveforce.cpp: // add in requested amount, computed via variable evaluation if necessary
|
|
fix_aveforce.cpp: // wrap variable evaluation with clear/add
|
|
fix_aveforce.cpp: fave[0] = foriginal_all[0]/ncount + xvalue;
|
|
fix_aveforce.cpp: fave[1] = foriginal_all[1]/ncount + yvalue;
|
|
fix_aveforce.cpp: fave[2] = foriginal_all[2]/ncount + zvalue;
|
|
fix_aveforce.cpp: // set force of all participating atoms to same value
|
|
fix_aveforce.cpp: // only for active dimensions
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp: // ave + extra force on selected RESPA level
|
|
fix_aveforce.cpp: // just ave on all other levels
|
|
fix_aveforce.cpp: fave[0] = foriginal_all[0]/ncount;
|
|
fix_aveforce.cpp: fave[1] = foriginal_all[1]/ncount;
|
|
fix_aveforce.cpp: fave[2] = foriginal_all[2]/ncount;
|
|
fix_aveforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_aveforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_aveforce.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_ave_histo.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp: if (narg < 10) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: // scan values to count them
|
|
fix_ave_histo.cpp: // then read options so know mode = SCALAR/VECTOR before re-reading values
|
|
fix_ave_histo.cpp: if (nvalues == 0) error->all(FLERR,"No values in fix ave/histo command");
|
|
fix_ave_histo.cpp: // expand args if any have wildcard character "*"
|
|
fix_ave_histo.cpp: // this can reset nvalues
|
|
fix_ave_histo.cpp: // parse values
|
|
fix_ave_histo.cpp: error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: // if wildcard expansion occurred, free earg memory from expand_args()
|
|
fix_ave_histo.cpp: // setup and error check
|
|
fix_ave_histo.cpp: // kind = inputs are all global, or all per-atom, or all local
|
|
fix_ave_histo.cpp: // for fix inputs, check that fix frequency is acceptable
|
|
fix_ave_histo.cpp: error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (lo >= hi) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (nbins <= 0) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (c_id < 0) error->all(FLERR,"Fix ave/histo input is invalid compute");
|
|
fix_ave_histo.cpp: else error->all(FLERR,"Fix ave/histo input is invalid compute");
|
|
fix_ave_histo.cpp: if (f_id < 0) error->all(FLERR,"Fix ave/histo input is invalid fix");
|
|
fix_ave_histo.cpp: else error->all(FLERR,"Fix ave/histo input is invalid fix");
|
|
fix_ave_histo.cpp: if (ivariable < 0) error->all(FLERR,"Fix ave/histo input is invalid variable");
|
|
fix_ave_histo.cpp: else error->all(FLERR,"Fix ave/histo input is invalid variable");
|
|
fix_ave_histo.cpp: "Fix ave/histo inputs are not all global, peratom, or local");
|
|
fix_ave_histo.cpp: "Fix ave/histo cannot input per-atom values in scalar mode");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo cannot input local values in scalar mode");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Compute ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute does not calculate a global scalar");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute does not calculate a global vector");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute vector is accessed out-of-range");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Compute ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute does not calculate a global vector");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute does not calculate a global array");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute array is accessed out-of-range");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Compute ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute does not calculate per-atom values");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo compute does not "
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo compute does not "
|
|
fix_ave_histo.cpp: "Fix ave/histo compute array is accessed out-of-range");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Compute ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: "Fix ave/histo compute does not calculate local values");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo compute does not "
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo compute does not "
|
|
fix_ave_histo.cpp: "Fix ave/histo compute array is accessed out-of-range");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: "Fix ave/histo fix does not calculate a global scalar");
|
|
fix_ave_histo.cpp: "Fix ave/histo fix does not calculate a global vector");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix vector is accessed out-of-range");
|
|
fix_ave_histo.cpp: "Fix for fix ave/histo not computed at compatible time");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: "Fix ave/histo fix does not calculate a global vector");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix does not calculate a global array");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range");
|
|
fix_ave_histo.cpp: "Fix for fix ave/histo not computed at compatible time");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: "Fix ave/histo fix does not calculate per-atom values");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix does not "
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix does not "
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range");
|
|
fix_ave_histo.cpp: "Fix for fix ave/histo not computed at compatible time");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix does not calculate local values");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix does not "
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix does not "
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range");
|
|
fix_ave_histo.cpp: "Fix for fix ave/histo not computed at compatible time");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Variable name for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo variable is not equal-style variable");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo variable is not vector-style variable");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Variable name for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo variable is not vector-style variable");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo variable cannot be indexed");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Variable name for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo variable is not atom-style variable");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ave/histo variable cannot be indexed");
|
|
fix_ave_histo.cpp: // print file comment lines
|
|
fix_ave_histo.cpp: else fprintf(fp,"# Bin Coord Count Count/Total\n");
|
|
fix_ave_histo.cpp: // allocate and initialize memory for averaging
|
|
fix_ave_histo.cpp: memory->create(stats_list,nwindow,4,"ave/histo:stats_list");
|
|
fix_ave_histo.cpp: memory->create(bin_list,nwindow,nbins,"ave/histo:bin_list");
|
|
fix_ave_histo.cpp: // initializations
|
|
fix_ave_histo.cpp: // set coord to bin centers
|
|
fix_ave_histo.cpp: binsize = (hi-lo)/(nbins-2);
|
|
fix_ave_histo.cpp: bininv = 1.0/binsize;
|
|
fix_ave_histo.cpp: binsize = (hi-lo)/nbins;
|
|
fix_ave_histo.cpp: bininv = 1.0/binsize;
|
|
fix_ave_histo.cpp: // nvalid = next step on which end_of_step does something
|
|
fix_ave_histo.cpp: // add nvalid to all computes that store invocation times
|
|
fix_ave_histo.cpp: // since don't know a priori which are invoked by this fix
|
|
fix_ave_histo.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_ave_histo.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp: // set current indices for all computes,fixes,variables
|
|
fix_ave_histo.cpp: error->all(FLERR,"Compute ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Fix ID for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: error->all(FLERR,"Variable name for fix ave/histo does not exist");
|
|
fix_ave_histo.cpp: // need to reset nvalid if nvalid < ntimestep b/c minimize was performed
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp: // skip if not step which requires doing something
|
|
fix_ave_histo.cpp: // error check if timestep was reset in an invalid manner
|
|
fix_ave_histo.cpp: error->all(FLERR,"Invalid timestep reset for fix ave/histo");
|
|
fix_ave_histo.cpp: // zero if first step
|
|
fix_ave_histo.cpp: // accumulate results of computes,fixes,variables to local copy
|
|
fix_ave_histo.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_ave_histo.cpp: // atom attributes
|
|
fix_ave_histo.cpp: // invoke compute if not previously invoked
|
|
fix_ave_histo.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_histo.cpp: // evaluate equal-style or vector-style or atom-style variable
|
|
fix_ave_histo.cpp: memory->create(vector,maxatom,"ave/histo:vector");
|
|
fix_ave_histo.cpp: // done if irepeat < nrepeat
|
|
fix_ave_histo.cpp: // else reset irepeat and nvalid
|
|
fix_ave_histo.cpp: // merge histogram stats across procs if necessary
|
|
fix_ave_histo.cpp: // if ave = ONE, only single Nfreq timestep value is needed
|
|
fix_ave_histo.cpp: // if ave = RUNNING, combine with all previous Nfreq timestep values
|
|
fix_ave_histo.cpp: // if ave = WINDOW, combine with nwindow most recent Nfreq timestep values
|
|
fix_ave_histo.cpp: // output result to file
|
|
fix_ave_histo.cpp: i+1,coord[i],bin_total[i],bin_total[i]/stats_total[0]);
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp: else if (stats_total[0] != 0.0) return bin_total[i]/stats_total[0];
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp: // option defaults
|
|
fix_ave_histo.cpp: // optional args
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: sprintf(str,"Cannot open fix ave/histo file %s",arg[iarg+1]);
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: else error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: else error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: else error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp: } else error->all(FLERR,"Illegal fix ave/histo command");
|
|
fix_ave_histo.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo.cpp: bigint nvalid = (update->ntimestep/nfreq)*nfreq + nfreq;
|
|
fix_ave_histo_weight.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo_weight.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_ave_histo_weight.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_ave_histo_weight.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo_weight.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo_weight.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo_weight.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_histo_weight.cpp: // nvalues = 2 required for histo/weight
|
|
fix_ave_histo_weight.cpp: if (nvalues != 2) error->all(FLERR,"Illegal fix ave/histo/weight command");
|
|
fix_ave_histo_weight.cpp: // check that length of 2 values is the same
|
|
fix_ave_histo_weight.cpp: error->all(FLERR,"Fix ave/histo/weight value and weight vector "
|
|
fix_ave_histo_weight.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_histo_weight.cpp: // skip if not step which requires doing something
|
|
fix_ave_histo_weight.cpp: // error check if timestep was reset in an invalid manner
|
|
fix_ave_histo_weight.cpp: error->all(FLERR,"Invalid timestep reset for fix ave/histo");
|
|
fix_ave_histo_weight.cpp: // zero if first step
|
|
fix_ave_histo_weight.cpp: // first calculate weight factors, then bin single value
|
|
fix_ave_histo_weight.cpp: // accumulate results of computes,fixes,variables to local copy
|
|
fix_ave_histo_weight.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_ave_histo_weight.cpp: // calculate weight factors which are 2nd value (i = 1)
|
|
fix_ave_histo_weight.cpp: // atom attributes
|
|
fix_ave_histo_weight.cpp: // invoke compute if not previously invoked
|
|
fix_ave_histo_weight.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_histo_weight.cpp: error->all(FLERR,"Fix ave/histo/weight option not yet supported");
|
|
fix_ave_histo_weight.cpp: // NOTE: need to allocate local storage
|
|
fix_ave_histo_weight.cpp: // evaluate equal-style variable
|
|
fix_ave_histo_weight.cpp: memory->create(vector,maxatom,"ave/histo/weight:vector");
|
|
fix_ave_histo_weight.cpp: // bin values using weights, values are 1st value (i = 0)
|
|
fix_ave_histo_weight.cpp: // atom attributes
|
|
fix_ave_histo_weight.cpp: // invoke compute if not previously invoked
|
|
fix_ave_histo_weight.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_histo_weight.cpp: // evaluate equal-style variable
|
|
fix_ave_histo_weight.cpp: memory->create(vector,maxatom,"ave/histo/weight:vector");
|
|
fix_ave_histo_weight.cpp: // code beyond this point is identical to FixAveHisto
|
|
fix_ave_histo_weight.cpp: // done if irepeat < nrepeat
|
|
fix_ave_histo_weight.cpp: // else reset irepeat and nvalid
|
|
fix_ave_histo_weight.cpp: // merge histogram stats across procs if necessary
|
|
fix_ave_histo_weight.cpp: // if ave = ONE, only single Nfreq timestep value is needed
|
|
fix_ave_histo_weight.cpp: // if ave = RUNNING, combine with all previous Nfreq timestep values
|
|
fix_ave_histo_weight.cpp: // if ave = WINDOW, combine with nwindow most recent Nfreq timestep values
|
|
fix_ave_histo_weight.cpp: // output result to file
|
|
fix_ave_histo_weight.cpp: i+1,coord[i],bin_total[i],bin_total[i]/stats_total[0]);
|
|
fix_ave_histo_weight.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo_weight.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo_weight.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo_weight.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_histo_weight.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_histo_weight.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_ave_time.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: if (narg < 7) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: // scan values to count them
|
|
fix_ave_time.cpp: // then read options so know mode = SCALAR/VECTOR before re-reading values
|
|
fix_ave_time.cpp: if (nvalues == 0) error->all(FLERR,"No values in fix ave/time command");
|
|
fix_ave_time.cpp: // expand args if any have wildcard character "*"
|
|
fix_ave_time.cpp: // this can reset nvalues
|
|
fix_ave_time.cpp: // parse values
|
|
fix_ave_time.cpp: error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: // set off columns now that nvalues is finalized
|
|
fix_ave_time.cpp: error->all(FLERR,"Invalid fix ave/time off column");
|
|
fix_ave_time.cpp: // setup and error check
|
|
fix_ave_time.cpp: // for fix inputs, check that fix frequency is acceptable
|
|
fix_ave_time.cpp: // set variable_length if any compute is variable length
|
|
fix_ave_time.cpp: error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: error->all(FLERR,"Compute ID for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time compute does not calculate a scalar");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time compute does not calculate a vector");
|
|
fix_ave_time.cpp: "Fix ave/time compute vector is accessed out-of-range");
|
|
fix_ave_time.cpp: error->all(FLERR,"Compute ID for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time compute does not calculate a vector");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time compute does not calculate an array");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time compute array is accessed out-of-range");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ID for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix does not calculate a scalar");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix does not calculate a vector");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix vector cannot be variable length");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix vector is accessed out-of-range");
|
|
fix_ave_time.cpp: "Fix for fix ave/time not computed at compatible time");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ID for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix does not calculate a vector");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix does not calculate an array");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix array cannot be variable length");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time fix array is accessed out-of-range");
|
|
fix_ave_time.cpp: "Fix for fix ave/time not computed at compatible time");
|
|
fix_ave_time.cpp: error->all(FLERR,"Variable name for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time variable is not equal-style variable");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time variable is not vector-style variable");
|
|
fix_ave_time.cpp: error->all(FLERR,"Variable name for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time variable is not vector-style variable");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time mode vector variable cannot be indexed");
|
|
fix_ave_time.cpp: // all_variable_length = 1 if all values are variable length
|
|
fix_ave_time.cpp: // any_variable_length = 1 if any values are variable length
|
|
fix_ave_time.cpp: // if VECTOR mode, check that all columns are same length
|
|
fix_ave_time.cpp: // nrows = # of rows in output array
|
|
fix_ave_time.cpp: // if all columns are variable length, just set nrows = 1 for now
|
|
fix_ave_time.cpp: memory->create(column,nrows,"ave/time:column");
|
|
fix_ave_time.cpp: // enable locking of row count by this fix for computes of variable length
|
|
fix_ave_time.cpp: // only if nrepeat > 1 or ave = RUNNING/WINDOW,
|
|
fix_ave_time.cpp: // so that locking spans multiple timesteps
|
|
fix_ave_time.cpp: // print file comment lines
|
|
fix_ave_time.cpp: // for mode = VECTOR, cannot use arg to print
|
|
fix_ave_time.cpp: // since array args may have been expanded to multiple vectors
|
|
fix_ave_time.cpp: // if wildcard expansion occurred, free earg memory from expand_args()
|
|
fix_ave_time.cpp: // wait to do this until after file comment lines are printed
|
|
fix_ave_time.cpp: // allocate memory for averaging
|
|
fix_ave_time.cpp: memory->create(vector_list,nwindow,nvalues,"ave/time:vector_list");
|
|
fix_ave_time.cpp: // this fix produces either a global scalar or vector or array
|
|
fix_ave_time.cpp: // SCALAR mode produces either a scalar or vector
|
|
fix_ave_time.cpp: // VECTOR mode produces either a vector or array
|
|
fix_ave_time.cpp: // intensive/extensive flags set by compute,fix,variable that produces value
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time cannot set output array "
|
|
fix_ave_time.cpp: "intensive/extensive from these inputs");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time cannot set output array "
|
|
fix_ave_time.cpp: "intensive/extensive from these inputs");
|
|
fix_ave_time.cpp: // initializations
|
|
fix_ave_time.cpp: // set vector_total to zero since it accumulates
|
|
fix_ave_time.cpp: // array_total already zeroed in allocate_arrays
|
|
fix_ave_time.cpp: // nvalid = next step on which end_of_step does something
|
|
fix_ave_time.cpp: // add nvalid to all computes that store invocation times
|
|
fix_ave_time.cpp: // since don't know a priori which are invoked by this fix
|
|
fix_ave_time.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_ave_time.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: // decrement lock counter in compute chunk/atom, it if still exists
|
|
fix_ave_time.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_time.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: // set current indices for all computes,fixes,variables
|
|
fix_ave_time.cpp: error->all(FLERR,"Compute ID for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ID for fix ave/time does not exist");
|
|
fix_ave_time.cpp: error->all(FLERR,"Variable name for fix ave/time does not exist");
|
|
fix_ave_time.cpp: // need to reset nvalid if nvalid < ntimestep b/c minimize was performed
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: // skip if not step which requires doing something
|
|
fix_ave_time.cpp: // error check if timestep was reset in an invalid manner
|
|
fix_ave_time.cpp: error->all(FLERR,"Invalid timestep reset for fix ave/time");
|
|
fix_ave_time.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: // zero if first sample within single Nfreq epoch
|
|
fix_ave_time.cpp: // if any input is variable length, initialize current length
|
|
fix_ave_time.cpp: // check for exceeding length is done below
|
|
fix_ave_time.cpp: // accumulate results of computes,fixes,variables to local copy
|
|
fix_ave_time.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_ave_time.cpp: // invoke compute if not previously invoked
|
|
fix_ave_time.cpp: // insure no out-of-range access to variable-length compute vector
|
|
fix_ave_time.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_time.cpp: // evaluate equal-style or vector-style variable
|
|
fix_ave_time.cpp: // insure no out-of-range access to vector-style variable
|
|
fix_ave_time.cpp: // add value to vector or just set directly if offcol is set
|
|
fix_ave_time.cpp: // done if irepeat < nrepeat
|
|
fix_ave_time.cpp: // else reset irepeat and nvalid
|
|
fix_ave_time.cpp: // average the final result for the Nfreq timestep
|
|
fix_ave_time.cpp: if (offcol[i] == 0) vector[i] /= repeat;
|
|
fix_ave_time.cpp: // if ave = ONE, only single Nfreq timestep value is needed
|
|
fix_ave_time.cpp: // if ave = RUNNING, combine with all previous Nfreq timestep values
|
|
fix_ave_time.cpp: // if ave = WINDOW, combine with nwindow most recent Nfreq timestep values
|
|
fix_ave_time.cpp: // insure any columns with offcol set are effectively set to last value
|
|
fix_ave_time.cpp: // output result to file
|
|
fix_ave_time.cpp: for (i = 0; i < nvalues; i++) fprintf(fp,format,vector_total[i]/norm);
|
|
fix_ave_time.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: // first sample within single Nfreq epoch
|
|
fix_ave_time.cpp: // zero out arrays that accumulate over many samples, but not across epochs
|
|
fix_ave_time.cpp: // invoke setup_chunks() to determine current nchunk
|
|
fix_ave_time.cpp: // re-allocate per-chunk arrays if needed
|
|
fix_ave_time.cpp: // invoke lock() in two cases:
|
|
fix_ave_time.cpp: // if nrepeat > 1: so nchunk cannot change until Nfreq epoch is over,
|
|
fix_ave_time.cpp: // will be unlocked on last repeat of this Nfreq
|
|
fix_ave_time.cpp: // if ave = RUNNING/WINDOW and not yet locked:
|
|
fix_ave_time.cpp: // set forever, will be unlocked in fix destructor
|
|
fix_ave_time.cpp: // wrap setup_chunks in clearstep/addstep b/c it may invoke computes
|
|
fix_ave_time.cpp: // both nevery and nfreq are future steps,
|
|
fix_ave_time.cpp: // since call below to cchunk->ichunk()
|
|
fix_ave_time.cpp: // does not re-invoke internal cchunk compute on this same step
|
|
fix_ave_time.cpp: memory->create(column,nrows,"ave/time:column");
|
|
fix_ave_time.cpp: // accumulate results of computes,fixes,variables to local copy
|
|
fix_ave_time.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_ave_time.cpp: // invoke compute if not previously invoked
|
|
fix_ave_time.cpp: // access fix fields, guaranteed to be ready
|
|
fix_ave_time.cpp: // evaluate vector-style variable
|
|
fix_ave_time.cpp: // insure nvec = nrows, else error
|
|
fix_ave_time.cpp: // could be different on this timestep than when column_length(1) set nrows
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time vector-style variable changed length");
|
|
fix_ave_time.cpp: // add columns of values to array or just set directly if offcol is set
|
|
fix_ave_time.cpp: // done if irepeat < nrepeat
|
|
fix_ave_time.cpp: // else reset irepeat and nvalid
|
|
fix_ave_time.cpp: // unlock any variable length computes at end of Nfreq epoch
|
|
fix_ave_time.cpp: // do not unlock if ave = RUNNING or WINDOW
|
|
fix_ave_time.cpp: // average the final result for the Nfreq timestep
|
|
fix_ave_time.cpp: if (offcol[j] == 0) array[i][j] /= repeat;
|
|
fix_ave_time.cpp: // if ave = ONE, only single Nfreq timestep value is needed
|
|
fix_ave_time.cpp: // if ave = RUNNING, combine with all previous Nfreq timestep values
|
|
fix_ave_time.cpp: // if ave = WINDOW, combine with nwindow most recent Nfreq timestep values
|
|
fix_ave_time.cpp: // insure any columns with offcol set are effectively set to last value
|
|
fix_ave_time.cpp: // output result to file
|
|
fix_ave_time.cpp: for (j = 0; j < nvalues; j++) fprintf(fp,format,array_total[i][j]/norm);
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: // determine nrows for static values
|
|
fix_ave_time.cpp: // variables are always varlen = 1, so dynamic
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time columns are inconsistent lengths");
|
|
fix_ave_time.cpp: // determine new nrows for dynamic values
|
|
fix_ave_time.cpp: // either all must be the same
|
|
fix_ave_time.cpp: // or must match other static values
|
|
fix_ave_time.cpp: // don't need to check if not MODE = VECTOR, just invoke lock_length()
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time columns are inconsistent lengths");
|
|
fix_ave_time.cpp: error->all(FLERR,"Fix ave/time columns are inconsistent lengths");
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: if (norm) return vector_total[0]/norm;
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: if (mode == SCALAR) return vector_total[i]/norm;
|
|
fix_ave_time.cpp: if (mode == VECTOR) return array_total[i][0]/norm;
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: if (norm) return array_total[i][j]/norm;
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: // option defaults
|
|
fix_ave_time.cpp: // optional args
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: sprintf(str,"Cannot open fix ave/time file %s",arg[iarg+1]);
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: else error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: else error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: memory->grow(offlist,noff+1,"ave/time:offlist");
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command");
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command");
|
|
fix_ave_time.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command");
|
|
fix_ave_time.cpp: } else error->all(FLERR,"Illegal fix ave/time command");
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: memory->create(array,nrows,nvalues,"ave/time:array");
|
|
fix_ave_time.cpp: memory->create(array_total,nrows,nvalues,"ave/time:array_total");
|
|
fix_ave_time.cpp: memory->create(array_list,nwindow,nrows,nvalues,"ave/time:array_list");
|
|
fix_ave_time.cpp: // reinitialize regrown array_total since it accumulates
|
|
fix_ave_time.cpp:/* ----------------------------------------------------------------------
|
|
fix_ave_time.cpp:------------------------------------------------------------------------- */
|
|
fix_ave_time.cpp: bigint nvalid = (update->ntimestep/nfreq)*nfreq + nfreq;
|
|
fix_balance.cpp:/* ----------------------------------------------------------------------
|
|
fix_balance.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_balance.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_balance.cpp:------------------------------------------------------------------------- */
|
|
fix_balance.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
fix_balance.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_balance.cpp: // parse required arguments
|
|
fix_balance.cpp: // error checks
|
|
fix_balance.cpp: // create instance of Balance class
|
|
fix_balance.cpp: // if SHIFT, initialize it with params
|
|
fix_balance.cpp: // process remaining optional args via Balance
|
|
fix_balance.cpp: // create instance of Irregular class
|
|
fix_balance.cpp: // only force reneighboring if nevery > 0
|
|
fix_balance.cpp: // compute initial outputs
|
|
fix_balance.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_balance.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_balance.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_balance.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_balance.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_balance.cpp: // compute final imbalance factor if setup_pre_exchange() invoked balancer
|
|
fix_balance.cpp: // this is called at end of run setup, before output
|
|
fix_balance.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_balance.cpp: // do not allow rebalancing twice on same timestep
|
|
fix_balance.cpp: // even if wanted to, can mess up elapsed time in ImbalanceTime
|
|
fix_balance.cpp: // insure atoms are in current box & update box via shrink-wrap
|
|
fix_balance.cpp: // has to be be done before rebalance() invokes Irregular::migrate_atoms()
|
|
fix_balance.cpp: // since it requires atoms be inside simulation box
|
|
fix_balance.cpp: // even though pbc() will be done again in Verlet::run()
|
|
fix_balance.cpp: // no exchange() since doesn't matter if atoms are assigned to correct procs
|
|
fix_balance.cpp: // perform a rebalance if threshold exceeded
|
|
fix_balance.cpp: // next timestep to rebalance
|
|
fix_balance.cpp: if (nevery) next_reneighbor = (update->ntimestep/nevery)*nevery + nevery;
|
|
fix_balance.cpp:/* ----------------------------------------------------------------------
|
|
fix_balance.cpp:------------------------------------------------------------------------- */
|
|
fix_balance.cpp: // return if not a rebalance timestep
|
|
fix_balance.cpp: // do not allow rebalancing twice on same timestep
|
|
fix_balance.cpp: // even if wanted to, can mess up elapsed time in ImbalanceTime
|
|
fix_balance.cpp: // insure atoms are in current box & update box via shrink-wrap
|
|
fix_balance.cpp: // no exchange() since doesn't matter if atoms are assigned to correct procs
|
|
fix_balance.cpp: // perform a rebalance if threshold exceeded
|
|
fix_balance.cpp: // if weight variable is used, wrap weight setting in clear/add compute
|
|
fix_balance.cpp: // next timestep to rebalance
|
|
fix_balance.cpp: if (nevery) next_reneighbor = (update->ntimestep/nevery)*nevery + nevery;
|
|
fix_balance.cpp:/* ----------------------------------------------------------------------
|
|
fix_balance.cpp:------------------------------------------------------------------------- */
|
|
fix_balance.cpp:/* ----------------------------------------------------------------------
|
|
fix_balance.cpp:------------------------------------------------------------------------- */
|
|
fix_balance.cpp: // invoke balancer and reset comm->uniform flag
|
|
fix_balance.cpp: // output of new decomposition
|
|
fix_balance.cpp: // reset proc sub-domains
|
|
fix_balance.cpp: // check and warn if any proc's subbox is smaller than neigh skin
|
|
fix_balance.cpp: // since may lead to lost atoms in exchange()
|
|
fix_balance.cpp: // move atoms to new processors via irregular()
|
|
fix_balance.cpp: // only needed if migrate_check() says an atom moves to far
|
|
fix_balance.cpp: // else allow caller's comm->exchange() to do it
|
|
fix_balance.cpp: // invoke KSpace setup_grid() to adjust to new proc sub-domains
|
|
fix_balance.cpp: // pending triggers pre_neighbor() to compute final imbalance factor
|
|
fix_balance.cpp: // can only be done after atoms migrate in comm->exchange()
|
|
fix_balance.cpp:/* ----------------------------------------------------------------------
|
|
fix_balance.cpp:------------------------------------------------------------------------- */
|
|
fix_balance.cpp:/* ----------------------------------------------------------------------
|
|
fix_balance.cpp:------------------------------------------------------------------------- */
|
|
fix_balance.cpp:/* ----------------------------------------------------------------------
|
|
fix_balance.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_box_relax.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:#define MAX_LIFO_DEPTH 2 // 3 box0 arrays in *.h dimensioned to this
|
|
fix_box_relax.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: if (narg < 5) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: // default values
|
|
fix_box_relax.cpp: // turn on tilt factor scaling, whenever applicable
|
|
fix_box_relax.cpp: // set fixed-point to default = center of cell
|
|
fix_box_relax.cpp: // process keywords
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command for a 2d simulation");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command for a 2d simulation");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command for a 2d simulation");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: else error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: else error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (nreset_h0 < 0) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: else error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: else error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: else error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: } else error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: // error checks
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command for a 2d simulation");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command for a 2d simulation");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax command pressure settings");
|
|
fix_box_relax.cpp: // require periodicity in tensile dimension
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax on a non-periodic dimension");
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax on a non-periodic dimension");
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax on a non-periodic dimension");
|
|
fix_box_relax.cpp: // require periodicity in 2nd dim of off-diagonal tilt component
|
|
fix_box_relax.cpp: "Cannot use fix box/relax on a 2nd non-periodic dimension");
|
|
fix_box_relax.cpp: "Cannot use fix box/relax on a 2nd non-periodic dimension");
|
|
fix_box_relax.cpp: "Cannot use fix box/relax on a 2nd non-periodic dimension");
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax "
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax "
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax "
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax with "
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax with "
|
|
fix_box_relax.cpp: error->all(FLERR,"Cannot use fix box/relax with "
|
|
fix_box_relax.cpp: error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in "
|
|
fix_box_relax.cpp: "fix box/relax with non-triclinic box");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax pressure settings");
|
|
fix_box_relax.cpp: error->all(FLERR,"Invalid fix box/relax pressure settings");
|
|
fix_box_relax.cpp: if (vmax <= 0.0) error->all(FLERR,"Illegal fix box/relax command");
|
|
fix_box_relax.cpp: // pstyle = TRICLINIC if any off-diagonal term is controlled -> 6 dof
|
|
fix_box_relax.cpp: // else pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof
|
|
fix_box_relax.cpp: // else pstyle = ANISO -> 3 dof
|
|
fix_box_relax.cpp: // create a new compute temp style
|
|
fix_box_relax.cpp: // id = fix-ID + temp
|
|
fix_box_relax.cpp: // compute group = all since pressure is always global (group all)
|
|
fix_box_relax.cpp: // and thus its KE/temperature contribution should use group all
|
|
fix_box_relax.cpp: // create a new compute pressure style (virial only)
|
|
fix_box_relax.cpp: // id = fix-ID + press, compute group = all
|
|
fix_box_relax.cpp: // pass id_temp as 4th arg to pressure constructor
|
|
fix_box_relax.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: // delete temperature and pressure if fix created them
|
|
fix_box_relax.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: // set temperature and pressure ptrs
|
|
fix_box_relax.cpp: error->all(FLERR,"Temperature ID for fix box/relax does not exist");
|
|
fix_box_relax.cpp: error->all(FLERR,"Pressure ID for fix box/relax does not exist");
|
|
fix_box_relax.cpp: pv2e = 1.0 / force->nktv2p;
|
|
fix_box_relax.cpp: // detect if any rigid fixes exist so rigid bodies move when box is remapped
|
|
fix_box_relax.cpp: // rfix[] = indices to each fix rigid
|
|
fix_box_relax.cpp: // initial box dimensions
|
|
fix_box_relax.cpp: // hydrostatic target pressure and deviatoric target stress
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: // trigger virial computation on every iteration of minimizer
|
|
fix_box_relax.cpp: // compute energy, forces for each extra degree of freedom
|
|
fix_box_relax.cpp: // returned eng = PV must be in units of energy
|
|
fix_box_relax.cpp: // returned fextra must likewise be in units of energy
|
|
fix_box_relax.cpp: scale = domain->xprd/xprdinit;
|
|
fix_box_relax.cpp: if (p_flag[0]) scalex = domain->xprd/xprdinit;
|
|
fix_box_relax.cpp: if (p_flag[1]) scaley = domain->yprd/yprdinit;
|
|
fix_box_relax.cpp: if (p_flag[2]) scalez = domain->zprd/zprdinit;
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: error->all(FLERR,"Attempt to push beyond stack limit in fix box/relax");
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: error->all(FLERR,"Attempt to pop empty stack in fix box/relax");
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: // if nreset_h0 > 0, reset reference box
|
|
fix_box_relax.cpp: // every nreset_h0 timesteps
|
|
fix_box_relax.cpp: // only needed for deviatoric external stress
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: if (pstyle == ISO) alpha = vmax/fabs(hextra[0]);
|
|
fix_box_relax.cpp: if (p_flag[0]) alpha = MIN(alpha,vmax/fabs(hextra[0]));
|
|
fix_box_relax.cpp: if (p_flag[1]) alpha = MIN(alpha,vmax/fabs(hextra[1]));
|
|
fix_box_relax.cpp: if (p_flag[2]) alpha = MIN(alpha,vmax/fabs(hextra[2]));
|
|
fix_box_relax.cpp: if (p_flag[3]) alpha = MIN(alpha,vmax/fabs(hextra[3]));
|
|
fix_box_relax.cpp: if (p_flag[4]) alpha = MIN(alpha,vmax/fabs(hextra[4]));
|
|
fix_box_relax.cpp: if (p_flag[5]) alpha = MIN(alpha,vmax/fabs(hextra[5]));
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp: dilate the box and owned/ghost atoms around center of box
|
|
fix_box_relax.cpp:------------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: // rescale simulation box from linesearch starting point
|
|
fix_box_relax.cpp: // scale atom coords for all atoms or only for fix group atoms
|
|
fix_box_relax.cpp: // convert pertinent atoms and rigid bodies to lamda coords
|
|
fix_box_relax.cpp: // reset global and local box to new size/shape
|
|
fix_box_relax.cpp: domain->boxlo[i] = currentBoxLo0 + (currentBoxLo0 - fixedpoint[i])/domain->h[i]*ds[i]*h0[i];
|
|
fix_box_relax.cpp: domain->boxhi[i] = currentBoxHi0 + (currentBoxHi0 - fixedpoint[i])/domain->h[i]*ds[i]*h0[i];
|
|
fix_box_relax.cpp: error->all(FLERR,"Fix box/relax generated negative box length");
|
|
fix_box_relax.cpp: // scale tilt factors with cell, if set
|
|
fix_box_relax.cpp: if (scaleyz) domain->yz = (domain->boxhi[2] - domain->boxlo[2])*h0[3]/h0[2];
|
|
fix_box_relax.cpp: if (scalexz) domain->xz = (domain->boxhi[2] - domain->boxlo[2])*h0[4]/h0[2];
|
|
fix_box_relax.cpp: if (scalexy) domain->xy = (domain->boxhi[1] - domain->boxlo[1])*h0[5]/h0[1];
|
|
fix_box_relax.cpp: // convert pertinent atoms and rigid bodies back to box coords
|
|
fix_box_relax.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: double ave = 1.0/3.0 * (tensor[0] + tensor[1] + tensor[2]);
|
|
fix_box_relax.cpp: // switch order from xy-xz-yz to Voigt
|
|
fix_box_relax.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_box_relax.cpp: // reset id_temp of pressure to new temperature ID
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:-----------------------------------------------------------------------*/
|
|
fix_box_relax.cpp: // reset reference box dimensions
|
|
fix_box_relax.cpp: // compute target deviatoric stress tensor pdevmod
|
|
fix_box_relax.cpp: // Modify to account for off-diagonal terms
|
|
fix_box_relax.cpp: // These equations come from the stationarity relation:
|
|
fix_box_relax.cpp: // Pdev,sys = Pdev,targ*hinv^t*hdiag
|
|
fix_box_relax.cpp: // where:
|
|
fix_box_relax.cpp: // Pdev,sys is the system deviatoric stress tensor,
|
|
fix_box_relax.cpp: // Pdev,targ = pdeviatoric, effective target deviatoric stress
|
|
fix_box_relax.cpp: // hinv^t is the transpose of the inverse h tensor
|
|
fix_box_relax.cpp: // hdiag is the diagonal part of the h tensor
|
|
fix_box_relax.cpp: // compute symmetric sigma tensor
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:-----------------------------------------------------------------------*/
|
|
fix_box_relax.cpp: // compute strain energy = 0.5*Tr(sigma*h*h^t) in energy units
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:-----------------------------------------------------------------------*/
|
|
fix_box_relax.cpp: // [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ]
|
|
fix_box_relax.cpp: // [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ]
|
|
fix_box_relax.cpp: // [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ]
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp:-----------------------------------------------------------------------*/
|
|
fix_box_relax.cpp: if (pflagsum) p_hydro /= pflagsum;
|
|
fix_box_relax.cpp:/* ----------------------------------------------------------------------
|
|
fix_box_relax.cpp: ---------------------------------------------------------------------- */
|
|
fix_controller.cpp:/* ----------------------------------------------------------------------
|
|
fix_controller.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_controller.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_controller.cpp:------------------------------------------------------------------------- */
|
|
fix_controller.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_controller.cpp: // process variable arg
|
|
fix_controller.cpp: // setpoint arg
|
|
fix_controller.cpp: // control variable arg
|
|
fix_controller.cpp: // error check
|
|
fix_controller.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_controller.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_controller.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_controller.cpp: // set sampling time
|
|
fix_controller.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_controller.cpp: // current value of pv = invocation of compute,fix,variable
|
|
fix_controller.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_controller.cpp: // invoke compute if not previously invoked
|
|
fix_controller.cpp: // access fix field, guaranteed to be ready
|
|
fix_controller.cpp: // evaluate equal-style variable
|
|
fix_controller.cpp: // new control var = f(old value, current process var, setpoint)
|
|
fix_controller.cpp: // cv = cvold -kp*err -ki*sumerr -kd*deltaerr
|
|
fix_controller.cpp: // note: this deviates from standard notation, which is
|
|
fix_controller.cpp: // cv = kp*err +ki*sumerr +kd*deltaerr
|
|
fix_controller.cpp: // the difference is in the sign and the time integral
|
|
fix_controller.cpp: // 3 terms of PID equation
|
|
fix_controller.cpp: // reset control variable
|
|
fix_controller.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_controller.cpp:/* ----------------------------------------------------------------------
|
|
fix_controller.cpp:------------------------------------------------------------------------- */
|
|
fix.cpp:/* ----------------------------------------------------------------------
|
|
fix.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix.cpp:------------------------------------------------------------------------- */
|
|
fix.cpp:// allocate space for static class instance variable and initialize it
|
|
fix.cpp:/* ---------------------------------------------------------------------- */
|
|
fix.cpp: // fix ID, group, and style
|
|
fix.cpp: // ID must be all alphanumeric chars or underscores
|
|
fix.cpp: // reasonable defaults
|
|
fix.cpp: // however, each fix that uses these values should explicitly set them
|
|
fix.cpp: // per-atom virial
|
|
fix.cpp: // set vflag_atom = 0 b/c some fixes grow vatom in grow_arrays()
|
|
fix.cpp: // which may occur outside of timestepping
|
|
fix.cpp: // KOKKOS per-fix data masks
|
|
fix.cpp:/* ---------------------------------------------------------------------- */
|
|
fix.cpp:/* ----------------------------------------------------------------------
|
|
fix.cpp:------------------------------------------------------------------------- */
|
|
fix.cpp: if (strcmp(arg[iarg],"dynamic/dof") == 0) {
|
|
fix.cpp:/* ----------------------------------------------------------------------
|
|
fix.cpp:------------------------------------------------------------------------- */
|
|
fix.cpp: eflag_atom = eflag / 2;
|
|
fix.cpp: vflag_atom = vflag / 4;
|
|
fix.cpp: // reallocate per-atom arrays if necessary
|
|
fix.cpp: // zero accumulators
|
|
fix.cpp: // no global energy variable to zero (unlike pair,bond,angle,etc)
|
|
fix.cpp: // fixes tally it individually via fix_modify energy yes and compute_scalar()
|
|
fix.cpp:/* ----------------------------------------------------------------------
|
|
fix.cpp:------------------------------------------------------------------------- */
|
|
fix.cpp: vflag_atom = vflag / 4;
|
|
fix.cpp: // reallocate per-atom array if necessary
|
|
fix.cpp: // zero accumulators
|
|
fix.cpp:/* ----------------------------------------------------------------------
|
|
fix.cpp: tally per-atom energy and global/per-atom virial into accumulators
|
|
fix.cpp: increment per-atom energy of each atom in list by 1/total fraction
|
|
fix.cpp: this method can be used when fix computes energy/forces in post_force()
|
|
fix.cpp:------------------------------------------------------------------------- */
|
|
fix.cpp: double fraction = eng/total;
|
|
fix.cpp:/* ----------------------------------------------------------------------
|
|
fix.cpp: increment global virial by n/total fraction
|
|
fix.cpp: increment per-atom virial of each atom in list by 1/total fraction
|
|
fix.cpp:------------------------------------------------------------------------- */
|
|
fix.cpp: double fraction = n/total;
|
|
fix.cpp: double fraction = 1.0/total;
|
|
fix_deform.cpp:/* ----------------------------------------------------------------------
|
|
fix_deform.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_deform.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_deform.cpp:------------------------------------------------------------------------- */
|
|
fix_deform.cpp:/* ----------------------------------------------------------------------
|
|
fix_deform.cpp:------------------------------------------------------------------------- */
|
|
fix_deform.cpp:// same as domain.cpp, fix_nvt_sllod.cpp, compute_temp_deform.cpp
|
|
fix_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_deform.cpp: // set defaults
|
|
fix_deform.cpp: // parse arguments
|
|
fix_deform.cpp: // read options from end of input line
|
|
fix_deform.cpp: // no x remap effectively moves atoms within box, so set restart_pbc
|
|
fix_deform.cpp: // setup dimflags used by other classes to check for volume-change conflicts
|
|
fix_deform.cpp: // no tensile deformation on shrink-wrapped dims
|
|
fix_deform.cpp: // b/c shrink wrap will change box-length
|
|
fix_deform.cpp: // no tilt deformation on shrink-wrapped 2nd dim
|
|
fix_deform.cpp: // b/c shrink wrap will change tilt factor in domain::reset_box()
|
|
fix_deform.cpp: // apply scaling to FINAL,DELTA,VEL,WIGGLE since they have dist/vel units
|
|
fix_deform.cpp: // for 3,4,5: scaling is in 1st dimension, e.g. x for xz
|
|
fix_deform.cpp: // for VOLUME, setup links to other dims
|
|
fix_deform.cpp: // fixed, dynamic1, dynamic2
|
|
fix_deform.cpp: // set varflag
|
|
fix_deform.cpp: // set initial values at time fix deform is issued
|
|
fix_deform.cpp: // reneighboring only forced if flips can occur due to shape changes
|
|
fix_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_deform.cpp: // reset domain's h_rate = 0.0, since this fix may have made it non-zero
|
|
fix_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_deform.cpp: // error if more than one fix deform
|
|
fix_deform.cpp: // domain, fix nvt/sllod, compute temp/deform only work on single h_rate
|
|
fix_deform.cpp: // Kspace setting
|
|
fix_deform.cpp: // elapsed time for entire simulation, including multiple runs if defined
|
|
fix_deform.cpp: // check variables for VARIABLE style
|
|
fix_deform.cpp: // set start/stop values for box size and shape
|
|
fix_deform.cpp: // if single run, start is current values
|
|
fix_deform.cpp: // if multiple runs enabled via run start/stop settings,
|
|
fix_deform.cpp: // start is value when fix deform was issued
|
|
fix_deform.cpp: // if VARIABLE or NONE, no need to set
|
|
fix_deform.cpp: 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: set[i].amplitude * sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: // compute min/max for WIGGLE = extrema tilt factor will ever reach
|
|
fix_deform.cpp: set[i].amplitude*sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: set[i].amplitude*sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: set[i].amplitude*sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: set[i].amplitude*sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: // if using tilt TRATE, then initial tilt must be non-zero
|
|
fix_deform.cpp: // if yz changes and will cause box flip, then xy cannot be changing
|
|
fix_deform.cpp: // yz = [3], xy = [5]
|
|
fix_deform.cpp: // this is b/c the flips would induce continuous changes in xz
|
|
fix_deform.cpp: // in order to keep the edge vectors of the flipped shape matrix
|
|
fix_deform.cpp: // an integer combination of the edge vectors of the unflipped shape matrix
|
|
fix_deform.cpp: // VARIABLE for yz is error, since no way to calculate if box flip occurs
|
|
fix_deform.cpp: // WIGGLE lo/hi flip test is on min/max oscillation limit, not tilt_stop
|
|
fix_deform.cpp: // only trigger actual errors if flipflag is set
|
|
fix_deform.cpp: if (lo/(set[1].hi_start-set[1].lo_start) < -0.5 ||
|
|
fix_deform.cpp: hi/(set[1].hi_start-set[1].lo_start) > 0.5) flag = 1;
|
|
fix_deform.cpp: if (lo/(set[1].hi_stop-set[1].lo_stop) < -0.5 ||
|
|
fix_deform.cpp: hi/(set[1].hi_stop-set[1].lo_stop) > 0.5) flag = 1;
|
|
fix_deform.cpp: // set domain->h_rate values for use by domain and other fixes/computes
|
|
fix_deform.cpp: // initialize all rates to 0.0
|
|
fix_deform.cpp: // cannot set here for TRATE,VOLUME,WIGGLE,VARIABLE since not constant
|
|
fix_deform.cpp: dlo_dt = (set[i].lo_stop - set[i].lo_start) / delt;
|
|
fix_deform.cpp: dhi_dt = (set[i].hi_stop - set[i].hi_start) / delt;
|
|
fix_deform.cpp: h_rate[i] = (set[i].tilt_stop - set[i].tilt_start) / delt;
|
|
fix_deform.cpp: // detect if any rigid fixes exist so rigid bodies can be rescaled
|
|
fix_deform.cpp: // rfix[] = indices to each fix rigid
|
|
fix_deform.cpp:/* ----------------------------------------------------------------------
|
|
fix_deform.cpp:------------------------------------------------------------------------- */
|
|
fix_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_deform.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_deform.cpp: // wrap variable evaluations with clear/add
|
|
fix_deform.cpp: // set new box size
|
|
fix_deform.cpp: // for NONE, target is current box size
|
|
fix_deform.cpp: // for TRATE, set target directly based on current time, also set h_rate
|
|
fix_deform.cpp: // for WIGGLE, set target directly based on current time, also set h_rate
|
|
fix_deform.cpp: // for VARIABLE, set target directly via variable eval, also set h_rate
|
|
fix_deform.cpp: // for others except VOLUME, target is linear value between start and stop
|
|
fix_deform.cpp: 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: 0.5*set[i].amplitude * sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: h_rate[i] = TWOPI/set[i].tperiod * set[i].amplitude *
|
|
fix_deform.cpp: cos(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: // set new box size for VOLUME dims that are linked to other dims
|
|
fix_deform.cpp: // NOTE: still need to set h_rate for these dims
|
|
fix_deform.cpp: 0.5*(set[i].vol_start /
|
|
fix_deform.cpp: set[set[i].dynamic1].lo_target) /
|
|
fix_deform.cpp: 0.5*(set[i].vol_start /
|
|
fix_deform.cpp: set[set[i].dynamic1].lo_target) /
|
|
fix_deform.cpp: 0.5*(set[i].vol_start /
|
|
fix_deform.cpp: set[set[i].dynamic1].lo_target) /
|
|
fix_deform.cpp: 0.5*(set[i].vol_start /
|
|
fix_deform.cpp: set[set[i].dynamic1].lo_target) /
|
|
fix_deform.cpp: 0.5*sqrt(set[i].vol_start /
|
|
fix_deform.cpp: set[set[i].dynamic1].lo_target) /
|
|
fix_deform.cpp: 0.5*sqrt(set[i].vol_start /
|
|
fix_deform.cpp: set[set[i].dynamic1].lo_target) /
|
|
fix_deform.cpp: // for triclinic, set new box shape
|
|
fix_deform.cpp: // for NONE, target is current tilt
|
|
fix_deform.cpp: // for TRATE, set target directly based on current time. also set h_rate
|
|
fix_deform.cpp: // for WIGGLE, set target directly based on current time. also set h_rate
|
|
fix_deform.cpp: // for VARIABLE, set target directly via variable eval. also set h_rate
|
|
fix_deform.cpp: // for other styles, target is linear value between start and stop values
|
|
fix_deform.cpp: set[i].amplitude * sin(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: h_rate[i] = TWOPI/set[i].tperiod * set[i].amplitude *
|
|
fix_deform.cpp: cos(TWOPI*delt/set[i].tperiod);
|
|
fix_deform.cpp: // tilt_target can be large positive or large negative value
|
|
fix_deform.cpp: // add/subtract box lengths until tilt_target is closest to current value
|
|
fix_deform.cpp: double current = h[i]/h[idenom];
|
|
fix_deform.cpp: while (set[i].tilt_target/denom - current > 0.0)
|
|
fix_deform.cpp: while (set[i].tilt_target/denom - current < 0.0)
|
|
fix_deform.cpp: if (fabs(set[i].tilt_target/denom - 1.0 - current) <
|
|
fix_deform.cpp: fabs(set[i].tilt_target/denom - current))
|
|
fix_deform.cpp: // if any tilt ratios exceed 0.5, set flip = 1 and compute new tilt values
|
|
fix_deform.cpp: // do not flip in x or y if non-periodic (can tilt but not flip)
|
|
fix_deform.cpp: // this is b/c the box length would be changed (dramatically) by flip
|
|
fix_deform.cpp: // if yz tilt exceeded, adjust C vector by one B vector
|
|
fix_deform.cpp: // if xz tilt exceeded, adjust C vector by one A vector
|
|
fix_deform.cpp: // if xy tilt exceeded, adjust B vector by one A vector
|
|
fix_deform.cpp: // check yz first since it may change xz, then xz check comes after
|
|
fix_deform.cpp: // flip is performed on next timestep, before reneighboring in pre-exchange()
|
|
fix_deform.cpp: double xprdinv = 1.0 / xprd;
|
|
fix_deform.cpp: double yprdinv = 1.0 / yprd;
|
|
fix_deform.cpp: // convert atoms and rigid bodies to lamda coords
|
|
fix_deform.cpp: // reset global and local box to new size/shape
|
|
fix_deform.cpp: // only if deform fix is controlling the dimension
|
|
fix_deform.cpp: // convert atoms and rigid bodies back to box coords
|
|
fix_deform.cpp: // redo KSpace coeffs since box has changed
|
|
fix_deform.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_deform.cpp:/* ----------------------------------------------------------------------
|
|
fix_deform.cpp:------------------------------------------------------------------------- */
|
|
fix_deprecated.cpp:/* ----------------------------------------------------------------------
|
|
fix_deprecated.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_deprecated.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_deprecated.cpp:------------------------------------------------------------------------- */
|
|
fix_deprecated.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_deprecated.cpp: if (strncmp(style,"ave/spatial",11) == 0) {
|
|
fix_deprecated.cpp: "NOTE: The fix styles 'ave/spatial' and 'ave/spatial/sphere' have been replaced\n"
|
|
fix_deprecated.cpp: "by the more general fix ave/chunk and compute chunk/atom commands.\n"
|
|
fix_deprecated.cpp: "All ave/spatial and ave/spatial/sphere functionality is available in these\n"
|
|
fix_deprecated.cpp: "new commands. These ave/spatial keywords & options are part of fix ave/chunk:\n"
|
|
fix_deprecated.cpp: "These ave/spatial keywords & options for binning are part of compute chunk/atom:\n"
|
|
fix_drag.cpp:/* ----------------------------------------------------------------------
|
|
fix_drag.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_drag.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_drag.cpp:------------------------------------------------------------------------- */
|
|
fix_drag.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_drag.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_drag.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_drag.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_drag.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_drag.cpp: // apply drag force to atoms in group of magnitude f_mag
|
|
fix_drag.cpp: // apply in direction (r-r0) if atom is further than delta away
|
|
fix_drag.cpp: prefactor = f_mag/r;
|
|
fix_drag.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_drag.cpp:/* ----------------------------------------------------------------------
|
|
fix_drag.cpp:------------------------------------------------------------------------- */
|
|
fix_drag.cpp: // only sum across procs one time
|
|
fix_dt_reset.cpp:/* ----------------------------------------------------------------------
|
|
fix_dt_reset.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_dt_reset.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_dt_reset.cpp:------------------------------------------------------------------------- */
|
|
fix_dt_reset.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_dt_reset.cpp: if (narg < 7) error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: // set time_depend, else elapsed time accumulation can be messed up
|
|
fix_dt_reset.cpp: if (nevery <= 0) error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: if (minbound && tmin < 0.0) error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: if (maxbound && tmax < 0.0) error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: if (xmax <= 0.0) error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: else error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: } else error->all(FLERR,"Illegal fix dt/reset command");
|
|
fix_dt_reset.cpp: // setup scaling, based on xlattice parameter
|
|
fix_dt_reset.cpp: // initializations
|
|
fix_dt_reset.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_dt_reset.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_dt_reset.cpp: // set rRESPA flag
|
|
fix_dt_reset.cpp: // check for DCD or XTC dumps
|
|
fix_dt_reset.cpp: "Dump dcd/xtc timestamp may be wrong with fix dt/reset");
|
|
fix_dt_reset.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_dt_reset.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_dt_reset.cpp: // compute vmax and amax of any atom in group
|
|
fix_dt_reset.cpp: if (rmass) massinv = 1.0/rmass[i];
|
|
fix_dt_reset.cpp: else massinv = 1.0/mass[type[i]];
|
|
fix_dt_reset.cpp: if (vsq > 0.0) dtv = xmax/sqrt(vsq);
|
|
fix_dt_reset.cpp: if (fsq > 0.0) dtf = sqrt(2.0*xmax/(ftm2v*sqrt(fsq)*massinv));
|
|
fix_dt_reset.cpp: if (delr > xmax) dt *= xmax/delr;
|
|
fix_dt_reset.cpp: // if timestep didn't change, just return
|
|
fix_dt_reset.cpp: // else reset update->dt and other classes that depend on it
|
|
fix_dt_reset.cpp: // rRESPA, pair style, fixes
|
|
fix_dt_reset.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ----------------------------------------------------------------------
|
|
fix_enforce2d.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_enforce2d.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_enforce2d.cpp:------------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp: // list of fixes with enforce2d methods
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp: // for systems with omega/angmom/torque, zero x and y components
|
|
fix_enforce2d.cpp: // invoke other fixes that enforce 2d
|
|
fix_enforce2d.cpp: // fix rigid variants
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_enforce2d.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_external.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp: if (strcmp(arg[3],"pf/callback") == 0) {
|
|
fix_external.cpp: } else if (strcmp(arg[3],"pf/array") == 0) {
|
|
fix_external.cpp: // perform initial allocation of atom-based array
|
|
fix_external.cpp: // register with Atom class
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp:/* --------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp: // invoke the callback in driver program
|
|
fix_external.cpp: // it will fill fexternal with forces
|
|
fix_external.cpp: // add forces from fexternal to atoms in group
|
|
fix_external.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_external.cpp:/* ----------------------------------------------------------------------
|
|
fix_external.cpp:------------------------------------------------------------------------- */
|
|
fix_force_spin.cpp:/* ----------------------------------------------------------------------
|
|
fix_force_spin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_force_spin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_force_spin.cpp:------------------------------------------------------------------------- */
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp: // 7 arguments for a force/spin fix command:
|
|
fix_force_spin.cpp: //(fix ID group force/spin magnitude (T or eV) style (zeeman or anisotropy) direction (3 cartesian coordinates)
|
|
fix_force_spin.cpp: //Magnetic interactions only coded for cartesian coordinates
|
|
fix_force_spin.cpp: } else error->all(FLERR,"Illegal fix force/spin command");
|
|
fix_force_spin.cpp: degree2rad = MY_PI/180.0;
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp: double hbar = force->hplanck/MY_2PI; //eV/(rad.THz)
|
|
fix_force_spin.cpp: double mub = 5.78901e-5; //in eV/T
|
|
fix_force_spin.cpp: double gyro = mub/hbar; //in rad.THz/T
|
|
fix_force_spin.cpp: H_field *= gyro; //in rad.THz
|
|
fix_force_spin.cpp: Ka /= hbar; //in rad.THz
|
|
fix_force_spin.cpp: // check variables
|
|
fix_force_spin.cpp: // set magnetic field components once and for all
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp: // update gravity due to variables
|
|
fix_force_spin.cpp: set_magneticforce(); //Update value of the mag. field if time-dependent
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_force_spin.cpp://No acceleration for magnetic EOM, only a "magnetic force"
|
|
fix_force_spin.cpp:/* ----------------------------------------------------------------------
|
|
fix_force_spin.cpp:------------------------------------------------------------------------- */
|
|
fix_force_spin.cpp: // only sum across procs one time
|
|
fix_gravity.cpp:/* ----------------------------------------------------------------------
|
|
fix_gravity.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_gravity.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_gravity.cpp:------------------------------------------------------------------------- */
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp: degree2rad = MY_PI/180.0;
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp: // check variables
|
|
fix_gravity.cpp: // set gravity components once and for all
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp: // update gravity due to variables
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_gravity.cpp: xgrav = xdir/length;
|
|
fix_gravity.cpp: ygrav = ydir/length;
|
|
fix_gravity.cpp: zgrav = zdir/length;
|
|
fix_gravity.cpp: xgrav = xdir/length;
|
|
fix_gravity.cpp: ygrav = ydir/length;
|
|
fix_gravity.cpp:/* ----------------------------------------------------------------------
|
|
fix_gravity.cpp:------------------------------------------------------------------------- */
|
|
fix_gravity.cpp: // only sum across procs one time
|
|
fix_group.cpp:/* ----------------------------------------------------------------------
|
|
fix_group.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_group.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_group.cpp:------------------------------------------------------------------------- */
|
|
fix_group.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_group.cpp: // dgroupbit = bitmask of dynamic group
|
|
fix_group.cpp: // group ID is last part of fix ID
|
|
fix_group.cpp: // process optional args
|
|
fix_group.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_group.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_group.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_group.cpp: // parent group cannot be dynamic
|
|
fix_group.cpp: // else order of FixGroup fixes would matter
|
|
fix_group.cpp: // set current indices for region and variable
|
|
fix_group.cpp: // warn if any FixGroup is not at tail end of all post_integrate fixes
|
|
fix_group.cpp:/* ----------------------------------------------------------------------
|
|
fix_group.cpp:------------------------------------------------------------------------- */
|
|
fix_group.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_group.cpp: // only assign atoms to group on steps that are multiples of nevery
|
|
fix_group.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_group.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_group.cpp: // invoke atom-style variable if defined
|
|
fix_group.cpp: memory->create(var,nlocal,"fix/group:varvalue");
|
|
fix_group.cpp: // update region in case it has a variable dependence or is dynamic
|
|
fix_group.cpp: // set mask for each atom
|
|
fix_group.cpp: // only in group if in parent group, in region, variable is non-zero
|
|
fix_group.cpp: // if compute, fix, etc needs updated masks of ghost atoms,
|
|
fix_group.cpp: // it must do forward_comm() to update them
|
|
fix_halt.cpp:/* ----------------------------------------------------------------------
|
|
fix_halt.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_halt.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_halt.cpp:------------------------------------------------------------------------- */
|
|
fix_halt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_halt.cpp: // comparison args
|
|
fix_halt.cpp: // parse optional args
|
|
fix_halt.cpp: // add nfirst to all computes that store invocation times
|
|
fix_halt.cpp: // since don't know a priori which are invoked via variables by this fix
|
|
fix_halt.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_halt.cpp: const bigint nfirst = (update->ntimestep/nevery)*nevery + nevery;
|
|
fix_halt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_halt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_halt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_halt.cpp: // set ivar from current variable list
|
|
fix_halt.cpp: // settings used by TLIMIT
|
|
fix_halt.cpp: nextstep = (update->ntimestep/nevery)*nevery + nevery;
|
|
fix_halt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_halt.cpp: // variable evaluation may invoke computes so wrap with clear/add
|
|
fix_halt.cpp: // check if halt is triggered, else just return
|
|
fix_halt.cpp: // hard halt -> exit LAMMPS
|
|
fix_halt.cpp: // soft/continue halt -> trigger timer to break from run loop
|
|
fix_halt.cpp: // print message with ID of fix halt in case multiple instances
|
|
fix_halt.cpp:/* ----------------------------------------------------------------------
|
|
fix_halt.cpp:------------------------------------------------------------------------- */
|
|
fix_halt.cpp: // continue halt -> subsequent runs are allowed
|
|
fix_halt.cpp:/* ----------------------------------------------------------------------
|
|
fix_halt.cpp:------------------------------------------------------------------------- */
|
|
fix_halt.cpp:/* ----------------------------------------------------------------------
|
|
fix_halt.cpp: first project to 1/2 the run time, thereafter to end of run
|
|
fix_halt.cpp:------------------------------------------------------------------------- */
|
|
fix_halt.cpp: static_cast<bigint> (tratio*value/cpu * elapsed);
|
|
fix_halt.cpp: nextstep = (final/nevery)*nevery + nevery;
|
|
fix_heat.cpp:/* ----------------------------------------------------------------------
|
|
fix_heat.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_heat.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_heat.cpp:------------------------------------------------------------------------- */
|
|
fix_heat.cpp:/* ----------------------------------------------------------------------
|
|
fix_heat.cpp:------------------------------------------------------------------------- */
|
|
fix_heat.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_heat.cpp: // optional args
|
|
fix_heat.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_heat.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_heat.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_heat.cpp: // set index and check validity of region
|
|
fix_heat.cpp: // check variable
|
|
fix_heat.cpp: // cannot have 0 atoms in group
|
|
fix_heat.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_heat.cpp: // reallocate per-atom arrays if necessary
|
|
fix_heat.cpp: // evaluate variable
|
|
fix_heat.cpp: // vcm = center-of-mass velocity of scaled atoms
|
|
fix_heat.cpp: // add heat via scale factor on velocities for CONSTANT and EQUAL cases
|
|
fix_heat.cpp: // scale = velocity scale factor to accomplish eflux change in energy
|
|
fix_heat.cpp: // vsub = velocity subtracted from each atom to preserve momentum
|
|
fix_heat.cpp: // overall KE cannot go negative
|
|
fix_heat.cpp: (ke + heat - 0.5*vcmsq*masstotal)/(ke - 0.5*vcmsq*masstotal);
|
|
fix_heat.cpp: // add heat via per-atom scale factor on velocities for ATOM case
|
|
fix_heat.cpp: // vscale = velocity scale factor to accomplish eflux change in energy
|
|
fix_heat.cpp: // vsub = velocity subtracted from each atom to preserve momentum
|
|
fix_heat.cpp: // KE of an atom cannot go negative
|
|
fix_heat.cpp: (ke + heat - 0.5*vcmsq*masstotal)/(ke - 0.5*vcmsq*masstotal);
|
|
fix_heat.cpp: vsub[0] /= masstotal;
|
|
fix_heat.cpp: vsub[1] /= masstotal;
|
|
fix_heat.cpp: vsub[2] /= masstotal;
|
|
fix_heat.cpp: (ke + heat - 0.5*vcmsq*masstotal)/(ke - 0.5*vcmsq*masstotal);
|
|
fix_heat.cpp: vsub[0] /= masstotal;
|
|
fix_heat.cpp: vsub[1] /= masstotal;
|
|
fix_heat.cpp: vsub[2] /= masstotal;
|
|
fix_heat.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_heat.cpp: else average_scale = scale_sum_all/static_cast<double>(ncount_all);
|
|
fix_heat.cpp:/* ----------------------------------------------------------------------
|
|
fix_heat.cpp:------------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ----------------------------------------------------------------------
|
|
fix_indent.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_indent.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_indent.cpp:------------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ----------------------------------------------------------------------
|
|
fix_indent.cpp:------------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp: k3 = k/3.0;
|
|
fix_indent.cpp: // read options from end of input line
|
|
fix_indent.cpp: // setup scaling
|
|
fix_indent.cpp: // apply scaling factors to geometry
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp: // indenter values, 0 = energy, 1-3 = force components
|
|
fix_indent.cpp: // wrap variable evaluations with clear/add
|
|
fix_indent.cpp: // spherical indenter
|
|
fix_indent.cpp: // ctr = current indenter center
|
|
fix_indent.cpp: // remap into periodic box
|
|
fix_indent.cpp: fx = delx*fmag/r;
|
|
fix_indent.cpp: fy = dely*fmag/r;
|
|
fix_indent.cpp: fz = delz*fmag/r;
|
|
fix_indent.cpp: // cylindrical indenter
|
|
fix_indent.cpp: // ctr = current indenter axis
|
|
fix_indent.cpp: // remap into periodic box
|
|
fix_indent.cpp: // 3rd coord is just near box for remap(), since isn't used
|
|
fix_indent.cpp: fx = delx*fmag/r;
|
|
fix_indent.cpp: fy = dely*fmag/r;
|
|
fix_indent.cpp: fz = delz*fmag/r;
|
|
fix_indent.cpp: // planar indenter
|
|
fix_indent.cpp: // plane = current plane position
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_indent.cpp:/* ----------------------------------------------------------------------
|
|
fix_indent.cpp:------------------------------------------------------------------------- */
|
|
fix_indent.cpp: // only sum across procs one time
|
|
fix_indent.cpp:/* ----------------------------------------------------------------------
|
|
fix_indent.cpp:------------------------------------------------------------------------- */
|
|
fix_indent.cpp: // only sum across procs one time
|
|
fix_indent.cpp:/* ----------------------------------------------------------------------
|
|
fix_indent.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_langevin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:#define SINERTIA 0.4 // moment of inertia prefactor for sphere
|
|
fix_langevin.cpp:#define EINERTIA 0.2 // moment of inertia prefactor for ellipsoid
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp: // initialize Marsaglia RNG with processor-unique seed
|
|
fix_langevin.cpp: // allocate per-type arrays for force prefactors
|
|
fix_langevin.cpp: // optional args
|
|
fix_langevin.cpp: // set temperature = NULL, user can override via fix_modify if wants bias
|
|
fix_langevin.cpp: // flangevin is unallocated until first call to setup()
|
|
fix_langevin.cpp: // compute_scalar checks for this and returns 0.0
|
|
fix_langevin.cpp: // if flangevin_allocated is not set
|
|
fix_langevin.cpp: // setup atom-based array for franprev
|
|
fix_langevin.cpp: // register with Atom class
|
|
fix_langevin.cpp: // no need to set peratom_flag, b/c data is for internal use only
|
|
fix_langevin.cpp: // initialize franprev to zero
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp: // check variable
|
|
fix_langevin.cpp: // if oflag or ascale set, check that all group particles are finite-size
|
|
fix_langevin.cpp: // set force prefactors
|
|
fix_langevin.cpp: gfactor1[i] = -atom->mass[i] / t_period / force->ftm2v;
|
|
fix_langevin.cpp: sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) /
|
|
fix_langevin.cpp: gfactor1[i] *= 1.0/ratio[i];
|
|
fix_langevin.cpp: gfactor2[i] *= 1.0/sqrt(ratio[i]);
|
|
fix_langevin.cpp: if (gjfflag) gjffac = 1.0/(1.0+update->dt/2.0/t_period);
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp: // enumerate all 2^6 possibilities for template parameters
|
|
fix_langevin.cpp: // this avoids testing them inside inner loop:
|
|
fix_langevin.cpp: // TSTYLEATOM, GJF, TALLY, BIAS, RMASS, ZERO
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp: // apply damping and thermostat to atoms in group
|
|
fix_langevin.cpp: // for Tp_TSTYLEATOM:
|
|
fix_langevin.cpp: // use per-atom per-coord target temperature
|
|
fix_langevin.cpp: // for Tp_GJF:
|
|
fix_langevin.cpp: // use Gronbech-Jensen/Farago algorithm
|
|
fix_langevin.cpp: // else use regular algorithm
|
|
fix_langevin.cpp: // for Tp_TALLY:
|
|
fix_langevin.cpp: // store drag plus random forces in flangevin[nlocal][3]
|
|
fix_langevin.cpp: // for Tp_BIAS:
|
|
fix_langevin.cpp: // calculate temperature since some computes require temp
|
|
fix_langevin.cpp: // computed on current nlocal atoms to remove bias
|
|
fix_langevin.cpp: // test v = 0 since some computes mask non-participating atoms via v = 0
|
|
fix_langevin.cpp: // and added force has extra term not multiplied by v = 0
|
|
fix_langevin.cpp: // for Tp_RMASS:
|
|
fix_langevin.cpp: // use per-atom masses
|
|
fix_langevin.cpp: // else use per-type masses
|
|
fix_langevin.cpp: // for Tp_ZERO:
|
|
fix_langevin.cpp: // sum random force over all atoms in group
|
|
fix_langevin.cpp: // subtract sum/count from each atom in group
|
|
fix_langevin.cpp: // reallocate flangevin if necessary
|
|
fix_langevin.cpp: gamma1 = -rmass[i] / t_period / ftm2v;
|
|
fix_langevin.cpp: gamma2 = sqrt(rmass[i]) * sqrt(24.0*boltz/t_period/dt/mvv2e) / ftm2v;
|
|
fix_langevin.cpp: gamma1 *= 1.0/ratio[type[i]];
|
|
fix_langevin.cpp: gamma2 *= 1.0/sqrt(ratio[type[i]]) * tsqrt;
|
|
fix_langevin.cpp: // set total force to zero
|
|
fix_langevin.cpp: fsumall[0] /= count;
|
|
fix_langevin.cpp: fsumall[1] /= count;
|
|
fix_langevin.cpp: fsumall[2] /= count;
|
|
fix_langevin.cpp: // thermostat omega and angmom
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_langevin.cpp: // if variable temp, evaluate variable, wrap with clear/add
|
|
fix_langevin.cpp: // reallocate tforce array if necessary
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp: // rescale gamma1/gamma2 by 10/3 & sqrt(10/3) for spherical particles
|
|
fix_langevin.cpp: // does not affect rotational thermosatting
|
|
fix_langevin.cpp: // gives correct rotational diffusivity behavior
|
|
fix_langevin.cpp: double tendivthree = 10.0/3.0;
|
|
fix_langevin.cpp: gamma1 = -tendivthree*inertiaone / t_period / ftm2v;
|
|
fix_langevin.cpp: gamma2 = sqrt(inertiaone) * sqrt(80.0*boltz/t_period/dt/mvv2e) / ftm2v;
|
|
fix_langevin.cpp: gamma1 *= 1.0/ratio[type[i]];
|
|
fix_langevin.cpp: gamma2 *= 1.0/sqrt(ratio[type[i]]) * tsqrt;
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp: // rescale gamma1/gamma2 by ascale for aspherical particles
|
|
fix_langevin.cpp: // does not affect rotational thermosatting
|
|
fix_langevin.cpp: // gives correct rotational diffusivity behavior if (nearly) spherical
|
|
fix_langevin.cpp: // any value will be incorrect for rotational diffusivity if aspherical
|
|
fix_langevin.cpp: gamma1 = -ascale / t_period / ftm2v;
|
|
fix_langevin.cpp: gamma2 = sqrt(ascale*24.0*boltz/t_period/dt/mvv2e) / ftm2v;
|
|
fix_langevin.cpp: gamma1 *= 1.0/ratio[type[i]];
|
|
fix_langevin.cpp: gamma2 *= 1.0/sqrt(ratio[type[i]]) * tsqrt;
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp: sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) /
|
|
fix_langevin.cpp: gfactor2[i] *= 1.0/sqrt(ratio[i]);
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin.cpp: // capture the very first energy transfer to thermal reservoir
|
|
fix_langevin.cpp: // convert midstep energy back to previous fullstep energy
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin_spin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_langevin_spin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_langevin_spin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp:/* ----------------------------------------------------------------------
|
|
fix_langevin_spin.cpp:------------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp: if (narg != 7) error->all(FLERR,"Illegal fix langevin/spin command");
|
|
fix_langevin_spin.cpp: if (alpha_t < 0.0) error->all(FLERR,"Fix langevin/spin transverse damping must be >= 0.0");
|
|
fix_langevin_spin.cpp: if (alpha_l < 0.0) error->all(FLERR,"Fix langevin/spin transverse damping must be >= 0.0");
|
|
fix_langevin_spin.cpp: if (seed <= 0) error->all(FLERR,"Illegal fix langevin/spin seed must be > 0");
|
|
fix_langevin_spin.cpp: // initialize Marsaglia RNG with processor-unique seed
|
|
fix_langevin_spin.cpp: //random = new RanMars(lmp,seed + comm->me);
|
|
fix_langevin_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp: // warn if any fix comes after this one
|
|
fix_langevin_spin.cpp: if (strcmp("force/spin",modify->fix[i]->style)==0) flag_force = MAX(flag_force,i);
|
|
fix_langevin_spin.cpp: if (strcmp("langevin/spin",modify->fix[i]->style)==0) flag_lang = i;
|
|
fix_langevin_spin.cpp: if (flag_force >= flag_lang) error->all(FLERR,"Fix langevin/spin should come after all other spin fixes");
|
|
fix_langevin_spin.cpp: Gil_factor = 1.0/(1.0+(alpha_t)*(alpha_t));
|
|
fix_langevin_spin.cpp: double hbar = force->hplanck/MY_2PI; //eV/(rad.THz)
|
|
fix_langevin_spin.cpp: D = (MY_2PI*Gil_factor*kb*temp)/hbar/dts;
|
|
fix_langevin_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_langevin_spin.cpp: // add the damping to the effective field of each spin
|
|
fix_langevin_spin.cpp: cpx = fmy*sz - fmz*sy;//Computing cross product
|
|
fix_langevin_spin.cpp: fmx -= alpha_t*cpx;//Taking the damping value away
|
|
fix_langevin_spin.cpp: //apply thermal effects adding random fields to fm
|
|
fix_langevin_spin.cpp: rx = sigma*random->gaussian();//Drawing random distributions
|
|
fix_langevin_spin.cpp: fm[i][0] += rx;//Adding random field
|
|
fix_langevin_spin.cpp: fm[i][0] *= Gil_factor;//Multiplying by Gilbert's prefactor
|
|
fix_langevin_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_lineforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_lineforce.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_lineforce.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_lineforce.cpp:------------------------------------------------------------------------- */
|
|
fix_lineforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_lineforce.cpp: xdir /= len;
|
|
fix_lineforce.cpp: ydir /= len;
|
|
fix_lineforce.cpp: zdir /= len;
|
|
fix_lineforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_lineforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_lineforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_lineforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_lineforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_lineforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_minimize.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_minimize.cpp: // register callback to this fix from Atom class
|
|
fix_minimize.cpp: // don't perform initial allocation here, must wait until add_vector()
|
|
fix_minimize.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_minimize.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_minimize.cpp: // delete locally stored data
|
|
fix_minimize.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp: allocate/initialize memory for a new vector with N elements per atom
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_minimize.cpp:/* ----------------------------------------------------------------------
|
|
fix_minimize.cpp:------------------------------------------------------------------------- */
|
|
fix_momentum.cpp:/* ----------------------------------------------------------------------
|
|
fix_momentum.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_momentum.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_momentum.cpp:------------------------------------------------------------------------- */
|
|
fix_momentum.cpp:/* ----------------------------------------------------------------------
|
|
fix_momentum.cpp:------------------------------------------------------------------------- */
|
|
fix_momentum.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_momentum.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_momentum.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_momentum.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_momentum.cpp: // do nothing is group is empty, i.e. mass is zero;
|
|
fix_momentum.cpp: // compute kinetic energy before momentum removal, if needed
|
|
fix_momentum.cpp: // adjust velocities by vcm to zero linear momentum
|
|
fix_momentum.cpp: // only adjust a component if flag is set
|
|
fix_momentum.cpp: // adjust velocities to zero omega
|
|
fix_momentum.cpp: // vnew_i = v_i - w x r_i
|
|
fix_momentum.cpp: // must use unwrapped coords to compute r_i correctly
|
|
fix_momentum.cpp: // compute kinetic energy after momentum removal, if needed
|
|
fix_momentum.cpp: if (ekin_new != 0.0) factor = sqrt(ekin_old/ekin_new);
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_move.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:#define INERTIA 0.2 // moment of inertia prefactor for ellipsoid
|
|
fix_move.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_move.cpp: // parse args
|
|
fix_move.cpp: // optional args
|
|
fix_move.cpp: // error checks and warnings
|
|
fix_move.cpp: // setup scaling and apply scaling factors to velocity & amplitude
|
|
fix_move.cpp: // set omega_rotate from period
|
|
fix_move.cpp: if (mstyle == WIGGLE || mstyle == ROTATE) omega_rotate = MY_2PI / period;
|
|
fix_move.cpp: // runit = unit vector along rotation axis
|
|
fix_move.cpp: runit[0] = axis[0]/len;
|
|
fix_move.cpp: runit[1] = axis[1]/len;
|
|
fix_move.cpp: runit[2] = axis[2]/len;
|
|
fix_move.cpp: // set flags for extra attributes particles may store
|
|
fix_move.cpp: // relevant extra attributes = omega, angmom, theta, quat
|
|
fix_move.cpp: // perform initial allocation of atom-based array
|
|
fix_move.cpp: // register with Atom class
|
|
fix_move.cpp: // AtomVec pointers to retrieve per-atom storage of extra quantities
|
|
fix_move.cpp: // xoriginal = initial unwrapped positions of atoms
|
|
fix_move.cpp: // toriginal = initial theta of lines
|
|
fix_move.cpp: // qoriginal = initial quat of extended particles
|
|
fix_move.cpp: // nrestart = size of per-atom restart data
|
|
fix_move.cpp: // nrestart = 1 + xorig + torig + qorig
|
|
fix_move.cpp: // time origin for movement = current timestep
|
|
fix_move.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_move.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_move.cpp: // delete locally stored arrays
|
|
fix_move.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_move.cpp: // set indices and style of all variables
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp: // for linear: X = X0 + V*dt
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: // for wiggle: X = X0 + A sin(w*dt)
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: // for rotate by right-hand rule around omega:
|
|
fix_move.cpp: // P = point = vector = point of rotation
|
|
fix_move.cpp: // R = vector = axis of rotation
|
|
fix_move.cpp: // w = omega of rotation (from period)
|
|
fix_move.cpp: // X0 = xoriginal = initial coord of atom
|
|
fix_move.cpp: // R0 = runit = unit vector for R
|
|
fix_move.cpp: // D = X0 - P = vector from P to X0
|
|
fix_move.cpp: // C = (D dot R0) R0 = projection of atom coord onto R line
|
|
fix_move.cpp: // A = D - C = vector from R line to X0
|
|
fix_move.cpp: // B = R0 cross A = vector perp to A in plane of rotation
|
|
fix_move.cpp: // A,B define plane of circular rotation around R line
|
|
fix_move.cpp: // X = P + C + A cos(w*dt) + B sin(w*dt)
|
|
fix_move.cpp: // V = w R0 cross (A cos(w*dt) + B sin(w*dt))
|
|
fix_move.cpp: // set any extra attributes affected by rotation
|
|
fix_move.cpp: // omega for spheres, lines, tris
|
|
fix_move.cpp: // angmom for ellipsoids, tris, and bodies
|
|
fix_move.cpp: // theta for lines
|
|
fix_move.cpp: // quats for ellipsoids, tris, and bodies
|
|
fix_move.cpp: // for variable: compute x,v from variables
|
|
fix_move.cpp: // NOTE: also allow for changes to extra attributes?
|
|
fix_move.cpp: // omega, angmom, theta, quat
|
|
fix_move.cpp: // only necessary if prescribed motion involves rotation
|
|
fix_move.cpp: // reallocate displace and velocity arrays as necessary
|
|
fix_move.cpp: // pre-compute variable values, wrap with clear/add
|
|
fix_move.cpp: // update x,v
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp: dtfm = dtf / rmass[i];
|
|
fix_move.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_move.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_move.cpp: // outermost level - update v and x
|
|
fix_move.cpp: // all other levels - nothing
|
|
fix_move.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp: // particle not in group
|
|
fix_move.cpp: // current time still equal fix creation time
|
|
fix_move.cpp: // backup particle to time_origin
|
|
fix_move.cpp: // set theta and quat extra attributes affected by rotation
|
|
fix_move.cpp: // theta for lines
|
|
fix_move.cpp: toriginal[i] = theta - 0.0; // NOTE: edit this line
|
|
fix_move.cpp: // quats for ellipsoids, tris, and bodies
|
|
fix_move.cpp: // qoriginal = f(quat,-delta); // NOTE: edit this line
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp: // skip to Nth set of extra values
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ----------------------------------------------------------------------
|
|
fix_move.cpp:------------------------------------------------------------------------- */
|
|
fix_move.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nh.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp: ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: if (narg < 4) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: // default values
|
|
fix_nh.cpp: // turn on tilt factor scaling, whenever applicable
|
|
fix_nh.cpp: // set fixed-point to default = center of cell
|
|
fix_nh.cpp: // used by FixNVTSllod to preserve non-default value
|
|
fix_nh.cpp: // process keywords
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: "Target temperature for fix nvt/npt/nph cannot be 0.0");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (drag < 0.0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: error->all(FLERR,"Fix nvt/npt/nph dilate group ID does not exist");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: // used by FixNVTSllod to preserve non-default value
|
|
fix_nh.cpp: if (mtchain < 1) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (mpchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (nc_tchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (nc_pchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (nreset_h0 < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: else if (strcmp(arg[iarg+1],"dipole/dlm") == 0) {
|
|
fix_nh.cpp: } else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: // disc keyword is also parsed in fix/nh/sphere
|
|
fix_nh.cpp: } else error->all(FLERR,"Illegal fix nvt/npt/nph command");
|
|
fix_nh.cpp: // error checks
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
|
|
fix_nh.cpp: // require periodicity in tensile dimension
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension");
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension");
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension");
|
|
fix_nh.cpp: // require periodicity in 2nd dim of off-diagonal tilt component
|
|
fix_nh.cpp: "Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension");
|
|
fix_nh.cpp: "Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension");
|
|
fix_nh.cpp: "Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension");
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph "
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph "
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph "
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph with "
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph with "
|
|
fix_nh.cpp: error->all(FLERR,"Cannot use fix nvt/npt/nph with "
|
|
fix_nh.cpp: error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in "
|
|
fix_nh.cpp: "fix nvt/npt/nph with non-triclinic box");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
|
|
fix_nh.cpp: error->all(FLERR,"Fix nvt/npt/nph damping parameters must be > 0.0");
|
|
fix_nh.cpp: // set pstat_flag and box change and restart_pbc variables
|
|
fix_nh.cpp: // pstyle = TRICLINIC if any off-diagonal term is controlled -> 6 dof
|
|
fix_nh.cpp: // else pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof
|
|
fix_nh.cpp: // else pstyle = ANISO -> 3 dof
|
|
fix_nh.cpp: // pre_exchange only required if flips can occur due to shape changes
|
|
fix_nh.cpp: // convert input periods to frequencies
|
|
fix_nh.cpp: if (tstat_flag) t_freq = 1.0 / t_period;
|
|
fix_nh.cpp: if (p_flag[0]) p_freq[0] = 1.0 / p_period[0];
|
|
fix_nh.cpp: if (p_flag[1]) p_freq[1] = 1.0 / p_period[1];
|
|
fix_nh.cpp: if (p_flag[2]) p_freq[2] = 1.0 / p_period[2];
|
|
fix_nh.cpp: if (p_flag[3]) p_freq[3] = 1.0 / p_period[3];
|
|
fix_nh.cpp: if (p_flag[4]) p_freq[4] = 1.0 / p_period[4];
|
|
fix_nh.cpp: if (p_flag[5]) p_freq[5] = 1.0 / p_period[5];
|
|
fix_nh.cpp: // Nose/Hoover temp and pressure init
|
|
fix_nh.cpp: // add one extra dummy thermostat, set to zero
|
|
fix_nh.cpp: // add one extra dummy thermostat, set to zero
|
|
fix_nh.cpp: // initialize vol0,t0 to zero to signal uninitialized
|
|
fix_nh.cpp: // values then assigned in init(), if necessary
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: // delete temperature and pressure if fix created them
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: // recheck that dilate group has not been deleted
|
|
fix_nh.cpp: error->all(FLERR,"Fix nvt/npt/nph dilate group ID does not exist");
|
|
fix_nh.cpp: // ensure no conflict with fix deform
|
|
fix_nh.cpp: // set temperature and pressure ptrs
|
|
fix_nh.cpp: error->all(FLERR,"Temperature ID for fix nvt/npt does not exist");
|
|
fix_nh.cpp: error->all(FLERR,"Pressure ID for fix npt/nph does not exist");
|
|
fix_nh.cpp: // set timesteps and frequencies
|
|
fix_nh.cpp: pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain);
|
|
fix_nh.cpp: tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain);
|
|
fix_nh.cpp: // tally the number of dimensions that are barostatted
|
|
fix_nh.cpp: // set initial volume and reference cell, if not already done
|
|
fix_nh.cpp: // detect if any rigid fixes exist so rigid bodies move when box is remapped
|
|
fix_nh.cpp: // rfix[] = indices to each fix rigid
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: // tdof needed by compute_temp_target()
|
|
fix_nh.cpp: // t_target is needed by NVT and NPT in compute_scalar()
|
|
fix_nh.cpp: // If no thermostat or using fix nphug,
|
|
fix_nh.cpp: // t_target must be defined by other means.
|
|
fix_nh.cpp: // t0 = reference temperature for masses
|
|
fix_nh.cpp: // cannot be done in init() b/c temperature cannot be called there
|
|
fix_nh.cpp: // is b/c Modify::init() inits computes after fixes due to dof dependence
|
|
fix_nh.cpp: // guesstimate a unit-dependent t0 if actual T = 0.0
|
|
fix_nh.cpp: // if it was read in from a restart file, leave it be
|
|
fix_nh.cpp: // masses and initial forces on thermostat variables
|
|
fix_nh.cpp: eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq);
|
|
fix_nh.cpp: eta_mass[ich] = boltz * t_target / (t_freq*t_freq);
|
|
fix_nh.cpp: boltz * t_target) / eta_mass[ich];
|
|
fix_nh.cpp: // masses and initial forces on barostat variables
|
|
fix_nh.cpp: omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
|
|
fix_nh.cpp: if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
|
|
fix_nh.cpp: // masses and initial forces on barostat thermostat variables
|
|
fix_nh.cpp: etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max);
|
|
fix_nh.cpp: etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max);
|
|
fix_nh.cpp: boltz * t_target) / etap_mass[ich];
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: // update eta_press_dot
|
|
fix_nh.cpp: // update eta_dot
|
|
fix_nh.cpp: // need to recompute pressure to account for change in KE
|
|
fix_nh.cpp: // t_current is up-to-date, but compute_temperature is not
|
|
fix_nh.cpp: // compute appropriately coupled elements of mvv_current
|
|
fix_nh.cpp: // remap simulation box by 1/2 step
|
|
fix_nh.cpp: // remap simulation box by 1/2 step
|
|
fix_nh.cpp: // redo KSpace coeffs since volume has changed
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: // re-compute temp before nh_v_press()
|
|
fix_nh.cpp: // only needed for temperature computes with BIAS on reneighboring steps:
|
|
fix_nh.cpp: // b/c some biases store per-atom values (e.g. temp/profile)
|
|
fix_nh.cpp: // per-atom values are invalid if reneigh/comm occurred
|
|
fix_nh.cpp: // since temp->compute() in initial_integrate()
|
|
fix_nh.cpp: // compute new T,P after velocities rescaled by nh_v_press()
|
|
fix_nh.cpp: // compute appropriately coupled elements of mvv_current
|
|
fix_nh.cpp: // update eta_dot
|
|
fix_nh.cpp: // update eta_press_dot
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: // set timesteps by level
|
|
fix_nh.cpp: // outermost level - update eta_dot and omega_dot, apply to v
|
|
fix_nh.cpp: // all other levels - NVE update of v
|
|
fix_nh.cpp: // x,v updates only performed for atoms in group
|
|
fix_nh.cpp: // update eta_press_dot
|
|
fix_nh.cpp: // update eta_dot
|
|
fix_nh.cpp: // recompute pressure to account for change in KE
|
|
fix_nh.cpp: // t_current is up-to-date, but compute_temperature is not
|
|
fix_nh.cpp: // compute appropriately coupled elements of mvv_current
|
|
fix_nh.cpp: // innermost level - also update x only for atoms in group
|
|
fix_nh.cpp: // if barostat, perform 1/2 step remap before and after
|
|
fix_nh.cpp: // if barostat, redo KSpace coeffs at outermost level,
|
|
fix_nh.cpp: // since volume has changed
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: // set timesteps by level
|
|
fix_nh.cpp: // outermost level - update eta_dot and omega_dot, apply via final_integrate
|
|
fix_nh.cpp: // all other levels - NVE update of v
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: double ave = 1.0/3.0 * (tensor[0] + tensor[1] + tensor[2]);
|
|
fix_nh.cpp: // switch order from xy-xz-yz to Voigt
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: // omega is not used, except for book-keeping
|
|
fix_nh.cpp: // convert pertinent atoms and rigid bodies to lamda coords
|
|
fix_nh.cpp: // reset global and local box to new size/shape
|
|
fix_nh.cpp: // this operation corresponds to applying the
|
|
fix_nh.cpp: // translate and scale operations
|
|
fix_nh.cpp: // corresponding to the solution of the following ODE:
|
|
fix_nh.cpp: //
|
|
fix_nh.cpp: // h_dot = omega_dot * h
|
|
fix_nh.cpp: //
|
|
fix_nh.cpp: // where h_dot, omega_dot and h are all upper-triangular
|
|
fix_nh.cpp: // 3x3 tensors. In Voigt notation, the elements of the
|
|
fix_nh.cpp: // RHS product tensor are:
|
|
fix_nh.cpp: // h_dot = [0*0, 1*1, 2*2, 1*3+3*2, 0*4+5*3+4*2, 0*5+5*1]
|
|
fix_nh.cpp: //
|
|
fix_nh.cpp: // Ordering of operations preserves time symmetry.
|
|
fix_nh.cpp: double dto2 = dto/2.0;
|
|
fix_nh.cpp: double dto4 = dto/4.0;
|
|
fix_nh.cpp: double dto8 = dto/8.0;
|
|
fix_nh.cpp: // off-diagonal components, first half
|
|
fix_nh.cpp: // scale diagonal components
|
|
fix_nh.cpp: // scale tilt factors with cell, if set
|
|
fix_nh.cpp: // off-diagonal components, second half
|
|
fix_nh.cpp: // tilt factor to cell length ratio can not exceed TILTMAX in one step
|
|
fix_nh.cpp: error->all(FLERR,"Fix npt/nph has tilted box too far in one step - "
|
|
fix_nh.cpp: // convert pertinent atoms and rigid bodies back to box coords
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: // reset id_temp of pressure to new temperature ID
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: // thermostat chain energy is equivalent to Eq. (2) in
|
|
fix_nh.cpp: // Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117
|
|
fix_nh.cpp: // Sum(0.5*p_eta_k^2/Q_k,k=1,M) + L*k*T*eta_1 + Sum(k*T*eta_k,k=2,M),
|
|
fix_nh.cpp: // where L = tdof
|
|
fix_nh.cpp: // M = mtchain
|
|
fix_nh.cpp: // p_eta_k = Q_k*eta_dot[k-1]
|
|
fix_nh.cpp: // Q_1 = L*k*T/t_freq^2
|
|
fix_nh.cpp: // Q_k = k*T/t_freq^2, k > 1
|
|
fix_nh.cpp: // barostat energy is equivalent to Eq. (8) in
|
|
fix_nh.cpp: // Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117
|
|
fix_nh.cpp: // Sum(0.5*p_omega^2/W + P*V),
|
|
fix_nh.cpp: // where N = natoms
|
|
fix_nh.cpp: // p_omega = W*omega_dot
|
|
fix_nh.cpp: // W = N*k*T/p_freq^2
|
|
fix_nh.cpp: // sum is over barostatted dimensions
|
|
fix_nh.cpp: p_hydro*(volume-vol0) / (pdim*nktv2p);
|
|
fix_nh.cpp: // extra contributions from thermostat chain for barostat
|
|
fix_nh.cpp: // extra contribution from strain energy
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: return p_hydro*(volume-vol0) / nktv2p;
|
|
fix_nh.cpp: return p_hydro*(volume-vol0) / (pdim*nktv2p);
|
|
fix_nh.cpp: return p_hydro*(volume-vol0) / (pdim*nktv2p);
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh.cpp: // If using respa, then remap is performed in innermost level
|
|
fix_nh.cpp: pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain);
|
|
fix_nh.cpp: tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain);
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: // Update masses, to preserve initial freq, if flag set
|
|
fix_nh.cpp: eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq);
|
|
fix_nh.cpp: eta_mass[ich] = boltz * t_target / (t_freq*t_freq);
|
|
fix_nh.cpp: eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0];
|
|
fix_nh.cpp: double ncfac = 1.0/nc_tchain;
|
|
fix_nh.cpp: // rescale temperature due to velocity scaling
|
|
fix_nh.cpp: // should not be necessary to explicitly recompute the temperature
|
|
fix_nh.cpp: eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0];
|
|
fix_nh.cpp: - boltz * t_target)/eta_mass[ich];
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: // Update masses, to preserve initial freq, if flag set
|
|
fix_nh.cpp: omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
|
|
fix_nh.cpp: if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
|
|
fix_nh.cpp: etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max);
|
|
fix_nh.cpp: etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max);
|
|
fix_nh.cpp: boltz * t_target) / etap_mass[ich];
|
|
fix_nh.cpp: etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0];
|
|
fix_nh.cpp: double ncfac = 1.0/nc_pchain;
|
|
fix_nh.cpp: etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0];
|
|
fix_nh.cpp: (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - boltz*t_target) /
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: dtfm = dtf / rmass[i];
|
|
fix_nh.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: // x update by full step only for atoms in group
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: // if nreset_h0 > 0, reset vol0 and h0_inv
|
|
fix_nh.cpp: // every nreset_h0 timesteps
|
|
fix_nh.cpp: // generate upper-triangular half of
|
|
fix_nh.cpp: // sigma = vol0*h0inv*(p_target-p_hydro)*h0inv^t
|
|
fix_nh.cpp: // units of sigma are are PV/L^2 e.g. atm.A
|
|
fix_nh.cpp: //
|
|
fix_nh.cpp: // [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ]
|
|
fix_nh.cpp: // [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ]
|
|
fix_nh.cpp: // [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ]
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: // compute strain energy = 0.5*Tr(sigma*h*h^t) in energy units
|
|
fix_nh.cpp: double energy = 0.5*(d0+d1+d2)/nktv2p;
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: // generate upper-triangular part of h*sigma*h^t
|
|
fix_nh.cpp: // units of fdev are are PV, e.g. atm*A^3
|
|
fix_nh.cpp: // [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ]
|
|
fix_nh.cpp: // [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ]
|
|
fix_nh.cpp: // [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ]
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_nh.cpp: if (pdim > 0) p_hydro /= pdim;
|
|
fix_nh.cpp: // if deviatoric, recompute sigma each time p_target changes
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh.cpp: mtk_term1 /= pdim * atom->natoms;
|
|
fix_nh.cpp: mtk_term1 /= pdim * atom->natoms;
|
|
fix_nh.cpp: f_omega = (p_current[i]-p_hydro)*volume /
|
|
fix_nh.cpp: (omega_mass[i] * nktv2p) + mtk_term1 / omega_mass[i];
|
|
fix_nh.cpp: if (deviatoric_flag) f_omega -= fdev[i]/(omega_mass[i] * nktv2p);
|
|
fix_nh.cpp: if (pdim > 0) mtk_term2 /= pdim * atom->natoms;
|
|
fix_nh.cpp: f_omega = p_current[i]*volume/(omega_mass[i] * nktv2p);
|
|
fix_nh.cpp: f_omega -= fdev[i]/(omega_mass[i] * nktv2p);
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp: this is b/c the box length would be changed (dramatically) by flip
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh.cpp: // flip is only triggered when tilt exceeds 0.5 by DELTAFLIP
|
|
fix_nh.cpp: // this avoids immediate re-flipping due to tilt oscillations
|
|
fix_nh.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh.cpp:------------------------------------------------------------------------- */
|
|
fix_nh_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nh_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nh_sphere.cpp:------------------------------------------------------------------------- */
|
|
fix_nh_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh_sphere.cpp:------------------------------------------------------------------------- */
|
|
fix_nh_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh_sphere.cpp: error->all(FLERR,"Fix nvt/nph/npt sphere requires atom style sphere");
|
|
fix_nh_sphere.cpp: // inertia = moment of inertia prefactor for sphere or disc
|
|
fix_nh_sphere.cpp: "Fix nvt/nph/npt sphere disc option requires 2d simulation");
|
|
fix_nh_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nh_sphere.cpp: // check that all particles are finite-size
|
|
fix_nh_sphere.cpp: // no point particles allowed
|
|
fix_nh_sphere.cpp: error->one(FLERR,"Fix nvt/npt/nph/sphere require extended particles");
|
|
fix_nh_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh_sphere.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh_sphere.cpp: // standard nve_v velocity update
|
|
fix_nh_sphere.cpp: // set timestep here since dt may have changed or come via rRESPA
|
|
fix_nh_sphere.cpp: double dtfrotate = dtf / inertia;
|
|
fix_nh_sphere.cpp: // update omega for all particles
|
|
fix_nh_sphere.cpp: // d_omega/dt = torque / inertia
|
|
fix_nh_sphere.cpp: // 4 cases depending on radius vs shape and rmass vs mass
|
|
fix_nh_sphere.cpp: dtirotate = dtfrotate / (radius[i]*radius[i]*rmass[i]);
|
|
fix_nh_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh_sphere.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh_sphere.cpp: // standard nve_x position update
|
|
fix_nh_sphere.cpp: // update mu for dipoles
|
|
fix_nh_sphere.cpp: // d_mu/dt = omega cross mu
|
|
fix_nh_sphere.cpp: // renormalize mu to dipole length
|
|
fix_nh_sphere.cpp: scale = mu[i][3]/sqrt(msq);
|
|
fix_nh_sphere.cpp: // Integrate orientation following Dullweber-Leimkuhler-Maclachlan scheme
|
|
fix_nh_sphere.cpp: // Construct Q from dipole:
|
|
fix_nh_sphere.cpp: // Q is the rotation matrix from space frame to body frame
|
|
fix_nh_sphere.cpp: // i.e. v_b = Q.v_s
|
|
fix_nh_sphere.cpp: // Define mu to lie along the z axis in the body frame
|
|
fix_nh_sphere.cpp: // We take the unit dipole to avoid getting a scaling matrix
|
|
fix_nh_sphere.cpp: inv_len_mu = 1.0/mu[i][3];
|
|
fix_nh_sphere.cpp: // v = a x [0 0 1] - cross product of mu in space and body frames
|
|
fix_nh_sphere.cpp: // s = |v|
|
|
fix_nh_sphere.cpp: // c = a.[0 0 1] = a[2]
|
|
fix_nh_sphere.cpp: // vx = [ 0 -v[2] v[1]
|
|
fix_nh_sphere.cpp: // v[2] 0 -v[0]
|
|
fix_nh_sphere.cpp: // -v[1] v[0] 0 ]
|
|
fix_nh_sphere.cpp: // then
|
|
fix_nh_sphere.cpp: // Q = I + vx + vx^2 * (1-c)/s^2
|
|
fix_nh_sphere.cpp: if (s2 != 0.0){ // i.e. the vectors are not parallel
|
|
fix_nh_sphere.cpp: scale = (1.0 - a[2])/s2;
|
|
fix_nh_sphere.cpp: } else { // if parallel then we just have I or -I
|
|
fix_nh_sphere.cpp: Q[0][0] = 1.0/a[2]; Q[0][1] = 0.0; Q[0][2] = 0.0;
|
|
fix_nh_sphere.cpp: Q[1][0] = 0.0; Q[1][1] = 1.0/a[2]; Q[1][2] = 0.0;
|
|
fix_nh_sphere.cpp: Q[2][0] = 0.0; Q[2][1] = 0.0; Q[2][2] = 1.0/a[2];
|
|
fix_nh_sphere.cpp: // Local copy of this particle's angular velocity (in space frame)
|
|
fix_nh_sphere.cpp: // Transform omega into body frame: w_temp= Q.w
|
|
fix_nh_sphere.cpp: // Construct rotation R1
|
|
fix_nh_sphere.cpp: BuildRxMatrix(R, dtf/force->ftm2v*w_temp[0]);
|
|
fix_nh_sphere.cpp: // Apply R1 to w: w = R.w_temp
|
|
fix_nh_sphere.cpp: // Apply R1 to Q: Q_temp = R^T.Q
|
|
fix_nh_sphere.cpp: // Construct rotation R2
|
|
fix_nh_sphere.cpp: BuildRyMatrix(R, dtf/force->ftm2v*w[1]);
|
|
fix_nh_sphere.cpp: // Apply R2 to w: w_temp = R.w
|
|
fix_nh_sphere.cpp: // Apply R2 to Q: Q = R^T.Q_temp
|
|
fix_nh_sphere.cpp: // Construct rotation R3
|
|
fix_nh_sphere.cpp: BuildRzMatrix(R, 2.0*dtf/force->ftm2v*w_temp[2]);
|
|
fix_nh_sphere.cpp: // Apply R3 to w: w = R.w_temp
|
|
fix_nh_sphere.cpp: // Apply R3 to Q: Q_temp = R^T.Q
|
|
fix_nh_sphere.cpp: // Construct rotation R4
|
|
fix_nh_sphere.cpp: BuildRyMatrix(R, dtf/force->ftm2v*w[1]);
|
|
fix_nh_sphere.cpp: // Apply R4 to w: w_temp = R.w
|
|
fix_nh_sphere.cpp: // Apply R4 to Q: Q = R^T.Q_temp
|
|
fix_nh_sphere.cpp: // Construct rotation R5
|
|
fix_nh_sphere.cpp: BuildRxMatrix(R, dtf/force->ftm2v*w_temp[0]);
|
|
fix_nh_sphere.cpp: // Apply R5 to w: w = R.w_temp
|
|
fix_nh_sphere.cpp: // Apply R5 to Q: Q_temp = R^T.Q
|
|
fix_nh_sphere.cpp: // Transform w back into space frame w_temp = Q^T.w
|
|
fix_nh_sphere.cpp: // Set dipole according to updated Q: mu = Q^T.[0 0 1] * |mu|
|
|
fix_nh_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nh_sphere.cpp:-----------------------------------------------------------------------*/
|
|
fix_nh_sphere.cpp: // standard nh_v_temp scaling
|
|
fix_nph.cpp:/* ----------------------------------------------------------------------
|
|
fix_nph.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nph.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nph.cpp:------------------------------------------------------------------------- */
|
|
fix_nph.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nph.cpp: // create a new compute temp style
|
|
fix_nph.cpp: // id = fix-ID + temp
|
|
fix_nph.cpp: // compute group = all since pressure is always global (group all)
|
|
fix_nph.cpp: // and thus its KE/temperature contribution should use group all
|
|
fix_nph.cpp: // create a new compute pressure style
|
|
fix_nph.cpp: // id = fix-ID + press, compute group = all
|
|
fix_nph.cpp: // pass id_temp as 4th arg to pressure constructor
|
|
fix_nph_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nph_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nph_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nph_sphere.cpp:------------------------------------------------------------------------- */
|
|
fix_nph_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nph_sphere.cpp: error->all(FLERR,"Temperature control can not be used with fix nph/sphere");
|
|
fix_nph_sphere.cpp: error->all(FLERR,"Pressure control must be used with fix nph/sphere");
|
|
fix_nph_sphere.cpp: // create a new compute temp style
|
|
fix_nph_sphere.cpp: // id = fix-ID + temp
|
|
fix_nph_sphere.cpp: // compute group = all since pressure is always global (group all)
|
|
fix_nph_sphere.cpp: // and thus its KE/temperature contribution should use group all
|
|
fix_nph_sphere.cpp: newarg[2] = (char *) "temp/sphere";
|
|
fix_nph_sphere.cpp: // create a new compute pressure style
|
|
fix_nph_sphere.cpp: // id = fix-ID + press, compute group = all
|
|
fix_nph_sphere.cpp: // pass id_temp as 4th arg to pressure constructor
|
|
fix_npt.cpp:/* ----------------------------------------------------------------------
|
|
fix_npt.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_npt.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_npt.cpp:------------------------------------------------------------------------- */
|
|
fix_npt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_npt.cpp: // create a new compute temp style
|
|
fix_npt.cpp: // id = fix-ID + temp
|
|
fix_npt.cpp: // compute group = all since pressure is always global (group all)
|
|
fix_npt.cpp: // and thus its KE/temperature contribution should use group all
|
|
fix_npt.cpp: // create a new compute pressure style
|
|
fix_npt.cpp: // id = fix-ID + press, compute group = all
|
|
fix_npt.cpp: // pass id_temp as 4th arg to pressure constructor
|
|
fix_npt_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_npt_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_npt_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_npt_sphere.cpp:------------------------------------------------------------------------- */
|
|
fix_npt_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_npt_sphere.cpp: error->all(FLERR,"Temperature control must be used with fix npt/sphere");
|
|
fix_npt_sphere.cpp: error->all(FLERR,"Pressure control must be used with fix npt/sphere");
|
|
fix_npt_sphere.cpp: // create a new compute temp style
|
|
fix_npt_sphere.cpp: // id = fix-ID + temp
|
|
fix_npt_sphere.cpp: // compute group = all since pressure is always global (group all)
|
|
fix_npt_sphere.cpp: // and thus its KE/temperature contribution should use group all
|
|
fix_npt_sphere.cpp: newarg[2] = (char *) "temp/sphere";
|
|
fix_npt_sphere.cpp: // create a new compute pressure style
|
|
fix_npt_sphere.cpp: // id = fix-ID + press, compute group = all
|
|
fix_npt_sphere.cpp: // pass id_temp as 4th arg to pressure constructor
|
|
fix_nve.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nve.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nve.cpp:------------------------------------------------------------------------- */
|
|
fix_nve.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve.cpp: if (strcmp(style,"nve/sphere") != 0 && narg < 3)
|
|
fix_nve.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve.cpp:------------------------------------------------------------------------- */
|
|
fix_nve.cpp: // update v and x of atoms in group
|
|
fix_nve.cpp: dtfm = dtf / rmass[i];
|
|
fix_nve.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_nve.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve.cpp: // update v of atoms in group
|
|
fix_nve.cpp: dtfm = dtf / rmass[i];
|
|
fix_nve.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_nve.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve.cpp: // innermost level - NVE update of v and x
|
|
fix_nve.cpp: // all other levels - NVE update of v
|
|
fix_nve.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve_limit.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nve_limit.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nve_limit.cpp:------------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp: if (narg != 4) error->all(FLERR,"Illegal fix nve/limit command");
|
|
fix_nve_limit.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp: vlimitsq = (xlimit/dtv) * (xlimit/dtv);
|
|
fix_nve_limit.cpp: // warn if using fix shake, which will lead to invalid constraint forces
|
|
fix_nve_limit.cpp: error->warning(FLERR,"Should not use fix nve/limit with fix shake or fix rattle");
|
|
fix_nve_limit.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve_limit.cpp:------------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp: dtfm = dtf / rmass[i];
|
|
fix_nve_limit.cpp: scale = sqrt(vlimitsq/vsq);
|
|
fix_nve_limit.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_nve_limit.cpp: scale = sqrt(vlimitsq/vsq);
|
|
fix_nve_limit.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp: dtfm = dtf / rmass[i];
|
|
fix_nve_limit.cpp: scale = sqrt(vlimitsq/vsq);
|
|
fix_nve_limit.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_nve_limit.cpp: scale = sqrt(vlimitsq/vsq);
|
|
fix_nve_limit.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_limit.cpp: vlimitsq = (xlimit/dtv) * (xlimit/dtv);
|
|
fix_nve_limit.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve_limit.cpp:------------------------------------------------------------------------- */
|
|
fix_nve_noforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve_noforce.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nve_noforce.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nve_noforce.cpp:------------------------------------------------------------------------- */
|
|
fix_nve_noforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_noforce.cpp: if (narg != 3) error->all(FLERR,"Illegal fix nve/noforce command");
|
|
fix_nve_noforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_noforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_noforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_noforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_noforce.cpp: if (flag) return; // only used by NPT,NPH
|
|
fix_nve_noforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nve_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nve_sphere.cpp:------------------------------------------------------------------------- */
|
|
fix_nve_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_sphere.cpp: if (narg < 3) error->all(FLERR,"Illegal fix nve/sphere command");
|
|
fix_nve_sphere.cpp: // process extra keywords
|
|
fix_nve_sphere.cpp: // inertia = moment of inertia prefactor for sphere or disc
|
|
fix_nve_sphere.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix nve/sphere command");
|
|
fix_nve_sphere.cpp: else if (strcmp(arg[iarg+1],"dipole/dlm") == 0) {
|
|
fix_nve_sphere.cpp: } else error->all(FLERR,"Illegal fix nve/sphere command");
|
|
fix_nve_sphere.cpp: error->all(FLERR,"Fix nve/sphere disc requires 2d simulation");
|
|
fix_nve_sphere.cpp: else error->all(FLERR,"Illegal fix nve/sphere command");
|
|
fix_nve_sphere.cpp: // error checks
|
|
fix_nve_sphere.cpp: error->all(FLERR,"Fix nve/sphere requires atom style sphere");
|
|
fix_nve_sphere.cpp: error->all(FLERR,"Fix nve/sphere update dipole requires atom attribute mu");
|
|
fix_nve_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_sphere.cpp: // check that all particles are finite-size spheres
|
|
fix_nve_sphere.cpp: // no point particles allowed
|
|
fix_nve_sphere.cpp: error->one(FLERR,"Fix nve/sphere requires extended particles");
|
|
fix_nve_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_sphere.cpp: // set timestep here since dt may have changed or come via rRESPA
|
|
fix_nve_sphere.cpp: double dtfrotate = dtf / inertia;
|
|
fix_nve_sphere.cpp: // update v,x,omega for all particles
|
|
fix_nve_sphere.cpp: // d_omega/dt = torque / inertia
|
|
fix_nve_sphere.cpp: dtfm = dtf / rmass[i];
|
|
fix_nve_sphere.cpp: dtirotate = dtfrotate / (radius[i]*radius[i]*rmass[i]);
|
|
fix_nve_sphere.cpp: // update mu for dipoles
|
|
fix_nve_sphere.cpp: // d_mu/dt = omega cross mu
|
|
fix_nve_sphere.cpp: // renormalize mu to dipole length
|
|
fix_nve_sphere.cpp: scale = mu[i][3]/sqrt(msq);
|
|
fix_nve_sphere.cpp: // integrate orientation following Dullweber-Leimkuhler-Maclachlan scheme
|
|
fix_nve_sphere.cpp: // Construct Q from dipole:
|
|
fix_nve_sphere.cpp: // Q is the rotation matrix from space frame to body frame
|
|
fix_nve_sphere.cpp: // i.e. v_b = Q.v_s
|
|
fix_nve_sphere.cpp: // define mu to lie along the z axis in the body frame
|
|
fix_nve_sphere.cpp: // take the unit dipole to avoid getting a scaling matrix
|
|
fix_nve_sphere.cpp: inv_len_mu = 1.0/mu[i][3];
|
|
fix_nve_sphere.cpp: // v = a x [0 0 1] - cross product of mu in space and body frames
|
|
fix_nve_sphere.cpp: // s = |v|
|
|
fix_nve_sphere.cpp: // c = a.[0 0 1] = a[2]
|
|
fix_nve_sphere.cpp: // vx = [ 0 -v[2] v[1]
|
|
fix_nve_sphere.cpp: // v[2] 0 -v[0]
|
|
fix_nve_sphere.cpp: // -v[1] v[0] 0 ]
|
|
fix_nve_sphere.cpp: // then
|
|
fix_nve_sphere.cpp: // Q = I + vx + vx^2 * (1-c)/s^2
|
|
fix_nve_sphere.cpp: if (s2 != 0.0){ // i.e. the vectors are not parallel
|
|
fix_nve_sphere.cpp: scale = (1.0 - a[2])/s2;
|
|
fix_nve_sphere.cpp: } else { // if parallel then we just have I or -I
|
|
fix_nve_sphere.cpp: Q[0][0] = 1.0/a[2]; Q[0][1] = 0.0; Q[0][2] = 0.0;
|
|
fix_nve_sphere.cpp: Q[1][0] = 0.0; Q[1][1] = 1.0/a[2]; Q[1][2] = 0.0;
|
|
fix_nve_sphere.cpp: Q[2][0] = 0.0; Q[2][1] = 0.0; Q[2][2] = 1.0/a[2];
|
|
fix_nve_sphere.cpp: // Local copy of this particle's angular velocity (in space frame)
|
|
fix_nve_sphere.cpp: // Transform omega into body frame: w_temp= Q.w
|
|
fix_nve_sphere.cpp: // Construct rotation R1
|
|
fix_nve_sphere.cpp: BuildRxMatrix(R, dtf/force->ftm2v*w_temp[0]);
|
|
fix_nve_sphere.cpp: // Apply R1 to w: w = R.w_temp
|
|
fix_nve_sphere.cpp: // Apply R1 to Q: Q_temp = R^T.Q
|
|
fix_nve_sphere.cpp: // Construct rotation R2
|
|
fix_nve_sphere.cpp: BuildRyMatrix(R, dtf/force->ftm2v*w[1]);
|
|
fix_nve_sphere.cpp: // Apply R2 to w: w_temp = R.w
|
|
fix_nve_sphere.cpp: // Apply R2 to Q: Q = R^T.Q_temp
|
|
fix_nve_sphere.cpp: // Construct rotation R3
|
|
fix_nve_sphere.cpp: BuildRzMatrix(R, 2.0*dtf/force->ftm2v*w_temp[2]);
|
|
fix_nve_sphere.cpp: // Apply R3 to w: w = R.w_temp
|
|
fix_nve_sphere.cpp: // Apply R3 to Q: Q_temp = R^T.Q
|
|
fix_nve_sphere.cpp: // Construct rotation R4
|
|
fix_nve_sphere.cpp: BuildRyMatrix(R, dtf/force->ftm2v*w[1]);
|
|
fix_nve_sphere.cpp: // Apply R4 to w: w_temp = R.w
|
|
fix_nve_sphere.cpp: // Apply R4 to Q: Q = R^T.Q_temp
|
|
fix_nve_sphere.cpp: // Construct rotation R5
|
|
fix_nve_sphere.cpp: BuildRxMatrix(R, dtf/force->ftm2v*w_temp[0]);
|
|
fix_nve_sphere.cpp: // Apply R5 to w: w = R.w_temp
|
|
fix_nve_sphere.cpp: // Apply R5 to Q: Q_temp = R^T.Q
|
|
fix_nve_sphere.cpp: // Transform w back into space frame w_temp = Q^T.w
|
|
fix_nve_sphere.cpp: // Set dipole according to updated Q: mu = Q^T.[0 0 1] * |mu|
|
|
fix_nve_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_sphere.cpp: // set timestep here since dt may have changed or come via rRESPA
|
|
fix_nve_sphere.cpp: double dtfrotate = dtf / inertia;
|
|
fix_nve_sphere.cpp: // update v,omega for all particles
|
|
fix_nve_sphere.cpp: // d_omega/dt = torque / inertia
|
|
fix_nve_sphere.cpp: dtfm = dtf / rmass[i];
|
|
fix_nve_sphere.cpp: dtirotate = dtfrotate / (radius[i]*radius[i]*rmass[i]);
|
|
fix_nve_spin.cpp:/* ----------------------------------------------------------------------
|
|
fix_nve_spin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nve_spin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nve_spin.cpp:------------------------------------------------------------------------- */
|
|
fix_nve_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_spin.cpp: if (narg < 3) error->all(FLERR,"Illegal fix nve/spin command");
|
|
fix_nve_spin.cpp: if (strcmp(arg[iarg],"nve/spin") == 0) {
|
|
fix_nve_spin.cpp: if (iarg+1 > narg) error->all(FLERR,"Illegal fix nve/spin command");
|
|
fix_nve_spin.cpp: // error checks
|
|
fix_nve_spin.cpp: error->all(FLERR,"Fix nve/spin requires spin attribute mumag");
|
|
fix_nve_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_spin.cpp: /*int idamp;
|
|
fix_nve_spin.cpp: if (strstr(modify->fix[idamp]->style,"damping/spin")) break;
|
|
fix_nve_spin.cpp: */
|
|
fix_nve_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_spin.cpp: // Advance half spins all particles
|
|
fix_nve_spin.cpp: //See Omelyan et al., PRL 86, 2001 and P.W. Ma et al, PRB 83, 2011
|
|
fix_nve_spin.cpp: // update half v all particles
|
|
fix_nve_spin.cpp: if (rmass) dtfm = dtf / rmass[i];
|
|
fix_nve_spin.cpp: else dtfm = dtf / mass[type[i]];
|
|
fix_nve_spin.cpp: // update x for all particles
|
|
fix_nve_spin.cpp://#define FORCE_PRINT
|
|
fix_nve_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_spin.cpp: // regular communication vs neighbor list rebuild
|
|
fix_nve_spin.cpp: // force computations
|
|
fix_nve_spin.cpp: // important for pair to come before bonded contributions
|
|
fix_nve_spin.cpp: // since some bonded potentials tally pairwise energy/virial
|
|
fix_nve_spin.cpp: // and Pair:ev_tally() needs to be called before any tallying
|
|
fix_nve_spin.cpp: // reverse communication of forces
|
|
fix_nve_spin.cpp: // force modifications
|
|
fix_nve_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_spin.cpp: g[0] /= (1+0.25*fm2*dts*dts);
|
|
fix_nve_spin.cpp: g[1] /= (1+0.25*fm2*dts*dts);
|
|
fix_nve_spin.cpp: g[2] /= (1+0.25*fm2*dts*dts);
|
|
fix_nve_spin.cpp: //Renormalization (may not be necessary)
|
|
fix_nve_spin.cpp: scale = 1.0/sqrt(msq);
|
|
fix_nve_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nve_spin.cpp: // update half v for all particles
|
|
fix_nve_spin.cpp: if (rmass) dtfm = dtf / rmass[i];
|
|
fix_nve_spin.cpp: else dtfm = dtf / mass[type[i]];
|
|
fix_nve_spin.cpp: // Advance half spins all particles
|
|
fix_nve_spin.cpp: //See Omelyan et al., PRL 86, 2001 and P.W. Ma et al, PRB 83, 2011
|
|
fix_nvt.cpp:/* ----------------------------------------------------------------------
|
|
fix_nvt.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nvt.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nvt.cpp:------------------------------------------------------------------------- */
|
|
fix_nvt.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nvt.cpp: // create a new compute temp style
|
|
fix_nvt.cpp: // id = fix-ID + temp
|
|
fix_nvt_sllod.cpp:/* ----------------------------------------------------------------------
|
|
fix_nvt_sllod.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nvt_sllod.cpp: www.cs.sandia.gov/~sjplimp/lammps.html
|
|
fix_nvt_sllod.cpp:------------------------------------------------------------------------- */
|
|
fix_nvt_sllod.cpp:/* ----------------------------------------------------------------------
|
|
fix_nvt_sllod.cpp:------------------------------------------------------------------------- */
|
|
fix_nvt_sllod.cpp:enum{NO_REMAP,X_REMAP,V_REMAP}; // same as fix_deform.cpp
|
|
fix_nvt_sllod.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nvt_sllod.cpp: error->all(FLERR,"Temperature control must be used with fix nvt/sllod");
|
|
fix_nvt_sllod.cpp: error->all(FLERR,"Pressure control can not be used with fix nvt/sllod");
|
|
fix_nvt_sllod.cpp: // default values
|
|
fix_nvt_sllod.cpp: // create a new compute temp style
|
|
fix_nvt_sllod.cpp: // id = fix-ID + temp
|
|
fix_nvt_sllod.cpp: newarg[2] = (char *) "temp/deform";
|
|
fix_nvt_sllod.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nvt_sllod.cpp: error->all(FLERR,"Temperature for fix nvt/sllod does not have a bias");
|
|
fix_nvt_sllod.cpp: if (strcmp(temperature->style,"temp/deform") != 0) nondeformbias = 1;
|
|
fix_nvt_sllod.cpp: // check fix deform remap settings
|
|
fix_nvt_sllod.cpp: error->all(FLERR,"Using fix nvt/sllod with inconsistent fix deform "
|
|
fix_nvt_sllod.cpp: error->all(FLERR,"Using fix nvt/sllod with no fix deform defined");
|
|
fix_nvt_sllod.cpp:/* ----------------------------------------------------------------------
|
|
fix_nvt_sllod.cpp:-----------------------------------------------------------------------*/
|
|
fix_nvt_sllod.cpp: // remove and restore bias = streaming velocity = Hrate*lamda + Hratelo
|
|
fix_nvt_sllod.cpp: // thermostat thermal velocity only
|
|
fix_nvt_sllod.cpp: // vdelu = SLLOD correction = Hrate*Hinv*vthermal
|
|
fix_nvt_sllod.cpp: // for non temp/deform BIAS:
|
|
fix_nvt_sllod.cpp: // calculate temperature since some computes require temp
|
|
fix_nvt_sllod.cpp: // computed on current nlocal atoms to remove bias
|
|
fix_nvt_sphere.cpp:/* ----------------------------------------------------------------------
|
|
fix_nvt_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_nvt_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_nvt_sphere.cpp:------------------------------------------------------------------------- */
|
|
fix_nvt_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_nvt_sphere.cpp: error->all(FLERR,"Temperature control must be used with fix nvt/sphere");
|
|
fix_nvt_sphere.cpp: error->all(FLERR,"Pressure control can not be used with fix nvt/sphere");
|
|
fix_nvt_sphere.cpp: // create a new compute temp style
|
|
fix_nvt_sphere.cpp: // id = fix-ID + temp
|
|
fix_nvt_sphere.cpp: newarg[2] = (char *) "temp/sphere";
|
|
fix_planeforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_planeforce.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_planeforce.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_planeforce.cpp:------------------------------------------------------------------------- */
|
|
fix_planeforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_planeforce.cpp: xdir /= len;
|
|
fix_planeforce.cpp: ydir /= len;
|
|
fix_planeforce.cpp: zdir /= len;
|
|
fix_planeforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_planeforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_planeforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_planeforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_planeforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_planeforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp:/* ----------------------------------------------------------------------
|
|
fix_press_berendsen.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_press_berendsen.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_press_berendsen.cpp:------------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: if (narg < 5) error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: // Berendsen barostat applied every step
|
|
fix_press_berendsen.cpp: // default values
|
|
fix_press_berendsen.cpp: // process keywords
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen for a 2d simulation");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: else error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: else error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: } else error->all(FLERR,"Illegal fix press/berendsen command");
|
|
fix_press_berendsen.cpp: // error checks
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen for a 2d simulation");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen for a 2d simulation");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: "Cannot use fix press/berendsen on a non-periodic dimension");
|
|
fix_press_berendsen.cpp: "Cannot use fix press/berendsen on a non-periodic dimension");
|
|
fix_press_berendsen.cpp: "Cannot use fix press/berendsen on a non-periodic dimension");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Invalid fix press/berendsen pressure settings");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Fix press/berendsen damping parameters must be > 0.0");
|
|
fix_press_berendsen.cpp: // pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof
|
|
fix_press_berendsen.cpp: // else pstyle = ANISO -> 3 dof
|
|
fix_press_berendsen.cpp: // create a new compute temp style
|
|
fix_press_berendsen.cpp: // id = fix-ID + temp
|
|
fix_press_berendsen.cpp: // compute group = all since pressure is always global (group all)
|
|
fix_press_berendsen.cpp: // and thus its KE/temperature contribution should use group all
|
|
fix_press_berendsen.cpp: // create a new compute pressure style
|
|
fix_press_berendsen.cpp: // id = fix-ID + press, compute group = all
|
|
fix_press_berendsen.cpp: // pass id_temp as 4th arg to pressure constructor
|
|
fix_press_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: // delete temperature and pressure if fix created them
|
|
fix_press_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Cannot use fix press/berendsen with triclinic box");
|
|
fix_press_berendsen.cpp: // insure no conflict with fix deform
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Cannot use fix press/berendsen and "
|
|
fix_press_berendsen.cpp: // set temperature and pressure ptrs
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Temperature ID for fix press/berendsen does not exist");
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Pressure ID for fix press/berendsen does not exist");
|
|
fix_press_berendsen.cpp: // Kspace setting
|
|
fix_press_berendsen.cpp: // detect if any rigid fixes exist so rigid bodies move when box is remapped
|
|
fix_press_berendsen.cpp: // rfix[] = indices to each fix rigid
|
|
fix_press_berendsen.cpp:/* ----------------------------------------------------------------------
|
|
fix_press_berendsen.cpp:------------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: // trigger virial computation on next timestep
|
|
fix_press_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: // compute new T,P
|
|
fix_press_berendsen.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_press_berendsen.cpp: pow(1.0 - update->dt/p_period[i] *
|
|
fix_press_berendsen.cpp: (p_target[i]-p_current[i])/bulkmodulus,1.0/3.0);
|
|
fix_press_berendsen.cpp: // remap simulation box and atoms
|
|
fix_press_berendsen.cpp: // redo KSpace coeffs since volume has changed
|
|
fix_press_berendsen.cpp: // trigger virial computation on next timestep
|
|
fix_press_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: double ave = 1.0/3.0 * (tensor[0] + tensor[1] + tensor[2]);
|
|
fix_press_berendsen.cpp:/* ----------------------------------------------------------------------
|
|
fix_press_berendsen.cpp:------------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: // convert pertinent atoms and rigid bodies to lamda coords
|
|
fix_press_berendsen.cpp: // reset global and local box to new size/shape
|
|
fix_press_berendsen.cpp: // convert pertinent atoms and rigid bodies back to box coords
|
|
fix_press_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_press_berendsen.cpp: // reset id_temp of pressure to new temperature ID
|
|
fix_press_berendsen.cpp: error->all(FLERR,"Pressure ID for fix press/berendsen does not exist");
|
|
fix_print.cpp:/* ----------------------------------------------------------------------
|
|
fix_print.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_print.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_print.cpp:------------------------------------------------------------------------- */
|
|
fix_print.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_print.cpp: copy = (char *) memory->smalloc(n*sizeof(char),"fix/print:copy");
|
|
fix_print.cpp: work = (char *) memory->smalloc(n*sizeof(char),"fix/print:work");
|
|
fix_print.cpp: // parse optional args
|
|
fix_print.cpp: // print file comment line
|
|
fix_print.cpp: // add nfirst to all computes that store invocation times
|
|
fix_print.cpp: // since don't know a priori which are invoked via variables by this fix
|
|
fix_print.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_print.cpp: const bigint nfirst = (update->ntimestep/nevery)*nevery + nevery;
|
|
fix_print.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_print.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_print.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_print.cpp: // make a copy of string to work on
|
|
fix_print.cpp: // substitute for $ variables (no printing)
|
|
fix_print.cpp: // append a newline and print final copy
|
|
fix_print.cpp: // variable evaluation may invoke computes so wrap with clear/add
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_property_atom.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_property_atom.cpp: if (narg < 4) error->all(FLERR,"Illegal fix property/atom command");
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom mol when atom_style "
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom cannot specify mol twice");
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom q when atom_style "
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom cannot specify q twice");
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom rmass when atom_style "
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom cannot specify rmass twice");
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom vector name already exists");
|
|
fix_property_atom.cpp: error->all(FLERR,"Fix property/atom vector name already exists");
|
|
fix_property_atom.cpp: // optional args
|
|
fix_property_atom.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix property/atom command");
|
|
fix_property_atom.cpp: else error->all(FLERR,"Illegal fix property/atom command");
|
|
fix_property_atom.cpp: } else error->all(FLERR,"Illegal fix property/atom command");
|
|
fix_property_atom.cpp: // warn if mol or charge keyword used without ghost yes
|
|
fix_property_atom.cpp: error->warning(FLERR,"Fix property/atom mol or charge or rmass "
|
|
fix_property_atom.cpp: "w/out ghost communication");
|
|
fix_property_atom.cpp: // store current atom style
|
|
fix_property_atom.cpp: // perform initial allocation of atom-based array
|
|
fix_property_atom.cpp: // register with Atom class
|
|
fix_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_property_atom.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_property_atom.cpp: // deallocate per-atom vectors in Atom class
|
|
fix_property_atom.cpp: // set ptrs to NULL, so they no longer exist for Atom class
|
|
fix_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_property_atom.cpp: // error if atom style has changed since fix was defined
|
|
fix_property_atom.cpp: // don't allow this b/c user could change to style that defines molecule,q
|
|
fix_property_atom.cpp: error->all(FLERR,"Atom style was redefined after using fix property/atom");
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp: // loop over lines of atom info
|
|
fix_property_atom.cpp: // tokenize the line into values
|
|
fix_property_atom.cpp: // if I own atom tag, unpack its values
|
|
fix_property_atom.cpp: // assign words in line to per-atom vectors
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp: // 1st column = atom tag
|
|
fix_property_atom.cpp: // rest of columns = per-atom values
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp: // skip to Nth set of extra values
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_property_atom.cpp:/* ----------------------------------------------------------------------
|
|
fix_property_atom.cpp:------------------------------------------------------------------------- */
|
|
fix_read_restart.cpp:/* ----------------------------------------------------------------------
|
|
fix_read_restart.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_read_restart.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_read_restart.cpp:------------------------------------------------------------------------- */
|
|
fix_read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_read_restart.cpp: // perform initial allocation of atom-based array
|
|
fix_read_restart.cpp: // register with Atom class
|
|
fix_read_restart.cpp: // extra = copy of atom->extra
|
|
fix_read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_read_restart.cpp: // unregister callback to this fix from Atom class
|
|
fix_read_restart.cpp: // delete locally stored arrays
|
|
fix_read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_read_restart.cpp:/* ----------------------------------------------------------------------
|
|
fix_read_restart.cpp:------------------------------------------------------------------------- */
|
|
fix_read_restart.cpp:/* ----------------------------------------------------------------------
|
|
fix_read_restart.cpp:------------------------------------------------------------------------- */
|
|
fix_read_restart.cpp:/* ----------------------------------------------------------------------
|
|
fix_read_restart.cpp:------------------------------------------------------------------------- */
|
|
fix_read_restart.cpp:/* ----------------------------------------------------------------------
|
|
fix_read_restart.cpp:------------------------------------------------------------------------- */
|
|
fix_read_restart.cpp:/* ----------------------------------------------------------------------
|
|
fix_read_restart.cpp:------------------------------------------------------------------------- */
|
|
fix_recenter.cpp:/* ----------------------------------------------------------------------
|
|
fix_recenter.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_recenter.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_recenter.cpp:------------------------------------------------------------------------- */
|
|
fix_recenter.cpp:/* ----------------------------------------------------------------------
|
|
fix_recenter.cpp:------------------------------------------------------------------------- */
|
|
fix_recenter.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_recenter.cpp: // optional args
|
|
fix_recenter.cpp: // scale xcom,ycom,zcom
|
|
fix_recenter.cpp: // cannot have 0 atoms in group
|
|
fix_recenter.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_recenter.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_recenter.cpp: // warn if any integrate fix comes after this one
|
|
fix_recenter.cpp: // if any components of requested COM were INIT, store initial COM
|
|
fix_recenter.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_recenter.cpp: // target COM
|
|
fix_recenter.cpp: // bounding box around domain works for both orthogonal and triclinic
|
|
fix_recenter.cpp: // current COM
|
|
fix_recenter.cpp: // shift coords by difference between actual COM and requested COM
|
|
fix_recenter.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_recenter.cpp: // outermost level - operate recenter
|
|
fix_recenter.cpp: // all other levels - nothing
|
|
fix_recenter.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_recenter.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_respa.cpp:/* ----------------------------------------------------------------------
|
|
fix_respa.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_respa.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_respa.cpp:------------------------------------------------------------------------- */
|
|
fix_respa.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_respa.cpp: // nlevels = # of rRESPA levels
|
|
fix_respa.cpp: // optional arguments
|
|
fix_respa.cpp: // perform initial allocation of atom-based arrays
|
|
fix_respa.cpp: // register with Atom class
|
|
fix_respa.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_respa.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_respa.cpp: // delete locally stored arrays
|
|
fix_respa.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_respa.cpp:/* ----------------------------------------------------------------------
|
|
fix_respa.cpp:------------------------------------------------------------------------- */
|
|
fix_respa.cpp:/* ----------------------------------------------------------------------
|
|
fix_respa.cpp:------------------------------------------------------------------------- */
|
|
fix_respa.cpp:/* ----------------------------------------------------------------------
|
|
fix_respa.cpp:------------------------------------------------------------------------- */
|
|
fix_respa.cpp:/* ----------------------------------------------------------------------
|
|
fix_respa.cpp:------------------------------------------------------------------------- */
|
|
fix_respa.cpp:/* ----------------------------------------------------------------------
|
|
fix_respa.cpp:------------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ----------------------------------------------------------------------
|
|
fix_restrain.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_restrain.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_restrain.cpp:------------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ----------------------------------------------------------------------
|
|
fix_restrain.cpp:------------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp: // parse args
|
|
fix_restrain.cpp: target[nrestrain] *= MY_PI / 180.0;
|
|
fix_restrain.cpp: target[nrestrain] *= MY_PI / 180.0;
|
|
fix_restrain.cpp: // require atom map to lookup atom IDs
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_restrain.cpp:/* ----------------------------------------------------------------------
|
|
fix_restrain.cpp:---------------------------------------------------------------------- */
|
|
fix_restrain.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_restrain.cpp: // newton_bond on: only processor owning i2 computes restraint
|
|
fix_restrain.cpp: // newton_bond off: only processors owning either of i1,i2 computes restraint
|
|
fix_restrain.cpp: // force & energy
|
|
fix_restrain.cpp: if (r > 0.0) fbond = -2.0*rk/r;
|
|
fix_restrain.cpp: // apply force to each of 2 atoms
|
|
fix_restrain.cpp:/* ----------------------------------------------------------------------
|
|
fix_restrain.cpp:---------------------------------------------------------------------- */
|
|
fix_restrain.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_restrain.cpp: // newton_bond on: only processor owning i2 computes restraint
|
|
fix_restrain.cpp: // newton_bond off: only processors owning any of i1-i3 computes restraint
|
|
fix_restrain.cpp: // 1st bond
|
|
fix_restrain.cpp: // 2nd bond
|
|
fix_restrain.cpp: // angle (cos and sin)
|
|
fix_restrain.cpp: c /= r1*r2;
|
|
fix_restrain.cpp: s = 1.0/s;
|
|
fix_restrain.cpp: // force & energy
|
|
fix_restrain.cpp: a11 = a*c / rsq1;
|
|
fix_restrain.cpp: a12 = -a / (r1*r2);
|
|
fix_restrain.cpp: a22 = a*c / rsq2;
|
|
fix_restrain.cpp: // apply force to each of 3 atoms
|
|
fix_restrain.cpp:/* ----------------------------------------------------------------------
|
|
fix_restrain.cpp:---------------------------------------------------------------------- */
|
|
fix_restrain.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_restrain.cpp: // newton_bond on: only processor owning i2 computes restraint
|
|
fix_restrain.cpp: // newton_bond off: only processors owning any of i1-i4 computes restraint
|
|
fix_restrain.cpp: // 1st bond
|
|
fix_restrain.cpp: // 2nd bond
|
|
fix_restrain.cpp: // 3rd bond
|
|
fix_restrain.cpp: if (rg > 0) rginv = 1.0/rg;
|
|
fix_restrain.cpp: if (rasq > 0) ra2inv = 1.0/rasq;
|
|
fix_restrain.cpp: if (rbsq > 0) rb2inv = 1.0/rbsq;
|
|
fix_restrain.cpp: // error check
|
|
fix_restrain.cpp: mult = 1; // multiplicity
|
|
fix_restrain.cpp: // apply force to each of 4 atoms
|
|
fix_restrain.cpp:/* ----------------------------------------------------------------------
|
|
fix_restrain.cpp:------------------------------------------------------------------------- */
|
|
fix_setforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_setforce.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_setforce.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_setforce.cpp:------------------------------------------------------------------------- */
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp: // optional args
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp: // check variables
|
|
fix_setforce.cpp: // set index and check validity of region
|
|
fix_setforce.cpp: // cannot use non-zero forces for a minimization since no energy is integrated
|
|
fix_setforce.cpp: // use fix addforce instead
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp: // update region if necessary
|
|
fix_setforce.cpp: // reallocate sforce array if necessary
|
|
fix_setforce.cpp: // variable force, wrap with clear/add
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp: // set force to desired value on requested level, 0.0 on other levels
|
|
fix_setforce.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_setforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_setforce.cpp:------------------------------------------------------------------------- */
|
|
fix_setforce.cpp: // only sum across procs one time
|
|
fix_setforce.cpp:/* ----------------------------------------------------------------------
|
|
fix_setforce.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_shear_history.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: if (newton_pair) comm_reverse = 1; // just for single npartner value
|
|
fix_shear_history.cpp: // variable-size history communicated via
|
|
fix_shear_history.cpp: // reverse_comm_fix_variable()
|
|
fix_shear_history.cpp: // perform initial allocation of atom-based arrays
|
|
fix_shear_history.cpp: // register with atom class
|
|
fix_shear_history.cpp: // initialize npartner to 0 so neighbor list creation is OK the 1st time
|
|
fix_shear_history.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // unregister this fix so atom class doesn't invoke it any more
|
|
fix_shear_history.cpp: // delete locally stored arrays
|
|
fix_shear_history.cpp: // to better detect use-after-delete errors
|
|
fix_shear_history.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp: create pages if first time or if neighbor pgsize/oneatom has changed
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp: b/c there is no guarantee of a current neigh list (even on continued run)
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp: onesided version for sphere contact with line/tri particles
|
|
fix_shear_history.cpp: neighbor list has I = sphere, J = line/tri
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // NOTE: all operations until very end are with nlocal_neigh <= current nlocal
|
|
fix_shear_history.cpp: // b/c previous neigh list was built with nlocal_neigh
|
|
fix_shear_history.cpp: // nlocal can be larger if other fixes added atoms at this pre_exchange()
|
|
fix_shear_history.cpp: // zero npartner for owned atoms
|
|
fix_shear_history.cpp: // clear 2 page data structures
|
|
fix_shear_history.cpp: // 1st loop over neighbor list, I = sphere, J = tri
|
|
fix_shear_history.cpp: // only calculate npartner for owned spheres
|
|
fix_shear_history.cpp: // get page chunks to store atom IDs and shear history for owned atoms
|
|
fix_shear_history.cpp: // 2nd loop over neighbor list, I = sphere, J = tri
|
|
fix_shear_history.cpp: // store atom IDs and shear history for owned spheres
|
|
fix_shear_history.cpp: // re-zero npartner to use as counter
|
|
fix_shear_history.cpp: // set maxtouch = max # of partners of any owned atom
|
|
fix_shear_history.cpp: // bump up comm->maxexchange_fix if necessary
|
|
fix_shear_history.cpp: // zero npartner values from previous nlocal_neigh to current nlocal
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp: newton on version, for sphere/sphere contacts
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // NOTE: all operations until very end are with
|
|
fix_shear_history.cpp: // nlocal_neigh <= current nlocal and nall_neigh
|
|
fix_shear_history.cpp: // b/c previous neigh list was built with nlocal_neigh,nghost_neigh
|
|
fix_shear_history.cpp: // nlocal can be larger if other fixes added atoms at this pre_exchange()
|
|
fix_shear_history.cpp: // zero npartner for owned+ghost atoms
|
|
fix_shear_history.cpp: // clear 2 page data structures
|
|
fix_shear_history.cpp: // 1st loop over neighbor list
|
|
fix_shear_history.cpp: // calculate npartner for owned+ghost atoms
|
|
fix_shear_history.cpp: // perform reverse comm to augment owned npartner counts with ghost counts
|
|
fix_shear_history.cpp: // get page chunks to store atom IDs and shear history for owned+ghost atoms
|
|
fix_shear_history.cpp: // 2nd loop over neighbor list
|
|
fix_shear_history.cpp: // store atom IDs and shear history for owned+ghost atoms
|
|
fix_shear_history.cpp: // re-zero npartner to use as counter
|
|
fix_shear_history.cpp: // perform reverse comm to augment
|
|
fix_shear_history.cpp: // owned atom partner/shearpartner with ghost info
|
|
fix_shear_history.cpp: // use variable variant b/c size of packed data can be arbitrarily large
|
|
fix_shear_history.cpp: // if many touching neighbors for large particle
|
|
fix_shear_history.cpp: // set maxtouch = max # of partners of any owned atom
|
|
fix_shear_history.cpp: // bump up comm->maxexchange_fix if necessary
|
|
fix_shear_history.cpp: // zero npartner values from previous nlocal_neigh to current nlocal
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp: newton off version, for sphere/sphere contacts
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // NOTE: all operations until very end are with nlocal_neigh <= current nlocal
|
|
fix_shear_history.cpp: // b/c previous neigh list was built with nlocal_neigh
|
|
fix_shear_history.cpp: // nlocal can be larger if other fixes added atoms at this pre_exchange()
|
|
fix_shear_history.cpp: // zero npartner for owned atoms
|
|
fix_shear_history.cpp: // clear 2 page data structures
|
|
fix_shear_history.cpp: // 1st loop over neighbor list
|
|
fix_shear_history.cpp: // calculate npartner for owned atoms
|
|
fix_shear_history.cpp: // get page chunks to store atom IDs and shear history for owned atoms
|
|
fix_shear_history.cpp: // 2nd loop over neighbor list
|
|
fix_shear_history.cpp: // store atom IDs and shear history for owned atoms
|
|
fix_shear_history.cpp: // re-zero npartner to use as counter
|
|
fix_shear_history.cpp: // set maxtouch = max # of partners of any owned atom
|
|
fix_shear_history.cpp: // bump up comm->maxexchange_fix if necessary
|
|
fix_shear_history.cpp: // zero npartner values from previous nlocal_neigh to current nlocal
|
|
fix_shear_history.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // just copy pointers for partner and shearpartner
|
|
fix_shear_history.cpp: // b/c can't overwrite chunk allocation inside ipage,dpage
|
|
fix_shear_history.cpp: // incoming atoms in unpack_exchange just grab new chunks
|
|
fix_shear_history.cpp: // so are orphaning chunks for migrating atoms
|
|
fix_shear_history.cpp: // OK, b/c will reset ipage,dpage on next reneighboring
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // NOTE: how do I know comm buf is big enough if extreme # of touching neighs
|
|
fix_shear_history.cpp: // Comm::BUFEXTRA may need to be increased
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // allocate new chunks from ipage,dpage for incoming values
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // ipage = NULL if being called from granular pair style init()
|
|
fix_shear_history.cpp: // skip to Nth set of extra values
|
|
fix_shear_history.cpp: // allocate new chunks from ipage,dpage for incoming values
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_shear_history.cpp: // maxtouch_all = max # of touching partners across all procs
|
|
fix_shear_history.cpp:/* ----------------------------------------------------------------------
|
|
fix_shear_history.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_chunk.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_spring_chunk.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_spring_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp: if (narg != 6) error->all(FLERR,"Illegal fix spring/chunk command");
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp: // decrement lock counter in compute chunk/atom, it if still exists
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp: // current indices for idchunk and idcom
|
|
fix_spring_chunk.cpp: error->all(FLERR,"Chunk/atom compute does not exist for fix spring/chunk");
|
|
fix_spring_chunk.cpp: if (strcmp(cchunk->style,"chunk/atom") != 0)
|
|
fix_spring_chunk.cpp: error->all(FLERR,"Fix spring/chunk does not use chunk/atom compute");
|
|
fix_spring_chunk.cpp: error->all(FLERR,"Com/chunk compute does not exist for fix spring/chunk");
|
|
fix_spring_chunk.cpp: if (strcmp(ccom->style,"com/chunk") != 0)
|
|
fix_spring_chunk.cpp: error->all(FLERR,"Fix spring/chunk does not use com/chunk compute");
|
|
fix_spring_chunk.cpp: // check that idchunk is consistent with ccom->idchunk
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp: // check if first time cchunk will be queried via ccom
|
|
fix_spring_chunk.cpp: // if so, lock idchunk for as long as this fix is in place
|
|
fix_spring_chunk.cpp: // will be unlocked in destructor
|
|
fix_spring_chunk.cpp: // necessary b/c this fix stores original COM
|
|
fix_spring_chunk.cpp: // calculate current centers of mass for each chunk
|
|
fix_spring_chunk.cpp: // extract pointers from idchunk and idcom
|
|
fix_spring_chunk.cpp: // check if first time cchunk was queried via ccom
|
|
fix_spring_chunk.cpp: // if so, allocate com0,fcom and store initial COM
|
|
fix_spring_chunk.cpp: memory->create(com0,nchunk,3,"spring/chunk:com0");
|
|
fix_spring_chunk.cpp: memory->create(fcom,nchunk,3,"spring/chunk:fcom");
|
|
fix_spring_chunk.cpp: // calculate fcom = force on each COM, divided by masstotal
|
|
fix_spring_chunk.cpp: fcom[m][0] = k_spring*dx/r / masstotal[m];
|
|
fix_spring_chunk.cpp: fcom[m][1] = k_spring*dy/r / masstotal[m];
|
|
fix_spring_chunk.cpp: fcom[m][2] = k_spring*dz/r / masstotal[m];
|
|
fix_spring_chunk.cpp: // apply restoring force to atoms in each chunk
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_chunk.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_chunk.cpp:------------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_spring.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_spring.cpp:------------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring.cpp:------------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp: // recheck that group 2 has not been deleted
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp: // fx,fy,fz = components of k * (r-r0) / masstotal
|
|
fix_spring.cpp: fx = k_spring*dx*dr/r;
|
|
fix_spring.cpp: fy = k_spring*dy*dr/r;
|
|
fix_spring.cpp: fz = k_spring*dz*dr/r;
|
|
fix_spring.cpp: fx /= masstotal;
|
|
fix_spring.cpp: fy /= masstotal;
|
|
fix_spring.cpp: fz /= masstotal;
|
|
fix_spring.cpp: // apply restoring force to atoms in group
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp: // fx,fy,fz = components of k * (r-r0) / masstotal
|
|
fix_spring.cpp: // fx2,fy2,fz2 = components of k * (r-r0) / masstotal2
|
|
fix_spring.cpp: fx = k_spring*dx*dr/r;
|
|
fix_spring.cpp: fy = k_spring*dy*dr/r;
|
|
fix_spring.cpp: fz = k_spring*dz*dr/r;
|
|
fix_spring.cpp: fx2 = fx/masstotal2;
|
|
fix_spring.cpp: fy2 = fy/masstotal2;
|
|
fix_spring.cpp: fz2 = fz/masstotal2;
|
|
fix_spring.cpp: fx /= masstotal;
|
|
fix_spring.cpp: fy /= masstotal;
|
|
fix_spring.cpp: fz /= masstotal;
|
|
fix_spring.cpp: // apply restoring force to atoms in group
|
|
fix_spring.cpp: // f = -k*(r-r0)*mass/masstotal
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring.cpp:------------------------------------------------------------------------- */
|
|
fix_spring.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_rg.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_spring_rg.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_spring_rg.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_rg.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp: if (narg != 5) error->all(FLERR,"Illegal fix spring/rg command");
|
|
fix_spring_rg.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp: // if rg0 was specified as NULL, compute current Rg
|
|
fix_spring_rg.cpp: // only occurs on 1st run
|
|
fix_spring_rg.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_rg.cpp: // compute current Rg and center-of-mass
|
|
fix_spring_rg.cpp: // apply restoring force to atoms in group
|
|
fix_spring_rg.cpp: // f = -k*(r-r0)*mass/masstotal
|
|
fix_spring_rg.cpp: term1 = 2.0 * k * (1.0 - rg0/rg);
|
|
fix_spring_rg.cpp: if (rmass) massfrac = rmass[i]/masstotal;
|
|
fix_spring_rg.cpp: else massfrac = mass[type[i]]/masstotal;
|
|
fix_spring_rg.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_spring_self.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp: error->all(FLERR,"Illegal fix spring/self command");
|
|
fix_spring_self.cpp: if (k <= 0.0) error->all(FLERR,"Illegal fix spring/self command");
|
|
fix_spring_self.cpp: } else error->all(FLERR,"Illegal fix spring/self command");
|
|
fix_spring_self.cpp: // perform initial allocation of atom-based array
|
|
fix_spring_self.cpp: // register with Atom class
|
|
fix_spring_self.cpp: // xoriginal = initial unwrapped positions of atoms
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_spring_self.cpp: // delete locally stored array
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp: memory->grow(xoriginal,nmax,3,"fix_spring/self:xoriginal");
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp: // skip to Nth set of extra values
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_spring_self.cpp:/* ----------------------------------------------------------------------
|
|
fix_spring_self.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_store.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store.cpp: // 4th arg determines GLOBAL vs PERATOM values
|
|
fix_store.cpp: // syntax: id group style global nrow ncol
|
|
fix_store.cpp: // Nrow by Ncol array of global values
|
|
fix_store.cpp: // Ncol = 1 is vector, Ncol > 1 is array
|
|
fix_store.cpp: // syntax: id group style peratom 0/1 nvalues
|
|
fix_store.cpp: // 0/1 flag = not-store or store peratom values in restart file
|
|
fix_store.cpp: // nvalues = # of peratom values, N = 1 is vector, N > 1 is array
|
|
fix_store.cpp: // GLOBAL values are always written to restart file
|
|
fix_store.cpp: // PERATOM restart_peratom is set by caller
|
|
fix_store.cpp: // allocate vector or array and restart buffer rbuf
|
|
fix_store.cpp: // for PERATOM, register with Atom class
|
|
fix_store.cpp: if (vecflag) memory->create(vstore,nrow,"fix/store:vstore");
|
|
fix_store.cpp: else memory->create(astore,nrow,ncol,"fix/store:astore");
|
|
fix_store.cpp: memory->create(rbuf,nrow*ncol+2,"fix/store:rbuf");
|
|
fix_store.cpp: // zero the storage
|
|
fix_store.cpp: // PERATOM may be comm->exchanged before filled by caller
|
|
fix_store.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_store.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp: reset size of global vector/array
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp: if (vecflag) memory->create(vstore,nrow,"fix/store:vstore");
|
|
fix_store.cpp: else memory->create(astore,nrow,ncol,"fix/store:astore");
|
|
fix_store.cpp: memory->create(rbuf,nrow*ncol+2,"fix/store:rbuf");
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp: // fill rbuf with size and vec/array values
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp: // first 2 values in buf are vec/array sizes
|
|
fix_store.cpp: // if size of vec/array has changed,
|
|
fix_store.cpp: // means the restart file is setting size of vec or array and doing init
|
|
fix_store.cpp: // because caller did not know size at time this fix was instantiated
|
|
fix_store.cpp: // reallocate vstore or astore accordingly
|
|
fix_store.cpp: if (vecflag) memory->create(vstore,nrow,"fix/store:vstore");
|
|
fix_store.cpp: else memory->create(astore,nrow,ncol,"fix/store:astore");
|
|
fix_store.cpp: memory->create(rbuf,nrow*ncol+2,"fix/store:rbuf");
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp: // skip to Nth set of extra values
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store.cpp:/* ----------------------------------------------------------------------
|
|
fix_store.cpp:------------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_force.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_store_force.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_store_force.cpp:------------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp: if (narg < 3) error->all(FLERR,"Illegal fix store/coord command");
|
|
fix_store_force.cpp: memory->create(foriginal,nmax,3,"store/force:foriginal");
|
|
fix_store_force.cpp: // zero the array since dump may access it on timestep 0
|
|
fix_store_force.cpp: // zero the array since a variable may access it before first run
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp: memory->create(foriginal,nmax,3,"store/force:foriginal");
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_force.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_force.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_store_state.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: if (narg < 5) error->all(FLERR,"Illegal fix store/state command");
|
|
fix_store_state.cpp: if (nevery < 0) error->all(FLERR,"Illegal fix store/state command");
|
|
fix_store_state.cpp: // parse values until one isn't recognized
|
|
fix_store_state.cpp: // customize a new keyword by adding to if statement
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: "Fix store/state for atom property that isn't allocated");
|
|
fix_store_state.cpp: error->all(FLERR,"Illegal fix store/state command");
|
|
fix_store_state.cpp: // optional args
|
|
fix_store_state.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix store/state command");
|
|
fix_store_state.cpp: else error->all(FLERR,"Illegal fix store/state command");
|
|
fix_store_state.cpp: } else error->all(FLERR,"Illegal fix store/state command");
|
|
fix_store_state.cpp: // error check
|
|
fix_store_state.cpp: error->all(FLERR,"Compute ID for fix store/state does not exist");
|
|
fix_store_state.cpp: error->all(FLERR,"Fix store/state compute "
|
|
fix_store_state.cpp: error->all(FLERR,"Fix store/state compute does not "
|
|
fix_store_state.cpp: "Fix store/state compute does not "
|
|
fix_store_state.cpp: "Fix store/state compute array is accessed out-of-range");
|
|
fix_store_state.cpp: "Custom integer vector for fix store/state does not exist");
|
|
fix_store_state.cpp: "Custom floating point vector for fix store/state does not exist");
|
|
fix_store_state.cpp: "Fix ID for fix store/state does not exist");
|
|
fix_store_state.cpp: "Fix store/state fix does not calculate per-atom values");
|
|
fix_store_state.cpp: "Fix store/state fix does not calculate a per-atom vector");
|
|
fix_store_state.cpp: "Fix store/state fix does not calculate a per-atom array");
|
|
fix_store_state.cpp: "Fix store/state fix array is accessed out-of-range");
|
|
fix_store_state.cpp: "Fix for fix store/state not computed at compatible time");
|
|
fix_store_state.cpp: error->all(FLERR,"Variable name for fix store/state does not exist");
|
|
fix_store_state.cpp: error->all(FLERR,"Fix store/state variable is not atom-style variable");
|
|
fix_store_state.cpp: // this fix produces either a per-atom vector or array
|
|
fix_store_state.cpp: // perform initial allocation of atom-based array
|
|
fix_store_state.cpp: // register with Atom class
|
|
fix_store_state.cpp: // zero the array since dump may access it on timestep 0
|
|
fix_store_state.cpp: // zero the array since a variable may access it before first run
|
|
fix_store_state.cpp: // store current values for keywords but not for compute, fix, variable
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: // set indices and check validity of all computes,fixes,variables
|
|
fix_store_state.cpp: // no error check if end_of_step() will not be called
|
|
fix_store_state.cpp: error->all(FLERR,"Compute ID for fix store/state does not exist");
|
|
fix_store_state.cpp: "Custom integer vector for fix store/state does not exist");
|
|
fix_store_state.cpp: "Custom floating point vector for fix store/state does not exist");
|
|
fix_store_state.cpp: error->all(FLERR,"Fix ID for fix store/state does not exist");
|
|
fix_store_state.cpp: error->all(FLERR,"Variable name for fix store/state does not exist");
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: // if first invocation, store current values for compute, fix, variable
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: // compute com if comflag set
|
|
fix_store_state.cpp: // if any compute/fix/variable and nevery, wrap with clear/add
|
|
fix_store_state.cpp: // fill vector or array with per-atom values
|
|
fix_store_state.cpp: // invoke compute if not previously invoked
|
|
fix_store_state.cpp: // access fix fields, guaranteed to be ready
|
|
fix_store_state.cpp: // access custom atom property fields
|
|
fix_store_state.cpp: // evaluate atom-style variable
|
|
fix_store_state.cpp: // if any compute/fix/variable and nevery, wrap with clear/add
|
|
fix_store_state.cpp: const bigint nextstep = (update->ntimestep/nevery)*nevery + nevery;
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp: memory->grow(values,nmax,nvalues,"store/state:values");
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp: // skip to Nth set of extra values
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ----------------------------------------------------------------------
|
|
fix_store_state.cpp: one method for every keyword fix store/state can archive
|
|
fix_store_state.cpp:------------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: double invxprd = 1.0/domain->xprd;
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: double invyprd = 1.0/domain->yprd;
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: double invzprd = 1.0/domain->zprd;
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: double invxprd = 1.0/domain->xprd;
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: double invyprd = 1.0/domain->yprd;
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp: double invzprd = 1.0/domain->zprd;
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_store_state.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_berendsen.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_temp_berendsen.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_temp_berendsen.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp: if (narg != 6) error->all(FLERR,"Illegal fix temp/berendsen command");
|
|
fix_temp_berendsen.cpp: // Berendsen thermostat should be applied every step
|
|
fix_temp_berendsen.cpp: // error checks
|
|
fix_temp_berendsen.cpp: error->all(FLERR,"Fix temp/berendsen period must be > 0.0");
|
|
fix_temp_berendsen.cpp: // create a new compute temp style
|
|
fix_temp_berendsen.cpp: // id = fix-ID + temp, compute group = fix group
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp: // delete temperature if fix created it
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp: // check variable
|
|
fix_temp_berendsen.cpp: error->all(FLERR,"Variable name for fix temp/berendsen does not exist");
|
|
fix_temp_berendsen.cpp: else error->all(FLERR,"Variable for fix temp/berendsen is invalid style");
|
|
fix_temp_berendsen.cpp: error->all(FLERR,"Temperature ID for fix temp/berendsen does not exist");
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp: // there is nothing to do, if there are no degrees of freedom
|
|
fix_temp_berendsen.cpp: "Computed temperature for fix temp/berendsen cannot be 0.0");
|
|
fix_temp_berendsen.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_temp_berendsen.cpp: // set current t_target
|
|
fix_temp_berendsen.cpp: // if variable temp, evaluate variable, wrap with clear/add
|
|
fix_temp_berendsen.cpp: "Fix temp/berendsen variable returned negative temperature");
|
|
fix_temp_berendsen.cpp: // rescale velocities by lamda
|
|
fix_temp_berendsen.cpp: // for BIAS:
|
|
fix_temp_berendsen.cpp: // temperature is current, so do not need to re-compute
|
|
fix_temp_berendsen.cpp: // OK to not test returned v = 0, since lamda is multiplied by v
|
|
fix_temp_berendsen.cpp: double lamda = sqrt(1.0 + update->dt/t_period*(t_target/t_current - 1.0));
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_berendsen.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_berendsen.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_csld.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_temp_csld.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_temp_csld.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_csld.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp: if (narg != 7) error->all(FLERR,"Illegal fix temp/csld command");
|
|
fix_temp_csld.cpp: // CSLD thermostat should be applied every step
|
|
fix_temp_csld.cpp: // error checks
|
|
fix_temp_csld.cpp: if (t_period <= 0.0) error->all(FLERR,"Illegal fix temp/csld command");
|
|
fix_temp_csld.cpp: if (seed <= 0) error->all(FLERR,"Illegal fix temp/csld command");
|
|
fix_temp_csld.cpp: // create a new compute temp style
|
|
fix_temp_csld.cpp: // id = fix-ID + temp, compute group = fix group
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp: // delete temperature if fix created it
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp: // we cannot handle constraints via rattle or shake correctly.
|
|
fix_temp_csld.cpp: error->all(FLERR,"Fix temp/csld is not compatible with fix rattle or fix shake");
|
|
fix_temp_csld.cpp: // check variable
|
|
fix_temp_csld.cpp: error->all(FLERR,"Variable name for fix temp/csld does not exist");
|
|
fix_temp_csld.cpp: else error->all(FLERR,"Variable for fix temp/csld is invalid style");
|
|
fix_temp_csld.cpp: error->all(FLERR,"Temperature ID for fix temp/csld does not exist");
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp: // set current t_target
|
|
fix_temp_csld.cpp: // if variable temp, evaluate variable, wrap with clear/add
|
|
fix_temp_csld.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_temp_csld.cpp: "Fix temp/csld variable returned negative temperature");
|
|
fix_temp_csld.cpp: // there is nothing to do, if there are no degrees of freedom
|
|
fix_temp_csld.cpp: // adjust holding space, if needed and copy existing velocities
|
|
fix_temp_csld.cpp: // The CSLD thermostat is a linear combination of old and new velocities,
|
|
fix_temp_csld.cpp: // where the new ones are randomly chosen from a gaussian distribution.
|
|
fix_temp_csld.cpp: // see Bussi and Parrinello, Phys. Rev. E (2007).
|
|
fix_temp_csld.cpp: const double factor = 1.0/sqrt(m);
|
|
fix_temp_csld.cpp: // mixing factors
|
|
fix_temp_csld.cpp: const double c1 = exp(-update->dt/t_period);
|
|
fix_temp_csld.cpp: const double c2 = sqrt((1.0-c1*c1)*t_target/temperature->compute_scalar());
|
|
fix_temp_csld.cpp: // tally the kinetic energy transferred between heat bath and system
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csld.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_csld.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_csvr.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_temp_csvr.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_temp_csvr.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_csvr.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp: // make certain, that -log() doesn't overflow.
|
|
fix_temp_csvr.cpp: y=v2/v1;
|
|
fix_temp_csvr.cpp: if (am*log(x/am)-s*y < -700 || v1<0.00001) {
|
|
fix_temp_csvr.cpp: e=(1.0+y*y)*exp(am*log(x/am)-s*y);
|
|
fix_temp_csvr.cpp:/* -------------------------------------------------------------------
|
|
fix_temp_csvr.cpp:---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp: return 2.0 * gamdev(nn / 2);
|
|
fix_temp_csvr.cpp: return 2.0 * gamdev((nn-1) / 2) + rr*rr;
|
|
fix_temp_csvr.cpp:/* -------------------------------------------------------------------
|
|
fix_temp_csvr.cpp:---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp: const double c1 = exp(-update->dt/t_period);
|
|
fix_temp_csvr.cpp: const double c2 = (1.0-c1)*ekin_new/ekin_old/tdof;
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp: if (narg != 7) error->all(FLERR,"Illegal fix temp/csvr command");
|
|
fix_temp_csvr.cpp: // CSVR thermostat should be applied every step
|
|
fix_temp_csvr.cpp: // error checks
|
|
fix_temp_csvr.cpp: if (t_period <= 0.0) error->all(FLERR,"Illegal fix temp/csvr command");
|
|
fix_temp_csvr.cpp: if (seed <= 0) error->all(FLERR,"Illegal fix temp/csvr command");
|
|
fix_temp_csvr.cpp: // create a new compute temp style
|
|
fix_temp_csvr.cpp: // id = fix-ID + temp, compute group = fix group
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp: // delete temperature if fix created it
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp: // check variable
|
|
fix_temp_csvr.cpp: error->all(FLERR,"Variable name for fix temp/csvr does not exist");
|
|
fix_temp_csvr.cpp: else error->all(FLERR,"Variable for fix temp/csvr is invalid style");
|
|
fix_temp_csvr.cpp: error->all(FLERR,"Temperature ID for fix temp/csvr does not exist");
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp: // set current t_target
|
|
fix_temp_csvr.cpp: // if variable temp, evaluate variable, wrap with clear/add
|
|
fix_temp_csvr.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_temp_csvr.cpp: "Fix temp/csvr variable returned negative temperature");
|
|
fix_temp_csvr.cpp: // there is nothing to do, if there are no degrees of freedom
|
|
fix_temp_csvr.cpp: // compute velocity scaling factor on root node and broadcast
|
|
fix_temp_csvr.cpp: // tally the kinetic energy transferred between heat bath and system
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_csvr.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_csvr.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_rescale.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_temp_rescale.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_temp_rescale.cpp:------------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp: if (narg < 8) error->all(FLERR,"Illegal fix temp/rescale command");
|
|
fix_temp_rescale.cpp: if (nevery <= 0) error->all(FLERR,"Illegal fix temp/rescale command");
|
|
fix_temp_rescale.cpp: // create a new compute temp
|
|
fix_temp_rescale.cpp: // id = fix-ID + temp, compute group = fix group
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp: // delete temperature if fix created it
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp: // check variable
|
|
fix_temp_rescale.cpp: error->all(FLERR,"Variable name for fix temp/rescale does not exist");
|
|
fix_temp_rescale.cpp: else error->all(FLERR,"Variable for fix temp/rescale is invalid style");
|
|
fix_temp_rescale.cpp: error->all(FLERR,"Temperature ID for fix temp/rescale does not exist");
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp: // there is nothing to do, if there are no degrees of freedom
|
|
fix_temp_rescale.cpp: // protect against division by zero
|
|
fix_temp_rescale.cpp: error->all(FLERR,"Computed temperature for fix temp/rescale cannot be 0.0");
|
|
fix_temp_rescale.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_temp_rescale.cpp: // set current t_target
|
|
fix_temp_rescale.cpp: // if variable temp, evaluate variable, wrap with clear/add
|
|
fix_temp_rescale.cpp: "Fix temp/rescale variable returned negative temperature");
|
|
fix_temp_rescale.cpp: // rescale velocity of appropriate atoms if outside window
|
|
fix_temp_rescale.cpp: // for BIAS:
|
|
fix_temp_rescale.cpp: // temperature is current, so do not need to re-compute
|
|
fix_temp_rescale.cpp: // OK to not test returned v = 0, since factor is multiplied by v
|
|
fix_temp_rescale.cpp: double factor = sqrt(t_target/t_current);
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_temp_rescale.cpp:/* ----------------------------------------------------------------------
|
|
fix_temp_rescale.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_tmd.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_tmd.cpp: // perform initial allocation of atom-based arrays
|
|
fix_tmd.cpp: // register with Atom class
|
|
fix_tmd.cpp: // make sure an atom map exists before reading in target coordinates
|
|
fix_tmd.cpp: // read from arg[4] and store coordinates of final target in xf
|
|
fix_tmd.cpp: // open arg[6] statistics file and write header
|
|
fix_tmd.cpp: // rho_start = initial rho
|
|
fix_tmd.cpp: // xold = initial x or 0.0 if not in group
|
|
fix_tmd.cpp: rho_start = sqrt(rho_start_total/masstotal);
|
|
fix_tmd.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_tmd.cpp: // unregister callbacks to this fix from Atom class
|
|
fix_tmd.cpp: // delete locally stored arrays
|
|
fix_tmd.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_tmd.cpp: // check that no integrator fix comes after a TMD fix
|
|
fix_tmd.cpp: // timesteps
|
|
fix_tmd.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_tmd.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
fix_tmd.cpp: // compute the Lagrange multiplier
|
|
fix_tmd.cpp: a = abetotal[0]/masstotal;
|
|
fix_tmd.cpp: b = 2.0*abetotal[1]/masstotal;
|
|
fix_tmd.cpp: e = abetotal[2]/masstotal;
|
|
fix_tmd.cpp: if (b >= 0) gamma_max = (-b - sqrt(d))/(2*a);
|
|
fix_tmd.cpp: else gamma_max = (-b + sqrt(d))/(2*a);
|
|
fix_tmd.cpp: gamma_back = c/(a*gamma_max);
|
|
fix_tmd.cpp: if (b >= 0) gamma_max = (-b - sqrt(d))/(2*a);
|
|
fix_tmd.cpp: else gamma_max = (-b + sqrt(d))/(2*a);
|
|
fix_tmd.cpp: gamma_forward = c/(a*gamma_max);
|
|
fix_tmd.cpp: // stat write of mean constraint force based on previous time step constraint
|
|
fix_tmd.cpp: (-frtotal - kttotal/dtv/dtf)*(rho_target - rho_old)/rho_old;
|
|
fix_tmd.cpp: lambda = gamma_back*rho_old*masstotal/dtv/dtf;
|
|
fix_tmd.cpp: // apply the constraint and save constrained positions for next step
|
|
fix_tmd.cpp: dtfm = dtf / mass[type[i]];
|
|
fix_tmd.cpp: v[i][0] += gamma_forward*dxold/dtv;
|
|
fix_tmd.cpp: f[i][0] += gamma_forward*dxold/dtv/dtfm;
|
|
fix_tmd.cpp: v[i][1] += gamma_forward*dyold/dtv;
|
|
fix_tmd.cpp: f[i][1] += gamma_forward*dyold/dtv/dtfm;
|
|
fix_tmd.cpp: v[i][2] += gamma_forward*dzold/dtv;
|
|
fix_tmd.cpp: f[i][2] += gamma_forward*dzold/dtv/dtfm;
|
|
fix_tmd.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_tmd.cpp: if (flag) return; // only used by NPT,NPH
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp: MPI_Bcast(&eof,sizeof(char *)/sizeof(char),MPI_CHAR,0,world);
|
|
fix_tmd.cpp: // clean up
|
|
fix_tmd.cpp: // check that all atoms in group were listed in target file
|
|
fix_tmd.cpp: // set xf = 0.0 for atoms not in group
|
|
fix_tmd.cpp:/* ----------------------------------------------------------------------
|
|
fix_tmd.cpp:------------------------------------------------------------------------- */
|
|
fix_tmd.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_vector.cpp:/* ----------------------------------------------------------------------
|
|
fix_vector.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_vector.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_vector.cpp:------------------------------------------------------------------------- */
|
|
fix_vector.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_vector.cpp: // setup and error check
|
|
fix_vector.cpp: // for fix inputs, check that fix frequency is acceptable
|
|
fix_vector.cpp: // this fix produces either a global vector or array
|
|
fix_vector.cpp: // intensive/extensive flags set by compute,fix,variable that produces value
|
|
fix_vector.cpp: "intensive/extensive from these inputs");
|
|
fix_vector.cpp: // ncount = current size of vector or array
|
|
fix_vector.cpp: // nextstep = next step on which end_of_step does something
|
|
fix_vector.cpp: // add nextstep to all computes that store invocation times
|
|
fix_vector.cpp: // since don't know a priori which are invoked by this fix
|
|
fix_vector.cpp: // once in end_of_step() can set timestep for ones actually invoked
|
|
fix_vector.cpp: nextstep = (update->ntimestep/nevery)*nevery;
|
|
fix_vector.cpp: // initialstep = first step the vector/array will store values for
|
|
fix_vector.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_vector.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_vector.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_vector.cpp: // set current indices for all computes,fixes,variables
|
|
fix_vector.cpp: // reallocate vector or array for accumulated size at end of run
|
|
fix_vector.cpp: // use endstep to allow for subsequent runs with "pre no"
|
|
fix_vector.cpp: // nsize = # of entries from initialstep to finalstep
|
|
fix_vector.cpp: bigint finalstep = update->endstep/nevery * nevery;
|
|
fix_vector.cpp: ncountmax = (finalstep-initialstep)/nevery + 1;
|
|
fix_vector.cpp:/* ----------------------------------------------------------------------
|
|
fix_vector.cpp:------------------------------------------------------------------------- */
|
|
fix_vector.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_vector.cpp: // skip if not step which requires doing something
|
|
fix_vector.cpp: // accumulate results of computes,fixes,variables to local copy
|
|
fix_vector.cpp: // compute/fix/variable may invoke computes so wrap with clear/add
|
|
fix_vector.cpp: // invoke compute if not previously invoked
|
|
fix_vector.cpp: // access fix fields, guaranteed to be ready
|
|
fix_vector.cpp: // evaluate equal-style or vector-style variable
|
|
fix_vector.cpp: // trigger computes on next needed step
|
|
fix_vector.cpp: // update size of vector or array
|
|
fix_vector.cpp:/* ----------------------------------------------------------------------
|
|
fix_vector.cpp:------------------------------------------------------------------------- */
|
|
fix_vector.cpp:/* ----------------------------------------------------------------------
|
|
fix_vector.cpp:------------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ----------------------------------------------------------------------
|
|
fix_viscous.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_viscous.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_viscous.cpp:------------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp: // optional args
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp: // apply drag force to atoms in group
|
|
fix_viscous.cpp: // direction is opposed to velocity vector
|
|
fix_viscous.cpp: // magnitude depends on atom type
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_viscous.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_wall.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_wall.cpp:------------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp: // parse args
|
|
fix_wall.cpp: int dim = wallwhich[nwall] / 2;
|
|
fix_wall.cpp: // error checks
|
|
fix_wall.cpp: error->all(FLERR,"Cannot use fix wall zlo/zhi for a 2d simulation");
|
|
fix_wall.cpp: // scale factors for wall position for CONSTANT and VARIABLE walls
|
|
fix_wall.cpp: // set xflag if any wall positions are variable
|
|
fix_wall.cpp: // set varflag if any wall positions or parameters are variable
|
|
fix_wall.cpp: // set wstyle to VARIABLE if either epsilon or sigma is a variable
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp: // FLD implicit needs to invoke wall forces before pair style
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp: // setup coefficients
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall.cpp:------------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp: // coord = current position of wall
|
|
fix_wall.cpp: // evaluate variables if necessary, wrap with clear/add
|
|
fix_wall.cpp: // for epsilon/sigma variables need to re-invoke precompute()
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall.cpp:------------------------------------------------------------------------- */
|
|
fix_wall.cpp: // only sum across procs one time
|
|
fix_wall.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall.cpp:------------------------------------------------------------------------- */
|
|
fix_wall.cpp: // only sum across procs one time
|
|
fix_wall_harmonic.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_harmonic.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_wall_harmonic.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_wall_harmonic.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_harmonic.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_harmonic.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_harmonic.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_harmonic.cpp: int dim = which / 2;
|
|
fix_wall_lj1043.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_lj1043.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_wall_lj1043.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_wall_lj1043.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_lj1043.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_lj1043.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_lj1043.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_lj1043.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_lj1043.cpp: coeff1[m] = MY_2PI * 2.0/5.0 * epsilon[m] * pow(sigma[m],10.0);
|
|
fix_wall_lj1043.cpp: coeff3[m] = MY_2PI * pow(2.0,1/2.0) / 3 * epsilon[m] * pow(sigma[m],3.0);
|
|
fix_wall_lj1043.cpp: coeff4[m] = 0.61 / pow(2.0,1/2.0) * sigma[m];
|
|
fix_wall_lj1043.cpp: double rinv = 1.0/cutoff[m];
|
|
fix_wall_lj1043.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_lj1043.cpp: int dim = which / 2;
|
|
fix_wall_lj1043.cpp: rinv = 1.0/delta;
|
|
fix_wall_lj126.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_lj126.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_wall_lj126.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_wall_lj126.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_lj126.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_lj126.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_lj126.cpp: double r2inv = 1.0/(cutoff[m]*cutoff[m]);
|
|
fix_wall_lj126.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_lj126.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_lj126.cpp: int dim = which / 2;
|
|
fix_wall_lj126.cpp: rinv = 1.0/delta;
|
|
fix_wall_lj93.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_lj93.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_wall_lj93.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_wall_lj93.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_lj93.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_lj93.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_lj93.cpp: coeff1[m] = 6.0/5.0 * epsilon[m] * pow(sigma[m],9.0);
|
|
fix_wall_lj93.cpp: coeff3[m] = 2.0/15.0 * epsilon[m] * pow(sigma[m],9.0);
|
|
fix_wall_lj93.cpp: double rinv = 1.0/cutoff[m];
|
|
fix_wall_lj93.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_lj93.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_lj93.cpp: int dim = which / 2;
|
|
fix_wall_lj93.cpp: rinv = 1.0/delta;
|
|
fix_wall_reflect.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_reflect.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_wall_reflect.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_wall_reflect.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_reflect.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_reflect.cpp: if (narg < 4) error->all(FLERR,"Illegal fix wall/reflect command");
|
|
fix_wall_reflect.cpp: // parse args
|
|
fix_wall_reflect.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall/reflect command");
|
|
fix_wall_reflect.cpp: error->all(FLERR,"Wall defined twice in fix wall/reflect command");
|
|
fix_wall_reflect.cpp: int dim = wallwhich[nwall] / 2;
|
|
fix_wall_reflect.cpp: if (iarg+2 > narg) error->all(FLERR,"Illegal wall/reflect command");
|
|
fix_wall_reflect.cpp: else error->all(FLERR,"Illegal fix wall/reflect command");
|
|
fix_wall_reflect.cpp: } else error->all(FLERR,"Illegal fix wall/reflect command");
|
|
fix_wall_reflect.cpp: // error check
|
|
fix_wall_reflect.cpp: error->all(FLERR,"Cannot use fix wall/reflect in periodic dimension");
|
|
fix_wall_reflect.cpp: error->all(FLERR,"Cannot use fix wall/reflect in periodic dimension");
|
|
fix_wall_reflect.cpp: error->all(FLERR,"Cannot use fix wall/reflect in periodic dimension");
|
|
fix_wall_reflect.cpp: "Cannot use fix wall/reflect zlo/zhi for a 2d simulation");
|
|
fix_wall_reflect.cpp: // scale factors for CONSTANT and VARIABLE walls
|
|
fix_wall_reflect.cpp: // set varflag if any wall positions are variable
|
|
fix_wall_reflect.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_reflect.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_reflect.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_reflect.cpp: error->all(FLERR,"Variable name for fix wall/reflect does not exist");
|
|
fix_wall_reflect.cpp: error->all(FLERR,"Variable for fix wall/reflect is invalid style");
|
|
fix_wall_reflect.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_reflect.cpp: // coord = current position of wall
|
|
fix_wall_reflect.cpp: // evaluate variable if necessary, wrap with clear/add
|
|
fix_wall_reflect.cpp: dim = wallwhich[m] / 2;
|
|
fix_wall_region.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_region.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
fix_wall_region.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
fix_wall_region.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: if (narg != 8) error->all(FLERR,"Illegal fix wall/region command");
|
|
fix_wall_region.cpp: // parse args
|
|
fix_wall_region.cpp: error->all(FLERR,"Region ID for fix wall/region does not exist");
|
|
fix_wall_region.cpp: else error->all(FLERR,"Illegal fix wall/region command");
|
|
fix_wall_region.cpp: if (cutoff <= 0.0) error->all(FLERR,"Fix wall/region cutoff <= 0.0");
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: // set index and check validity of region
|
|
fix_wall_region.cpp: error->all(FLERR,"Region ID for fix wall/region does not exist");
|
|
fix_wall_region.cpp: // error checks for style COLLOID
|
|
fix_wall_region.cpp: // insure all particles in group are extended particles
|
|
fix_wall_region.cpp: error->all(FLERR,"Fix wall/region colloid requires atom style sphere");
|
|
fix_wall_region.cpp: error->all(FLERR,"Fix wall/region colloid requires extended particles");
|
|
fix_wall_region.cpp: // setup coefficients for each style
|
|
fix_wall_region.cpp: coeff1 = 6.0/5.0 * epsilon * pow(sigma,9.0);
|
|
fix_wall_region.cpp: coeff3 = 2.0/15.0 * epsilon * pow(sigma,9.0);
|
|
fix_wall_region.cpp: double rinv = 1.0/cutoff;
|
|
fix_wall_region.cpp: double r2inv = 1.0/(cutoff*cutoff);
|
|
fix_wall_region.cpp: coeff1 = -4.0/315.0 * epsilon * pow(sigma,6.0);
|
|
fix_wall_region.cpp: coeff2 = -2.0/3.0 * epsilon;
|
|
fix_wall_region.cpp: coeff3 = epsilon * pow(sigma,6.0)/7560.0;
|
|
fix_wall_region.cpp: coeff4 = epsilon/6.0;
|
|
fix_wall_region.cpp: double rinv = 1.0/cutoff;
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: // region->match() insures particle is in region or on surface, else error
|
|
fix_wall_region.cpp: // if returned contact dist r = 0, is on surface, also an error
|
|
fix_wall_region.cpp: // in COLLOID case, r <= radius is an error
|
|
fix_wall_region.cpp: // initilize ewall after region->prematch(),
|
|
fix_wall_region.cpp: // so a dynamic region can access last timestep values
|
|
fix_wall_region.cpp: } else rinv = 1.0/region->contact[m].r;
|
|
fix_wall_region.cpp: "used in fix wall/region");
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp:/* ---------------------------------------------------------------------- */
|
|
fix_wall_region.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_region.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: // only sum across procs one time
|
|
fix_wall_region.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_region.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: // only sum across procs one time
|
|
fix_wall_region.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_region.cpp: LJ 9/3 interaction for particle with wall
|
|
fix_wall_region.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: double rinv = 1.0/r;
|
|
fix_wall_region.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_region.cpp: LJ 12/6 interaction for particle with wall
|
|
fix_wall_region.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: double rinv = 1.0/r;
|
|
fix_wall_region.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_region.cpp:------------------------------------------------------------------------- */
|
|
fix_wall_region.cpp: double rinv = 1.0/delta2;
|
|
fix_wall_region.cpp: double rinv2 = 1.0/r2;
|
|
fix_wall_region.cpp: double rinv3 = 1.0/r3;
|
|
fix_wall_region.cpp:/* ----------------------------------------------------------------------
|
|
fix_wall_region.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
force.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ---------------------------------------------------------------------- */
|
|
force.cpp: // fill pair map with pair styles listed in style_pair.h
|
|
force.cpp:/* ---------------------------------------------------------------------- */
|
|
force.cpp:/* ---------------------------------------------------------------------- */
|
|
force.cpp: qqrd2e = qqr2e/dielectric;
|
|
force.cpp: if (kspace) kspace->init(); // kspace must come before pair
|
|
force.cpp: if (pair) pair->init(); // so g_ewald is defined
|
|
force.cpp:/* ---------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp: if trysuffix = 1, try first with suffix1/2 appended
|
|
force.cpp: return sflag = 0 for no suffix added, 1 or 2 for suffix1/2 added
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: else if (strstr(pair_style,"hybrid/overlay")) {
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
force.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: sprintf(estyle,"%s/%s",arg[0],lmp->suffix);
|
|
force.cpp: sprintf(estyle,"%s/%s",arg[0],lmp->suffix2);
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp: if sflag = 1/2, append suffix or suffix2 to style
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: if (sflag == 1) sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
force.cpp: else sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: // defaults, but do not reset special_extra
|
|
force.cpp: special_coul[3] = 5.0/6.0;
|
|
force.cpp: } else if (strcmp(arg[iarg],"lj/coul") == 0) {
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: // attempt to open file directly
|
|
force.cpp: // if successful, return ptr
|
|
force.cpp: // try the environment variable directory
|
|
force.cpp: newpath[len1] = '/';
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp: // skip over the disk drive part of windows pathnames
|
|
force.cpp: if ((*path == '\\') || (*path == '/')) pot = path + 1;
|
|
force.cpp: if (*path == '/') pot = path + 1;
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
force.cpp:/* ----------------------------------------------------------------------
|
|
force.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
group.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:// allocate space for static class variable
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // create "all" group
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // delete the group if not being used elsewhere
|
|
group.cpp: // clear mask of each atom assigned to this group
|
|
group.cpp: // clear the group
|
|
group.cpp: // find group in existing list
|
|
group.cpp: // add a new group if igroup = -1
|
|
group.cpp: // style = region
|
|
group.cpp: // add to group if atom is in region
|
|
group.cpp: // style = type, molecule, id
|
|
group.cpp: // add to group if atom matches type/molecule/id or condition
|
|
group.cpp: // args = logical condition
|
|
group.cpp: // add to group if meets condition
|
|
group.cpp: // args = list of values
|
|
group.cpp: // add to group if attribute matches value or sequence
|
|
group.cpp: // style = variable
|
|
group.cpp: // add to group if atom-atyle variable is non-zero
|
|
group.cpp: // aflag = evaluation of per-atom variable
|
|
group.cpp: // add to group if per-atom variable evaluated to non-zero
|
|
group.cpp: // style = include
|
|
group.cpp: // style = subtract
|
|
group.cpp: // add to group if in 1st group in list
|
|
group.cpp: // remove atoms if they are in any of the other groups
|
|
group.cpp: // AND with inverse mask removes the atom from group
|
|
group.cpp: // style = union
|
|
group.cpp: // add to group if in any other group in list
|
|
group.cpp: // style = intersect
|
|
group.cpp: // add to group if in all groups in list
|
|
group.cpp: // style = dynamic
|
|
group.cpp: // create a new FixGroup to dynamically determine atoms in group
|
|
group.cpp: // if group is already dynamic, delete existing FixGroup
|
|
group.cpp: // style = static
|
|
group.cpp: // remove dynamic FixGroup if necessary
|
|
group.cpp: // not a valid group style
|
|
group.cpp: // print stats for changed group
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // find group in existing list
|
|
group.cpp: // add a new group if igroup = -1
|
|
group.cpp: // add atoms to group whose flags are set
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // hash = unique molecule IDs of atoms already in group
|
|
group.cpp: // list = set of unique molecule IDs for atoms to add
|
|
group.cpp: // pass list to all other procs via comm->ring()
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // use count to not change restart format with deleted groups
|
|
group.cpp: // remove this on next major release
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // delete existing group names
|
|
group.cpp: // atom masks will be overwritten by reading of restart file
|
|
group.cpp: // use count to not change restart format with deleted groups
|
|
group.cpp: // remove this on next major release
|
|
group.cpp:// ----------------------------------------------------------------------
|
|
group.cpp:// computations on a group of atoms
|
|
group.cpp:// ----------------------------------------------------------------------
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // compute extent across all procs
|
|
group.cpp: // flip sign of MIN to do it in one Allreduce MAX
|
|
group.cpp: // set box by extent in shrink-wrapped dims
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // compute extent across all procs
|
|
group.cpp: // flip sign of MIN to do it in one Allreduce MAX
|
|
group.cpp: // set box by extent in shrink-wrapped dims
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: cm[0] /= masstotal;
|
|
group.cpp: cm[1] /= masstotal;
|
|
group.cpp: cm[2] /= masstotal;
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: cm[0] /= masstotal;
|
|
group.cpp: cm[1] /= masstotal;
|
|
group.cpp: cm[2] /= masstotal;
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: cm[0] /= masstotal;
|
|
group.cpp: cm[1] /= masstotal;
|
|
group.cpp: cm[2] /= masstotal;
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: cm[0] /= masstotal;
|
|
group.cpp: cm[1] /= masstotal;
|
|
group.cpp: cm[2] /= masstotal;
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: if (masstotal > 0.0) return sqrt(rg_all/masstotal);
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: if (masstotal > 0.0) return sqrt(rg_all/masstotal);
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp:/* ----------------------------------------------------------------------
|
|
group.cpp:------------------------------------------------------------------------- */
|
|
group.cpp: // determinant = triple product of rows of inertia matrix
|
|
group.cpp: // non-singular I matrix
|
|
group.cpp: // use L = Iw, inverting I to solve for w
|
|
group.cpp: // this should give exact zeroing of angular momentum by velocity command
|
|
group.cpp: inverse[i][j] /= determinant;
|
|
group.cpp: // handle (nearly) singular I matrix
|
|
group.cpp: // typically due to 2-atom group or linear molecule
|
|
group.cpp: // use jacobi() and angmom_to_omega() to calculate valid omega
|
|
group.cpp: // less exact answer than matrix inversion, due to iterative Jacobi method
|
|
group.cpp: // enforce 3 evectors as a right-handed coordinate system
|
|
group.cpp: // flip 3rd vector if needed
|
|
group.cpp: // if any principal moment < scaled EPSILON, set to 0.0
|
|
group.cpp: // calculate omega using diagonalized inertia matrix
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
image.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp: // defaults for 3d viz
|
|
image.cpp: theta = 60.0 * MY_PI/180.0;
|
|
image.cpp: phi = 30.0 * MY_PI/180.0;
|
|
image.cpp: // colors
|
|
image.cpp: // define nmap colormaps, all with default settings
|
|
image.cpp: // static parameters
|
|
image.cpp: FOV = MY_PI/6.0; // 30 degrees
|
|
image.cpp: keyLightPhi = -MY_PI4; // -45 degrees
|
|
image.cpp: keyLightTheta = MY_PI/6.0; // 30 degrees
|
|
image.cpp: fillLightPhi = MY_PI/6.0; // 30 degrees
|
|
image.cpp: backLightPhi = MY_PI; // 180 degrees
|
|
image.cpp: backLightTheta = MY_PI/12.0; // 15 degrees
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: // camDir points at the camera, view direction = -camDir
|
|
image.cpp: // normalize up vector
|
|
image.cpp: // adjust camDir by epsilon if camDir and up are parallel
|
|
image.cpp: // do this by tweaking view direction, not up direction
|
|
image.cpp: // try to insure continuous images as changing view passes thru up
|
|
image.cpp: // sufficient to handle common cases where theta = 0 or 180 is degenerate?
|
|
image.cpp: // camUp = camDir x (Up x camDir)
|
|
image.cpp: // zdist = camera distance = function of zoom & bounding box
|
|
image.cpp: // camPos = camera position = function of camDir and zdist
|
|
image.cpp: zdist /= tan(FOV);
|
|
image.cpp: zdist /= zoom;
|
|
image.cpp: // light directions in terms of -camDir = z
|
|
image.cpp: // adjust shinyness of the reflection
|
|
image.cpp: // adjust strength of the SSAO
|
|
image.cpp: SSAOJitter = MY_PI / 12;
|
|
image.cpp: // param for rasterizing spheres
|
|
image.cpp: tanPerPixel = -(maxdel / (double) height);
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: nhalf /= 2;
|
|
image.cpp: nhalf /= 2;
|
|
image.cpp: // extra SSAO enhancement
|
|
image.cpp: // bcast full image to all procs
|
|
image.cpp: // each works on subset of pixels
|
|
image.cpp: // gather result back to proc 0
|
|
image.cpp: int pixelPart = height/nprocs * width*3;
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp: draw XYZ axes in red/green/blue
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: -tanPerPixel / zoom;
|
|
image.cpp: double pixelRadiusFull = radius / pixelWidth;
|
|
image.cpp: double xf = xmap / pixelWidth;
|
|
image.cpp: double yf = ymap / pixelWidth;
|
|
image.cpp: // shift 0,0 to screen center (vs lower left)
|
|
image.cpp: xc += width / 2;
|
|
image.cpp: yc += height / 2;
|
|
image.cpp: // outside the sphere in the projected image
|
|
image.cpp: surface[0] /= radius;
|
|
image.cpp: surface[1] /= radius;
|
|
image.cpp: surface[2] /= radius;
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: -tanPerPixel / zoom;
|
|
image.cpp: double pixelHalfWidthFull = halfWidth / pixelWidth;
|
|
image.cpp: double xf = xmap / pixelWidth;
|
|
image.cpp: double yf = ymap / pixelWidth;
|
|
image.cpp: // shift 0,0 to screen center (vs lower left)
|
|
image.cpp: xc += width / 2;
|
|
image.cpp: yc += height / 2;
|
|
image.cpp: // iterate through each of the 6 axis-oriented planes of the box
|
|
image.cpp: // only render up to 3 which are facing the camera
|
|
image.cpp: // these checks short circuit a dot product, testing for > 0
|
|
image.cpp: if (camDir[dim] > 0) { // positive faces camera
|
|
image.cpp: t = (radius - surface[dim]) / camDir[dim];
|
|
image.cpp: } else if (camDir[dim] < 0) { // negative faces camera
|
|
image.cpp: t = -(radius + surface[dim]) / camDir[dim];
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: if (sflag/2) draw_sphere(y,surfaceColor,diameter);
|
|
image.cpp: MathExtra::scale3(1.0/len,zaxis);
|
|
image.cpp: -tanPerPixel / zoom;
|
|
image.cpp: double xf = xmap / pixelWidth;
|
|
image.cpp: double yf = ymap / pixelWidth;
|
|
image.cpp: // shift 0,0 to screen center (vs lower left)
|
|
image.cpp: xc += width / 2;
|
|
image.cpp: yc += height / 2;
|
|
image.cpp: double pixelHalfWidthFull = (rasterWidth * 0.5) / pixelWidth;
|
|
image.cpp: double pixelHalfHeightFull = (rasterHeight * 0.5) / pixelWidth;
|
|
image.cpp: double t = (-b + partial) / (2*a);
|
|
image.cpp: double t2 = (-b - partial) / (2*a);
|
|
image.cpp: // convert surface into the surface normal
|
|
image.cpp: normal[0] = surface[0] / radius;
|
|
image.cpp: normal[1] = surface[1] / radius;
|
|
image.cpp: // in camera space
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: MathExtra::scale3 (1.0 / d1len, d1);
|
|
image.cpp: MathExtra::scale3 (1.0 / d2len, d2);
|
|
image.cpp: invndotd = 1.0 / MathExtra::dot3(normal, camDir);
|
|
image.cpp: // invalid triangle (parallel)
|
|
image.cpp: -tanPerPixel / zoom;
|
|
image.cpp: double xf = xmap / pixelWidth;
|
|
image.cpp: double yf = ymap / pixelWidth;
|
|
image.cpp: // shift 0,0 to screen center (vs lower left)
|
|
image.cpp: xc += width / 2;
|
|
image.cpp: yc += height / 2;
|
|
image.cpp: double pixelLeftFull = rasterLeft / pixelWidth;
|
|
image.cpp: double pixelRightFull = rasterRight / pixelWidth;
|
|
image.cpp: double pixelDownFull = rasterDown / pixelWidth;
|
|
image.cpp: double pixelUpFull = rasterUp / pixelWidth;
|
|
image.cpp: // test inside the triangle
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp: // store only the tangent relative to the camera normal (0,0,-1)
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp: // used for rasterizing the spheres
|
|
image.cpp: double delTheta = 2.0*MY_PI / SSAOSamples;
|
|
image.cpp: // typical neighborhood value for shading
|
|
image.cpp: -tanPerPixel / zoom;
|
|
image.cpp: int pixelRadius = (int) trunc (SSAORadius / pixelWidth + 0.5);
|
|
image.cpp: int hPart = height / nprocs;
|
|
image.cpp: // multiply by z cross surface tangent
|
|
image.cpp: // so that dot (aka cos) works here
|
|
image.cpp: // Bresenham's line algorithm to march over depthBuffer
|
|
image.cpp: delta = fabs(hy / hx);
|
|
image.cpp: delta = fabs(hx / hy);
|
|
image.cpp: // initialize with one step
|
|
image.cpp: // because the center point doesn't need testing
|
|
image.cpp: // cdepth - depthBuffer B/C we want it in the negative z direction
|
|
image.cpp: double h = atan ((cdepth - minPeak) / peakLen);
|
|
image.cpp: ao /= (double)SSAOSamples;
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp: return static/dynamic status of color map index
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp: set min/max bounds of dynamic color map index
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: {240/255.0, 248/255.0, 255/255.0},
|
|
image.cpp: {250/255.0, 235/255.0, 215/255.0},
|
|
image.cpp: {0/255.0, 255/255.0, 255/255.0},
|
|
image.cpp: {127/255.0, 255/255.0, 212/255.0},
|
|
image.cpp: {240/255.0, 255/255.0, 255/255.0},
|
|
image.cpp: {245/255.0, 245/255.0, 220/255.0},
|
|
image.cpp: {255/255.0, 228/255.0, 196/255.0},
|
|
image.cpp: {0/255.0, 0/255.0, 0/255.0},
|
|
image.cpp: {255/255.0, 255/255.0, 205/255.0},
|
|
image.cpp: {0/255.0, 0/255.0, 255/255.0},
|
|
image.cpp: {138/255.0, 43/255.0, 226/255.0},
|
|
image.cpp: {165/255.0, 42/255.0, 42/255.0},
|
|
image.cpp: {222/255.0, 184/255.0, 135/255.0},
|
|
image.cpp: {95/255.0, 158/255.0, 160/255.0},
|
|
image.cpp: {127/255.0, 255/255.0, 0/255.0},
|
|
image.cpp: {210/255.0, 105/255.0, 30/255.0},
|
|
image.cpp: {255/255.0, 127/255.0, 80/255.0},
|
|
image.cpp: {100/255.0, 149/255.0, 237/255.0},
|
|
image.cpp: {255/255.0, 248/255.0, 220/255.0},
|
|
image.cpp: {220/255.0, 20/255.0, 60/255.0},
|
|
image.cpp: {0/255.0, 255/255.0, 255/255.0},
|
|
image.cpp: {0/255.0, 0/255.0, 139/255.0},
|
|
image.cpp: {0/255.0, 139/255.0, 139/255.0},
|
|
image.cpp: {184/255.0, 134/255.0, 11/255.0},
|
|
image.cpp: {169/255.0, 169/255.0, 169/255.0},
|
|
image.cpp: {0/255.0, 100/255.0, 0/255.0},
|
|
image.cpp: {189/255.0, 183/255.0, 107/255.0},
|
|
image.cpp: {139/255.0, 0/255.0, 139/255.0},
|
|
image.cpp: {85/255.0, 107/255.0, 47/255.0},
|
|
image.cpp: {255/255.0, 140/255.0, 0/255.0},
|
|
image.cpp: {153/255.0, 50/255.0, 204/255.0},
|
|
image.cpp: {139/255.0, 0/255.0, 0/255.0},
|
|
image.cpp: {233/255.0, 150/255.0, 122/255.0},
|
|
image.cpp: {143/255.0, 188/255.0, 143/255.0},
|
|
image.cpp: {72/255.0, 61/255.0, 139/255.0},
|
|
image.cpp: {47/255.0, 79/255.0, 79/255.0},
|
|
image.cpp: {0/255.0, 206/255.0, 209/255.0},
|
|
image.cpp: {148/255.0, 0/255.0, 211/255.0},
|
|
image.cpp: {255/255.0, 20/255.0, 147/255.0},
|
|
image.cpp: {0/255.0, 191/255.0, 255/255.0},
|
|
image.cpp: {105/255.0, 105/255.0, 105/255.0},
|
|
image.cpp: {30/255.0, 144/255.0, 255/255.0},
|
|
image.cpp: {178/255.0, 34/255.0, 34/255.0},
|
|
image.cpp: {255/255.0, 250/255.0, 240/255.0},
|
|
image.cpp: {34/255.0, 139/255.0, 34/255.0},
|
|
image.cpp: {255/255.0, 0/255.0, 255/255.0},
|
|
image.cpp: {220/255.0, 220/255.0, 220/255.0},
|
|
image.cpp: {248/255.0, 248/255.0, 255/255.0},
|
|
image.cpp: {255/255.0, 215/255.0, 0/255.0},
|
|
image.cpp: {218/255.0, 165/255.0, 32/255.0},
|
|
image.cpp: {128/255.0, 128/255.0, 128/255.0},
|
|
image.cpp: {0/255.0, 128/255.0, 0/255.0},
|
|
image.cpp: {173/255.0, 255/255.0, 47/255.0},
|
|
image.cpp: {240/255.0, 255/255.0, 240/255.0},
|
|
image.cpp: {255/255.0, 105/255.0, 180/255.0},
|
|
image.cpp: {205/255.0, 92/255.0, 92/255.0},
|
|
image.cpp: {75/255.0, 0/255.0, 130/255.0},
|
|
image.cpp: {255/255.0, 240/255.0, 240/255.0},
|
|
image.cpp: {240/255.0, 230/255.0, 140/255.0},
|
|
image.cpp: {230/255.0, 230/255.0, 250/255.0},
|
|
image.cpp: {255/255.0, 240/255.0, 245/255.0},
|
|
image.cpp: {124/255.0, 252/255.0, 0/255.0},
|
|
image.cpp: {255/255.0, 250/255.0, 205/255.0},
|
|
image.cpp: {173/255.0, 216/255.0, 230/255.0},
|
|
image.cpp: {240/255.0, 128/255.0, 128/255.0},
|
|
image.cpp: {224/255.0, 255/255.0, 255/255.0},
|
|
image.cpp: {250/255.0, 250/255.0, 210/255.0},
|
|
image.cpp: {144/255.0, 238/255.0, 144/255.0},
|
|
image.cpp: {211/255.0, 211/255.0, 211/255.0},
|
|
image.cpp: {255/255.0, 182/255.0, 193/255.0},
|
|
image.cpp: {255/255.0, 160/255.0, 122/255.0},
|
|
image.cpp: {32/255.0, 178/255.0, 170/255.0},
|
|
image.cpp: {135/255.0, 206/255.0, 250/255.0},
|
|
image.cpp: {119/255.0, 136/255.0, 153/255.0},
|
|
image.cpp: {176/255.0, 196/255.0, 222/255.0},
|
|
image.cpp: {255/255.0, 255/255.0, 224/255.0},
|
|
image.cpp: {0/255.0, 255/255.0, 0/255.0},
|
|
image.cpp: {50/255.0, 205/255.0, 50/255.0},
|
|
image.cpp: {250/255.0, 240/255.0, 230/255.0},
|
|
image.cpp: {255/255.0, 0/255.0, 255/255.0},
|
|
image.cpp: {128/255.0, 0/255.0, 0/255.0},
|
|
image.cpp: {102/255.0, 205/255.0, 170/255.0},
|
|
image.cpp: {0/255.0, 0/255.0, 205/255.0},
|
|
image.cpp: {186/255.0, 85/255.0, 211/255.0},
|
|
image.cpp: {147/255.0, 112/255.0, 219/255.0},
|
|
image.cpp: {60/255.0, 179/255.0, 113/255.0},
|
|
image.cpp: {123/255.0, 104/255.0, 238/255.0},
|
|
image.cpp: {0/255.0, 250/255.0, 154/255.0},
|
|
image.cpp: {72/255.0, 209/255.0, 204/255.0},
|
|
image.cpp: {199/255.0, 21/255.0, 133/255.0},
|
|
image.cpp: {25/255.0, 25/255.0, 112/255.0},
|
|
image.cpp: {245/255.0, 255/255.0, 250/255.0},
|
|
image.cpp: {255/255.0, 228/255.0, 225/255.0},
|
|
image.cpp: {255/255.0, 228/255.0, 181/255.0},
|
|
image.cpp: {255/255.0, 222/255.0, 173/255.0},
|
|
image.cpp: {0/255.0, 0/255.0, 128/255.0},
|
|
image.cpp: {253/255.0, 245/255.0, 230/255.0},
|
|
image.cpp: {128/255.0, 128/255.0, 0/255.0},
|
|
image.cpp: {107/255.0, 142/255.0, 35/255.0},
|
|
image.cpp: {255/255.0, 165/255.0, 0/255.0},
|
|
image.cpp: {255/255.0, 69/255.0, 0/255.0},
|
|
image.cpp: {218/255.0, 112/255.0, 214/255.0},
|
|
image.cpp: {238/255.0, 232/255.0, 170/255.0},
|
|
image.cpp: {152/255.0, 251/255.0, 152/255.0},
|
|
image.cpp: {175/255.0, 238/255.0, 238/255.0},
|
|
image.cpp: {219/255.0, 112/255.0, 147/255.0},
|
|
image.cpp: {255/255.0, 239/255.0, 213/255.0},
|
|
image.cpp: {255/255.0, 239/255.0, 213/255.0},
|
|
image.cpp: {205/255.0, 133/255.0, 63/255.0},
|
|
image.cpp: {255/255.0, 192/255.0, 203/255.0},
|
|
image.cpp: {221/255.0, 160/255.0, 221/255.0},
|
|
image.cpp: {176/255.0, 224/255.0, 230/255.0},
|
|
image.cpp: {128/255.0, 0/255.0, 128/255.0},
|
|
image.cpp: {255/255.0, 0/255.0, 0/255.0},
|
|
image.cpp: {188/255.0, 143/255.0, 143/255.0},
|
|
image.cpp: {65/255.0, 105/255.0, 225/255.0},
|
|
image.cpp: {139/255.0, 69/255.0, 19/255.0},
|
|
image.cpp: {250/255.0, 128/255.0, 114/255.0},
|
|
image.cpp: {244/255.0, 164/255.0, 96/255.0},
|
|
image.cpp: {46/255.0, 139/255.0, 87/255.0},
|
|
image.cpp: {255/255.0, 245/255.0, 238/255.0},
|
|
image.cpp: {160/255.0, 82/255.0, 45/255.0},
|
|
image.cpp: {192/255.0, 192/255.0, 192/255.0},
|
|
image.cpp: {135/255.0, 206/255.0, 235/255.0},
|
|
image.cpp: {106/255.0, 90/255.0, 205/255.0},
|
|
image.cpp: {112/255.0, 128/255.0, 144/255.0},
|
|
image.cpp: {255/255.0, 250/255.0, 250/255.0},
|
|
image.cpp: {0/255.0, 255/255.0, 127/255.0},
|
|
image.cpp: {70/255.0, 130/255.0, 180/255.0},
|
|
image.cpp: {210/255.0, 180/255.0, 140/255.0},
|
|
image.cpp: {0/255.0, 128/255.0, 128/255.0},
|
|
image.cpp: {216/255.0, 191/255.0, 216/255.0},
|
|
image.cpp: {253/255.0, 99/255.0, 71/255.0},
|
|
image.cpp: {64/255.0, 224/255.0, 208/255.0},
|
|
image.cpp: {238/255.0, 130/255.0, 238/255.0},
|
|
image.cpp: {245/255.0, 222/255.0, 179/255.0},
|
|
image.cpp: {255/255.0, 255/255.0, 255/255.0},
|
|
image.cpp: {245/255.0, 245/255.0, 245/255.0},
|
|
image.cpp: {255/255.0, 255/255.0, 0/255.0},
|
|
image.cpp: {154/255.0, 205/255.0, 50/255.0}
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp:// ----------------------------------------------------------------------
|
|
image.cpp:// ----------------------------------------------------------------------
|
|
image.cpp:// ColorMap class
|
|
image.cpp:// ----------------------------------------------------------------------
|
|
image.cpp:// ----------------------------------------------------------------------
|
|
image.cpp: // default color map
|
|
image.cpp:/* ---------------------------------------------------------------------- */
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: mbinsizeinv = 1.0/mbinsize;
|
|
image.cpp: // NOTE: this is unfinished code, not sure how useful it is
|
|
image.cpp: // idea is to allow a list of colors to be specified with a single arg
|
|
image.cpp: // problem is that sequential colors in ALL are not very different
|
|
image.cpp: // e.g. ALL or USER or ALL5:10 or USER1:10:2
|
|
image.cpp: // current code is just 1st nentry values of ALL or USER
|
|
image.cpp: // need to comment out error check in DumpImage::modify_param()
|
|
image.cpp: // for amap check on (narg < n) to get it to work
|
|
image.cpp: // need to add extra logic here to check not accessing undefined colors
|
|
image.cpp: // one-time call to minmax if color map is static
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp: set explicit values for all min/max settings in color map
|
|
image.cpp: from min/max dynamic values
|
|
image.cpp: set lo/hi current and lvalue/hvalue entries that are MIN/MAX VALUE
|
|
image.cpp: called only once if mlo/mhi != MIN/MAX VALUE, else called repeatedly
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: // error in ABSOLUTE mode if new lo/hi current cause
|
|
image.cpp: // first/last entry to become lo > hi with adjacent entry
|
|
image.cpp: // OK if new lo/hi current cause an entry to have lo > hi,
|
|
image.cpp: // since last entry will always be a match
|
|
image.cpp:/* ----------------------------------------------------------------------
|
|
image.cpp:------------------------------------------------------------------------- */
|
|
image.cpp: double lo;//,hi;
|
|
image.cpp: else value = (value-locurrent) / (hicurrent-locurrent);
|
|
image.cpp: //hi = 1.0;
|
|
image.cpp: //hi = hicurrent;
|
|
image.cpp: double fraction = (value-mentry[i].svalue) /
|
|
imbalance.cpp:/* -*- c++ -*- ----------------------------------------------------------
|
|
imbalance.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
imbalance.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
imbalance.cpp:------------------------------------------------------------------------- */
|
|
imbalance.cpp:/* ---------------------------------------------------------------------- */
|
|
imbalance_group.cpp:/* ----------------------------------------------------------------------
|
|
imbalance_group.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
imbalance_group.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
imbalance_group.cpp:------------------------------------------------------------------------- */
|
|
imbalance_group.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_group.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_group.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_group.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_group.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_neigh.cpp:/* ----------------------------------------------------------------------
|
|
imbalance_neigh.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
imbalance_neigh.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
imbalance_neigh.cpp:------------------------------------------------------------------------- */
|
|
imbalance_neigh.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_neigh.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_neigh.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_neigh.cpp: // find suitable neighbor list
|
|
imbalance_neigh.cpp: // can only use certain conventional neighbor lists
|
|
imbalance_neigh.cpp: // NOTE: why not full list, if half does not exist?
|
|
imbalance_neigh.cpp: error->warning(FLERR,"Balance weight neigh skipped b/c no list found");
|
|
imbalance_neigh.cpp: // neighsum = total neigh count for atoms on this proc
|
|
imbalance_neigh.cpp: // localwt = weight assigned to each owned atom
|
|
imbalance_neigh.cpp: if (nlocal) localwt = 1.0*neighsum/nlocal;
|
|
imbalance_neigh.cpp: // apply factor if specified != 1.0
|
|
imbalance_neigh.cpp: // wtlo,wthi = lo/hi values excluding 0.0 due to no atoms on this proc
|
|
imbalance_neigh.cpp: // lo value does not change
|
|
imbalance_neigh.cpp: // newhi = new hi value to give hi/lo ratio factor times larger/smaller
|
|
imbalance_neigh.cpp: // expand/contract all localwt values from lo->hi to lo->newhi
|
|
imbalance_neigh.cpp: localwt = wtlo + ((localwt-wtlo)/(wthi-wtlo)) * (newhi-wtlo);
|
|
imbalance_neigh.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_store.cpp:/* ----------------------------------------------------------------------
|
|
imbalance_store.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
imbalance_store.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
imbalance_store.cpp:------------------------------------------------------------------------- */
|
|
imbalance_store.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_store.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_store.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_store.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_store.cpp: // property does not exist
|
|
imbalance_store.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_time.cpp:/* ----------------------------------------------------------------------
|
|
imbalance_time.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
imbalance_time.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
imbalance_time.cpp:------------------------------------------------------------------------- */
|
|
imbalance_time.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_time.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_time.cpp:/* ----------------------------------------------------------------------
|
|
imbalance_time.cpp:------------------------------------------------------------------------- */
|
|
imbalance_time.cpp: // flag = 1 if called from FixBalance at start of run
|
|
imbalance_time.cpp: // init Timer, so accumulated time not carried over from previous run
|
|
imbalance_time.cpp: // should NOT init Timer if called from Balance, it uses time from last run
|
|
imbalance_time.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_time.cpp: // cost = CPU time for relevant timers since last invocation
|
|
imbalance_time.cpp: // localwt = weight assigned to each owned atom
|
|
imbalance_time.cpp: // just return if no time yet tallied
|
|
imbalance_time.cpp: if (nlocal) localwt = cost/nlocal;
|
|
imbalance_time.cpp: // apply factor if specified != 1.0
|
|
imbalance_time.cpp: // wtlo,wthi = lo/hi values excluding 0.0 due to no atoms on this proc
|
|
imbalance_time.cpp: // lo value does not change
|
|
imbalance_time.cpp: // newhi = new hi value to give hi/lo ratio factor times larger/smaller
|
|
imbalance_time.cpp: // expand/contract all localwt values from lo->hi to lo->newhi
|
|
imbalance_time.cpp: localwt = wtlo + ((localwt-wtlo)/(wthi-wtlo)) * (newhi-wtlo);
|
|
imbalance_time.cpp: // record time up to this point
|
|
imbalance_time.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_var.cpp:/* ----------------------------------------------------------------------
|
|
imbalance_var.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
imbalance_var.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
imbalance_var.cpp:------------------------------------------------------------------------- */
|
|
imbalance_var.cpp:// DEBUG
|
|
imbalance_var.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_var.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_var.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_var.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_var.cpp:/* -------------------------------------------------------------------- */
|
|
imbalance_var.cpp:/* -------------------------------------------------------------------- */
|
|
improper.cpp:/* ----------------------------------------------------------------------
|
|
improper.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
improper.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
improper.cpp:------------------------------------------------------------------------- */
|
|
improper.cpp:/* ---------------------------------------------------------------------- */
|
|
improper.cpp:/* ---------------------------------------------------------------------- */
|
|
improper.cpp:/* ----------------------------------------------------------------------
|
|
improper.cpp:------------------------------------------------------------------------- */
|
|
improper.cpp:/* ----------------------------------------------------------------------
|
|
improper.cpp:------------------------------------------------------------------------- */
|
|
improper.cpp: eflag_atom = eflag / 2;
|
|
improper.cpp: vflag_atom = vflag / 4;
|
|
improper.cpp: // reallocate per-atom arrays if necessary
|
|
improper.cpp: // zero accumulators
|
|
improper.cpp:/* ----------------------------------------------------------------------
|
|
improper.cpp:------------------------------------------------------------------------- */
|
|
improper.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
improper_hybrid.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
improper_hybrid.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
improper_hybrid.cpp:------------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_hybrid.cpp: // save ptrs to original improperlist
|
|
improper_hybrid.cpp: // if this is re-neighbor step, create sub-style improperlists
|
|
improper_hybrid.cpp: // nimproperlist[] = length of each sub-style list
|
|
improper_hybrid.cpp: // realloc sub-style improperlist if necessary
|
|
improper_hybrid.cpp: // load sub-style improperlist with 5 values from original improperlist
|
|
improper_hybrid.cpp: // call each sub-style's compute function
|
|
improper_hybrid.cpp: // set neighbor->improperlist to sub-style improperlist before call
|
|
improper_hybrid.cpp: // accumulate sub-style global/peratom energy/virial in hybrid
|
|
improper_hybrid.cpp: // restore ptrs to original improperlist
|
|
improper_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
improper_hybrid.cpp:------------------------------------------------------------------------- */
|
|
improper_hybrid.cpp: // delete old lists, since cannot just change settings
|
|
improper_hybrid.cpp: // count sub-styles by skipping numeric args
|
|
improper_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric word
|
|
improper_hybrid.cpp: // need a better way to skip these exceptions
|
|
improper_hybrid.cpp: // allocate list of sub-styles
|
|
improper_hybrid.cpp: // allocate each sub-style and call its settings() with subset of args
|
|
improper_hybrid.cpp: // allocate uses suffix, but don't store suffix version in keywords,
|
|
improper_hybrid.cpp: // else syntax in coeff() will not match
|
|
improper_hybrid.cpp: // define subset of args for a sub-style by skipping numeric args
|
|
improper_hybrid.cpp: // one exception is 1st arg of style "table", which is non-numeric
|
|
improper_hybrid.cpp: // need a better way to skip these exceptions
|
|
improper_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
improper_hybrid.cpp:---------------------------------------------------------------------- */
|
|
improper_hybrid.cpp: // 2nd arg = improper sub-style name
|
|
improper_hybrid.cpp: // allow for "none" as valid sub-style name
|
|
improper_hybrid.cpp: // move 1st arg to 2nd arg
|
|
improper_hybrid.cpp: // just copy ptrs, since arg[] points into original input line
|
|
improper_hybrid.cpp: // invoke sub-style coeff() starting with 1st arg
|
|
improper_hybrid.cpp: // set setflag and which type maps to which sub-style
|
|
improper_hybrid.cpp: // if sub-style is none: set hybrid setflag, wipe out map
|
|
improper_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
improper_hybrid.cpp:------------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
improper_hybrid.cpp:------------------------------------------------------------------------- */
|
|
improper_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
improper_hybrid.cpp:------------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ----------------------------------------------------------------------
|
|
improper_zero.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
improper_zero.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
improper_zero.cpp:------------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ----------------------------------------------------------------------
|
|
improper_zero.cpp:------------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ----------------------------------------------------------------------
|
|
improper_zero.cpp:------------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ----------------------------------------------------------------------
|
|
improper_zero.cpp:------------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ----------------------------------------------------------------------
|
|
improper_zero.cpp:------------------------------------------------------------------------- */
|
|
improper_zero.cpp:/* ----------------------------------------------------------------------
|
|
improper_zero.cpp:------------------------------------------------------------------------- */
|
|
info.cpp:/* ----------------------------------------------------------------------
|
|
info.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
info.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
info.cpp:------------------------------------------------------------------------- */
|
|
info.cpp:/* ----------------------------------------------------------------------
|
|
info.cpp:------------------------------------------------------------------------- */
|
|
info.cpp:#include <sys/time.h>
|
|
info.cpp:#include <sys/resource.h>
|
|
info.cpp:#include <sys/utsname.h>
|
|
info.cpp:// same as in variable.cpp
|
|
info.cpp:/* ---------------------------------------------------------------------- */
|
|
info.cpp: // parse arguments
|
|
info.cpp: fprintf(out,"\nLAMMPS version: %s / %s\n",
|
|
info.cpp: double mbytes = bytes/1024.0/1024.0;
|
|
info.cpp: (double)pmc.PrivateUsage/1048576.0);
|
|
info.cpp: (double)pmc.PeakWorkingSetSize/1048576.0);
|
|
info.cpp: (double)mi.uordblks/1048576.0+(double)mi.hblkhd/1048576.0);
|
|
info.cpp: (double)ru.ru_maxrss/1024.0);
|
|
info.cpp: // from MSD docs.
|
|
info.cpp:#else /* POSIX */
|
|
info.cpp:#endif /* ! _WIN32 */
|
|
info.cpp: cpuclock = (cpuclock - cpus) / 60.0;
|
|
info.cpp: cpuh = (cpuclock - cpum) / 60.0;
|
|
info.cpp: wallclock = (wallclock - walls) / 60.0;
|
|
info.cpp: wallh = (wallclock - wallm) / 60.0;
|
|
info.cpp: // close output file pointer if opened locally thus forcing a hard sync.
|
|
info.cpp:/* ---------------------------------------------------------------------- */
|
|
info.cpp:// the is_active() function returns true if the selected style or name
|
|
info.cpp:// in the selected category is currently in use.
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix);
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix2);
|
|
info.cpp:/* ---------------------------------------------------------------------- */
|
|
info.cpp:// the is_available() function returns true if the selected style
|
|
info.cpp:// or name in the selected category is available for use (but need
|
|
info.cpp:// not be currently active).
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix);
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix2);
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix);
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix2);
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix);
|
|
info.cpp: sprintf(name_w_suffix,"%s/%s",name,lmp->suffix2);
|
|
info.cpp:/* ---------------------------------------------------------------------- */
|
|
info.cpp:// the is_defined() function returns true if a particular ID of the
|
|
info.cpp:// selected category (e.g. fix ID, group ID, region ID etc.) has been
|
|
info.cpp:// defined and thus can be accessed. It does *NOT* check whether a
|
|
info.cpp:// particular ID has a particular style.
|
|
info.cpp: // skip "secret" styles
|
|
info.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
input.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp:#include "sys/stat.h"
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // fill map with commands listed in style_command.h
|
|
input.cpp: // process command-line args
|
|
input.cpp: // check for args "-var" and "-echo"
|
|
input.cpp: // caller has already checked that sufficient arguments exist
|
|
input.cpp: char **tmp = arg; // trick echo() into using argv instead of arg
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // don't free command and arg strings
|
|
input.cpp: // they just point to other allocated memory
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // read a line from input script
|
|
input.cpp: // n = length of line including str terminator, 0 if end of file
|
|
input.cpp: // if line ends in continuation char '&', concatenate next line
|
|
input.cpp: // end of file reached, so break
|
|
input.cpp: // n == 0 if nothing read, else n = line with str terminator
|
|
input.cpp: // continue if last char read was not a newline
|
|
input.cpp: // could happen if line is very long
|
|
input.cpp: // continue reading if final printable char is & char
|
|
input.cpp: // or if odd number of triple quotes
|
|
input.cpp: // else break with n = line with str terminator
|
|
input.cpp: // bcast the line
|
|
input.cpp: // if n = 0, end-of-file
|
|
input.cpp: // error if label_active is set, since label wasn't encountered
|
|
input.cpp: // if original input file, code is done
|
|
input.cpp: // else go back to previous input file
|
|
input.cpp: // echo the command unless scanning for label
|
|
input.cpp: // parse the line
|
|
input.cpp: // if no command, skip to next line in input script
|
|
input.cpp: // if scanning for label, skip command unless it's a label command
|
|
input.cpp: // execute the command
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // error if another nested file still open, should not be possible
|
|
input.cpp: // open new filename and set infile, infiles[0], nfile
|
|
input.cpp: // call to file() will close filename and decrement nfile
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // echo the command unless scanning for label
|
|
input.cpp: // parse the line
|
|
input.cpp: // if no command, just return NULL
|
|
input.cpp: // if scanning for label, skip command unless it's a label command
|
|
input.cpp: // execute the command and return its name
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp: treat text between single/double/triple quotes as one arg via nextword()
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // duplicate line into copy string to break into words
|
|
input.cpp: // strip any # comment by replacing it with 0
|
|
input.cpp: // do not strip from a # inside single/double/triple quotes
|
|
input.cpp: // quoteflag = 1,2,3 when encounter first single/double,triple quote
|
|
input.cpp: // quoteflag = 0 when encounter matching single/double,triple quote
|
|
input.cpp: // perform $ variable substitution (print changes)
|
|
input.cpp: // except if searching for a label since earlier variable may not be defined
|
|
input.cpp: // command = 1st arg in copy string
|
|
input.cpp: // point arg[] at each subsequent arg in copy string
|
|
input.cpp: // nextword() inserts string terminators into copy string to delimit args
|
|
input.cpp: // nextword() treats text between single/double/triple quotes as one arg
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp: treat text between single/double/triple quotes as one arg
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // start = first non-whitespace char
|
|
input.cpp: // if start is single/double/triple quote:
|
|
input.cpp: // start = first char beyond quote
|
|
input.cpp: // stop = first char of matching quote
|
|
input.cpp: // next = first char beyond matching quote
|
|
input.cpp: // next must be NULL or whitespace
|
|
input.cpp: // if start is not single/double/triple quote:
|
|
input.cpp: // stop = first whitespace char after start
|
|
input.cpp: // next = char after stop, or stop itself if stop is NULL
|
|
input.cpp: // set stop to NULL to terminate word
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp: reallocate str/str2 to hold expanded version if necessary & reset max/max2
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // use str2 as scratch space to expand str, then copy back to str
|
|
input.cpp: // reallocate str and str2 as necessary
|
|
input.cpp: // do not replace $ inside single/double/triple quotes
|
|
input.cpp: // var = pts at variable name, ended by NULL
|
|
input.cpp: // if $ is followed by '{', trailing '}' becomes NULL
|
|
input.cpp: // else $x becomes x followed by NULL
|
|
input.cpp: // beyond = points to text following variable
|
|
input.cpp: // variable substitution
|
|
input.cpp: // value = ptr to expanded variable
|
|
input.cpp: // variable name between curly braces, e.g. ${a}
|
|
input.cpp: // immediate variable between parenthesis, e.g. $(1/2)
|
|
input.cpp: // single character variable name, e.g. $a
|
|
input.cpp: // check if storage in str2 needs to be expanded
|
|
input.cpp: // re-initialize ptr and ptr2 to the point beyond the variable.
|
|
input.cpp: // output substitution progress if requested
|
|
input.cpp: // quoteflag = 1,2,3 when encounter first single/double,triple quote
|
|
input.cpp: // quoteflag = 0 when encounter matching single/double,triple quote
|
|
input.cpp: // copy 2 extra triple quote chars into str2
|
|
input.cpp: // copy current character into str2
|
|
input.cpp: // set length of input str to length of work str2
|
|
input.cpp: // copy work string back to input str
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp: return new expanded # of values, and copy them w/out "*" into earg
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // maxarg should always end up equal to newarg, so caller can free earg
|
|
input.cpp: // check for global vector/array, peratom array, local array
|
|
input.cpp: // check for global vector/array, peratom array, local array
|
|
input.cpp: n = strlen(arg[iarg]) + 16; // 16 = space for large inserted integer
|
|
input.cpp: //printf("NEWARG %d\n",newarg);
|
|
input.cpp: //for (int i = 0; i < newarg; i++)
|
|
input.cpp: // printf(" arg %d: %s\n",i,earg[i]);
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: // return if command was listed above
|
|
input.cpp: // invoke commands added via style_command.h
|
|
input.cpp: // unrecognized command
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // substitute for variables in Boolean expression for "if"
|
|
input.cpp: // in case expression was enclosed in quotes
|
|
input.cpp: // must substitute on copy of arg else will step on subsequent args
|
|
input.cpp: // evaluate Boolean expression for "if"
|
|
input.cpp: // bound "then" commands
|
|
input.cpp: // execute "then" commands
|
|
input.cpp: // make copies of all arg string commands
|
|
input.cpp: // required because re-parsing a command via one() will wipe out args
|
|
input.cpp: // done if no "elif" or "else"
|
|
input.cpp: // check "elif" or "else" until find commands to execute
|
|
input.cpp: // substitute for variables and evaluate Boolean expression for "elif"
|
|
input.cpp: // must substitute on copy of arg else will step on subsequent args
|
|
input.cpp: // bound and execute "elif" or "else" commands
|
|
input.cpp: // execute the list of commands
|
|
input.cpp: // clean up
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // do not allow include inside an if command
|
|
input.cpp: // NOTE: this check will fail if a 2nd if command was inside the if command
|
|
input.cpp: // and came before the include
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // copy original line to copy, since will use strtok() on it
|
|
input.cpp: // ptr = start of 4th word
|
|
input.cpp: // execute the remaining command line on requested partitions
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // copy 1st arg back into line (copy is being used)
|
|
input.cpp: // check maxline since arg[0] could have been exanded by variables
|
|
input.cpp: // substitute for $ variables (no printing) and print arg
|
|
input.cpp: // parse optional args
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: if (narg == 0) error->done(0); // 1 would be fully backwards compatible
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // use work string to concat args back into one string separated by spaces
|
|
input.cpp: // invoke string in shell via system()
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // must reset default extra_dof of all computes
|
|
input.cpp: // since some were created before dimension command is encountered
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // same checks for packages existing as in LAMMPS::post_create()
|
|
input.cpp: // since can be invoked here by package command in input script
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ----------------------------------------------------------------------
|
|
input.cpp:------------------------------------------------------------------------- */
|
|
input.cpp: sprintf(estyle,"%s/%s",arg[0],lmp->suffix);
|
|
input.cpp: sprintf(estyle,"%s/%s",arg[0],lmp->suffix2);
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp: // store 1-3,1-4 and dihedral/extra flag values before change
|
|
input.cpp: // change in 1-2 coeffs will not change the special list
|
|
input.cpp: // if simulation box defined and saved values changed, redo special list
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
input.cpp:/* ---------------------------------------------------------------------- */
|
|
integrate.cpp:/* ----------------------------------------------------------------------
|
|
integrate.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
integrate.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
integrate.cpp:------------------------------------------------------------------------- */
|
|
integrate.cpp:/* ---------------------------------------------------------------------- */
|
|
integrate.cpp:/* ---------------------------------------------------------------------- */
|
|
integrate.cpp:/* ---------------------------------------------------------------------- */
|
|
integrate.cpp: // allow pair and Kspace compute() to be turned off via modify flags
|
|
integrate.cpp: // should add checks:
|
|
integrate.cpp: // for any acceleration package that has its own integrate/minimize
|
|
integrate.cpp: // in case input script has reset the run or minimize style explicitly
|
|
integrate.cpp: // e.g. invalid to have kokkos pair style with non-kokkos verlet
|
|
integrate.cpp: // but OK to have kokkos verlet with non kokkos pair style (just warn)
|
|
integrate.cpp: // making these checks would require all the pair, fix, etc styles have
|
|
integrate.cpp: // kokkos, intel flags
|
|
integrate.cpp:/* ----------------------------------------------------------------------
|
|
integrate.cpp:------------------------------------------------------------------------- */
|
|
integrate.cpp:/* ----------------------------------------------------------------------
|
|
integrate.cpp: eflag/vflag based on computes that need info on this ntimestep
|
|
integrate.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
irregular.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp:// allocate space for static class variable
|
|
irregular.cpp:// prototype for non-class function
|
|
irregular.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
irregular.cpp:/* ---------------------------------------------------------------------- */
|
|
irregular.cpp: // migrate work vectors
|
|
irregular.cpp: // send buffers
|
|
irregular.cpp: // universal work vectors
|
|
irregular.cpp: // initialize buffers for migrate atoms, not used for datum comm
|
|
irregular.cpp: // these can persist for multiple irregular operations
|
|
irregular.cpp:/* ---------------------------------------------------------------------- */
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp: // clear global->local map since atoms move to new procs
|
|
irregular.cpp: // clear old ghosts so map_set() at end will operate only on local atoms
|
|
irregular.cpp: // exchange() doesn't need to clear ghosts b/c borders()
|
|
irregular.cpp: // is called right after and it clears ghosts and calls map_set()
|
|
irregular.cpp: // subbox bounds for orthogonal or triclinic box
|
|
irregular.cpp: // if Comm will be called to assign new atom coords to procs,
|
|
irregular.cpp: // may need to setup RCB info
|
|
irregular.cpp: // loop over atoms, flag any that are not in my sub-box
|
|
irregular.cpp: // fill buffer with atoms leaving my box, using < and >=
|
|
irregular.cpp: // assign which proc it belongs to via Comm::coord2proc()
|
|
irregular.cpp: // if coord2proc() returns me, due to round-off
|
|
irregular.cpp: // in triclinic x2lamda(), then keep atom and don't send
|
|
irregular.cpp: // when atom is deleted, fill it in with last atom
|
|
irregular.cpp: // create irregular communication plan, perform comm, destroy plan
|
|
irregular.cpp: // returned nrecv = size of buffer needed for incoming atoms
|
|
irregular.cpp: // add received atoms to my list
|
|
irregular.cpp: // reset global->local map
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp: // migrate required if comm layout is tiled
|
|
irregular.cpp: // cannot use myloc[] logic below
|
|
irregular.cpp: // subbox bounds for orthogonal or triclinic box
|
|
irregular.cpp: // loop over atoms, check for any that are not in my sub-box
|
|
irregular.cpp: // assign which proc it belongs to via Comm::coord2proc()
|
|
irregular.cpp: // if logical igx,igy,igz of newproc > one away from myloc, set flag = 1
|
|
irregular.cpp: // this check needs to observe PBC
|
|
irregular.cpp: // cannot check via comm->procneigh since it ignores PBC
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp: // setup for collective comm
|
|
irregular.cpp: // work1 = 1 for procs I send a message to, not including self
|
|
irregular.cpp: // work2 = 1 for all procs, used for ReduceScatter
|
|
irregular.cpp: // nrecv_proc = # of procs I receive messages from, not including self
|
|
irregular.cpp: // options for performing ReduceScatter operation
|
|
irregular.cpp: // some are more efficient on some machines at big sizes
|
|
irregular.cpp: // allocate receive arrays
|
|
irregular.cpp: // nsend_proc = # of messages I send
|
|
irregular.cpp: // allocate send arrays
|
|
irregular.cpp: // list still stores size of message for procs I send to
|
|
irregular.cpp: // proc_send = procs I send to
|
|
irregular.cpp: // length_send = # of doubles I send to each proc
|
|
irregular.cpp: // to balance pattern of send messages:
|
|
irregular.cpp: // each proc begins with iproc > me, continues until iproc = me
|
|
irregular.cpp: // reset list to store which send message each proc corresponds to
|
|
irregular.cpp: // num_send = # of atoms I send to each proc
|
|
irregular.cpp: // work2 = offsets into index_send for each proc I send to
|
|
irregular.cpp: // index_send = list of which atoms to send to each proc
|
|
irregular.cpp: // 1st N1 values are atom indices for 1st proc,
|
|
irregular.cpp: // next N2 values are atom indices for 2nd proc, etc
|
|
irregular.cpp: // offset_send = where each atom starts in send buffer
|
|
irregular.cpp: // tell receivers how much data I send
|
|
irregular.cpp: // sendmax_proc = # of doubles I send in largest single message
|
|
irregular.cpp: MPI_Request tmpReq; // Use non-blocking send to avoid possible deadlock
|
|
irregular.cpp: MPI_Request_free(&tmpReq); // the MPI_Barrier below marks completion
|
|
irregular.cpp: // receive incoming messages
|
|
irregular.cpp: // proc_recv = procs I recv from
|
|
irregular.cpp: // length_recv = # of doubles each proc sends me
|
|
irregular.cpp: // nrecvsize = total size of atom data I recv
|
|
irregular.cpp: // sort proc_recv and length_recv by proc ID if requested
|
|
irregular.cpp: // useful for debugging to insure reproducible ordering of received atoms
|
|
irregular.cpp: // invoke by adding final arg = 1 to create_atom() call in migrate_atoms()
|
|
irregular.cpp: // barrier to insure all MPI_ANY_SOURCE messages are received
|
|
irregular.cpp: // else another proc could proceed to exchange_atom() and send to me
|
|
irregular.cpp: // return size of atom data I will receive
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp: // post all receives
|
|
irregular.cpp: // reallocate buf for largest send if necessary
|
|
irregular.cpp: // send each message
|
|
irregular.cpp: // pack buf with list of atoms
|
|
irregular.cpp: // m = index of atom in sendbuf
|
|
irregular.cpp: // wait on all incoming messages
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp: // setup for collective comm
|
|
irregular.cpp: // work1 = 1 for procs I send a message to, not including self
|
|
irregular.cpp: // work2 = 1 for all procs, used for ReduceScatter
|
|
irregular.cpp: // nrecv_proc = # of procs I receive messages from, not including self
|
|
irregular.cpp: // options for performing ReduceScatter operation
|
|
irregular.cpp: // some are more efficient on some machines at big sizes
|
|
irregular.cpp: // allocate receive arrays
|
|
irregular.cpp: // work1 = # of datums I send to each proc, including self
|
|
irregular.cpp: // nsend_proc = # of procs I send messages to, not including self
|
|
irregular.cpp: // allocate send and self arrays
|
|
irregular.cpp: // proc_send = procs I send to
|
|
irregular.cpp: // num_send = # of datums I send to each proc
|
|
irregular.cpp: // num_self = # of datums I copy to self
|
|
irregular.cpp: // to balance pattern of send messages:
|
|
irregular.cpp: // each proc begins with iproc > me, continues until iproc = me
|
|
irregular.cpp: // reset work1 to store which send message each proc corresponds to
|
|
irregular.cpp: // work2 = offsets into index_send for each proc I send to
|
|
irregular.cpp: // m = ptr into index_self
|
|
irregular.cpp: // index_send = list of which datums to send to each proc
|
|
irregular.cpp: // 1st N1 values are datum indices for 1st proc,
|
|
irregular.cpp: // next N2 values are datum indices for 2nd proc, etc
|
|
irregular.cpp: // index_self = list of which datums to copy to self
|
|
irregular.cpp: // tell receivers how much data I send
|
|
irregular.cpp: // sendmax_proc = largest # of datums I send in a single message
|
|
irregular.cpp: MPI_Request tmpReq; // Use non-blocking send to avoid possible deadlock
|
|
irregular.cpp: MPI_Request_free(&tmpReq); // the MPI_Barrier below marks completion
|
|
irregular.cpp: // receive incoming messages
|
|
irregular.cpp: // proc_recv = procs I recv from
|
|
irregular.cpp: // num_recv = total size of message each proc sends me
|
|
irregular.cpp: // nrecvdatum = total size of data I recv
|
|
irregular.cpp: // sort proc_recv and num_recv by proc ID if requested
|
|
irregular.cpp: // useful for debugging to insure reproducible ordering of received datums
|
|
irregular.cpp: // barrier to insure all MPI_ANY_SOURCE messages are received
|
|
irregular.cpp: // else another proc could proceed to exchange_data() and send to me
|
|
irregular.cpp: // return # of datums I will receive
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp: // post all receives, starting after self copies
|
|
irregular.cpp: // reallocate buf for largest send if necessary
|
|
irregular.cpp: // send each message
|
|
irregular.cpp: // pack buf with list of datums
|
|
irregular.cpp: // m = index of datum in sendbuf
|
|
irregular.cpp: // copy datums to self, put at beginning of recvbuf
|
|
irregular.cpp: // wait on all incoming messages
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp: if flag = 0, don't need to realloc with copy, just free/malloc
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp: free/malloc the size of the recv buffer as needed with BUFFACTOR
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp:/* ----------------------------------------------------------------------
|
|
irregular.cpp:------------------------------------------------------------------------- */
|
|
irregular.cpp: bytes += maxsend*sizeof(double); // buf_send
|
|
irregular.cpp: bytes += maxrecv*sizeof(double); // buf_recv
|
|
irregular.cpp: bytes += maxdbuf*sizeof(double); // dbuf
|
|
irregular.cpp: bytes += maxbuf; // buf
|
|
irregular.cpp: bytes += 2*maxlocal*sizeof(int); // mproclist,msizes
|
|
irregular.cpp: bytes += 2*nprocs*sizeof(int); // work1,work2
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
kspace.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp:/* ---------------------------------------------------------------------- */
|
|
kspace.cpp: // default to using MPI collectives for FFT/remap only on IBM BlueGene
|
|
kspace.cpp: (force->qelectron * force->qelectron) /
|
|
kspace.cpp: gcons[2][0] = 15.0 / 8.0;
|
|
kspace.cpp: gcons[2][1] = -5.0 / 4.0;
|
|
kspace.cpp: gcons[2][2] = 3.0 / 8.0;
|
|
kspace.cpp: gcons[3][0] = 35.0 / 16.0;
|
|
kspace.cpp: gcons[3][1] = -35.0 / 16.0;
|
|
kspace.cpp: gcons[3][2] = 21.0 / 16.0;
|
|
kspace.cpp: gcons[3][3] = -5.0 / 16.0;
|
|
kspace.cpp: gcons[4][0] = 315.0 / 128.0;
|
|
kspace.cpp: gcons[4][1] = -105.0 / 32.0;
|
|
kspace.cpp: gcons[4][2] = 189.0 / 64.0;
|
|
kspace.cpp: gcons[4][3] = -45.0 / 32.0;
|
|
kspace.cpp: gcons[4][4] = 35.0 / 128.0;
|
|
kspace.cpp: gcons[5][0] = 693.0 / 256.0;
|
|
kspace.cpp: gcons[5][1] = -1155.0 / 256.0;
|
|
kspace.cpp: gcons[5][2] = 693.0 / 128.0;
|
|
kspace.cpp: gcons[5][3] = -495.0 / 128.0;
|
|
kspace.cpp: gcons[5][4] = 385.0 / 256.0;
|
|
kspace.cpp: gcons[5][5] = -63.0 / 256.0;
|
|
kspace.cpp: gcons[6][0] = 3003.0 / 1024.0;
|
|
kspace.cpp: gcons[6][1] = -3003.0 / 512.0;
|
|
kspace.cpp: gcons[6][2] = 9009.0 / 1024.0;
|
|
kspace.cpp: gcons[6][3] = -2145.0 / 256.0;
|
|
kspace.cpp: gcons[6][4] = 5005.0 / 1024.0;
|
|
kspace.cpp: gcons[6][5] = -819.0 / 512.0;
|
|
kspace.cpp: gcons[6][6] = 231.0 / 1024.0;
|
|
kspace.cpp: dgcons[2][0] = -5.0 / 2.0;
|
|
kspace.cpp: dgcons[2][1] = 3.0 / 2.0;
|
|
kspace.cpp: dgcons[3][0] = -35.0 / 8.0;
|
|
kspace.cpp: dgcons[3][1] = 21.0 / 4.0;
|
|
kspace.cpp: dgcons[3][2] = -15.0 / 8.0;
|
|
kspace.cpp: dgcons[4][0] = -105.0 / 16.0;
|
|
kspace.cpp: dgcons[4][1] = 189.0 / 16.0;
|
|
kspace.cpp: dgcons[4][2] = -135.0 / 16.0;
|
|
kspace.cpp: dgcons[4][3] = 35.0 / 16.0;
|
|
kspace.cpp: dgcons[5][0] = -1155.0 / 128.0;
|
|
kspace.cpp: dgcons[5][1] = 693.0 / 32.0;
|
|
kspace.cpp: dgcons[5][2] = -1485.0 / 64.0;
|
|
kspace.cpp: dgcons[5][3] = 385.0 / 32.0;
|
|
kspace.cpp: dgcons[5][4] = -315.0 / 128.0;
|
|
kspace.cpp: dgcons[6][0] = -3003.0 / 256.0;
|
|
kspace.cpp: dgcons[6][1] = 9009.0 / 256.0;
|
|
kspace.cpp: dgcons[6][2] = -6435.0 / 128.0;
|
|
kspace.cpp: dgcons[6][3] = 5005.0 / 128.0;
|
|
kspace.cpp: dgcons[6][4] = -4095.0 / 256.0;
|
|
kspace.cpp: dgcons[6][5] = 693.0 / 256.0;
|
|
kspace.cpp:/* ---------------------------------------------------------------------- */
|
|
kspace.cpp:/* ---------------------------------------------------------------------- */
|
|
kspace.cpp:/* ---------------------------------------------------------------------- */
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp: eflag_atom = eflag / 2;
|
|
kspace.cpp: vflag_atom = vflag / 4;
|
|
kspace.cpp: // reallocate per-atom arrays if necessary
|
|
kspace.cpp: // zero accumulators
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp: compute qsum,qsqsum,q2 and give error/warning if not charge neutral
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp: // not yet sure of the correction needed for non-neutral systems
|
|
kspace.cpp: // so issue warning or error
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp: see http://www.loria.fr/~shornus/ellipsoid-bbox.html and
|
|
kspace.cpp: http://yiningkarlli.blogspot.com/2013/02/
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp: xy*xy*yz*yz)/(lx*ly*lz);
|
|
kspace.cpp: b[1] = r*sqrt(lz*lz + yz*yz)/(ly*lz);
|
|
kspace.cpp: b[2] = r/lz;
|
|
kspace.cpp:/* ----------------------------------------------------------------------
|
|
kspace.cpp:------------------------------------------------------------------------- */
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"mesh/disp") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"order/disp") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"gewald/disp") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"cutoff/adjust") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"kmax/ewald") == 0) {
|
|
kspace.cpp: error->all(FLERR,"Bad kspace_modify kmax/ewald parameter");
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"mix/disp") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"force/disp/real") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"force/disp/kspace") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"pressure/scalar") == 0) {
|
|
kspace.cpp: } else if (strcmp(arg[iarg],"disp/auto") == 0) {
|
|
kspace.cpp:/* ---------------------------------------------------------------------- */
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
lammps.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp: // parse input switches
|
|
lammps.cpp: // delimit any extra args for the Kokkos instantiation
|
|
lammps.cpp: // delimit args for package command invocation
|
|
lammps.cpp: // any package arg with leading "-" will be followed by numeric digit
|
|
lammps.cpp: // hybrid option to set fall-back for suffix2
|
|
lammps.cpp: // check for restart remap flag
|
|
lammps.cpp: // delimit any extra args for the write_data command
|
|
lammps.cpp: // if no partition command-line switch, universe is one world with all procs
|
|
lammps.cpp: // sum of procs in all worlds must equal total # of procs
|
|
lammps.cpp: // universe cannot use stdin for input file
|
|
lammps.cpp: // if no partition command-line switch, cannot use -pscreen option
|
|
lammps.cpp: // if no partition command-line switch, cannot use -plog option
|
|
lammps.cpp: // set universe screen and logfile
|
|
lammps.cpp: // make universe and single world the same, since no partition switch
|
|
lammps.cpp: // world inherits settings from universe
|
|
lammps.cpp: // set world screen, logfile, communicator, infile
|
|
lammps.cpp: // open input script if from file
|
|
lammps.cpp: // universe is one or more worlds, as setup by partition switch
|
|
lammps.cpp: // split universe communicator into separate world communicators
|
|
lammps.cpp: // set world screen, logfile, communicator, infile
|
|
lammps.cpp: // open input script
|
|
lammps.cpp: // screen and logfile messages for universe and world
|
|
lammps.cpp: // check consistency of datatype settings in lmptype.h
|
|
lammps.cpp: // create Kokkos class if KOKKOS installed, unless explicitly switched off
|
|
lammps.cpp: // instantiation creates dummy Kokkos class if KOKKOS is not installed
|
|
lammps.cpp: // add args between kkfirst and kklast to Kokkos instantiation
|
|
lammps.cpp: // allocate CiteMe class if enabled
|
|
lammps.cpp: // allocate input class now that MPI is fully setup
|
|
lammps.cpp: // copy package cmdline arguments
|
|
lammps.cpp: // allocate top-level classes
|
|
lammps.cpp: // if helpflag set, print help and quit with "success" status
|
|
lammps.cpp: // if restartflag set, invoke 2 commands and quit
|
|
lammps.cpp: // add args between wdfirst and wdlast to write_data command
|
|
lammps.cpp: // also add "noinit" to prevent write_data from doing system init
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp: totalclock = (totalclock - seconds) / 60.0;
|
|
lammps.cpp: int hours = (totalclock - minutes) / 60.0;
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp: force = NULL; // Domain->Lattice checks if Force exists
|
|
lammps.cpp: // Comm class must be created before Atom class
|
|
lammps.cpp: // so that nthreads is defined when create_avec invokes grow()
|
|
lammps.cpp: atom->create_avec("atomic/kk",0,NULL,1);
|
|
lammps.cpp: force = new Force(this); // must be after group, to create temperature
|
|
lammps.cpp: output = new Output(this); // must be after group, so "all" exists
|
|
lammps.cpp: // must be after modify so can create Computes
|
|
lammps.cpp: update = new Update(this); // must be after output, force, neighbor
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp: // default package command triggered by "-k on"
|
|
lammps.cpp: // suffix will always be set if suffix_enable = 1
|
|
lammps.cpp: // check that KOKKOS package classes were instantiated
|
|
lammps.cpp: // check that GPU, INTEL, USER-OMP fixes were compiled with LAMMPS
|
|
lammps.cpp: // invoke any command-line package commands
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp: force->init(); // pair must come after update due to minimizer
|
|
lammps.cpp: atom->init(); // atom must come after force and domain
|
|
lammps.cpp: // atom deletes extra array
|
|
lammps.cpp: // used by fix shear_history::unpack_restart()
|
|
lammps.cpp: // when force->pair->gran_history creates fix
|
|
lammps.cpp: // atom_vec init uses deform_vremap
|
|
lammps.cpp: modify->init(); // modify must come after update, force, atom, domain
|
|
lammps.cpp: neighbor->init(); // neighbor must come after force, modify
|
|
lammps.cpp: comm->init(); // comm must come after force, modify, neighbor, atom
|
|
lammps.cpp: output->init(); // output must come after domain, force, modify
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp: delete modify; // modify must come after output, force, update
|
|
lammps.cpp: // since they delete fixes
|
|
lammps.cpp: delete domain; // domain must come after modify
|
|
lammps.cpp: // since fix destructors access domain
|
|
lammps.cpp: delete atom; // atom must come after modify, neighbor
|
|
lammps.cpp: // since fixes delete callbacks in atom
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lammps.cpp: // if output is "stdout", use a pipe to a pager for paged output.
|
|
lammps.cpp: // this will avoid the most important help text to rush past the
|
|
lammps.cpp: // user. scrollback buffers are often not large enough. this is most
|
|
lammps.cpp: // beneficial to windows users, who are not used to command line.
|
|
lammps.cpp: // reset to original state, if pipe command failed
|
|
lammps.cpp: // general help message about command line and flags
|
|
lammps.cpp: "\nLarge-scale Atomic/Molecular Massively Parallel Simulator - "
|
|
lammps.cpp: "-echo none/screen/log/both : echoing of input script (-e)\n"
|
|
lammps.cpp: "-kokkos on/off ... : turn KOKKOS mode on or off (-k)\n"
|
|
lammps.cpp: "-log none/filename : where to send log output (-l)\n"
|
|
lammps.cpp: "-screen none/filename : where to send screen output (-sc)\n"
|
|
lammps.cpp: "-suffix gpu/intel/opt/omp : style suffix to apply (-sf)\n"
|
|
lammps.cpp: // close pipe to pager, if active
|
|
lammps.cpp:/* ----------------------------------------------------------------------
|
|
lammps.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
lattice.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ---------------------------------------------------------------------- */
|
|
lattice.cpp: // parse style arg
|
|
lattice.cpp: // Domain creates a default lattice of style "none"
|
|
lattice.cpp: // before Force class is instantiated, just use atof() in that case
|
|
lattice.cpp: // check that lattice matches dimension
|
|
lattice.cpp: // style CUSTOM can be either 2d or 3d
|
|
lattice.cpp: // scale = conversion factor between lattice and box units
|
|
lattice.cpp: // set basis atoms for each style
|
|
lattice.cpp: // x,y,z = fractional coords within unit cell
|
|
lattice.cpp: // style CUSTOM will be defined by optional args
|
|
lattice.cpp: add_basis(0.5,5.0/6.0,0.5);
|
|
lattice.cpp: add_basis(0.0,1.0/3.0,0.5);
|
|
lattice.cpp: // set defaults for optional args
|
|
lattice.cpp: a3[2] = sqrt(8.0/3.0);
|
|
lattice.cpp: // process optional args
|
|
lattice.cpp: // check settings for errors
|
|
lattice.cpp: // reset scale for LJ units (input scale is rho*)
|
|
lattice.cpp: // scale = (Nbasis/(Vprimitive * rho*)) ^ (1/dim)
|
|
lattice.cpp: scale = pow(nbasis/volume/scale,1.0/dimension);
|
|
lattice.cpp: // initialize lattice <-> box transformation matrices
|
|
lattice.cpp: // convert 8 corners of primitive unit cell from lattice coords to box coords
|
|
lattice.cpp: // min to max = bounding box around the pts in box space
|
|
lattice.cpp: // xlattice,ylattice,zlattice = extent of bbox in box space
|
|
lattice.cpp: // set xlattice,ylattice,zlattice to 0.0 initially
|
|
lattice.cpp: // since bbox uses them to shift origin (irrelevant for this computation)
|
|
lattice.cpp: // print lattice spacings
|
|
lattice.cpp:/* ---------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp: // primitive = 3x3 matrix with primitive vectors as columns
|
|
lattice.cpp: // priminv = inverse of primitive
|
|
lattice.cpp: primitive[1][2]*primitive[2][1]) / determinant;
|
|
lattice.cpp: primitive[1][0]*primitive[2][2]) / determinant;
|
|
lattice.cpp: primitive[1][1]*primitive[2][0]) / determinant;
|
|
lattice.cpp: primitive[0][1]*primitive[2][2]) / determinant;
|
|
lattice.cpp: primitive[0][2]*primitive[2][0]) / determinant;
|
|
lattice.cpp: primitive[0][0]*primitive[2][1]) / determinant;
|
|
lattice.cpp: primitive[0][2]*primitive[1][1]) / determinant;
|
|
lattice.cpp: primitive[0][0]*primitive[1][2]) / determinant;
|
|
lattice.cpp: primitive[0][1]*primitive[1][0]) / determinant;
|
|
lattice.cpp: // rotaterow = 3x3 matrix with normalized orient vectors as rows
|
|
lattice.cpp: rotaterow[0][0] = orientx[0] / length;
|
|
lattice.cpp: rotaterow[0][1] = orientx[1] / length;
|
|
lattice.cpp: rotaterow[0][2] = orientx[2] / length;
|
|
lattice.cpp: rotaterow[1][0] = orienty[0] / length;
|
|
lattice.cpp: rotaterow[1][1] = orienty[1] / length;
|
|
lattice.cpp: rotaterow[1][2] = orienty[2] / length;
|
|
lattice.cpp: rotaterow[2][0] = orientz[0] / length;
|
|
lattice.cpp: rotaterow[2][1] = orientz[1] / length;
|
|
lattice.cpp: rotaterow[2][2] = orientz[2] / length;
|
|
lattice.cpp: // rotatecol = 3x3 matrix with normalized orient vectors as columns
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp: transformation: xyz_latt = P_inv * 1/scale * Rotate_col * (xyz_box - offset)
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp: x1 /= scale;
|
|
lattice.cpp: y1 /= scale;
|
|
lattice.cpp: z1 /= scale;
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
lattice.cpp:/* ----------------------------------------------------------------------
|
|
lattice.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
library.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:// C or Fortran style library interface to LAMMPS
|
|
library.cpp:// customize by adding new LAMMPS-specific functions
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:// utility macros
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp: // code paths which might throw exception
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:// helper functions, not in library API
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:// library API functions to create/destroy an instance of LAMMPS
|
|
library.cpp:// and communicate commands to it
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp: char *str = (char *) lmp->memory->smalloc(n,"lib/commands/list:str");
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp: // make copy of str so can strtok() it
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:// library API functions to extract info from LAMMPS or set info in LAMMPS
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp: // update->atime can be referenced as a pointer
|
|
library.cpp: // thermo "timer" data cannot be, since it is computed on request
|
|
library.cpp: // lammps_get_thermo() can access all thermo keywords by value
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp: returns a NULL if id is not recognized or style/type not supported
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp: returns a NULL if id is not recognized or style/type not supported
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp: // error if tags are not defined or not consecutive
|
|
library.cpp: // copy = Natom length vector of per-atom values
|
|
library.cpp: // use atom ID to insert each atom's values into copy
|
|
library.cpp: // MPI_Allreduce with MPI_SUM to merge into data, ordered by atom ID
|
|
library.cpp: lmp->memory->create(copy,count*natoms,"lib/gather:copy");
|
|
library.cpp: lmp->memory->create(copy,count*natoms,"lib/gather:copy");
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp: // error if tags are not defined or not consecutive or no atom map
|
|
library.cpp: // copy = Natom length vector of per-atom values
|
|
library.cpp: // use atom ID to insert each atom's values into copy
|
|
library.cpp: // MPI_Allreduce with MPI_SUM to merge into data, ordered by atom ID
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp: // error if box does not exist or tags not defined
|
|
library.cpp: // loop over N atoms of entire system
|
|
library.cpp: // if this proc owns it based on coords, invoke create_atom()
|
|
library.cpp: // optionally set atom tags and velocities
|
|
library.cpp: // need to reset atom->natoms inside LAMMPS
|
|
library.cpp: // init per-atom fix/compute/variable values for created atoms
|
|
library.cpp: // if global map exists, reset it
|
|
library.cpp: // invoke map_init() b/c atom count has grown
|
|
library.cpp: // warn if new natoms is not correct
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:// library API functions for error handling
|
|
library.cpp:// ----------------------------------------------------------------------
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
library.cpp:/* ----------------------------------------------------------------------
|
|
library.cpp:------------------------------------------------------------------------- */
|
|
main.cpp:/* ----------------------------------------------------------------------
|
|
main.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
main.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
main.cpp:------------------------------------------------------------------------- */
|
|
main.cpp:/* ----------------------------------------------------------------------
|
|
main.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
math_extra.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: // create augmented matrix for pivoting
|
|
math_extra.cpp: double m = aug[j][i]/aug[i][i];
|
|
math_extra.cpp: // back substitution
|
|
math_extra.cpp: ans[2] = aug[2][3]/aug[2][2];
|
|
math_extra.cpp: ans[i] = (aug[i][3]-sumax) / aug[i][i];
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: if (iter < 4) tresh = 0.2*sm/(3*3);
|
|
math_extra.cpp: if (fabs(h)+g == fabs(h)) t = (matrix[i][j])/h;
|
|
math_extra.cpp: theta = 0.5*h/(matrix[i][j]);
|
|
math_extra.cpp: t = 1.0/(fabs(theta)+sqrt(1.0+theta*theta));
|
|
math_extra.cpp: c = 1.0/sqrt(1.0+t*t);
|
|
math_extra.cpp: tau = s/(1.0+c);
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp: also returns updated omega at 1/2 step
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: // full update from dq/dt = 1/2 w q
|
|
math_extra.cpp: // 1st half update from dq/dt = 1/2 w q
|
|
math_extra.cpp: // re-compute omega at 1/2 step from m at 1/2 step and q at 1/2 step
|
|
math_extra.cpp: // recompute wq
|
|
math_extra.cpp: // 2nd half update from dq/dt = 1/2 w q
|
|
math_extra.cpp: // corrected Richardson update
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: // apply permuation operator on p and q, get kp and kq
|
|
math_extra.cpp: // obtain phi, cosines and sines
|
|
math_extra.cpp: else phi /= 4.0 * inertia[k-1];
|
|
math_extra.cpp: // advance p and q
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp: wbody = Mbody / Idiag
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: else wbody[0] = (m[0]*ex[0] + m[1]*ex[1] + m[2]*ex[2]) / idiag[0];
|
|
math_extra.cpp: else wbody[1] = (m[0]*ey[0] + m[1]*ey[1] + m[2]*ey[2]) / idiag[1];
|
|
math_extra.cpp: else wbody[2] = (m[0]*ez[0] + m[1]*ez[1] + m[2]*ez[2]) / idiag[2];
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: else wbody[0] /= moments[0];
|
|
math_extra.cpp: else wbody[1] /= moments[1];
|
|
math_extra.cpp: else wbody[2] /= moments[2];
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: // squares of quaternion components
|
|
math_extra.cpp: // some component must be greater than 1/4 since they sum to 1
|
|
math_extra.cpp: // compute other components from it
|
|
math_extra.cpp: q[1] = (ey[2] - ez[1]) / (4.0*q[0]);
|
|
math_extra.cpp: q[2] = (ez[0] - ex[2]) / (4.0*q[0]);
|
|
math_extra.cpp: q[3] = (ex[1] - ey[0]) / (4.0*q[0]);
|
|
math_extra.cpp: q[0] = (ey[2] - ez[1]) / (4.0*q[1]);
|
|
math_extra.cpp: q[2] = (ey[0] + ex[1]) / (4.0*q[1]);
|
|
math_extra.cpp: q[3] = (ex[2] + ez[0]) / (4.0*q[1]);
|
|
math_extra.cpp: q[0] = (ez[0] - ex[2]) / (4.0*q[2]);
|
|
math_extra.cpp: q[1] = (ey[0] + ex[1]) / (4.0*q[2]);
|
|
math_extra.cpp: q[3] = (ez[1] + ey[2]) / (4.0*q[2]);
|
|
math_extra.cpp: q[0] = (ex[1] - ey[0]) / (4.0*q[3]);
|
|
math_extra.cpp: q[1] = (ez[0] + ex[2]) / (4.0*q[3]);
|
|
math_extra.cpp: q[2] = (ez[1] + ey[2]) / (4.0*q[3]);
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: idiag[1] = 1.0/12.0 * mass * length*length;
|
|
math_extra.cpp: idiag[2] = 1.0/12.0 * mass * length*length;
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp: from http://en.wikipedia.org/wiki/Inertia_tensor_of_triangle
|
|
math_extra.cpp: inertia tensor = a/24 (v0^2 + v1^2 + v2^2 + (v0+v1+v2)^2) I - a Vt S V
|
|
math_extra.cpp: S = 1/24 [2 1 1]
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp: double inv24 = mass/24.0;
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp:------------------------------------------------------------------------- */
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp: ------------------------------------------------------------------------- */
|
|
math_extra.cpp: const double cosAngle = (1.0 - angleSq * 0.25) / (1.0 + angleSq * 0.25);
|
|
math_extra.cpp: const double sinAngle = angle / (1.0 + angleSq * 0.25);
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp: ------------------------------------------------------------------------- */
|
|
math_extra.cpp: const double cosAngle = (1.0 - angleSq * 0.25) / (1.0 + angleSq * 0.25);
|
|
math_extra.cpp: const double sinAngle = angle / (1.0 + angleSq * 0.25);
|
|
math_extra.cpp:/* ----------------------------------------------------------------------
|
|
math_extra.cpp: ------------------------------------------------------------------------- */
|
|
math_extra.cpp: const double cosAngle = (1.0 - angleSq * 0.25) / (1.0 + angleSq * 0.25);
|
|
math_extra.cpp: const double sinAngle = angle / (1.0 + angleSq * 0.25);
|
|
math_extra.cpp:/* ---------------------------------------------------------------------- */
|
|
math_special.cpp:/* Library libcerf:
|
|
math_special.cpp: * distribute, sublicense, and/or sell copies of the Software, and to
|
|
math_special.cpp: * http://apps.jcns.fz-juelich.de/libcerf
|
|
math_special.cpp: * ../CHANGELOG
|
|
math_special.cpp: */
|
|
math_special.cpp:/******************************************************************************/
|
|
math_special.cpp:/* Lookup-table for Chebyshev polynomials for smaller |x| */
|
|
math_special.cpp:/******************************************************************************/
|
|
math_special.cpp: // Steven G. Johnson, October 2012.
|
|
math_special.cpp: // Given y100=100*y, where y = 4/(4+x) for x >= 0, compute erfc(x).
|
|
math_special.cpp: // Uses a look-up table of 100 different Chebyshev polynomials
|
|
math_special.cpp: // for y intervals [0,0.01], [0.01,0.02], ...., [0.99,1], generated
|
|
math_special.cpp: // with the help of Maple and a little shell script. This allows
|
|
math_special.cpp: // the Chebyshev polynomials to be of significantly lower degree (about 1/4)
|
|
math_special.cpp: // compared to fitting the whole [0,1] interval with a single polynomial.
|
|
math_special.cpp: /* we only get here if y = 1, i.e. |x| < 4*eps, in which case
|
|
math_special.cpp: * erfcx is within 1e-15 of 1.. */
|
|
math_special.cpp:} /* erfcx_y100 */
|
|
math_special.cpp:/* optimizer friendly implementation of exp2(x).
|
|
math_special.cpp: */
|
|
math_special.cpp:/* IEEE 754 double precision floating point data manipulation */
|
|
math_special.cpp:/* 1.00000000000000000000e0, */
|
|
math_special.cpp: x = 1.0 + 2.0*(px/(qx-px));
|
|
memory.cpp:/* ----------------------------------------------------------------------
|
|
memory.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
memory.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
memory.cpp:------------------------------------------------------------------------- */
|
|
memory.cpp:#include "tbb/scalable_allocator.h"
|
|
memory.cpp:/* ---------------------------------------------------------------------- */
|
|
memory.cpp:/* ----------------------------------------------------------------------
|
|
memory.cpp:------------------------------------------------------------------------- */
|
|
memory.cpp:/* ----------------------------------------------------------------------
|
|
memory.cpp:------------------------------------------------------------------------- */
|
|
memory.cpp:/* ----------------------------------------------------------------------
|
|
memory.cpp:------------------------------------------------------------------------- */
|
|
memory.cpp:/* ----------------------------------------------------------------------
|
|
memory.cpp: erroneous usage of templated create/grow functions
|
|
memory.cpp:------------------------------------------------------------------------- */
|
|
memory.cpp: sprintf(str,"Cannot create/grow a vector/array of pointers for %s",name);
|
|
min_cg.cpp:/* ----------------------------------------------------------------------
|
|
min_cg.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
min_cg.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
min_cg.cpp:------------------------------------------------------------------------- */
|
|
min_cg.cpp:// EPS_ENERGY = minimum normalization for energy tolerance
|
|
min_cg.cpp:/* ---------------------------------------------------------------------- */
|
|
min_cg.cpp:/* ----------------------------------------------------------------------
|
|
min_cg.cpp:------------------------------------------------------------------------- */
|
|
min_cg.cpp: // nlimit = max # of CG iterations before restarting
|
|
min_cg.cpp: // set to ndoftotal unless too big
|
|
min_cg.cpp: // initialize working vectors
|
|
min_cg.cpp: // line minimization along direction h from current atom->x
|
|
min_cg.cpp: // function evaluation criterion
|
|
min_cg.cpp: // energy tolerance criterion
|
|
min_cg.cpp: // force tolerance criterion
|
|
min_cg.cpp: // update new search direction h from new f = -Grad(x) and old g
|
|
min_cg.cpp: // this is Polak-Ribieri formulation
|
|
min_cg.cpp: // beta = dotall[0]/gg would be Fletcher-Reeves
|
|
min_cg.cpp: // reinitialize CG every ndof iterations by setting beta = 0.0
|
|
min_cg.cpp: beta = MAX(0.0,(dotall[0] - dotall[1])/gg);
|
|
min_cg.cpp: // reinitialize CG if new search direction h is not downhill
|
|
min_cg.cpp: // output for thermo, dump, restart files
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
min.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp: JR Shewchuk, http://www-2.cs.cmu.edu/~jrs/jrspapers.html#cg
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp:/* ---------------------------------------------------------------------- */
|
|
min.cpp:/* ---------------------------------------------------------------------- */
|
|
min.cpp:/* ---------------------------------------------------------------------- */
|
|
min.cpp: // create fix needed for storing atom-based quantities
|
|
min.cpp: // will delete it at end of run
|
|
min.cpp: // clear out extra global and per-atom dof
|
|
min.cpp: // will receive requests for new per-atom dof during pair init()
|
|
min.cpp: // can then add vectors to fix_minimize in setup()
|
|
min.cpp: // virial_style:
|
|
min.cpp: // 1 if computed explicitly by pair->compute via sum over pair interactions
|
|
min.cpp: // 2 if computed implicitly by pair->virial_compute via sum over ghost atoms
|
|
min.cpp: // setup lists of computes for global and per-atom PE and pressure
|
|
min.cpp: // detect if fix omp is present for clearing force arrays
|
|
min.cpp: // set flags for arrays to clear in force_clear()
|
|
min.cpp: // allow pair and Kspace compute() to be turned off via modify flags
|
|
min.cpp: // orthogonal vs triclinic simulation box
|
|
min.cpp: // reset reneighboring criteria if necessary
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp: // setup extra global dof due to fixes
|
|
min.cpp: // cannot be done in init() b/c update init() is before modify init()
|
|
min.cpp: // compute for potential energy
|
|
min.cpp: // style-specific setup does two tasks
|
|
min.cpp: // setup extra global dof vectors
|
|
min.cpp: // setup extra per-atom dof vectors due to requests from Pair classes
|
|
min.cpp: // cannot be done in init() b/c update init() is before modify/pair init()
|
|
min.cpp: // ndoftotal = total dof for entire minimization problem
|
|
min.cpp: // dof for atoms, extra per-atom, extra global
|
|
min.cpp: // setup domain, communication and neighboring
|
|
min.cpp: // acquire ghosts
|
|
min.cpp: // build neighbor lists
|
|
min.cpp: // remove these restriction eventually
|
|
min.cpp: "Cannot use a damped dynamics min style with fix box/relax");
|
|
min.cpp: error->all(FLERR, "Cannot use hftn min style with fix box/relax");
|
|
min.cpp: // atoms may have migrated in comm->exchange()
|
|
min.cpp: // compute all forces
|
|
min.cpp: // update per-atom minimization variables stored by pair styles
|
|
min.cpp: // stats for initial thermo output
|
|
min.cpp: if (output->thermo->normflag) ecurrent /= atom->natoms;
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp: // setup domain, communication and neighboring
|
|
min.cpp: // acquire ghosts
|
|
min.cpp: // build neighbor lists
|
|
min.cpp: // atoms may have migrated in comm->exchange()
|
|
min.cpp: // compute all forces
|
|
min.cpp: // update per-atom minimization variables stored by pair styles
|
|
min.cpp: // stats for Finish to print
|
|
min.cpp: if (output->thermo->normflag) ecurrent /= atom->natoms;
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp: // minimizer iterations
|
|
min.cpp: // if early exit from iterate loop:
|
|
min.cpp: // set update->nsteps to niter for Finish stats to print
|
|
min.cpp: // set output->next values to this timestep
|
|
min.cpp: // call energy_force() to insure vflag is set when forces computed
|
|
min.cpp: // output->write does final output for thermo, dump, restart files
|
|
min.cpp: // add ntimestep to all computes that store invocation times
|
|
min.cpp: // since are hardwiring call to thermo/dumps and computes may not be ready
|
|
min.cpp:/* ---------------------------------------------------------------------- */
|
|
min.cpp: // stats for Finish to print
|
|
min.cpp: // reset reneighboring criteria
|
|
min.cpp: // delete fix at end of run, so its atom arrays won't persist
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp: // check for reneighboring
|
|
min.cpp: // always communicate since minimizer moved atoms
|
|
min.cpp: // update per-atom minimization variables stored by pair styles
|
|
min.cpp: // fixes that affect minimization
|
|
min.cpp: // compute potential energy of system
|
|
min.cpp: // normalize if thermo PE does
|
|
min.cpp: if (output->thermo->normflag) energy /= atom->natoms;
|
|
min.cpp: // if reneighbored, atoms migrated
|
|
min.cpp: // if resetflag = 1, update x0 of atoms crossing PBC
|
|
min.cpp: // reset vectors used by lo-level minimizer
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp: // clear global force array
|
|
min.cpp: // if either newton flag is set, also include ghosts
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp:/* ---------------------------------------------------------------------- */
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp: eflag/vflag based on computes that need info on this ntimestep
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min.cpp:/* ----------------------------------------------------------------------
|
|
min.cpp:------------------------------------------------------------------------- */
|
|
min_fire.cpp:/* ----------------------------------------------------------------------
|
|
min_fire.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
min_fire.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
min_fire.cpp:------------------------------------------------------------------------- */
|
|
min_fire.cpp:// EPS_ENERGY = minimum normalization for energy tolerance
|
|
min_fire.cpp:/* ---------------------------------------------------------------------- */
|
|
min_fire.cpp:/* ---------------------------------------------------------------------- */
|
|
min_fire.cpp:/* ---------------------------------------------------------------------- */
|
|
min_fire.cpp:/* ----------------------------------------------------------------------
|
|
min_fire.cpp:------------------------------------------------------------------------- */
|
|
min_fire.cpp: // atomic dof
|
|
min_fire.cpp:/* ---------------------------------------------------------------------- */
|
|
min_fire.cpp: // vdotfall = v dot f
|
|
min_fire.cpp: // sum vdotf over replicas, if necessary
|
|
min_fire.cpp: // this communicator would be invalid for multiprocess replicas
|
|
min_fire.cpp: // if (v dot f) > 0:
|
|
min_fire.cpp: // v = (1-alpha) v + alpha |v| Fhat
|
|
min_fire.cpp: // |v| = length of v, Fhat = unit f
|
|
min_fire.cpp: // if more than DELAYSTEP since v dot f was negative:
|
|
min_fire.cpp: // increase timestep and decrease alpha
|
|
min_fire.cpp: // sum vdotv over replicas, if necessary
|
|
min_fire.cpp: // this communicator would be invalid for multiprocess replicas
|
|
min_fire.cpp: // sum fdotf over replicas, if necessary
|
|
min_fire.cpp: // this communicator would be invalid for multiprocess replicas
|
|
min_fire.cpp: else scale2 = alpha * sqrt(vdotvall/fdotfall);
|
|
min_fire.cpp: // else (v dot f) <= 0:
|
|
min_fire.cpp: // decrease timestep, reset alpha, set v = 0
|
|
min_fire.cpp: // limit timestep so no particle moves further than dmax
|
|
min_fire.cpp: if (dtvone*vmax > dmax) dtvone = dmax/vmax;
|
|
min_fire.cpp: // min dtv over replicas, if necessary
|
|
min_fire.cpp: // this communicator would be invalid for multiprocess replicas
|
|
min_fire.cpp: // Euler integration step
|
|
min_fire.cpp: dtfm = dtf / rmass[i];
|
|
min_fire.cpp: dtfm = dtf / mass[type[i]];
|
|
min_fire.cpp: // energy tolerance criterion
|
|
min_fire.cpp: // only check after DELAYSTEP elapsed since velocties reset to 0
|
|
min_fire.cpp: // sync across replicas if running multi-replica minimization
|
|
min_fire.cpp: // force tolerance criterion
|
|
min_fire.cpp: // sync across replicas if running multi-replica minimization
|
|
min_fire.cpp: // output for thermo, dump, restart files
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
min_hftn.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp://---- CONSTANTS MAP TO stopstrings DECLARED IN Min.run (min.cpp).
|
|
min_hftn.cpp:static const int STOP_MAX_ITER = Min::MAXITER; //-- MAX ITERATIONS EXCEEDED
|
|
min_hftn.cpp:static const int STOP_MAX_FORCE_EVALS = Min::MAXEVAL; //-- MAX FORCE EVALUATIONS EXCEEDED
|
|
min_hftn.cpp:static const int STOP_ENERGY_TOL = Min::ETOL; //-- STEP DID NOT CHANGE ENERGY
|
|
min_hftn.cpp:static const int STOP_FORCE_TOL = Min::FTOL; //-- CONVERGED TO DESIRED FORCE TOL
|
|
min_hftn.cpp:static const int STOP_TR_TOO_SMALL = Min::TRSMALL; //-- TRUST REGION TOO SMALL
|
|
min_hftn.cpp:static const int STOP_ERROR = Min::INTERROR; //-- INTERNAL ERROR
|
|
min_hftn.cpp://---- WHEN TESTING ENERGY_TOL, THE ENERGY MAGNITUDE MUST BE AT LEAST THIS BIG.
|
|
min_hftn.cpp://---- MACHINE PRECISION IS SOMETIMES DEFINED BY THE C RUNTIME.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- ALLOCATE MEMORY FOR ATOMIC DEGREES OF FREEDOM.
|
|
min_hftn.cpp: //---- ALLOCATE MEMORY FOR EXTRA GLOBAL DEGREES OF FREEDOM.
|
|
min_hftn.cpp: //---- THE FIX MODULE TAKES CARE OF THE FIRST VECTOR, X0 (XK).
|
|
min_hftn.cpp: //---- ALLOCATE MEMORY FOR EXTRA PER-ATOM DEGREES OF FREEDOM.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp: After an energy/force calculation, atoms may migrate from one processor
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- ATOMIC DEGREES OF FREEDOM.
|
|
min_hftn.cpp: //---- EXTRA PER-ATOM DEGREES OF FREEDOM.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- TURN THIS ON TO GENERATE AN OPTIMIZATION PROGRESS FILE.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- DEFINE OUTPUTS PRINTED BY "Finish".
|
|
min_hftn.cpp: //---- SAVE ATOM POSITIONS BEFORE AN ITERATION.
|
|
min_hftn.cpp: //---- FIND THE NUMBER OF UNKNOWNS.
|
|
min_hftn.cpp: //---- INITIALIZE THE TRUST RADIUS BASED ON THE GRADIENT.
|
|
min_hftn.cpp: //---- TRUST RADIUS MUST KEEP STEPS FROM LETTING ATOMS MOVE SO FAR THEY
|
|
min_hftn.cpp: //---- VIOLATE PHYSICS OR JUMP BEYOND A PARALLEL PROCESSING DOMAIN.
|
|
min_hftn.cpp: //---- LINE SEARCH METHODS DO THIS BY RESTRICTING THE LARGEST CHANGE
|
|
min_hftn.cpp: //---- OF ANY ATOM'S COMPONENT TO dmax. AN EXACT CHECK IS MADE LATER,
|
|
min_hftn.cpp: //---- BUT THIS GUIDES DETERMINATION OF A MAX TRUST RADIUS.
|
|
min_hftn.cpp: //---- CALL THE INNER LOOP TO GET THE NEXT TRUST REGION STEP.
|
|
min_hftn.cpp: double dCgForce2StopTol = MIN ((dCurrentForce2 / 2.0), 0.1 / (niter+1));
|
|
min_hftn.cpp: //---- THERE WAS AN ERROR. RESTORE TO LAST ACCEPTED STEP.
|
|
min_hftn.cpp: //---- STOP IF THE CURRENT POSITION WAS FOUND TO BE ALREADY GOOD ENOUGH.
|
|
min_hftn.cpp: //---- IN THIS CASE THE ENERGY AND FORCES ARE ALREADY COMPUTED.
|
|
min_hftn.cpp: //---- COMPUTE THE DIRECTIONAL DERIVATIVE H(x_k) p.
|
|
min_hftn.cpp: //---- COMPUTE p^T grad(x_k) AND SAVE IT FOR PRED.
|
|
min_hftn.cpp: //---- MOVE TO THE NEW POINT AND EVALUATE ENERGY AND FORCES.
|
|
min_hftn.cpp: //---- THIS IS THE PLACE WHERE energy_force IS ALLOWED TO RESET.
|
|
min_hftn.cpp: //---- STOP IF THE FORCE TOLERANCE IS MET.
|
|
min_hftn.cpp: //---- (IMPLICITLY ACCEPT THE LAST STEP TO THE NEW POINT.)
|
|
min_hftn.cpp: //---- STOP IF THE ACTUAL ENERGY REDUCTION IS TINY.
|
|
min_hftn.cpp: //---- (IMPLICITLY ACCEPT THE LAST STEP TO THE NEW POINT.)
|
|
min_hftn.cpp: //---- COMPUTE THE PREDICTED REDUCTION - p^T grad - 0.5 p^T Hp
|
|
min_hftn.cpp: //---- ACCEPT OR REJECT THE STEP PROPOSED BY THE INNER CG LOOP.
|
|
min_hftn.cpp: //---- WHEN NEAR A SOLUTION, THE FORCE NORM IS PROBABLY MORE ACCURATE,
|
|
min_hftn.cpp: //---- SO DON'T ACCEPT A STEP THAT REDUCES ENERGY SOME TINY AMOUNT
|
|
min_hftn.cpp: //---- WHILE INCREASING THE FORCE NORM.
|
|
min_hftn.cpp: //---- THE STEP IS ACCEPTED.
|
|
min_hftn.cpp: //---- UPDATE THE TRUST REGION BASED ON AGREEMENT BETWEEN
|
|
min_hftn.cpp: //---- THE ACTUAL REDUCTION AND THE PREDICTED MODEL REDUCTION.
|
|
min_hftn.cpp: //---- DMAX VIOLATIONS TRUNCATE THE CG STEP WITHOUT COMPARISONS;
|
|
min_hftn.cpp: //---- BETTER TO ADJUST THE TRUST REGION SO DMAX STOPS HAPPENING.
|
|
min_hftn.cpp: //---- THE STEP IS REJECTED.
|
|
min_hftn.cpp: //---- RESTORE THE LAST X_K POSITION.
|
|
min_hftn.cpp: //---- UPDATE THE TRUST REGION.
|
|
min_hftn.cpp: //---- EXPERIMENTS INDICATE NEGATIVE CURVATURE CAN TAKE A BAD
|
|
min_hftn.cpp: //---- STEP A LONG WAY, SO BE MORE AGGRESSIVE IN THIS CASE.
|
|
min_hftn.cpp: //---- ALSO, IF NEAR A SOLUTION AND DONE WITH NEWTON STEPS,
|
|
min_hftn.cpp: //---- THEN REDUCE TO SOMETHING NEAR THE LAST GOOD NEWTON STEP.
|
|
min_hftn.cpp: //---- STOP IF THE TRUST RADIUS IS TOO SMALL TO CONTINUE.
|
|
min_hftn.cpp: //---- OUTPUT FOR thermo, dump, restart FILES.
|
|
min_hftn.cpp: //---- IF THE LAST STEP WAS REJECTED, THEN REEVALUATE ENERGY AND
|
|
min_hftn.cpp: //---- FORCES AT THE OLD POINT SO THE OUTPUT DOES NOT DISPLAY
|
|
min_hftn.cpp: //---- THE INCREASED ENERGY OF THE REJECTED STEP.
|
|
min_hftn.cpp: //---- RETURN IF NUMBER OF EVALUATIONS EXCEEDED.
|
|
min_hftn.cpp: } //-- END for LOOP OVER niter
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp: @param[in] nMaxEvals - total energy/force evaluations allowed
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- SET p_0 = 0.
|
|
min_hftn.cpp: //---- OBTAIN THE ENERGY AND FORCES AT THE INPUT POSITION.
|
|
min_hftn.cpp: //---- RETURN IMMEDIATELY IF THE FORCE TOLERANCE IS ALREADY MET.
|
|
min_hftn.cpp: //---- THE STEP TYPE INFORMS THE CALLER THAT ENERGY AND FORCES HAVE
|
|
min_hftn.cpp: //---- BEEN EVALUATED.
|
|
min_hftn.cpp: //---- r_0 = -grad (FIRST SEARCH DIRECTION IS STEEPEST DESCENT)
|
|
min_hftn.cpp: //---- d_0 = r_0
|
|
min_hftn.cpp: //---- REMEMBER THAT FORCES = -GRADIENT.
|
|
min_hftn.cpp: //---- LIMIT THE NUMBER OF INNER CG ITERATIONS.
|
|
min_hftn.cpp: //---- BASE IT ON THE NUMBER OF UNKNOWNS, OR MAXIMUM EVALUATIONS ASSUMING
|
|
min_hftn.cpp: //---- FORWARD DIFFERENCES ARE USED.
|
|
min_hftn.cpp: //---- NOTE THAT SETTING MAX=1 GIVES STEEPEST DESCENT.
|
|
min_hftn.cpp: int nLimit1 = _nNumUnknowns / 5;
|
|
min_hftn.cpp: int nLimit2 = (nMaxEvals - neval) / 2;
|
|
min_hftn.cpp: //---- FURTHER LIMIT ITERATIONS IF NEAR MACHINE ROUNDOFF.
|
|
min_hftn.cpp: //---- THE METHOD CAN WASTE A LOT EVALUATIONS WITH LITTLE PAYOFF PROSPECT.
|
|
min_hftn.cpp: nMaxInnerIters = MIN (nMaxInnerIters, _nNumUnknowns / 20);
|
|
min_hftn.cpp: //---- MAIN CG LOOP.
|
|
min_hftn.cpp: //---- COMPUTE HESSIAN-VECTOR PRODUCT: H(x_k) d_i.
|
|
min_hftn.cpp: //---- CALCULATE d_i^T H d_i AND d_i^T d_i.
|
|
min_hftn.cpp: //---- HANDLE NEGATIVE CURVATURE.
|
|
min_hftn.cpp: //---- PROJECT BOTH DIRECTIONS TO THE TRUST RADIUS AND DECIDE
|
|
min_hftn.cpp: //---- WHICH MAKES A BETTER PREDICTED REDUCTION.
|
|
min_hftn.cpp: //---- p_i^T H(x_k) d_i AND grad_i^T d_i.
|
|
min_hftn.cpp: //---- MOVE TO X_K AND COMPUTE ENERGY AND FORCES.
|
|
min_hftn.cpp: //---- MOVE THE POINT.
|
|
min_hftn.cpp: //---- COMPUTE THE OPTIMAL STEP LENGTH BASED ON THE QUADRATIC CG MODEL.
|
|
min_hftn.cpp: double dAlpha = dRR / dDHD;
|
|
min_hftn.cpp: //---- MIGHT WANT TO ENABLE THIS TO DEBUG INTERNAL CG STEPS.
|
|
min_hftn.cpp: //fprintf (_fpPrint, " alpha = %11.8f neval=%4d\n", dAlpha, neval);
|
|
min_hftn.cpp: //---- p_i+1 = p_i + alpha_i d_i
|
|
min_hftn.cpp: //---- (SAVE THE CURRENT p_i IN CASE THE STEP HAS TO BE SHORTENED.)
|
|
min_hftn.cpp: //---- COMPUTE VECTOR PRODUCTS p_i+1^T p_i+1 AND p_i^T d_i.
|
|
min_hftn.cpp: //---- IF STEP LENGTH IS TOO LARGE, THEN REDUCE IT AND RETURN.
|
|
min_hftn.cpp: //---- r_i+1 = r_i - alpha * H d_i
|
|
min_hftn.cpp: //---- IF RESIDUAL IS SMALL ENOUGH, THEN RETURN THE CURRENT STEP.
|
|
min_hftn.cpp: //---- beta = r_i+1^T r_i+1 / r_i^T r_i
|
|
min_hftn.cpp: //---- d_i+1 = r_i+1 + beta d_i
|
|
min_hftn.cpp: double dBeta = dRnewDotRnew / dRR;
|
|
min_hftn.cpp: //---- CONTINUE THE LOOP.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- ASSUME THAT FORCES HAVE BEEN EVALUATED AT DESIRED ATOM POSITIONS.
|
|
min_hftn.cpp: //---- REMEMBER THAT FORCES = -GRADIENT.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- STEP LENGTH IS NOT TOO LONG.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: dAlpha = MIN (dAlpha, dmax / dPInf);
|
|
min_hftn.cpp: dAlpha = MIN (dAlpha, extra_max[m] / dPInf);
|
|
min_hftn.cpp: //---- IF THE MAXIMUM DISTANCE THAT THE GLOBAL BOX CONSTRAINT WILL
|
|
min_hftn.cpp: //---- ALLOW IS SMALLER THAN THE PROPOSED DISTANCE, THEN THE STEP
|
|
min_hftn.cpp: //---- IS TOO LONG. PROPOSED DISTANCE IS ESTIMATED BY |P|_INF.
|
|
min_hftn.cpp: //---- STEP LENGTH IS NOT TOO LONG.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- SOLVE A QUADRATIC EQUATION FOR TAU.
|
|
min_hftn.cpp: //---- THE COEFFICIENTS ARE SUCH THAT THERE ARE ALWAYS TWO REAL ROOTS,
|
|
min_hftn.cpp: //---- ONE POSITIVE AND ONE NEGATIVE.
|
|
min_hftn.cpp: //---- CHECK FOR ERRONEOUS DATA.
|
|
min_hftn.cpp: dDiscr = MAX (0.0, dDiscr); //-- SHOULD NEVER BE NEGATIVE
|
|
min_hftn.cpp: double dRootPos = (-dPD + dDiscr) / dDD;
|
|
min_hftn.cpp: double dRootNeg = (-dPD - dDiscr) / dDD;
|
|
min_hftn.cpp: //---- EVALUATE THE CG OBJECTIVE FUNCTION FOR EACH ROOT.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp: //---- COMPUTE THE MAGNITUDE OF THE DIRECTION VECTOR: |p|_2.
|
|
min_hftn.cpp: //---- IF THE STEP IS TOO SMALL, RETURN ZERO FOR THE DERIVATIVE.
|
|
min_hftn.cpp: //---- FORWARD DIFFERENCES ARE LESS ACCURATE THAN CENTRAL DIFFERENCES,
|
|
min_hftn.cpp: //---- BUT REQUIRE ONLY 2 ENERGY+FORCE EVALUATIONS VERSUS 3 EVALUATIONS.
|
|
min_hftn.cpp: //---- STORAGE REQUIREMENTS ARE THE SAME.
|
|
min_hftn.cpp: //---- EQUATION IS FROM THE OLD LAMMPS VERSION, SAND98-8201.
|
|
min_hftn.cpp: double dEps = 2.0 * sqrt (1000.0 * MACHINE_EPS) / dDirNorm2;
|
|
min_hftn.cpp: //---- SAVE A COPY OF x.
|
|
min_hftn.cpp: //---- EVALUATE FORCES AT x + eps*p.
|
|
min_hftn.cpp: //---- STORE THE FORCE IN DIF2.
|
|
min_hftn.cpp: //---- MOVE BACK TO x AND EVALUATE FORCES.
|
|
min_hftn.cpp: //---- COMPUTE THE DIFFERENCE VECTOR: [grad(x + eps*p) - grad(x)] / eps.
|
|
min_hftn.cpp: //---- REMEMBER THAT FORCES = -GRADIENT.
|
|
min_hftn.cpp: _daAVectors[nIxResult][i] = (fvec[i] - _daAVectors[VEC_DIF2][i]) / dEps;
|
|
min_hftn.cpp: iAtom[i] = (fextra_atom[m][i] - d2Atom[i]) / dEps;
|
|
min_hftn.cpp: = (fextra[i] - _daExtraGlobal[VEC_DIF2][i]) / dEps;
|
|
min_hftn.cpp: else { //-- bUseForwardDiffs == false
|
|
min_hftn.cpp: //---- EQUATION IS FROM THE OLD LAMMPS VERSION, SAND98-8201.
|
|
min_hftn.cpp: double dEps = pow (3000.0 * MACHINE_EPS, 0.33333333) / dDirNorm2;
|
|
min_hftn.cpp: //---- SAVE A COPY OF x.
|
|
min_hftn.cpp: //---- EVALUATE FORCES AT x + eps*p.
|
|
min_hftn.cpp: //---- STORE THE FORCE IN DIF2.
|
|
min_hftn.cpp: //---- EVALUATE FORCES AT x - eps*p.
|
|
min_hftn.cpp: //---- COMPUTE THE DIFFERENCE VECTOR:
|
|
min_hftn.cpp: //---- [grad(x + eps*p) - grad(x - eps*p)] / 2*eps.
|
|
min_hftn.cpp: //---- REMEMBER THAT FORCES = -GRADIENT.
|
|
min_hftn.cpp: iGlobal[i] = (fextra[i] - d2Global[i]) / (2.0 + dEps);
|
|
min_hftn.cpp: (fvec[i] - _daAVectors[VEC_DIF2][i]) / (2.0 * dEps);
|
|
min_hftn.cpp: iAtom[i] = (fatom[i] - d2Atom[i]) / (2.0 + dEps);
|
|
min_hftn.cpp: //---- EVALUATE FORCES AT x.
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
min_hftn.cpp:/* ----------------------------------------------------------------------
|
|
min_hftn.cpp:------------------------------------------------------------------------- */
|
|
minimize.cpp:/* ----------------------------------------------------------------------
|
|
minimize.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
minimize.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
minimize.cpp:------------------------------------------------------------------------- */
|
|
minimize.cpp:/* ---------------------------------------------------------------------- */
|
|
minimize.cpp:/* ---------------------------------------------------------------------- */
|
|
minimize.cpp: // ignore minimize command, if walltime limit was already reached
|
|
min_linesearch.cpp:/* ----------------------------------------------------------------------
|
|
min_linesearch.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
min_linesearch.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
min_linesearch.cpp:------------------------------------------------------------------------- */
|
|
min_linesearch.cpp:/* ----------------------------------------------------------------------
|
|
min_linesearch.cpp: JR Shewchuk, http://www-2.cs.cmu.edu/~jrs/jrspapers.html#cg
|
|
min_linesearch.cpp:------------------------------------------------------------------------- */
|
|
min_linesearch.cpp:// ALPHA_MAX = max alpha allowed to avoid long backtracks
|
|
min_linesearch.cpp:// ALPHA_REDUCE = reduction ratio, should be in range [0.5,1)
|
|
min_linesearch.cpp:// BACKTRACK_SLOPE, should be in range (0,0.5]
|
|
min_linesearch.cpp:// QUADRATIC_TOL = tolerance on alpha0, should be in range [0.1,1)
|
|
min_linesearch.cpp:// EMACH = machine accuracy limit of energy changes (1.0e-8)
|
|
min_linesearch.cpp:// EPS_QUAD = tolerance for quadratic projection
|
|
min_linesearch.cpp://#define EMACH 1.0e-8
|
|
min_linesearch.cpp:/* ---------------------------------------------------------------------- */
|
|
min_linesearch.cpp:/* ---------------------------------------------------------------------- */
|
|
min_linesearch.cpp:/* ---------------------------------------------------------------------- */
|
|
min_linesearch.cpp:/* ---------------------------------------------------------------------- */
|
|
min_linesearch.cpp: // memory for x0,g,h for atomic dof
|
|
min_linesearch.cpp: // memory for g,h for extra global dof, fix stores x0
|
|
min_linesearch.cpp: // memory for x0,g,h for extra per-atom dof
|
|
min_linesearch.cpp:/* ----------------------------------------------------------------------
|
|
min_linesearch.cpp:------------------------------------------------------------------------- */
|
|
min_linesearch.cpp: // atomic dof
|
|
min_linesearch.cpp: // extra per-atom dof
|
|
min_linesearch.cpp:/* ----------------------------------------------------------------------
|
|
min_linesearch.cpp: update neval counter of eng/force function evaluations
|
|
min_linesearch.cpp:------------------------------------------------------------------------- */
|
|
min_linesearch.cpp:/* ----------------------------------------------------------------------
|
|
min_linesearch.cpp:------------------------------------------------------------------------- */
|
|
min_linesearch.cpp: // fdothall = projection of search dir along downhill gradient
|
|
min_linesearch.cpp: // if search direction is not downhill, exit with error
|
|
min_linesearch.cpp: if (output->thermo->normflag) fdothall /= atom->natoms;
|
|
min_linesearch.cpp: // set alpha so no dof is changed by more than max allowed amount
|
|
min_linesearch.cpp: // for atom coords, max amount = dmax
|
|
min_linesearch.cpp: // for extra per-atom dof, max amount = extra_max[]
|
|
min_linesearch.cpp: // for extra global dof, max amount is set by fix
|
|
min_linesearch.cpp: // also insure alpha <= ALPHA_MAX
|
|
min_linesearch.cpp: // else will have to backtrack from huge value when forces are tiny
|
|
min_linesearch.cpp: // if all search dir components are already 0.0, exit with error
|
|
min_linesearch.cpp: alpha = MIN(ALPHA_MAX,dmax/hmaxall);
|
|
min_linesearch.cpp: alpha = MIN(alpha,extra_max[m]/hmax);
|
|
min_linesearch.cpp: // store box and values of all dof at start of linesearch
|
|
min_linesearch.cpp: // // important diagnostic: test the gradient against energy
|
|
min_linesearch.cpp: // double etmp;
|
|
min_linesearch.cpp: // double alphatmp = alpha*1.0e-4;
|
|
min_linesearch.cpp: // etmp = alpha_step(alphatmp,1);
|
|
min_linesearch.cpp: // printf("alpha = %g dele = %g dele_force = %g err = %g\n",
|
|
min_linesearch.cpp: // alphatmp,etmp-eoriginal,-alphatmp*fdothall,
|
|
min_linesearch.cpp: // etmp-eoriginal+alphatmp*fdothall);
|
|
min_linesearch.cpp: // alpha_step(0.0,1);
|
|
min_linesearch.cpp: // backtrack with alpha until energy decrease is sufficient
|
|
min_linesearch.cpp: // if energy change is better than ideal, exit with success
|
|
min_linesearch.cpp: // reduce alpha
|
|
min_linesearch.cpp: // backtracked too much
|
|
min_linesearch.cpp: // reset to starting point
|
|
min_linesearch.cpp: // if de is positive, exit with error
|
|
min_linesearch.cpp: // if de is negative, exit with ETOL
|
|
min_linesearch.cpp:/* ----------------------------------------------------------------------
|
|
min_linesearch.cpp: // linemin: quadratic line search (adapted from Dennis and Schnabel)
|
|
min_linesearch.cpp: // The objective function is approximated by a quadratic
|
|
min_linesearch.cpp: // function in alpha, for sufficiently small alpha.
|
|
min_linesearch.cpp: // This idea is the same as that used in the well-known secant
|
|
min_linesearch.cpp: // method. However, since the change in the objective function
|
|
min_linesearch.cpp: // (difference of two finite numbers) is not known as accurately
|
|
min_linesearch.cpp: // as the gradient (which is close to zero), all the expressions
|
|
min_linesearch.cpp: // are written in terms of gradients. In this way, we can converge
|
|
min_linesearch.cpp: // the LAMMPS forces much closer to zero.
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // We know E,Eprev,fh,fhprev. The Taylor series about alpha_prev
|
|
min_linesearch.cpp: // truncated at the quadratic term is:
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // E = Eprev - del_alpha*fhprev + (1/2)del_alpha^2*Hprev
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // and
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // fh = fhprev - del_alpha*Hprev
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // where del_alpha = alpha-alpha_prev
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // We solve these two equations for Hprev and E=Esolve, giving:
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // Esolve = Eprev - del_alpha*(f+fprev)/2
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // We define relerr to be:
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // relerr = |(Esolve-E)/Eprev|
|
|
min_linesearch.cpp: // = |1.0 - (0.5*del_alpha*(f+fprev)+E)/Eprev|
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // If this is accurate to within a reasonable tolerance, then
|
|
min_linesearch.cpp: // we go ahead and use a secant step to fh = 0:
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp: // alpha0 = alpha - (alpha-alphaprev)*fh/delfh;
|
|
min_linesearch.cpp: //
|
|
min_linesearch.cpp:------------------------------------------------------------------------- */
|
|
min_linesearch.cpp: // fdothall = projection of search dir along downhill gradient
|
|
min_linesearch.cpp: // if search direction is not downhill, exit with error
|
|
min_linesearch.cpp: if (output->thermo->normflag) fdothall /= atom->natoms;
|
|
min_linesearch.cpp: // set alphamax so no dof is changed by more than max allowed amount
|
|
min_linesearch.cpp: // for atom coords, max amount = dmax
|
|
min_linesearch.cpp: // for extra per-atom dof, max amount = extra_max[]
|
|
min_linesearch.cpp: // for extra global dof, max amount is set by fix
|
|
min_linesearch.cpp: // also insure alphamax <= ALPHA_MAX
|
|
min_linesearch.cpp: // else will have to backtrack from huge value when forces are tiny
|
|
min_linesearch.cpp: // if all search dir components are already 0.0, exit with error
|
|
min_linesearch.cpp: alphamax = MIN(ALPHA_MAX,dmax/hmaxall);
|
|
min_linesearch.cpp: alphamax = MIN(alphamax,extra_max[m]/hmax);
|
|
min_linesearch.cpp: // store box and values of all dof at start of linesearch
|
|
min_linesearch.cpp: // backtrack with alpha until energy decrease is sufficient
|
|
min_linesearch.cpp: // or until get to small energy change, then perform quadratic projection
|
|
min_linesearch.cpp: // // important diagnostic: test the gradient against energy
|
|
min_linesearch.cpp: // double etmp;
|
|
min_linesearch.cpp: // double alphatmp = alphamax*1.0e-4;
|
|
min_linesearch.cpp: // etmp = alpha_step(alphatmp,1);
|
|
min_linesearch.cpp: // printf("alpha = %g dele = %g dele_force = %g err = %g\n",
|
|
min_linesearch.cpp: // alphatmp,etmp-eoriginal,-alphatmp*fdothall,
|
|
min_linesearch.cpp: // etmp-eoriginal+alphatmp*fdothall);
|
|
min_linesearch.cpp: // alpha_step(0.0,1);
|
|
min_linesearch.cpp: // compute new fh, alpha, delfh
|
|
min_linesearch.cpp: ff /= atom->natoms;
|
|
min_linesearch.cpp: fh /= atom->natoms;
|
|
min_linesearch.cpp: // if fh or delfh is epsilon, reset to starting point, exit with error
|
|
min_linesearch.cpp: // Check if ready for quadratic projection, equivalent to secant method
|
|
min_linesearch.cpp: // alpha0 = projected alpha
|
|
min_linesearch.cpp: relerr = fabs(1.0-(0.5*(alpha-alphaprev)*(fh+fhprev)+ecurrent)/engprev);
|
|
min_linesearch.cpp: alpha0 = alpha - (alpha-alphaprev)*fh/delfh;
|
|
min_linesearch.cpp: // if backtracking energy change is better than ideal, exit with success
|
|
min_linesearch.cpp: // save previous state
|
|
min_linesearch.cpp: // reduce alpha
|
|
min_linesearch.cpp: // backtracked all the way to 0.0
|
|
min_linesearch.cpp: // reset to starting point, exit with error
|
|
min_linesearch.cpp:/* ----------------------------------------------------------------------
|
|
min_linesearch.cpp: // also account for nextra atom & global
|
|
min_linesearch.cpp: alpha_max <= dmax/hmaxall
|
|
min_linesearch.cpp: // try decreasing the energy to 1/10 of initial
|
|
min_linesearch.cpp: alpha_init = 0.1*fabs(eoriginal)/fhCurr;
|
|
min_linesearch.cpp: // initial alpha is smaller than alpha_max
|
|
min_linesearch.cpp: // we have done enough in the search space
|
|
min_linesearch.cpp: // ZERO_ENERGY = 1e-12, is max allowed energy increase
|
|
min_linesearch.cpp: // GRAD_TOL = 0.1
|
|
min_linesearch.cpp: if ( (not backtrack) && (fabs(fhCurr/fh0) <= GRAD_TOL) ):
|
|
min_linesearch.cpp: // forces sufficiently reduced without energy increase
|
|
min_linesearch.cpp: // projected force changed sign but didn't become small enough
|
|
min_linesearch.cpp: // forces along search direction changed sign
|
|
min_linesearch.cpp: // force didn't change sign but only energy increased,
|
|
min_linesearch.cpp: // we overshot a minimum which is very close to a
|
|
min_linesearch.cpp: // maximum (or there is an inflection point)
|
|
min_linesearch.cpp: // New alpha_del should be much smaller
|
|
min_linesearch.cpp: // ALPHA_FACT = 0.1
|
|
min_linesearch.cpp: // Check to see if new 'alpha_del' isn't too small
|
|
min_linesearch.cpp: // continue the loop with a new alpha_del
|
|
min_linesearch.cpp: ---------------------------------------------------------------------- */
|
|
min_linesearch.cpp: // projection of: force on itself, current force on search direction,
|
|
min_linesearch.cpp: // previous force on search direction, initial force on search direction
|
|
min_linesearch.cpp: // current energy, previous energy
|
|
min_linesearch.cpp: // hardcoded constants
|
|
min_linesearch.cpp: // factor by which alpha is reduced when backtracking
|
|
min_linesearch.cpp: // maximum amount by which we'll permit energy increase
|
|
min_linesearch.cpp: // fraction to which we want to reduce the directional derivative
|
|
min_linesearch.cpp: // largest alpha increment which will trigger a failed_linesearch
|
|
min_linesearch.cpp: // fdothall = projection of search dir along downhill gradient
|
|
min_linesearch.cpp: // if search direction is not downhill, exit with error
|
|
min_linesearch.cpp: if (output->thermo->normflag) fdothall /= atom->natoms;
|
|
min_linesearch.cpp: // set alpha so no dof is changed by more than max allowed amount
|
|
min_linesearch.cpp: // for atom coords, max amount = dmax
|
|
min_linesearch.cpp: // for extra per-atom dof, max amount = extra_max[]
|
|
min_linesearch.cpp: // for extra global dof, max amount is set by fix
|
|
min_linesearch.cpp: // also insure alpha <= ALPHA_MAX else will have
|
|
min_linesearch.cpp: // to backtrack from huge value when forces are tiny
|
|
min_linesearch.cpp: // if all search dir components are already 0.0, exit with error
|
|
min_linesearch.cpp: alpha_max = dmax/hmaxall;
|
|
min_linesearch.cpp: alpha_max = MIN(alpha_max,extra_max[m]/hmax);
|
|
min_linesearch.cpp: // store box and values of all dof at start of linesearch
|
|
min_linesearch.cpp: // initialize important variables before main linesearch loop
|
|
min_linesearch.cpp: // stores energy difference due to the current move
|
|
min_linesearch.cpp: // choosing the initial alpha that we'll use
|
|
min_linesearch.cpp: // rough estimate that'll decrease energy to 1/10
|
|
min_linesearch.cpp: alpha_init = 0.1*fabs(eoriginal)/fdothall;
|
|
min_linesearch.cpp: // initialize aplha to 0.0
|
|
min_linesearch.cpp: // compute increment to alpha, ensure that we
|
|
min_linesearch.cpp: // don't take the largest allowed alpha
|
|
min_linesearch.cpp: // first alpha that will actually apply
|
|
min_linesearch.cpp: // main linesearch loop
|
|
min_linesearch.cpp: // apply the increment to alpha, but first
|
|
min_linesearch.cpp: // check whether we are still in allowed search space
|
|
min_linesearch.cpp: // undo the increment
|
|
min_linesearch.cpp: // exit linesearch with success: have done
|
|
min_linesearch.cpp: // enough in allowed search space
|
|
min_linesearch.cpp: // move the system
|
|
min_linesearch.cpp: // '1' updates coordinates of atoms which cross PBC
|
|
min_linesearch.cpp: // compute the new directional derivative and also f_dot_f
|
|
min_linesearch.cpp: // energy change
|
|
min_linesearch.cpp: // if the function value increases measurably,
|
|
min_linesearch.cpp: // then we have to reduce alpha
|
|
min_linesearch.cpp: // check if the directional derivative has sufficiently decreased
|
|
min_linesearch.cpp: // NOTE: the fabs is essential here
|
|
min_linesearch.cpp: if ((!backtrack) && (fabs(fhCurr/fhoriginal) <= GRAD_TOL)) {
|
|
min_linesearch.cpp: // we are done
|
|
min_linesearch.cpp: // check if the directional derivative changed sign
|
|
min_linesearch.cpp: // but it's not small: we overshot the minima -- BACKTRACK
|
|
min_linesearch.cpp: // backtrack by undoing step and choosing a new alpha
|
|
min_linesearch.cpp: // move back
|
|
min_linesearch.cpp: // choose new alpha
|
|
min_linesearch.cpp: // if the force changed sign, linearize force and
|
|
min_linesearch.cpp: // solve for new alpha_del
|
|
min_linesearch.cpp: alpha_del *= fhPrev/(fhPrev - fhCurr);
|
|
min_linesearch.cpp: // force didn't change sign but only energy increased,
|
|
min_linesearch.cpp: // we overshot a minimum which is very close to a maxima
|
|
min_linesearch.cpp: // (or there is an inflection point)
|
|
min_linesearch.cpp: // new alpha_del should be much smaller
|
|
min_linesearch.cpp: // since we moved back ...
|
|
min_linesearch.cpp: // if new move is too small then we have failed;
|
|
min_linesearch.cpp: // exit with 'failed_linesearch'
|
|
min_linesearch.cpp: // undo all line minization moves
|
|
min_linesearch.cpp: // get a new alpha by linearizing force and start over
|
|
min_linesearch.cpp: // avoids problems near an energy inflection point
|
|
min_linesearch.cpp: boostFactor = fhCurr/(fhPrev - fhCurr);
|
|
min_linesearch.cpp: // don't want to boost too much
|
|
min_linesearch.cpp:/* ---------------------------------------------------------------------- */
|
|
min_linesearch.cpp: // reset to starting point
|
|
min_linesearch.cpp: // step forward along h
|
|
min_linesearch.cpp: // compute and return new energy
|
|
min_linesearch.cpp:/* ---------------------------------------------------------------------- */
|
|
min_linesearch.cpp:// compute projection of force on: itself and the search direction
|
|
min_linesearch.cpp: // compute new fh, alpha, delfh
|
|
min_linesearch.cpp: ff /= atom->natoms;
|
|
min_linesearch.cpp: fh /= atom->natoms;
|
|
min_quickmin.cpp:/* ----------------------------------------------------------------------
|
|
min_quickmin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
min_quickmin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
min_quickmin.cpp:------------------------------------------------------------------------- */
|
|
min_quickmin.cpp:// EPS_ENERGY = minimum normalization for energy tolerance
|
|
min_quickmin.cpp:/* ---------------------------------------------------------------------- */
|
|
min_quickmin.cpp:/* ---------------------------------------------------------------------- */
|
|
min_quickmin.cpp:/* ---------------------------------------------------------------------- */
|
|
min_quickmin.cpp:/* ----------------------------------------------------------------------
|
|
min_quickmin.cpp:------------------------------------------------------------------------- */
|
|
min_quickmin.cpp: // atomic dof
|
|
min_quickmin.cpp:/* ----------------------------------------------------------------------
|
|
min_quickmin.cpp:------------------------------------------------------------------------- */
|
|
min_quickmin.cpp: // zero velocity if anti-parallel to force
|
|
min_quickmin.cpp: // else project velocity in direction of force
|
|
min_quickmin.cpp: // sum vdotf over replicas, if necessary
|
|
min_quickmin.cpp: // this communicator would be invalid for multiprocess replicas
|
|
min_quickmin.cpp: // sum fdotf over replicas, if necessary
|
|
min_quickmin.cpp: // this communicator would be invalid for multiprocess replicas
|
|
min_quickmin.cpp: else scale = vdotfall/fdotfall;
|
|
min_quickmin.cpp: // limit timestep so no particle moves further than dmax
|
|
min_quickmin.cpp: if (dtvone*vmax > dmax) dtvone = dmax/vmax;
|
|
min_quickmin.cpp: // min dtv over replicas, if necessary
|
|
min_quickmin.cpp: // this communicator would be invalid for multiprocess replicas
|
|
min_quickmin.cpp: // Euler integration step
|
|
min_quickmin.cpp: dtfm = dtf / rmass[i];
|
|
min_quickmin.cpp: dtfm = dtf / mass[type[i]];
|
|
min_quickmin.cpp: // energy tolerance criterion
|
|
min_quickmin.cpp: // only check after DELAYSTEP elapsed since velocties reset to 0
|
|
min_quickmin.cpp: // sync across replicas if running multi-replica minimization
|
|
min_quickmin.cpp: // force tolerance criterion
|
|
min_quickmin.cpp: // sync across replicas if running multi-replica minimization
|
|
min_quickmin.cpp: // output for thermo, dump, restart files
|
|
min_sd.cpp:/* ----------------------------------------------------------------------
|
|
min_sd.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
min_sd.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
min_sd.cpp:------------------------------------------------------------------------- */
|
|
min_sd.cpp:// EPS_ENERGY = minimum normalization for energy tolerance
|
|
min_sd.cpp:/* ---------------------------------------------------------------------- */
|
|
min_sd.cpp:/* ----------------------------------------------------------------------
|
|
min_sd.cpp:------------------------------------------------------------------------- */
|
|
min_sd.cpp: // initialize working vectors
|
|
min_sd.cpp: // line minimization along h from current position x
|
|
min_sd.cpp: // h = downhill gradient direction
|
|
min_sd.cpp: // function evaluation criterion
|
|
min_sd.cpp: // energy tolerance criterion
|
|
min_sd.cpp: // force tolerance criterion
|
|
min_sd.cpp: // set new search direction h to f = -Grad(x)
|
|
min_sd.cpp: // output for thermo, dump, restart files
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
modify.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:#define NEXCEPT 7 // change when add to exceptions in add_fix()
|
|
modify.cpp:/* ---------------------------------------------------------------------- */
|
|
modify.cpp: // fill map with fixes listed in style_fix.h
|
|
modify.cpp: // fill map with computes listed in style_compute.h
|
|
modify.cpp:/* ---------------------------------------------------------------------- */
|
|
modify.cpp: // delete all fixes
|
|
modify.cpp: // do it via delete_fix() so callbacks in Atom are also updated correctly
|
|
modify.cpp: // delete all computes
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // delete storage of restart info since it is not valid after 1st run
|
|
modify.cpp: // create lists of fixes to call at each stage of run
|
|
modify.cpp: // init each fix
|
|
modify.cpp: // not sure if now needs to come before compute init
|
|
modify.cpp: // used to b/c temperature computes called fix->dof() in their init,
|
|
modify.cpp: // and fix rigid required its own init before its dof() could be called,
|
|
modify.cpp: // but computes now do their DOF in setup()
|
|
modify.cpp: // set global flag if any fix has its restart_pbc flag set
|
|
modify.cpp: // create list of computes that store invocation times
|
|
modify.cpp: // init each compute
|
|
modify.cpp: // set invoked_scalar,vector,etc to -1 to force new run to re-compute them
|
|
modify.cpp: // add initial timestep to all computes that store invocation times
|
|
modify.cpp: // since any of them may be invoked by initial thermo
|
|
modify.cpp: // do not clear out invocation times stored within a compute,
|
|
modify.cpp: // b/c some may be holdovers from previous run, like for ave fixes
|
|
modify.cpp: // error if any fix or compute is using a dynamic group when not allowed
|
|
modify.cpp: // warn if any particle is time integrated more than once
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // compute setup needs to come before fix setup
|
|
modify.cpp: // b/c NH fixes need DOF of temperature computes
|
|
modify.cpp: // fix group setup() is special case since populates a dynamic group
|
|
modify.cpp: // needs to be done before temperature compute setup
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp: called by compute pe/atom
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp: minimizer energy/force evaluation, only for relevant fixes
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // cannot define fix before box exists unless style is in exception list
|
|
modify.cpp: // don't like this way of checking for exceptions by adding fixes to list,
|
|
modify.cpp: // but can't think of better way
|
|
modify.cpp: // too late if instantiate fix, then check flag set in fix constructor,
|
|
modify.cpp: // since some fixes access domain settings in their constructor
|
|
modify.cpp: // MUST change NEXCEPT above when add new fix to this list
|
|
modify.cpp: {"GPU","OMP","INTEL","property/atom","cmap","cmap3","rx"};
|
|
modify.cpp: // check group ID
|
|
modify.cpp: // if fix ID exists:
|
|
modify.cpp: // set newflag = 0 so create new fix in same location in fix list
|
|
modify.cpp: // error if new style does not match old style
|
|
modify.cpp: // since can't replace it (all when-to-invoke ptrs would be invalid)
|
|
modify.cpp: // warn if new group != old group
|
|
modify.cpp: // delete old fix, but do not call update_callback(),
|
|
modify.cpp: // since will replace this fix and thus other fix locs will not change
|
|
modify.cpp: // set ptr to NULL in case new fix scans list of fixes,
|
|
modify.cpp: // e.g. scan will occur in add_callback() if called by new fix
|
|
modify.cpp: // if fix ID does not exist:
|
|
modify.cpp: // set newflag = 1 so create new fix
|
|
modify.cpp: // extend fix and fmask lists as necessary
|
|
modify.cpp: sprintf(estyle,"%s/%s",arg[2],lmp->suffix);
|
|
modify.cpp: sprintf(estyle,"%s/%s",arg[2],lmp->suffix2);
|
|
modify.cpp: // create the Fix
|
|
modify.cpp: // try first with suffix appended
|
|
modify.cpp: sprintf(estyle,"%s/%s",arg[2],lmp->suffix);
|
|
modify.cpp: sprintf(estyle,"%s/%s",arg[2],lmp->suffix2);
|
|
modify.cpp: // check if Fix is in restart_global list
|
|
modify.cpp: // if yes, pass state info to the Fix so it can reset itself
|
|
modify.cpp: // check if Fix is in restart_peratom list
|
|
modify.cpp: // if yes, loop over atoms so they can extract info from atom->extra array
|
|
modify.cpp: // increment nfix (if new)
|
|
modify.cpp: // set fix mask values
|
|
modify.cpp: // post_constructor() allows new fix to create other fixes
|
|
modify.cpp: // nfix increment comes first so that recursive call to add_fix within
|
|
modify.cpp: // post_constructor() will see updated nfix
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // lookup Fix ID
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // move other Fixes and fmask down in list one slot
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // error check
|
|
modify.cpp: // extend Compute list if necessary
|
|
modify.cpp: // create the Compute
|
|
modify.cpp: // try first with suffix appended
|
|
modify.cpp: sprintf(estyle,"%s/%s",arg[2],lmp->suffix);
|
|
modify.cpp: sprintf(estyle,"%s/%s",arg[2],lmp->suffix2);
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // lookup Compute ID
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // move other Computes down in list one slot
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp: // nfix_restart_global = # of restart entries with global state info
|
|
modify.cpp: // allocate space for each entry
|
|
modify.cpp: // read each entry and Bcast to all procs
|
|
modify.cpp: // each entry has id string, style string, chunk of state data
|
|
modify.cpp: // nfix_restart_peratom = # of restart entries with peratom info
|
|
modify.cpp: // allocate space for each entry
|
|
modify.cpp: // read each entry and Bcast to all procs
|
|
modify.cpp: // each entry has id string, style string, maxsize of one atom's data
|
|
modify.cpp: // set index = which set of extra data this fix represents
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
modify.cpp:/* ----------------------------------------------------------------------
|
|
modify.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
molecule.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:#define SINERTIA 0.4 // moment of inertia prefactor for sphere
|
|
molecule.cpp:/* ---------------------------------------------------------------------- */
|
|
molecule.cpp: // parse args until reach unknown arg (next file)
|
|
molecule.cpp: // last molecule if have scanned all args
|
|
molecule.cpp: // initialize all fields to empty
|
|
molecule.cpp: // scan file for sizes of all fields and allocate them
|
|
molecule.cpp: // read file again to populate all fields
|
|
molecule.cpp: // stats
|
|
molecule.cpp:/* ---------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: center[0] /= natoms;
|
|
molecule.cpp: center[1] /= natoms;
|
|
molecule.cpp: center[2] /= natoms;
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: com[0] /= masstotal;
|
|
molecule.cpp: com[1] /= masstotal;
|
|
molecule.cpp: com[2] /= masstotal;
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // diagonalize inertia tensor for each body via Jacobi rotations
|
|
molecule.cpp: // inertia = 3 eigenvalues = principal moments of inertia
|
|
molecule.cpp: // evectors and exzy = 3 evectors = principal axes of rigid body
|
|
molecule.cpp: // if any principal moment < scaled EPSILON, set to 0.0
|
|
molecule.cpp: // enforce 3 evectors as a right-handed coordinate system
|
|
molecule.cpp: // flip 3rd vector if needed
|
|
molecule.cpp: // create quaternion
|
|
molecule.cpp: // compute displacements in body frame defined by quat
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // skip 1st line of file
|
|
molecule.cpp: // read header lines
|
|
molecule.cpp: // skip blank lines or lines that start with "#"
|
|
molecule.cpp: // stop when read an unrecognized line
|
|
molecule.cpp: // trim anything from '#' onward
|
|
molecule.cpp: // if line is blank, continue
|
|
molecule.cpp: // search line for header keywords and set corresponding variable
|
|
molecule.cpp: // error checks
|
|
molecule.cpp: // count = vector for tallying bonds,angles,etc per atom
|
|
molecule.cpp: // grab keyword and skip next line
|
|
molecule.cpp: // loop over sections of molecule file
|
|
molecule.cpp: // clean up
|
|
molecule.cpp: // error check
|
|
molecule.cpp: // auto-generate special bonds if needed and not in file
|
|
molecule.cpp: // set maxspecial on first pass, so allocate() has a size
|
|
molecule.cpp: // body particle must have natom = 1
|
|
molecule.cpp: // set radius by having body class compute its own radius
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp: if flag = 0, just count bonds/atom
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // bond_per_atom = max of count vector
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp: if flag = 0, just count angles/atom
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // angle_per_atom = max of count vector
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp: if flag = 0, just count dihedrals/atom
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // dihedral_per_atom = max of count vector
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp: if flag = 0, just count impropers/atom
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // improper_per_atom = max of count vector
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // 1-2 neighbors
|
|
molecule.cpp: // 1-3 neighbors with no duplicates
|
|
molecule.cpp: // 1-4 neighbors with no duplicates
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp: pflag = 0/1 for integer/double params
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // check per-atom attributes of molecule
|
|
molecule.cpp: // warn if not a match
|
|
molecule.cpp: // for all atom styles, check nbondtype,etc
|
|
molecule.cpp: // for molecular atom styles, check bond_per_atom,etc + maxspecial
|
|
molecule.cpp: // do not check for atom style template, since nothing stored per atom
|
|
molecule.cpp: error->all(FLERR,"Molecule topology/atom exceeds system topology/atom");
|
|
molecule.cpp: // warn if molecule topology defined but no special settings
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // always allocate num_bond,num_angle,etc and special+nspecial
|
|
molecule.cpp: // even if not in molecule file, initialize to 0
|
|
molecule.cpp: // this is so methods that use these arrays don't have to check they exist
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp: // read upto non-blank line plus 1 following line
|
|
molecule.cpp: // eof is set to 1 if any read hits end-of-file
|
|
molecule.cpp: // if eof, set keyword empty and return
|
|
molecule.cpp: // bcast keyword line to all procs
|
|
molecule.cpp: // copy non-whitespace portion of line into keyword
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/* ----------------------------------------------------------------------
|
|
molecule.cpp:------------------------------------------------------------------------- */
|
|
molecule.cpp:/*
|
|
molecule.cpp:*/
|
|
nbin.cpp:/* ----------------------------------------------------------------------
|
|
nbin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nbin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nbin.cpp:------------------------------------------------------------------------- */
|
|
nbin.cpp:/* ---------------------------------------------------------------------- */
|
|
nbin.cpp: // geometry settings
|
|
nbin.cpp:/* ---------------------------------------------------------------------- */
|
|
nbin.cpp:/* ---------------------------------------------------------------------- */
|
|
nbin.cpp:/* ----------------------------------------------------------------------
|
|
nbin.cpp:------------------------------------------------------------------------- */
|
|
nbin.cpp: // overwrite Neighbor cutoff with custom value set by requestor
|
|
nbin.cpp: // only works for style = BIN (checked by Neighbor class)
|
|
nbin.cpp:/* ----------------------------------------------------------------------
|
|
nbin.cpp:------------------------------------------------------------------------- */
|
|
nbin.cpp: // binhead = per-bin vector, mbins in length
|
|
nbin.cpp: // add 1 bin for USER-INTEL package
|
|
nbin.cpp: // bins = per-atom vector
|
|
nbin.cpp:/* ----------------------------------------------------------------------
|
|
nbin.cpp: take special care to insure ghosts are in correct bins even w/ roundoff
|
|
nbin.cpp:------------------------------------------------------------------------- */
|
|
nbin.cpp:/* ---------------------------------------------------------------------- */
|
|
nbin_standard.cpp:/* ----------------------------------------------------------------------
|
|
nbin_standard.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nbin_standard.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nbin_standard.cpp:------------------------------------------------------------------------- */
|
|
nbin_standard.cpp:enum{NSQ,BIN,MULTI}; // also in Neighbor
|
|
nbin_standard.cpp:/* ---------------------------------------------------------------------- */
|
|
nbin_standard.cpp:/* ----------------------------------------------------------------------
|
|
nbin_standard.cpp: binsize = 1/2 of cutoff is roughly optimal
|
|
nbin_standard.cpp:------------------------------------------------------------------------- */
|
|
nbin_standard.cpp: // bbox = size of bbox of entire domain
|
|
nbin_standard.cpp: // bsubbox lo/hi = bounding box of my subdomain extended by comm->cutghost
|
|
nbin_standard.cpp: // for triclinic:
|
|
nbin_standard.cpp: // bbox bounds all 8 corners of tilted box
|
|
nbin_standard.cpp: // subdomain is in lamda coords
|
|
nbin_standard.cpp: // include dimension-dependent extension via comm->cutghost
|
|
nbin_standard.cpp: // domain->bbox() converts lamda extent to box coords and computes bbox
|
|
nbin_standard.cpp: // optimal bin size is roughly 1/2 the cutoff
|
|
nbin_standard.cpp: // for BIN style, binsize = 1/2 of max neighbor cutoff
|
|
nbin_standard.cpp: // for MULTI style, binsize = 1/2 of min neighbor cutoff
|
|
nbin_standard.cpp: // special case of all cutoffs = 0.0, binsize = box size
|
|
nbin_standard.cpp: double binsizeinv = 1.0/binsize_optimal;
|
|
nbin_standard.cpp: // test for too many global bins in any dimension due to huge global domain
|
|
nbin_standard.cpp: // create actual bins
|
|
nbin_standard.cpp: // always have one bin even if cutoff > bbox
|
|
nbin_standard.cpp: // for 2d, nbinz = 1
|
|
nbin_standard.cpp: // compute actual bin size for nbins to fit into box exactly
|
|
nbin_standard.cpp: // error if actual bin size << cutoff, since will create a zillion bins
|
|
nbin_standard.cpp: // this happens when nbin = 1 and box size << cutoff
|
|
nbin_standard.cpp: // typically due to non-periodic, flat system in a particular dim
|
|
nbin_standard.cpp: // in that extreme case, should use NSQ not BIN neighbor style
|
|
nbin_standard.cpp: binsizex = bbox[0]/nbinx;
|
|
nbin_standard.cpp: binsizey = bbox[1]/nbiny;
|
|
nbin_standard.cpp: binsizez = bbox[2]/nbinz;
|
|
nbin_standard.cpp: bininvx = 1.0 / binsizex;
|
|
nbin_standard.cpp: bininvy = 1.0 / binsizey;
|
|
nbin_standard.cpp: bininvz = 1.0 / binsizez;
|
|
nbin_standard.cpp: // mbinlo/hi = lowest and highest global bins my ghost atoms could be in
|
|
nbin_standard.cpp: // coord = lowest and highest values of coords for my ghost atoms
|
|
nbin_standard.cpp: // static_cast(-1.5) = -1, so subract additional -1
|
|
nbin_standard.cpp: // add in SMALL for round-off safety
|
|
nbin_standard.cpp: // extend bins by 1 to insure stencil extent is included
|
|
nbin_standard.cpp: // for 2d, only 1 bin in z
|
|
nbin_standard.cpp:/* ----------------------------------------------------------------------
|
|
nbin_standard.cpp:------------------------------------------------------------------------- */
|
|
nbin_standard.cpp: // bin in reverse order so linked list will be in forward order
|
|
nbin_standard.cpp: // also puts ghost atoms at end of list, which is necessary
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
neighbor.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:enum{NSQ,BIN,MULTI}; // also in NBin, NeighList, NStencil
|
|
neighbor.cpp://#define NEIGH_LIST_DEBUG 1
|
|
neighbor.cpp:/* ---------------------------------------------------------------------- */
|
|
neighbor.cpp: // pairwise neighbor lists and associated data structs
|
|
neighbor.cpp: // topology lists
|
|
neighbor.cpp: // coords at last neighboring
|
|
neighbor.cpp: // pair exclusion list info
|
|
neighbor.cpp: // Kokkos setting
|
|
neighbor.cpp:/* ---------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ---------------------------------------------------------------------- */
|
|
neighbor.cpp: // error check
|
|
neighbor.cpp: // ------------------------------------------------------------------
|
|
neighbor.cpp: // settings
|
|
neighbor.cpp: // bbox lo/hi ptrs = bounding box of entire domain, stored by Domain
|
|
neighbor.cpp: // set neighbor cutoffs (force cutoff + skin)
|
|
neighbor.cpp: // trigger determines when atoms migrate and neighbor lists are rebuilt
|
|
neighbor.cpp: // needs to be non-zero for migration distance check
|
|
neighbor.cpp: // even if pair = NULL and no neighbor lists are used
|
|
neighbor.cpp: // cutneigh = force cutoff + skin if cutforce > 0, else cutneigh = 0
|
|
neighbor.cpp: // cutneighghost = pair cutghost if it requests it, else same as cutneigh
|
|
neighbor.cpp: // rRESPA cutoffs
|
|
neighbor.cpp: // fixchecklist = other classes that can induce reneighboring in decide()
|
|
neighbor.cpp: // set special_flag for 1-2, 1-3, 1-4 neighbors
|
|
neighbor.cpp: // flag[0] is not used, flag[1] = 1-2, flag[2] = 1-3, flag[3] = 1-4
|
|
neighbor.cpp: // flag = 0 if both LJ/Coulomb special values are 0.0
|
|
neighbor.cpp: // flag = 1 if both LJ/Coulomb special values are 1.0
|
|
neighbor.cpp: // flag = 2 otherwise or if KSpace solver is enabled
|
|
neighbor.cpp: // pairwise portion of KSpace solver uses all 1-2,1-3,1-4 neighbors
|
|
neighbor.cpp: // or selected Coulomb-approixmation pair styles require it
|
|
neighbor.cpp: if (force->kspace || force->pair_match("coul/wolf",0) ||
|
|
neighbor.cpp: force->pair_match("coul/dsf",0) || force->pair_match("thole",0))
|
|
neighbor.cpp: // maxwt = max multiplicative factor on atom indices stored in neigh list
|
|
neighbor.cpp: // ------------------------------------------------------------------
|
|
neighbor.cpp: // xhold array
|
|
neighbor.cpp: // free if not needed for this run
|
|
neighbor.cpp: // first time allocation
|
|
neighbor.cpp: // ------------------------------------------------------------------
|
|
neighbor.cpp: // exclusion lists
|
|
neighbor.cpp: // depend on type, group, molecule settings from neigh_modify
|
|
neighbor.cpp: // warn if exclusions used with KSpace solver
|
|
neighbor.cpp: // ------------------------------------------------------------------
|
|
neighbor.cpp: // create pairwise lists
|
|
neighbor.cpp: // one-time call to init_styles() to scan style files and setup
|
|
neighbor.cpp: // init_pair() creates auxiliary classes: NBin, NStencil, NPair
|
|
neighbor.cpp: // invoke copy_neighbor_info() in Bin,Stencil,Pair classes
|
|
neighbor.cpp: // copied once per run in case any cutoff, exclusion, special info changed
|
|
neighbor.cpp: // can now delete requests so next run can make new ones
|
|
neighbor.cpp: // print_pairwise_info() made use of requests
|
|
neighbor.cpp: // set of NeighLists now stores all needed info
|
|
neighbor.cpp: // ------------------------------------------------------------------
|
|
neighbor.cpp: // create topology lists
|
|
neighbor.cpp: // instantiated topo styles can change from run to run
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp: cannot do this in constructor, b/c too early to instantiate classes
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // extract info from NBin classes listed in style_nbin.h
|
|
neighbor.cpp: // extract info from NStencil classes listed in style_nstencil.h
|
|
neighbor.cpp: // extract info from NPair classes listed in style_npair.h
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // test if pairwise lists need to be re-created
|
|
neighbor.cpp: // no need to re-create if:
|
|
neighbor.cpp: // neigh style, triclinic, pgsize, oneatom have not changed
|
|
neighbor.cpp: // current requests = old requests
|
|
neighbor.cpp: // so just return:
|
|
neighbor.cpp: // delete requests so next run can make new ones
|
|
neighbor.cpp: // current set of NeighLists already stores all needed info
|
|
neighbor.cpp: // requests are compared via identical() before:
|
|
neighbor.cpp: // any requests are morphed using logic below
|
|
neighbor.cpp: // any requests are added below, e.g. as parents of pair hybrid skip lists
|
|
neighbor.cpp: // copy them via requests_new2old() BEFORE any changes made to requests
|
|
neighbor.cpp: // necessary b/c morphs can change requestor settings (see comment below)
|
|
neighbor.cpp: // delete old lists since creating new ones
|
|
neighbor.cpp: // morph requests in various ways
|
|
neighbor.cpp: // purpose is to avoid duplicate or inefficient builds
|
|
neighbor.cpp: // may add new requests if a needed request to derive from does not exist
|
|
neighbor.cpp: // methods:
|
|
neighbor.cpp: // (1) other = point history and rRESPA lists at their partner lists
|
|
neighbor.cpp: // (2) skip = create any new non-skip lists needed by pair hybrid skip lists
|
|
neighbor.cpp: // (3) granular = adjust parent and skip lists for granular onesided usage
|
|
neighbor.cpp: // (4) h/f = pair up any matching half/full lists
|
|
neighbor.cpp: // (5) copy = convert as many lists as possible to copy lists
|
|
neighbor.cpp: // order of morph methods matters:
|
|
neighbor.cpp: // (1) before (2), b/c (2) needs to know history partner pairings
|
|
neighbor.cpp: // (2) after (1), b/c (2) may also need to create new history lists
|
|
neighbor.cpp: // (3) after (2), b/c it adjusts lists created by (2)
|
|
neighbor.cpp: // (4) after (2) and (3),
|
|
neighbor.cpp: // b/c (2) may create new full lists, (3) may change them
|
|
neighbor.cpp: // (5) last, after all lists are finalized, so all possible copies found
|
|
neighbor.cpp: morph_granular(); // this method can change flags set by requestor
|
|
neighbor.cpp: // create new lists, one per request including added requests
|
|
neighbor.cpp: // wait to allocate initial pages until copy lists are detected
|
|
neighbor.cpp: // NOTE: can I allocate now, instead of down below?
|
|
neighbor.cpp: // allocate new lists
|
|
neighbor.cpp: // pass list ptr back to requestor (except for Command class)
|
|
neighbor.cpp: // only for original requests, not ones added by Neighbor class
|
|
neighbor.cpp: // invoke post_constructor() for all lists
|
|
neighbor.cpp: // copies info from requests to lists, sets ptrs to related lists
|
|
neighbor.cpp: // assign Bin,Stencil,Pair style to each list
|
|
neighbor.cpp: // instantiate unique Bin,Stencil classes in neigh_bin & neigh_stencil vecs
|
|
neighbor.cpp: // unique = only one of its style, or request unique flag set (custom cutoff)
|
|
neighbor.cpp: // instantiate one Pair class per list in neigh_pair vec
|
|
neighbor.cpp: // allocate initial pages for each list, except if copy flag set
|
|
neighbor.cpp: // allocate dnum vector of zeroes if set
|
|
neighbor.cpp: // first-time allocation of per-atom data for lists that are built and store
|
|
neighbor.cpp: // lists that are not built: granhistory, respa inner/middle (no neigh_pair)
|
|
neighbor.cpp: // lists that do not store: copy
|
|
neighbor.cpp: // use atom->nmax for both grow() args
|
|
neighbor.cpp: // i.e. grow first time to expanded size to avoid future reallocs
|
|
neighbor.cpp: // also Kokkos list initialization
|
|
neighbor.cpp: // plist = indices of perpetual NPair classes
|
|
neighbor.cpp: // perpetual = non-occasional, re-built at every reneighboring
|
|
neighbor.cpp: // slist = indices of perpetual NStencil classes
|
|
neighbor.cpp: // perpetual = used by any perpetual NPair class
|
|
neighbor.cpp: // reorder plist vector if necessary
|
|
neighbor.cpp: // relevant for lists that are derived from a parent list:
|
|
neighbor.cpp: // half-full,copy,skip
|
|
neighbor.cpp: // the child index must appear in plist after the parent index
|
|
neighbor.cpp: // swap two indices within plist when dependency is mis-ordered
|
|
neighbor.cpp: // start double loop check again whenever a swap is made
|
|
neighbor.cpp: // done when entire double loop test results in no swaps
|
|
neighbor.cpp: int tmp = plist[i]; // swap I,J indices
|
|
neighbor.cpp: // debug output
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // if history, point this list and partner list at each other
|
|
neighbor.cpp: // if respaouter, point all associated rRESPA lists at each other
|
|
neighbor.cpp: // if cut flag set by requestor, set unique flag
|
|
neighbor.cpp: // this forces Pair,Stencil,Bin styles to be instantiated separately
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // only processing skip lists
|
|
neighbor.cpp: // these lists are created other ways, no need for skipping
|
|
neighbor.cpp: // halffull list and its full parent may both skip,
|
|
neighbor.cpp: // but are checked to insure matching skip info
|
|
neighbor.cpp: // check all other lists
|
|
neighbor.cpp: // can only skip from a perpetual non-skip list
|
|
neighbor.cpp: // both lists must be half, or both full
|
|
neighbor.cpp: // both lists must be newton on, or both newton off
|
|
neighbor.cpp: // IJ newton = 1 for newton on, 2 for newton off
|
|
neighbor.cpp: // these flags must be same,
|
|
neighbor.cpp: // else 2 lists do not store same pairs
|
|
neighbor.cpp: // or their data structures are different
|
|
neighbor.cpp: // this includes custom cutoff set by requestor
|
|
neighbor.cpp: // no need to check respaouter b/c it stores same pairs
|
|
neighbor.cpp: // no need to check dnum b/c only set for history
|
|
neighbor.cpp: // NOTE: need check for 2 Kokkos flags?
|
|
neighbor.cpp: // 2 lists are a match
|
|
neighbor.cpp: // if matching list exists, point to it
|
|
neighbor.cpp: // else create a new identical list except non-skip
|
|
neighbor.cpp: // for new list, set neigh = 1, skip = 0, no skip vec/array,
|
|
neighbor.cpp: // copy unique flag (since copy_request() will not do it)
|
|
neighbor.cpp: // note: parents of skip lists do not have associated history list
|
|
neighbor.cpp: // b/c child skip lists store their own history info
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp: adjust newton/oneside parent settings if children require onesided skipping
|
|
neighbor.cpp: this is needed because line/gran and tri/gran pair styles
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // only examine NeighRequests added by morph_skip()
|
|
neighbor.cpp: // only those with size attribute for granular systems
|
|
neighbor.cpp: // check children of this list
|
|
neighbor.cpp: // only consider JRQ pair, size lists that skip from Irq list
|
|
neighbor.cpp: // onesided = -1 if no children
|
|
neighbor.cpp: // onesided = 0/1 = child granonesided value if same for all children
|
|
neighbor.cpp: // onesided = 2 if children have different granonesided values
|
|
neighbor.cpp: // if onesided = 2, parent has children with both granonesided = 0/1
|
|
neighbor.cpp: // force parent newton off (newton = 2) to enable onesided skip by child
|
|
neighbor.cpp: // set parent granonesided = 0, so it stores all neighs in usual manner
|
|
neighbor.cpp: // set off2on = 1 for all children, since they expect newton on lists
|
|
neighbor.cpp: // this is b/c granonesided only set by line/gran and tri/gran which
|
|
neighbor.cpp: // both require system newton on
|
|
neighbor.cpp: // only consider JRQ pair, size lists that skip from Irq list
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // only processing half lists
|
|
neighbor.cpp: // Kokkos doesn't yet support half from full
|
|
neighbor.cpp: // these lists are created other ways, no need for halffull
|
|
neighbor.cpp: // do want to process skip lists
|
|
neighbor.cpp: // check all other lists
|
|
neighbor.cpp: // can only derive from a perpetual full list
|
|
neighbor.cpp: // newton setting of derived list does not matter
|
|
neighbor.cpp: // these flags must be same,
|
|
neighbor.cpp: // else 2 lists do not store same pairs
|
|
neighbor.cpp: // or their data structures are different
|
|
neighbor.cpp: // this includes custom cutoff set by requestor
|
|
neighbor.cpp: // no need to check respaouter b/c it stores same pairs
|
|
neighbor.cpp: // no need to check dnum b/c only set for history
|
|
neighbor.cpp: // skip flag must be same
|
|
neighbor.cpp: // if both are skip lists, skip info must match
|
|
neighbor.cpp: // 2 lists are a match
|
|
neighbor.cpp: // if matching list exists, point to it
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // this list is already a copy list due to another morph method
|
|
neighbor.cpp: // these lists are created other ways, no need to copy
|
|
neighbor.cpp: // skip lists are eligible to become a copy list
|
|
neighbor.cpp: // check all other lists
|
|
neighbor.cpp: // other list is already copied from this one
|
|
neighbor.cpp: // other list (jrq) to copy from must be perpetual
|
|
neighbor.cpp: // list that becomes a copy list (irq) can be perpetual or occasional
|
|
neighbor.cpp: // if both lists are perpetual, require j < i
|
|
neighbor.cpp: // to prevent circular dependence with 3 or more copies of a list
|
|
neighbor.cpp: // both lists must be half, or both full
|
|
neighbor.cpp: // both lists must be newton on, or both newton off
|
|
neighbor.cpp: // IJ newton = 1 for newton on, 2 for newton off
|
|
neighbor.cpp: // ok for non-ghost list to copy from ghost list, but not vice versa
|
|
neighbor.cpp: // these flags must be same,
|
|
neighbor.cpp: // else 2 lists do not store same pairs
|
|
neighbor.cpp: // or their data structures are different
|
|
neighbor.cpp: // this includes custom cutoff set by requestor
|
|
neighbor.cpp: // no need to check respaouter b/c it stores same pairs
|
|
neighbor.cpp: // no need to check omp b/c it stores same pairs
|
|
neighbor.cpp: // no need to check dnum b/c only set for history
|
|
neighbor.cpp: // NOTE: need check for 2 Kokkos flags?
|
|
neighbor.cpp: // skip flag must be same
|
|
neighbor.cpp: // if both are skip lists, skip info must match
|
|
neighbor.cpp: // 2 lists are a match
|
|
neighbor.cpp: // turn list I into a copy of list J
|
|
neighbor.cpp: // do not copy a list from another copy list, but from its parent list
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // set flags that determine which topology neighbor classes to use
|
|
neighbor.cpp: // these settings could change from run to run, depending on fixes defined
|
|
neighbor.cpp: // bonds,etc can only be broken for atom->molecular = 1, not 2
|
|
neighbor.cpp: // SHAKE sets bonds and angles negative
|
|
neighbor.cpp: // gcmc sets all bonds, angles, etc negative
|
|
neighbor.cpp: // bond_quartic sets bonds to 0
|
|
neighbor.cpp: // delete_bonds sets all interactions negative
|
|
neighbor.cpp: // sync on/off settings across all procs
|
|
neighbor.cpp: // instantiate NTopo classes
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: fprintf(out," max neighbors/atom: %d, page size: %d\n",
|
|
neighbor.cpp: ceil(bbox[0]/binsize), ceil(bbox[1]/binsize),
|
|
neighbor.cpp: ceil(bbox[2]/binsize));
|
|
neighbor.cpp: "perpetual/occasional/extra = %d %d %d\n",
|
|
neighbor.cpp: // order these to get single output of most relevant
|
|
neighbor.cpp: fprintf(out,", half/full from (%d)",rq->halffulllist+1);
|
|
neighbor.cpp: // list of neigh list attributes
|
|
neighbor.cpp: /*
|
|
neighbor.cpp: */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // no binning needed
|
|
neighbor.cpp: // use request settings to match exactly one NBin class mask
|
|
neighbor.cpp: // checks are bitwise using NeighConst bit masks
|
|
neighbor.cpp: // require match of these request flags and mask bits
|
|
neighbor.cpp: // (!A != !B) is effectively a logical xor
|
|
neighbor.cpp: // error return if matched none
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // no stencil creation needed
|
|
neighbor.cpp: // convert newton request to newtflag = on or off
|
|
neighbor.cpp: //printf("STENCIL RQ FLAGS: hff %d %d n %d g %d s %d newtflag %d\n",
|
|
neighbor.cpp: // rq->half,rq->full,rq->newton,rq->ghost,rq->ssa,
|
|
neighbor.cpp: // newtflag);
|
|
neighbor.cpp: // use request and system settings to match exactly one NStencil class mask
|
|
neighbor.cpp: // checks are bitwise using NeighConst bit masks
|
|
neighbor.cpp: //printf("III %d: half %d full %d newton %d newtoff %d ghost %d ssa %d\n",
|
|
neighbor.cpp: // i,mask & NS_HALF,mask & NS_FULL,mask & NS_NEWTON,
|
|
neighbor.cpp: // mask & NS_NEWTOFF,mask & NS_GHOST,mask & NS_SSA);
|
|
neighbor.cpp: // exactly one of half or full is set and must match
|
|
neighbor.cpp: // newtflag is on or off and must match
|
|
neighbor.cpp: // require match of these request flags and mask bits
|
|
neighbor.cpp: // (!A != !B) is effectively a logical xor
|
|
neighbor.cpp: // neighbor style is BIN or MULTI and must match
|
|
neighbor.cpp: // dimension is 2 or 3 and must match
|
|
neighbor.cpp: // domain triclinic flag is on or off and must match
|
|
neighbor.cpp: // error return if matched none
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // no neighbor list build performed
|
|
neighbor.cpp: // error check for includegroup with ghost neighbor request
|
|
neighbor.cpp: // convert newton request to newtflag = on or off
|
|
neighbor.cpp: //printf("PAIR RQ FLAGS: hf %d %d n %d g %d sz %d gos %d r %d b %d o %d i %d "
|
|
neighbor.cpp: // "kk %d %d ss %d dn %d sk %d cp %d hf %d oo %d\n",
|
|
neighbor.cpp: // rq->half,rq->full,rq->newton,rq->ghost,rq->size,
|
|
neighbor.cpp: // rq->granonesided,rq->respaouter,rq->bond,rq->omp,rq->intel,
|
|
neighbor.cpp: // rq->kokkos_host,rq->kokkos_device,rq->ssa,rq->dnum,
|
|
neighbor.cpp: // rq->skip,rq->copy,rq->halffull,rq->off2on);
|
|
neighbor.cpp: // use request and system settings to match exactly one NPair class mask
|
|
neighbor.cpp: // checks are bitwise using NeighConst bit masks
|
|
neighbor.cpp: //printf(" PAIR NAMES i %d %d name %s mask %d\n",i,nrequest,
|
|
neighbor.cpp: // pairnames[i],pairmasks[i]);
|
|
neighbor.cpp: // if copy request, no further checks needed, just return or continue
|
|
neighbor.cpp: // Kokkos device/host flags must also match in order to copy
|
|
neighbor.cpp: // exactly one of half or full is set and must match
|
|
neighbor.cpp: // newtflag is on or off and must match
|
|
neighbor.cpp: // if molecular on, do not match ATOMONLY (b/c a MOLONLY Npair exists)
|
|
neighbor.cpp: // if molecular off, do not match MOLONLY (b/c an ATOMONLY Npair exists)
|
|
neighbor.cpp: // require match of these request flags and mask bits
|
|
neighbor.cpp: // (!A != !B) is effectively a logical xor
|
|
neighbor.cpp: // neighbor style is one of NSQ,BIN,MULTI and must match
|
|
neighbor.cpp: // domain triclinic flag is on or off and must match
|
|
neighbor.cpp: // error return if matched none
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp: called before run and every reneighbor if box size/shape changes
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // invoke setup_bins() for all NBin
|
|
neighbor.cpp: // actual binning is performed in build()
|
|
neighbor.cpp: // invoke create_setup() and create() for all perpetual NStencil
|
|
neighbor.cpp: // same ops performed for occasional lists in build_one()
|
|
neighbor.cpp:/* ---------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp: new trigger = 1/2 of reduced skin distance
|
|
neighbor.cpp: for orthogonal box, only need 2 lo/hi corners
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // check that using special bond flags will not overflow neigh lists
|
|
neighbor.cpp: // store current atom positions and box size if needed
|
|
neighbor.cpp: // bin atoms for all NBin instances
|
|
neighbor.cpp: // not just NBin associated with perpetual lists
|
|
neighbor.cpp: // b/c cannot wait to bin occasional lists in build_one() call
|
|
neighbor.cpp: // if bin then, atoms may have moved outside of proc domain & bin extent,
|
|
neighbor.cpp: // leading to errors or even a crash
|
|
neighbor.cpp: // build pairwise lists for all perpetual NPair/NeighList
|
|
neighbor.cpp: // grow() with nlocal/nall args so that only realloc if have to
|
|
neighbor.cpp: // build topology lists for bonds/angles/etc
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp: copy their list info back to Neighbor for access by bond/angle/etc classes
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: // check if list structure is initialized
|
|
neighbor.cpp: // build_one() should never be invoked on a perpetual list
|
|
neighbor.cpp: // no need to build if already built since last re-neighbor
|
|
neighbor.cpp: // preflag is set by fix bond/create and fix bond/swap
|
|
neighbor.cpp: // b/c they invoke build_one() on same step neigh list is re-built,
|
|
neighbor.cpp: // but before re-build, so need to use ">" instead of ">="
|
|
neighbor.cpp: // if this is copy list and parent is occasional list,
|
|
neighbor.cpp: // or this is halffull and parent is occasional list,
|
|
neighbor.cpp: // insure parent is current
|
|
neighbor.cpp: // create stencil if hasn't been created since last setup_bins() call
|
|
neighbor.cpp: // build the list
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp: } else if (strcmp(arg[iarg+1],"molecule/inter") == 0 ||
|
|
neighbor.cpp: strcmp(arg[iarg+1],"molecule/intra") == 0) {
|
|
neighbor.cpp: if (strcmp(arg[iarg+1],"molecule/intra") == 0)
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neighbor.cpp:/* ----------------------------------------------------------------------
|
|
neighbor.cpp:------------------------------------------------------------------------- */
|
|
neigh_list.cpp:/* ----------------------------------------------------------------------
|
|
neigh_list.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
neigh_list.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
neigh_list.cpp:------------------------------------------------------------------------- */
|
|
neigh_list.cpp:enum{NSQ,BIN,MULTI}; // also in Neighbor
|
|
neigh_list.cpp:/* ---------------------------------------------------------------------- */
|
|
neigh_list.cpp: // initializations
|
|
neigh_list.cpp: // defaults, but may be reset by post_constructor()
|
|
neigh_list.cpp: // ptrs
|
|
neigh_list.cpp: // Kokkos package
|
|
neigh_list.cpp: // USER-DPD package
|
|
neigh_list.cpp:/* ---------------------------------------------------------------------- */
|
|
neigh_list.cpp:/* ----------------------------------------------------------------------
|
|
neigh_list.cpp: cannot do this in constructor b/c not all NeighLists are allocated yet
|
|
neigh_list.cpp: respaouter -> set listinner/listmiddle for other rRESPA lists
|
|
neigh_list.cpp:------------------------------------------------------------------------- */
|
|
neigh_list.cpp: // copy request settings used by list itself
|
|
neigh_list.cpp:/* ---------------------------------------------------------------------- */
|
|
neigh_list.cpp:/* ----------------------------------------------------------------------
|
|
neigh_list.cpp: grow per-atom data to allow for nlocal/nall atoms
|
|
neigh_list.cpp:------------------------------------------------------------------------- */
|
|
neigh_list.cpp: // trigger grow() in children before possible return
|
|
neigh_list.cpp: // skip if data structs are already big enough
|
|
neigh_list.cpp:/* ----------------------------------------------------------------------
|
|
neigh_list.cpp:------------------------------------------------------------------------- */
|
|
neigh_list.cpp: printf("Neighbor list/request %d:\n",index);
|
|
neigh_list.cpp: printf(" %d = half/full\n",rq->halffull);
|
|
neigh_list.cpp: printf(" %d = history/partner\n",rq->history_partner);
|
|
neigh_list.cpp:/* ----------------------------------------------------------------------
|
|
neigh_list.cpp:------------------------------------------------------------------------- */
|
|
neigh_request.cpp:/* ----------------------------------------------------------------------
|
|
neigh_request.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
neigh_request.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
neigh_request.cpp:------------------------------------------------------------------------- */
|
|
neigh_request.cpp:/* ---------------------------------------------------------------------- */
|
|
neigh_request.cpp: // default ID = 0
|
|
neigh_request.cpp: // class user of list: default is pair request
|
|
neigh_request.cpp: // only one is set to 1
|
|
neigh_request.cpp: // kind of list: default is half neighbor list
|
|
neigh_request.cpp: // only one is set to 1
|
|
neigh_request.cpp: // attribute flags, mutiple can be set to 1
|
|
neigh_request.cpp: // default is every reneighboring, not occasional
|
|
neigh_request.cpp: // default is use newton_pair setting in force
|
|
neigh_request.cpp: // default is no neighbors of ghosts
|
|
neigh_request.cpp: // default is use cutoffs, not size of particles
|
|
neigh_request.cpp: // default is no additional neighbor history info
|
|
neigh_request.cpp: // default is no one-sided sphere/surface interactions (when size = 1)
|
|
neigh_request.cpp: // default is neighbors of atoms, not bonds
|
|
neigh_request.cpp: // default is no multilevel rRESPA neighbors
|
|
neigh_request.cpp: // default is no OpenMP multi-threaded neighbor list build
|
|
neigh_request.cpp: // default is no Intel-specific neighbor list build
|
|
neigh_request.cpp: // default is no Kokkos neighbor list build
|
|
neigh_request.cpp: // default is no Shardlow Splitting Algorithm (SSA) neighbor list build
|
|
neigh_request.cpp: // default is no storage of auxiliary floating point values
|
|
neigh_request.cpp: // skip info, default is no skipping
|
|
neigh_request.cpp: // only set when command = 1;
|
|
neigh_request.cpp: // info set by Neighbor class when morphing original requests
|
|
neigh_request.cpp: // internal settings
|
|
neigh_request.cpp:/* ---------------------------------------------------------------------- */
|
|
neigh_request.cpp:/* ----------------------------------------------------------------------
|
|
neigh_request.cpp:------------------------------------------------------------------------- */
|
|
neigh_request.cpp: // check for match of requestor_instance and instance counter
|
|
neigh_request.cpp: // prevents an old fix from being unfix/refix in same memory location
|
|
neigh_request.cpp: // stored in requestor, and thus appearing old, when really new
|
|
neigh_request.cpp: // only needed for classes with persistent neigh lists: Pair, Fix, Compute
|
|
neigh_request.cpp: // only compare settings made by requestors
|
|
neigh_request.cpp: // not settings made later by Neighbor class
|
|
neigh_request.cpp:/* ----------------------------------------------------------------------
|
|
neigh_request.cpp:------------------------------------------------------------------------- */
|
|
neigh_request.cpp:/* ----------------------------------------------------------------------
|
|
neigh_request.cpp: skipflag = 1 to copy skip vector/array
|
|
neigh_request.cpp:------------------------------------------------------------------------- */
|
|
npair_copy.cpp:/* ----------------------------------------------------------------------
|
|
npair_copy.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_copy.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_copy.cpp:------------------------------------------------------------------------- */
|
|
npair_copy.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_copy.cpp:/* ----------------------------------------------------------------------
|
|
npair_copy.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp:/* ---------------------------------------------------------------------- */
|
|
npair.cpp:/* ---------------------------------------------------------------------- */
|
|
npair.cpp:/* ---------------------------------------------------------------------- */
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp: // general params
|
|
npair.cpp: // exclusion info
|
|
npair.cpp: // special info
|
|
npair.cpp: // overwrite per-type Neighbor cutoffs with custom value set by requestor
|
|
npair.cpp: // only works for style = BIN (checked by Neighbor class)
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp: // set here, since build_setup() always called before build()
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp: // intra-chain: exclude i-j pair if in same molecule
|
|
npair.cpp: // inter-chain: exclude i-j pair if in different molecules
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp: take special care to insure ghosts are in correct bins even w/ roundoff
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair.cpp:/* ----------------------------------------------------------------------
|
|
npair.cpp:------------------------------------------------------------------------- */
|
|
npair_full_bin_atomonly.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_bin_atomonly.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_full_bin_atomonly.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_full_bin_atomonly.cpp:------------------------------------------------------------------------- */
|
|
npair_full_bin_atomonly.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_full_bin_atomonly.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_bin_atomonly.cpp:------------------------------------------------------------------------- */
|
|
npair_full_bin_atomonly.cpp: // loop over all atoms in surrounding bins in stencil including self
|
|
npair_full_bin_atomonly.cpp: // skip i = j
|
|
npair_full_bin.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_bin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_full_bin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_full_bin.cpp:------------------------------------------------------------------------- */
|
|
npair_full_bin.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_full_bin.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_bin.cpp:------------------------------------------------------------------------- */
|
|
npair_full_bin.cpp: // loop over all atoms in surrounding bins in stencil including self
|
|
npair_full_bin.cpp: // skip i = j
|
|
npair_full_bin_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_bin_ghost.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_full_bin_ghost.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_full_bin_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_full_bin_ghost.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_full_bin_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_bin_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_full_bin_ghost.cpp: // loop over owned & ghost atoms, storing neighbors
|
|
npair_full_bin_ghost.cpp: // loop over all atoms in surrounding bins in stencil including self
|
|
npair_full_bin_ghost.cpp: // when i is a ghost atom, must check if stencil bin is out of bounds
|
|
npair_full_bin_ghost.cpp: // skip i = j
|
|
npair_full_bin_ghost.cpp: // no molecular test when i = ghost atom
|
|
npair_full_multi.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_multi.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_full_multi.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_full_multi.cpp:------------------------------------------------------------------------- */
|
|
npair_full_multi.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_full_multi.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_multi.cpp:------------------------------------------------------------------------- */
|
|
npair_full_multi.cpp: // loop over all atoms in other bins in stencil, including self
|
|
npair_full_multi.cpp: // skip if i,j neighbor cutoff is less than bin distance
|
|
npair_full_multi.cpp: // skip i = j
|
|
npair_full_nsq.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_nsq.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_full_nsq.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_full_nsq.cpp:------------------------------------------------------------------------- */
|
|
npair_full_nsq.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_full_nsq.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_nsq.cpp:------------------------------------------------------------------------- */
|
|
npair_full_nsq.cpp: // loop over all atoms, owned and ghost
|
|
npair_full_nsq.cpp: // skip i = j
|
|
npair_full_nsq_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_nsq_ghost.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_full_nsq_ghost.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_full_nsq_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_full_nsq_ghost.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_full_nsq_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_full_nsq_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_full_nsq_ghost.cpp: // loop over owned & ghost atoms, storing neighbors
|
|
npair_full_nsq_ghost.cpp: // loop over all atoms, owned and ghost
|
|
npair_full_nsq_ghost.cpp: // skip i = j
|
|
npair_full_nsq_ghost.cpp: // no molecular test when i = ghost atom
|
|
npair_half_bin_atomonly_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_atomonly_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_bin_atomonly_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_bin_atomonly_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_atomonly_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_bin_atomonly_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_atomonly_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_atomonly_newton.cpp: // loop over rest of atoms in i's bin, ghosts are at end of linked list
|
|
npair_half_bin_atomonly_newton.cpp: // if j is owned atom, store it, since j is beyond i in linked list
|
|
npair_half_bin_atomonly_newton.cpp: // if j is ghost, only store if j coords are "above and to the right" of i
|
|
npair_half_bin_atomonly_newton.cpp: // loop over all atoms in other bins in stencil, store every pair
|
|
npair_half_bin_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_bin_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_bin_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_bin_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newtoff.cpp: // loop over all atoms in other bins in stencil including self
|
|
npair_half_bin_newtoff.cpp: // only store pair if i < j
|
|
npair_half_bin_newtoff.cpp: // stores own/own pairs only once
|
|
npair_half_bin_newtoff.cpp: // stores own/ghost pairs on both procs
|
|
npair_half_bin_newtoff.cpp: // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS);
|
|
npair_half_bin_newtoff_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newtoff_ghost.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_bin_newtoff_ghost.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_bin_newtoff_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newtoff_ghost.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_bin_newtoff_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newtoff_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newtoff_ghost.cpp: // loop over all atoms in other bins in stencil including self
|
|
npair_half_bin_newtoff_ghost.cpp: // when i is a ghost atom, must check if stencil bin is out of bounds
|
|
npair_half_bin_newtoff_ghost.cpp: // only store pair if i < j
|
|
npair_half_bin_newtoff_ghost.cpp: // stores own/own pairs only once
|
|
npair_half_bin_newtoff_ghost.cpp: // stores own/ghost pairs with owned atom only, on both procs
|
|
npair_half_bin_newtoff_ghost.cpp: // stores ghost/ghost pairs only once
|
|
npair_half_bin_newtoff_ghost.cpp: // no molecular test when i = ghost atom
|
|
npair_half_bin_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_bin_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_bin_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_bin_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newton.cpp: // loop over rest of atoms in i's bin, ghosts are at end of linked list
|
|
npair_half_bin_newton.cpp: // if j is owned atom, store it, since j is beyond i in linked list
|
|
npair_half_bin_newton.cpp: // if j is ghost, only store if j coords are "above and to the right" of i
|
|
npair_half_bin_newton.cpp: // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS);
|
|
npair_half_bin_newton.cpp: // loop over all atoms in other bins in stencil, store every pair
|
|
npair_half_bin_newton.cpp: // OLD: if (which >= 0) neighptr[n++] = j ^ (which << SBBITS);
|
|
npair_half_bin_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_bin_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_bin_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_bin_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_bin_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_bin_newton_tri.cpp: // loop over all atoms in bins in stencil
|
|
npair_half_bin_newton_tri.cpp: // pairs for atoms j "below" i are excluded
|
|
npair_half_bin_newton_tri.cpp: // below = lower z or (equal z and lower y) or (equal zy and lower x)
|
|
npair_half_bin_newton_tri.cpp: // (equal zyx and j <= i)
|
|
npair_half_bin_newton_tri.cpp: // latter excludes self-self interaction but allows superposed atoms
|
|
npair_halffull_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_halffull_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_halffull_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_halffull_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_halffull_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_halffull_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_halffull_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_halffull_newtoff.cpp: // loop over atoms in full list
|
|
npair_halffull_newtoff.cpp: // loop over parent full list
|
|
npair_halffull_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_halffull_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_halffull_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_halffull_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_halffull_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_halffull_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_halffull_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_halffull_newton.cpp: // loop over parent full list
|
|
npair_halffull_newton.cpp: // loop over full neighbor list
|
|
npair_half_multi_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_multi_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_multi_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_multi_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_multi_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_multi_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_multi_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_multi_newtoff.cpp: // loop over all atoms in other bins in stencil including self
|
|
npair_half_multi_newtoff.cpp: // only store pair if i < j
|
|
npair_half_multi_newtoff.cpp: // skip if i,j neighbor cutoff is less than bin distance
|
|
npair_half_multi_newtoff.cpp: // stores own/own pairs only once
|
|
npair_half_multi_newtoff.cpp: // stores own/ghost pairs on both procs
|
|
npair_half_multi_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_multi_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_multi_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_multi_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_multi_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_multi_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_multi_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_multi_newton.cpp: // loop over rest of atoms in i's bin, ghosts are at end of linked list
|
|
npair_half_multi_newton.cpp: // if j is owned atom, store it, since j is beyond i in linked list
|
|
npair_half_multi_newton.cpp: // if j is ghost, only store if j coords are "above and to the right" of i
|
|
npair_half_multi_newton.cpp: // loop over all atoms in other bins in stencil, store every pair
|
|
npair_half_multi_newton.cpp: // skip if i,j neighbor cutoff is less than bin distance
|
|
npair_half_multi_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_multi_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_multi_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_multi_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_multi_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_multi_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_multi_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_multi_newton_tri.cpp: // loop over all atoms in bins, including self, in stencil
|
|
npair_half_multi_newton_tri.cpp: // skip if i,j neighbor cutoff is less than bin distance
|
|
npair_half_multi_newton_tri.cpp: // bins below self are excluded from stencil
|
|
npair_half_multi_newton_tri.cpp: // pairs for atoms j "below" i are excluded
|
|
npair_half_multi_newton_tri.cpp: // below = lower z or (equal z and lower y) or (equal zy and lower x)
|
|
npair_half_multi_newton_tri.cpp: // (equal zyx and j <= i)
|
|
npair_half_multi_newton_tri.cpp: // latter excludes self-self interaction but allows superposed atoms
|
|
npair_half_nsq_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_nsq_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_nsq_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_nsq_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_nsq_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_nsq_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_nsq_newtoff.cpp: N^2 / 2 search for neighbor pairs with partial Newton's 3rd law
|
|
npair_half_nsq_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_nsq_newtoff.cpp: // loop over remaining atoms, owned and ghost
|
|
npair_half_nsq_newtoff.cpp: // only store pair if i < j
|
|
npair_half_nsq_newtoff_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_nsq_newtoff_ghost.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_nsq_newtoff_ghost.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_nsq_newtoff_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_half_nsq_newtoff_ghost.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_nsq_newtoff_ghost.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_nsq_newtoff_ghost.cpp: N^2 / 2 search for neighbor pairs with partial Newton's 3rd law
|
|
npair_half_nsq_newtoff_ghost.cpp:------------------------------------------------------------------------- */
|
|
npair_half_nsq_newtoff_ghost.cpp: // loop over owned & ghost atoms, storing neighbors
|
|
npair_half_nsq_newtoff_ghost.cpp: // loop over remaining atoms, owned and ghost
|
|
npair_half_nsq_newtoff_ghost.cpp: // only store pair if i < j
|
|
npair_half_nsq_newtoff_ghost.cpp: // stores own/own pairs only once
|
|
npair_half_nsq_newtoff_ghost.cpp: // stores own/ghost pairs with owned atom only, on both procs
|
|
npair_half_nsq_newtoff_ghost.cpp: // stores ghost/ghost pairs only once
|
|
npair_half_nsq_newtoff_ghost.cpp: // no molecular test when i = ghost atom
|
|
npair_half_nsq_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_nsq_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_nsq_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_nsq_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_nsq_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_nsq_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_nsq_newton.cpp: N^2 / 2 search for neighbor pairs with full Newton's 3rd law
|
|
npair_half_nsq_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_nsq_newton.cpp: // loop over remaining atoms, owned and ghost
|
|
npair_half_nsq_newton.cpp: // itag = jtag is possible for long cutoffs that include images of self
|
|
npair_half_respa_bin_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_bin_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_respa_bin_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_respa_bin_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_bin_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newtoff.cpp: // loop over all atoms in surrounding bins in stencil including self
|
|
npair_half_respa_bin_newtoff.cpp: // only store pair if i < j
|
|
npair_half_respa_bin_newtoff.cpp: // stores own/own pairs only once
|
|
npair_half_respa_bin_newtoff.cpp: // stores own/ghost pairs on both procs
|
|
npair_half_respa_bin_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_bin_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_respa_bin_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_respa_bin_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_bin_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newton.cpp: // loop over rest of atoms in i's bin, ghosts are at end of linked list
|
|
npair_half_respa_bin_newton.cpp: // if j is owned atom, store it, since j is beyond i in linked list
|
|
npair_half_respa_bin_newton.cpp: // if j is ghost, only store if j coords are "above and to the right" of i
|
|
npair_half_respa_bin_newton.cpp: // loop over all atoms in other bins in stencil, store every pair
|
|
npair_half_respa_bin_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_bin_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_respa_bin_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_respa_bin_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_bin_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_bin_newton_tri.cpp: // loop over all atoms in bins in stencil
|
|
npair_half_respa_bin_newton_tri.cpp: // pairs for atoms j "below" i are excluded
|
|
npair_half_respa_bin_newton_tri.cpp: // below = lower z or (equal z and lower y) or (equal zy and lower x)
|
|
npair_half_respa_bin_newton_tri.cpp: // (equal zyx and j <= i)
|
|
npair_half_respa_bin_newton_tri.cpp: // latter excludes self-self interaction but allows superposed atoms
|
|
npair_half_respa_nsq_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_nsq_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_respa_nsq_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_respa_nsq_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_nsq_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_respa_nsq_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_nsq_newtoff.cpp: N^2 / 2 search for neighbor pairs with partial Newton's 3rd law
|
|
npair_half_respa_nsq_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_nsq_newtoff.cpp: // loop over remaining atoms, owned and ghost
|
|
npair_half_respa_nsq_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_nsq_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_respa_nsq_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_respa_nsq_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_nsq_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_respa_nsq_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_respa_nsq_newton.cpp: N^2 / 2 search for neighbor pairs with full Newton's 3rd law
|
|
npair_half_respa_nsq_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_respa_nsq_newton.cpp: // loop over remaining atoms, owned and ghost
|
|
npair_half_size_bin_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_bin_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_size_bin_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_size_bin_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_bin_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_size_bin_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_bin_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_bin_newtoff.cpp: // loop over all atoms in surrounding bins in stencil including self
|
|
npair_half_size_bin_newtoff.cpp: // only store pair if i < j
|
|
npair_half_size_bin_newtoff.cpp: // stores own/own pairs only once
|
|
npair_half_size_bin_newtoff.cpp: // stores own/ghost pairs on both procs
|
|
npair_half_size_bin_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_bin_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_size_bin_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_size_bin_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_bin_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_size_bin_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_bin_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_bin_newton.cpp: // loop over rest of atoms in i's bin, ghosts are at end of linked list
|
|
npair_half_size_bin_newton.cpp: // if j is owned atom, store it, since j is beyond i in linked list
|
|
npair_half_size_bin_newton.cpp: // if j is ghost, only store if j coords are "above and to the right" of i
|
|
npair_half_size_bin_newton.cpp: // loop over all atoms in other bins in stencil, store every pair
|
|
npair_half_size_bin_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_bin_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_size_bin_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_size_bin_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_bin_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_size_bin_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_bin_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_bin_newton_tri.cpp: // loop over all atoms in bins in stencil
|
|
npair_half_size_bin_newton_tri.cpp: // pairs for atoms j "below" i are excluded
|
|
npair_half_size_bin_newton_tri.cpp: // below = lower z or (equal z and lower y) or (equal zy and lower x)
|
|
npair_half_size_bin_newton_tri.cpp: // (equal zyx and j <= i)
|
|
npair_half_size_bin_newton_tri.cpp: // latter excludes self-self interaction but allows superposed atoms
|
|
npair_half_size_nsq_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_nsq_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_size_nsq_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_size_nsq_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_nsq_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_size_nsq_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_nsq_newtoff.cpp: N^2 / 2 search for neighbor pairs with partial Newton's 3rd law
|
|
npair_half_size_nsq_newtoff.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_nsq_newtoff.cpp: // loop over remaining atoms, owned and ghost
|
|
npair_half_size_nsq_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_nsq_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_half_size_nsq_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_half_size_nsq_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_nsq_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_half_size_nsq_newton.cpp:/* ----------------------------------------------------------------------
|
|
npair_half_size_nsq_newton.cpp: N^2 / 2 search for neighbor pairs with full Newton's 3rd law
|
|
npair_half_size_nsq_newton.cpp:------------------------------------------------------------------------- */
|
|
npair_half_size_nsq_newton.cpp: // loop over remaining atoms, owned and ghost
|
|
npair_skip.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_skip.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_skip.cpp:------------------------------------------------------------------------- */
|
|
npair_skip.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_skip.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip.cpp:------------------------------------------------------------------------- */
|
|
npair_skip.cpp: // loop over atoms in other list
|
|
npair_skip.cpp: // skip I atom entirely if iskip is set for type[I]
|
|
npair_skip.cpp: // skip I,J pair if ijskip is set for type[I],type[J]
|
|
npair_skip.cpp: // loop over parent non-skip list
|
|
npair_skip_respa.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_respa.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_skip_respa.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_skip_respa.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_respa.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_skip_respa.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_respa.cpp: this is for respa lists, copy the inner/middle values from parent
|
|
npair_skip_respa.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_respa.cpp: // loop over atoms in other list
|
|
npair_skip_respa.cpp: // skip I atom entirely if iskip is set for type[I]
|
|
npair_skip_respa.cpp: // skip I,J pair if ijskip is set for type[I],type[J]
|
|
npair_skip_respa.cpp: // loop over parent outer rRESPA list
|
|
npair_skip_respa.cpp: // loop over parent inner rRESPA list
|
|
npair_skip_respa.cpp: // loop over parent middle rRESPA list
|
|
npair_skip_size.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_size.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_skip_size.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_skip_size.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_size.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_skip_size.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_size.cpp: if list requests it, preserve shear history via fix shear/history
|
|
npair_skip_size.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_size.cpp: // loop over atoms in other list
|
|
npair_skip_size.cpp: // skip I atom entirely if iskip is set for type[I]
|
|
npair_skip_size.cpp: // skip I,J pair if ijskip is set for type[I],type[J]
|
|
npair_skip_size.cpp: // loop over parent non-skip size list and optionally its history info
|
|
npair_skip_size.cpp: // no numeric test for current touch
|
|
npair_skip_size.cpp: // just use FSH partner list to infer it
|
|
npair_skip_size.cpp: // would require distance calculation for spheres
|
|
npair_skip_size.cpp: // more complex calculation for surfs
|
|
npair_skip_size_off2on.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_size_off2on.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_skip_size_off2on.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_skip_size_off2on.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_size_off2on.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_skip_size_off2on.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_size_off2on.cpp: if list requests it, preserve shear history via fix shear/history
|
|
npair_skip_size_off2on.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_size_off2on.cpp: // loop over atoms in other list
|
|
npair_skip_size_off2on.cpp: // skip I atom entirely if iskip is set for type[I]
|
|
npair_skip_size_off2on.cpp: // skip I,J pair if ijskip is set for type[I],type[J]
|
|
npair_skip_size_off2on.cpp: // loop over parent non-skip size list and optionally its history info
|
|
npair_skip_size_off2on.cpp: // only keep I,J when J = ghost if Itag < Jtag
|
|
npair_skip_size_off2on.cpp: // no numeric test for current touch
|
|
npair_skip_size_off2on.cpp: // just use FSH partner list to infer it
|
|
npair_skip_size_off2on.cpp: // would require distance calculation for spheres
|
|
npair_skip_size_off2on.cpp: // more complex calculation for surfs
|
|
npair_skip_size_off2on_oneside.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_size_off2on_oneside.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
npair_skip_size_off2on_oneside.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
npair_skip_size_off2on_oneside.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_size_off2on_oneside.cpp:/* ---------------------------------------------------------------------- */
|
|
npair_skip_size_off2on_oneside.cpp:/* ----------------------------------------------------------------------
|
|
npair_skip_size_off2on_oneside.cpp: if list requests it, preserve shear history via fix shear/history
|
|
npair_skip_size_off2on_oneside.cpp:------------------------------------------------------------------------- */
|
|
npair_skip_size_off2on_oneside.cpp: // two loops over parent list required, one to count, one to store
|
|
npair_skip_size_off2on_oneside.cpp: // because onesided constraint means pair I,J may be stored with I or J
|
|
npair_skip_size_off2on_oneside.cpp: // so don't know in advance how much space to alloc for each atom's neighs
|
|
npair_skip_size_off2on_oneside.cpp: // first loop over atoms in other list to count neighbors
|
|
npair_skip_size_off2on_oneside.cpp: // skip I atom entirely if iskip is set for type[I]
|
|
npair_skip_size_off2on_oneside.cpp: // skip I,J pair if ijskip is set for type[I],type[J]
|
|
npair_skip_size_off2on_oneside.cpp: // loop over parent non-skip size list
|
|
npair_skip_size_off2on_oneside.cpp: // flip I,J if necessary to satisfy onesided constraint
|
|
npair_skip_size_off2on_oneside.cpp: // do not keep if I is now ghost
|
|
npair_skip_size_off2on_oneside.cpp: // allocate all per-atom neigh list chunks, including history
|
|
npair_skip_size_off2on_oneside.cpp: // second loop over atoms in other list to store neighbors
|
|
npair_skip_size_off2on_oneside.cpp: // skip I atom entirely if iskip is set for type[I]
|
|
npair_skip_size_off2on_oneside.cpp: // skip I,J pair if ijskip is set for type[I],type[J]
|
|
npair_skip_size_off2on_oneside.cpp: // loop over parent non-skip size list and optionally its history info
|
|
npair_skip_size_off2on_oneside.cpp: // flip I,J if necessary to satisfy onesided constraint
|
|
npair_skip_size_off2on_oneside.cpp: // do not keep if I is now ghost
|
|
npair_skip_size_off2on_oneside.cpp: // store j in neigh list, not joriginal, like other neigh methods
|
|
npair_skip_size_off2on_oneside.cpp: // OK, b/c there is no special list flagging for surfs
|
|
npair_skip_size_off2on_oneside.cpp: // no numeric test for current touch
|
|
npair_skip_size_off2on_oneside.cpp: // just use FSH partner list to infer it
|
|
npair_skip_size_off2on_oneside.cpp: // would require complex calculation for surfs
|
|
npair_skip_size_off2on_oneside.cpp: // only add atom I to ilist if it has neighbors
|
|
npair_skip_size_off2on_oneside.cpp: // fix shear/history allows for this in pre_exchange_onesided()
|
|
nstencil.cpp:/* ----------------------------------------------------------------------
|
|
nstencil.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil.cpp:------------------------------------------------------------------------- */
|
|
nstencil.cpp:enum{NSQ,BIN,MULTI}; // also in Neighbor
|
|
nstencil.cpp:/* ----------------------------------------------------------------------
|
|
nstencil.cpp: invoked each time simulation box size/shape changes
|
|
nstencil.cpp: regardless of newton on/off or triclinic
|
|
nstencil.cpp: stencil follows same rules for half/full, newton on/off, triclinic
|
|
nstencil.cpp:------------------------------------------------------------------------- */
|
|
nstencil.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil.cpp:/* ----------------------------------------------------------------------
|
|
nstencil.cpp:------------------------------------------------------------------------- */
|
|
nstencil.cpp: // overwrite Neighbor cutoff with custom value set by requestor
|
|
nstencil.cpp: // only works for style = BIN (checked by Neighbor class)
|
|
nstencil.cpp:/* ----------------------------------------------------------------------
|
|
nstencil.cpp:------------------------------------------------------------------------- */
|
|
nstencil.cpp:/* ----------------------------------------------------------------------
|
|
nstencil.cpp:------------------------------------------------------------------------- */
|
|
nstencil.cpp: // sx,sy,sz = max range of stencil in each dim
|
|
nstencil.cpp: // smax = max possible size of entire 3d stencil
|
|
nstencil.cpp: // stencil will be empty if cutneighmax = 0.0
|
|
nstencil.cpp: // reallocate stencil structs if necessary
|
|
nstencil.cpp: // for BIN and MULTI styles
|
|
nstencil.cpp:/* ----------------------------------------------------------------------
|
|
nstencil.cpp:------------------------------------------------------------------------- */
|
|
nstencil.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_full_bin_2d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_bin_2d.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_full_bin_2d.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_full_bin_2d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_bin_2d.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_full_bin_2d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_bin_2d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_bin_3d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_bin_3d.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_full_bin_3d.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_full_bin_3d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_bin_3d.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_full_bin_3d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_bin_3d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_ghost_bin_2d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_ghost_bin_2d.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_full_ghost_bin_2d.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_full_ghost_bin_2d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_ghost_bin_2d.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_full_ghost_bin_2d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_ghost_bin_2d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_ghost_bin_3d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_ghost_bin_3d.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_full_ghost_bin_3d.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_full_ghost_bin_3d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_ghost_bin_3d.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_full_ghost_bin_3d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_ghost_bin_3d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_multi_2d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_multi_2d.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_full_multi_2d.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_full_multi_2d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_multi_2d.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_full_multi_2d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_multi_2d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_multi_3d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_multi_3d.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_full_multi_3d.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_full_multi_3d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_full_multi_3d.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_full_multi_3d.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_full_multi_3d.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_2d_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_bin_2d_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_bin_2d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_2d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_2d_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_bin_2d_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_bin_2d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_2d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_2d_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_bin_2d_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_bin_2d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_bin_2d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_2d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_3d_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_bin_3d_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_bin_3d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_3d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_3d_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_bin_3d_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_bin_3d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_3d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_3d_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_bin_3d_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_bin_3d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_bin_3d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_bin_3d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_ghost_bin_2d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_ghost_bin_2d_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_ghost_bin_2d_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_ghost_bin_2d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_ghost_bin_2d_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_ghost_bin_2d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_ghost_bin_2d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_ghost_bin_3d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_ghost_bin_3d_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_ghost_bin_3d_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_ghost_bin_3d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_ghost_bin_3d_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_ghost_bin_3d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_ghost_bin_3d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_2d_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_multi_2d_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_multi_2d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_2d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_2d_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_multi_2d_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_multi_2d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_2d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_2d_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_multi_2d_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_multi_2d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_multi_2d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_2d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_3d_newtoff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_multi_3d_newtoff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_multi_3d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newtoff.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newtoff.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_3d_newtoff.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_3d_newton.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_multi_3d_newton.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_multi_3d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newton.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newton.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_3d_newton.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_3d_newton_tri.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
nstencil_half_multi_3d_newton_tri.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
nstencil_half_multi_3d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newton_tri.cpp:/* ---------------------------------------------------------------------- */
|
|
nstencil_half_multi_3d_newton_tri.cpp:/* ----------------------------------------------------------------------
|
|
nstencil_half_multi_3d_newton_tri.cpp:------------------------------------------------------------------------- */
|
|
ntopo_angle_all.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_angle_all.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_angle_all.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_angle_all.cpp:------------------------------------------------------------------------- */
|
|
ntopo_angle_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_angle_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_angle_partial.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_angle_partial.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_angle_partial.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_angle_partial.cpp:------------------------------------------------------------------------- */
|
|
ntopo_angle_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_angle_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_angle_template.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_angle_template.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_angle_template.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_angle_template.cpp:------------------------------------------------------------------------- */
|
|
ntopo_angle_template.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_angle_template.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_bond_all.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_bond_all.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_bond_all.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_bond_all.cpp:------------------------------------------------------------------------- */
|
|
ntopo_bond_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_bond_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_bond_partial.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_bond_partial.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_bond_partial.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_bond_partial.cpp:------------------------------------------------------------------------- */
|
|
ntopo_bond_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_bond_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_bond_template.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_bond_template.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_bond_template.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_bond_template.cpp:------------------------------------------------------------------------- */
|
|
ntopo_bond_template.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_bond_template.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp:/* ----------------------------------------------------------------------
|
|
ntopo.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo.cpp:------------------------------------------------------------------------- */
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp: else maxbond = static_cast<int> (LB_FACTOR * atom->nbonds / nprocs);
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp: else maxangle = static_cast<int> (LB_FACTOR * atom->nangles / nprocs);
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp: else maxdihedral = static_cast<int> (LB_FACTOR * atom->ndihedrals / nprocs);
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp: else maximproper = static_cast<int> (LB_FACTOR * atom->nimpropers / nprocs);
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp: // check all 3 distances
|
|
ntopo.cpp: // in case angle potential computes any of them
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo.cpp: // check all 6 distances
|
|
ntopo.cpp: // in case dihedral/improper potential computes any of them
|
|
ntopo.cpp: error->all(FLERR,"Dihedral/improper extent > half of periodic box length");
|
|
ntopo.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_dihedral_all.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_dihedral_all.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_dihedral_all.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_dihedral_all.cpp:------------------------------------------------------------------------- */
|
|
ntopo_dihedral_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_dihedral_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_dihedral_partial.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_dihedral_partial.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_dihedral_partial.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_dihedral_partial.cpp:------------------------------------------------------------------------- */
|
|
ntopo_dihedral_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_dihedral_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_dihedral_template.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_dihedral_template.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_dihedral_template.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_dihedral_template.cpp:------------------------------------------------------------------------- */
|
|
ntopo_dihedral_template.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_dihedral_template.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_improper_all.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_improper_all.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_improper_all.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_improper_all.cpp:------------------------------------------------------------------------- */
|
|
ntopo_improper_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_improper_all.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_improper_partial.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_improper_partial.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
ntopo_improper_partial.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_improper_partial.cpp:------------------------------------------------------------------------- */
|
|
ntopo_improper_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_improper_partial.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_improper_template.cpp:/* ----------------------------------------------------------------------
|
|
ntopo_improper_template.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Templatel Simulator
|
|
ntopo_improper_template.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
ntopo_improper_template.cpp:------------------------------------------------------------------------- */
|
|
ntopo_improper_template.cpp:/* ---------------------------------------------------------------------- */
|
|
ntopo_improper_template.cpp:/* ---------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
output.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // create default computes for temp,pressure,pe
|
|
output.cpp: // create default Thermo class
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp:/* ---------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp: perform output for setup of run/min
|
|
output.cpp: memflag = 0/1 for printing out memory usage
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // perform dump at start of run only if:
|
|
output.cpp: // current timestep is multiple of every and last dump not >= this step
|
|
output.cpp: // this is first run after dump created and firstflag is set
|
|
output.cpp: // note that variable freq will not write unless triggered by firstflag
|
|
output.cpp: // set next_dump to multiple of every or variable value
|
|
output.cpp: // set next_dump_any to smallest next_dump
|
|
output.cpp: // wrap dumps that invoke computes and variable eval with clear/add
|
|
output.cpp: // if dump not written now, use addstep_compute_all() since don't know
|
|
output.cpp: // what computes the dump write would invoke
|
|
output.cpp: // if no dumps, set next_dump_any to last+1 so will not influence next
|
|
output.cpp: (ntimestep/every_dump[idump])*every_dump[idump] + every_dump[idump];
|
|
output.cpp: // do not write restart files at start of run
|
|
output.cpp: // set next_restart values to multiple of every or variable value
|
|
output.cpp: // wrap variable eval with clear/add
|
|
output.cpp: // if no restarts, set next_restart to last+1 so will not influence next
|
|
output.cpp: (ntimestep/restart_every_single)*restart_every_single +
|
|
output.cpp: (ntimestep/restart_every_double)*restart_every_double +
|
|
output.cpp: // print memory usage unless being called between multiple runs
|
|
output.cpp: // set next_thermo to multiple of every or variable eval if var defined
|
|
output.cpp: // insure thermo output on last step of run
|
|
output.cpp: // thermo may invoke computes so wrap with clear/add
|
|
output.cpp: next_thermo = (ntimestep/thermo_every)*thermo_every + thermo_every;
|
|
output.cpp: // next = next timestep any output will be done
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp: do dump/restart before thermo so thermo CPU time will include them
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // next_dump does not force output on last step of run
|
|
output.cpp: // wrap dumps that invoke computes or eval of variable with clear/add
|
|
output.cpp: // next_restart does not force output on last step of run
|
|
output.cpp: // for toggle = 0, replace "*" with current timestep in restart filename
|
|
output.cpp: // eval of variable may invoke computes so wrap with clear/add
|
|
output.cpp: // insure next_thermo forces output on last step of run
|
|
output.cpp: // thermo may invoke computes so wrap with clear/add
|
|
output.cpp: // next = next timestep any output will be done
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: next_dump[idump] = (ntimestep/every_dump[idump])*every_dump[idump];
|
|
output.cpp: // ivar_dump may not be initialized
|
|
output.cpp: (ntimestep/restart_every_single)*restart_every_single;
|
|
output.cpp: (ntimestep/restart_every_double)*restart_every_double;
|
|
output.cpp: next_thermo = (ntimestep/thermo_every)*thermo_every;
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // error checks
|
|
output.cpp: // extend Dump list if necessary
|
|
output.cpp: // initialize per-dump data to suitable default values
|
|
output.cpp: // create the Dump
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // find which dump it is
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // find which dump it is and delete it
|
|
output.cpp: // move other dumps down in list one slot
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // don't allow this so that dipole style can safely allocate inertia vector
|
|
output.cpp: // warn if previous thermo had been modified via thermo_modify command
|
|
output.cpp: // set thermo = NULL in case new Thermo throws an error
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: // check for multiproc output and an MPI-IO filename
|
|
output.cpp: // if 2 filenames, must be consistent
|
|
output.cpp: // setup output style and process optional args
|
|
output.cpp:/* ----------------------------------------------------------------------
|
|
output.cpp:------------------------------------------------------------------------- */
|
|
output.cpp: double mbytes = bytes/1024.0/1024.0;
|
|
output.cpp: mbavg /= comm->nprocs;
|
|
output.cpp: fprintf(screen,"Per MPI rank memory allocation (min/avg/max) = "
|
|
output.cpp: fprintf(logfile,"Per MPI rank memory allocation (min/avg/max) = "
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_beck.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_beck.cpp: // loop over neighbors of my atoms
|
|
pair_beck.cpp: rinv = 1.0/r;
|
|
pair_beck.cpp: term1inv = 1.0/term1;
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp: // reset cutoffs that have been explicitly set
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ----------------------------------------------------------------------
|
|
pair_beck.cpp:------------------------------------------------------------------------- */
|
|
pair_beck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_beck.cpp: rinv = 1.0/r;
|
|
pair_beck.cpp: term1inv = 1.0/term1;
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_born_coul_dsf.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp: // loop over neighbors of my atoms
|
|
pair_born_coul_dsf.cpp: // self coulombic energy
|
|
pair_born_coul_dsf.cpp: double e_self = -(e_shift/2.0 + alpha/MY_PIS) * qtmp*qtmp*qqrd2e;
|
|
pair_born_coul_dsf.cpp: r2inv = 1.0/rsq;
|
|
pair_born_coul_dsf.cpp: prefactor = qqrd2e*qtmp*q[j]/r;
|
|
pair_born_coul_dsf.cpp: forcecoul = prefactor * (erfcc/r + 2.0*alpha/MY_PIS * erfcd +
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp: error->all(FLERR,"Pair style born/coul/dsf requires atom attribute q");
|
|
pair_born_coul_dsf.cpp: f_shift = -(erfcc/cut_coulsq + 2.0/MY_PIS*alpha*erfcd/cut_coul);
|
|
pair_born_coul_dsf.cpp: e_shift = erfcc/cut_coul - f_shift*cut_coul;
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp: rhoinv[i][j] = 1.0/rho[i][j];
|
|
pair_born_coul_dsf.cpp: born1[i][j] = a[i][j]/rho[i][j];
|
|
pair_born_coul_dsf.cpp: offset[i][j] = a[i][j]*rexp - c[i][j]/pow(cut_lj[i][j],6.0)
|
|
pair_born_coul_dsf.cpp: + d[i][j]/pow(cut_lj[i][j],8.0);
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_dsf.cpp: r2inv = 1.0/rsq;
|
|
pair_born_coul_dsf.cpp: prefactor = factor_coul * force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
|
pair_born_coul_dsf.cpp: forcecoul = prefactor * (erfcc/r + 2.0*alpha/MY_PIS*erfcd +
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_born_coul_wolf.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp: // self and shifted coulombic energy
|
|
pair_born_coul_wolf.cpp: e_shift = erfc(alf*cut_coul)/cut_coul;
|
|
pair_born_coul_wolf.cpp: f_shift = -(e_shift+ 2.0*alf/MY_PIS * exp(-alf*alf*cut_coul*cut_coul)) /
|
|
pair_born_coul_wolf.cpp: // loop over neighbors of my atoms
|
|
pair_born_coul_wolf.cpp: e_self = -(e_shift/2.0 + alf/MY_PIS) * qisq*qqrd2e;
|
|
pair_born_coul_wolf.cpp: r2inv = 1.0/rsq;
|
|
pair_born_coul_wolf.cpp: prefactor = qqrd2e*qtmp*q[j]/r;
|
|
pair_born_coul_wolf.cpp: dvdrr = (erfcc/rsq + 2.0*alf/MY_PIS * erfcd/r) + f_shift;
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp: error->all(FLERR,"Pair style born/coul/wolf requires atom attribute q");
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp: rhoinv[i][j] = 1.0/rho[i][j];
|
|
pair_born_coul_wolf.cpp: born1[i][j] = a[i][j]/rho[i][j];
|
|
pair_born_coul_wolf.cpp: offset[i][j] = a[i][j]*rexp - c[i][j]/pow(cut_lj[i][j],6.0)
|
|
pair_born_coul_wolf.cpp: + d[i][j]/pow(cut_lj[i][j],8.0);
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_born_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_born_coul_wolf.cpp: r2inv = 1.0/rsq;
|
|
pair_born_coul_wolf.cpp: e_shift = erfc(alf*cut_coul) / cut_coul;
|
|
pair_born_coul_wolf.cpp: f_shift = -(e_shift+2*alf/MY_PIS * exp(-alf*alf*cut_coul*cut_coul)) /
|
|
pair_born_coul_wolf.cpp: prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
|
pair_born_coul_wolf.cpp: dvdrr = (erfcc/rsq + 2.0*alf/MY_PIS * erfcd/r) + f_shift;
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_born.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born.cpp: // loop over neighbors of my atoms
|
|
pair_born.cpp: r2inv = 1.0/rsq;
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp: // reset cutoffs that have been explicitly set
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp: rhoinv[i][j] = 1.0/rho[i][j];
|
|
pair_born.cpp: born1[i][j] = a[i][j]/rho[i][j];
|
|
pair_born.cpp: offset[i][j] = a[i][j]*rexp - c[i][j]/pow(cut[i][j],6.0) +
|
|
pair_born.cpp: d[i][j]/pow(cut[i][j],8.0);
|
|
pair_born.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_born.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_born.cpp: (a[i][j]*exp((sigma[i][j]-rc)/rho1)*rho1*
|
|
pair_born.cpp: c[i][j]/(3.0*rc3) + d[i][j]/(5.0*rc5));
|
|
pair_born.cpp: ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1] *
|
|
pair_born.cpp: (-a[i][j]*exp((sigma[i][j]-rc)/rho1) *
|
|
pair_born.cpp: 2.0*c[i][j]/rc3 - 8.0*d[i][j]/(5.0*rc5));
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ----------------------------------------------------------------------
|
|
pair_born.cpp:------------------------------------------------------------------------- */
|
|
pair_born.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_born.cpp: r2inv = 1.0/rsq;
|
|
pair_born.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_buck_coul_cut.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp: // loop over neighbors of my atoms
|
|
pair_buck_coul_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_buck_coul_cut.cpp: forcecoul = qqrd2e * qtmp*q[j]/r;
|
|
pair_buck_coul_cut.cpp: ecoul = factor_coul * qqrd2e * qtmp*q[j]/r;
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp: // reset cutoffs that have been explicitly set
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp: error->all(FLERR,"Pair style buck/coul/cut requires atom attribute q");
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp: rhoinv[i][j] = 1.0/rho[i][j];
|
|
pair_buck_coul_cut.cpp: buck1[i][j] = a[i][j]/rho[i][j];
|
|
pair_buck_coul_cut.cpp: double rexp = exp(-cut_lj[i][j]/rho[i][j]);
|
|
pair_buck_coul_cut.cpp: offset[i][j] = a[i][j]*rexp - c[i][j]/pow(cut_lj[i][j],6.0);
|
|
pair_buck_coul_cut.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_buck_coul_cut.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_buck_coul_cut.cpp: (a[i][j]*exp(-rc/rho1)*rho1*(rc2 + 2.0*rho1*rc + 2.0*rho2) -
|
|
pair_buck_coul_cut.cpp: c[i][j]/(3.0*rc3));
|
|
pair_buck_coul_cut.cpp: ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1]*
|
|
pair_buck_coul_cut.cpp: (-a[i][j]*exp(-rc/rho1)*
|
|
pair_buck_coul_cut.cpp: (rc3 + 3.0*rho1*rc2 + 6.0*rho2*rc + 6.0*rho3) + 2.0*c[i][j]/rc3);
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck_coul_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_buck.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck.cpp: // loop over neighbors of my atoms
|
|
pair_buck.cpp: r2inv = 1.0/rsq;
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp: // reset cutoffs that have been explicitly set
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp: rhoinv[i][j] = 1.0/rho[i][j];
|
|
pair_buck.cpp: buck1[i][j] = a[i][j]/rho[i][j];
|
|
pair_buck.cpp: double rexp = exp(-cut[i][j]/rho[i][j]);
|
|
pair_buck.cpp: offset[i][j] = a[i][j]*rexp - c[i][j]/pow(cut[i][j],6.0);
|
|
pair_buck.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_buck.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_buck.cpp: (a[i][j]*exp(-rc/rho1)*rho1*(rc2 + 2.0*rho1*rc + 2.0*rho2) -
|
|
pair_buck.cpp: c[i][j]/(3.0*rc3));
|
|
pair_buck.cpp: ptail_ij = (-1/3.0)*2.0*MY_PI*all[0]*all[1]*
|
|
pair_buck.cpp: (-a[i][j]*exp(-rc/rho1)*
|
|
pair_buck.cpp: (rc3 + 3.0*rho1*rc2 + 6.0*rho2*rc + 6.0*rho3) + 2.0*c[i][j]/rc3);
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ----------------------------------------------------------------------
|
|
pair_buck.cpp:------------------------------------------------------------------------- */
|
|
pair_buck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_buck.cpp: r2inv = 1.0/rsq;
|
|
pair_buck.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_coul_cut.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp: // loop over neighbors of my atoms
|
|
pair_coul_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp: // reset cutoffs that have been explicitly set
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp: error->all(FLERR,"Pair style coul/cut requires atom attribute q");
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_debye.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_coul_debye.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp: // loop over neighbors of my atoms
|
|
pair_coul_debye.cpp: r2inv = 1.0/rsq;
|
|
pair_coul_debye.cpp: rinv = 1.0/r;
|
|
pair_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp: // reset cutoffs that have been explicitly set
|
|
pair_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_debye.cpp: r2inv = 1.0/rsq;
|
|
pair_coul_debye.cpp: rinv = 1.0/r;
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_coul_dsf.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp: // loop over neighbors of my atoms
|
|
pair_coul_dsf.cpp: double e_self = -(e_shift/2.0 + alpha/MY_PIS) * qtmp*qtmp*qqrd2e;
|
|
pair_coul_dsf.cpp: r2inv = 1.0/rsq;
|
|
pair_coul_dsf.cpp: prefactor = qqrd2e*qtmp*q[j]/r;
|
|
pair_coul_dsf.cpp: t = 1.0 / (1.0 + EWALD_P*alpha*r);
|
|
pair_coul_dsf.cpp: forcecoul = prefactor * (erfcc/r + 2.0*alpha/MY_PIS * erfcd +
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp: error->all(FLERR,"Pair style coul/dsf requires atom attribute q");
|
|
pair_coul_dsf.cpp: f_shift = -(erfcc/cut_coulsq + 2.0/MY_PIS*alpha*erfcd/cut_coul);
|
|
pair_coul_dsf.cpp: e_shift = erfcc/cut_coul - f_shift*cut_coul;
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_dsf.cpp: r2inv = 1.0/rsq;
|
|
pair_coul_dsf.cpp: prefactor = factor_coul * force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
|
pair_coul_dsf.cpp: t = 1.0 / (1.0 + EWALD_P*alpha*r);
|
|
pair_coul_dsf.cpp: forcecoul = prefactor * (erfcc/r + 2.0*alpha/MY_PIS*erfcd +
|
|
pair_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_coul_streitz.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: // insure I,J args are * *
|
|
pair_coul_streitz.cpp: // read args that map atom types to elements in potential file
|
|
pair_coul_streitz.cpp: // map[i] = which element the Ith atom type is, -1 if NULL
|
|
pair_coul_streitz.cpp: // nelements = # of unique elements
|
|
pair_coul_streitz.cpp: // elements = list of element names
|
|
pair_coul_streitz.cpp: // read potential file and initialize potential parameters
|
|
pair_coul_streitz.cpp: // clear setflag since coeff() called once with I,J = * *
|
|
pair_coul_streitz.cpp: // set setflag i,j for type pairs where both are mapped to elements
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: error->all(FLERR,"Pair style coul/streitz requires atom attribute q");
|
|
pair_coul_streitz.cpp: // insure use of KSpace long-range solver when ewald specified, set g_ewald
|
|
pair_coul_streitz.cpp: // ptr to QEQ fix
|
|
pair_coul_streitz.cpp: //for (i = 0; i < modify->nfix; i++)
|
|
pair_coul_streitz.cpp: // if (strcmp(modify->fix[i]->style,"qeq") == 0) break;
|
|
pair_coul_streitz.cpp: //if (i < modify->nfix) fixqeq = (FixQEQ *) modify->fix[i];
|
|
pair_coul_streitz.cpp: //else fixqeq = NULL;
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: // open file on proc 0
|
|
pair_coul_streitz.cpp: sprintf(str,"Cannot open coul/streitz potential file %s",file);
|
|
pair_coul_streitz.cpp: // read each line out of file, skipping blank lines or leading '#'
|
|
pair_coul_streitz.cpp: // store line of params if all 3 element tags are in element list
|
|
pair_coul_streitz.cpp: // strip comment, skip line if blank
|
|
pair_coul_streitz.cpp: // concatenate additional lines until have params_per_line words
|
|
pair_coul_streitz.cpp: error->all(FLERR,"Incorrect format in coul/streitz potential file");
|
|
pair_coul_streitz.cpp: // words = ptrs to all words in line
|
|
pair_coul_streitz.cpp: // ielement = 1st args
|
|
pair_coul_streitz.cpp: // load up parameter settings and error check their values
|
|
pair_coul_streitz.cpp: // parameter sanity check
|
|
pair_coul_streitz.cpp: error->all(FLERR,"Illegal coul/streitz parameter");
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: // set elem2param
|
|
pair_coul_streitz.cpp: // Wolf sum self energy
|
|
pair_coul_streitz.cpp: woself = 0.50*erfc(ar)/r + a/MY_PIS; // kc constant not yet multiplied
|
|
pair_coul_streitz.cpp: dwoself = -(erfc(ar)/r/r + 2.0*a/MY_PIS*exp(-ar*ar)/r);
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: // Wolf sum
|
|
pair_coul_streitz.cpp: // self energy: ionization + wolf sum
|
|
pair_coul_streitz.cpp: // two-body interaction
|
|
pair_coul_streitz.cpp: // Streitz-Mintmire Coulomb integrals
|
|
pair_coul_streitz.cpp: // Wolf Sum
|
|
pair_coul_streitz.cpp: // Forces
|
|
pair_coul_streitz.cpp: fpair = -forcecoul / r;
|
|
pair_coul_streitz.cpp: // Ewald Sum
|
|
pair_coul_streitz.cpp: // self ionizition energy, only on i atom
|
|
pair_coul_streitz.cpp: // two-body interaction
|
|
pair_coul_streitz.cpp: // Streitz-Mintmire Coulomb integrals
|
|
pair_coul_streitz.cpp: // Ewald: real-space
|
|
pair_coul_streitz.cpp: // Forces
|
|
pair_coul_streitz.cpp: fpair = -forcecoul / r;
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: double rinv = 1.0/r;
|
|
pair_coul_streitz.cpp: double sm1 = 11.0/8.0;
|
|
pair_coul_streitz.cpp: double sm2 = 3.00/4.0;
|
|
pair_coul_streitz.cpp: double sm3 = 1.00/6.0;
|
|
pair_coul_streitz.cpp: double rcinv = 1.0/rc;
|
|
pair_coul_streitz.cpp: (2.0 + 7.0/6.0*zei*rc + 1.0/3.0*zei2*rc*rc));
|
|
pair_coul_streitz.cpp: (2.0 + 7.0/6.0*zei*r + 1.0/3.0*zei2*r*r)) - fshift;
|
|
pair_coul_streitz.cpp: e1 = zei*zej4/((zei+zej)*(zei+zej)*(zei-zej)*(zei-zej));
|
|
pair_coul_streitz.cpp: e2 = zej*zei4/((zei+zej)*(zei+zej)*(zej-zei)*(zej-zei));
|
|
pair_coul_streitz.cpp: e3 = (3.0*zei2*zej4-zej6) /
|
|
pair_coul_streitz.cpp: e4 = (3.0*zej2*zei4-zei6) /
|
|
pair_coul_streitz.cpp: eshift = -exp2zirsh*(e1+e3/rc) - exp2zjrsh*(e2+e4/rc);
|
|
pair_coul_streitz.cpp: fshift = (exp2zirsh*(2.0*zei*(e1+e3/rc) + e3*rcinv2)
|
|
pair_coul_streitz.cpp: + exp2zjrsh*(2.0*zej*(e2+e4/rc) + e4*rcinv2));
|
|
pair_coul_streitz.cpp: ci_fifj = -exp2zir*(e1+e3/r) - exp2zjr*(e2+e4/r)
|
|
pair_coul_streitz.cpp: dci_fifj = (exp2zir*(2.0*zei*(e1+e3/r) + e3*rinv2) +
|
|
pair_coul_streitz.cpp: exp2zjr*(2.0*zej*(e2+e4/r) + e4*rinv2)) - fshift;
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: etmp1 = erfcr/r - erfcrc/rc;
|
|
pair_coul_streitz.cpp: ftmp1 = -erfcr/r/r - 2.0*a/MY_PIS*derfcr/r - dwoself;
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: double rinv = 1.0/r;
|
|
pair_coul_streitz.cpp: double sm1 = 11.0/8.0;
|
|
pair_coul_streitz.cpp: double sm2 = 3.00/4.0;
|
|
pair_coul_streitz.cpp: double sm3 = 1.00/6.0;
|
|
pair_coul_streitz.cpp: zei2*(2.0 + 7.0/6.0*zei*r + 1.0/3.0*zei2*r*r));
|
|
pair_coul_streitz.cpp: e1 = zei*zej4/((zei+zej)*(zei+zej)*(zei-zej)*(zei-zej));
|
|
pair_coul_streitz.cpp: e2 = zej*zei4/((zei+zej)*(zei+zej)*(zej-zei)*(zej-zei));
|
|
pair_coul_streitz.cpp: e3 = (3.0*zei2*zej4-zej6) /
|
|
pair_coul_streitz.cpp: e4 = (3.0*zej2*zei4-zei6) /
|
|
pair_coul_streitz.cpp: ci_fifj = -exp2zir*(e1+e3/r) - exp2zjr*(e2+e4/r);
|
|
pair_coul_streitz.cpp: dci_fifj = (exp2zir*(2.0*zei*(e1+e3/r) + e3*rinv2)
|
|
pair_coul_streitz.cpp: + exp2zjr*(2.0*zej*(e2+e4/r) + e4*rinv2));
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp: etmp4 = qqrd2e * 0.50*qi*qj/r;
|
|
pair_coul_streitz.cpp: ftmp4 = etmp4 * (erfcr + 2.0/MY_PIS*a*r*derfcr);
|
|
pair_coul_streitz.cpp: ftmp = ftmp3 - ftmp4/r;
|
|
pair_coul_streitz.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_streitz.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_streitz.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_coul_wolf.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp: single_enable = 0; // NOTE: single() method below is not yet correct
|
|
pair_coul_wolf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp: // self and shifted coulombic energy
|
|
pair_coul_wolf.cpp: e_shift = erfc(alf*cut_coul)/cut_coul;
|
|
pair_coul_wolf.cpp: f_shift = -(e_shift+ 2.0*alf/MY_PIS * exp(-alf*alf*cut_coul*cut_coul)) /
|
|
pair_coul_wolf.cpp: // loop over neighbors of my atoms
|
|
pair_coul_wolf.cpp: e_self = -(e_shift/2.0 + alf/MY_PIS) * qisq*qqrd2e;
|
|
pair_coul_wolf.cpp: prefactor = qqrd2e*qtmp*q[j]/r;
|
|
pair_coul_wolf.cpp: dvdrr = (erfcc/rsq + 2.0*alf/MY_PIS * erfcd/r) + f_shift;
|
|
pair_coul_wolf.cpp: fpair = forcecoul / rsq;
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp: error->all(FLERR,"Pair coul/wolf requires atom attribute q");
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp:/* ----------------------------------------------------------------------
|
|
pair_coul_wolf.cpp:------------------------------------------------------------------------- */
|
|
pair_coul_wolf.cpp: e_shift = erfc(alf*cut_coul) / cut_coul;
|
|
pair_coul_wolf.cpp: f_shift = -(e_shift+ 2.0*alf/MY_PIS * exp(-alf*alf*cut_coul*cut_coul)) /
|
|
pair_coul_wolf.cpp: prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
|
pair_coul_wolf.cpp: dvdrr = (erfcc/rsq + 2.0*alf/MY_PIS * erfcd/r) + f_shift;
|
|
pair_coul_wolf.cpp: fforce = forcecoul / rsq;
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:// allocate space for static class instance variable and initialize it
|
|
pair.cpp:/* ---------------------------------------------------------------------- */
|
|
pair.cpp: // pair_modify settingsx
|
|
pair.cpp: // KOKKOS per-fix data masks
|
|
pair.cpp:/* ---------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: } else if (strcmp(arg[iarg],"table/disp") == 0) {
|
|
pair.cpp: } else if (strcmp(arg[iarg],"tabinner/disp") == 0) {
|
|
pair.cpp:/* ---------------------------------------------------------------------- */
|
|
pair.cpp: // for manybody potentials
|
|
pair.cpp: // check if bonded exclusions could invalidate the neighbor list
|
|
pair.cpp: "bonds/angles/dihedrals and special_bond exclusions");
|
|
pair.cpp: // I,I coeffs must be set
|
|
pair.cpp: // init_one() will check if I,J is set explicitly or inferred by mixing
|
|
pair.cpp: // style-specific initialization
|
|
pair.cpp: // call init_one() for each I,J
|
|
pair.cpp: // set cutsq for each I,J, used to neighbor
|
|
pair.cpp: // cutforce = max of all I,J cutoffs
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: // generalize this error message if reinit() is used by more than fix adapt
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: // linear lookup tables of length N = 2^ncoultablebits
|
|
pair.cpp: // stored value = value at lower edge of bin
|
|
pair.cpp: // d values = delta from lower edge to upper edge of bin
|
|
pair.cpp: egamma = 1.0 - (r/cut_coul)*force->kspace->gamma(r/cut_coul);
|
|
pair.cpp: fgamma = 1.0 + (rsq_lookup.f/cut_coulsq)*
|
|
pair.cpp: force->kspace->dgamma(r/cut_coul);
|
|
pair.cpp: ctable[i] = qqrd2e/r;
|
|
pair.cpp: ftable[i] = qqrd2e/r * fgamma;
|
|
pair.cpp: etable[i] = qqrd2e/r * egamma;
|
|
pair.cpp: ftable[i] = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2);
|
|
pair.cpp: etable[i] = qqrd2e/r * derfc;
|
|
pair.cpp: ptable[i] = qqrd2e/r;
|
|
pair.cpp: ftable[i] = qqrd2e/r * (fgamma - 1.0);
|
|
pair.cpp: etable[i] = qqrd2e/r * egamma;
|
|
pair.cpp: vtable[i] = qqrd2e/r * fgamma;
|
|
pair.cpp: ftable[i] = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2 - 1.0);
|
|
pair.cpp: etable[i] = qqrd2e/r * derfc;
|
|
pair.cpp: vtable[i] = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2);
|
|
pair.cpp: rsw = (r - cut_respa[2])/(cut_respa[3] - cut_respa[2]);
|
|
pair.cpp: ftable[i] += qqrd2e/r * rsw*rsw*(3.0 - 2.0*rsw);
|
|
pair.cpp: ctable[i] = qqrd2e/r * rsw*rsw*(3.0 - 2.0*rsw);
|
|
pair.cpp: if (msmflag) ftable[i] = qqrd2e/r * fgamma;
|
|
pair.cpp: else ftable[i] = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2);
|
|
pair.cpp: ctable[i] = qqrd2e/r;
|
|
pair.cpp: drtable[i] = 1.0/(rtable[i+1] - rtable[i]);
|
|
pair.cpp: // get the delta values for the last table entries
|
|
pair.cpp: // tables are connected periodically between 0 and ntablem1
|
|
pair.cpp: drtable[ntablem1] = 1.0/(rtable[0] - rtable[ntablem1]);
|
|
pair.cpp: // get the correct delta values at itablemax
|
|
pair.cpp: // smallest r is in bin itablemin
|
|
pair.cpp: // largest r is in bin itablemax, which is itablemin-1,
|
|
pair.cpp: // or ntablem1 if itablemin=0
|
|
pair.cpp: // deltas at itablemax only needed if corresponding rsq < cut*cut
|
|
pair.cpp: // if so, compute deltas between rsq and cut*cut
|
|
pair.cpp: egamma = 1.0 - (r/cut_coul)*force->kspace->gamma(r/cut_coul);
|
|
pair.cpp: fgamma = 1.0 + (rsq_lookup.f/cut_coulsq)*
|
|
pair.cpp: force->kspace->dgamma(r/cut_coul);
|
|
pair.cpp: c_tmp = qqrd2e/r;
|
|
pair.cpp: f_tmp = qqrd2e/r * fgamma;
|
|
pair.cpp: e_tmp = qqrd2e/r * egamma;
|
|
pair.cpp: f_tmp = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2);
|
|
pair.cpp: e_tmp = qqrd2e/r * derfc;
|
|
pair.cpp: p_tmp = qqrd2e/r;
|
|
pair.cpp: f_tmp = qqrd2e/r * (fgamma - 1.0);
|
|
pair.cpp: e_tmp = qqrd2e/r * egamma;
|
|
pair.cpp: v_tmp = qqrd2e/r * fgamma;
|
|
pair.cpp: f_tmp = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2 - 1.0);
|
|
pair.cpp: e_tmp = qqrd2e/r * derfc;
|
|
pair.cpp: v_tmp = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2);
|
|
pair.cpp: rsw = (r - cut_respa[2])/(cut_respa[3] - cut_respa[2]);
|
|
pair.cpp: f_tmp += qqrd2e/r * rsw*rsw*(3.0 - 2.0*rsw);
|
|
pair.cpp: c_tmp = qqrd2e/r * rsw*rsw*(3.0 - 2.0*rsw);
|
|
pair.cpp: if (msmflag) f_tmp = qqrd2e/r * fgamma;
|
|
pair.cpp: else f_tmp = qqrd2e/r * (derfc + MY_ISPI4*grij*expm2);
|
|
pair.cpp: c_tmp = qqrd2e/r;
|
|
pair.cpp: drtable[itablemax] = 1.0/(rsq_lookup.f - rtable[itablemax]);
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: ------------------------------------------------------------------------- */
|
|
pair.cpp: // linear lookup tables of length N = 2^ndisptablebits
|
|
pair.cpp: // stored value = value at lower edge of bin
|
|
pair.cpp: // d values = delta from lower edge to upper edge of bin
|
|
pair.cpp: register double x2 = g2*rsq, a2 = 1.0/x2;
|
|
pair.cpp: drdisptable[i] = 1.0/(rdisptable[i+1] - rdisptable[i]);
|
|
pair.cpp: // get the delta values for the last table entries
|
|
pair.cpp: // tables are connected periodically between 0 and ntablem1
|
|
pair.cpp: drdisptable[ntablem1] = 1.0/(rdisptable[0] - rdisptable[ntablem1]);
|
|
pair.cpp: // get the correct delta values at itablemax
|
|
pair.cpp: // smallest r is in bin itablemin
|
|
pair.cpp: // largest r is in bin itablemax, which is itablemin-1,
|
|
pair.cpp: // or ntablem1 if itablemin=0
|
|
pair.cpp: // deltas at itablemax only needed if corresponding rsq < cut*cut
|
|
pair.cpp: // if so, compute deltas between rsq and cut*cut
|
|
pair.cpp: register double x2 = g2*rsq, a2 = 1.0/x2;
|
|
pair.cpp: drdisptable[itablemax] = 1.0/(rsq_lookup.f - rdisptable[itablemax]);
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: ------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: pow(sig1,3.0) * pow(sig2,3.0) / (pow(sig1,6.0) + pow(sig2,6.0)));
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: return pow((0.5 * (pow(sig1,6.0) + pow(sig2,6.0))),1.0/6.0);
|
|
pair.cpp:/* ---------------------------------------------------------------------- */
|
|
pair.cpp:/* -------------------------------------------------------------------
|
|
pair.cpp:---------------------------------------------------------------------- */
|
|
pair.cpp:/* -------------------------------------------------------------------
|
|
pair.cpp:---------------------------------------------------------------------- */
|
|
pair.cpp: // compact the list of active computes
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: eflag_atom = eflag / 2;
|
|
pair.cpp: vflag_atom = vflag / 4;
|
|
pair.cpp: // reallocate per-atom arrays if necessary
|
|
pair.cpp: // zero accumulators
|
|
pair.cpp: // use force->newton instead of newton_pair
|
|
pair.cpp: // b/c some bonds/dihedrals call pair::ev_tally with pairwise info
|
|
pair.cpp: // if vflag_global = 2 and pair::compute() calls virial_fdotr_compute()
|
|
pair.cpp: // compute global virial via (F dot r) instead of via pairwise summation
|
|
pair.cpp: // unset other flags as appropriate
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: ------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: ------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: ------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: called by REAX/C potential, newton_pair is always on
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: // sum over force on all particles including ghosts
|
|
pair.cpp: // neighbor includegroup flag is set
|
|
pair.cpp: // sum over force on initial nfirst particles and ghosts
|
|
pair.cpp: // prevent multiple calls to update the virial
|
|
pair.cpp: // when a hybrid pair style uses both a gpu and non-gpu pair style
|
|
pair.cpp: // or when respa is used with gpu pair styles
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp: write a table of pair potential energy/force vs distance to a file
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: // parse arguments
|
|
pair.cpp: // open file in append mode
|
|
pair.cpp: // print header in format used by pair_style table
|
|
pair.cpp: // initialize potentials before evaluating pair potential
|
|
pair.cpp: // insures all pair coeffs are set and force constants
|
|
pair.cpp: // also initialize neighbor so that neighbor requests are processed
|
|
pair.cpp: // NOTE: might be safest to just do lmp->init()
|
|
pair.cpp: // if pair style = any of EAM, swap in dummy fp vector
|
|
pair.cpp: // if atom style defines charge, swap in dummy q vec
|
|
pair.cpp: // evaluate energy and force at each of N distances
|
|
pair.cpp: r = inner + (outer-inner) * i/(n-1);
|
|
pair.cpp: rsq = inner*inner + (outer*outer - inner*inner) * i/(n-1);
|
|
pair.cpp: // restore original vecs that were swapped in for
|
|
pair.cpp:/* ----------------------------------------------------------------------
|
|
pair.cpp:------------------------------------------------------------------------- */
|
|
pair.cpp: error->all(FLERR,"Bitmapped lookup tables require int/float be same size");
|
|
pair.cpp: double required_range = outer*outer / pow(double(2),(double)nlowermin);
|
|
pair.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_dpd.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_dpd.cpp: double dtinvsqrt = 1.0/sqrt(update->dt);
|
|
pair_dpd.cpp: // loop over neighbors of my atoms
|
|
pair_dpd.cpp: if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
|
pair_dpd.cpp: rinv = 1.0/r;
|
|
pair_dpd.cpp: wd = 1.0 - r/cut[itype][jtype];
|
|
pair_dpd.cpp: // conservative force = a0 * wd
|
|
pair_dpd.cpp: // drag force = -gamma * wd^2 * (delx dot delv) / r
|
|
pair_dpd.cpp: // random force = sigma * wd * rnd * dtinvsqrt;
|
|
pair_dpd.cpp: // unshifted eng of conservative term:
|
|
pair_dpd.cpp: // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
|
pair_dpd.cpp: // eng shifted to 0.0 at cutoff
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp: // initialize Marsaglia RNG with processor-unique seed
|
|
pair_dpd.cpp: // reset cutoffs that have been explicitly set
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp: // if newton off, forces between atoms ij will be double computed
|
|
pair_dpd.cpp: // using different random numbers
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp: // initialize Marsaglia RNG with processor-unique seed
|
|
pair_dpd.cpp: // same seed that pair_style command initially specified
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_dpd.cpp: rinv = 1.0/r;
|
|
pair_dpd.cpp: wd = 1.0 - r/cut[itype][jtype];
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_dpd_tstat.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp: // adjust sigma if target T is changing
|
|
pair_dpd_tstat.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
pair_dpd_tstat.cpp: double dtinvsqrt = 1.0/sqrt(update->dt);
|
|
pair_dpd_tstat.cpp: // loop over neighbors of my atoms
|
|
pair_dpd_tstat.cpp: if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
|
pair_dpd_tstat.cpp: rinv = 1.0/r;
|
|
pair_dpd_tstat.cpp: wd = 1.0 - r/cut[itype][jtype];
|
|
pair_dpd_tstat.cpp: // drag force = -gamma * wd^2 * (delx dot delv) / r
|
|
pair_dpd_tstat.cpp: // random force = sigma * wd * rnd * dtinvsqrt;
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp: // initialize Marsaglia RNG with processor-unique seed
|
|
pair_dpd_tstat.cpp: // reset cutoffs that have been explicitly set
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp: // initialize Marsaglia RNG with processor-unique seed
|
|
pair_dpd_tstat.cpp: // same seed that pair_style command initially specified
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_dpd_tstat.cpp:/* ----------------------------------------------------------------------
|
|
pair_dpd_tstat.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_gauss.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_gauss.cpp: // loop over neighbors of my atoms
|
|
pair_gauss.cpp: // define a Gaussian well to be occupied if
|
|
pair_gauss.cpp: // the site it interacts with is within the force maximum
|
|
pair_gauss.cpp: if (eflag_global && rsq < 0.5/b[itype][jtype]) occ++;
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp: // reset cutoffs that have been explicitly set
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp: double si = sqrt(0.5/fabs(b[i][i]));
|
|
pair_gauss.cpp: double sj = sqrt(0.5/fabs(b[j][j]));
|
|
pair_gauss.cpp: b[i][j] = 0.5 / (sij*sij);
|
|
pair_gauss.cpp: // Negative "a" values are useful for simulating repulsive particles.
|
|
pair_gauss.cpp: // If either of the particles is repulsive (a<0), then the
|
|
pair_gauss.cpp: // interaction between both is repulsive.
|
|
pair_gauss.cpp: // cutoff correction to energy
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ----------------------------------------------------------------------
|
|
pair_gauss.cpp:------------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_gauss.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_hybrid.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp: accumulate sub-style global/peratom energy/virial in hybrid
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // if no_virial_fdotr_compute is set and global component of
|
|
pair_hybrid.cpp: // incoming vflag = 2, then
|
|
pair_hybrid.cpp: // reset vflag as if global component were 1
|
|
pair_hybrid.cpp: // necessary since one or more sub-styles cannot compute virial as F dot r
|
|
pair_hybrid.cpp: if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4;
|
|
pair_hybrid.cpp: // check if global component of incoming vflag = 2
|
|
pair_hybrid.cpp: // if so, reset vflag passed to substyle as if it were 0
|
|
pair_hybrid.cpp: // necessary so substyle will not invoke virial_fdotr_compute()
|
|
pair_hybrid.cpp: if (vflag % 4 == 2) vflag_substyle = vflag/4 * 4;
|
|
pair_hybrid.cpp: // check if we are running with r-RESPA using the hybrid keyword
|
|
pair_hybrid.cpp: // invoke compute() unless compute flag is turned off or
|
|
pair_hybrid.cpp: // outerflag is set and sub-style has a compute_outer() method
|
|
pair_hybrid.cpp: // jump to next sub-style if r-RESPA does not want global accumulated data
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // delete old lists, since cannot just change settings
|
|
pair_hybrid.cpp: // allocate list of sub-styles as big as possibly needed if no extra args
|
|
pair_hybrid.cpp: // allocate each sub-style
|
|
pair_hybrid.cpp: // allocate uses suffix, but don't store suffix version in keywords,
|
|
pair_hybrid.cpp: // else syntax in coeff() will not match
|
|
pair_hybrid.cpp: // call settings() with set of args that are not pair style names
|
|
pair_hybrid.cpp: // use force->pair_map to determine which args these are
|
|
pair_hybrid.cpp: // multiple[i] = 1 to M if sub-style used multiple times, else 0
|
|
pair_hybrid.cpp: // set pair flags from sub-style flags
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // set comm_forward, comm_reverse, comm_reverse_off to max of any sub-style
|
|
pair_hybrid.cpp: // single_enable = 1 if any sub-style is set
|
|
pair_hybrid.cpp: // respa_enable = 1 if any sub-style is set
|
|
pair_hybrid.cpp: // manybody_flag = 1 if any sub-style is set
|
|
pair_hybrid.cpp: // no_virial_fdotr_compute = 1 if any sub-style is set
|
|
pair_hybrid.cpp: // ghostneigh = 1 if any sub-style is set
|
|
pair_hybrid.cpp: // ewaldflag, pppmflag, msmflag, dipoleflag, dispersionflag, tip4pflag = 1
|
|
pair_hybrid.cpp: // if any sub-style is set
|
|
pair_hybrid.cpp: // compute_flag = 1 if any sub-style is set
|
|
pair_hybrid.cpp: // single_extra = min of all sub-style single_extra
|
|
pair_hybrid.cpp: // allocate svector
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // 3rd arg = pair sub-style name
|
|
pair_hybrid.cpp: // 4th arg = pair sub-style index if name used multiple times
|
|
pair_hybrid.cpp: // allow for "none" as valid sub-style name
|
|
pair_hybrid.cpp: // move 1st/2nd args to 2nd/3rd args
|
|
pair_hybrid.cpp: // if multflag: move 1st/2nd args to 3rd/4th args
|
|
pair_hybrid.cpp: // just copy ptrs, since arg[] points into original input line
|
|
pair_hybrid.cpp: // invoke sub-style coeff() starting with 1st remaining arg
|
|
pair_hybrid.cpp: // if sub-style only allows one pair coeff call (with * * and type mapping)
|
|
pair_hybrid.cpp: // then unset setflag/map assigned to that style before setting it below
|
|
pair_hybrid.cpp: // in case pair coeff for this sub-style is being called for 2nd time
|
|
pair_hybrid.cpp: // set setflag and which type pairs map to which sub-style
|
|
pair_hybrid.cpp: // if sub-style is none: set hybrid setflag, wipe out map
|
|
pair_hybrid.cpp: // else: set hybrid setflag & map only if substyle setflag is set
|
|
pair_hybrid.cpp: // previous mappings are wiped out
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // error if a sub-style is not used
|
|
pair_hybrid.cpp: // check if special_lj/special_coul overrides are compatible
|
|
pair_hybrid.cpp: // each sub-style makes its neighbor list request(s)
|
|
pair_hybrid.cpp: // create skip lists inside each pair neigh request
|
|
pair_hybrid.cpp: // any kind of list can have its skip flag set in this loop
|
|
pair_hybrid.cpp: // istyle = associated sub-style for the request
|
|
pair_hybrid.cpp: // allocate iskip and ijskip
|
|
pair_hybrid.cpp: // initialize so as to skip all pair types
|
|
pair_hybrid.cpp: // set ijskip = 0 if type pair matches any entry in sub-style map
|
|
pair_hybrid.cpp: // set ijskip = 0 if mixing will assign type pair to this sub-style
|
|
pair_hybrid.cpp: // will occur if type pair is currently unassigned
|
|
pair_hybrid.cpp: // and both I,I and J,J are assigned to single sub-style
|
|
pair_hybrid.cpp: // and sub-style for both I,I and J,J match istyle
|
|
pair_hybrid.cpp: // set iskip = 1 only if all ijskip for itype are 1
|
|
pair_hybrid.cpp: // if any skipping occurs
|
|
pair_hybrid.cpp: // set request->skip and copy iskip and ijskip into request
|
|
pair_hybrid.cpp: // else delete iskip and ijskip
|
|
pair_hybrid.cpp: // no skipping if pair style assigned to all type pairs
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // if I,J is not set explicitly:
|
|
pair_hybrid.cpp: // perform mixing only if I,I sub-style = J,J sub-style
|
|
pair_hybrid.cpp: // also require I,I and J,J are both assigned to single sub-style
|
|
pair_hybrid.cpp: // call init/mixing for all sub-styles of I,J
|
|
pair_hybrid.cpp: // set cutsq in sub-style just as Pair::init() does via call to init_one()
|
|
pair_hybrid.cpp: // set cutghost for I,J and J,I just as sub-style does
|
|
pair_hybrid.cpp: // sum tail corrections for I,J
|
|
pair_hybrid.cpp: // return max cutoff of all sub-styles assigned to I,J
|
|
pair_hybrid.cpp: // if no sub-styles assigned to I,J (pair_coeff none), cutmax = 0.0 returned
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // each sub-style writes its settings, but no coeff info
|
|
pair_hybrid.cpp: // write out per style special settings, if present
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // allocate list of sub-styles
|
|
pair_hybrid.cpp: // each sub-style is created via new_pair()
|
|
pair_hybrid.cpp: // each reads its settings, but no coeff info
|
|
pair_hybrid.cpp: // read back per style special settings, if present
|
|
pair_hybrid.cpp: // multiple[i] = 1 to M if sub-style used multiple times, else 0
|
|
pair_hybrid.cpp: // set pair flags from sub-style flags
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // copy substyle extra values into hybrid's svector
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: // if 1st keyword is pair, apply other keywords to one sub-style
|
|
pair_hybrid.cpp: // if 2nd keyword (after pair) is special:
|
|
pair_hybrid.cpp: // invoke modify_special() for the sub-style
|
|
pair_hybrid.cpp: // if 2nd keyword (after pair) is compute/tally:
|
|
pair_hybrid.cpp: // set flag to register USER-TALLY computes accordingly
|
|
pair_hybrid.cpp: if (iarg < narg && strcmp(arg[iarg],"compute/tally") == 0) {
|
|
pair_hybrid.cpp: error->all(FLERR,"Illegal pair_modify compute/tally command");
|
|
pair_hybrid.cpp: } else error->all(FLERR,"Illegal pair_modify compute/tally command");
|
|
pair_hybrid.cpp: // apply the remaining keywords to the base pair style itself and the
|
|
pair_hybrid.cpp: // sub-style except for "pair" and "special".
|
|
pair_hybrid.cpp: // the former is important for some keywords like "tail" or "compute"
|
|
pair_hybrid.cpp: // apply all keywords to pair hybrid itself and every sub-style
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp: if (strcmp(arg[0],"lj/coul") == 0) {
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid_overlay.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid_overlay.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_hybrid_overlay.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_hybrid_overlay.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid_overlay.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_hybrid_overlay.cpp:/* ----------------------------------------------------------------------
|
|
pair_hybrid_overlay.cpp:------------------------------------------------------------------------- */
|
|
pair_hybrid_overlay.cpp: // 3rd arg = pair sub-style name
|
|
pair_hybrid_overlay.cpp: // 4th arg = pair sub-style index if name used multiple times
|
|
pair_hybrid_overlay.cpp: // allow for "none" as valid sub-style name
|
|
pair_hybrid_overlay.cpp: // move 1st/2nd args to 2nd/3rd args
|
|
pair_hybrid_overlay.cpp: // if multflag: move 1st/2nd args to 3rd/4th args
|
|
pair_hybrid_overlay.cpp: // just copy ptrs, since arg[] points into original input line
|
|
pair_hybrid_overlay.cpp: // invoke sub-style coeff() starting with 1st remaining arg
|
|
pair_hybrid_overlay.cpp: // set setflag and which type pairs map to which sub-style
|
|
pair_hybrid_overlay.cpp: // if sub-style is none: set hybrid subflag, wipe out map
|
|
pair_hybrid_overlay.cpp: // else: set hybrid setflag & map only if substyle setflag is set
|
|
pair_hybrid_overlay.cpp: // if sub-style is new for type pair, add as multiple mapping
|
|
pair_hybrid_overlay.cpp: // if sub-style exists for type pair, don't add, just update coeffs
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj96_cut.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj96_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj96_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj96_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj96_cut.cpp: rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff;
|
|
pair_lj96_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj96_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj96_cut.cpp: rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff;
|
|
pair_lj96_cut.cpp: rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff;
|
|
pair_lj96_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj96_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj96_cut.cpp: rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff;
|
|
pair_lj96_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj96_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: // request regular or rRESPA neighbor lists
|
|
pair_lj96_cut.cpp: // set rRESPA cutoffs
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: double ratio = sigma[i][j] / cut[i][j];
|
|
pair_lj96_cut.cpp: // check interior rRESPA cutoff
|
|
pair_lj96_cut.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_lj96_cut.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_lj96_cut.cpp: sig6 * (sig3 - 2.0*rc3) / (6.0*rc6);
|
|
pair_lj96_cut.cpp: sig6 * (3.0*sig3 - 4.0*rc3) / (6.0*rc6);
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj96_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj96_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_cubic.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cubic.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cubic.cpp: t = (r - cut_inner[itype][jtype])/rmin;
|
|
pair_lj_cubic.cpp: forcelj = epsilon[itype][jtype]*(-DPHIDS + A3*t*t/2.0)*r/rmin;
|
|
pair_lj_cubic.cpp: (PHIS + DPHIDS*t - A3*t*t*t/6.0);
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cubic.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cubic.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cubic.cpp: t = (r - cut_inner[itype][jtype])/rmin;
|
|
pair_lj_cubic.cpp: forcelj = epsilon[itype][jtype]*(-DPHIDS + A3*t*t/2.0)*r/rmin;
|
|
pair_lj_cubic.cpp: (PHIS + DPHIDS*t - A3*t*t*t/6.0);
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_cut_coul_cut.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cut_coul_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp: error->all(FLERR,"Pair style lj/cut/coul/cut requires atom attribute q");
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp: double ratio = sigma[i][j] / cut_lj[i][j];
|
|
pair_lj_cut_coul_cut.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_lj_cut_coul_cut.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_lj_cut_coul_cut.cpp: sig6 * (sig6 - 3.0*rc6) / (9.0*rc9);
|
|
pair_lj_cut_coul_cut.cpp: sig6 * (2.0*sig6 - 3.0*rc6) / (9.0*rc9);
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut_coul_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_debye.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_cut_coul_debye.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_cut_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cut_coul_debye.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut_coul_debye.cpp: rinv = 1.0/r;
|
|
pair_lj_cut_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp: // reset cutoffs that were previously set from data file
|
|
pair_lj_cut_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_debye.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_debye.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut_coul_debye.cpp: rinv = 1.0/r;
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_cut_coul_dsf.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cut_coul_dsf.cpp: double e_self = -(e_shift/2.0 + alpha/MY_PIS) * qtmp*qtmp*qqrd2e;
|
|
pair_lj_cut_coul_dsf.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut_coul_dsf.cpp: prefactor = qqrd2e*qtmp*q[j]/r;
|
|
pair_lj_cut_coul_dsf.cpp: t = 1.0 / (1.0 + EWALD_P*alpha*r);
|
|
pair_lj_cut_coul_dsf.cpp: forcecoul = prefactor * (erfcc/r + 2.0*alpha/MY_PIS * erfcd +
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp: error->all(FLERR,"Pair style lj/cut/coul/dsf requires atom attribute q");
|
|
pair_lj_cut_coul_dsf.cpp: f_shift = -(erfcc/cut_coulsq + 2.0/MY_PIS*alpha*erfcd/cut_coul);
|
|
pair_lj_cut_coul_dsf.cpp: e_shift = erfcc/cut_coul - f_shift*cut_coul;
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp: double ratio = sigma[i][j] / cut_lj[i][j];
|
|
pair_lj_cut_coul_dsf.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_lj_cut_coul_dsf.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_lj_cut_coul_dsf.cpp: sig6 * (sig6 - 3.0*rc6) / (9.0*rc9);
|
|
pair_lj_cut_coul_dsf.cpp: sig6 * (2.0*sig6 - 3.0*rc6) / (9.0*rc9);
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut_coul_dsf.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut_coul_dsf.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut_coul_dsf.cpp: prefactor = factor_coul * force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
|
pair_lj_cut_coul_dsf.cpp: forcecoul = prefactor * (erfcc/r + 2.0*alpha/MY_PIS * erfcd +
|
|
pair_lj_cut_coul_dsf.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_cut.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut.cpp: rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff;
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut.cpp: rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff;
|
|
pair_lj_cut.cpp: rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff;
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: // loop over neighbors of my atoms
|
|
pair_lj_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut.cpp: rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff;
|
|
pair_lj_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: // request regular or rRESPA neighbor lists
|
|
pair_lj_cut.cpp: // set rRESPA cutoffs
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: double ratio = sigma[i][j] / cut[i][j];
|
|
pair_lj_cut.cpp: // check interior rRESPA cutoff
|
|
pair_lj_cut.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_lj_cut.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_lj_cut.cpp: sig6 * (sig6 - 3.0*rc6) / (9.0*rc9);
|
|
pair_lj_cut.cpp: sig6 * (2.0*sig6 - 3.0*rc6) / (9.0*rc9);
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_expand.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp: // loop over neighbors of my atoms
|
|
pair_lj_expand.cpp: r2inv = 1.0/rshiftsq;
|
|
pair_lj_expand.cpp: fpair = factor_lj*forcelj/rshift/r;
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp: // always mix shift arithmetically
|
|
pair_lj_expand.cpp: double ratio = sigma[i][j] / cut[i][j];
|
|
pair_lj_expand.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_lj_expand.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_lj_expand.cpp: ((1.0/9.0 + 2.0*shift1/(10.0*rc1) + shift2/(11.0*rc2))*sig6/rc9 -
|
|
pair_lj_expand.cpp: (1.0/3.0 + 2.0*shift1/(4.0*rc1) + shift2/(5.0*rc2))/rc3);
|
|
pair_lj_expand.cpp: ((1.0/9.0 + 3.0*shift1/(10.0*rc1) +
|
|
pair_lj_expand.cpp: 3.0*shift2/(11.0*rc2) + shift3/(12.0*rc3))*2.0*sig6/rc9 -
|
|
pair_lj_expand.cpp: (1.0/3.0 + 3.0*shift1/(4.0*rc1) +
|
|
pair_lj_expand.cpp: 3.0*shift2/(5.0*rc2) + shift3/(6.0*rc3))/rc3);
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_expand.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_expand.cpp: r2inv = 1.0/rshiftsq;
|
|
pair_lj_expand.cpp: fforce = factor_lj*forcelj/rshift/r;
|
|
pair_lj_expand.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_gromacs_coul_gromacs.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp: // loop over neighbors of my atoms
|
|
pair_lj_gromacs_coul_gromacs.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_gromacs_coul_gromacs.cpp: // skip if qi or qj = 0.0 since this potential may be used as
|
|
pair_lj_gromacs_coul_gromacs.cpp: // coarse-grain model with many uncharged atoms
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp: "Pair style lj/gromacs/coul/gromacs requires atom attribute q");
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp: double r6inv = 1.0/pow(cut_lj,6.0);
|
|
pair_lj_gromacs_coul_gromacs.cpp: double r8inv = 1.0/pow(cut_lj,8.0);
|
|
pair_lj_gromacs_coul_gromacs.cpp: double t2inv = 1.0/(t*t);
|
|
pair_lj_gromacs_coul_gromacs.cpp: double t3inv = t2inv/t;
|
|
pair_lj_gromacs_coul_gromacs.cpp: double t3 = 1.0/t3inv;
|
|
pair_lj_gromacs_coul_gromacs.cpp: double c6 = r6inv - t3*(6.0*a6/3.0 + 6.0*b6*t/4.0);
|
|
pair_lj_gromacs_coul_gromacs.cpp: double c12 = r6inv*r6inv - t3*(12.0*a12/3.0 + 12.0*b12*t/4.0);
|
|
pair_lj_gromacs_coul_gromacs.cpp: ljsw3[i][j] = -lj3[i][j]*12.0*a12/3.0 + lj4[i][j]*6.0*a6/3.0;
|
|
pair_lj_gromacs_coul_gromacs.cpp: ljsw4[i][j] = -lj3[i][j]*12.0*b12/4.0 + lj4[i][j]*6.0*b6/4.0;
|
|
pair_lj_gromacs_coul_gromacs.cpp: double r3inv = 1.0/pow(cut_coul,3.0);
|
|
pair_lj_gromacs_coul_gromacs.cpp: t2inv = 1.0/(t*t);
|
|
pair_lj_gromacs_coul_gromacs.cpp: t3inv = t2inv/t;
|
|
pair_lj_gromacs_coul_gromacs.cpp: coulsw3 = -a1/3.0;
|
|
pair_lj_gromacs_coul_gromacs.cpp: coulsw4 = -b1/4.0;
|
|
pair_lj_gromacs_coul_gromacs.cpp: coulsw5 = 1.0/cut_coul - t*t*t*(a1/3.0 + b1*t/4.0);
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs_coul_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs_coul_gromacs.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_gromacs.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp: // loop over neighbors of my atoms
|
|
pair_lj_gromacs.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp: double r6inv = 1.0/pow(cut[i][j],6.0);
|
|
pair_lj_gromacs.cpp: double r8inv = 1.0/pow(cut[i][j],8.0);
|
|
pair_lj_gromacs.cpp: double t2inv = 1.0/(t*t);
|
|
pair_lj_gromacs.cpp: double t3inv = t2inv/t;
|
|
pair_lj_gromacs.cpp: double t3 = 1.0/t3inv;
|
|
pair_lj_gromacs.cpp: double c6 = r6inv - t3*(6.0*a6/3.0 + 6.0*b6*t/4.0);
|
|
pair_lj_gromacs.cpp: double c12 = r6inv*r6inv - t3*(12.0*a12/3.0 + 12.0*b12*t/4.0);
|
|
pair_lj_gromacs.cpp: ljsw3[i][j] = -lj3[i][j]*12.0*a12/3.0 + lj4[i][j]*6.0*a6/3.0;
|
|
pair_lj_gromacs.cpp: ljsw4[i][j] = -lj3[i][j]*12.0*b12/4.0 + lj4[i][j]*6.0*b6/4.0;
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_gromacs.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_gromacs.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_smooth.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp: // loop over neighbors of my atoms
|
|
pair_lj_smooth.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_smooth.cpp: ljsw2[itype][jtype]*tsq/2.0 - ljsw3[itype][jtype]*tsq*t/3.0 -
|
|
pair_lj_smooth.cpp: ljsw4[itype][jtype]*tsq*tsq/4.0 - offset[itype][jtype];
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp: double r6inv = 1.0/pow(cut_inner[i][j],6.0);
|
|
pair_lj_smooth.cpp: double ratio = sigma[i][j] / cut_inner[i][j];
|
|
pair_lj_smooth.cpp: ljsw1[i][j] = r6inv*(lj1[i][j]*r6inv-lj2[i][j]) / cut_inner[i][j];
|
|
pair_lj_smooth.cpp: ljsw2[i][j] = -r6inv * (13.0*lj1[i][j]*r6inv - 7.0*lj2[i][j]) /
|
|
pair_lj_smooth.cpp: ljsw3[i][j] = -(3.0/tsq) * (ljsw1[i][j] + 2.0/3.0*ljsw2[i][j]*t);
|
|
pair_lj_smooth.cpp: ljsw4[i][j] = -1.0/(3.0*tsq) * (ljsw2[i][j] + 2.0*ljsw3[i][j]*t);
|
|
pair_lj_smooth.cpp: offset[i][j] = ljsw0[i][j] - ljsw1[i][j]*t - ljsw2[i][j]*tsq/2.0 -
|
|
pair_lj_smooth.cpp: ljsw3[i][j]*tsq*t/3.0 - ljsw4[i][j]*tsq*tsq/4.0;
|
|
pair_lj_smooth.cpp: double ratio = sigma[i][j] / cut_inner[i][j];
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_smooth.cpp: ljsw2[itype][jtype]*tsq/2.0 - ljsw3[itype][jtype]*tsq*t/3.0 -
|
|
pair_lj_smooth.cpp: ljsw4[itype][jtype]*tsq*tsq/4.0 - offset[itype][jtype];
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_lj_smooth_linear.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp: // loop over neighbors of my atoms
|
|
pair_lj_smooth_linear.cpp: r2inv = 1.0/rsq;
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp: // reset cutoffs that have been explicitly set
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp: double cutinv = 1.0/cut[i][j];
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ----------------------------------------------------------------------
|
|
pair_lj_smooth_linear.cpp:------------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_lj_smooth_linear.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_mie_cut.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: // loop over neighbors of my atoms
|
|
pair_mie_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp: rgamA = pow(r2inv,(gamA[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rgamR = pow(r2inv,(gamR[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: // loop over neighbors of my atoms
|
|
pair_mie_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp: rgamA = pow(r2inv,(gamA[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rgamR = pow(r2inv,(gamR[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff;
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: // loop over neighbors of my atoms
|
|
pair_mie_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp: rgamA = pow(r2inv,(gamA[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rgamR = pow(r2inv,(gamR[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff;
|
|
pair_mie_cut.cpp: rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff;
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: // loop over neighbors of my atoms
|
|
pair_mie_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp: rgamA = pow(r2inv,(gamA[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rgamR = pow(r2inv,(gamR[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff;
|
|
pair_mie_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp: rgamA = pow(r2inv,(gamA[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rgamR = pow(r2inv,(gamR[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp: rgamA = pow(r2inv,(gamA[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rgamR = pow(r2inv,(gamR[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: // reset cutoffs that have been explicitly set
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: // request regular or rRESPA neighbor lists
|
|
pair_mie_cut.cpp: // set rRESPA cutoffs
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: Cmie[i][j] = (gamR[i][j]/(gamR[i][j]-gamA[i][j]) *
|
|
pair_mie_cut.cpp: pow((gamR[i][j]/gamA[i][j]),
|
|
pair_mie_cut.cpp: (gamA[i][j]/(gamR[i][j]-gamA[i][j]))));
|
|
pair_mie_cut.cpp: double ratio = sigma[i][j] / cut[i][j];
|
|
pair_mie_cut.cpp: // check interior rRESPA cutoff
|
|
pair_mie_cut.cpp: // compute I,J contribution to long-range tail correction
|
|
pair_mie_cut.cpp: // count total # of atoms of type I and J via Allreduce
|
|
pair_mie_cut.cpp: (siggamR/((gamR[i][j]-3.0)*rcgamR)-siggamA/((gamA[i][j]-3.0)*rcgamA));
|
|
pair_mie_cut.cpp: ptail_ij = Cmie[i][j]*2.0*MY_PI*all[0]*all[1]*epsilon[i][j]/3.0*
|
|
pair_mie_cut.cpp: ((gamR[i][j]/(gamR[i][j]-3.0))*siggamR/rcgamR-
|
|
pair_mie_cut.cpp: (gamA[i][j]/(gamA[i][j]-3.0))*siggamA/rcgamA);
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ----------------------------------------------------------------------
|
|
pair_mie_cut.cpp:------------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_mie_cut.cpp: r2inv = 1.0/rsq;
|
|
pair_mie_cut.cpp: rgamA = pow(r2inv,(gamA[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp: rgamR = pow(r2inv,(gamR[itype][jtype]/2.0));
|
|
pair_mie_cut.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_morse.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_morse.cpp: // loop over neighbors of my atoms
|
|
pair_morse.cpp: fpair = factor_lj * morse1[itype][jtype] * (dexp*dexp - dexp) / r;
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp: // reset cutoffs that have been explicitly set
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ----------------------------------------------------------------------
|
|
pair_morse.cpp:------------------------------------------------------------------------- */
|
|
pair_morse.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_morse.cpp: fforce = factor_lj * morse1[itype][jtype] * (dexp*dexp - dexp) / r;
|
|
pair_morse.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_soft.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_soft.cpp: // loop over neighbors of my atoms
|
|
pair_soft.cpp: arg = MY_PI*r/cut[itype][jtype];
|
|
pair_soft.cpp: sin(arg) * MY_PI/cut[itype][jtype]/r;
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp: // reset cutoffs that have been explicitly set
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp: // always mix prefactors geometrically
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ----------------------------------------------------------------------
|
|
pair_soft.cpp:------------------------------------------------------------------------- */
|
|
pair_soft.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_soft.cpp: arg = MY_PI*r/cut[itype][jtype];
|
|
pair_soft.cpp: sin(arg) * MY_PI/cut[itype][jtype]/r;
|
|
pair_soft.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_spin.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_spin.cpp: // Pair spin computations
|
|
pair_spin.cpp: // Loop over neighbors of my itoms
|
|
pair_spin.cpp: //Loop on Neighbors
|
|
pair_spin.cpp: rsq = delx*delx + dely*dely + delz*delz; //square or inter-atomic distance
|
|
pair_spin.cpp: rd = sqrt(rsq); //Inter-atomic distance
|
|
pair_spin.cpp: //Exchange interaction
|
|
pair_spin.cpp: //DM interaction
|
|
pair_spin.cpp: //ME interaction
|
|
pair_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_spin.cpp: ra = rsq/J_3[itype][jtype]/J_3[itype][jtype];
|
|
pair_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_spin.cpp: inorm = 1.0/sqrt(rx*rx+ry*ry+rz*rz);
|
|
pair_spin.cpp: // printf("test val fmi=%g, fmj=%g \n",fmi[2],fmj[2]);
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp: error->all(FLERR,"Incorrect number of args in pair_style pair/spin command");
|
|
pair_spin.cpp: // reset cutoffs that have been explicitly set
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp: double hbar = force->hplanck/MY_2PI;
|
|
pair_spin.cpp: J1 /= hbar;
|
|
pair_spin.cpp: double inorm = 1.0/(dmx*dmx+dmy*dmy+dmz*dmz);
|
|
pair_spin.cpp: double hbar = force->hplanck/MY_2PI;
|
|
pair_spin.cpp: dm /= hbar;
|
|
pair_spin.cpp: double inorm = 1.0/(mex*mex+mey*mey+mez*mez);
|
|
pair_spin.cpp: double hbar = force->hplanck/MY_2PI;
|
|
pair_spin.cpp: me /= hbar;
|
|
pair_spin.cpp: //Check if Jex [][] still works for Ferrimagnetic exchange
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_spin.cpp:/* ----------------------------------------------------------------------
|
|
pair_spin.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_table.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_table.cpp: // loop over neighbors of my atoms
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp: // new settings
|
|
pair_table.cpp: // optional keywords
|
|
pair_table.cpp: // assert the tabulation is compatible with a specific long-range solver
|
|
pair_table.cpp: // delete old tables, since cannot just change settings
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp: // set table cutoff
|
|
pair_table.cpp: // error check on table parameters
|
|
pair_table.cpp: // insure cutoff is within table
|
|
pair_table.cpp: // for BITMAP tables, file values can be in non-ascending order
|
|
pair_table.cpp: // match = 1 if don't need to spline read-in tables
|
|
pair_table.cpp: // this is only the case if r values needed by final tables
|
|
pair_table.cpp: // exactly match r values read from file
|
|
pair_table.cpp: // for tabstyle SPLINE, always need to build spline tables
|
|
pair_table.cpp: // spline read-in values and compute r,e,f vectors within table
|
|
pair_table.cpp: // store ptr to table in tabindex
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp: // open file
|
|
pair_table.cpp: // loop until section found with matching keyword
|
|
pair_table.cpp: if (strspn(line," \t\n\r") == strlen(line)) continue; // blank line
|
|
pair_table.cpp: if (line[0] == '#') continue; // comment
|
|
pair_table.cpp: if (strcmp(word,keyword) == 0) break; // matching keyword
|
|
pair_table.cpp: fgets(line,MAXLINE,fp); // no match, skip section
|
|
pair_table.cpp: // read args on 2nd line of section
|
|
pair_table.cpp: // allocate table arrays for file values
|
|
pair_table.cpp: // setup bitmap parameters for table to read in
|
|
pair_table.cpp: // read r,e,f table values from file
|
|
pair_table.cpp: // if rflag set, compute r
|
|
pair_table.cpp: // if rflag not set, use r from file
|
|
pair_table.cpp: rnew = tb->rlo + (tb->rhi - tb->rlo)*i/(tb->ninput-1);
|
|
pair_table.cpp: (tb->rhi*tb->rhi - tb->rlo*tb->rlo)*i/(tb->ninput-1);
|
|
pair_table.cpp: if (tb->rflag && fabs(rnew-rfile)/rfile > EPSILONR) rerror++;
|
|
pair_table.cpp: // close file
|
|
pair_table.cpp: // warn if force != dE/dr at any point that is not an inflection point
|
|
pair_table.cpp: // check via secant approximation to dE/dr
|
|
pair_table.cpp: // skip two end points since do not have surrounding secants
|
|
pair_table.cpp: // inflection point is where curvature changes sign
|
|
pair_table.cpp: fleft = - (e-eprev) / (r-rprev);
|
|
pair_table.cpp: fright = - (enext-e) / (rnext-r);
|
|
pair_table.cpp: //printf("Values %d: %g %g %g\n",i,r,e,f);
|
|
pair_table.cpp: //printf(" secant %d %d %g: %g %g %g\n",i,ferror,r,fleft,fright,f);
|
|
pair_table.cpp: sprintf(str,"%d of %d force values in table are inconsistent with -dE/dr.\n"
|
|
pair_table.cpp: // warn if re-computed distance values differ from file values
|
|
pair_table.cpp: // warn if data was read incompletely, e.g. columns were missing
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp: tb->fplo = (tb->ffile[1] - tb->ffile[0]) / (tb->rfile[1] - tb->rfile[0]);
|
|
pair_table.cpp: tb->fphi = (tb->ffile[tb->ninput-1] - tb->ffile[tb->ninput-2]) /
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp: format of line: N value R/RSQ/BITMAP lo hi FPRIME fplo fphi
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp: // inner = inner table bound
|
|
pair_table.cpp: // cut = outer table bound
|
|
pair_table.cpp: // delta = table spacing in rsq for N-1 bins
|
|
pair_table.cpp: tb->delta = (tb->cut*tb->cut - tb->innersq) / tlm1;
|
|
pair_table.cpp: tb->invdelta = 1.0/tb->delta;
|
|
pair_table.cpp: // direct lookup tables
|
|
pair_table.cpp: // N-1 evenly spaced bins in rsq from inner to cut
|
|
pair_table.cpp: // e,f = value at midpt of bin
|
|
pair_table.cpp: // e,f are N-1 in length since store 1 value at bin midpt
|
|
pair_table.cpp: // f is converted to f/r when stored in f[i]
|
|
pair_table.cpp: // e,f are never a match to read-in values, always computed via spline interp
|
|
pair_table.cpp: tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r;
|
|
pair_table.cpp: // linear tables
|
|
pair_table.cpp: // N-1 evenly spaced bins in rsq from inner to cut
|
|
pair_table.cpp: // rsq,e,f = value at lower edge of bin
|
|
pair_table.cpp: // de,df values = delta from lower edge to upper edge of bin
|
|
pair_table.cpp: // rsq,e,f are N in length so de,df arrays can compute difference
|
|
pair_table.cpp: // f is converted to f/r when stored in f[i]
|
|
pair_table.cpp: // e,f can match read-in values, else compute via spline interp
|
|
pair_table.cpp: tb->f[i] = tb->ffile[i]/r;
|
|
pair_table.cpp: tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r;
|
|
pair_table.cpp: // cubic spline tables
|
|
pair_table.cpp: // N-1 evenly spaced bins in rsq from inner to cut
|
|
pair_table.cpp: // rsq,e,f = value at lower edge of bin
|
|
pair_table.cpp: // e2,f2 = spline coefficient for each bin
|
|
pair_table.cpp: // rsq,e,f,e2,f2 are N in length so have N-1 spline bins
|
|
pair_table.cpp: // f is converted to f/r after e is splined
|
|
pair_table.cpp: // e,f can match read-in values, else compute via spline interp
|
|
pair_table.cpp: tb->deltasq6 = tb->delta*tb->delta / 6.0;
|
|
pair_table.cpp: tb->f[i] = tb->ffile[i]/r;
|
|
pair_table.cpp: // ep0,epn = dh/dg at inner and at cut
|
|
pair_table.cpp: // h(r) = e(r) and g(r) = r^2
|
|
pair_table.cpp: // dh/dg = (de/dr) / 2r = -f/2r
|
|
pair_table.cpp: double ep0 = - tb->f[0] / (2.0 * sqrt(tb->innersq));
|
|
pair_table.cpp: double epn = - tb->f[tlm1] / (2.0 * tb->cut);
|
|
pair_table.cpp: // fp0,fpn = dh/dg at inner and at cut
|
|
pair_table.cpp: // h(r) = f(r)/r and g(r) = r^2
|
|
pair_table.cpp: // dh/dg = (1/r df/dr - f/r^2) / 2r
|
|
pair_table.cpp: // dh/dg in secant approx = (f(r2)/r2 - f(r1)/r1) / (g(r2) - g(r1))
|
|
pair_table.cpp: if (tb->fpflag) fp0 = (tb->fplo/sqrt(tb->innersq) - tb->f[0]/tb->innersq) /
|
|
pair_table.cpp: fp0 = (splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq2)) /
|
|
pair_table.cpp: sqrt(rsq2) - tb->f[0] / sqrt(rsq1)) / (secant_factor*tb->delta);
|
|
pair_table.cpp: (tb->fphi/tb->cut - tb->f[tlm1]/(tb->cut*tb->cut)) / (2.0 * tb->cut);
|
|
pair_table.cpp: fpn = (tb->f[tlm1] / sqrt(rsq2) -
|
|
pair_table.cpp: splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq1)) /
|
|
pair_table.cpp: sqrt(rsq1)) / (secant_factor*tb->delta);
|
|
pair_table.cpp: for (int i = 0; i < tablength; i++) tb->f[i] /= sqrt(tb->rsq[i]);
|
|
pair_table.cpp: // bitmapped linear tables
|
|
pair_table.cpp: // 2^N bins from inner to cut, spaced in bitmapped manner
|
|
pair_table.cpp: // f is converted to f/r when stored in f[i]
|
|
pair_table.cpp: // e,f can match read-in values, else compute via spline interp
|
|
pair_table.cpp: // linear lookup tables of length ntable = 2^n
|
|
pair_table.cpp: // stored value = value at lower edge of bin
|
|
pair_table.cpp: tb->f[i] = tb->ffile[i]/r;
|
|
pair_table.cpp: tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r;
|
|
pair_table.cpp: tb->drsq[i] = 1.0/(tb->rsq[i+1] - tb->rsq[i]);
|
|
pair_table.cpp: // get the delta values for the last table entries
|
|
pair_table.cpp: // tables are connected periodically between 0 and ntablem1
|
|
pair_table.cpp: tb->drsq[ntablem1] = 1.0/(tb->rsq[0] - tb->rsq[ntablem1]);
|
|
pair_table.cpp: // get the correct delta values at itablemax
|
|
pair_table.cpp: // smallest r is in bin itablemin
|
|
pair_table.cpp: // largest r is in bin itablemax, which is itablemin-1,
|
|
pair_table.cpp: // or ntablem1 if itablemin=0
|
|
pair_table.cpp: // deltas at itablemax only needed if corresponding rsq < cut*cut
|
|
pair_table.cpp: // if so, compute deltas between rsq and cut*cut
|
|
pair_table.cpp: // if tb->match, data at cut*cut is unavailable, so we'll take
|
|
pair_table.cpp: // deltas at itablemax-1 as a good approximation
|
|
pair_table.cpp: f_tmp = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r;
|
|
pair_table.cpp: tb->drsq[itablemax] = 1.0/(rsq_lookup.f - tb->rsq[itablemax]);
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp: u[0] = (3.0/(x[1]-x[0])) * ((y[1]-y[0]) / (x[1]-x[0]) - yp1);
|
|
pair_table.cpp: sig = (x[i]-x[i-1]) / (x[i+1]-x[i-1]);
|
|
pair_table.cpp: y2[i] = (sig-1.0) / p;
|
|
pair_table.cpp: u[i] = (y[i+1]-y[i]) / (x[i+1]-x[i]) - (y[i]-y[i-1]) / (x[i]-x[i-1]);
|
|
pair_table.cpp: u[i] = (6.0*u[i] / (x[i+1]-x[i-1]) - sig*u[i-1]) / p;
|
|
pair_table.cpp: un = (3.0/(x[n-1]-x[n-2])) * (ypn - (y[n-1]-y[n-2]) / (x[n-1]-x[n-2]));
|
|
pair_table.cpp: y2[n-1] = (un-qn*u[n-2]) / (qn*y2[n-2] + 1.0);
|
|
pair_table.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_table.cpp: a = (xa[khi]-x) / h;
|
|
pair_table.cpp: b = (x-xa[klo]) / h;
|
|
pair_table.cpp: ((a*a*a-a)*y2a[klo] + (b*b*b-b)*y2a[khi]) * (h*h)/6.0;
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_table.cpp:/* ----------------------------------------------------------------------
|
|
pair_table.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_yukawa.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_yukawa.cpp: // loop over neighbors of my atoms
|
|
pair_yukawa.cpp: r2inv = 1.0/rsq;
|
|
pair_yukawa.cpp: rinv = 1.0/r;
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp: // reset cutoffs that have been explicitly set
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp: offset[i][j] = a[i][j] * screening / cut[i][j];
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ----------------------------------------------------------------------
|
|
pair_yukawa.cpp:------------------------------------------------------------------------- */
|
|
pair_yukawa.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_yukawa.cpp: r2inv = 1.0/rsq;
|
|
pair_yukawa.cpp: rinv = 1.0/r;
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_zbl.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp:// From J.F. Zeigler, J. P. Biersack and U. Littmark,
|
|
pair_zbl.cpp:// "The Stopping and Range of Ions in Matter" volume 1, Pergamon, 1985.
|
|
pair_zbl.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_zbl.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_zbl.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_zbl.cpp: // loop over neighbors of my atoms
|
|
pair_zbl.cpp: fpair *= -1.0/r;
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp: // set flag for each i-j pair
|
|
pair_zbl.cpp: // set z-parameter only for i-i pairs
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_zbl.cpp: fforce *= -1.0/r;
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp: double rinv = 1.0/r;
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp: double rinv = 1.0/r;
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp: double rinv = 1.0/r;
|
|
pair_zbl.cpp:/* ----------------------------------------------------------------------
|
|
pair_zbl.cpp:------------------------------------------------------------------------- */
|
|
pair_zbl.cpp: double ainv = (pow(zi,pzbl) + pow(zj,pzbl))/(a0*force->angstrom);
|
|
pair_zbl.cpp: // e = t^3 (sw3 + sw4*t) + sw5
|
|
pair_zbl.cpp: // = A/3*t^3 + B/4*t^4 + C
|
|
pair_zbl.cpp: // sw3 = A/3
|
|
pair_zbl.cpp: // sw4 = B/4
|
|
pair_zbl.cpp: // sw5 = C
|
|
pair_zbl.cpp: // dedr = t^2 (sw1 + sw2*t)
|
|
pair_zbl.cpp: // = A*t^2 + B*t^3
|
|
pair_zbl.cpp: // sw1 = A
|
|
pair_zbl.cpp: // sw2 = B
|
|
pair_zbl.cpp: // de2dr2 = 2*A*t + 3*B*t^2
|
|
pair_zbl.cpp: // Require that at t = tc:
|
|
pair_zbl.cpp: // e = -Fc
|
|
pair_zbl.cpp: // dedr = -Fc'
|
|
pair_zbl.cpp: // d2edr2 = -Fc''
|
|
pair_zbl.cpp: // Hence:
|
|
pair_zbl.cpp: // A = (-3Fc' + tc*Fc'')/tc^2
|
|
pair_zbl.cpp: // B = ( 2Fc' - tc*Fc'')/tc^3
|
|
pair_zbl.cpp: // C = -Fc + tc/2*Fc' - tc^2/12*Fc''
|
|
pair_zbl.cpp: double swa = (-3.0*fcp + tc*fcpp)/(tc*tc);
|
|
pair_zbl.cpp: double swb = ( 2.0*fcp - tc*fcpp)/(tc*tc*tc);
|
|
pair_zbl.cpp: double swc = -fc + (tc/2.0)*fcp - (tc*tc/12.0)*fcpp;
|
|
pair_zbl.cpp: sw3[i][j] = swa/3.0;
|
|
pair_zbl.cpp: sw4[i][j] = swb/4.0;
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
pair_zero.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ---------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp: // reset cutoffs that have been explicitly set
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
pair_zero.cpp:/* ----------------------------------------------------------------------
|
|
pair_zero.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
procmap.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp:enum{MULTIPLE}; // same as in Comm
|
|
procmap.cpp:/* ---------------------------------------------------------------------- */
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // factors = list of all possible 3 factors of processor count
|
|
procmap.cpp: // constrain by 2d, user request, other partition
|
|
procmap.cpp: // user/other constraints make failure possible
|
|
procmap.cpp: // select best set of 3 factors based on surface area of proc sub-domains
|
|
procmap.cpp: // clean-up
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // nfactors = list of all possible 3 factors of node count
|
|
procmap.cpp: // constrain by 2d
|
|
procmap.cpp: int nnpossible = factor(nprocs/ncores,NULL);
|
|
procmap.cpp: nnpossible = factor(nprocs/ncores,nfactors);
|
|
procmap.cpp: // cfactors = list of all possible 3 factors of core count
|
|
procmap.cpp: // constrain by 2d
|
|
procmap.cpp: // factors = all combinations of nfactors and cfactors
|
|
procmap.cpp: // factors stores additional index pointing to corresponding cfactors
|
|
procmap.cpp: // constrain by user request, other partition
|
|
procmap.cpp: // user/other constraints make failure possible
|
|
procmap.cpp: // select best set of 3 factors based on surface area of proc sub-domains
|
|
procmap.cpp: // index points to corresponding core factorization
|
|
procmap.cpp: // clean-up
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // hardwire this for now
|
|
procmap.cpp: // get names of all nodes
|
|
procmap.cpp: // get number of procs per node
|
|
procmap.cpp: // NOTE: could do this without STL map
|
|
procmap.cpp: procs_per_numa = procs_per_node / numa_nodes;
|
|
procmap.cpp: // error if any of these conditions met
|
|
procmap.cpp: if (nprocs % procs_per_numa || // total procs not a multiple of node
|
|
procmap.cpp: user_procgrid[0] > 1 || // user specified grid > 1 in any dim
|
|
procmap.cpp: // user settings for the factorization per numa node
|
|
procmap.cpp: // currently not user settable
|
|
procmap.cpp: // if user specifies 1 for a proc grid dimension,
|
|
procmap.cpp: // also use 1 for the numa grid dimension
|
|
procmap.cpp: // initial factorization within NUMA node
|
|
procmap.cpp: // user_nodegrid = implied user constraints on nodes
|
|
procmap.cpp: user_nodegrid[0] = user_procgrid[0] / numagrid[0];
|
|
procmap.cpp: user_nodegrid[1] = user_procgrid[1] / numagrid[1];
|
|
procmap.cpp: user_nodegrid[2] = user_procgrid[2] / numagrid[2];
|
|
procmap.cpp: // factorization for the grid of NUMA nodes
|
|
procmap.cpp: int node_count = nprocs / procs_per_numa;
|
|
procmap.cpp: // repeat NUMA node factorization using subdomain sizes
|
|
procmap.cpp: // refines the factorization if the user specified the node layout
|
|
procmap.cpp: // NOTE: this will not re-enforce user-procgrid constraint will it?
|
|
procmap.cpp: // assign a unique id to each node
|
|
procmap.cpp: // return the proc-level factorization
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // skip header = blank and comment lines
|
|
procmap.cpp: // cmap = map of procs to grid
|
|
procmap.cpp: // store for use in custom_map()
|
|
procmap.cpp: // error check on cmap values
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // setup NUMA params that numa_grid() sets up
|
|
procmap.cpp: node_id = me/ncores;
|
|
procmap.cpp: nodegrid[0] = procgrid[0] / coregrid[0];
|
|
procmap.cpp: nodegrid[1] = procgrid[1] / coregrid[1];
|
|
procmap.cpp: nodegrid[2] = procgrid[2] / coregrid[2];
|
|
procmap.cpp: // now can use numa_map() to perform mapping
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // proc IDs of neighbors
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: nodegrid[0] = procgrid[0] / coregrid[0];
|
|
procmap.cpp: nodegrid[1] = procgrid[1] / coregrid[1];
|
|
procmap.cpp: nodegrid[2] = procgrid[2] / coregrid[2];
|
|
procmap.cpp: inode = i/coregrid[0];
|
|
procmap.cpp: jnode = j/coregrid[1];
|
|
procmap.cpp: knode = k/coregrid[2];
|
|
procmap.cpp: // proc IDs of neighbors
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // setup a per node communicator and find rank within
|
|
procmap.cpp: // setup a per numa communicator and find rank within
|
|
procmap.cpp: int local_numa = node_rank / procs_per_numa;
|
|
procmap.cpp: // setup a communicator with the rank 0 procs from each numa node
|
|
procmap.cpp: // use the MPI Cartesian routines to map the nodes to the grid
|
|
procmap.cpp: // broadcast numa node location in grid to other procs in numa node
|
|
procmap.cpp: // compute my location within the node grid
|
|
procmap.cpp: int z_offset = numa_rank / (numagrid[0] * numagrid[1]);
|
|
procmap.cpp: int y_offset = (numa_rank % (numagrid[0] * numagrid[1]))/numagrid[0];
|
|
procmap.cpp: // allgather of myloc into gridi to fill grid2proc
|
|
procmap.cpp: // proc IDs of neighbors
|
|
procmap.cpp: // clean-up
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // proc IDs of neighbors
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // find me in the grid
|
|
procmap.cpp: // polled comm of grid mapping info from each proc to proc 0
|
|
procmap.cpp: // close output file
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: nyz = n/i;
|
|
procmap.cpp: factors[m][2] = nyz/j;
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp: where Nx,Ny,Nz = node grid = procgrid/coregrid
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: if ((other_procgrid[0]/other_coregrid[0]) % factors[i][0]) flag = 1;
|
|
procmap.cpp: if ((other_procgrid[1]/other_coregrid[1]) % factors[i][1]) flag = 1;
|
|
procmap.cpp: if ((other_procgrid[2]/other_coregrid[2]) % factors[i][2]) flag = 1;
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
procmap.cpp: // determine cross-sectional areas for orthogonal and triclinic boxes
|
|
procmap.cpp: // for triclinic, area = cross product of 2 edge vectors stored in h matrix
|
|
procmap.cpp: // area[3] = surface area 3 box faces divided by sx,sy,sz
|
|
procmap.cpp: // area[0] = xy, area[1] = xz, area[2] = yz
|
|
procmap.cpp: area[0] = domain->xprd * domain->yprd / (sx*sy);
|
|
procmap.cpp: area[1] = domain->xprd * domain->zprd / (sx*sz);
|
|
procmap.cpp: area[2] = domain->yprd * domain->zprd / (sy*sz);
|
|
procmap.cpp: area[0] = sqrt(c[0]*c[0] + c[1]*c[1] + c[2]*c[2]) / (sx*sy);
|
|
procmap.cpp: area[1] = sqrt(c[0]*c[0] + c[1]*c[1] + c[2]*c[2]) / (sx*sz);
|
|
procmap.cpp: area[2] = sqrt(c[0]*c[0] + c[1]*c[1] + c[2]*c[2]) / (sy*sz);
|
|
procmap.cpp: surf = area[0]/factors[m][0]/factors[m][1] +
|
|
procmap.cpp: area[1]/factors[m][0]/factors[m][2] +
|
|
procmap.cpp: area[2]/factors[m][1]/factors[m][2];
|
|
procmap.cpp:/* ----------------------------------------------------------------------
|
|
procmap.cpp:------------------------------------------------------------------------- */
|
|
python.cpp:/* ----------------------------------------------------------------------
|
|
python.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
python.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
python.cpp:------------------------------------------------------------------------- */
|
|
python.cpp:/* ---------------------------------------------------------------------- */
|
|
python.cpp: // implementation of Python interface is only loaded on demand
|
|
python.cpp: // and only if PYTHON package has been installed and compiled into binary
|
|
python.cpp:/* ---------------------------------------------------------------------- */
|
|
python.cpp:/* ---------------------------------------------------------------------- */
|
|
python.cpp:/* ---------------------------------------------------------------------- */
|
|
python.cpp:/* ---------------------------------------------------------------------- */
|
|
python.cpp:/* ---------------------------------------------------------------------- */
|
|
python.cpp:/* ------------------------------------------------------------------ */
|
|
python.cpp:/* ------------------------------------------------------------------ */
|
|
python.cpp:/* ------------------------------------------------------------------ */
|
|
python.cpp:/* ------------------------------------------------------------------ */
|
|
random_mars.cpp:/* ----------------------------------------------------------------------
|
|
random_mars.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
random_mars.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
random_mars.cpp:------------------------------------------------------------------------- */
|
|
random_mars.cpp:// Marsaglia random number generator
|
|
random_mars.cpp:// see RANMAR in F James, Comp Phys Comm, 60, 329 (1990)
|
|
random_mars.cpp:/* ---------------------------------------------------------------------- */
|
|
random_mars.cpp: ij = (seed-1)/30082;
|
|
random_mars.cpp: i = (ij/177) % 177 + 2;
|
|
random_mars.cpp: k = (kl/169) % 178 + 1;
|
|
random_mars.cpp: c = 362436.0 / 16777216.0;
|
|
random_mars.cpp: cd = 7654321.0 / 16777216.0;
|
|
random_mars.cpp: cm = 16777213.0 / 16777216.0;
|
|
random_mars.cpp:/* ---------------------------------------------------------------------- */
|
|
random_mars.cpp:/* ----------------------------------------------------------------------
|
|
random_mars.cpp:------------------------------------------------------------------------- */
|
|
random_mars.cpp:/* ----------------------------------------------------------------------
|
|
random_mars.cpp:------------------------------------------------------------------------- */
|
|
random_mars.cpp: fac = sqrt(-2.0*log(rsq)/rsq);
|
|
random_park.cpp:/* ----------------------------------------------------------------------
|
|
random_park.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
random_park.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
random_park.cpp:------------------------------------------------------------------------- */
|
|
random_park.cpp:// Park/Miller RNG
|
|
random_park.cpp:#define AM (1.0/IM)
|
|
random_park.cpp:/* ---------------------------------------------------------------------- */
|
|
random_park.cpp:/* ----------------------------------------------------------------------
|
|
random_park.cpp:------------------------------------------------------------------------- */
|
|
random_park.cpp: int k = seed/IQ;
|
|
random_park.cpp:/* ----------------------------------------------------------------------
|
|
random_park.cpp:------------------------------------------------------------------------- */
|
|
random_park.cpp: fac = sqrt(-2.0*log(rsq)/rsq);
|
|
random_park.cpp:/* ---------------------------------------------------------------------- */
|
|
random_park.cpp:/* ----------------------------------------------------------------------
|
|
random_park.cpp:------------------------------------------------------------------------- */
|
|
random_park.cpp: // keep 31 bits of unsigned int as new seed
|
|
random_park.cpp: // do not allow seed = 0, since will cause hang in gaussian()
|
|
random_park.cpp: // warm up the RNG
|
|
random_park.cpp:/* ---------------------------------------------------------------------- */
|
|
rcb.cpp:/* ----------------------------------------------------------------------
|
|
rcb.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
rcb.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
rcb.cpp:------------------------------------------------------------------------- */
|
|
rcb.cpp:// prototypes for non-class functions
|
|
rcb.cpp:// NOTE: if want to have reuse flag, need to sum Tree across procs
|
|
rcb.cpp:/* ---------------------------------------------------------------------- */
|
|
rcb.cpp: // create MPI data and function types for box and median AllReduce ops
|
|
rcb.cpp:/* ---------------------------------------------------------------------- */
|
|
rcb.cpp:/* ----------------------------------------------------------------------
|
|
rcb.cpp: perform RCB balancing of N particles at coords X in bounding box LO/HI
|
|
rcb.cpp: defined by final lo/hi
|
|
rcb.cpp: // NOTE: worry about re-use of data structs for fix balance?
|
|
rcb.cpp:------------------------------------------------------------------------- */
|
|
rcb.cpp: // create list of my Dots
|
|
rcb.cpp: // initial bounding box = simulation box
|
|
rcb.cpp: // includes periodic or shrink-wrapped boundaries
|
|
rcb.cpp: // initialize counters
|
|
rcb.cpp: // create communicator for use in recursion
|
|
rcb.cpp: // recurse until partition is a single proc = me
|
|
rcb.cpp: // proclower,procupper = lower,upper procs in partition
|
|
rcb.cpp: // procmid = 1st proc in upper half of partition
|
|
rcb.cpp: // if odd # of procs, lower partition gets extra one
|
|
rcb.cpp: procmid = proclower + (procupper - proclower) / 2 + 1;
|
|
rcb.cpp: // determine communication partner(s)
|
|
rcb.cpp: // readnumber = # of proc partners to read from
|
|
rcb.cpp: // wttot = summed weight of entire partition
|
|
rcb.cpp: // search tolerance = largest single weight (plus epsilon)
|
|
rcb.cpp: // targetlo = desired weight in lower half of partition
|
|
rcb.cpp: // targethi = desired weight in upper half of partition
|
|
rcb.cpp: targetlo = wttot * (procmid - proclower) / (procupper + 1 - proclower);
|
|
rcb.cpp: // attempt a cut in each dimension
|
|
rcb.cpp: // each cut produces 2 boxes, each with a reduced box length in that dim
|
|
rcb.cpp: // smaller = the smaller of the 2 reduced box lengths in that dimension
|
|
rcb.cpp: // choose to cut in dimension which produces largest smaller value
|
|
rcb.cpp: // this should induce final proc sub-boxes to be as cube-ish as possible
|
|
rcb.cpp: // dim_select = selected cut dimension
|
|
rcb.cpp: // valuehalf_select = valuehalf in that dimension
|
|
rcb.cpp: // dotmark_select = dot markings in that dimension
|
|
rcb.cpp: // create active list and mark array for dots
|
|
rcb.cpp: // initialize active list to all dots
|
|
rcb.cpp: // median iteration
|
|
rcb.cpp: // zoom in on bisector until correct # of dots in each half of partition
|
|
rcb.cpp: // as each iteration of median-loop begins, require:
|
|
rcb.cpp: // all non-active dots are marked with 0/1 in dotmark
|
|
rcb.cpp: // valuemin <= every active dot <= valuemax
|
|
rcb.cpp: // wtlo, wthi = total wt of non-active dots
|
|
rcb.cpp: // when leave median-loop, require only:
|
|
rcb.cpp: // valuehalf = correct cut position
|
|
rcb.cpp: // all dots <= valuehalf are marked with 0 in dotmark
|
|
rcb.cpp: // all dots >= valuehalf are marked with 1 in dotmark
|
|
rcb.cpp: // markactive = which side of cut is active = 0/1
|
|
rcb.cpp: // indexlo,indexhi = indices of dot closest to median
|
|
rcb.cpp: // choose bisector value
|
|
rcb.cpp: // use old value on 1st iteration if old cut dimension is the same
|
|
rcb.cpp: // on 2nd option: could push valuehalf towards geometric center
|
|
rcb.cpp: // with "1.0-factor" to force overshoot
|
|
rcb.cpp: valuehalf = valuemin + (targetlo - wtlo) /
|
|
rcb.cpp: // initialize local median data structure
|
|
rcb.cpp: // mark all active dots on one side or other of bisector
|
|
rcb.cpp: // also set all fields in median data struct
|
|
rcb.cpp: // save indices of closest dots on either side
|
|
rcb.cpp: if (dots[i].x[dim] <= valuehalf) { // in lower part
|
|
rcb.cpp: if (dots[i].x[dim] > medme.valuelo) { // my closest dot
|
|
rcb.cpp: } else if (dots[i].x[dim] == medme.valuelo) { // tied for closest
|
|
rcb.cpp: else { // in upper part
|
|
rcb.cpp: if (dots[i].x[dim] < medme.valuehi) { // my closest dot
|
|
rcb.cpp: } else if (dots[i].x[dim] == medme.valuehi) { // tied for closest
|
|
rcb.cpp: // combine median data struct across current subset of procs
|
|
rcb.cpp: // test median guess for convergence
|
|
rcb.cpp: // move additional dots that are next to cut across it
|
|
rcb.cpp: if (wtlo + med.totallo < targetlo) { // lower half TOO SMALL
|
|
rcb.cpp: if (med.counthi == 1) { // only one dot to move
|
|
rcb.cpp: if (wtlo + med.wthi < targetlo) { // move it, keep iterating
|
|
rcb.cpp: else { // only move if beneficial
|
|
rcb.cpp: break; // all done
|
|
rcb.cpp: else { // multiple dots to move
|
|
rcb.cpp: if (wtlo + med.wthi >= targetlo) { // all done
|
|
rcb.cpp: } // wtok = most I can move
|
|
rcb.cpp: if (dots[i].x[dim] == med.valuehi) { // only move if better
|
|
rcb.cpp: if (breakflag) break; // done if moved enough
|
|
rcb.cpp: if (targetlo-wtlo <= tolerance) break; // close enough
|
|
rcb.cpp: valuemin = med.valuehi; // iterate again
|
|
rcb.cpp: else if (wthi + med.totalhi < targethi) { // upper half TOO SMALL
|
|
rcb.cpp: if (med.countlo == 1) { // only one dot to move
|
|
rcb.cpp: if (wthi + med.wtlo < targethi) { // move it, keep iterating
|
|
rcb.cpp: else { // only move if beneficial
|
|
rcb.cpp: break; // all done
|
|
rcb.cpp: else { // multiple dots to move
|
|
rcb.cpp: if (wthi + med.wtlo >= targethi) { // all done
|
|
rcb.cpp: } // wtok = most I can move
|
|
rcb.cpp: if (dots[i].x[dim] == med.valuelo) { // only move if better
|
|
rcb.cpp: if (breakflag) break; // done if moved enough
|
|
rcb.cpp: if (targethi-wthi <= tolerance) break; // close enough
|
|
rcb.cpp: valuemax = med.valuelo; // iterate again
|
|
rcb.cpp: else // Goldilocks result: both partitions just right
|
|
rcb.cpp: // shrink the active list
|
|
rcb.cpp: // cut produces 2 sub-boxes with reduced size in dim
|
|
rcb.cpp: // compare smaller of the 2 sizes to previous dims
|
|
rcb.cpp: // keep dim that has the largest smaller
|
|
rcb.cpp: // copy results for best dim cut into dim,valuehalf,dotmark
|
|
rcb.cpp: // found median
|
|
rcb.cpp: // store cut info only if I am procmid
|
|
rcb.cpp: // use cut to shrink my RCB bounding box
|
|
rcb.cpp: // outgoing = number of dots to ship to partner
|
|
rcb.cpp: // nkeep = number of dots that have never migrated
|
|
rcb.cpp: // alert partner how many dots I'll send, read how many I'll recv
|
|
rcb.cpp: // check if need to alloc more space
|
|
rcb.cpp: // malloc comm send buffer
|
|
rcb.cpp: // fill buffer with dots that are marked for sending
|
|
rcb.cpp: // pack down the unmarked ones
|
|
rcb.cpp: // post receives for dots
|
|
rcb.cpp: // handshake before sending dots to insure recvs have been posted
|
|
rcb.cpp: // send dots to partner
|
|
rcb.cpp: // wait until all dots are received
|
|
rcb.cpp: // cut partition in half, create new communicators of 1/2 size
|
|
rcb.cpp: // clean up
|
|
rcb.cpp: // set public variables with results of rebalance
|
|
rcb.cpp:/* ----------------------------------------------------------------------
|
|
rcb.cpp: perform RCB balancing of N particles at coords X in bounding box LO/HI
|
|
rcb.cpp: defined by final lo/hi
|
|
rcb.cpp: // NOTE: worry about re-use of data structs for fix balance?
|
|
rcb.cpp:------------------------------------------------------------------------- */
|
|
rcb.cpp: // create list of my Dots
|
|
rcb.cpp: // initial bounding box = simulation box
|
|
rcb.cpp: // includes periodic or shrink-wrapped boundaries
|
|
rcb.cpp: // initialize counters
|
|
rcb.cpp: // create communicator for use in recursion
|
|
rcb.cpp: // recurse until partition is a single proc = me
|
|
rcb.cpp: // proclower,procupper = lower,upper procs in partition
|
|
rcb.cpp: // procmid = 1st proc in upper half of partition
|
|
rcb.cpp: // if odd # of procs, lower partition gets extra one
|
|
rcb.cpp: procmid = proclower + (procupper - proclower) / 2 + 1;
|
|
rcb.cpp: // determine communication partner(s)
|
|
rcb.cpp: // readnumber = # of proc partners to read from
|
|
rcb.cpp: // wttot = summed weight of entire partition
|
|
rcb.cpp: // search tolerance = largest single weight (plus epsilon)
|
|
rcb.cpp: // targetlo = desired weight in lower half of partition
|
|
rcb.cpp: // targethi = desired weight in upper half of partition
|
|
rcb.cpp: targetlo = wttot * (procmid - proclower) / (procupper + 1 - proclower);
|
|
rcb.cpp: // dim = dimension to bisect on
|
|
rcb.cpp: // do not allow choice of z dimension for 2d system
|
|
rcb.cpp: // create active list and mark array for dots
|
|
rcb.cpp: // initialize active list to all dots
|
|
rcb.cpp: // median iteration
|
|
rcb.cpp: // zoom in on bisector until correct # of dots in each half of partition
|
|
rcb.cpp: // as each iteration of median-loop begins, require:
|
|
rcb.cpp: // all non-active dots are marked with 0/1 in dotmark
|
|
rcb.cpp: // valuemin <= every active dot <= valuemax
|
|
rcb.cpp: // wtlo, wthi = total wt of non-active dots
|
|
rcb.cpp: // when leave median-loop, require only:
|
|
rcb.cpp: // valuehalf = correct cut position
|
|
rcb.cpp: // all dots <= valuehalf are marked with 0 in dotmark
|
|
rcb.cpp: // all dots >= valuehalf are marked with 1 in dotmark
|
|
rcb.cpp: // markactive = which side of cut is active = 0/1
|
|
rcb.cpp: // indexlo,indexhi = indices of dot closest to median
|
|
rcb.cpp: // choose bisector value
|
|
rcb.cpp: // use old value on 1st iteration if old cut dimension is the same
|
|
rcb.cpp: // on 2nd option: could push valuehalf towards geometric center
|
|
rcb.cpp: // with "1.0-factor" to force overshoot
|
|
rcb.cpp: valuehalf = valuemin + (targetlo - wtlo) /
|
|
rcb.cpp: // initialize local median data structure
|
|
rcb.cpp: // mark all active dots on one side or other of bisector
|
|
rcb.cpp: // also set all fields in median data struct
|
|
rcb.cpp: // save indices of closest dots on either side
|
|
rcb.cpp: if (dots[i].x[dim] <= valuehalf) { // in lower part
|
|
rcb.cpp: if (dots[i].x[dim] > medme.valuelo) { // my closest dot
|
|
rcb.cpp: } else if (dots[i].x[dim] == medme.valuelo) { // tied for closest
|
|
rcb.cpp: else { // in upper part
|
|
rcb.cpp: if (dots[i].x[dim] < medme.valuehi) { // my closest dot
|
|
rcb.cpp: } else if (dots[i].x[dim] == medme.valuehi) { // tied for closest
|
|
rcb.cpp: // combine median data struct across current subset of procs
|
|
rcb.cpp: // test median guess for convergence
|
|
rcb.cpp: // move additional dots that are next to cut across it
|
|
rcb.cpp: if (wtlo + med.totallo < targetlo) { // lower half TOO SMALL
|
|
rcb.cpp: if (med.counthi == 1) { // only one dot to move
|
|
rcb.cpp: if (wtlo + med.wthi < targetlo) { // move it, keep iterating
|
|
rcb.cpp: else { // only move if beneficial
|
|
rcb.cpp: break; // all done
|
|
rcb.cpp: else { // multiple dots to move
|
|
rcb.cpp: if (wtlo + med.wthi >= targetlo) { // all done
|
|
rcb.cpp: } // wtok = most I can move
|
|
rcb.cpp: if (dots[i].x[dim] == med.valuehi) { // only move if better
|
|
rcb.cpp: if (breakflag) break; // done if moved enough
|
|
rcb.cpp: if (targetlo-wtlo <= tolerance) break; // close enough
|
|
rcb.cpp: valuemin = med.valuehi; // iterate again
|
|
rcb.cpp: else if (wthi + med.totalhi < targethi) { // upper half TOO SMALL
|
|
rcb.cpp: if (med.countlo == 1) { // only one dot to move
|
|
rcb.cpp: if (wthi + med.wtlo < targethi) { // move it, keep iterating
|
|
rcb.cpp: else { // only move if beneficial
|
|
rcb.cpp: break; // all done
|
|
rcb.cpp: else { // multiple dots to move
|
|
rcb.cpp: if (wthi + med.wtlo >= targethi) { // all done
|
|
rcb.cpp: } // wtok = most I can move
|
|
rcb.cpp: if (dots[i].x[dim] == med.valuelo) { // only move if better
|
|
rcb.cpp: if (breakflag) break; // done if moved enough
|
|
rcb.cpp: if (targethi-wthi <= tolerance) break; // close enough
|
|
rcb.cpp: valuemax = med.valuelo; // iterate again
|
|
rcb.cpp: else // Goldilocks result: both partitions just right
|
|
rcb.cpp: // shrink the active list
|
|
rcb.cpp: // found median
|
|
rcb.cpp: // store cut info only if I am procmid
|
|
rcb.cpp: // use cut to shrink my RCB bounding box
|
|
rcb.cpp: // outgoing = number of dots to ship to partner
|
|
rcb.cpp: // nkeep = number of dots that have never migrated
|
|
rcb.cpp: // alert partner how many dots I'll send, read how many I'll recv
|
|
rcb.cpp: // check if need to alloc more space
|
|
rcb.cpp: // malloc comm send buffer
|
|
rcb.cpp: // fill buffer with dots that are marked for sending
|
|
rcb.cpp: // pack down the unmarked ones
|
|
rcb.cpp: // post receives for dots
|
|
rcb.cpp: // handshake before sending dots to insure recvs have been posted
|
|
rcb.cpp: // send dots to partner
|
|
rcb.cpp: // wait until all dots are received
|
|
rcb.cpp: // cut partition in half, create new communicators of 1/2 size
|
|
rcb.cpp: // clean up
|
|
rcb.cpp: // set public variables with results of rebalance
|
|
rcb.cpp:/* ----------------------------------------------------------------------
|
|
rcb.cpp:------------------------------------------------------------------------- */
|
|
rcb.cpp:/* ----------------------------------------------------------------------
|
|
rcb.cpp:------------------------------------------------------------------------- */
|
|
rcb.cpp:/* ----------------------------------------------------------------------
|
|
rcb.cpp:------------------------------------------------------------------------- */
|
|
rcb.cpp: // only create Irregular if not previously created
|
|
rcb.cpp: // allows Irregular to persist for multiple RCB calls by fix balance
|
|
rcb.cpp: // nsend = # of dots to request from other procs
|
|
rcb.cpp: // perform inversion via irregular comm
|
|
rcb.cpp: // nrecv = # of my dots to send to other procs
|
|
rcb.cpp: // set public variables from requests to send my dots
|
|
rcb.cpp: // clean-up
|
|
rcb.cpp:/* ----------------------------------------------------------------------
|
|
rcb.cpp:------------------------------------------------------------------------- */
|
|
rcb.cpp:// -----------------------------------------------------------------------
|
|
rcb.cpp:// DEBUG methods
|
|
rcb.cpp:// -----------------------------------------------------------------------
|
|
rcb.cpp:/*
|
|
rcb.cpp:// consistency checks on RCB results
|
|
rcb.cpp: // check that total # of dots remained the same
|
|
rcb.cpp: // check that result is load-balanced within log2(P)*max-wt
|
|
rcb.cpp: // i = smallest power-of-2 >= nprocs
|
|
rcb.cpp: // tolerance = largest-single-weight*log2(nprocs)
|
|
rcb.cpp: // check that final set of points is inside RCB box of each proc
|
|
rcb.cpp:// stats for RCB decomposition
|
|
rcb.cpp: // distribution info
|
|
rcb.cpp: wttot/nprocs,wtmax,wtmin);
|
|
rcb.cpp: // counter info
|
|
rcb.cpp: ave = ((double) sum)/nprocs;
|
|
rcb.cpp: ave = ((double) sum)/nprocs;
|
|
rcb.cpp: ave = ((double) sum)/nprocs;
|
|
rcb.cpp: ave = ((double) sum)/nprocs;
|
|
rcb.cpp: ave = ((double) sum)/nprocs;
|
|
rcb.cpp: ave = ((double) sum)/nprocs;
|
|
rcb.cpp: ave = ((double) sum)/nprocs;
|
|
rcb.cpp: // RCB boxes for each proc
|
|
rcb.cpp:*/
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
read_data.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:// lmptype.h must be first b/c this file uses MAXBIGINT and includes mpi.h
|
|
read_data.cpp:// due to OpenMPI bug which sets INT64_MAX via its mpi.h
|
|
read_data.cpp:// before lmptype.h can set flags to insure it is done correctly
|
|
read_data.cpp:#define DELTA 4 // must be 2 or larger
|
|
read_data.cpp:#define MAXBODY 32 // max # of lines in one body
|
|
read_data.cpp: // customize for new sections
|
|
read_data.cpp:#define NSECTIONS 25 // change when add to header::section_keywords
|
|
read_data.cpp:// pair style suffixes to ignore
|
|
read_data.cpp:// when matching Pair Coeffs comment to currently-defined pair style
|
|
read_data.cpp:const char *suffixes[] = {"/cuda","/gpu","/opt","/omp","/kk",
|
|
read_data.cpp: "/coul/cut","/coul/long","/coul/msm",
|
|
read_data.cpp: "/coul/dsf","/coul/debye","/coul/charmm",
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp: // customize for new sections
|
|
read_data.cpp: // pointers to atom styles that store extra info
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp: // optional args
|
|
read_data.cpp: } else if (strcmp(arg[iarg],"extra/atom/types") == 0) {
|
|
read_data.cpp: } else if (strcmp(arg[iarg],"extra/bond/types") == 0) {
|
|
read_data.cpp: } else if (strcmp(arg[iarg],"extra/angle/types") == 0) {
|
|
read_data.cpp: } else if (strcmp(arg[iarg],"extra/dihedral/types") == 0) {
|
|
read_data.cpp: } else if (strcmp(arg[iarg],"extra/improper/types") == 0) {
|
|
read_data.cpp: // error checks
|
|
read_data.cpp: // first time system initialization
|
|
read_data.cpp: // compute atomID offset for addflag = MERGE
|
|
read_data.cpp: // set up pointer to hold original styles while we replace them with "zero"
|
|
read_data.cpp: // -----------------------------------------------------------------
|
|
read_data.cpp: // perform 1-pass read if no molecular topology in file
|
|
read_data.cpp: // perform 2-pass read if molecular topology,
|
|
read_data.cpp: // first pass calculates max topology/atom
|
|
read_data.cpp: // flags for this data file
|
|
read_data.cpp: // values in this data file
|
|
read_data.cpp: // open file on proc 0
|
|
read_data.cpp: // read header info
|
|
read_data.cpp: // problem setup using info from header
|
|
read_data.cpp: // only done once, if firstpass and first data file
|
|
read_data.cpp: // apply extra settings before grow(), even if no topology in file
|
|
read_data.cpp: // deallocate() insures new settings are used for topology arrays
|
|
read_data.cpp: // if per-atom topology is in file, another grow() is done below
|
|
read_data.cpp: else n = static_cast<int> (LB_FACTOR * atom->natoms / comm->nprocs);
|
|
read_data.cpp: // change simulation box to be union of existing box and new box + shift
|
|
read_data.cpp: // only done if firstpass and not first data file
|
|
read_data.cpp: // NOTE: not sure what to do about tilt value in subsequent data files
|
|
read_data.cpp: //if (triclinic) {
|
|
read_data.cpp: // domain->xy = xy; domain->xz = xz; domain->yz = yz;
|
|
read_data.cpp: // }
|
|
read_data.cpp: // customize for new sections
|
|
read_data.cpp: // read rest of file in free format
|
|
read_data.cpp: // if special fix matches, it processes section
|
|
read_data.cpp: } else skip_lines(ntypes*(ntypes+1)/2);
|
|
read_data.cpp: // error if natoms > 0 yet no atoms were read
|
|
read_data.cpp: // close file
|
|
read_data.cpp: // done if this was 2nd pass
|
|
read_data.cpp: // at end of 1st pass, error check for required sections
|
|
read_data.cpp: // customize for new sections
|
|
read_data.cpp: // break out of loop if no molecular topology in file
|
|
read_data.cpp: // else make 2nd pass
|
|
read_data.cpp: // reallocate bond,angle,diehdral,improper arrays via grow()
|
|
read_data.cpp: // will use new bond,angle,dihedral,improper per-atom values from 1st pass
|
|
read_data.cpp: // will also observe extra settings even if bond/etc topology not in file
|
|
read_data.cpp: // leaves other atom arrays unchanged, since already nmax in length
|
|
read_data.cpp: // init per-atom fix/compute/variable values for created atoms
|
|
read_data.cpp: // assign atoms added by this data file to specified group
|
|
read_data.cpp: // create special bond lists for molecular systems
|
|
read_data.cpp: // for atom style template systems, count total bonds,angles,etc
|
|
read_data.cpp: atom->nbonds /= 2;
|
|
read_data.cpp: atom->nangles /= 3;
|
|
read_data.cpp: atom->ndihedrals /= 4;
|
|
read_data.cpp: atom->nimpropers /= 4;
|
|
read_data.cpp: // for atom style template systems
|
|
read_data.cpp: // insure nbondtypes,etc are still consistent with template molecules,
|
|
read_data.cpp: // in case data file re-defined them
|
|
read_data.cpp: // if adding atoms, migrate atoms to new processors
|
|
read_data.cpp: // use irregular() b/c box size could have changed dramaticaly
|
|
read_data.cpp: // resulting in procs now owning very different subboxes
|
|
read_data.cpp: // with their previously owned atoms now far outside the subbox
|
|
read_data.cpp: // shrink-wrap the box if necessary and move atoms to new procs
|
|
read_data.cpp: // if atoms are lost is b/c data file box was far from shrink-wrapped
|
|
read_data.cpp: // do not use irregular() comm, which would not lose atoms,
|
|
read_data.cpp: // b/c then user could specify data file box as far too big and empty
|
|
read_data.cpp: // do comm->init() but not comm->setup() b/c pair/neigh cutoffs not yet set
|
|
read_data.cpp: // need call to map_set() b/c comm->exchange clears atom map
|
|
read_data.cpp: // restore old styles, when reading with nocoeff flag given
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // customize for new sections
|
|
read_data.cpp: // skip 1st line of file
|
|
read_data.cpp: // read a line and bcast length
|
|
read_data.cpp: // if n = 0 then end-of-file so return with blank line
|
|
read_data.cpp: // trim anything from '#' onward
|
|
read_data.cpp: // if line is blank, continue
|
|
read_data.cpp: // allow special fixes first chance to match and process the line
|
|
read_data.cpp: // if fix matches, continue to next header line
|
|
read_data.cpp: // search line for header keyword and set corresponding variable
|
|
read_data.cpp: // customize for new header lines
|
|
read_data.cpp: // check for triangles before angles so "triangles" not matched as "angles"
|
|
read_data.cpp: // Atom class type settings are only set by first data file
|
|
read_data.cpp: // these settings only used by first data file
|
|
read_data.cpp: // local copy of box info
|
|
read_data.cpp: // so can treat differently for first vs subsequent data files
|
|
read_data.cpp: // error check on total system size
|
|
read_data.cpp: // check that exiting string is a valid section keyword
|
|
read_data.cpp: // error checks on header values
|
|
read_data.cpp: // must be consistent with atom style and other header values
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // check that all atoms were assigned correctly
|
|
read_data.cpp: // check that atom IDs are valid
|
|
read_data.cpp: // create global mapping of atoms
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // allocate count if firstpass
|
|
read_data.cpp: // read and process bonds
|
|
read_data.cpp: // if firstpass: tally max bond/atom and return
|
|
read_data.cpp: // if addflag = NONE, store max bond/atom with extra
|
|
read_data.cpp: // else just check actual max does not exceed existing max
|
|
read_data.cpp: if (screen) fprintf(screen," %d = max bonds/atom\n",maxall);
|
|
read_data.cpp: if (logfile) fprintf(logfile," %d = max bonds/atom\n",maxall);
|
|
read_data.cpp: // if 2nd pass: check that bonds were assigned correctly
|
|
read_data.cpp: if (screen) fprintf(screen," " BIGINT_FORMAT " bonds\n",sum/factor);
|
|
read_data.cpp: if (logfile) fprintf(logfile," " BIGINT_FORMAT " bonds\n",sum/factor);
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // allocate count if firstpass
|
|
read_data.cpp: // read and process angles
|
|
read_data.cpp: // if firstpass: tally max angle/atom and return
|
|
read_data.cpp: // if addflag = NONE, store max angle/atom with extra
|
|
read_data.cpp: // else just check actual max does not exceed existing max
|
|
read_data.cpp: if (screen) fprintf(screen," %d = max angles/atom\n",maxall);
|
|
read_data.cpp: if (logfile) fprintf(logfile," %d = max angles/atom\n",maxall);
|
|
read_data.cpp: // if 2nd pass: check that angles were assigned correctly
|
|
read_data.cpp: if (screen) fprintf(screen," " BIGINT_FORMAT " angles\n",sum/factor);
|
|
read_data.cpp: if (logfile) fprintf(logfile," " BIGINT_FORMAT " angles\n",sum/factor);
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // allocate count if firstpass
|
|
read_data.cpp: // read and process dihedrals
|
|
read_data.cpp: // if firstpass: tally max dihedral/atom and return
|
|
read_data.cpp: // if addflag = NONE, store max dihedral/atom with extra
|
|
read_data.cpp: // else just check actual max does not exceed existing max
|
|
read_data.cpp: if (screen) fprintf(screen," %d = max dihedrals/atom\n",maxall);
|
|
read_data.cpp: if (logfile) fprintf(logfile," %d = max dihedrals/atom\n",maxall);
|
|
read_data.cpp: // if 2nd pass: check that dihedrals were assigned correctly
|
|
read_data.cpp: if (screen) fprintf(screen," " BIGINT_FORMAT " dihedrals\n",sum/factor);
|
|
read_data.cpp: if (logfile) fprintf(logfile," " BIGINT_FORMAT " dihedrals\n",sum/factor);
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // allocate count if firstpass
|
|
read_data.cpp: // read and process impropers
|
|
read_data.cpp: // if firstpass: tally max improper/atom and return
|
|
read_data.cpp: // if addflag = NONE, store max improper/atom
|
|
read_data.cpp: // else just check it does not exceed existing max
|
|
read_data.cpp: if (screen) fprintf(screen," %d = max impropers/atom\n",maxall);
|
|
read_data.cpp: if (logfile) fprintf(logfile," %d = max impropers/atom\n",maxall);
|
|
read_data.cpp: // if 2nd pass: check that impropers were assigned correctly
|
|
read_data.cpp: if (screen) fprintf(screen," " BIGINT_FORMAT " impropers\n",sum/factor);
|
|
read_data.cpp: if (logfile) fprintf(logfile," " BIGINT_FORMAT " impropers\n",sum/factor);
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // nmax = max # of bodies to read in this chunk
|
|
read_data.cpp: // nchunk = actual # read
|
|
read_data.cpp: // read lines one at a time into buffer and count words
|
|
read_data.cpp: // count to ninteger and ndouble until have enough lines
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp: int nsq = ntypes * (ntypes+1) / 2;
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp:/* ---------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp: keyword is all text on line w/out leading & trailing white space
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp: // proc 0 reads upto non-blank line plus 1 following line
|
|
read_data.cpp: // eof is set to 1 if any read hits end-of-file
|
|
read_data.cpp: // if eof, set keyword empty and return
|
|
read_data.cpp: // bcast keyword line to all procs
|
|
read_data.cpp: // store optional "style" following comment char '#' after keyword
|
|
read_data.cpp: // copy non-whitespace portion of line into keyword
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp: if addstr != NULL, add addstr as extra arg for class2 angle/dihedral/improper
|
|
read_data.cpp: if noffset, add offset to first noffset args, which are atom/bond/etc types
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_data.cpp:/* ----------------------------------------------------------------------
|
|
read_data.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
read_dump.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp:// lmptype.h must be first b/c this file uses MAXBIGINT and includes mpi.h
|
|
read_dump.cpp:// due to OpenMPI bug which sets INT64_MAX via its mpi.h
|
|
read_dump.cpp:// before lmptype.h can set flags to insure it is done correctly
|
|
read_dump.cpp:// also in reader_native.cpp
|
|
read_dump.cpp:/* ---------------------------------------------------------------------- */
|
|
read_dump.cpp:/* ---------------------------------------------------------------------- */
|
|
read_dump.cpp:/* ---------------------------------------------------------------------- */
|
|
read_dump.cpp: // find the snapshot and read/bcast/process header info
|
|
read_dump.cpp: // reset timestep to nstep
|
|
read_dump.cpp: // counters
|
|
read_dump.cpp: // read in the snapshot and reset system
|
|
read_dump.cpp: // print out stats
|
|
read_dump.cpp:/* ---------------------------------------------------------------------- */
|
|
read_dump.cpp:/* ---------------------------------------------------------------------- */
|
|
read_dump.cpp: // allocate snapshot field buffer
|
|
read_dump.cpp: // create reader class
|
|
read_dump.cpp: // match readerstyle to options in style_reader.h
|
|
read_dump.cpp: if (0) return; // dummy line to enable else-if macro expansion
|
|
read_dump.cpp: // unrecognized style
|
|
read_dump.cpp: // pass any arguments to reader
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp: // exit file loop when dump timestep >= nrequest
|
|
read_dump.cpp: // or files exhausted
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp: // exit file loop when dump timestep matches all criteria
|
|
read_dump.cpp: // or files exhausted
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp: // local copy of snapshot box parameters
|
|
read_dump.cpp: // used in xfield,yfield,zfield when converting dump atom to absolute coords
|
|
read_dump.cpp: // done if not checking fields
|
|
read_dump.cpp: // error check on current vs new box and fields
|
|
read_dump.cpp: // triclinic_snap < 0 means no box info in file
|
|
read_dump.cpp: // error check on requested fields exisiting in dump file
|
|
read_dump.cpp: // all explicitly requested x,y,z must have consistent scaling & wrapping
|
|
read_dump.cpp: "Read_dump xyz fields do not have consistent scaling/wrapping");
|
|
read_dump.cpp: // set scaled/wrapped based on xyz flags
|
|
read_dump.cpp: // scaled, triclinic coords require all 3 x,y,z fields, to perform unscaling
|
|
read_dump.cpp: // set yindex,zindex = column index of Y and Z fields in fields array
|
|
read_dump.cpp: // needed for unscaling to absolute coords in xfield(), yfield(), zfield()
|
|
read_dump.cpp:/* ---------------------------------------------------------------------- */
|
|
read_dump.cpp: // initialize counters
|
|
read_dump.cpp: // if purgeflag set, delete all current atoms
|
|
read_dump.cpp: // to match existing atoms to dump atoms:
|
|
read_dump.cpp: // must build map if not a molecular system
|
|
read_dump.cpp: // uflag[i] = 1 for each owned atom appearing in dump
|
|
read_dump.cpp: // ucflag = similar flag for each chunk atom, used in process_atoms()
|
|
read_dump.cpp: // read, broadcast, and process atoms from snapshot in chunks
|
|
read_dump.cpp: // if addflag set, add tags to new atoms if possible
|
|
read_dump.cpp: // if trimflag set, delete atoms not replaced by snapshot atoms
|
|
read_dump.cpp: // can now delete uflag arrays
|
|
read_dump.cpp: // delete atom map if created it above
|
|
read_dump.cpp: // else reinitialize map for current atoms
|
|
read_dump.cpp: // do this before migrating atoms to new procs via Irregular
|
|
read_dump.cpp: // overwrite simulation box with dump snapshot box if requested
|
|
read_dump.cpp: // reallocate processors to box
|
|
read_dump.cpp: // move atoms back inside simulation box and to new processors
|
|
read_dump.cpp: // use remap() instead of pbc() in case atoms moved a long distance
|
|
read_dump.cpp: // adjust image flags of all atoms (old and new) based on current box
|
|
read_dump.cpp: // use irregular() in case atoms moved a long distance
|
|
read_dump.cpp: // check that atom IDs are valid
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp: // per-field vectors, leave space for ID and TYPE
|
|
read_dump.cpp: // add id and type fields as needed
|
|
read_dump.cpp: // scan ahead to see if "add yes" keyword/value is used
|
|
read_dump.cpp: // requires extra "type" field from from dump file
|
|
read_dump.cpp: // parse fields
|
|
read_dump.cpp: // check for no fields
|
|
read_dump.cpp: // parse optional args
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp: use round-robin method, b/c atom coords may not be inside simulation box
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp: // check if new atom matches one I own
|
|
read_dump.cpp: // setting m = -1 forces new atom not to match
|
|
read_dump.cpp: // NOTE: atom ID in fields is stored as double, not as ubuf
|
|
read_dump.cpp: // so can only cast it to tagint, thus cannot be full 64-bit ID
|
|
read_dump.cpp: // current image flags
|
|
read_dump.cpp: // overwrite atom attributes with field info
|
|
read_dump.cpp: // start from field 1 since 0 = id, 1 will be skipped if type
|
|
read_dump.cpp: // replace image flag in case changed by ix,iy,iz fields or unwrapping
|
|
read_dump.cpp: // create any atoms in chunk that no processor owned
|
|
read_dump.cpp: // add atoms in round-robin sequence on processors
|
|
read_dump.cpp: // cannot do it geometrically b/c dump coords may not be in simulation box
|
|
read_dump.cpp: // each processor adds every Pth atom
|
|
read_dump.cpp: // create type and coord fields from dump file
|
|
read_dump.cpp: // coord = 0.0 unless corresponding dump file field was specified
|
|
read_dump.cpp: // create the atom on proc that owns it
|
|
read_dump.cpp: // reset v,image ptrs in case they are reallocated
|
|
read_dump.cpp: // set atom attributes from other dump file fields
|
|
read_dump.cpp: // replace image flag in case changed by ix,iy,iz fields
|
|
read_dump.cpp: // init per-atom fix/compute/variable values for created atoms
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
read_dump.cpp:/* ----------------------------------------------------------------------
|
|
read_dump.cpp:------------------------------------------------------------------------- */
|
|
reader.cpp:/* ----------------------------------------------------------------------
|
|
reader.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
reader.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
reader.cpp:------------------------------------------------------------------------- */
|
|
reader.cpp:/* ---------------------------------------------------------------------- */
|
|
reader.cpp:/* ----------------------------------------------------------------------
|
|
reader.cpp:------------------------------------------------------------------------- */
|
|
reader.cpp:/* ----------------------------------------------------------------------
|
|
reader.cpp:------------------------------------------------------------------------- */
|
|
reader_native.cpp:/* ----------------------------------------------------------------------
|
|
reader_native.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
reader_native.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
reader_native.cpp:------------------------------------------------------------------------- */
|
|
reader_native.cpp:#define MAXLINE 1024 // max line length in dump file
|
|
reader_native.cpp:// also in read_dump.cpp
|
|
reader_native.cpp:/* ---------------------------------------------------------------------- */
|
|
reader_native.cpp:/* ---------------------------------------------------------------------- */
|
|
reader_native.cpp:/* ----------------------------------------------------------------------
|
|
reader_native.cpp:------------------------------------------------------------------------- */
|
|
reader_native.cpp:/* ----------------------------------------------------------------------
|
|
reader_native.cpp:------------------------------------------------------------------------- */
|
|
reader_native.cpp: // invoke read_lines() in chunks no larger than MAXSMALLINT
|
|
reader_native.cpp:/* ----------------------------------------------------------------------
|
|
reader_native.cpp: xyz flags = UNSET (not a requested field), SCALE/WRAP as in enum
|
|
reader_native.cpp:------------------------------------------------------------------------- */
|
|
reader_native.cpp: // if no field info requested, just return
|
|
reader_native.cpp: // exatract column labels and match to requested fields
|
|
reader_native.cpp: // match each field with a column of per-atom data
|
|
reader_native.cpp: // if fieldlabel set, match with explicit column
|
|
reader_native.cpp: // else infer one or more column matches from fieldtype
|
|
reader_native.cpp: // xyz flag set by scaleflag + wrapflag (if fieldlabel set) or column label
|
|
reader_native.cpp: // set fieldflag = -1 if any unfound fields
|
|
reader_native.cpp: // create internal vector of word ptrs for future parsing of per-atom lines
|
|
reader_native.cpp:/* ----------------------------------------------------------------------
|
|
reader_native.cpp:------------------------------------------------------------------------- */
|
|
reader_native.cpp: // tokenize the line
|
|
reader_native.cpp: // convert selected fields to floats
|
|
reader_native.cpp:/* ----------------------------------------------------------------------
|
|
reader_native.cpp:------------------------------------------------------------------------- */
|
|
reader_native.cpp:/* ----------------------------------------------------------------------
|
|
reader_native.cpp:------------------------------------------------------------------------- */
|
|
reader_xyz.cpp:/* ----------------------------------------------------------------------
|
|
reader_xyz.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
reader_xyz.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
reader_xyz.cpp:------------------------------------------------------------------------- */
|
|
reader_xyz.cpp:/* ----------------------------------------------------------------------
|
|
reader_xyz.cpp:------------------------------------------------------------------------- */
|
|
reader_xyz.cpp:#define MAXLINE 1024 // max line length in dump file
|
|
reader_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
reader_xyz.cpp:/* ---------------------------------------------------------------------- */
|
|
reader_xyz.cpp:/* ----------------------------------------------------------------------
|
|
reader_xyz.cpp:------------------------------------------------------------------------- */
|
|
reader_xyz.cpp: // first line has to have the number of atoms
|
|
reader_xyz.cpp: // truncate the string to the first whitespace,
|
|
reader_xyz.cpp: // so force->bnumeric() does not hiccup
|
|
reader_xyz.cpp: // skip over comment/title line
|
|
reader_xyz.cpp: // fake time step numbers
|
|
reader_xyz.cpp: // count this frame
|
|
reader_xyz.cpp:/* ----------------------------------------------------------------------
|
|
reader_xyz.cpp:------------------------------------------------------------------------- */
|
|
reader_xyz.cpp: // invoke read_lines() in chunks no larger than MAXSMALLINT
|
|
reader_xyz.cpp:/* ----------------------------------------------------------------------
|
|
reader_xyz.cpp:------------------------------------------------------------------------- */
|
|
reader_xyz.cpp: // signal that we have no box info at all
|
|
reader_xyz.cpp: // if no field info requested, just return
|
|
reader_xyz.cpp: // for xyz we know nothing about the style of coordinates,
|
|
reader_xyz.cpp: // so caller has to set the proper flags
|
|
reader_xyz.cpp: // copy fieldtype list for supported fields
|
|
reader_xyz.cpp:/* ----------------------------------------------------------------------
|
|
reader_xyz.cpp:------------------------------------------------------------------------- */
|
|
reader_xyz.cpp: // XXX: we could insert an element2type translation here
|
|
reader_xyz.cpp: // XXX: for now we flag unrecognized types as type 0,
|
|
reader_xyz.cpp: // XXX: which should trigger an error, if LAMMPS uses it.
|
|
reader_xyz.cpp:/* ----------------------------------------------------------------------
|
|
reader_xyz.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
read_restart.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:// same as write_restart.cpp
|
|
read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
read_restart.cpp: // check for remap option
|
|
read_restart.cpp: // if filename contains "*", search dir for latest restart file
|
|
read_restart.cpp: // check for multiproc files and an MPI-IO filename
|
|
read_restart.cpp: // open single restart file or base file for multiproc case
|
|
read_restart.cpp: // read magic string, endian flag, numeric version
|
|
read_restart.cpp: // read header info which creates simulation box
|
|
read_restart.cpp: // problem setup using info from header
|
|
read_restart.cpp: else n = static_cast<int> (LB_FACTOR * atom->natoms / nprocs);
|
|
read_restart.cpp: // read groups, ntype-length arrays, force field, fix info from file
|
|
read_restart.cpp: // nextra = max # of extra quantities stored with each atom
|
|
read_restart.cpp: // read file layout info
|
|
read_restart.cpp: // close header file if in multiproc mode
|
|
read_restart.cpp: // read per-proc info
|
|
read_restart.cpp: // MPI-IO input from single file
|
|
read_restart.cpp: // input of single native file
|
|
read_restart.cpp: // nprocs_file = # of chunks in file
|
|
read_restart.cpp: // proc 0 reads a chunk and bcasts it to other procs
|
|
read_restart.cpp: // each proc unpacks the atoms, saving ones in it's sub-domain
|
|
read_restart.cpp: // if remapflag set, remap the atom to box before checking sub-domain
|
|
read_restart.cpp: // check for atom in sub-domain differs for orthogonal vs triclinic box
|
|
read_restart.cpp: // input of multiple native files with procs <= files
|
|
read_restart.cpp: // # of files = multiproc_file
|
|
read_restart.cpp: // each proc reads a subset of files, striding by nprocs
|
|
read_restart.cpp: // each proc keeps all atoms in all perproc chunks in its files
|
|
read_restart.cpp: // input of multiple native files with procs > files
|
|
read_restart.cpp: // # of files = multiproc_file
|
|
read_restart.cpp: // cluster procs based on # of files
|
|
read_restart.cpp: // 1st proc in each cluster reads per-proc chunks from file
|
|
read_restart.cpp: // sends chunks round-robin to other procs in its cluster
|
|
read_restart.cpp: // each proc keeps all atoms in its perproc chunks in file
|
|
read_restart.cpp: // nclusterprocs = # of procs in my cluster that read from one file
|
|
read_restart.cpp: // filewriter = 1 if this proc reads file, else 0
|
|
read_restart.cpp: // fileproc = ID of proc in my cluster who reads from file
|
|
read_restart.cpp: // clustercomm = MPI communicator within my cluster of procs
|
|
read_restart.cpp: int icluster = static_cast<int> ((bigint) me * nfile/nprocs);
|
|
read_restart.cpp: int fileproc = static_cast<int> ((bigint) icluster * nprocs/nfile);
|
|
read_restart.cpp: int fcluster = static_cast<int> ((bigint) fileproc * nfile/nprocs);
|
|
read_restart.cpp: static_cast<int> ((bigint) (icluster+1) * nprocs/nfile);
|
|
read_restart.cpp: fcluster = static_cast<int> ((bigint) fileprocnext * nfile/nprocs);
|
|
read_restart.cpp: // clean-up memory
|
|
read_restart.cpp: // for multiproc or MPI-IO files:
|
|
read_restart.cpp: // perform irregular comm to migrate atoms to correct procs
|
|
read_restart.cpp: // if remapflag set, remap all atoms I read back to box before migrating
|
|
read_restart.cpp: // create a temporary fix to hold and migrate extra atom info
|
|
read_restart.cpp: // necessary b/c irregular will migrate atoms
|
|
read_restart.cpp: // move atoms to new processors via irregular()
|
|
read_restart.cpp: // turn sorting on in migrate_atoms() to avoid non-reproducible restarts
|
|
read_restart.cpp: // in case read by different proc than wrote restart file
|
|
read_restart.cpp: // first do map_init() since irregular->migrate_atoms() will do map_clear()
|
|
read_restart.cpp: // put extra atom info held by fix back into atom->extra
|
|
read_restart.cpp: // destroy temporary fix
|
|
read_restart.cpp: // check that all atoms were assigned to procs
|
|
read_restart.cpp: // check that atom IDs are valid
|
|
read_restart.cpp: // create global mapping of atoms
|
|
read_restart.cpp: // create special bond lists for molecular systems
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp: // separate infile into dir + filename
|
|
read_restart.cpp: if (strchr(infile,'/')) {
|
|
read_restart.cpp: ptr = strrchr(infile,'/');
|
|
read_restart.cpp: *ptr = '/';
|
|
read_restart.cpp: strcpy(dirname,"./");
|
|
read_restart.cpp: // if filename contains "%" replace "%" with "base"
|
|
read_restart.cpp: // scan all files in directory, searching for files that match pattern
|
|
read_restart.cpp: // maxnum = largest int that matches "*"
|
|
read_restart.cpp: // create outfile with maxint substituted for "*"
|
|
read_restart.cpp: // use original infile, not pattern, since need to retain "%" in filename
|
|
read_restart.cpp: // clean up
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp: // read flags and fields until flag = -1
|
|
read_restart.cpp: // check restart file version, warn if different
|
|
read_restart.cpp: // check lmptype.h sizes, error if different
|
|
read_restart.cpp: // reset unit_style only if different
|
|
read_restart.cpp: // so that timestep,neighbor-skin are not changed
|
|
read_restart.cpp: // set dimension from restart file
|
|
read_restart.cpp: // read nprocs from restart file, warn if different
|
|
read_restart.cpp: // don't set procgrid, warn if different
|
|
read_restart.cpp: // don't set newton_pair, leave input script value unchanged
|
|
read_restart.cpp: // set newton_bond from restart file
|
|
read_restart.cpp: // warn if different and input script settings are not default
|
|
read_restart.cpp: // set boundary settings from restart file
|
|
read_restart.cpp: // warn if different and input script settings are not default
|
|
read_restart.cpp: // create new AtomVec class using any stored args
|
|
read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
read_restart.cpp: // on rank 0 read in the chunk sizes that were written out
|
|
read_restart.cpp: // then consolidate them and compute offsets relative to the
|
|
read_restart.cpp: // end of the header info to fit the current partition size
|
|
read_restart.cpp: // if the number of ranks that did the writing is different
|
|
read_restart.cpp: int init_chunk_number = nprocs_file/nprocs;
|
|
read_restart.cpp: // scatter chunk sizes and offsets to all procs
|
|
read_restart.cpp: // if MPI-IO file, broadcast the end of the header offste
|
|
read_restart.cpp: // this allows all ranks to compute offset to their data
|
|
read_restart.cpp:// ----------------------------------------------------------------------
|
|
read_restart.cpp:// ----------------------------------------------------------------------
|
|
read_restart.cpp:// low-level fread methods
|
|
read_restart.cpp:// ----------------------------------------------------------------------
|
|
read_restart.cpp:// ----------------------------------------------------------------------
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
read_restart.cpp:/* ----------------------------------------------------------------------
|
|
read_restart.cpp:------------------------------------------------------------------------- */
|
|
region_block.cpp:/* ----------------------------------------------------------------------
|
|
region_block.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_block.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_block.cpp:------------------------------------------------------------------------- */
|
|
region_block.cpp:/* ---------------------------------------------------------------------- */
|
|
region_block.cpp: // error check
|
|
region_block.cpp: // extent of block
|
|
region_block.cpp: // particle could be close to all 6 planes
|
|
region_block.cpp: // particle can only touch 3 planes
|
|
region_block.cpp: // open face data structs
|
|
region_block.cpp: // face[0]
|
|
region_block.cpp: // face[1]
|
|
region_block.cpp: // face[2]
|
|
region_block.cpp: // face[3]
|
|
region_block.cpp: // face[4]
|
|
region_block.cpp: // face[5]
|
|
region_block.cpp:/* ---------------------------------------------------------------------- */
|
|
region_block.cpp:/* ----------------------------------------------------------------------
|
|
region_block.cpp:------------------------------------------------------------------------- */
|
|
region_block.cpp:/* ----------------------------------------------------------------------
|
|
region_block.cpp: no contact if outside (possible if called from union/intersect)
|
|
region_block.cpp:------------------------------------------------------------------------- */
|
|
region_block.cpp: // x is exterior to block
|
|
region_block.cpp: // x is interior to block or on its surface
|
|
region_block.cpp:/* ----------------------------------------------------------------------
|
|
region_block.cpp: no contact if inside (possible if called from union/intersect)
|
|
region_block.cpp:------------------------------------------------------------------------- */
|
|
region_block.cpp: // x is far enough from block that there is no contact
|
|
region_block.cpp: // x is interior to block
|
|
region_block.cpp: // x is exterior to block or on its surface
|
|
region_block.cpp: // xp,yp,zp = point on surface of block that x is closest to
|
|
region_block.cpp: // could be edge or corner pt of block
|
|
region_block.cpp: // do not add contact point if r >= cutoff
|
|
region_block.cpp:/*------------------------------------------------------------------------
|
|
region_block.cpp:--------------------------------------------------------------------------*/
|
|
region_block.cpp: // check if point projects inside of face
|
|
region_block.cpp: // check each edge
|
|
region_block.cpp:/*------------------------------------------------------------------------
|
|
region_block.cpp:--------------------------------------------------------------------------*/
|
|
region_cone.cpp:/* ----------------------------------------------------------------------
|
|
region_cone.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_cone.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_cone.cpp:------------------------------------------------------------------------- */
|
|
region_cone.cpp:/* ----------------------------------------------------------------------
|
|
region_cone.cpp:------------------------------------------------------------------------- */
|
|
region_cone.cpp:/* ---------------------------------------------------------------------- */
|
|
region_cone.cpp: // check open face settings
|
|
region_cone.cpp: // error check
|
|
region_cone.cpp: // extent of cone
|
|
region_cone.cpp: // particle could be close to cone surface and 2 ends
|
|
region_cone.cpp: // particle can only touch surface and 1 end
|
|
region_cone.cpp:/* ---------------------------------------------------------------------- */
|
|
region_cone.cpp:/* ----------------------------------------------------------------------
|
|
region_cone.cpp:------------------------------------------------------------------------- */
|
|
region_cone.cpp: currentradius = radiuslo + (x-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: currentradius = radiuslo + (y-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: currentradius = radiuslo + (z-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp:/* ----------------------------------------------------------------------
|
|
region_cone.cpp: no contact if outside (possible if called from union/intersect)
|
|
region_cone.cpp:------------------------------------------------------------------------- */
|
|
region_cone.cpp: currentradius = radiuslo + (x[0]-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: // x is exterior to cone
|
|
region_cone.cpp: // x is interior to cone or on its surface
|
|
region_cone.cpp: // surflo = pt on outer circle of bottom end plane, same dir as x vs axis
|
|
region_cone.cpp: // surfhi = pt on outer circle of top end plane, same dir as x vs axis
|
|
region_cone.cpp: surflo[1] = c1 + del1*radiuslo/r;
|
|
region_cone.cpp: surflo[2] = c2 + del2*radiuslo/r;
|
|
region_cone.cpp: surfhi[1] = c1 + del1*radiushi/r;
|
|
region_cone.cpp: surfhi[2] = c2 + del2*radiushi/r;
|
|
region_cone.cpp: (radiushi-radiuslo)/(hi-lo));
|
|
region_cone.cpp: (radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: // y is exterior to cone
|
|
region_cone.cpp: // y is interior to cone or on its surface
|
|
region_cone.cpp: // surflo = pt on outer circle of bottom end plane, same dir as y vs axis
|
|
region_cone.cpp: // surfhi = pt on outer circle of top end plane, same dir as y vs axis
|
|
region_cone.cpp: surflo[0] = c1 + del1*radiuslo/r;
|
|
region_cone.cpp: surflo[2] = c2 + del2*radiuslo/r;
|
|
region_cone.cpp: surfhi[0] = c1 + del1*radiushi/r;
|
|
region_cone.cpp: surfhi[2] = c2 + del2*radiushi/r;
|
|
region_cone.cpp: (radiushi-radiuslo)/(hi-lo));
|
|
region_cone.cpp: currentradius = radiuslo + (x[2]-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: // z is exterior to cone
|
|
region_cone.cpp: // z is interior to cone or on its surface
|
|
region_cone.cpp: // surflo = pt on outer circle of bottom end plane, same dir as z vs axis
|
|
region_cone.cpp: // surfhi = pt on outer circle of top end plane, same dir as z vs axis
|
|
region_cone.cpp: surflo[0] = c1 + del1*radiuslo/r;
|
|
region_cone.cpp: surflo[1] = c2 + del2*radiuslo/r;
|
|
region_cone.cpp: surfhi[0] = c1 + del1*radiushi/r;
|
|
region_cone.cpp: surfhi[1] = c2 + del2*radiushi/r;
|
|
region_cone.cpp: (radiushi-radiuslo)/(hi-lo));
|
|
region_cone.cpp:/* ----------------------------------------------------------------------
|
|
region_cone.cpp: no contact if inside (possible if called from union/intersect)
|
|
region_cone.cpp:------------------------------------------------------------------------- */
|
|
region_cone.cpp: currentradius = radiuslo + (x[0]-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: // radius of curvature, only used for granular walls
|
|
region_cone.cpp: // x is far enough from cone that there is no contact
|
|
region_cone.cpp: // x is interior to cone
|
|
region_cone.cpp: // x is exterior to cone or on its surface
|
|
region_cone.cpp: // corner1234 = 4 corner pts of half trapezoid = cone surf in plane of x
|
|
region_cone.cpp: // project x to 3 line segments in half trapezoid (4th is axis of cone)
|
|
region_cone.cpp: // nearest = point on surface of cone that x is closest to
|
|
region_cone.cpp: // could be edge of cone
|
|
region_cone.cpp: // do not add contact point if r >= cutoff
|
|
region_cone.cpp: corner1[1] = c1 + del1*radiuslo/r;
|
|
region_cone.cpp: corner1[2] = c2 + del2*radiuslo/r;
|
|
region_cone.cpp: corner2[1] = c1 + del1*radiushi/r;
|
|
region_cone.cpp: corner2[2] = c2 + del2*radiushi/r;
|
|
region_cone.cpp: crad = -2.0*(radiuslo + (nearest[0]-lo)*(radiushi-radiuslo)/(hi-lo));
|
|
region_cone.cpp: currentradius = radiuslo + (x[1]-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: // radius of curvature, only used for granular walls
|
|
region_cone.cpp: // y is far enough from cone that there is no contact
|
|
region_cone.cpp: // y is interior to cone
|
|
region_cone.cpp: // y is exterior to cone or on its surface
|
|
region_cone.cpp: // corner1234 = 4 corner pts of half trapezoid = cone surf in plane of y
|
|
region_cone.cpp: // project x to 3 line segments in half trapezoid (4th is axis of cone)
|
|
region_cone.cpp: // nearest = point on surface of cone that y is closest to
|
|
region_cone.cpp: // could be edge of cone
|
|
region_cone.cpp: // do not add contact point if r >= cutoff
|
|
region_cone.cpp: corner1[0] = c1 + del1*radiuslo/r;
|
|
region_cone.cpp: corner1[2] = c2 + del2*radiuslo/r;
|
|
region_cone.cpp: corner2[0] = c1 + del1*radiushi/r;
|
|
region_cone.cpp: corner2[2] = c2 + del2*radiushi/r;
|
|
region_cone.cpp: crad = -2.0*(radiuslo + (nearest[1]-lo)*(radiushi-radiuslo)/(hi-lo));
|
|
region_cone.cpp: currentradius = radiuslo + (x[2]-lo)*(radiushi-radiuslo)/(hi-lo);
|
|
region_cone.cpp: // radius of curvature, only used for granular walls
|
|
region_cone.cpp: // z is far enough from cone that there is no contact
|
|
region_cone.cpp: // z is interior to cone
|
|
region_cone.cpp: // z is exterior to cone or on its surface
|
|
region_cone.cpp: // corner1234 = 4 corner pts of half trapezoid = cone surf in plane of z
|
|
region_cone.cpp: // project x to 3 line segments in half trapezoid (4th is axis of cone)
|
|
region_cone.cpp: // nearest = point on surface of cone that z is closest to
|
|
region_cone.cpp: // could be edge of cone
|
|
region_cone.cpp: // do not add contact point if r >= cutoff
|
|
region_cone.cpp: corner1[0] = c1 + del1*radiuslo/r;
|
|
region_cone.cpp: corner1[1] = c2 + del2*radiuslo/r;
|
|
region_cone.cpp: corner2[0] = c1 + del1*radiushi/r;
|
|
region_cone.cpp: corner2[1] = c2 + del2*radiushi/r;
|
|
region_cone.cpp: crad = -2.0*(radiuslo + (nearest[2]-lo)*(radiushi-radiuslo)/(hi-lo));
|
|
region_cone.cpp:/* ---------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ---------------------------------------------------------------------- */
|
|
region.cpp:/* ---------------------------------------------------------------------- */
|
|
region.cpp:/* ---------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: return 1 if region is dynamic (moves/rotates) or has variable shape
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: also insures variables are invoked by all procs even those w/out atoms
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp: // one of surface_int/ext() will return 0
|
|
region.cpp: // so no need to worry about offset of contact indices
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: pre-compute dx,dy,dz and theta for a moving/rotating region
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: sign of angle determines whether rotating forward/backward in time
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp: // option defaults
|
|
region.cpp: // additional checks on valid face index are done by region classes
|
|
region.cpp: // error check
|
|
region.cpp: // setup scaling
|
|
region.cpp: // runit = unit vector along rotation axis
|
|
region.cpp: runit[0] = axis[0]/len;
|
|
region.cpp: runit[1] = axis[1]/len;
|
|
region.cpp: runit[2] = axis[2]/len;
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp: double t = MathExtra::dot3(ca,ba) / MathExtra::dot3(ba,ba);
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: necessary b/c motion variables are for displacement & theta
|
|
region.cpp: called by fix wall/gran/region every timestep
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp: v[0] = (dx - prev[0])/update->dt;
|
|
region.cpp: v[1] = (dy - prev[1])/update->dt;
|
|
region.cpp: v[2] = (dz - prev[2])/update->dt;
|
|
region.cpp: double angvel = (theta-prev[3]) / update->dt;
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: since contacts only store delx/y/z, need to pass particle coords
|
|
region.cpp: called by fix/wall/gran/region every contact every timestep
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: used by restart of fix/wall/gran/region
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: region writes its current style, id, number of sub-regions, position/angle
|
|
region.cpp: needed by fix/wall/gran/region to compute velocity by differencing scheme
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp: if they match current region, also read previous position/angle
|
|
region.cpp: needed by fix/wall/gran/region to compute velocity by differencing scheme
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region.cpp:/* ----------------------------------------------------------------------
|
|
region.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_cylinder.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ---------------------------------------------------------------------- */
|
|
region_cylinder.cpp: // check open face settings
|
|
region_cylinder.cpp: // error check
|
|
region_cylinder.cpp: // extent of cylinder
|
|
region_cylinder.cpp: // for variable radius, uses initial radius
|
|
region_cylinder.cpp: // particle could be close to cylinder surface and 2 ends
|
|
region_cylinder.cpp: // particle can only touch surface and 1 end
|
|
region_cylinder.cpp:/* ---------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ---------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp: no contact if outside (possible if called from union/intersect)
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp: // x is exterior to cylinder
|
|
region_cylinder.cpp: // x is interior to cylinder or on its surface
|
|
region_cylinder.cpp: contact[n].dely = del1*(1.0-radius/r);
|
|
region_cylinder.cpp: contact[n].delz = del2*(1.0-radius/r);
|
|
region_cylinder.cpp: // y is exterior to cylinder
|
|
region_cylinder.cpp: // y is interior to cylinder or on its surface
|
|
region_cylinder.cpp: contact[n].delx = del1*(1.0-radius/r);
|
|
region_cylinder.cpp: contact[n].delz = del2*(1.0-radius/r);
|
|
region_cylinder.cpp: // z is exterior to cylinder
|
|
region_cylinder.cpp: // z is interior to cylinder or on its surface
|
|
region_cylinder.cpp: contact[n].delx = del1*(1.0-radius/r);
|
|
region_cylinder.cpp: contact[n].dely = del2*(1.0-radius/r);
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp: no contact if inside (possible if called from union/intersect)
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp: // radius of curvature for granular
|
|
region_cylinder.cpp: // 0 for flat surfaces (infinite case), 2*radius for curved portion
|
|
region_cylinder.cpp: // x is far enough from cylinder that there is no contact
|
|
region_cylinder.cpp: // x is interior to cylinder
|
|
region_cylinder.cpp: // x is exterior to cylinder or on its surface
|
|
region_cylinder.cpp: // xp,yp,zp = point on surface of cylinder that x is closest to
|
|
region_cylinder.cpp: // could be edge of cylinder
|
|
region_cylinder.cpp: // do not add contact point if r >= cutoff
|
|
region_cylinder.cpp: yp = c1 + del1*radius/r;
|
|
region_cylinder.cpp: zp = c2 + del2*radius/r;
|
|
region_cylinder.cpp: // closest point on curved surface
|
|
region_cylinder.cpp: yp = c1 + del1*radius/r;
|
|
region_cylinder.cpp: zp = c2 + del2*radius/r;
|
|
region_cylinder.cpp: // closest point on bottom cap
|
|
region_cylinder.cpp: // closest point on top cap
|
|
region_cylinder.cpp: // y is far enough from cylinder that there is no contact
|
|
region_cylinder.cpp: // y is interior to cylinder
|
|
region_cylinder.cpp: // y is exterior to cylinder or on its surface
|
|
region_cylinder.cpp: // xp,yp,zp = point on surface of cylinder that x is closest to
|
|
region_cylinder.cpp: // could be edge of cylinder
|
|
region_cylinder.cpp: // do not add contact point if r >= cutoff
|
|
region_cylinder.cpp: xp = c1 + del1*radius/r;
|
|
region_cylinder.cpp: zp = c2 + del2*radius/r;
|
|
region_cylinder.cpp: // closest point on curved surface
|
|
region_cylinder.cpp: xp = c1 + del1*radius/r;
|
|
region_cylinder.cpp: zp = c2 + del2*radius/r;
|
|
region_cylinder.cpp: // closest point on bottom cap
|
|
region_cylinder.cpp: // closest point on top cap
|
|
region_cylinder.cpp: // z is far enough from cylinder that there is no contact
|
|
region_cylinder.cpp: // z is interior to cylinder
|
|
region_cylinder.cpp: // z is exterior to cylinder or on its surface
|
|
region_cylinder.cpp: // xp,yp,zp = point on surface of cylinder that x is closest to
|
|
region_cylinder.cpp: // could be edge of cylinder
|
|
region_cylinder.cpp: // do not add contact point if r >= cutoff
|
|
region_cylinder.cpp: xp = c1 + del1*radius/r;
|
|
region_cylinder.cpp: yp = c2 + del2*radius/r;
|
|
region_cylinder.cpp: // closest point on curved surface
|
|
region_cylinder.cpp: xp = c1 + del1*radius/r;
|
|
region_cylinder.cpp: yp = c2 + del2*radius/r;
|
|
region_cylinder.cpp: // closest point on bottom cap
|
|
region_cylinder.cpp: // closest point on top cap
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp: called once per timestep by fix/wall/gran/region.
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp:/* ----------------------------------------------------------------------
|
|
region_cylinder.cpp:------------------------------------------------------------------------- */
|
|
region_cylinder.cpp: double delx, dely, delz; // Displacement of contact point in x,y,z
|
|
region_cylinder.cpp: dely = (xc[1] - xcenter[1])*(1 - rprev/radius);
|
|
region_cylinder.cpp: delz = (xc[2] - xcenter[2])*(1 - rprev/radius);
|
|
region_cylinder.cpp: delx = (xc[0] - xcenter[0])*(1 - rprev/radius);
|
|
region_cylinder.cpp: delz = (xc[2] - xcenter[2])*(1 - rprev/radius);
|
|
region_cylinder.cpp: delx = (xc[0] - xcenter[0])*(1 - rprev/radius);
|
|
region_cylinder.cpp: dely = (xc[1] - xcenter[1])*(1 - rprev/radius);
|
|
region_cylinder.cpp: vwall[0] += delx/update->dt;
|
|
region_cylinder.cpp: vwall[1] += dely/update->dt;
|
|
region_cylinder.cpp: vwall[2] += delz/update->dt;
|
|
region_cylinder.cpp: //printf ("R is %g, prev %g, velocity of wall at %g %g %g is %g %g %g\n",radius,rprev,xc[0],xc[1],xc[2],vwall[0],vwall[1],vwall[2]);
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_intersect.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ---------------------------------------------------------------------- */
|
|
region_intersect.cpp: // build list of regions to intersect
|
|
region_intersect.cpp: // store sub-region IDs in idsub
|
|
region_intersect.cpp: // this region is variable shape or dynamic if any of sub-regions are
|
|
region_intersect.cpp: // extent of intersection of regions
|
|
region_intersect.cpp: // has bounding box if interior and any sub-region has bounding box
|
|
region_intersect.cpp: // possible contacts = sum of possible contacts in all sub-regions
|
|
region_intersect.cpp: // for near contacts and touching contacts
|
|
region_intersect.cpp:/* ---------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ---------------------------------------------------------------------- */
|
|
region_intersect.cpp: // re-build list of sub-regions in case other regions were deleted
|
|
region_intersect.cpp: // error if a sub-region was deleted
|
|
region_intersect.cpp: // init the sub-regions
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp: // increment by cmax instead of tmax to insure
|
|
region_intersect.cpp: // possible wall IDs for sub-regions are non overlapping
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp: (1) flip interior/exterior flag of each sub-region
|
|
region_intersect.cpp: (4) flip interior/exterior flags back to original settings
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp: move/rotate all sub-regions
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp: get translational/angular velocities of all subregions
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp: used by restart of fix/wall/gran/region
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp: region writes its current position/angle
|
|
region_intersect.cpp: needed by fix/wall/gran/region to compute velocity by differencing scheme
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp: region reads its previous position/angle
|
|
region_intersect.cpp: needed by fix/wall/gran/region to compute velocity by differencing scheme
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_intersect.cpp:/* ----------------------------------------------------------------------
|
|
region_intersect.cpp:------------------------------------------------------------------------- */
|
|
region_plane.cpp:/* ----------------------------------------------------------------------
|
|
region_plane.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_plane.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_plane.cpp:------------------------------------------------------------------------- */
|
|
region_plane.cpp:/* ---------------------------------------------------------------------- */
|
|
region_plane.cpp: // enforce unit normal
|
|
region_plane.cpp: normal[0] /= sqrt(rsq);
|
|
region_plane.cpp: normal[1] /= sqrt(rsq);
|
|
region_plane.cpp: normal[2] /= sqrt(rsq);
|
|
region_plane.cpp: // plane has no bounding box
|
|
region_plane.cpp:/* ---------------------------------------------------------------------- */
|
|
region_plane.cpp:/* ----------------------------------------------------------------------
|
|
region_plane.cpp:------------------------------------------------------------------------- */
|
|
region_plane.cpp:/* ----------------------------------------------------------------------
|
|
region_plane.cpp: no contact if on other side (possible if called from union/intersect)
|
|
region_plane.cpp:------------------------------------------------------------------------- */
|
|
region_plane.cpp:/* ----------------------------------------------------------------------
|
|
region_plane.cpp: no contact if on other side (possible if called from union/intersect)
|
|
region_plane.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp:/* ----------------------------------------------------------------------
|
|
region_prism.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_prism.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_prism.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp:/* ----------------------------------------------------------------------
|
|
region_prism.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp:/* ---------------------------------------------------------------------- */
|
|
region_prism.cpp: // error check
|
|
region_prism.cpp: // prism cannot be 0 thickness in any dim, else inverse blows up
|
|
region_prism.cpp: // non-zero tilt values cannot be used if either dim is INF on both ends
|
|
region_prism.cpp: // extent of prism
|
|
region_prism.cpp: // particle could be close to all 6 planes
|
|
region_prism.cpp: // particle can only touch 3 planes
|
|
region_prism.cpp: // h = transformation matrix from tilt coords (0-1) to box coords (xyz)
|
|
region_prism.cpp: // columns of h are edge vectors of tilted box
|
|
region_prism.cpp: // hinv = transformation matrix from box coords to tilt coords
|
|
region_prism.cpp: // both h and hinv are upper triangular
|
|
region_prism.cpp: // since 1st edge of prism is along x-axis
|
|
region_prism.cpp: // and bottom face of prism is in xy plane
|
|
region_prism.cpp: hinv[0][0] = 1.0/h[0][0];
|
|
region_prism.cpp: hinv[0][1] = -h[0][1] / (h[0][0]*h[1][1]);
|
|
region_prism.cpp: hinv[0][2] = (h[0][1]*h[1][2] - h[0][2]*h[1][1]) / (h[0][0]*h[1][1]*h[2][2]);
|
|
region_prism.cpp: hinv[1][1] = 1.0/h[1][1];
|
|
region_prism.cpp: hinv[1][2] = -h[1][2] / (h[1][1]*h[2][2]);
|
|
region_prism.cpp: hinv[2][2] = 1.0/h[2][2];
|
|
region_prism.cpp: // corners = 8 corner points of prism
|
|
region_prism.cpp: // order = x varies fastest, then y, finally z
|
|
region_prism.cpp: // clo/chi = lo and hi corner pts of prism
|
|
region_prism.cpp: // face = 6 inward-facing unit normals to prism faces
|
|
region_prism.cpp: // order = xy plane, xz plane, yz plane
|
|
region_prism.cpp: // remap open face indices to be consistent
|
|
region_prism.cpp: // tri = 3 vertices (0-7) in each of 12 triangles on 6 faces
|
|
region_prism.cpp: // verts in each tri are ordered so that right-hand rule gives inward norm
|
|
region_prism.cpp: // order = xy plane, xz plane, yz plane
|
|
region_prism.cpp:/* ---------------------------------------------------------------------- */
|
|
region_prism.cpp:/* ----------------------------------------------------------------------
|
|
region_prism.cpp: abc = Hinv * (xyz - xyz/lo)
|
|
region_prism.cpp: xyz/lo = lower-left corner of prism
|
|
region_prism.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp:/* ----------------------------------------------------------------------
|
|
region_prism.cpp: no contact if outside (possible if called from union/intersect)
|
|
region_prism.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp: // x is exterior to prism
|
|
region_prism.cpp: // x is interior to prism or on its surface
|
|
region_prism.cpp:/* ----------------------------------------------------------------------
|
|
region_prism.cpp: no contact if inside (possible if called from union/intersect)
|
|
region_prism.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp: // x is far enough from prism that there is no contact
|
|
region_prism.cpp: // x is interior to prism
|
|
region_prism.cpp: // x is exterior to prism or on its surface
|
|
region_prism.cpp: // xp,yp,zp = point on surface of prism that x is closest to
|
|
region_prism.cpp: // could be edge or corner pt of prism
|
|
region_prism.cpp: // do not add contact point if r >= cutoff
|
|
region_prism.cpp:/* ----------------------------------------------------------------------
|
|
region_prism.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp: // generate successive xnear points, one nearest to x is (xp,yp,zp)
|
|
region_prism.cpp: // loop over 6 faces and 2 triangles in each face
|
|
region_prism.cpp: // xproj = x projected to plane of triangle
|
|
region_prism.cpp: // if xproj is inside or on triangle boundary, that is xnear
|
|
region_prism.cpp: // else: loop over 3 edges of triangle
|
|
region_prism.cpp: // compute distance to edge line
|
|
region_prism.cpp: // xnear = nearest point on line to xproj, bounded by segment end pts
|
|
region_prism.cpp: iface = itri/2;
|
|
region_prism.cpp:/* ----------------------------------------------------------------------
|
|
region_prism.cpp:------------------------------------------------------------------------- */
|
|
region_prism.cpp:/* ---------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_sphere.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
region_sphere.cpp: // error check
|
|
region_sphere.cpp: // extent of sphere
|
|
region_sphere.cpp: // for variable radius, uses initial radius
|
|
region_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ---------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp: no contact if outside (possible if called from union/intersect)
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp: contact[0].delx = delx*(1.0-radius/r);
|
|
region_sphere.cpp: contact[0].dely = dely*(1.0-radius/r);
|
|
region_sphere.cpp: contact[0].delz = delz*(1.0-radius/r);
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp: no contact if inside (possible if called from union/intersect)
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp: contact[0].delx = delx*(1.0-radius/r);
|
|
region_sphere.cpp: contact[0].dely = dely*(1.0-radius/r);
|
|
region_sphere.cpp: contact[0].delz = delz*(1.0-radius/r);
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp: called once per timestep by fix/wall/gran/region.
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp:/* ----------------------------------------------------------------------
|
|
region_sphere.cpp:------------------------------------------------------------------------- */
|
|
region_sphere.cpp: double delx, dely, delz; // Displacement of contact point in x,y,z
|
|
region_sphere.cpp: delx = (xc[0] - xcenter[0])*(1 - rprev/radius);
|
|
region_sphere.cpp: dely = (xc[1] - xcenter[1])*(1 - rprev/radius);
|
|
region_sphere.cpp: delz = (xc[2] - xcenter[2])*(1 - rprev/radius);
|
|
region_sphere.cpp: vwall[0] += delx/update->dt;
|
|
region_sphere.cpp: vwall[1] += dely/update->dt;
|
|
region_sphere.cpp: vwall[2] += delz/update->dt;
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
region_union.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ---------------------------------------------------------------------- */
|
|
region_union.cpp: // build list of region indices to union
|
|
region_union.cpp: // store sub-region IDs in idsub
|
|
region_union.cpp: // this region is variable shape or dynamic if any of sub-regions are
|
|
region_union.cpp: // extent of union of regions
|
|
region_union.cpp: // has bounding box if interior and all sub-regions have bounding box
|
|
region_union.cpp: // possible contacts = sum of possible contacts in all sub-regions
|
|
region_union.cpp: // for near contacts and touching contacts
|
|
region_union.cpp:/* ---------------------------------------------------------------------- */
|
|
region_union.cpp:/* ---------------------------------------------------------------------- */
|
|
region_union.cpp: // re-build list of sub-regions in case other regions were deleted
|
|
region_union.cpp: // error if a sub-region was deleted
|
|
region_union.cpp: // init the sub-regions
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp: // increment by cmax instead of tmax to insure
|
|
region_union.cpp: // possible wall IDs for sub-regions are non overlapping
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp: (1) flip interior/exterior flag of each sub-region
|
|
region_union.cpp: (4) flip interior/exterior flags back to original settings
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp: move/rotate all sub-regions
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp: get translational/angular velocities of all subregions
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp: used by restart of fix/wall/gran/region
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp: region writes its current position/angle
|
|
region_union.cpp: needed by fix/wall/gran/region to compute velocity by differencing scheme
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp: region reads its previous position/angle
|
|
region_union.cpp: needed by fix/wall/gran/region to compute velocity by differencing scheme
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
region_union.cpp:/* ----------------------------------------------------------------------
|
|
region_union.cpp:------------------------------------------------------------------------- */
|
|
replicate.cpp:/* ----------------------------------------------------------------------
|
|
replicate.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
replicate.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
replicate.cpp:------------------------------------------------------------------------- */
|
|
replicate.cpp:enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|
replicate.cpp:/* ---------------------------------------------------------------------- */
|
|
replicate.cpp:/* ---------------------------------------------------------------------- */
|
|
replicate.cpp: // nrep = total # of replications
|
|
replicate.cpp: // error and warning checks
|
|
replicate.cpp: // maxtag = largest atom tag across all existing atoms
|
|
replicate.cpp: // maxmol = largest molecule tag across all existing atoms
|
|
replicate.cpp: // unmap existing atoms via image flags
|
|
replicate.cpp: // communication buffer for all my atom's info
|
|
replicate.cpp: // max_size = largest buffer needed by any proc
|
|
replicate.cpp: // must do before new Atom class created,
|
|
replicate.cpp: // since size_restart() uses atom->nlocal
|
|
replicate.cpp: // old = original atom class
|
|
replicate.cpp: // atom = new replicated atom class
|
|
replicate.cpp: // also set atomKK for Kokkos version of Atom class
|
|
replicate.cpp: // check that new system will not be too large
|
|
replicate.cpp: // new tags cannot exceed MAXTAGINT
|
|
replicate.cpp: // new system sizes cannot exceed MAXBIGINT
|
|
replicate.cpp: // assign atom and topology counts in new class from old one
|
|
replicate.cpp: // store old simulation box
|
|
replicate.cpp: // setup new simulation box
|
|
replicate.cpp: // new problem setup using new box boundaries
|
|
replicate.cpp: else n = static_cast<int> (LB_FACTOR * atom->natoms / nprocs);
|
|
replicate.cpp: // copy type arrays to new atom class
|
|
replicate.cpp: // set bounds for my proc
|
|
replicate.cpp: // if periodic and I am lo/hi proc, adjust bounds by EPSILON
|
|
replicate.cpp: // insures all replicated atoms will be owned even with round-off
|
|
replicate.cpp: // loop over all procs
|
|
replicate.cpp: // if this iteration of loop is me:
|
|
replicate.cpp: // pack my unmapped atom data into buf
|
|
replicate.cpp: // bcast it to all other procs
|
|
replicate.cpp: // performs 3d replicate loop with while loop over atoms in buf
|
|
replicate.cpp: // x = new replicated position, remapped into simulation box
|
|
replicate.cpp: // unpack atom into new atom class from buf if I own it
|
|
replicate.cpp: // adjust tag, mol #, coord, topology info as needed
|
|
replicate.cpp: // while loop over one proc's atom list
|
|
replicate.cpp: // free communication buffer and old atom class
|
|
replicate.cpp: // check that all atoms were assigned to procs
|
|
replicate.cpp: // check that atom IDs are valid
|
|
replicate.cpp: // create global mapping of atoms
|
|
replicate.cpp: // create special bond lists for molecular systems
|
|
rerun.cpp:/* ----------------------------------------------------------------------
|
|
rerun.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
rerun.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
rerun.cpp:------------------------------------------------------------------------- */
|
|
rerun.cpp:/* ---------------------------------------------------------------------- */
|
|
rerun.cpp:/* ---------------------------------------------------------------------- */
|
|
rerun.cpp: // list of dump files = args until a keyword
|
|
rerun.cpp: // parse optional args up until "dump"
|
|
rerun.cpp: // user MAXBIGINT -1 so Output can add 1 to it and still be a big int
|
|
rerun.cpp: // pass list of filenames to ReadDump
|
|
rerun.cpp: // along with post-"dump" args and post-"format" args
|
|
rerun.cpp: // perform the pseudo run
|
|
rerun.cpp: // invoke lmp->init() only once
|
|
rerun.cpp: // read all relevant snapshots
|
|
rerun.cpp: // use setup_minimal() since atoms are already owned by correct procs
|
|
rerun.cpp: // addstep_compute_all() insures energy/virial computed on every snapshot
|
|
rerun.cpp: // insure thermo output on last dump timestep
|
|
rerun.cpp: // set update->nsteps to ndump for Finish stats to print
|
|
rerun.cpp: // clean-up
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
respa.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp:/* ---------------------------------------------------------------------- */
|
|
respa.cpp: // set level at which each force is computed
|
|
respa.cpp: // argument settings override defaults
|
|
respa.cpp: // defaults for hybrid pair styles
|
|
respa.cpp: // the hybrid keyword requires a hybrid pair style
|
|
respa.cpp: // each hybrid sub-style needs to be assigned to a respa level
|
|
respa.cpp: // cannot specify both pair and inner/middle/outer
|
|
respa.cpp: error->all(FLERR,"Cannot set both respa pair and inner/middle/outer");
|
|
respa.cpp: // if either inner and outer is specified, then both must be
|
|
respa.cpp: // middle cannot be set without inner/outer
|
|
respa.cpp: error->all(FLERR,"Cannot set respa middle without inner/outer");
|
|
respa.cpp: // cannot combine hybrid with any of pair/inner/middle/outer
|
|
respa.cpp: "any of pair/inner/middle/outer");
|
|
respa.cpp: // set defaults if user did not specify level
|
|
respa.cpp: // bond to innermost level
|
|
respa.cpp: // angle same as bond, dihedral same as angle, improper same as dihedral
|
|
respa.cpp: // pair to outermost level if no inner/middle/outer
|
|
respa.cpp: // inner/middle/outer have no defaults
|
|
respa.cpp: // kspace same as pair or outer
|
|
respa.cpp: // print respa levels
|
|
respa.cpp: // check that levels are in correct order
|
|
respa.cpp: // warn if any levels are devoid of forces
|
|
respa.cpp: // check cutoff consistency if inner/middle/outer are enabled
|
|
respa.cpp: // set outer pair of cutoffs to inner pair if middle is not enabled
|
|
respa.cpp: // ensure that pair->compute() is run properly
|
|
respa.cpp: // when the hybrid keyword is not used
|
|
respa.cpp: // allocate other needed arrays
|
|
respa.cpp:/* ---------------------------------------------------------------------- */
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp: // warn if no fixes
|
|
respa.cpp: // create fix needed for storing atom-based respa level forces
|
|
respa.cpp: // will delete it at end of run
|
|
respa.cpp: // if supported, we also store torques on a per-level basis
|
|
respa.cpp: // insure respa inner/middle/outer is using Pair class that supports it
|
|
respa.cpp: error->all(FLERR,"Pair style does not support rRESPA inner/middle/outer");
|
|
respa.cpp: // virial_style = 1 (explicit) since never computed implicitly like Verlet
|
|
respa.cpp: // setup lists of computes for global and per-atom PE and pressure
|
|
respa.cpp: // detect if fix omp is present and will clear force arrays
|
|
respa.cpp: // set flags for arrays to clear in force_clear()
|
|
respa.cpp: // step[] = timestep for each level
|
|
respa.cpp: step[ilevel] = step[ilevel+1]/loop[ilevel];
|
|
respa.cpp: // set newton flag for each level
|
|
respa.cpp: // orthogonal vs triclinic simulation box
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp: // setup domain, communication and neighboring
|
|
respa.cpp: // acquire ghosts
|
|
respa.cpp: // build neighbor lists
|
|
respa.cpp: // compute all forces
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp: // setup domain, communication and neighboring
|
|
respa.cpp: // acquire ghosts
|
|
respa.cpp: // build neighbor lists
|
|
respa.cpp: // compute all forces
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp: // needed in case end_of_step() or output() use total force
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp:/* ---------------------------------------------------------------------- */
|
|
respa.cpp: step[ilevel] = step[ilevel+1]/loop[ilevel];
|
|
respa.cpp:/* ---------------------------------------------------------------------- */
|
|
respa.cpp: // at outermost level, check on rebuilding neighbor list
|
|
respa.cpp: // at innermost level, communicate
|
|
respa.cpp: // at middle levels, do nothing
|
|
respa.cpp: // rRESPA recursion thru all levels
|
|
respa.cpp: // this used to be before neigh list build,
|
|
respa.cpp: // which prevented per-atom energy/stress being tallied correctly
|
|
respa.cpp: // b/c atoms migrated to new procs between short/long force calls
|
|
respa.cpp: // now they migrate at very start of rRESPA timestep, before all forces
|
|
respa.cpp: // force computations
|
|
respa.cpp: // important that ordering is same as Verlet
|
|
respa.cpp: // so that any order dependencies are the same
|
|
respa.cpp: // when potentials are invoked at same level
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp: // clear global force array
|
|
respa.cpp: // if either newton flag is set, also include ghosts
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp:/* ----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
respa.cpp:/*-----------------------------------------------------------------------
|
|
respa.cpp:------------------------------------------------------------------------- */
|
|
run.cpp:/* ----------------------------------------------------------------------
|
|
run.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
run.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
run.cpp:------------------------------------------------------------------------- */
|
|
run.cpp:/* ---------------------------------------------------------------------- */
|
|
run.cpp:/* ---------------------------------------------------------------------- */
|
|
run.cpp: // ignore run command, if walltime limit was already reached
|
|
run.cpp: // parse optional args
|
|
run.cpp: // all remaining args are commands
|
|
run.cpp: // first,last = arg index of first/last commands
|
|
run.cpp: // set ncommands = 0 if single command and it is NULL
|
|
run.cpp: // set nsteps as integer, using upto value if specified
|
|
run.cpp: // error check
|
|
run.cpp: error->all(FLERR,"Invalid run command start/stop value");
|
|
run.cpp: error->all(FLERR,"Invalid run command start/stop value");
|
|
run.cpp: // if nevery, make copies of arg strings that are commands
|
|
run.cpp: // required because re-parsing commands via input->one() will wipe out args
|
|
run.cpp: // perform a single run
|
|
run.cpp: // use start/stop to set begin/end step
|
|
run.cpp: // if pre or 1st run, do System init/setup,
|
|
run.cpp: // else just init timer and setup output
|
|
run.cpp: // if post, do full Finish, else just print time
|
|
run.cpp: // perform multiple runs optionally interleaved with invocation command(s)
|
|
run.cpp: // use start/stop to set begin/end step
|
|
run.cpp: // if pre or 1st iteration of multiple runs, do System init/setup,
|
|
run.cpp: // else just init timer and setup output
|
|
run.cpp: // if post or last iteration, do full Finish, else just print time
|
|
run.cpp: // wrap command invocation with clearstep/addstep
|
|
run.cpp: // since a command may invoke computes via variables
|
|
set.cpp:/* ----------------------------------------------------------------------
|
|
set.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
set.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
set.cpp:------------------------------------------------------------------------- */
|
|
set.cpp:/* ---------------------------------------------------------------------- */
|
|
set.cpp: // style and ID info
|
|
set.cpp: // loop over keyword/value pairs
|
|
set.cpp: // call appropriate routine to reset attributes
|
|
set.cpp: } else if (strcmp(arg[iarg],"type/fraction") == 0) {
|
|
set.cpp: } else if (strcmp(arg[iarg],"dipole/random") == 0) {
|
|
set.cpp: } else if (strcmp(arg[iarg],"spin/random") == 0) {
|
|
set.cpp: } else if (strcmp(arg[iarg],"quat/random") == 0) {
|
|
set.cpp: dvalue *= MY_PI/180.0;
|
|
set.cpp: } else if (strcmp(arg[iarg],"theta/random") == 0) {
|
|
set.cpp: (strcmp(arg[iarg],"density/disc") == 0)) {
|
|
set.cpp: if (strcmp(arg[iarg],"density/disc") == 0) {
|
|
set.cpp: error->all(FLERR,"Density/disc option requires 2d simulation");
|
|
set.cpp: } else if (strcmp(arg[iarg],"meso/e") == 0) {
|
|
set.cpp: error->all(FLERR,"Cannot set meso/e for this atom style");
|
|
set.cpp: } else if (strcmp(arg[iarg],"meso/cv") == 0) {
|
|
set.cpp: error->all(FLERR,"Cannot set meso/cv for this atom style");
|
|
set.cpp: } else if (strcmp(arg[iarg],"meso/rho") == 0) {
|
|
set.cpp: error->all(FLERR,"Cannot set meso/rho for this atom style");
|
|
set.cpp: } else if (strcmp(arg[iarg],"smd/mass/density") == 0) {
|
|
set.cpp: error->all(FLERR,"Cannot set smd/mass/density for this atom style");
|
|
set.cpp: } else if (strcmp(arg[iarg],"smd/contact/radius") == 0) {
|
|
set.cpp: error->all(FLERR,"Cannot set smd/contact/radius "
|
|
set.cpp: } else if (strcmp(arg[iarg],"dpd/theta") == 0) {
|
|
set.cpp: error->all(FLERR,"Cannot set dpd/theta for this atom style");
|
|
set.cpp: // statistics
|
|
set.cpp: // free local memory
|
|
set.cpp:/* ----------------------------------------------------------------------
|
|
set.cpp:------------------------------------------------------------------------- */
|
|
set.cpp:/* ----------------------------------------------------------------------
|
|
set.cpp:------------------------------------------------------------------------- */
|
|
set.cpp: // evaluate atom-style variable(s) if necessary
|
|
set.cpp: // loop over selected atoms
|
|
set.cpp: // overwrite dvalue, ivalue, xyzw value if variables defined
|
|
set.cpp: // else the input script scalar value remains in place
|
|
set.cpp: // set values in per-atom arrays
|
|
set.cpp: // error check here in case atom-style variables generated bogus value
|
|
set.cpp: // set mass from volume and supplied mass density
|
|
set.cpp: double tfactor = force->mvv2e / (domain->dimension * force->boltz);
|
|
set.cpp: // set shape of ellipsoidal particle
|
|
set.cpp: // set length of line particle
|
|
set.cpp: // set corners of tri particle
|
|
set.cpp: // set rmass via density
|
|
set.cpp: // if radius > 0.0, treat as sphere or disc
|
|
set.cpp: // if shape > 0.0, treat as ellipsoid (or ellipse, when uncomment below)
|
|
set.cpp: // if length > 0.0, treat as line
|
|
set.cpp: // if area > 0.0, treat as tri
|
|
set.cpp: // else set rmass to density directly
|
|
set.cpp: atom->rmass[i] = 4.0*MY_PI/3.0 *
|
|
set.cpp: // enable 2d ellipse (versus 3d ellipsoid) when time integration
|
|
set.cpp: // options (fix nve/asphere, fix nh/asphere) are also implemented
|
|
set.cpp: // if (discflag)
|
|
set.cpp: // atom->rmass[i] = MY_PI*shape[0]*shape[1] * dvalue;
|
|
set.cpp: // else
|
|
set.cpp: atom->rmass[i] = 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2] * dvalue;
|
|
set.cpp: // set dipole moment
|
|
set.cpp: // set magnetic moments
|
|
set.cpp: sp[i][0] = xvalue/sp_norm;
|
|
set.cpp: sp[i][1] = yvalue/sp_norm;
|
|
set.cpp: sp[i][2] = zvalue/sp_norm;
|
|
set.cpp: sp[i][2]*sp[i][2]); //Should be 1 for atomic spins
|
|
set.cpp: // set quaternion orientation of ellipsoid or tri or body particle
|
|
set.cpp: // set quaternion orientation of ellipsoid or tri or body particle
|
|
set.cpp: // enforce quat rotation vector in z dir for 2d systems
|
|
set.cpp: double theta2 = MY_PI2 * wvalue/180.0;
|
|
set.cpp: // set theta of line particle
|
|
set.cpp: // set angmom or omega of particle
|
|
set.cpp: // reset any or all of 3 image flags
|
|
set.cpp: // set value for custom integer or double vector
|
|
set.cpp: // clear up per-atom memory if allocated
|
|
set.cpp:/* ----------------------------------------------------------------------
|
|
set.cpp:------------------------------------------------------------------------- */
|
|
set.cpp: // set fraction of atom types to newtype
|
|
set.cpp: // set dipole moments to random orientations in 3d or 2d
|
|
set.cpp: // dipole length is determined by dipole type array
|
|
set.cpp: scale = dvalue/sqrt(msq);
|
|
set.cpp: scale = dvalue/sqrt(msq);
|
|
set.cpp: // set spin moments to random orientations in 3d or 2d
|
|
set.cpp: // spin length is fixed to unity
|
|
set.cpp: scale = 1.0/sqrt(sp_sq);
|
|
set.cpp: scale = 1.0/sqrt(sp_sq);
|
|
set.cpp: // set quaternions to random orientations in 3d and 2d
|
|
set.cpp: // set theta to random orientation in 2d
|
|
set.cpp:/* ---------------------------------------------------------------------- */
|
|
set.cpp: // error check
|
|
set.cpp: // border swap to acquire ghost atom info
|
|
set.cpp: // enforce PBC before in case atoms are outside box
|
|
set.cpp: // init entire system since comm->exchange is done
|
|
set.cpp: // comm::init needs neighbor::init needs pair::init needs kspace::init, etc
|
|
set.cpp: // select both owned and ghost atoms
|
|
set.cpp: // for BOND, each of 2 atoms must be in group
|
|
set.cpp: // for ANGLE, each of 3 atoms must be in group
|
|
set.cpp: // for DIHEDRAL, each of 4 atoms must be in group
|
|
set.cpp: // for IMPROPER, each of 4 atoms must be in group
|
|
set.cpp:/* ---------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
special.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:// allocate space for static class variable
|
|
special.cpp:/* ---------------------------------------------------------------------- */
|
|
special.cpp:/* ---------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp: // initialize nspecial counters to 0
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // compute nspecial[i][0] = # of 1-2 neighbors of atom i
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // bond partners stored by atom itself
|
|
special.cpp: // if newton_bond off, then done
|
|
special.cpp: // else only counted 1/2 of all bonds, so count other half
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = global tag of 2nd atom in each bond
|
|
special.cpp: // fill buffer with global tags of bond partners of my atoms
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan tags for atoms I own
|
|
special.cpp: // when find one, increment nspecial count for that atom
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // create onetwo[i] = list of 1-2 neighbors for atom i
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // count = accumulating counter
|
|
special.cpp: // add bond partners stored by atom to onetwo list
|
|
special.cpp: // if newton_bond off, then done
|
|
special.cpp: // else only stored 1/2 of all bonds, so store other half
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = 2 global tags in each bond
|
|
special.cpp: // fill buffer with global tags of both atoms in bond
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan 2nd-atom tags for atoms I own
|
|
special.cpp: // when find one, add 1st-atom tag to onetwo list for 2nd atom
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // done if special_bond weights for 1-3, 1-4 are set to 1.0
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // compute nspecial[i][1] = # of 1-3 neighbors of atom i
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = 2 scalars + list of 1-2 neighbors
|
|
special.cpp: // fill buffer with:
|
|
special.cpp: // (1) = counter for 1-3 neighbors, initialized to 0
|
|
special.cpp: // (2) = # of 1-2 neighbors
|
|
special.cpp: // (3:N) = list of 1-2 neighbors
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan list of 1-2 neighbors for atoms I own
|
|
special.cpp: // when find one, increment 1-3 count by # of 1-2 neighbors of my atom,
|
|
special.cpp: // subtracting one since my list will contain original atom
|
|
special.cpp: // extract count from buffer that has cycled back to me
|
|
special.cpp: // nspecial[i][1] = # of 1-3 neighbors of atom i
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // create onethree[i] = list of 1-3 neighbors for atom i
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = 4 scalars + list of 1-2 neighs + list of 1-3 neighs
|
|
special.cpp: // fill buffer with:
|
|
special.cpp: // (1) = global tag of original atom
|
|
special.cpp: // (2) = # of 1-2 neighbors
|
|
special.cpp: // (3) = # of 1-3 neighbors
|
|
special.cpp: // (4) = counter for 1-3 neighbors, initialized to 0
|
|
special.cpp: // (5:N) = list of 1-2 neighbors
|
|
special.cpp: // (N+1:2N) space for list of 1-3 neighbors
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan list of 1-2 neighbors for atoms I own
|
|
special.cpp: // when find one, add its neighbors to 1-3 list
|
|
special.cpp: // increment the count in buf(i+4)
|
|
special.cpp: // exclude the atom whose tag = original
|
|
special.cpp: // this process may include duplicates but they will be culled later
|
|
special.cpp: // fill onethree with buffer values that have been returned to me
|
|
special.cpp: // sanity check: accumulated buf[i+3] count should equal
|
|
special.cpp: // nspecial[i][1] for each atom
|
|
special.cpp: // done if special_bond weights for 1-4 are set to 1.0
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // compute nspecial[i][2] = # of 1-4 neighbors of atom i
|
|
special.cpp: // -----------------------------------------------------
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = 2 scalars + list of 1-3 neighbors
|
|
special.cpp: // fill buffer with:
|
|
special.cpp: // (1) = counter for 1-4 neighbors, initialized to 0
|
|
special.cpp: // (2) = # of 1-3 neighbors
|
|
special.cpp: // (3:N) = list of 1-3 neighbors
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan list of 1-3 neighbors for atoms I own
|
|
special.cpp: // when find one, increment 1-4 count by # of 1-2 neighbors of my atom
|
|
special.cpp: // may include duplicates and original atom but they will be culled later
|
|
special.cpp: // extract count from buffer that has cycled back to me
|
|
special.cpp: // nspecial[i][2] = # of 1-4 neighbors of atom i
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // create onefour[i] = list of 1-4 neighbors for atom i
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = 3 scalars + list of 1-3 neighs + list of 1-4 neighs
|
|
special.cpp: // fill buffer with:
|
|
special.cpp: // (1) = # of 1-3 neighbors
|
|
special.cpp: // (2) = # of 1-4 neighbors
|
|
special.cpp: // (3) = counter for 1-4 neighbors, initialized to 0
|
|
special.cpp: // (4:N) = list of 1-3 neighbors
|
|
special.cpp: // (N+1:2N) space for list of 1-4 neighbors
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan list of 1-3 neighbors for atoms I own
|
|
special.cpp: // when find one, add its neighbors to 1-4 list
|
|
special.cpp: // incrementing the count in buf(i+4)
|
|
special.cpp: // this process may include duplicates but they will be culled later
|
|
special.cpp: // fill onefour with buffer values that have been returned to me
|
|
special.cpp: // sanity check: accumulated buf[i+2] count should equal
|
|
special.cpp: // nspecial[i][2] for each atom
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp: // clear map so it can be used as scratch space
|
|
special.cpp: // use map to cull duplicates
|
|
special.cpp: // exclude original atom explicitly
|
|
special.cpp: // adjust onetwo, onethree, onefour values to reflect removed duplicates
|
|
special.cpp: // must unset map for each atom
|
|
special.cpp: // re-create map
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // compute culled maxspecial = max # of special neighs of any atom
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // clear map so it can be used as scratch space
|
|
special.cpp: // unique = # of unique nspecial neighbors of one atom
|
|
special.cpp: // cull duplicates using map to check for them
|
|
special.cpp: // exclude original atom explicitly
|
|
special.cpp: // must unset map for each atom
|
|
special.cpp: // compute global maxspecial, must be at least 1
|
|
special.cpp: // add in extra factor from special_bonds command
|
|
special.cpp: // allocate correct special array with same nmax, new maxspecial
|
|
special.cpp: // previously allocated one must be destroyed
|
|
special.cpp: // must make AtomVec class update its ptr to special
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // fill special array with 1-2, 1-3, 1-4 neighs for each atom
|
|
special.cpp: // ----------------------------------------------------
|
|
special.cpp: // again use map to cull duplicates
|
|
special.cpp: // exclude original atom explicitly
|
|
special.cpp: // adjust nspecial[i] values to reflect removed duplicates
|
|
special.cpp: // nspecial[i][1] and nspecial[i][2] now become cumulative counters
|
|
special.cpp: // re-create map
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp: // stats on old 1-3 neighbor counts
|
|
special.cpp: // if angles or dihedrals are defined,
|
|
special.cpp: // flag each 1-3 neigh if it appears in an angle or dihedral
|
|
special.cpp: // dflag = flag for 1-3 neighs of all owned atoms
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = list of 1,3 atoms in each angle stored by atom
|
|
special.cpp: // and list of 1,3 and 2,4 atoms in each dihedral stored by atom
|
|
special.cpp: // fill buffer with list of 1,3 atoms in each angle
|
|
special.cpp: // and with list of 1,3 and 2,4 atoms in each dihedral
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan list of 1,3 atoms looking for atoms I own
|
|
special.cpp: // when find one, scan its 1-3 neigh list and mark I,J as in an angle
|
|
special.cpp: // delete 1-3 neighbors if they are not flagged in dflag
|
|
special.cpp: // clean up
|
|
special.cpp: // if no angles or dihedrals are defined, delete all 1-3 neighs
|
|
special.cpp: // stats on new 1-3 neighbor counts
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp: // stats on old 1-4 neighbor counts
|
|
special.cpp: // if dihedrals are defined, flag each 1-4 neigh if it appears in a dihedral
|
|
special.cpp: // dflag = flag for 1-4 neighs of all owned atoms
|
|
special.cpp: // nbufmax = largest buffer needed to hold info from any proc
|
|
special.cpp: // info for each atom = list of 1,4 atoms in each dihedral stored by atom
|
|
special.cpp: // fill buffer with list of 1,4 atoms in each dihedral
|
|
special.cpp: // cycle buffer around ring of procs back to self
|
|
special.cpp: // when receive buffer, scan list of 1,4 atoms looking for atoms I own
|
|
special.cpp: // when find one, scan its 1-4 neigh list and mark I,J as in a dihedral
|
|
special.cpp: // delete 1-4 neighbors if they are not flagged in dflag
|
|
special.cpp: // clean up
|
|
special.cpp: // if no dihedrals are defined, delete all 1-4 neighs
|
|
special.cpp: // stats on new 1-4 neighbor counts
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
special.cpp:/* ----------------------------------------------------------------------
|
|
special.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
thermo.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:// lmptype.h must be first b/c this file uses MAXBIGINT and includes mpi.h
|
|
thermo.cpp:// due to OpenMPI bug which sets INT64_MAX via its mpi.h
|
|
thermo.cpp:// before lmptype.h can set flags to insure it is done correctly
|
|
thermo.cpp:// customize a new keyword by adding to this list:
|
|
thermo.cpp:// step, elapsed, elaplong, dt, time, cpu, tpcpu, spcpu, cpuremain,
|
|
thermo.cpp:// part, timeremain
|
|
thermo.cpp:// atoms, temp, press, pe, ke, etotal, enthalpy
|
|
thermo.cpp:// evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail
|
|
thermo.cpp:// vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi, xy, xz, yz,
|
|
thermo.cpp:// xlat, ylat, zlat
|
|
thermo.cpp:// bonds, angles, dihedrals, impropers,
|
|
thermo.cpp:// pxx, pyy, pzz, pxy, pxz, pyz
|
|
thermo.cpp:// fmax, fnorm, nbuild, ndanger,
|
|
thermo.cpp:// cella, cellb, cellc, cellalpha, cellbeta, cellgamma
|
|
thermo.cpp:// customize a new thermo style by adding a DEFINE to this list
|
|
thermo.cpp:// also insure allocation of line string is correct in constructor
|
|
thermo.cpp:enum{IGNORE,WARN,ERROR}; // same as several files
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // set thermo_modify defaults
|
|
thermo.cpp: // set style and corresponding lineflag
|
|
thermo.cpp: // custom style builds its own line of keywords, including wildcard expansion
|
|
thermo.cpp: // customize a new thermo style by adding to if statement
|
|
thermo.cpp: // allocate line string used for 3 tasks
|
|
thermo.cpp: // concat of custom style args
|
|
thermo.cpp: // one-time thermo output of header line
|
|
thermo.cpp: // each line of numeric thermo output
|
|
thermo.cpp: // 256 = extra for ONE or MULTI string or multi formatting
|
|
thermo.cpp: // 64 = max per-arg chars in header or numeric output
|
|
thermo.cpp: // expand args if any have wildcard character "*"
|
|
thermo.cpp: // if wildcard expansion occurred, free earg memory from exapnd_args()
|
|
thermo.cpp: // ptrs, flags, IDs for compute objects thermo may use or create
|
|
thermo.cpp: // count fields in line
|
|
thermo.cpp: // allocate per-field memory
|
|
thermo.cpp: // process line of keywords
|
|
thermo.cpp: // format strings
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // format strings
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // set normvalue to default setting unless user has specified it
|
|
thermo.cpp: // add Volume field if volume changes and not style = custom
|
|
thermo.cpp: // this check must come after domain init, so box_change is set
|
|
thermo.cpp: // set format string for each field
|
|
thermo.cpp: // include keyword if lineflag = MULTILINE
|
|
thermo.cpp: // add '/n' every 3 values if lineflag = MULTILINE
|
|
thermo.cpp: // add trailing '/n' to last value
|
|
thermo.cpp: // find current ptr for each Compute ID
|
|
thermo.cpp: // find current ptr for each Fix ID
|
|
thermo.cpp: // check that fix frequency is acceptable with thermo output frequency
|
|
thermo.cpp: // find current ptr for each Variable ID
|
|
thermo.cpp: // set ptrs to keyword-specific Compute objects
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // check for lost atoms
|
|
thermo.cpp: // turn off normflag if natoms = 0 to avoid divide by 0
|
|
thermo.cpp: // invoke Compute methods needed for thermo keywords
|
|
thermo.cpp: // if lineflag = MULTILINE, prepend step/cpu header line
|
|
thermo.cpp: // add each thermo value to line with its specific format
|
|
thermo.cpp: // print line to screen and logfile
|
|
thermo.cpp: // set to 1, so that subsequent invocations of CPU time will be non-zero
|
|
thermo.cpp: // e.g. via variables in print command
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp: // ntotal = current # of atoms
|
|
thermo.cpp: // if not checking or already warned, just return
|
|
thermo.cpp: // error message
|
|
thermo.cpp: // warning message
|
|
thermo.cpp: // reset total atom count
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp: // reset id_temp of pressure to new temperature ID
|
|
thermo.cpp: // either pressure currently being used by thermo or "thermo_press"
|
|
thermo.cpp: } else if (strcmp(arg[iarg],"lost/bond") == 0) {
|
|
thermo.cpp: // replace "d" in format_int_user with bigint format specifier
|
|
thermo.cpp: // use of &str[1] removes leading '%' from BIGINT_FORMAT string
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp: // n = specified fields + Volume field (added at run time)
|
|
thermo.cpp: // factor of 3 is max number of computes a single field can add
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp: // customize a new keyword by adding to if statement
|
|
thermo.cpp: addfield("T/CPU",&Thermo::compute_tpcpu,FLOAT);
|
|
thermo.cpp: addfield("S/CPU",&Thermo::compute_spcpu,FLOAT);
|
|
thermo.cpp: // compute value = c_ID, fix value = f_ID, variable value = v_ID
|
|
thermo.cpp: // count trailing [] and store int arguments
|
|
thermo.cpp: // parse zero or one or two trailing brackets from ID
|
|
thermo.cpp: // argindex1,argindex2 = int inside each bracket pair, 0 if no bracket
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp: // turn off normflag if natoms = 0 to avoid divide by 0
|
|
thermo.cpp: // normflag must be set for lo-level thermo routines that may be invoked
|
|
thermo.cpp: // invoke a lo-level thermo routine to compute the variable value
|
|
thermo.cpp: // if keyword requires a compute, error if thermo doesn't use the compute
|
|
thermo.cpp: // if inbetween runs and needed compute is not current, error
|
|
thermo.cpp: // if in middle of run and needed compute is not current, invoke it
|
|
thermo.cpp: // for keywords that use energy (evdwl, ebond, etc):
|
|
thermo.cpp: // check if energy was tallied on this timestep and set pe->invoked_flag
|
|
thermo.cpp: // this will trigger next timestep for energy tallying via addstep()
|
|
thermo.cpp: // this means keywords that use pe (pe, etotal, enthalpy)
|
|
thermo.cpp: // need to always invoke it even if invoked_flag is set,
|
|
thermo.cpp: // because evdwl/etc may have set invoked_flag w/out
|
|
thermo.cpp: // actually invoking pe->compute_scalar()
|
|
thermo.cpp: "thermo to use/init temp");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "thermo to use/init temp");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "thermo to use/init temp");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "thermo to use/init temp");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "Thermo keyword in variable requires thermo to use/init pe");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp: "thermo to use/init press");
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp: compute/fix are normalized by atoms if returning extensive value
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // check for out-of-range access if vector/array is variable length
|
|
thermo.cpp: if (normflag && compute->extscalar) dvalue /= natoms;
|
|
thermo.cpp: else if (compute->extvector == 1) dvalue /= natoms;
|
|
thermo.cpp: else if (compute->extlist[argindex1[ifield]-1]) dvalue /= natoms;
|
|
thermo.cpp: if (normflag && compute->extarray) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag && fix->extscalar) dvalue /= natoms;
|
|
thermo.cpp: else if (fix->extvector == 1) dvalue /= natoms;
|
|
thermo.cpp: else if (fix->extlist[argindex1[ifield]-1]) dvalue /= natoms;
|
|
thermo.cpp: if (normflag && fix->extarray) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ----------------------------------------------------------------------
|
|
thermo.cpp: set ivalue/dvalue/bivalue if value is int/double/bigint
|
|
thermo.cpp:------------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (time_diff > 0.0 && cpu_diff > 0.0) dvalue = time_diff/cpu_diff;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (cpu_diff > 0.0) dvalue = step_diff/cpu_diff;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: (update->laststep - update->ntimestep) /
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) ke /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) vtmp /= natoms;
|
|
thermo.cpp: dvalue = etmp + ptmp*vtmp/(force->nktv2p);
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: dvalue += force->pair->etail / volume;
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: dvalue += force->pair->etail / volume;
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: dvalue = force->pair->etail / volume;
|
|
thermo.cpp: if (normflag) dvalue /= natoms;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: dvalue = force->mv2d * mass/dvalue;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // Cos(alpha) = (xy.xz + ly.yz)/(b.c)
|
|
thermo.cpp: double cosalpha = (h[5]*h[4]+h[1]*h[3])/
|
|
thermo.cpp: dvalue = acos(cosalpha)*180.0/MY_PI;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // Cos(beta) = xz/c
|
|
thermo.cpp: double cosbeta = h[4]/sqrt(h[2]*h[2]+h[3]*h[3]+h[4]*h[4]);
|
|
thermo.cpp: dvalue = acos(cosbeta)*180.0/MY_PI;
|
|
thermo.cpp:/* ---------------------------------------------------------------------- */
|
|
thermo.cpp: // Cos(gamma) = xy/b
|
|
thermo.cpp: double cosgamma = h[5]/sqrt(h[1]*h[1]+h[5]*h[5]);
|
|
thermo.cpp: dvalue = acos(cosgamma)*180.0/MY_PI;
|
|
timer.cpp:/* ----------------------------------------------------------------------
|
|
timer.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
timer.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
timer.cpp:------------------------------------------------------------------------- */
|
|
timer.cpp:#include <sys/time.h>
|
|
timer.cpp:#include <sys/resource.h>
|
|
timer.cpp:// convert a timespec ([[HH:]MM:]SS) to seconds
|
|
timer.cpp:// the strings "off" and "unlimited" result in -1;
|
|
timer.cpp: // first handle allowed textual inputs
|
|
timer.cpp:// Return the CPU time for the current process in seconds very
|
|
timer.cpp:// much in the same way as MPI_Wtime() returns the wall time.
|
|
timer.cpp: // from MSD docs.
|
|
timer.cpp:#else /* ! _WIN32 */
|
|
timer.cpp:#endif /* ! _WIN32 */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp: // format timeout setting
|
|
timer.cpp: // time since init_timeout()
|
|
timer.cpp: // remaining timeout in seconds
|
|
timer.cpp: // remaining 1/100ths of seconds
|
|
timer.cpp: // breaking s down into second/minutes/hours
|
|
timer.cpp: s = (s - seconds) / 60;
|
|
timer.cpp: const int hours = (s - minutes) / 60;
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp: // broadcast time to insure all ranks act the same.
|
|
timer.cpp:/* ---------------------------------------------------------------------- */
|
|
timer.cpp:/* ----------------------------------------------------------------------
|
|
timer.cpp:------------------------------------------------------------------------- */
|
|
timer.cpp: // format timeout setting
|
|
universe.cpp:/* ----------------------------------------------------------------------
|
|
universe.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
universe.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
universe.cpp:------------------------------------------------------------------------- */
|
|
universe.cpp:/* ----------------------------------------------------------------------
|
|
universe.cpp:------------------------------------------------------------------------- */
|
|
universe.cpp:/* ---------------------------------------------------------------------- */
|
|
universe.cpp:/* ----------------------------------------------------------------------
|
|
universe.cpp:------------------------------------------------------------------------- */
|
|
universe.cpp: if (i < (n-1)*nprocs/n) uni2orig[i] = i/(n-1) * n + (i % (n-1));
|
|
universe.cpp: else uni2orig[i] = (i - (n-1)*nprocs/n) * n + n-1;
|
|
universe.cpp: // skip header = blank and comment lines
|
|
universe.cpp: // read nprocs lines
|
|
universe.cpp: // uni2orig = inverse mapping
|
|
universe.cpp: // bcast uni2org from proc 0 to all other universe procs
|
|
universe.cpp: // create new uworld communicator
|
|
universe.cpp:/* ----------------------------------------------------------------------
|
|
universe.cpp:------------------------------------------------------------------------- */
|
|
universe.cpp: // check for valid partition argument
|
|
universe.cpp: // str may not be empty and may only consist of digits or 'x'
|
|
universe.cpp: // 'x' may not be the first or last character
|
|
universe.cpp: // require minimum of 1 partition with 1 processor
|
|
universe.cpp:/* ----------------------------------------------------------------------
|
|
universe.cpp:------------------------------------------------------------------------- */
|
|
universe.cpp:// helper function to convert the LAMMPS date string to a version id
|
|
universe.cpp:// that can be used for both string and numerical comparisons
|
|
universe.cpp:// where newer versions are larger than older ones.
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
update.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
update.cpp:/* ---------------------------------------------------------------------- */
|
|
update.cpp:/* ---------------------------------------------------------------------- */
|
|
update.cpp:/* ---------------------------------------------------------------------- */
|
|
update.cpp: // init the appropriate integrate and/or minimize class
|
|
update.cpp: // if neither (e.g. from write_restart) then just return
|
|
update.cpp: // only set first_update if a run or minimize is being performed
|
|
update.cpp:/* ---------------------------------------------------------------------- */
|
|
update.cpp: // physical constants from:
|
|
update.cpp: // http://physics.nist.gov/cuu/Constants/Table/allascii.txt
|
|
update.cpp: // using thermochemical calorie = 4.184 J
|
|
update.cpp: force->e_mass = 0.0; // not yet set
|
|
update.cpp: force->ftm2v = 1.0 / 48.88821291 / 48.88821291;
|
|
update.cpp: force->mv2d = 1.0 / 0.602214129;
|
|
update.cpp: force->e_mass = 1.0/1836.1527556560675;
|
|
update.cpp: force->ftm2v = 1.0 / 1.0364269e-4;
|
|
update.cpp: force->mv2d = 1.0 / 0.602214129;
|
|
update.cpp: force->e_mass = 0.0; // not yet set
|
|
update.cpp: force->e_mass = 0.0; // not yet set
|
|
update.cpp: force->e_mass = 0.0; // not yet set
|
|
update.cpp: force->e_mass = 0.0; // not yet set
|
|
update.cpp: force->e_mass = 0.0; // not yet set
|
|
update.cpp: force->e_mass = 0.0; // not yet set
|
|
update.cpp:/* ---------------------------------------------------------------------- */
|
|
update.cpp: if (sflag == 1) sprintf(estyle,"%s/%s",arg[0],lmp->suffix);
|
|
update.cpp: else sprintf(estyle,"%s/%s",arg[0],lmp->suffix2);
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
update.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix);
|
|
update.cpp: sprintf(estyle,"%s/%s",style,lmp->suffix2);
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
update.cpp:/* ---------------------------------------------------------------------- */
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
update.cpp: // set atimestep to new timestep
|
|
update.cpp: // so future update_time() calls will be correct
|
|
update.cpp: // trigger reset of timestep for output
|
|
update.cpp: // do not allow any timestep-dependent fixes to be already defined
|
|
update.cpp: // reset eflag/vflag global so no commands will think eng/virial are current
|
|
update.cpp: // reset invoked flags of computes,
|
|
update.cpp: // so no commands will think they are current between runs
|
|
update.cpp: // clear timestep list of computes that store future invocation times
|
|
update.cpp: // Neighbor Bin/Stencil/Pair classes store timestamps that need to be cleared
|
|
update.cpp: // NOTE: 7Jun12, adding rerun command, don't think this is required
|
|
update.cpp: //for (int i = 0; i < domain->nregion; i++)
|
|
update.cpp: // if (domain->regions[i]->dynamic_check())
|
|
update.cpp: // error->all(FLERR,"Cannot reset timestep with a dynamic region defined");
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
update.cpp:/* ----------------------------------------------------------------------
|
|
update.cpp: memory usage of update and integrate/minimize
|
|
update.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
variable.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:#define VALUELENGTH 64 // also in python.cpp
|
|
variable.cpp:// customize by adding a function
|
|
variable.cpp:// if add before XOR:
|
|
variable.cpp:// also set precedence level in constructor and precedence length in *.h
|
|
variable.cpp:// customize by adding a special function
|
|
variable.cpp:/* ---------------------------------------------------------------------- */
|
|
variable.cpp: // customize by assigning a precedence level
|
|
variable.cpp:/* ---------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // DELETE
|
|
variable.cpp: // doesn't matter if variable no longer exists
|
|
variable.cpp: // INDEX
|
|
variable.cpp: // num = listed args, which = 1st value, data = copied args
|
|
variable.cpp: // LOOP
|
|
variable.cpp: // 1 arg + pad: num = N, which = 1st value, data = single string
|
|
variable.cpp: // 2 args + pad: num = N2, which = N1, data = single string
|
|
variable.cpp: // WORLD
|
|
variable.cpp: // num = listed args, which = partition this proc is in, data = copied args
|
|
variable.cpp: // error check that num = # of worlds in universe
|
|
variable.cpp: // UNIVERSE and ULOOP
|
|
variable.cpp: // for UNIVERSE: num = listed args, data = copied args
|
|
variable.cpp: // for ULOOP: num = N, data = single string
|
|
variable.cpp: // which = partition this proc is in
|
|
variable.cpp: // universe proc 0 creates lock file
|
|
variable.cpp: // error check that all other universe/uloop variables are same length
|
|
variable.cpp: error->all(FLERR,"Universe/uloop variable count < # of partitions");
|
|
variable.cpp: "All universe/uloop variables must have same # of values");
|
|
variable.cpp: // STRING
|
|
variable.cpp: // replace pre-existing var if also style STRING (allows it to be reset)
|
|
variable.cpp: // num = 1, which = 1st value
|
|
variable.cpp: // data = 1 value, string to eval
|
|
variable.cpp: // GETENV
|
|
variable.cpp: // remove pre-existing var if also style GETENV (allows it to be reset)
|
|
variable.cpp: // num = 1, which = 1st value
|
|
variable.cpp: // data = 1 value, string to eval
|
|
variable.cpp: // SCALARFILE for strings or numbers
|
|
variable.cpp: // which = 1st value
|
|
variable.cpp: // data = 1 value, string to eval
|
|
variable.cpp: // ATOMFILE for numbers
|
|
variable.cpp: // which = 1st value
|
|
variable.cpp: // data = NULL
|
|
variable.cpp: // FORMAT
|
|
variable.cpp: // num = 3, which = 1st value
|
|
variable.cpp: // data = 3 values
|
|
variable.cpp: // 1st is name of variable to eval, 2nd is format string,
|
|
variable.cpp: // 3rd is filled on retrieval
|
|
variable.cpp: // EQUAL
|
|
variable.cpp: // replace pre-existing var if also style EQUAL (allows it to be reset)
|
|
variable.cpp: // num = 2, which = 1st value
|
|
variable.cpp: // data = 2 values, 1st is string to eval, 2nd is filled on retrieval
|
|
variable.cpp: // ATOM
|
|
variable.cpp: // replace pre-existing var if also style ATOM (allows it to be reset)
|
|
variable.cpp: // num = 1, which = 1st value
|
|
variable.cpp: // data = 1 value, string to eval
|
|
variable.cpp: // VECTOR
|
|
variable.cpp: // replace pre-existing var if also style VECTOR (allows it to be reset)
|
|
variable.cpp: // num = 1, which = 1st value
|
|
variable.cpp: // data = 1 value, string to eval
|
|
variable.cpp: // PYTHON
|
|
variable.cpp: // replace pre-existing var if also style PYTHON (allows it to be reset)
|
|
variable.cpp: // num = 2, which = 1st value
|
|
variable.cpp: // data = 2 values, 1st is Python func to invoke, 2nd is filled by invoke
|
|
variable.cpp: // INTERNAL
|
|
variable.cpp: // replace pre-existing var if also style INTERNAL (allows it to be reset)
|
|
variable.cpp: // num = 1, for string representation of dvalue, set by retrieve()
|
|
variable.cpp: // dvalue = numeric initialization from 2nd arg, reset by internal_set()
|
|
variable.cpp: // set name of variable, if not replacing one flagged with replaceflag
|
|
variable.cpp: // name must be all alphanumeric chars or underscores
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // check that variables exist and are all the same style
|
|
variable.cpp: // exception: UNIVERSE and ULOOP variables can be mixed in same next command
|
|
variable.cpp: // invalid styles: STRING, EQUAL, WORLD, ATOM, VECTOR, GETENV,
|
|
variable.cpp: // FORMAT, PYTHON, INTERNAL
|
|
variable.cpp: // if istyle = UNIVERSE or ULOOP, insure all such variables are incremented
|
|
variable.cpp: // increment all variables in list
|
|
variable.cpp: // if any variable is exhausted, set flag = 1 and remove var to allow re-use
|
|
variable.cpp: // wait until lock file can be created and owned by proc 0 of this world
|
|
variable.cpp: // rename() is not atomic in practice, but no known simple fix
|
|
variable.cpp: // means multiple procs can read/write file at the same time (bad!)
|
|
variable.cpp: // random delays help
|
|
variable.cpp: // delay for random fraction of 1 second before first rename() call
|
|
variable.cpp: // delay for random fraction of 1 second before subsequent tries
|
|
variable.cpp: // when successful, read next available index and Bcast it within my world
|
|
variable.cpp: //printf("READ %d %d\n",universe->me,nextindex);
|
|
variable.cpp: //printf("WRITE %d %d\n",universe->me,nextindex+1);
|
|
variable.cpp: // set all variables in list to nextindex
|
|
variable.cpp: // must increment all UNIVERSE and ULOOP variables here
|
|
variable.cpp: // error check above tested for this
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // if Python func returns a string longer than VALUELENGTH
|
|
variable.cpp: // then the Python class stores the result, query it via long_string()
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // (re)allocate space for results if necessary
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp: math operation = (),-x,x+y,x-y,x*y,x/y,x^y,
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // whitespace: just skip
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // parentheses: recursively evaluate contents of parens
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // evaluate contents and push on stack
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // number: push value onto stack
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // istop = end of number, including scientific notation
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // letter: c_ID, c_ID[], c_ID[][], f_ID, f_ID[], f_ID[][],
|
|
variable.cpp: // v_name, v_name[], exp(), xcm(,), x, x[], PI, vol
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // istop = end of word
|
|
variable.cpp: // word = all alphanumeric or underscore
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // compute
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // uppercase used to force access of
|
|
variable.cpp: // global vector vs global scalar, and global array vs global vector
|
|
variable.cpp: // parse zero or one or two trailing brackets
|
|
variable.cpp: // point i beyond last bracket
|
|
variable.cpp: // nbracket = # of bracket pairs
|
|
variable.cpp: // index1,index2 = int inside each bracket pair, possibly an atom ID
|
|
variable.cpp: // c_ID = scalar from global scalar, must be lowercase
|
|
variable.cpp: // c_ID[i] = scalar from global vector, must be lowercase
|
|
variable.cpp: // c_ID[i][j] = scalar from global array, must be lowercase
|
|
variable.cpp: // c_ID = vector from global vector, lowercase or uppercase
|
|
variable.cpp: // c_ID[i] = vector from global array, lowercase or uppercase
|
|
variable.cpp: // c_ID[i] = scalar from per-atom vector
|
|
variable.cpp: // c_ID[i][j] = scalar from per-atom array
|
|
variable.cpp: // c_ID = vector from per-atom vector
|
|
variable.cpp: // c_ID[i] = vector from per-atom array
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // fix
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // uppercase used to force access of
|
|
variable.cpp: // global vector vs global scalar, and global array vs global vector
|
|
variable.cpp: // parse zero or one or two trailing brackets
|
|
variable.cpp: // point i beyond last bracket
|
|
variable.cpp: // nbracket = # of bracket pairs
|
|
variable.cpp: // index1,index2 = int inside each bracket pair, possibly an atom ID
|
|
variable.cpp: // f_ID = scalar from global scalar, must be lowercase
|
|
variable.cpp: // f_ID[i] = scalar from global vector, must be lowercase
|
|
variable.cpp: // f_ID[i][j] = scalar from global array, must be lowercase
|
|
variable.cpp: // f_ID = vector from global vector, lowercase or uppercase
|
|
variable.cpp: // f_ID[i] = vector from global array, lowercase or uppercase
|
|
variable.cpp: // f_ID[i] = scalar from per-atom vector
|
|
variable.cpp: // f_ID[i][j] = scalar from per-atom array
|
|
variable.cpp: // f_ID = vector from per-atom vector
|
|
variable.cpp: // f_ID[i] = vector from per-atom array
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // variable
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // parse zero or one trailing brackets
|
|
variable.cpp: // point i beyond last bracket
|
|
variable.cpp: // nbracket = # of bracket pairs
|
|
variable.cpp: // index = int inside bracket, possibly an atom ID
|
|
variable.cpp: // v_name = scalar from internal-style variable
|
|
variable.cpp: // access value directly
|
|
variable.cpp: // v_name = scalar from non atom/atomfile & non vector-style variable
|
|
variable.cpp: // access value via retrieve()
|
|
variable.cpp: // v_name = per-atom vector from atom-style variable
|
|
variable.cpp: // evaluate the atom-style variable as newtree
|
|
variable.cpp: // v_name = per-atom vector from atomfile-style variable
|
|
variable.cpp: // v_name = vector from vector-style variable
|
|
variable.cpp: // evaluate the vector-style variable, put result in newtree
|
|
variable.cpp: // v_name[N] = scalar from atom-style variable
|
|
variable.cpp: // compute the per-atom variable in result
|
|
variable.cpp: // use peratom2global to extract single value from result
|
|
variable.cpp: // v_name[N] = scalar from atomfile-style variable
|
|
variable.cpp: // v_name[N] = scalar from vector-style variable
|
|
variable.cpp: // compute the vector-style variable, extract single value
|
|
variable.cpp: int m = index; // convert from tagint to int
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // math/group/special function or atom value/vector or
|
|
variable.cpp: // constant or thermo keyword
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // math or group or special function
|
|
variable.cpp: // ----------------
|
|
variable.cpp: else error->all(FLERR,"Invalid math/group/special function "
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // atom value
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // atom vector
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // constant
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // thermo keyword
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // math operator, including end-of-string
|
|
variable.cpp: // ----------------
|
|
variable.cpp: } else if (strchr("+-*/^<>=!&|%\0",onechar)) {
|
|
variable.cpp: else if (onechar == '/') op = DIVIDE;
|
|
variable.cpp: // evaluate stack as deep as possible while respecting precedence
|
|
variable.cpp: // before pushing current op onto stack
|
|
variable.cpp: argstack[nargstack++] = value1 / value2;
|
|
variable.cpp: // if end-of-string, break out of entire formula evaluation loop
|
|
variable.cpp: // push current operation onto stack
|
|
variable.cpp: // for atom-style variable, return remaining tree
|
|
variable.cpp: // for equal-style variable, return remaining arg
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:---------------------------------------------------------------------- */
|
|
variable.cpp: tree->value = arg1 / arg2;
|
|
variable.cpp: error->one(FLERR,"Log of zero/negative value in variable formula");
|
|
variable.cpp: error->one(FLERR,"Log of zero/negative value in variable formula");
|
|
variable.cpp: // random() or normal() do not become a single collapsed value
|
|
variable.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
variable.cpp: int lower = update->ntimestep/ivalue1 * ivalue1;
|
|
variable.cpp: int multiple = update->ntimestep/lower;
|
|
variable.cpp: double delta = ivalue1*(ivalue3-1.0)/ivalue2;
|
|
variable.cpp: tree->value = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: istep = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: istep = ivalue4 + (offset/ivalue6)*ivalue6 + ivalue6;
|
|
variable.cpp: istep = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: double omega = 2.0*MY_PI/arg3;
|
|
variable.cpp: double omega = 2.0*MY_PI/arg3;
|
|
variable.cpp: // mask functions do not become a single collapsed value
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:---------------------------------------------------------------------- */
|
|
variable.cpp: return eval_tree(tree->first,i) / denom;
|
|
variable.cpp: error->one(FLERR,"Log of zero/negative value in variable formula");
|
|
variable.cpp: error->one(FLERR,"Log of zero/negative value in variable formula");
|
|
variable.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
variable.cpp: int lower = update->ntimestep/ivalue1 * ivalue1;
|
|
variable.cpp: int multiple = update->ntimestep/lower;
|
|
variable.cpp: double delta = ivalue1*(ivalue3-1.0)/ivalue2;
|
|
variable.cpp: arg = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: istep = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: istep = ivalue4 + (offset/ivalue6)*ivalue6 + ivalue6;
|
|
variable.cpp: istep = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: double omega = 2.0*MY_PI/arg3;
|
|
variable.cpp: double omega = 2.0*MY_PI/arg3;
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ---------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // istop = matching ')' at same level, allowing for nested parens
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // evaluate index as floating point variable or as tagint via ATOTAGINT()
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // word not a match to any math function
|
|
variable.cpp: // parse contents for comma-separated args
|
|
variable.cpp: // narg = number of args, args = strings between commas
|
|
variable.cpp: // individual math functions
|
|
variable.cpp: // customize by adding a function
|
|
variable.cpp: error->all(FLERR,"Log of zero/negative value in variable formula");
|
|
variable.cpp: error->all(FLERR,"Log of zero/negative value in variable formula");
|
|
variable.cpp: if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
|
variable.cpp: int lower = update->ntimestep/ivalue1 * ivalue1;
|
|
variable.cpp: int multiple = update->ntimestep/lower;
|
|
variable.cpp: double delta = ivalue1*(ivalue3-1.0)/ivalue2;
|
|
variable.cpp: value = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: istep = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: istep = ivalue4 + (offset/ivalue6)*ivalue6 + ivalue6;
|
|
variable.cpp: istep = ivalue1 + (offset/ivalue3)*ivalue3 + ivalue3;
|
|
variable.cpp: double omega = 2.0*MY_PI/values[0];
|
|
variable.cpp: double omega = 2.0*MY_PI/values[0];
|
|
variable.cpp: // delete stored args
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // word not a match to any group function
|
|
variable.cpp: // parse contents for comma-separated args
|
|
variable.cpp: // narg = number of args, args = strings between commas
|
|
variable.cpp: // group to operate on
|
|
variable.cpp: // match word to group function
|
|
variable.cpp: // delete stored args
|
|
variable.cpp: // save value in tree or on argstack
|
|
variable.cpp:/* ---------------------------------------------------------------------- */
|
|
variable.cpp: // init region in case sub-regions have been deleted
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // word not a match to any special function
|
|
variable.cpp: // parse contents for comma-separated args
|
|
variable.cpp: // narg = number of args, args = strings between commas
|
|
variable.cpp: // special functions that operate on global vectors
|
|
variable.cpp: // argument is compute
|
|
variable.cpp: // argument is fix
|
|
variable.cpp: // argument is vector-style variable
|
|
variable.cpp: if (nvec > 1) xvalue = (double) i / (nvec-1);
|
|
variable.cpp: if (nvec > 1) xvalue = (double) i / (nvec-1);
|
|
variable.cpp: if (nvec > 1) xvalue = (double) i / (nvec-1);
|
|
variable.cpp: if (method == AVE) value /= nvec;
|
|
variable.cpp: if (denominator != 0.0) value = numerator/denominator / nvec;
|
|
variable.cpp: // save value in tree or on argstack
|
|
variable.cpp: // mask special functions
|
|
variable.cpp: // special function for file-style or atomfile-style variables
|
|
variable.cpp: // SCALARFILE has single current value, read next one
|
|
variable.cpp: // save value in tree or on argstack
|
|
variable.cpp: // ATOMFILE has per-atom values, save values in tree
|
|
variable.cpp: // copy current per-atom values into result so can read next ones
|
|
variable.cpp: // set selfalloc = 1 so result will be deleted by free_tree() after eval
|
|
variable.cpp: // save value in tree or on argstack
|
|
variable.cpp: // save value in tree or on argstack
|
|
variable.cpp: // save value in tree or on argstack
|
|
variable.cpp: // delete stored args
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // error check for ID larger than any atom
|
|
variable.cpp: // int_between_brackets() already checked for ID <= 0
|
|
variable.cpp: // if ID does not exist, index will be -1 for all procs,
|
|
variable.cpp: // and mine will be set to 0.0
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: int flag; // 0 for numeric value, 1 for string
|
|
variable.cpp: double value; // stored numeric value
|
|
variable.cpp: char *str; // stored string
|
|
variable.cpp: // whitespace: just skip
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // parentheses: recursively evaluate contents of parens
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // evaluate contents and push on stack
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // number: push value onto stack
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // set I to end of number, including scientific notation
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // string: push string onto stack
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // set I to end of string
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // Boolean operator, including end-of-string
|
|
variable.cpp: // ----------------
|
|
variable.cpp: // evaluate stack as deep as possible while respecting precedence
|
|
variable.cpp: // before pushing current op onto stack
|
|
variable.cpp: // if end-of-string, break out of entire formula evaluation loop
|
|
variable.cpp: // push current operation onto stack
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // if atomfile-style variable, must store per-atom values read from file
|
|
variable.cpp: // allocate a new fix STORE, so they persist
|
|
variable.cpp: // id = variable-ID + VARIABLE_STORE, fix group = all
|
|
variable.cpp:/* ---------------------------------------------------------------------- */
|
|
variable.cpp: // check modify in case all fixes have already been deleted
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // read one string from file
|
|
variable.cpp: if (n == 0) break; // end of file
|
|
variable.cpp: str[n-1] = '\0'; // strip newline
|
|
variable.cpp: if ((ptr = strchr(str,'#'))) *ptr = '\0'; // strip comment
|
|
variable.cpp: if (strtok(str," \t\n\r\f") == NULL) continue; // skip if blank
|
|
variable.cpp:/* ----------------------------------------------------------------------
|
|
variable.cpp:------------------------------------------------------------------------- */
|
|
variable.cpp: // set all per-atom values to 0.0
|
|
variable.cpp: // values that appear in file will overwrite this
|
|
variable.cpp: // read one string from file, convert to Nlines
|
|
variable.cpp: if (n == 0) break; // end of file
|
|
variable.cpp: str[n-1] = '\0'; // strip newline
|
|
variable.cpp: if ((ptr = strchr(str,'#'))) *ptr = '\0'; // strip comment
|
|
variable.cpp: if (strtok(str," \t\n\r\f") == NULL) continue; // skip if blank
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
velocity.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp:/* ---------------------------------------------------------------------- */
|
|
velocity.cpp:/* ---------------------------------------------------------------------- */
|
|
velocity.cpp: // atom masses must all be set
|
|
velocity.cpp: // identify group
|
|
velocity.cpp: // identify style
|
|
velocity.cpp: // set defaults
|
|
velocity.cpp: // read options from end of input line
|
|
velocity.cpp: // change defaults as options specify
|
|
velocity.cpp: // special cases where full init and border communication must be done first
|
|
velocity.cpp: // for ZERO if fix rigid/small is used
|
|
velocity.cpp: // for CREATE/SET if compute temp/cs is used
|
|
velocity.cpp: // b/c methods invoked in the compute/fix perform forward/reverse comm
|
|
velocity.cpp: strcmp(modify->fix[rfix]->style,"rigid/small") == 0) initcomm = 1;
|
|
velocity.cpp: strcmp(temperature->style,"temp/cs") == 0) initcomm = 1;
|
|
velocity.cpp: // initialize velocities based on style
|
|
velocity.cpp: // create() invoked differently, so can be called externally
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp:/* ---------------------------------------------------------------------- */
|
|
velocity.cpp: // if sum_flag set, store a copy of current velocities
|
|
velocity.cpp: // if temperature = NULL or bias_flag set,
|
|
velocity.cpp: // create a new ComputeTemp with the velocity group
|
|
velocity.cpp: // initialize temperature computation(s)
|
|
velocity.cpp: // warn if groups don't match
|
|
velocity.cpp: // if bias_flag set, remove bias velocity from all atoms
|
|
velocity.cpp: // for some temperature computes, must first calculate temp to do that
|
|
velocity.cpp: // create new velocities, in uniform or gaussian distribution
|
|
velocity.cpp: // loop option determines looping style, ALL is default
|
|
velocity.cpp: // ALL = loop over all natoms, only set those I own via atom->map
|
|
velocity.cpp: // cannot do this if atom IDs do not span 1-Natoms (some were deleted)
|
|
velocity.cpp: // will produce same V, independent of P, if atoms were read-in
|
|
velocity.cpp: // will NOT produce same V, independent of P, if used create_atoms
|
|
velocity.cpp: // LOCAL = only loop over my atoms, adjust RNG to be proc-specific
|
|
velocity.cpp: // will never produce same V, independent of P
|
|
velocity.cpp: // GEOM = only loop over my atoms
|
|
velocity.cpp: // choose RNG for each atom based on its xyz coord (geometry)
|
|
velocity.cpp: // via random->reset()
|
|
velocity.cpp: // will always produce same V, independent of P
|
|
velocity.cpp: // adjust by factor for atom mass
|
|
velocity.cpp: // set xdim,ydim,zdim = 1/0 for whether to create velocity in those dims
|
|
velocity.cpp: // zdim = 0 for 2d
|
|
velocity.cpp: // any dims can be 0 if bias temperature compute turns them off
|
|
velocity.cpp: // currently only temp/partial does
|
|
velocity.cpp: // create an atom map if one doesn't exist already
|
|
velocity.cpp: // error check
|
|
velocity.cpp: // loop over all atoms in system
|
|
velocity.cpp: // generate RNGs for all atoms, only assign to ones I own
|
|
velocity.cpp: // use either per-type mass or per-atom rmass
|
|
velocity.cpp: if (rmass) factor = 1.0/sqrt(rmass[m]);
|
|
velocity.cpp: else factor = 1.0/sqrt(mass[type[m]]);
|
|
velocity.cpp: // delete temporary atom map
|
|
velocity.cpp: if (rmass) factor = 1.0/sqrt(rmass[i]);
|
|
velocity.cpp: else factor = 1.0/sqrt(mass[type[i]]);
|
|
velocity.cpp: if (rmass) factor = 1.0/sqrt(rmass[i]);
|
|
velocity.cpp: else factor = 1.0/sqrt(mass[type[i]]);
|
|
velocity.cpp: // apply momentum and rotation zeroing
|
|
velocity.cpp: // scale temp to desired value
|
|
velocity.cpp: // if bias flag is set, bias velocities have already been removed:
|
|
velocity.cpp: // no-bias compute calculates temp only for new thermal velocities
|
|
velocity.cpp: // if bias_flag set, restore bias velocity to all atoms
|
|
velocity.cpp: // reapply needed for temperature computes where velocity
|
|
velocity.cpp: // creation has messed up the bias that was already removed:
|
|
velocity.cpp: // compute temp/partial needs to reset v dims to 0.0
|
|
velocity.cpp: // compute temp/cs needs to reset v to COM velocity of each C/S pair
|
|
velocity.cpp: // if sum_flag set, add back in previous velocities
|
|
velocity.cpp: // free local memory
|
|
velocity.cpp: // if temperature compute was created, delete it
|
|
velocity.cpp:/* ---------------------------------------------------------------------- */
|
|
velocity.cpp: // parse 3 args
|
|
velocity.cpp: // set and apply scale factors
|
|
velocity.cpp: // check variables
|
|
velocity.cpp: // error check for 2d models
|
|
velocity.cpp: // allocate vfield array if necessary
|
|
velocity.cpp: // set velocities via constants
|
|
velocity.cpp: // set velocities via variables
|
|
velocity.cpp: // clean up
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp: // if temperature = NULL, create a new ComputeTemp with the velocity group
|
|
velocity.cpp: // initialize temperature computation
|
|
velocity.cpp: // warn if groups don't match
|
|
velocity.cpp: // scale temp to desired value
|
|
velocity.cpp: // if bias flag is set:
|
|
velocity.cpp: // temperature calculation will be done accounting for bias
|
|
velocity.cpp: // remove/restore bias velocities before/after rescale
|
|
velocity.cpp: // if temperature was created, delete it
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp: // set scale factors
|
|
velocity.cpp: // parse args
|
|
velocity.cpp: // vramp = ramped velocity component for v_dim
|
|
velocity.cpp: // add or set based on sum_flag
|
|
velocity.cpp: fraction = (x[i][coord_dim] - coord_lo) / (coord_hi - coord_lo);
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp: else if (strcmp(modify->fix[rfix]->style,"rigid/small") == 0) {
|
|
velocity.cpp: else if (strcmp(modify->fix[rfix]->style,"rigid/small") == 0) {
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp: double factor = sqrt(t_new/t_old);
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp: // cannot have no atoms in group
|
|
velocity.cpp: // compute velocity of center-of-mass of group
|
|
velocity.cpp: // adjust velocities by vcm to zero linear momentum
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp: // cannot have no atoms in group
|
|
velocity.cpp: // compute omega (angular velocity) of group around center-of-mass
|
|
velocity.cpp: // adjust velocities to zero omega
|
|
velocity.cpp: // vnew_i = v_i - w x r_i
|
|
velocity.cpp: // must use unwrapped coords to compute r_i correctly
|
|
velocity.cpp:/* ----------------------------------------------------------------------
|
|
velocity.cpp:------------------------------------------------------------------------- */
|
|
velocity.cpp: // error check
|
|
verlet.cpp:/* ----------------------------------------------------------------------
|
|
verlet.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
verlet.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
verlet.cpp:------------------------------------------------------------------------- */
|
|
verlet.cpp:/* ---------------------------------------------------------------------- */
|
|
verlet.cpp:/* ----------------------------------------------------------------------
|
|
verlet.cpp:------------------------------------------------------------------------- */
|
|
verlet.cpp: // warn if no fixes
|
|
verlet.cpp: // virial_style:
|
|
verlet.cpp: // 1 if computed explicitly by pair->compute via sum over pair interactions
|
|
verlet.cpp: // 2 if computed implicitly by pair->virial_fdotr_compute via sum over ghosts
|
|
verlet.cpp: // setup lists of computes for global and per-atom PE and pressure
|
|
verlet.cpp: // detect if fix omp is present for clearing force arrays
|
|
verlet.cpp: // set flags for arrays to clear in force_clear()
|
|
verlet.cpp: // orthogonal vs triclinic simulation box
|
|
verlet.cpp:/* ----------------------------------------------------------------------
|
|
verlet.cpp:------------------------------------------------------------------------- */
|
|
verlet.cpp: error->all(FLERR,"KOKKOS package requires run_style verlet/kk");
|
|
verlet.cpp: // setup domain, communication and neighboring
|
|
verlet.cpp: // acquire ghosts
|
|
verlet.cpp: // build neighbor lists
|
|
verlet.cpp: // compute all forces
|
|
verlet.cpp:/* ----------------------------------------------------------------------
|
|
verlet.cpp:------------------------------------------------------------------------- */
|
|
verlet.cpp: // setup domain, communication and neighboring
|
|
verlet.cpp: // acquire ghosts
|
|
verlet.cpp: // build neighbor lists
|
|
verlet.cpp: // compute all forces
|
|
verlet.cpp:/* ----------------------------------------------------------------------
|
|
verlet.cpp:------------------------------------------------------------------------- */
|
|
verlet.cpp: // initial time integration
|
|
verlet.cpp: // regular communication vs neighbor list rebuild
|
|
verlet.cpp: // force computations
|
|
verlet.cpp: // important for pair to come before bonded contributions
|
|
verlet.cpp: // since some bonded potentials tally pairwise energy/virial
|
|
verlet.cpp: // and Pair:ev_tally() needs to be called before any tallying
|
|
verlet.cpp: // reverse communication of forces
|
|
verlet.cpp: // force modifications, final time integration, diagnostics
|
|
verlet.cpp: // all output
|
|
verlet.cpp:/* ---------------------------------------------------------------------- */
|
|
verlet.cpp:/* ----------------------------------------------------------------------
|
|
verlet.cpp:------------------------------------------------------------------------- */
|
|
verlet.cpp: // clear force on all particles
|
|
verlet.cpp: // if either newton flag is set, also include ghosts
|
|
verlet.cpp: // when using threads always clear all forces.
|
|
verlet.cpp: //test memset for fm
|
|
verlet.cpp: //memset(&atom->fm[0][0],0,3*nbytes);
|
|
verlet.cpp: // neighbor includegroup flag is set
|
|
verlet.cpp: // clear force only on initial nfirst particles
|
|
verlet.cpp: // if either newton flag is set, also include ghosts
|
|
write_coeff.cpp:/* ----------------------------------------------------------------------
|
|
write_coeff.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
write_coeff.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
write_coeff.cpp:------------------------------------------------------------------------- */
|
|
write_coeff.cpp:/* ----------------------------------------------------------------------
|
|
write_coeff.cpp:------------------------------------------------------------------------- */
|
|
write_coeff.cpp: // initialize relevant styles
|
|
write_coeff.cpp: fputs(str,two); // style
|
|
write_coeff.cpp: fgets(str,256,one); // coeff
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
write_data.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp:enum{IGNORE,WARN,ERROR}; // same as thermo.cpp
|
|
write_data.cpp:/* ---------------------------------------------------------------------- */
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // if filename contains a "*", replace with current timestep
|
|
write_data.cpp: // read optional args
|
|
write_data.cpp: // noinit is a hidden arg, only used by -r command-line switch
|
|
write_data.cpp: // init entire system since comm->exchange is done
|
|
write_data.cpp: // comm::init needs neighbor::init needs pair::init needs kspace::init, etc
|
|
write_data.cpp: // exception is when called by -r command-line switch
|
|
write_data.cpp: // then write_data immediately follows reading of restart file
|
|
write_data.cpp: // assume that read_restart initialized necessary values
|
|
write_data.cpp: // if don't make exception:
|
|
write_data.cpp: // pair->init() can fail due to various unset values:
|
|
write_data.cpp: // e.g. pair hybrid coeffs, dpd ghost-atom velocity setting
|
|
write_data.cpp: // move atoms to new processors before writing file
|
|
write_data.cpp: // do setup_pre_exchange to force update of per-atom info if needed
|
|
write_data.cpp: // enforce PBC in case atoms are outside box
|
|
write_data.cpp: // call borders() to rebuild atom map since exchange() destroys map
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp: might later let it be directly called within run/minimize loop
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // special case where reneighboring is not done in integrator
|
|
write_data.cpp: // on timestep data file is written (due to build_once being set)
|
|
write_data.cpp: // if box is changing, must be reset, else data file will have
|
|
write_data.cpp: // wrong box size and atoms will be lost when data file is read
|
|
write_data.cpp: // other calls to pbc and domain and comm are not made,
|
|
write_data.cpp: // b/c they only make sense if reneighboring is actually performed
|
|
write_data.cpp: //if (neighbor->build_once) domain->reset_box();
|
|
write_data.cpp: // natoms = sum of nlocal = value to write into data file
|
|
write_data.cpp: // if unequal and thermo lostflag is "error", don't write data file
|
|
write_data.cpp: // sum up bond,angle counts
|
|
write_data.cpp: // may be different than atom->nbonds,nangles if broken/turned-off
|
|
write_data.cpp: // open data file
|
|
write_data.cpp: // proc 0 writes header, ntype-length arrays, force fields
|
|
write_data.cpp: // per atom info
|
|
write_data.cpp: // do not write molecular topology for atom_style template
|
|
write_data.cpp: // extra sections managed by fixes
|
|
write_data.cpp: // close data file
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // do not write molecular topology info for atom_style template
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // communication buffer for all my Atom info
|
|
write_data.cpp: // max_size = largest buffer needed by any proc
|
|
write_data.cpp: // pack my atom data into buf
|
|
write_data.cpp: // write one chunk of atoms per proc to file
|
|
write_data.cpp: // proc 0 pings each proc, receives its chunk, writes to file
|
|
write_data.cpp: // all other procs wait for ping, send their chunk to proc 0
|
|
write_data.cpp: recvrow /= ncol;
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // communication buffer for all my Atom info
|
|
write_data.cpp: // max_size = largest buffer needed by any proc
|
|
write_data.cpp: // pack my velocity data into buf
|
|
write_data.cpp: // write one chunk of velocities per proc to file
|
|
write_data.cpp: // proc 0 pings each proc, receives its chunk, writes to file
|
|
write_data.cpp: // all other procs wait for ping, send their chunk to proc 0
|
|
write_data.cpp: recvrow /= ncol;
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // communication buffer for all my Bond info
|
|
write_data.cpp: // pack my bond data into buf
|
|
write_data.cpp: // write one chunk of info per proc to file
|
|
write_data.cpp: // proc 0 pings each proc, receives its chunk, writes to file
|
|
write_data.cpp: // all other procs wait for ping, send their chunk to proc 0
|
|
write_data.cpp: recvrow /= ncol;
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // communication buffer for all my Angle info
|
|
write_data.cpp: // pack my angle data into buf
|
|
write_data.cpp: // write one chunk of info per proc to file
|
|
write_data.cpp: // proc 0 pings each proc, receives its chunk, writes to file
|
|
write_data.cpp: // all other procs wait for ping, send their chunk to proc 0
|
|
write_data.cpp: recvrow /= ncol;
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // communication buffer for all my Dihedral info
|
|
write_data.cpp: // max_size = largest buffer needed by any proc
|
|
write_data.cpp: // pack my dihedral data into buf
|
|
write_data.cpp: // write one chunk of info per proc to file
|
|
write_data.cpp: // proc 0 pings each proc, receives its chunk, writes to file
|
|
write_data.cpp: // all other procs wait for ping, send their chunk to proc 0
|
|
write_data.cpp: recvrow /= ncol;
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // communication buffer for all my Improper info
|
|
write_data.cpp: // max_size = largest buffer needed by any proc
|
|
write_data.cpp: // pack my improper data into buf
|
|
write_data.cpp: // write one chunk of info per proc to file
|
|
write_data.cpp: // proc 0 pings each proc, receives its chunk, writes to file
|
|
write_data.cpp: // all other procs wait for ping, send their chunk to proc 0
|
|
write_data.cpp: recvrow /= ncol;
|
|
write_data.cpp:/* ----------------------------------------------------------------------
|
|
write_data.cpp:------------------------------------------------------------------------- */
|
|
write_data.cpp: // communication buffer for Fix info
|
|
write_data.cpp: // pack my fix data into buf
|
|
write_data.cpp: // write one chunk of info per proc to file
|
|
write_data.cpp: // proc 0 pings each proc, receives its chunk, writes to file
|
|
write_data.cpp: // all other procs wait for ping, send their chunk to proc 0
|
|
write_data.cpp: recvrow /= ncol;
|
|
write_dump.cpp:/* ----------------------------------------------------------------------
|
|
write_dump.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
write_dump.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
write_dump.cpp:------------------------------------------------------------------------- */
|
|
write_dump.cpp:/* ----------------------------------------------------------------------
|
|
write_dump.cpp:------------------------------------------------------------------------- */
|
|
write_dump.cpp:/* ---------------------------------------------------------------------- */
|
|
write_dump.cpp: // modindex = index in args of "modify" keyword
|
|
write_dump.cpp: // will be narg if "modify" is not present
|
|
write_dump.cpp: // create the Dump instance
|
|
write_dump.cpp: // create dump command line with extra required args
|
|
write_dump.cpp: dumpargs[0] = (char *) "WRITE_DUMP"; // dump id
|
|
write_dump.cpp: dumpargs[1] = arg[0]; // group
|
|
write_dump.cpp: dumpargs[2] = arg[1]; // dump style
|
|
write_dump.cpp: dumpargs[3] = (char *) "1"; // dump frequency
|
|
write_dump.cpp: if (0) return; // dummy line to enable else-if macro expansion
|
|
write_dump.cpp: // write out one frame and then delete the dump again
|
|
write_dump.cpp: // set multifile_override for DumpImage so that filename needs no "*"
|
|
write_dump.cpp: // delete the Dump instance and local storage
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp: LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
write_restart.cpp: http://lammps.sandia.gov, Sandia National Laboratories
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp:// same as read_restart.cpp
|
|
write_restart.cpp:enum{IGNORE,WARN,ERROR}; // same as thermo.cpp
|
|
write_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp: // if filename contains a "*", replace with current timestep
|
|
write_restart.cpp: // check for multiproc output and an MPI-IO filename
|
|
write_restart.cpp: // setup output style and process optional args
|
|
write_restart.cpp: // also called by Output class for periodic restart files
|
|
write_restart.cpp: // init entire system since comm->exchange is done
|
|
write_restart.cpp: // comm::init needs neighbor::init needs pair::init needs kspace::init, etc
|
|
write_restart.cpp: // move atoms to new processors before writing file
|
|
write_restart.cpp: // enforce PBC in case atoms are outside box
|
|
write_restart.cpp: // call borders() to rebuild atom map since exchange() destroys map
|
|
write_restart.cpp: // NOTE: removed call to setup_pre_exchange
|
|
write_restart.cpp: // used to be needed by fixShearHistory for granular
|
|
write_restart.cpp: // to move history info from neigh list to atoms between runs
|
|
write_restart.cpp: // but now that is done via FIx::post_run()
|
|
write_restart.cpp: // don't think any other fix needs this or should do it
|
|
write_restart.cpp: // e.g. fix evaporate should not delete more atoms
|
|
write_restart.cpp: // modify->setup_pre_exchange();
|
|
write_restart.cpp: // write single restart file
|
|
write_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
write_restart.cpp: // error checks
|
|
write_restart.cpp: // defaults for multiproc file writing
|
|
write_restart.cpp: // optional args
|
|
write_restart.cpp: multiproc = nprocs/nper;
|
|
write_restart.cpp: fileproc = me/nper * nper;
|
|
write_restart.cpp: icluster = fileproc/nper;
|
|
write_restart.cpp: icluster = static_cast<int> ((bigint) me * nfile/nprocs);
|
|
write_restart.cpp: fileproc = static_cast<int> ((bigint) icluster * nprocs/nfile);
|
|
write_restart.cpp: int fcluster = static_cast<int> ((bigint) fileproc * nfile/nprocs);
|
|
write_restart.cpp: static_cast<int> ((bigint) (icluster+1) * nprocs/nfile);
|
|
write_restart.cpp: fcluster = static_cast<int> ((bigint) fileprocnext * nfile/nprocs);
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp: called from command() and directly from output within run/minimize loop
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp: // special case where reneighboring is not done in integrator
|
|
write_restart.cpp: // on timestep restart file is written (due to build_once being set)
|
|
write_restart.cpp: // if box is changing, must be reset, else restart file will have
|
|
write_restart.cpp: // wrong box size and atoms will be lost when restart file is read
|
|
write_restart.cpp: // other calls to pbc and domain and comm are not made,
|
|
write_restart.cpp: // b/c they only make sense if reneighboring is actually performed
|
|
write_restart.cpp: // natoms = sum of nlocal = value to write into restart file
|
|
write_restart.cpp: // if unequal and thermo lostflag is "error", don't write restart file
|
|
write_restart.cpp: // open single restart file or base file for multiproc case
|
|
write_restart.cpp: // proc 0 writes magic string, endian flag, numeric version
|
|
write_restart.cpp: // proc 0 writes header, groups, pertype info, force field info
|
|
write_restart.cpp: // all procs write fix info
|
|
write_restart.cpp: // communication buffer for my atom info
|
|
write_restart.cpp: // max_size = largest buffer needed by any proc
|
|
write_restart.cpp: // NOTE: are assuming size_restart() returns 32-bit int
|
|
write_restart.cpp: // for a huge one-proc problem, nlocal could be 32-bit
|
|
write_restart.cpp: // but nlocal * doubles-peratom could oveflow
|
|
write_restart.cpp: // all procs write file layout info which may include per-proc sizes
|
|
write_restart.cpp: // header info is complete
|
|
write_restart.cpp: // if multiproc output:
|
|
write_restart.cpp: // close header file, open multiname file on each writing proc,
|
|
write_restart.cpp: // write PROCSPERFILE into new file
|
|
write_restart.cpp: // pack my atom data into buf
|
|
write_restart.cpp: // if any fix requires it, remap each atom's coords via PBC
|
|
write_restart.cpp: // is because fix changes atom coords (excepting an integrate fix)
|
|
write_restart.cpp: // just remap in buffer, not actual atoms
|
|
write_restart.cpp: // MPI-IO output to single file
|
|
write_restart.cpp: // output of one or more native files
|
|
write_restart.cpp: // filewriter = 1 = this proc writes to file
|
|
write_restart.cpp: // ping each proc in my cluster, receive its data, write data to file
|
|
write_restart.cpp: // else wait for ping from fileproc, send my data to fileproc
|
|
write_restart.cpp: // clean up
|
|
write_restart.cpp: // invoke any fixes that write their own restart file
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp: // added field for shrink-wrap boundaries with minimum - 2 Jul 2015
|
|
write_restart.cpp: // write atom_style and its args
|
|
write_restart.cpp: // -1 flag signals end of header
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp: // -1 flag signals end of type arrays
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp: // -1 flag signals end of force field info
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp: // -1 flag signals end of file layout info
|
|
write_restart.cpp: // if MPI-IO file, broadcast the end of the header offste
|
|
write_restart.cpp: // this allows all ranks to compute offset to their data
|
|
write_restart.cpp:// ----------------------------------------------------------------------
|
|
write_restart.cpp:// ----------------------------------------------------------------------
|
|
write_restart.cpp:// low-level fwrite methods
|
|
write_restart.cpp:// ----------------------------------------------------------------------
|
|
write_restart.cpp:// ----------------------------------------------------------------------
|
|
write_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ---------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|
|
write_restart.cpp:/* ----------------------------------------------------------------------
|
|
write_restart.cpp:------------------------------------------------------------------------- */
|