150 lines
3.7 KiB
C++
150 lines
3.7 KiB
C++
/* -*- c++ -*- ----------------------------------------------------------
|
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
|
https://www.lammps.org/, Sandia National Laboratories
|
|
Steve Plimpton, sjplimp@sandia.gov
|
|
|
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
|
certain rights in this software. This software is distributed under
|
|
the GNU General Public License.
|
|
|
|
See the README file in the top-level LAMMPS directory.
|
|
------------------------------------------------------------------------- */
|
|
|
|
#ifdef COMMAND_CLASS
|
|
// clang-format off
|
|
CommandStyle(prd,PRD);
|
|
// clang-format on
|
|
#else
|
|
|
|
#ifndef LMP_PRD_H
|
|
#define LMP_PRD_H
|
|
|
|
#include "command.h"
|
|
|
|
namespace LAMMPS_NS {
|
|
|
|
class PRD : public Command {
|
|
public:
|
|
PRD(class LAMMPS *);
|
|
~PRD() {}
|
|
void command(int, char **);
|
|
|
|
private:
|
|
int me, nprocs;
|
|
int t_event, n_dephase, t_dephase, t_corr;
|
|
double etol, ftol, temp_dephase;
|
|
int maxiter, maxeval, temp_flag, stepmode, cmode;
|
|
char *loop_setting, *dist_setting;
|
|
|
|
int equal_size_replicas, natoms;
|
|
int neigh_every, neigh_delay, neigh_dist_check;
|
|
int quench_reneighbor;
|
|
bigint nbuild, ndanger;
|
|
|
|
double time_dephase, time_dynamics, time_quench, time_comm, time_output;
|
|
double time_start;
|
|
|
|
MPI_Comm comm_replica;
|
|
int *counts, *displacements;
|
|
tagint *tagall;
|
|
double **xall;
|
|
imageint *imageall;
|
|
|
|
int ncoincident;
|
|
|
|
class RanPark *random_select, *random_clock;
|
|
class RanMars *random_dephase;
|
|
class Compute *compute_event;
|
|
class FixEventPRD *fix_event;
|
|
class Velocity *velocity;
|
|
class Compute *temperature;
|
|
class Finish *finish;
|
|
|
|
void dephase();
|
|
void dynamics(int, double &);
|
|
void quench();
|
|
int check_event(int replica = -1);
|
|
void share_event(int, int, int);
|
|
void log_event();
|
|
void replicate(int);
|
|
void options(int, char **);
|
|
};
|
|
|
|
} // namespace LAMMPS_NS
|
|
|
|
#endif
|
|
#endif
|
|
|
|
/* ERROR/WARNING messages:
|
|
|
|
E: PRD command before simulation box is defined
|
|
|
|
The prd command cannot be used before a read_data,
|
|
read_restart, or create_box command.
|
|
|
|
E: Cannot use PRD with multi-processor replicas unless atom map exists
|
|
|
|
Use the atom_modify command to create an atom map.
|
|
|
|
W: Running PRD with only one replica
|
|
|
|
This is allowed, but you will get no parallel speed-up.
|
|
|
|
E: Illegal ... command
|
|
|
|
Self-explanatory. Check the input script syntax and compare to the
|
|
documentation for the command. You can use -echo screen as a
|
|
command-line option when running LAMMPS to see the offending line.
|
|
|
|
E: Invalid t_event in prd command
|
|
|
|
Self-explanatory.
|
|
|
|
E: PRD nsteps must be multiple of t_event
|
|
|
|
Self-explanatory.
|
|
|
|
E: PRD t_corr must be multiple of t_event
|
|
|
|
Self-explanatory.
|
|
|
|
E: Could not find compute ID for PRD
|
|
|
|
Self-explanatory.
|
|
|
|
W: Resetting reneighboring criteria during PRD
|
|
|
|
A PRD simulation requires that neigh_modify settings be delay = 0,
|
|
every = 1, check = yes. Since these settings were not in place,
|
|
LAMMPS changed them and will restore them to their original values
|
|
after the PRD simulation.
|
|
|
|
E: Too many timesteps
|
|
|
|
The cumulative timesteps must fit in a 64-bit integer.
|
|
|
|
E: Cannot use PRD with a changing box
|
|
|
|
The current box dimensions are not copied between replicas
|
|
|
|
E: Cannot use PRD with a time-dependent fix defined
|
|
|
|
PRD alters the timestep in ways that will mess up these fixes.
|
|
|
|
E: Cannot use PRD with a time-dependent region defined
|
|
|
|
PRD alters the timestep in ways that will mess up these regions.
|
|
|
|
E: Too many iterations
|
|
|
|
You must use a number of iterations that fit in a 32-bit integer
|
|
for minimization.
|
|
|
|
U: Cannot use PRD with atom_modify sort enabled
|
|
|
|
This is a current restriction of PRD. You must turn off sorting,
|
|
which is enabled by default, via the atom_modify command.
|
|
|
|
*/
|