git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@9566 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp
2013-03-04 23:09:29 +00:00
parent fe7a7c25f1
commit a5c6bfb1c5
94 changed files with 482 additions and 825 deletions

View File

@ -16,7 +16,6 @@
#include "math_extra.h" #include "math_extra.h"
#include "atom_vec_body.h" #include "atom_vec_body.h"
#include "atom.h" #include "atom.h"
#include "memory.h"
#include "error.h" #include "error.h"
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
@ -37,6 +36,19 @@ BodyNparticle::BodyNparticle(LAMMPS *lmp, int narg, char **arg) :
size_forward = 0; size_forward = 0;
size_border = 1 + 3*nmax; size_border = 1 + 3*nmax;
// NOTE: need to set appropriate nnbin param for dcp
icp = new MyPool<int>(1,1);
dcp = new MyPool<double>(3*nmin,3*nmax);
}
/* ---------------------------------------------------------------------- */
BodyNparticle::~BodyNparticle()
{
delete icp;
delete dcp;
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
@ -105,10 +117,10 @@ void BodyNparticle::data_body(int ibonus, int ninteger, int ndouble,
"Bodies section of data file"); "Bodies section of data file");
bonus->ninteger = 1; bonus->ninteger = 1;
memory->create(bonus->ivalue,bonus->ninteger,"body:ivalue"); bonus->ivalue = icp->get(bonus->iindex);
bonus->ivalue[0] = nsub; bonus->ivalue[0] = nsub;
bonus->ndouble = 3*nsub; bonus->ndouble = 3*nsub;
memory->create(bonus->dvalue,3*nsub,"body:dvalue"); bonus->dvalue = dcp->get(bonus->ndouble,bonus->dindex);
// diagonalize inertia tensor // diagonalize inertia tensor

View File

@ -28,7 +28,7 @@ namespace LAMMPS_NS {
class BodyNparticle : public Body { class BodyNparticle : public Body {
public: public:
BodyNparticle(class LAMMPS *, int, char **); BodyNparticle(class LAMMPS *, int, char **);
~BodyNparticle() {} ~BodyNparticle();
int nsub(class AtomVecBody::Bonus *); int nsub(class AtomVecBody::Bonus *);
double *coords(class AtomVecBody::Bonus *); double *coords(class AtomVecBody::Bonus *);

View File

@ -44,10 +44,10 @@ class FixNVEBody : public FixNVE {
E: Fix nve/body requires atom style body E: Fix nve/body requires atom style body
UNDOCUMENTED Self-explanatory.
E: Fix nve/body requires bodies E: Fix nve/body requires bodies
UNDOCUMENTED This fix can only be used for particles that are bodies.
*/ */

View File

@ -63,18 +63,20 @@ class PairBody : public Pair {
E: Illegal ... command E: Illegal ... command
UNDOCUMENTED 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: Incorrect args for pair coefficients E: Incorrect args for pair coefficients
UNDOCUMENTED Self-explanatory. Check the input script or data file.
E: Pair body requires atom style body E: Pair body requires atom style body
UNDOCUMENTED Self-explanatory.
E: Pair body requires body style nparticle E: Pair body requires body style nparticle
UNDOCUMENTED This pair style is specific to the nparticle body style.
*/ */

View File

@ -74,11 +74,6 @@ The atom style defined does not have this attribute.
E: Pair style requires a KSpace style E: Pair style requires a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -97,6 +97,6 @@ All particles must be the same finite size.
E: Cannot use multiple fix wall commands with pair brownian E: Cannot use multiple fix wall commands with pair brownian
UNDOCUMENTED Self-explanatory.
*/ */

View File

@ -54,6 +54,6 @@ One of the particles has radius 0.0.
E: Cannot use multiple fix wall commands with pair brownian E: Cannot use multiple fix wall commands with pair brownian
UNDOCUMENTED Self-explanatory.
*/ */

View File

@ -98,6 +98,6 @@ Must use remap v option with fix deform with this pair style.
E: Cannot use multiple fix wall commands with pair lubricate E: Cannot use multiple fix wall commands with pair lubricate
UNDOCUMENTED Self-explanatory.
*/ */

View File

@ -109,6 +109,6 @@ All particles must be the same finite size.
E: Cannot use multiple fix wall commands with pair lubricateU E: Cannot use multiple fix wall commands with pair lubricateU
UNDOCUMENTED Self-explanatory.
*/ */

View File

@ -78,6 +78,6 @@ One of the particles has radius 0.0.
E: Cannot use multiple fix wall commands with pair lubricateU E: Cannot use multiple fix wall commands with pair lubricateU
UNDOCUMENTED Self-explanatory.
*/ */

View File

@ -61,7 +61,7 @@ Must use remap v option with fix deform with this pair style.
E: Cannot use multiple fix wall commands with pair lubricate/poly E: Cannot use multiple fix wall commands with pair lubricate/poly
UNDOCUMENTED Self-explanatory.
E: Using pair lubricate/poly with inconsistent fix deform remap option E: Using pair lubricate/poly with inconsistent fix deform remap option

View File

@ -129,7 +129,7 @@ void PairBornCoulLongGPU::compute(int eflag, int vflag)
atom->nlocal, domain->boxlo, domain->prd); atom->nlocal, domain->boxlo, domain->prd);
} }
if (!success) if (!success)
error->one(FLERR,"Out of memory on GPGPU"); error->one(FLERR,"Insufficient memory on accelerator");
if (host_start<inum) { if (host_start<inum) {
cpu_time = MPI_Wtime(); cpu_time = MPI_Wtime();

View File

@ -47,9 +47,10 @@ class PairBornCoulLongGPU : public PairBornCoulLong {
/* ERROR/WARNING messages: /* ERROR/WARNING messages:
E: Out of memory on GPGPU E: Insufficient memory on accelerator
UNDOCUMENTED There is insufficient memory on one of the devices specified for the gpu
package
E: Pair style born/coul/long/gpu requires atom attribute q E: Pair style born/coul/long/gpu requires atom attribute q
@ -57,10 +58,11 @@ The atom style defined does not have this attribute.
E: Cannot use newton pair with born/coul/long/gpu pair style E: Cannot use newton pair with born/coul/long/gpu pair style
UNDOCUMENTED Self-explanatory.
E: Pair style is incompatible with KSpace style E: Pair style is incompatible with KSpace style
UNDOCUMENTED If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -120,7 +120,7 @@ void PairBornCoulWolfGPU::compute(int eflag, int vflag)
atom->nlocal, domain->boxlo, domain->prd); atom->nlocal, domain->boxlo, domain->prd);
} }
if (!success) if (!success)
error->one(FLERR,"Out of memory on GPGPU"); error->one(FLERR,"Insufficient memory on accelerator");
if (host_start<inum) { if (host_start<inum) {
cpu_time = MPI_Wtime(); cpu_time = MPI_Wtime();

View File

@ -47,16 +47,13 @@ class PairBornCoulWolfGPU : public PairBornCoulWolf {
/* ERROR/WARNING messages: /* ERROR/WARNING messages:
E: Out of memory on GPGPU E: Insufficient memory on accelerator
UNDOCUMENTED There is insufficient memory on one of the devices specified for the gpu
package
E: Cannot use newton pair with born/coul/wolf/gpu pair style E: Cannot use newton pair with born/coul/wolf/gpu pair style
UNDOCUMENTED Self-explanatory.
U: Pair style born/coul/wolf/gpu requires atom attribute q
The atom style defined does not have this attribute.
*/ */

View File

@ -110,7 +110,7 @@ void PairBornGPU::compute(int eflag, int vflag)
vflag_atom, host_start, cpu_time, success); vflag_atom, host_start, cpu_time, success);
} }
if (!success) if (!success)
error->one(FLERR,"Out of memory on GPGPU"); error->one(FLERR,"Insufficient memory on accelerator");
if (host_start<inum) { if (host_start<inum) {
cpu_time = MPI_Wtime(); cpu_time = MPI_Wtime();

View File

@ -47,12 +47,13 @@ class PairBornGPU : public PairBorn {
/* ERROR/WARNING messages: /* ERROR/WARNING messages:
E: Out of memory on GPGPU E: Insufficient memory on accelerator
UNDOCUMENTED There is insufficient memory on one of the devices specified for the gpu
package
E: Cannot use newton pair with born/gpu pair style E: Cannot use newton pair with born/gpu pair style
UNDOCUMENTED Self-explantory.
*/ */

View File

@ -58,10 +58,10 @@ Self-explanatory.
E: Overlapping small/large in pair colloid E: Overlapping small/large in pair colloid
UNDOCUMENTED This potential is infinite when there is an overlap.
E: Overlapping large/large in pair colloid E: Overlapping large/large in pair colloid
UNDOCUMENTED This potential is infinite when there is an overlap.
*/ */

View File

@ -54,14 +54,10 @@ package
E: Pair dipole/cut/gpu requires atom attributes q, mu, torque E: Pair dipole/cut/gpu requires atom attributes q, mu, torque
UNDOCUMENTED The atom style defined does not have this attribute.
E: Cannot use newton pair with dipole/cut/gpu pair style E: Cannot use newton pair with dipole/cut/gpu pair style
Self-explanatory. Self-explanatory.
U: Pair style dipole/cut/gpu requires atom attribute q
The atom style defined does not have this attribute.
*/ */

View File

@ -123,7 +123,7 @@ void PairGaussGPU::compute(int eflag, int vflag)
void PairGaussGPU::init_style() void PairGaussGPU::init_style()
{ {
if (force->newton_pair) if (force->newton_pair)
error->all(FLERR,"Cannot use newton pair with lj/cut/gpu pair style"); error->all(FLERR,"Cannot use newton pair with gauss/gpu pair style");
// Repeat cutsq calculation because done after call to init_style // Repeat cutsq calculation because done after call to init_style
double maxcut = -1.0; double maxcut = -1.0;

View File

@ -52,11 +52,7 @@ E: Insufficient memory on accelerator
There is insufficient memory on one of the devices specified for the gpu There is insufficient memory on one of the devices specified for the gpu
package package
E: Cannot use newton pair with lj/cut/gpu pair style E: Cannot use newton pair with gauss/gpu pair style
UNDOCUMENTED
U: Cannot use newton pair with gauss/gpu pair style
Self-explanatory. Self-explanatory.

View File

@ -54,7 +54,7 @@ package
E: Pair yukawa/colloid/gpu requires atom style sphere E: Pair yukawa/colloid/gpu requires atom style sphere
UNDOCUMENTED Self-explanatory.
E: Cannot use newton pair with yukawa/colloid/gpu pair style E: Cannot use newton pair with yukawa/colloid/gpu pair style

View File

@ -137,7 +137,7 @@ void PPPMGPU::init()
// unsupported option // unsupported option
if (differentiation_flag == 1) if (differentiation_flag == 1)
error->all(FLERR,"Cannot (yet) do analytic differentiation with pppm/gpu"); error->all(FLERR,"Cannot do analytic differentiation with pppm/gpu");
if (strcmp(update->integrate_style,"verlet/split") == 0) { if (strcmp(update->integrate_style,"verlet/split") == 0) {
kspace_split=true; kspace_split=true;

View File

@ -73,7 +73,7 @@ Self-explanatory.
E: Cannot (yet) do analytic differentiation with pppm/gpu E: Cannot (yet) do analytic differentiation with pppm/gpu
UNDOCUMENTED This is a current restriction of this command.
E: Cannot use order greater than 8 with pppm/gpu. E: Cannot use order greater than 8 with pppm/gpu.
@ -100,8 +100,4 @@ outside a processor's sub-domain or even the entire simulation box.
This indicates bad physics, e.g. due to highly overlapping atoms, too This indicates bad physics, e.g. due to highly overlapping atoms, too
large a timestep, etc. large a timestep, etc.
U: Cannot (yet) do analytic differentiation with pppm/gpu.
Self-explanatory.
*/ */

View File

@ -1001,7 +1001,7 @@ void PairKIM::write_descriptor(char** test_descriptor_string)
{ {
// allocate memory // allocate memory
if (*test_descriptor_string != 0) if (*test_descriptor_string != 0)
error->all(FLERR, "test_descriptor_string already allocated."); error->all(FLERR, "Test_descriptor_string already allocated");
// assuming 75 lines at 100 characters each (should be plenty) // assuming 75 lines at 100 characters each (should be plenty)
*test_descriptor_string = new char[100*75]; *test_descriptor_string = new char[100*75];
// initialize // initialize

View File

@ -31,10 +31,10 @@ PairStyle(kim,PairKIM)
#define LMP_PAIR_KIM_H #define LMP_PAIR_KIM_H
// includes from KIM & LAMMPS // includes from KIM & LAMMPS
class KIM_API_model; class KIM_API_model;
#include "pair.h" #include "pair.h"
namespace LAMMPS_NS { namespace LAMMPS_NS {
class PairKIM : public Pair { class PairKIM : public Pair {
@ -166,7 +166,7 @@ E: Invalid args for non-hybrid pair coefficients
E: PairKIM only works with 3D problems. E: PairKIM only works with 3D problems.
UNDOCUMENTED This is a current restriction of this pair style.
E: All pair coeffs are not set E: All pair coeffs are not set
@ -203,19 +203,7 @@ W: KIM Model does not provide `particleVirial'; virial per atom will be zero
Self-explanatory. Self-explanatory.
E: test_descriptor_string already allocated. E: Test_descriptor_string already allocated
UNDOCUMENTED
U: PairKIM only works with 3D problems
The KIM API does not explicitly support anything other than 3D problems
U: Internal KIM error
Self-explanatory. Check the output and kim.log file for more details.
U: test_descriptor_string already allocated
This should not happen. It likely indicates a bug in the pair_kim implementation. This should not happen. It likely indicates a bug in the pair_kim implementation.

View File

@ -158,7 +158,7 @@ void EwaldDisp::init()
error->warning(FLERR,str); error->warning(FLERR,str);
} }
//set accuracy (force units) from accuracy_relative or accuracy_absolute // set accuracy (force units) from accuracy_relative or accuracy_absolute
if (accuracy_absolute >= 0.0) accuracy = accuracy_absolute; if (accuracy_absolute >= 0.0) accuracy = accuracy_absolute;
else accuracy = accuracy_relative * two_charge_force; else accuracy = accuracy_relative * two_charge_force;
@ -200,7 +200,6 @@ void EwaldDisp::init()
peratom_allocate_flag = 0; peratom_allocate_flag = 0;
} }
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
adjust EwaldDisp coeffs, called initially and whenever volume has changed adjust EwaldDisp coeffs, called initially and whenever volume has changed
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
@ -212,9 +211,9 @@ void EwaldDisp::setup()
shape_scalar_mult(unit, 2.0*MY_PI); shape_scalar_mult(unit, 2.0*MY_PI);
unit[2] /= slab_volfactor; unit[2] /= slab_volfactor;
//int nbox_old = nbox, nkvec_old = nkvec; // int nbox_old = nbox, nkvec_old = nkvec;
if (accuracy>=1) { if (accuracy >= 1) {
nbox = 0; nbox = 0;
error->all(FLERR,"KSpace accuracy too low"); error->all(FLERR,"KSpace accuracy too low");
} }
@ -457,7 +456,7 @@ void EwaldDisp::init_coeffs()
if (!(epsilon&&sigma)) if (!(epsilon&&sigma))
error->all( error->all(
FLERR,"epsilon or sigma reference not set by pair style in ewald/n"); FLERR,"Epsilon or sigma reference not set by pair style in ewald/n");
for (int i=0; i<=n; ++i) { for (int i=0; i<=n; ++i) {
eps_i = sqrt(epsilon[i][i]); eps_i = sqrt(epsilon[i][i]);
sigma_i = sigma[i][i]; sigma_i = sigma[i][i];

View File

@ -108,27 +108,32 @@ This is a current restriction of this command.
E: Cannot use nonperiodic boundaries with EwaldDisp E: Cannot use nonperiodic boundaries with EwaldDisp
UNDOCUMENTED For kspace style ewald/disp, all 3 dimensions must have periodic
boundaries unless you use the kspace_modify command to define a 2d
slab with a non-periodic z dimension.
E: Incorrect boundaries with slab EwaldDisp E: Incorrect boundaries with slab EwaldDisp
UNDOCUMENTED Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with Ewald.
E: KSpace style is incompatible with Pair style E: KSpace style is incompatible with Pair style
UNDOCUMENTED Setting a kspace style requires that a pair style with a long-range
Coulombic and Dispersion component be selected.
E: Unsupported mixing rule in kspace_style ewald/disp E: Unsupported mixing rule in kspace_style ewald/disp
UNDOCUMENTED Only geometric mixing is supported.
E: Unsupported order in kspace_style ewald/disp E: Unsupported order in kspace_style ewald/disp
UNDOCUMENTED Only 1/r^6 dispersion terms are supported.
E: Cannot use Ewald/disp solver on system with no charge or LJ particles E: Cannot use Ewald/disp solver on system with no charge or LJ particles
UNDOCUMENTED No atoms in system have a non-zero charge or are LJ particles. Change
charges or change options of the kspace solver/pair style.
W: System is not charge neutral, net charge = %g W: System is not charge neutral, net charge = %g
@ -137,18 +142,19 @@ is not valid for Ewald or PPPM.
E: KSpace accuracy too large to estimate G vector E: KSpace accuracy too large to estimate G vector
UNDOCUMENTED Reduce the accuracy request or specify gwald explicitly
via the kspace_modify command.
W: Ewald/disp Newton solver failed, using old method to estimate g_ewald W: Ewald/disp Newton solver failed, using old method to estimate g_ewald
UNDOCUMENTED Self-explanatory.
E: KSpace accuracy too low E: KSpace accuracy too low
UNDOCUMENTED Requested accuracy must be less than 1.0.
E: epsilon or sigma reference not set by pair style in ewald/n E: Epsilon or sigma reference not set by pair style in ewald/n
UNDOCUMENTED The pair style is not providing the needed epsilon or sigma values.
*/ */

View File

@ -897,8 +897,7 @@ void MSM::set_grid_global()
levels = MAX(xlevels,ylevels); levels = MAX(xlevels,ylevels);
levels = MAX(levels,zlevels); levels = MAX(levels,zlevels);
if (levels > MAX_LEVELS) if (levels > MAX_LEVELS) error->all(FLERR,"Too many MSM grid levels");
error->all(FLERR,"Too many MSM grid levels");
// Need at least 2 MSM levels for periodic systems // Need at least 2 MSM levels for periodic systems
@ -906,7 +905,8 @@ void MSM::set_grid_global()
levels = xlevels = ylevels = zlevels = 2; levels = xlevels = ylevels = zlevels = 2;
nx_max = ny_max = nz_max = 2; nx_max = ny_max = nz_max = 2;
if (gridflag) if (gridflag)
error->warning(FLERR,"MSM mesh too small, increasing to 2 points in each direction)"); error->warning(FLERR,
"MSM mesh too small, increasing to 2 points in each direction");
} }
if (adjust_cutoff_flag) { if (adjust_cutoff_flag) {

View File

@ -193,11 +193,11 @@ adjusted to meet this requirement.
E: Too many MSM grid levels E: Too many MSM grid levels
UNDOCUMENTED The max number of MSM grid levels is hardwired to 10.
W: MSM mesh too small, increasing to 2 points in each direction) W: MSM mesh too small, increasing to 2 points in each direction)
UNDOCUMENTED Self-explanatory.
W: Adjusting Coulombic cutoff for MSM, new cutoff = %g W: Adjusting Coulombic cutoff for MSM, new cutoff = %g
@ -226,9 +226,4 @@ outside a processor's sub-domain or even the entire simulation box.
This indicates bad physics, e.g. due to highly overlapping atoms, too This indicates bad physics, e.g. due to highly overlapping atoms, too
large a timestep, etc. large a timestep, etc.
U: MSM mesh too small, increasing to 2 points in each direction
The global MSM grid is too small, so the number of grid points has been
increased
*/ */

View File

@ -72,70 +72,4 @@ outside a processor's sub-domain or even the entire simulation box.
This indicates bad physics, e.g. due to highly overlapping atoms, too This indicates bad physics, e.g. due to highly overlapping atoms, too
large a timestep, etc. large a timestep, etc.
U: Cannot (yet) use MSM with triclinic box
This feature is not yet supported.
U: Cannot (yet) use MSM with 2d simulation
This feature is not yet supported.
U: Kspace style requires atom attribute q
The atom style defined does not have these attributes.
U: Cannot use slab correction with MSM
Slab correction can only be used with Ewald and PPPM, not MSM.
U: MSM order must be 4, 6, 8, or 10
This is a limitation of the MSM implementation in LAMMPS:
the MSM order can only be 4, 6, 8, or 10.
U: Cannot (yet) use single precision with MSM (remove -DFFT_SINGLE from Makefile and recompile)
Single precision cannot be used with MSM.
U: KSpace style is incompatible with Pair style
Setting a kspace style requires that a pair style with a long-range
Coulombic component be selected that is compatible with MSM. Note
that TIP4P is not (yet) supported by MSM.
U: Cannot use kspace solver on system with no charge
No atoms in system have a non-zero charge.
U: System is not charge neutral, net charge = %g
The total charge on all atoms on the system is not 0.0, which
is not valid for MSM.
U: MSM grid is too large
The global MSM grid is larger than OFFSET in one or more dimensions.
OFFSET is currently set to 16384. You likely need to decrease the
requested accuracy.
U: MSM mesh too small, increasing to 2 points in each direction
The global MSM grid is too small, so the number of grid points has been
increased
U: KSpace accuracy must be > 0
The kspace accuracy designated in the input must be greater than zero.
U: Number of MSM mesh points increased to be a multiple of 2
MSM requires that the number of grid points in each direction be a multiple
of two and the number of grid points in one or more directions have been
adjusted to meet this requirement.
U: Adjusting Coulombic cutoff for MSM, new cutoff = %g
The adjust/cutoff command is turned on and the Coulombic cutoff has been
adjusted to match the user-specified accuracy.
*/ */

View File

@ -80,11 +80,6 @@ An atom style that defines this attribute must be used.
E: Pair style requires a KSpace style E: Pair style requires a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -81,11 +81,6 @@ The atom style defined does not have these attributes.
E: Pair style requres a KSpace style E: Pair style requres a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -62,10 +62,10 @@ void PairBuckLongCoulLong::options(char **arg, int order)
const char *option[] = {"long", "cut", "off", NULL}; const char *option[] = {"long", "cut", "off", NULL};
int i; int i;
if (!*arg) error->all(FLERR,"Illegal pair_style buck/coul command"); if (!*arg) error->all(FLERR,"Illegal pair_style buck/long/coul/long command");
for (i=0; option[i]&&strcmp(arg[0], option[i]); ++i); for (i=0; option[i]&&strcmp(arg[0], option[i]); ++i);
switch (i) { switch (i) {
default: error->all(FLERR,"Illegal pair_style buck/coul command"); default: error->all(FLERR,"Illegal pair_style buck/long/coul/long command");
case 0: ewald_order |= 1<<order; break; case 0: ewald_order |= 1<<order; break;
case 2: ewald_off |= 1<<order; case 2: ewald_off |= 1<<order;
case 1: break; case 1: break;
@ -87,15 +87,15 @@ void PairBuckLongCoulLong::settings(int narg, char **arg)
if (!comm->me && ewald_order & (1<<6)) if (!comm->me && ewald_order & (1<<6))
error->warning(FLERR,"Geometric mixing assumed for 1/r^6 coefficients"); error->warning(FLERR,"Geometric mixing assumed for 1/r^6 coefficients");
if (!comm->me && ewald_order == ((1<<1) | (1<<6))) if (!comm->me && ewald_order == ((1<<1) | (1<<6)))
error->warning(FLERR,"Using largest cut-off for buck/coul long long"); error->warning(FLERR,"Using largest cutoff for buck/long/coul/long");
if (!*(++arg)) error->all(FLERR,"Cut-offs missing in pair_style buck/coul"); if (!*(++arg)) error->all(FLERR,"Cutoffs missing in pair_style buck/long/coul/long");
if (ewald_off & (1<<6)) if (ewald_off & (1<<6))
error->all(FLERR,"LJ6 off not supported in pair_style buck/coul"); error->all(FLERR,"LJ6 off not supported in pair_style buck/long/coul/long");
if (!((ewald_order^ewald_off) & (1<<1))) if (!((ewald_order^ewald_off) & (1<<1)))
error->all(FLERR,"Coulombic cut not supported in pair_style buck/coul"); error->all(FLERR,"Coulomb cut not supported in pair_style buck/long/coul/coul");
cut_buck_global = force->numeric(*(arg++)); cut_buck_global = force->numeric(*(arg++));
if (*arg && ((ewald_order & 0x42) == 0x42)) if (*arg && ((ewald_order & 0x42) == 0x42))
error->all(FLERR,"Only one cut-off allowed when requesting all long"); error->all(FLERR,"Only one cutoff allowed when requesting all long");
if (narg == 4) cut_coul = force->numeric(*arg); if (narg == 4) cut_coul = force->numeric(*arg);
else cut_coul = cut_buck_global; else cut_coul = cut_buck_global;
@ -229,8 +229,7 @@ void PairBuckLongCoulLong::init_style()
// require an atom style with charge defined // require an atom style with charge defined
if (!atom->q_flag && (ewald_order&(1<<1))) if (!atom->q_flag && (ewald_order&(1<<1)))
error->all(FLERR, error->all(FLERR,"Pair style buck/long/coul/long requires atom attribute q");
"Invoking coulombic in pair style lj/coul requires atom attribute q");
// request regular or rRESPA neighbor lists // request regular or rRESPA neighbor lists

View File

@ -73,50 +73,54 @@ class PairBuckLongCoulLong : public Pair {
E: Illegal ... command E: Illegal ... command
UNDOCUMENTED 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.
W: Geometric mixing assumed for 1/r^6 coefficients W: Geometric mixing assumed for 1/r^6 coefficients
UNDOCUMENTED Self-explanatory.
W: Using largest cut-off for buck/coul long long W: Using largest cutoff for buck/long/coul/long
UNDOCUMENTED Self-exlanatory.
E: Cut-offs missing in pair_style buck/coul E: Cutoffs missing in pair_style buck/long/coul/long
UNDOCUMENTED Self-exlanatory.
E: LJ6 off not supported in pair_style buck/coul E: LJ6 off not supported in pair_style buck/long/coul/long
UNDOCUMENTED Self-exlanatory.
E: Coulombic cut not supported in pair_style buck/coul E: Coulomb cut not supported in pair_style buck/long/coul/long
UNDOCUMENTED Must use long-range Coulombic interactions.
E: Only one cut-off allowed when requesting all long E: Only one cutoff allowed when requesting all long
UNDOCUMENTED Self-explanatory.
E: Incorrect args for pair coefficients E: Incorrect args for pair coefficients
UNDOCUMENTED Self-explanatory. Check the input script or data file.
E: Invoking coulombic in pair style lj/coul requires atom attribute q E: Pair style buck/long/coul/long requires atom attribute q
UNDOCUMENTED The atom style defined does not have this attribute.
E: Pair style requires a KSpace style E: Pair style requires a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
E: All pair coeffs are not set E: All pair coeffs are not set
UNDOCUMENTED All pair coefficients must be set in the data file or by the
pair_coeff command before running a simulation.
E: Pair cutoff < Respa interior cutoff E: Pair cutoff < Respa interior cutoff
UNDOCUMENTED One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs.
*/ */

View File

@ -72,16 +72,6 @@ The atom style defined does not have this attribute.
E: Pair style requires a KSpace style E: Pair style requires a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
U: Pair cutoff < Respa interior cutoff
One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -99,11 +99,6 @@ rRESPA cutoffs.
E: Pair style requires a KSpace style E: Pair style requires a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -82,16 +82,11 @@ The atom style defined does not have this attribute.
E: Pair style requires a KSpace style E: Pair style requires a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
E: Pair cutoff < Respa interior cutoff E: Pair cutoff < Respa interior cutoff
One or more pairwise cutoffs are too short to use with the specified One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs. rRESPA cutoffs.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -93,7 +93,7 @@ TIP4P potentials assume bond lengths in water are constrained
by a fix shake command. by a fix shake command.
E: Must use an angle style with TIP4P potential E: Must use an angle style with TIP4P potential
d
TIP4P potentials assume angles in water are constrained by a fix shake TIP4P potentials assume angles in water are constrained by a fix shake
command. command.
@ -102,9 +102,4 @@ E: Water H epsilon must be 0.0 for pair style lj/cut/coul/long/tip4p
This is because LAMMPS does not compute the Lennard-Jones interactions This is because LAMMPS does not compute the Lennard-Jones interactions
with these particles for efficiency reasons. with these particles for efficiency reasons.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -82,16 +82,16 @@ void PairLJLongCoulLong::settings(int narg, char **arg)
options(arg, 6); options(arg, 6);
options(++arg, 1); options(++arg, 1);
if (!comm->me && ewald_order & (1<<6)) if (!comm->me && ewald_order & (1<<6))
error->warning(FLERR,"Mixing forced for lj coefficients"); error->warning(FLERR,"Mixing forced for LJ coefficients");
if (!comm->me && ewald_order == ((1<<1) | (1<<6))) if (!comm->me && ewald_order == ((1<<1) | (1<<6)))
error->warning(FLERR,"Using largest cut-off for lj/coul long long"); error->warning(FLERR,"Using largest cutoff for pair_style lj/long/coullong");
if (!*(++arg)) if (!*(++arg))
error->all(FLERR,"Cut-offs missing in pair_style lj/coul"); error->all(FLERR,"Cutoffs missing in pair_style lj/long/coul/long");
if (!((ewald_order^ewald_off) & (1<<1))) if (!((ewald_order^ewald_off) & (1<<1)))
error->all(FLERR,"Coulombic cut not supported in pair_style lj/coul"); error->all(FLERR,"Coulomb cut not supported in pair_style lj/long/coul/long");
cut_lj_global = force->numeric(*(arg++)); cut_lj_global = force->numeric(*(arg++));
if (*arg && ((ewald_order & 0x42) == 0x42)) if (*arg && ((ewald_order & 0x42) == 0x42))
error->all(FLERR,"Only one cut-off allowed when requesting all long"); error->all(FLERR,"Only one cutoff allowed when requesting all long");
if (narg == 4) cut_coul = force->numeric(*arg); if (narg == 4) cut_coul = force->numeric(*arg);
else cut_coul = cut_lj_global; else cut_coul = cut_lj_global;
@ -226,8 +226,7 @@ void PairLJLongCoulLong::init_style()
// require an atom style with charge defined // require an atom style with charge defined
if (!atom->q_flag && (ewald_order&(1<<1))) if (!atom->q_flag && (ewald_order&(1<<1)))
error->all(FLERR, error->all(FLERR,"Pair style lj/long/coul/long requires atom attribute q");
"Invoking coulombic in pair style lj/coul requires atom attribute q");
// request regular or rRESPA neighbor lists // request regular or rRESPA neighbor lists

View File

@ -73,42 +73,45 @@ class PairLJLongCoulLong : public Pair {
E: Illegal ... command E: Illegal ... command
UNDOCUMENTED 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.
W: Mixing forced for lj coefficients W: Mixing forced for LJ coefficients
UNDOCUMENTED Self-explanatory.
W: Using largest cut-off for lj/coul long long W: Using largest cutoff for pair_style lj/long/coul/long
UNDOCUMENTED Self-explanatory.
E: Cut-offs missing in pair_style lj/coul E: Cutoffs missing in pair_style lj/long/coul/long
UNDOCUMENTED Self-explanatory.
E: Coulombic cut not supported in pair_style lj/coul E: Coulomb cut not supported in pair_style lj/long/coul/long
UNDOCUMENTED Must use long-range Coulombic interactions.
E: Only one cut-off allowed when requesting all long E: Only one cutoff allowed when requesting all long
UNDOCUMENTED Self-explanatory.
E: Incorrect args for pair coefficients E: Incorrect args for pair coefficients
UNDOCUMENTED Self-explanatory. Check the input script or data file.
E: Invoking coulombic in pair style lj/coul requires atom attribute q E: Pair style lj/long/coul/long requires atom attribute q
UNDOCUMENTED The atom style defined does not have this attribute.
E: Pair style requires a KSpace style E: Pair style requires a KSpace style
UNDOCUMENTED This pair style is designed for use with a KSpace style.
E: Pair cutoff < Respa interior cutoff E: Pair cutoff < Respa interior cutoff
UNDOCUMENTED One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs.
*/ */

View File

@ -452,9 +452,9 @@ void PairLJLongTIP4PLong::settings(int narg, char **arg)
if (!comm->me && ewald_order&(1<<6)) if (!comm->me && ewald_order&(1<<6))
error->warning(FLERR,"Mixing forced for lj coefficients"); error->warning(FLERR,"Mixing forced for lj coefficients");
if (!comm->me && ewald_order==((1<<1)|(1<<6))) if (!comm->me && ewald_order==((1<<1)|(1<<6)))
error->warning(FLERR,"Using largest cut-off for lj/coul long long"); error->warning(FLERR,"Using largest cutoff for pair_style lj/long/tip4p/long");
if (!((ewald_order^ewald_off)&(1<<1))) if (!((ewald_order^ewald_off)&(1<<1)))
error->all(FLERR,"Coulombic cut not supported in pair_style lj/coul"); error->all(FLERR,"Coulombic cut not supported in pair_style lj/long/tip4p/long");
typeO = force->inumeric(arg[1]); typeO = force->inumeric(arg[1]);
typeH = force->inumeric(arg[2]); typeH = force->inumeric(arg[2]);
typeB = force->inumeric(arg[3]); typeB = force->inumeric(arg[3]);
@ -484,11 +484,11 @@ void PairLJLongTIP4PLong::settings(int narg, char **arg)
void PairLJLongTIP4PLong::init_style() void PairLJLongTIP4PLong::init_style()
{ {
if (atom->tag_enable == 0) if (atom->tag_enable == 0)
error->all(FLERR,"Pair style lj/coul/tip4p requires atom IDs"); error->all(FLERR,"Pair style lj/long/tip4p/long requires atom IDs");
if (!force->newton_pair) if (!force->newton_pair)
error->all(FLERR,"Pair style lj/coul/tip4p requires newton pair on"); error->all(FLERR,"Pair style lj/long/tip4p/long requires newton pair on");
if (!atom->q_flag) if (!atom->q_flag)
error->all(FLERR,"Pair style lj/coul/tip4p requires atom attribute q"); error->all(FLERR,"Pair style lj/long/tip4p/long requires atom attribute q");
if (force->bond == NULL) if (force->bond == NULL)
error->all(FLERR,"Must use a bond style with TIP4P potential"); error->all(FLERR,"Must use a bond style with TIP4P potential");
if (force->angle == NULL) if (force->angle == NULL)
@ -517,7 +517,7 @@ double PairLJLongTIP4PLong::init_one(int i, int j)
if ((i == typeH && epsilon[i][i] != 0.0)) if ((i == typeH && epsilon[i][i] != 0.0))
error->all(FLERR,"Water H epsilon must be 0.0 for " error->all(FLERR,"Water H epsilon must be 0.0 for "
"pair style lj/coul/tip4p"); "pair style lj/long/tip4p/long");
if (i == typeH || j == typeH) if (i == typeH || j == typeH)
cut_ljsq[j][i] = cut_ljsq[i][j] = 0.0; cut_ljsq[j][i] = cut_ljsq[i][j] = 0.0;

View File

@ -76,27 +76,29 @@ command-line option when running LAMMPS to see the offending line.
W: Mixing forced for lj coefficients W: Mixing forced for lj coefficients
UNDOCUMENTED Self-explanatory.
W: Using largest cut-off for lj/coul long long W: Using largest cutoff for pair_style lj/long/tip4p/long
UNDOCUMENTED Self-explanatory.
E: Coulombic cut not supported in pair_style lj/coul E: Coulomb cut not supported in pair_style lj/long/tip4p/long
UNDOCUMENTED Must use long-range Coulombic interactions.
E: Pair style lj/coul/tip4p requires atom IDs E: Pair style lj/long/tip4p/long requires atom IDs
UNDOCUMENTED There are no atom IDs defined in the system and the TIP4P potential
requires them to find O,H atoms with a water molecule.
E: Pair style lj/coul/tip4p requires newton pair on E: Pair style lj/long/tip4p/long requires newton pair on
UNDOCUMENTED This is because the computation of constraint forces within a water
molecule adds forces to atoms owned by other processors.
E: Pair style lj/coul/tip4p requires atom attribute q E: Pair style lj/long/tip4p/long requires atom attribute q
UNDOCUMENTED The atom style defined does not have these attributes.
E: Must use a bond style with TIP4P potential E: Must use a bond style with TIP4P potential
@ -108,27 +110,9 @@ E: Must use an angle style with TIP4P potential
TIP4P potentials assume angles in water are constrained by a fix shake TIP4P potentials assume angles in water are constrained by a fix shake
command. command.
E: Water H epsilon must be 0.0 for pair style lj/coul/tip4p E: Water H epsilon must be 0.0 for pair style lj/long/tip4p/long
UNDOCUMENTED This is because LAMMPS does not compute the Lennard-Jones interactions
with these particles for efficiency reasons.
U: Pair style lj/cut/coul/long/tip4p requires atom IDs
There are no atom IDs defined in the system and the TIP4P potential
requires them to find O,H atoms with a water molecule.
U: Pair style lj/cut/coul/long/tip4p requires newton pair on
This is because the computation of constraint forces within a water
molecule adds forces to atoms owned by other processors.
U: Pair style lj/cut/coul/long/tip4p requires atom attribute q
The atom style defined does not have these attributes.
U: Pair style is incompatible with KSpace style
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
*/ */

View File

@ -909,7 +909,7 @@ void PPPM::set_grid_global()
// too many loops have been performed // too many loops have been performed
if (df_kspace <= accuracy) break; if (df_kspace <= accuracy) break;
if (count > 500) error->all(FLERR, "Could not compute grid size!"); if (count > 500) error->all(FLERR, "Could not compute grid size");
h *= 0.95; h *= 0.95;
h_x = h_y = h_z = h; h_x = h_y = h_z = h;
} }

View File

@ -258,23 +258,27 @@ is not valid for Ewald or PPPM.
W: Reducing PPPM order b/c stencil extends beyond nearest neighbor processor W: Reducing PPPM order b/c stencil extends beyond nearest neighbor processor
UNDOCUMENTED This may lead to a larger grid than desired. See the kspace_modify overlap
command to prevent changing of the PPPM order.
E: PPPM order < minimum allowed order E: PPPM order < minimum allowed order
UNDOCUMENTED The default minimum order is 2. This can be reset by the
kspace_modify minorder command.
E: PPPM grid stencil extends beyond nearest neighbor processor E: PPPM grid stencil extends beyond nearest neighbor processor
UNDOCUMENTED This is not allowed if the kspace_modify overlap setting is no.
E: KSpace accuracy must be > 0 E: KSpace accuracy must be > 0
The kspace accuracy designated in the input must be greater than zero. The kspace accuracy designated in the input must be greater than zero.
E: Could not compute grid size! E: Could not compute grid size
UNDOCUMENTED The code is unable to compute a grid size consistent with the desired
accuracy. This error should not occur for typical problems. Please
send an email to the developers.
E: PPPM grid is too large E: PPPM grid is too large
@ -284,7 +288,9 @@ requested accuracy.
E: Could not compute g_ewald E: Could not compute g_ewald
UNDOCUMENTED The Newton-Raphson solver failed to converge to a good value for
g_ewald. This error should not occur for typical problems. Please
send an email to the developers.
E: Out of range atoms - cannot compute PPPM E: Out of range atoms - cannot compute PPPM
@ -306,21 +312,4 @@ E: Cannot (yet) use K-space slab correction with compute group/group
This option is not yet supported. This option is not yet supported.
U: Reducing PPPM order b/c stencil extends beyond neighbor processor
LAMMPS is attempting this in order to allow the simulation
to run. It should not effect the PPPM accuracy.
U: PPPM order has been reduced to 0
LAMMPS has attempted to reduce the PPPM order to enable the simulation
to run, but can reduce the order no further. Try increasing the
accuracy of PPPM by reducing the tolerance size, thus inducing a
larger PPPM grid.
U: Cannot compute PPPM G
LAMMPS failed to compute a valid approximation for the PPPM g_ewald
factor that partitions the computation between real space and k-space.
*/ */

View File

@ -276,24 +276,28 @@ void PPPMDisp::init()
case 6: case 6:
if (ewald_mix==GEOMETRIC) { k = 1; break; } if (ewald_mix==GEOMETRIC) { k = 1; break; }
else if (ewald_mix==ARITHMETIC) { k = 2; break; } else if (ewald_mix==ARITHMETIC) { k = 2; break; }
sprintf(str, "Unsupported mixing rule in kspace_style pppm/disp for pair_style %s", force->pair_style); sprintf(str,"Unsupported mixing rule in "
"kspace_style pppm/disp for pair_style %s", force->pair_style);
error->all(FLERR,str); error->all(FLERR,str);
default: default:
sprintf(str, "Unsupported order in kspace_style pppm/disp pair_style %s", force->pair_style); sprintf(str, "Unsupported order in "
"kspace_style pppm/disp pair_style %s", force->pair_style);
error->all(FLERR,str); error->all(FLERR,str);
} }
function[k] = 1; function[k] = 1;
} }
// warn, if function[0] is not set but charge attribute is set! // warn, if function[0] is not set but charge attribute is set
if (!function[0] && atom->q_flag && me == 0) { if (!function[0] && atom->q_flag && me == 0) {
char str[128]; char str[128];
sprintf(str, "Charges are set, but coulombic solver is not used"); sprintf(str, "Charges are set, but coulombic solver is not used");
error->warning(FLERR, str); error->warning(FLERR, str);
} }
// compute qsum & qsqsum, if function[0] is set, print error if no charges are set or warn if not charge-neutral // compute qsum & qsqsum, if function[0] is set
// print error if no charges are set or warn if not charge-neutral
if (function[0]) { if (function[0]) {
if (!atom->q_flag) error->all(FLERR,"Kspace style with selected options requires atom attribute q"); if (!atom->q_flag) error->all(FLERR,"Kspace style with selected options requires atom attribute q");
@ -414,7 +418,7 @@ void PPPMDisp::init()
} }
if (order < minorder) if (order < minorder)
error->all(FLERR,"Coulomb PPPMDisp order has been reduced below minorder"); error->all(FLERR,"Coulomb PPPMDisp order < minimum allowed order");
if (cgtmp) delete cgtmp; if (cgtmp) delete cgtmp;
// adjust g_ewald // adjust g_ewald
@ -1160,7 +1164,7 @@ void PPPMDisp::init_coeffs() // local pair coeffs
//cannot use sigma, because this has not been set yet //cannot use sigma, because this has not been set yet
double **sigma = (double **) force->pair->extract("sigma",tmp); double **sigma = (double **) force->pair->extract("sigma",tmp);
if (!(epsilon&&sigma)) if (!(epsilon&&sigma))
error->all(FLERR,"epsilon or sigma reference not set by pair style in PPPMDisp"); error->all(FLERR,"Epsilon or sigma reference not set by pair style in PPPMDisp");
double eps_i, sigma_i, sigma_n, *bi = B = new double[7*n+7]; double eps_i, sigma_i, sigma_n, *bi = B = new double[7*n+7];
double c[7] = { double c[7] = {
1.0, sqrt(6.0), sqrt(15.0), sqrt(20.0), sqrt(15.0), sqrt(6.0), 1.0}; 1.0, sqrt(6.0), sqrt(15.0), sqrt(20.0), sqrt(15.0), sqrt(6.0), 1.0};
@ -2008,7 +2012,8 @@ void PPPMDisp::set_grid()
// break loop if the accuracy has been reached or too many loops have been performed // break loop if the accuracy has been reached or too many loops have been performed
if (dfkspace <= accuracy) break; if (dfkspace <= accuracy) break;
if (count > 500) error->all(FLERR, "Could not compute grid size for Coulomb interaction!"); if (count > 500)
error->all(FLERR,"Could not compute grid size for Coulomb interaction");
h *= 0.95; h *= 0.95;
h_x = h_y = h_z = h; h_x = h_y = h_z = h;
} }

View File

@ -35,7 +35,6 @@ typedef double FFT_SCALAR;
namespace LAMMPS_NS { namespace LAMMPS_NS {
#define EWALD_MAXORDER 6 #define EWALD_MAXORDER 6
#define EWALD_FUNCS 3 #define EWALD_FUNCS 3
@ -100,7 +99,6 @@ Variables needed for calculating the 1/r and 1/r^6 potential
int *com_each, *com_order; int *com_each, *com_order;
FFT_SCALAR *split_1, *split_2; FFT_SCALAR *split_1, *split_2;
//// the following variables are needed for every structure factor //// the following variables are needed for every structure factor
FFT_SCALAR ***density_brick; FFT_SCALAR ***density_brick;
FFT_SCALAR ***vdx_brick,***vdy_brick,***vdz_brick; FFT_SCALAR ***vdx_brick,***vdy_brick,***vdz_brick;
@ -183,7 +181,6 @@ Variables needed for calculating the 1/r and 1/r^6 potential
FFT_SCALAR *work1,*work2; FFT_SCALAR *work1,*work2;
FFT_SCALAR *work1_6, *work2_6; FFT_SCALAR *work1_6, *work2_6;
class FFT3d *fft1,*fft2 ; class FFT3d *fft1,*fft2 ;
class FFT3d *fft1_6, *fft2_6; class FFT3d *fft1_6, *fft2_6;
class Remap *remap; class Remap *remap;
@ -361,23 +358,27 @@ command-line option when running LAMMPS to see the offending line.
E: Cannot (yet) use PPPMDisp with triclinic box E: Cannot (yet) use PPPMDisp with triclinic box
UNDOCUMENTED This feature is not yet supported.
E: Cannot use PPPMDisp with 2d simulation E: Cannot use PPPMDisp with 2d simulation
UNDOCUMENTED The kspace style pppm/disp cannot be used in 2d simulations. You can
use 2d PPPM in a 3d simulation; see the kspace_modify command.
E: Cannot use nonperiodic boundaries with PPPMDisp E: Cannot use nonperiodic boundaries with PPPMDisp
UNDOCUMENTED For kspace style pppm/disp, all 3 dimensions must have periodic
boundaries unless you use the kspace_modify command to define a 2d
slab with a non-periodic z dimension.
E: Incorrect boundaries with slab PPPMDisp E: Incorrect boundaries with slab PPPMDisp
UNDOCUMENTED Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with PPPM.
E: PPPMDisp coulomb order cannot be greater than %d E: PPPMDisp coulomb order cannot be greater than %d
UNDOCUMENTED This is a limitation of the PPPM implementation in LAMMPS.
E: KSpace style is incompatible with Pair style E: KSpace style is incompatible with Pair style
@ -386,15 +387,16 @@ Coulombic and Dispersion component be selected.
E: Unsupported mixing rule in kspace_style pppm/disp for pair_style %s E: Unsupported mixing rule in kspace_style pppm/disp for pair_style %s
UNDOCUMENTED Only geometric mixing is supported.
E: Unsupported order in kspace_style pppm/disp pair_style %s E: Unsupported order in kspace_style pppm/disp pair_style %s
UNDOCUMENTED Only 1/r^6 dispersion terms are supported.
W: Charges are set, but coulombic solver is not used W: Charges are set, but coulombic solver is not used
UNDOCUMENTED The atom style supports charge, but this KSpace style does not include
long-range Coulombics.
E: Kspace style with selected options requires atom attribute q E: Kspace style with selected options requires atom attribute q
@ -418,59 +420,74 @@ are defined.
E: Bad TIP4P angle type for PPPMDisp/TIP4P E: Bad TIP4P angle type for PPPMDisp/TIP4P
UNDOCUMENTED Specified angle type is not valid.
E: Bad TIP4P bond type for PPPMDisp/TIP4P E: Bad TIP4P bond type for PPPMDisp/TIP4P
UNDOCUMENTED Specified bond type is not valid.
W: Reducing PPPMDisp Coulomb order b/c stencil extends beyond neighbor processor. W: Reducing PPPMDisp Coulomb order b/c stencil extends beyond neighbor processor.
UNDOCUMENTED This may lead to a larger grid than desired. See the kspace_modify overlap
command to prevent changing of the PPPM order.
E: PPPMDisp Coulomb grid is too large E: PPPMDisp Coulomb grid is too large
UNDOCUMENTED The global PPPM grid is larger than OFFSET in one or more dimensions.
OFFSET is currently set to 4096. You likely need to decrease the
requested accuracy.
E: Coulomb PPPMDisp order has been reduced below minorder E: Coulomb PPPMDisp order < minimum allowed order
UNDOCUMENTED The default minimum order is 2. This can be reset by the
kspace_modify minorder command.
W: Reducing PPPMDisp Dispersion order b/c stencil extends beyond neighbor processor W: Reducing PPPMDisp Dispersion order b/c stencil extends beyond neighbor processor
UNDOCUMENTED This may lead to a larger grid than desired. See the kspace_modify overlap
command to prevent changing of the PPPM order.
E: PPPMDisp Dispersion grid is too large E: PPPMDisp Dispersion grid is too large
UNDOCUMENTED The global dispersion grid is larger than OFFSET in one or more
dimensions. OFFSET is currently set to 4096. You likely need to
decrease the requested accuracy.
E: Dispersion PPPMDisp order has been reduced below minorder E: Dispersion PPPMDisp order has been reduced below minorder
UNDOCUMENTED This may lead to a larger grid than desired. See the kspace_modify overlap
command to prevent changing of the dipsersion order.
E: PPPM grid stencil extends beyond nearest neighbor processor E: PPPM grid stencil extends beyond nearest neighbor processor
UNDOCUMENTED This is not allowed if the kspace_modify overlap setting is no.
E: epsilon or sigma reference not set by pair style in PPPMDisp E: Epsilon or sigma reference not set by pair style in PPPMDisp
UNDOCUMENTED The pair style is not providing the needed epsilon or sigma values.
E: KSpace accuracy too large to estimate G vector E: KSpace accuracy too large to estimate G vector
UNDOCUMENTED Reduce the accuracy request or specify gwald explicitly
via the kspace_modify command.
E: Could not compute grid size for Coulomb interaction! E: Could not compute grid size for Coulomb interaction
UNDOCUMENTED The code is unable to compute a grid size consistent with the desired
accuracy. This error should not occur for typical problems. Please
send an email to the developers.
E: Could not compute g_ewald E: Could not compute g_ewald
UNDOCUMENTED The Newton-Raphson solver failed to converge to a good value for
g_ewald. This error should not occur for typical problems. Please
send an email to the developers.
E: Could not adjust g_ewald_6 E: Could not adjust g_ewald_6
UNDOCUMENTED The Newton-Raphson solver failed to converge to a good value for
g_ewald_6. This error should not occur for typical problems. Please
send an email to the developers.
E: Cannot compute initial g_ewald_disp E: Cannot compute initial g_ewald_disp
@ -478,114 +495,15 @@ LAMMPS failed to compute an initial guess for the PPPM_disp g_ewald_6
factor that partitions the computation between real space and k-space factor that partitions the computation between real space and k-space
for Disptersion interactions. for Disptersion interactions.
E: Could not compute grid size for Dispersion! E: Could not compute grid size for dispersion
UNDOCUMENTED The code is unable to compute a grid size consistent with the desired
accuracy. This error should not occur for typical problems. Please
send an email to the developers.
E: Out of range atoms - cannot compute PPPMDisp E: Out of range atoms - cannot compute PPPMDisp
UNDOCUMENTED One or more atoms are attempting to map their charge to a PPPM grid
U: Cannot (yet) use PPPM_disp with triclinic box
This feature is not yet supported.
U: Cannot use PPPM_disp with 2d simulation
The kspace style pppm_disp cannot be used in 2d simulations. You can use
2d PPPM_disp in a 3d simulation; see the kspace_modify command.
U: Cannot use nonperiodic boundaries with PPPM_disp
For kspace style pppm_disp, all 3 dimensions must have periodic boundaries
unless you use the kspace_modify command to define a 2d slab with a
non-periodic z dimension.
U: Incorrect boundaries with slab PPPM_disp
Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with PPPM_disp.
U: PPPM_disp coulomb order cannot be greater than %d
Self-explanatory.
U: PPPM_disp dispersion order cannot be greater than %d
Self-explanatory.
U: Unsupported mixing rule in kspace_style pppm_disp for pair_style %s
PPPM_disp requires arithemtic or geometric mixing rules.
U: Unsupported order in kspace_style pppm_disp pair_style %s
PPPM_disp only works for 1/r and 1/r^6 potentials
U: Charges are set, but coulombic long-range solver is not used.
Charges have been specified, however, calculations are performed
as if they were zero.
U: Bad TIP4P angle type for PPPM_disp/TIP4P
Specified angle type is not valid.
U: Bad TIP4P bond type for PPPM_disp/TIP4P
Specified bond type is not valid.
U: Reducing PPPM_disp Coulomb order b/c stencil extends beyond neighbor processor
LAMMPS is attempting this in order to allow the simulation
to run. It should not effect the PPPM_disp accuracy.
U: Reducing PPPM_disp Dispersion order b/c stencil extends beyond neighbor processor
LAMMPS is attempting this in order to allow the simulation
to run. It should not effect the PPPM_disp accuracy.
U: PPPM_disp Coulomb grid is too large
The global PPPM_disp grid for Coulomb interactions is larger than OFFSET in one or more dimensions.
OFFSET is currently set to 16384. You likely need to decrease the
requested precision.
U: PPPM_grid Dispersion grid is too large
One of the PPPM_disp grids for Dispersion interactions is larger than OFFSET in one or more dimensions.
OFFSET is currently set to 16384. You likely need to decrease the
requested precision.
U: Coulomb PPPM_disp order has been reduced to 0
LAMMPS has attempted to reduce the PPPM_disp coulomb order to enable the simulation
to run, but can reduce the order no further. Try increasing the
accuracy of PPPM_disp coulomb by reducing the tolerance size, thus inducing a
larger PPPM_disp coulomb grid.
U: Dispersion PPPM_disp order has been reduced to 0
LAMMPS has attempted to reduce the PPPM_disp dispersion order to enable the simulation
to run, but can reduce the order no further. Try increasing the
accuracy of PPPM_disp dispersion by reducing the tolerance size, thus inducing a
larger PPPM_disp dispersion grid.
U: Cannot compute PPPM_disp g_ewald
LAMMPS failed to compute a valid approximation for the PPPM_disp g_ewald
factor that partitions the computation between real space and k-space
for Coulomb interactions.
U: Cannot compute final g_ewald_disp
LAMMPS failed to compute a final value for the PPPM_disp g_ewald_6
factor that partitions the computation between real space and k-space
for Disptersion interactions.
U: Out of range atoms - cannot compute PPPM_disp
One or more atoms are attempting to map their charge to a PPPM_disp grid
point that is not owned by a processor. This is likely for one of two point that is not owned by a processor. This is likely for one of two
reasons, both of them bad. First, it may mean that an atom near the reasons, both of them bad. First, it may mean that an atom near the
boundary of a processor's sub-domain has moved more than 1/2 the boundary of a processor's sub-domain has moved more than 1/2 the

View File

@ -52,7 +52,7 @@ class PPPMDispTIP4P : public PPPMDisp {
E: Kspace style pppm/disp/tip4p requires newton on E: Kspace style pppm/disp/tip4p requires newton on
UNDOCUMENTED Self-explanatory.
E: Out of range atoms - cannot compute PPPM E: Out of range atoms - cannot compute PPPM
@ -80,8 +80,4 @@ E: TIP4P hydrogen has incorrect atom type
The TIP4P pairwise computation found an H atom whose type does not The TIP4P pairwise computation found an H atom whose type does not
agree with the specified H type. agree with the specified H type.
U: Kspace style pppm/tip4p requires newton on
UNDOCUMENTED
*/ */

View File

@ -47,7 +47,7 @@ using namespace MathConst;
FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) : FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg) Fix(lmp, narg, arg)
{ {
if (narg < 11) error->all(FLERR,"Illegal fix GCMC command"); if (narg < 11) error->all(FLERR,"Illegal fix gcmc command");
vector_flag = 1; vector_flag = 1;
size_vector = 8; size_vector = 8;
@ -67,12 +67,12 @@ FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) :
chemical_potential = atof(arg[9]); chemical_potential = atof(arg[9]);
displace = atof(arg[10]); displace = atof(arg[10]);
if (nexchanges < 0) error->all(FLERR,"Illegal fix GCMC command"); if (nexchanges < 0) error->all(FLERR,"Illegal fix gcmc command");
if (nmcmoves < 0) error->all(FLERR,"Illegal fix GCMC command"); if (nmcmoves < 0) error->all(FLERR,"Illegal fix gcmc command");
if (seed <= 0) error->all(FLERR,"Illegal fix GCMC command"); if (seed <= 0) error->all(FLERR,"Illegal fix gcmc command");
if (reservoir_temperature < 0.0) if (reservoir_temperature < 0.0)
error->all(FLERR,"Illegal fix GCMC command"); error->all(FLERR,"Illegal fix gcmc command");
if (displace < 0.0) error->all(FLERR,"Illegal fix GCMC command"); if (displace < 0.0) error->all(FLERR,"Illegal fix gcmc command");
// set defaults // set defaults
@ -103,9 +103,9 @@ FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) :
region_xlo = region_xhi = region_ylo = region_yhi = region_zlo = region_zhi = 0.0; region_xlo = region_xhi = region_ylo = region_yhi = region_zlo = region_zhi = 0.0;
if (regionflag) { if (regionflag) {
if (domain->regions[iregion]->bboxflag == 0) if (domain->regions[iregion]->bboxflag == 0)
error->all(FLERR,"Fix GCMC region does not support a bounding box"); error->all(FLERR,"Fix gcmc region does not support a bounding box");
if (domain->regions[iregion]->dynamic_check()) if (domain->regions[iregion]->dynamic_check())
error->all(FLERR,"Fix GCMC region cannot be dynamic"); error->all(FLERR,"Fix gcmc region cannot be dynamic");
region_xlo = domain->regions[iregion]->extent_xlo; region_xlo = domain->regions[iregion]->extent_xlo;
region_xhi = domain->regions[iregion]->extent_xhi; region_xhi = domain->regions[iregion]->extent_xhi;
@ -117,7 +117,7 @@ FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) :
if (region_xlo < domain->boxlo[0] || region_xhi > domain->boxhi[0] || if (region_xlo < domain->boxlo[0] || region_xhi > domain->boxhi[0] ||
region_ylo < domain->boxlo[1] || region_yhi > domain->boxhi[1] || region_ylo < domain->boxlo[1] || region_yhi > domain->boxhi[1] ||
region_zlo < domain->boxlo[2] || region_zhi > domain->boxhi[2]) region_zlo < domain->boxlo[2] || region_zhi > domain->boxhi[2])
error->all(FLERR,"Fix GCMC region extends outside simulation box"); error->all(FLERR,"Fix gcmc region extends outside simulation box");
// estimate region volume using MC trials // estimate region volume using MC trials
@ -170,32 +170,32 @@ FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) :
void FixGCMC::options(int narg, char **arg) void FixGCMC::options(int narg, char **arg)
{ {
if (narg < 0) error->all(FLERR,"Illegal fix GCMC command"); if (narg < 0) error->all(FLERR,"Illegal fix gcmc command");
int iarg = 0; int iarg = 0;
while (iarg < narg) { while (iarg < narg) {
if (strcmp(arg[iarg],"molecule") == 0) { if (strcmp(arg[iarg],"molecule") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix GCMC command"); if (iarg+2 > narg) error->all(FLERR,"Illegal fix gcmc command");
if (strcmp(arg[iarg+1],"no") == 0) molflag = 0; if (strcmp(arg[iarg+1],"no") == 0) molflag = 0;
else if (strcmp(arg[iarg+1],"yes") == 0) molflag = 1; else if (strcmp(arg[iarg+1],"yes") == 0) molflag = 1;
else error->all(FLERR,"Illegal fix GCMC command"); else error->all(FLERR,"Illegal fix gcmc command");
iarg += 2; iarg += 2;
} else if (strcmp(arg[iarg],"region") == 0) { } else if (strcmp(arg[iarg],"region") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix GCMC command"); if (iarg+2 > narg) error->all(FLERR,"Illegal fix gcmc command");
iregion = domain->find_region(arg[iarg+1]); iregion = domain->find_region(arg[iarg+1]);
if (iregion == -1) if (iregion == -1)
error->all(FLERR,"Region ID for fix GCMC does not exist"); error->all(FLERR,"Region ID for fix gcmc does not exist");
int n = strlen(arg[iarg+1]) + 1; int n = strlen(arg[iarg+1]) + 1;
idregion = new char[n]; idregion = new char[n];
strcpy(idregion,arg[iarg+1]); strcpy(idregion,arg[iarg+1]);
regionflag = 1; regionflag = 1;
iarg += 2; iarg += 2;
} else if (strcmp(arg[iarg],"maxangle") == 0) { } else if (strcmp(arg[iarg],"maxangle") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix GCMC command"); if (iarg+2 > narg) error->all(FLERR,"Illegal fix gcmc command");
max_rotation_angle = atof(arg[iarg+1]); max_rotation_angle = atof(arg[iarg+1]);
max_rotation_angle *= MY_PI/180; max_rotation_angle *= MY_PI/180;
iarg += 2; iarg += 2;
} else error->all(FLERR,"Illegal fix GCMC command"); } else error->all(FLERR,"Illegal fix gcmc command");
} }
} }
@ -228,7 +228,7 @@ void FixGCMC::init()
if (molflag == 0) { if (molflag == 0) {
if (ngcmc_type <= 0 || ngcmc_type > atom->ntypes) if (ngcmc_type <= 0 || ngcmc_type > atom->ntypes)
error->all(FLERR,"Invalid atom type in fix GCMC command"); error->all(FLERR,"Invalid atom type in fix gcmc command");
} }
// if molflag not set, warn if any deletable atom has a mol ID // if molflag not set, warn if any deletable atom has a mol ID
@ -244,7 +244,7 @@ void FixGCMC::init()
MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world);
if (flagall && comm->me == 0) if (flagall && comm->me == 0)
error->all(FLERR, error->all(FLERR,
"Fix GCMC cannot exchange individual atoms belonging to a molecule"); "Fix gcmc cannot exchange individual atoms belonging to a molecule");
} }
// if molflag set, check for unset mol IDs // if molflag set, check for unset mol IDs
@ -260,22 +260,22 @@ void FixGCMC::init()
MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world);
if (flagall && comm->me == 0) if (flagall && comm->me == 0)
error->all(FLERR, error->all(FLERR,
"All mol IDs should be set for fix GCMC group atoms"); "All mol IDs should be set for fix gcmc group atoms");
} }
if ((molflag && (atom->molecule_flag == 0)) || if ((molflag && (atom->molecule_flag == 0)) ||
(molflag && ((!atom->tag_enable) || (!atom->map_style)))) (molflag && ((!atom->tag_enable) || (!atom->map_style))))
error->all(FLERR, error->all(FLERR,
"Fix GCMC molecule command requires that atoms have molecule attributes"); "Fix gcmc molecule command requires that atoms have molecule attributes");
if (force->pair->single_enable == 0) if (force->pair->single_enable == 0)
error->all(FLERR,"Fix GCMC incompatible with given pair_style"); error->all(FLERR,"Fix gcmc incompatible with given pair_style");
if (domain->dimension == 2) if (domain->dimension == 2)
error->all(FLERR,"Cannot use fix GCMC in a 2d simulation"); error->all(FLERR,"Cannot use fix gcmc in a 2d simulation");
if (domain->triclinic == 1) if (domain->triclinic == 1)
error->all(FLERR,"Cannot use fix GCMC with a triclinic box"); error->all(FLERR,"Cannot use fix gcmc with a triclinic box");
// create a new group for rotation molecules // create a new group for rotation molecules
@ -288,7 +288,8 @@ void FixGCMC::init()
group_arg[2] = digits; group_arg[2] = digits;
group->assign(3,group_arg); group->assign(3,group_arg);
rotation_group = group->find(group_arg[0]); rotation_group = group->find(group_arg[0]);
if (rotation_group == -1) error->all(FLERR,"Could not find fix group ID"); if (rotation_group == -1)
error->all(FLERR,"Could not find fix gcmc rotation group ID");
rotation_groupbit = group->bitmask[rotation_group]; rotation_groupbit = group->bitmask[rotation_group];
rotation_inversegroupbit = rotation_groupbit ^ ~0; rotation_inversegroupbit = rotation_groupbit ^ ~0;
delete [] group_arg; delete [] group_arg;
@ -301,7 +302,7 @@ void FixGCMC::init()
else gas_mass = atom->mass[ngcmc_type]; else gas_mass = atom->mass[ngcmc_type];
if (gas_mass <= 0.0) if (gas_mass <= 0.0)
error->all(FLERR,"Illegal fix GCMC gas mass <= 0"); error->all(FLERR,"Illegal fix gcmc gas mass <= 0");
// check that no deletable atoms are in atom->firstgroup // check that no deletable atoms are in atom->firstgroup
// deleting such an atom would not leave firstgroup atoms first // deleting such an atom would not leave firstgroup atoms first
@ -769,7 +770,7 @@ void FixGCMC::attempt_molecule_insertion()
if (random_equal->uniform() < zz*volume*exp(-beta*insertion_energy_sum)/(ngas+1)) { if (random_equal->uniform() < zz*volume*exp(-beta*insertion_energy_sum)/(ngas+1)) {
maxmol++; maxmol++;
if (maxmol >= MAXSMALLINT) if (maxmol >= MAXSMALLINT)
error->all(FLERR,"Fix GCMC ran out of available molecule IDs"); error->all(FLERR,"Fix gcmc ran out of available molecule IDs");
int maxtag = 0; int maxtag = 0;
for (int i = 0; i < atom->nlocal; i++) maxtag = MAX(maxtag,atom->tag[i]); for (int i = 0; i < atom->nlocal; i++) maxtag = MAX(maxtag,atom->tag[i]);
@ -1042,7 +1043,7 @@ void FixGCMC::get_model_molecule()
MPI_Allreduce(&natoms_per_molecule_local,&natoms_per_molecule,1,MPI_INT,MPI_MAX,world); MPI_Allreduce(&natoms_per_molecule_local,&natoms_per_molecule,1,MPI_INT,MPI_MAX,world);
if (natoms_per_molecule == 0) if (natoms_per_molecule == 0)
error->all(FLERR,"Fix GCMC could not find any atoms in the user-supplied template molecule"); error->all(FLERR,"Fix gcmc could not find any atoms in the user-supplied template molecule");
memory->create(atom_coord,natoms_per_molecule,3,"fixGCMC:atom_coord"); memory->create(atom_coord,natoms_per_molecule,3,"fixGCMC:atom_coord");
@ -1148,7 +1149,7 @@ void FixGCMC::get_model_molecule()
int nlocal = atom->nlocal; int nlocal = atom->nlocal;
if (nlocal != natoms_per_molecule) if (nlocal != natoms_per_molecule)
error->all(FLERR,"Fix GCMC incorrect number of atoms per molecule"); error->all(FLERR,"Fix gcmc incorrect number of atoms per molecule");
// compute the model molecule's mass and center-of-mass // compute the model molecule's mass and center-of-mass
// then recenter model molecule on the origin // then recenter model molecule on the origin

View File

@ -119,65 +119,66 @@ Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line. command-line option when running LAMMPS to see the offending line.
E: Fix GCMC region does not support a bounding box E: Fix gcmc region does not support a bounding box
UNDOCUMENTED Not all regions represent bounded volumes. You cannot use
such a region with the fix gcmc command.
E: Fix GCMC region cannot be dynamic E: Fix gcmc region cannot be dynamic
UNDOCUMENTED Only static regions can be used with fix gcmc.
E: Fix GCMC region extends outside simulation box E: Fix gcmc region extends outside simulation box
UNDOCUMENTED Self-explanatory.
E: Region ID for fix GCMC does not exist E: Region ID for fix gcmc does not exist
UNDOCUMENTED Self-explanatory.
E: Invalid atom type in fix GCMC command E: Invalid atom type in fix gcmc command
The atom type specified in the GCMC command does not exist. The atom type specified in the GCMC command does not exist.
E: Fix GCMC cannot exchange individual atoms belonging to a molecule E: Fix gcmc cannot exchange individual atoms belonging to a molecule
This is an error since you should not delete only one atom of a molecule. This is an error since you should not delete only one atom of a molecule.
The user has specified atomic (non-molecular) gas exchanges, but an atom The user has specified atomic (non-molecular) gas exchanges, but an atom
belonging to a molecule could be deleted. belonging to a molecule could be deleted.
E: All mol IDs should be set for fix GCMC group atoms E: All mol IDs should be set for fix gcmc group atoms
The molecule flag is on, yet not all molecule ids in the fix group have The molecule flag is on, yet not all molecule ids in the fix group have
been set to non-zero positive values by the user. This is an error since been set to non-zero positive values by the user. This is an error since
all atoms in the fix GCMC group are eligible for deletion, rotation, and all atoms in the fix gcmc group are eligible for deletion, rotation, and
translation and therefore must have valid molecule ids. translation and therefore must have valid molecule ids.
E: Fix GCMC molecule command requires that atoms have molecule attributes E: Fix gcmc molecule command requires that atoms have molecule attributes
Should not choose the GCMC molecule feature if no molecules are being Should not choose the GCMC molecule feature if no molecules are being
simulated. The general molecule flag is off, but GCMC's molecule flag simulated. The general molecule flag is off, but GCMC's molecule flag
is on. is on.
E: Fix GCMC incompatible with given pair_style E: Fix gcmc incompatible with given pair_style
Some pair_styles do not provide single-atom energies, which are needed Some pair_styles do not provide single-atom energies, which are needed
by fix GCMC. by fix gcmc.
E: Cannot use fix GCMC in a 2d simulation E: Cannot use fix gcmc in a 2d simulation
Fix GCMC is set up to run in 3d only. No 2d simulations with fix GCMC Fix gcmc is set up to run in 3d only. No 2d simulations with fix gcmc
are allowed. are allowed.
E: Cannot use fix GCMC with a triclinic box E: Cannot use fix gcmc with a triclinic box
Fix GCMC is set up to run with othogonal boxes only. Simulations with Fix gcmc is set up to run with othogonal boxes only. Simulations with
triclinic boxes and fix GCMC are not allowed. triclinic boxes and fix gcmc are not allowed.
E: Could not find fix group ID E: Could not find fix gcmc rotation group ID
UNDOCUMENTED Self-explanatory.
E: Illegal fix GCMC gas mass <= 0 E: Illegal fix gcmc gas mass <= 0
The computed mass of the designated gas molecule or atom type was less The computed mass of the designated gas molecule or atom type was less
than or equal to zero. than or equal to zero.
@ -187,46 +188,33 @@ E: Cannot do GCMC on atoms in atom_modify first group
This is a restriction due to the way atoms are organized in a list to This is a restriction due to the way atoms are organized in a list to
enable the atom_modify first command. enable the atom_modify first command.
E: Fix GCMC ran out of available molecule IDs E: Fix gcmc ran out of available molecule IDs
This is a code limitation where more than MAXSMALLINT (usually around This is a code limitation where more than MAXSMALLINT (usually around
two billion) molecules have been created. The code needs to be two billion) molecules have been created. The code needs to be
modified to either allow molecule ID recycling or use bigger ints for modified to either allow molecule ID recycling or use bigger ints for
molecule IDs. A work-around is to run shorter simulations. molecule IDs. A work-around is to run shorter simulations.
E: Fix GCMC could not find any atoms in the user-supplied template molecule E: Fix gcmc could not find any atoms in the user-supplied template molecule
When using the molecule option with fix GCMC, the user must supply a When using the molecule option with fix gcmc, the user must supply a
template molecule in the usual LAMMPS data file with its molecule id template molecule in the usual LAMMPS data file with its molecule id
specified in the fix GCMC command as the "type" of the exchanged gas. specified in the fix gcmc command as the "type" of the exchanged gas.
E: Fix GCMC incorrect number of atoms per molecule E: Fix gcmc incorrect number of atoms per molecule
The number of atoms in each gas molecule was not computed correctly. The number of atoms in each gas molecule was not computed correctly.
U: Fix GCMC fix group should be all E: Fix gcmc region cannot be dynamic
Fix GCMC will ignore the fix group specified by the user. User should
set the fix group to "all". Fix GCMC will overwrite the user-specified
fix group with a group consisting of all GCMC gas atoms.
U: Fix GCMC region does not support a bounding box
Not all regions represent bounded volumes. You cannot use Only static regions can be used with fix gcmc.
such a region with the fix GCMC command.
E: Fix GCMC region cannot be dynamic E: Fix gcmc region extends outside simulation box
Only static regions can be used with fix GCMC.
E: Fix GCMC region extends outside simulation box
Self-explanatory. Self-explanatory.
E: Region ID for fix GCMC does not exist E: Region ID for fix gcmc does not exist
Self-explanatory. Self-explanatory.
*/ */

View File

@ -957,8 +957,8 @@ void AtomVecFull::data_atom(double *coord, tagint imagetmp, char **values)
int AtomVecFull::data_atom_hybrid(int nlocal, char **values) int AtomVecFull::data_atom_hybrid(int nlocal, char **values)
{ {
molecule[nlocal] = atoi(values[1]); molecule[nlocal] = atoi(values[0]);
q[nlocal] = atof(values[3]); q[nlocal] = atof(values[1]);
num_bond[nlocal] = 0; num_bond[nlocal] = 0;
num_angle[nlocal] = 0; num_angle[nlocal] = 0;

View File

@ -59,7 +59,9 @@ class ImproperHybrid : public Improper {
E: Illegal ... command E: Illegal ... command
UNDOCUMENTED 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: Improper style hybrid cannot use same improper style twice E: Improper style hybrid cannot use same improper style twice

View File

@ -425,7 +425,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) :
int idilate = group->find(id_dilate); int idilate = group->find(id_dilate);
if (idilate == -1) if (idilate == -1)
error->all(FLERR, error->all(FLERR,
"Fix rigid nvt/npt/nph dilate group ID does not exist"); "Fix rigid npt/nph dilate group ID does not exist");
} }
iarg += 2; iarg += 2;

View File

@ -176,9 +176,9 @@ E: Fix rigid langevin period must be > 0.0
Self-explanatory. Self-explanatory.
E: Fix rigid nvt/npt/nph dilate group ID does not exist E: Fix rigid npt/nph dilate group ID does not exist
UNDOCUMENTED Self-explanatory.
E: One or zero atoms in rigid body E: One or zero atoms in rigid body
@ -204,7 +204,7 @@ not be accounted for.
E: Fix rigid atom has non-zero image flag in a non-periodic dimension E: Fix rigid atom has non-zero image flag in a non-periodic dimension
You cannot set image flags for non-periodic dimensions. Image flags for non-periodic dimensions should not be set.
E: Insufficient Jacobi rotations for rigid body E: Insufficient Jacobi rotations for rigid body

View File

@ -245,13 +245,13 @@ void FixRigidNH::init()
if (tcomputeflag) { if (tcomputeflag) {
icompute = modify->find_compute(id_temp); icompute = modify->find_compute(id_temp);
if (icompute < 0) if (icompute < 0)
error->all(FLERR,"Temp ID for fix rigid npt/nph does not exist"); error->all(FLERR,"Temperature ID for fix rigid nvt/npt/nph does not exist");
temperature = modify->compute[icompute]; temperature = modify->compute[icompute];
} }
if (pstat_flag) { if (pstat_flag) {
if (domain->triclinic) if (domain->triclinic)
error->all(FLERR,"fix rigid npt/nph does not yet allow triclinic box"); error->all(FLERR,"Fix rigid npt/nph does not yet allow triclinic box");
// ensure no conflict with fix deform // ensure no conflict with fix deform
@ -283,7 +283,7 @@ void FixRigidNH::init()
icompute = modify->find_compute(id_press); icompute = modify->find_compute(id_press);
if (icompute < 0) if (icompute < 0)
error->all(FLERR,"Press ID for fix rigid npt/nph does not exist"); error->all(FLERR,"Pressure ID for fix rigid npt/nph does not exist");
pressure = modify->compute[icompute]; pressure = modify->compute[icompute];
// detect if any rigid fixes exist so rigid bodies move on remap // detect if any rigid fixes exist so rigid bodies move on remap

View File

@ -38,7 +38,8 @@ class FixRigidNH : public FixRigid {
double boltz,nktv2p,mvv2e; // boltzman constant, conversion factors double boltz,nktv2p,mvv2e; // boltzman constant, conversion factors
int nf_t,nf_r; // trans/rot degrees of freedom int nf_t,nf_r; // trans/rot degrees of freedom
double onednft,onednfr; // factors 1 + dimension/trans(rot) degrees of freedom double onednft,onednfr; // factors 1 + dimension/trans(rot)
// degrees of freedom
double *w,*wdti1,*wdti2,*wdti4; // Yoshida-Suzuki coefficients double *w,*wdti1,*wdti2,*wdti4; // Yoshida-Suzuki coefficients
double *q_t,*q_r; // trans/rot thermostat masses double *q_t,*q_r; // trans/rot thermostat masses
double *eta_t,*eta_r; // trans/rot thermostat positions double *eta_t,*eta_r; // trans/rot thermostat positions
@ -104,7 +105,7 @@ inline double FixRigidNH::maclaurin_series(double x)
E: Fix rigid npt/nph period must be > 0.0 E: Fix rigid npt/nph period must be > 0.0
UNDOCUMENTED Self-explanatory.
E: Invalid fix rigid npt/nph command for a 2d simulation E: Invalid fix rigid npt/nph command for a 2d simulation
@ -132,21 +133,21 @@ E: Fix rigid npt/nph dilate group ID does not exist
Self-explanatory. Self-explanatory.
E: Temp ID for fix rigid npt/nph does not exist E: Temperature ID for fix rigid nvt/npt does not exist
UNDOCUMENTED Self-explanatory
E: fix rigid npt/nph does not yet allow triclinic box E: fix rigid npt/nph does not yet allow triclinic box
UNDOCUMENTED This is a current restriction of the command.
E: Cannot use fix rigid npt/nph and fix deform on same component of stress tensor E: Cannot use fix rigid npt/nph and fix deform on same component of stress tensor
This would be changing the same box dimension twice. This would be changing the same box dimension twice.
E: Press ID for fix rigid npt/nph does not exist E: Pressure ID for fix rigid npt/nph does not exist
UNDOCUMENTED Self-explanatory.
E: Illegal ... command E: Illegal ... command
@ -179,16 +180,4 @@ E: Fix_modify pressure ID does not compute pressure
The compute ID assigned to the fix must compute pressure. The compute ID assigned to the fix must compute pressure.
U: Target temperature for fix rigid nvt/npt cannot be 0.0
Self-explanatory.
U: Temperature ID for fix rigid npt/nph does not exist
Self-explanatory.
U: Pressure ID for fix rigid npt/nph does not exist
Self-explanatory.
*/ */

View File

@ -40,14 +40,12 @@ FixRigidNPH::FixRigidNPH(LAMMPS *lmp, int narg, char **arg) :
// error checks // error checks
if (pstat_flag == 0) if (pstat_flag == 0)
error->all(FLERR,"Pressure control must be used with fix nph"); error->all(FLERR,"Did not set pressure for fix rigid/nph");
if (tstat_flag == 1) if (tstat_flag == 1)
error->all(FLERR,"Temperature control must not be used with fix nph"); error->all(FLERR,"Cannot set temperature for fix rigid/nph");
if (p_start[0] < 0.0 || p_start[1] < 0.0 || p_start[2] < 0.0 ||
p_stop[0] < 0.0 || p_stop[1] < 0.0 || p_stop[2] < 0.0)
error->all(FLERR,"Target pressure for fix rigid/nph cannot be 0.0");
// convert input periods to frequency // convert input periods to frequency
p_freq[0] = p_freq[1] = p_freq[2] = 0.0; p_freq[0] = p_freq[1] = p_freq[2] = 0.0;
if (p_flag[0]) p_freq[0] = 1.0 / p_period[0]; if (p_flag[0]) p_freq[0] = 1.0 / p_period[0];

View File

@ -38,16 +38,12 @@ class FixRigidNPH : public FixRigidNH {
/* ERROR/WARNING messages: /* ERROR/WARNING messages:
E: Pressure control must be used with fix nph E: Did not set pressure for fix rigid/nph
UNDOCUMENTED The press keyword must be specified.
E: Temperature control must not be used with fix nph E: Cannot set temperature for fix rigid/nph
UNDOCUMENTED The temp keyword cannot be specified.
E: Target pressure for fix rigid/nph cannot be 0.0
UNDOCUMENTED
*/ */

View File

@ -40,21 +40,17 @@ FixRigidNPT::FixRigidNPT(LAMMPS *lmp, int narg, char **arg) :
// error checks // error checks
if (tstat_flag == 0 || pstat_flag == 0) if (tstat_flag == 0 || pstat_flag == 0)
error->all(FLERR,"Did not set temp or press for fix rigid/npt"); error->all(FLERR,"Did not set temperature or pressure for fix rigid/npt");
if (t_start <= 0.0 || t_stop <= 0.0) if (t_start <= 0.0 || t_stop <= 0.0)
error->all(FLERR,"Target temperature for fix rigid/npt cannot be 0.0"); error->all(FLERR,"Target temperature for fix rigid/npt cannot be 0.0");
if (p_start[0] < 0.0 || p_start[1] < 0.0 || p_start[2] < 0.0 ||
p_stop[0] < 0.0 || p_stop[1] < 0.0 || p_stop[2] < 0.0)
error->all(FLERR,"Target pressure for fix rigid/npt cannot be 0.0");
if (t_period <= 0.0) error->all(FLERR,"Fix rigid/npt period must be > 0.0"); if (t_period <= 0.0) error->all(FLERR,"Fix rigid/npt period must be > 0.0");
// thermostat chain parameters // thermostat chain parameters
if (t_chain < 1) error->all(FLERR,"Illegal fix_modify command"); if (t_chain < 1) error->all(FLERR,"Illegal fix rigid/npt command");
if (t_iter < 1) error->all(FLERR,"Illegal fix_modify command"); if (t_iter < 1) error->all(FLERR,"Illegal fix rigid/npt command");
if (t_order != 3 && t_order != 5) if (t_order != 3 && t_order != 5)
error->all(FLERR,"Fix_modify order must be 3 or 5"); error->all(FLERR,"Fix rigid/npt temperature order must be 3 or 5");
// convert input periods to frequency // convert input periods to frequency

View File

@ -38,28 +38,26 @@ class FixRigidNPT : public FixRigidNH {
/* ERROR/WARNING messages: /* ERROR/WARNING messages:
E: Did not set temp or press for fix rigid/npt E: Did not set temperature or pressure for fix rigid/npt
UNDOCUMENTED The temp and press keywords must be specified.
E: Target temperature for fix rigid/npt cannot be 0.0 E: Target temperature for fix rigid/npt cannot be 0.0
UNDOCUMENTED Self-explanatory.
E: Target pressure for fix rigid/npt cannot be 0.0
UNDOCUMENTED
E: Fix rigid/npt period must be > 0.0 E: Fix rigid/npt period must be > 0.0
UNDOCUMENTED Self-explanatory.
E: Illegal ... command E: Illegal ... command
UNDOCUMENTED 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: Fix_modify order must be 3 or 5 E: Fix rigid/npt temperature order must be 3 or 5
UNDOCUMENTED Self-explanatory.
*/ */

View File

@ -37,14 +37,14 @@ FixRigidNVT::FixRigidNVT(LAMMPS *lmp, int narg, char **arg) :
// convert input period to frequency // convert input period to frequency
if (tstat_flag == 0) if (tstat_flag == 0)
error->all(FLERR,"Did not set temp for fix rigid/nvt"); error->all(FLERR,"Did not set temperature for fix rigid/nvt");
if (t_start < 0.0 || t_stop <= 0.0) if (t_start < 0.0 || t_stop <= 0.0)
error->all(FLERR,"Target temperature for fix rigid/nvt cannot be 0.0"); error->all(FLERR,"Target temperature for fix rigid/nvt cannot be 0.0");
if (t_period <= 0.0) error->all(FLERR,"Fix rigid/nvt period must be > 0.0"); if (t_period <= 0.0) error->all(FLERR,"Fix rigid/nvt period must be > 0.0");
t_freq = 1.0 / t_period; t_freq = 1.0 / t_period;
if (t_chain < 1) error->all(FLERR,"Illegal fix_modify command"); if (t_chain < 1) error->all(FLERR,"Illegal fix rigid/nvt command");
if (t_iter < 1) error->all(FLERR,"Illegal fix_modify command"); if (t_iter < 1) error->all(FLERR,"Illegal fix rigid/nvt command");
if (t_order != 3 && t_order != 5) if (t_order != 3 && t_order != 5)
error->all(FLERR,"Fix_modify order must be 3 or 5"); error->all(FLERR,"Fix rigid/nvt temperature order must be 3 or 5");
} }

View File

@ -37,24 +37,26 @@ class FixRigidNVT : public FixRigidNH {
/* ERROR/WARNING messages: /* ERROR/WARNING messages:
E: Did not set temp for fix rigid/nvt E: Illegal ... command
UNDOCUMENTED 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: Did not set temperature for fix rigid/nvt
The temp keyword must be specified.
E: Target temperature for fix rigid/nvt cannot be 0.0 E: Target temperature for fix rigid/nvt cannot be 0.0
UNDOCUMENTED Self-explanatory.
E: Fix rigid/nvt period must be > 0.0 E: Fix rigid/nvt period must be > 0.0
UNDOCUMENTED Self-explanatory.
E: Illegal ... command E: Fix rigid/nvt temperature order must be 3 or 5
UNDOCUMENTED Self-explanatory.
E: Fix_modify order must be 3 or 5
UNDOCUMENTED
*/ */

View File

@ -178,11 +178,11 @@ command-line option when running LAMMPS to see the offending line.
E: Fix rigid/small langevin period must be > 0.0 E: Fix rigid/small langevin period must be > 0.0
UNDOCUMENTED Self-explanatory.
E: Fix rigid/small requires atom attribute molecule E: Fix rigid/small requires atom attribute molecule
UNDOCUMENTED Self-explanatory.
E: No rigid bodies defined E: No rigid bodies defined
@ -207,7 +207,7 @@ not be accounted for.
E: Fix rigid/small atom has non-zero image flag in a non-periodic dimension E: Fix rigid/small atom has non-zero image flag in a non-periodic dimension
UNDOCUMENTED Image flags for non-periodic dimensions should not be set.
E: Insufficient Jacobi rotations for rigid body E: Insufficient Jacobi rotations for rigid body
@ -220,104 +220,10 @@ are not within the required tolerances.
E: Rigid body atoms %d %d missing on proc %d at step %ld E: Rigid body atoms %d %d missing on proc %d at step %ld
UNDOCUMENTED This means that an atom cannot find the atom that owns the rigid body
it is part of, or vice versa. The solution is to use the communicate
E: BAD AAA cutoff command to insure ghost atoms are acquired from far enough away
to encompass the max distance printed when the fix rigid/small command
UNDOCUMENTED was invoked.
E: BAD BBB
UNDOCUMENTED
E: BAD CCC
UNDOCUMENTED
E: BAD DDD
UNDOCUMENTED
E: BAD EEE
UNDOCUMENTED
E: BAD FFF
UNDOCUMENTED
E: BAD GGG
UNDOCUMENTED
E: BAD HHH
UNDOCUMENTED
E: BAD III
UNDOCUMENTED
E: BAD JJJ
UNDOCUMENTED
E: BAD KKK
UNDOCUMENTED
E: BAD LLL
UNDOCUMENTED
U: Fix rigid molecule requires atom attribute molecule
Self-explanatory.
U: Could not find fix rigid group ID
A group ID used in the fix rigid command does not exist.
U: One or more atoms belong to multiple rigid bodies
Two or more rigid bodies defined by the fix rigid command cannot
contain the same atom.
U: Fix rigid z force cannot be on for 2d simulation
Self-explanatory.
U: Fix rigid xy torque cannot be on for 2d simulation
Self-explanatory.
U: Fix rigid langevin period must be > 0.0
Self-explanatory.
U: One or zero atoms in rigid body
Any rigid body defined by the fix rigid command must contain 2 or more
atoms.
U: Fix rigid atom has non-zero image flag in a non-periodic dimension
You cannot set image flags for non-periodic dimensions.
U: Cannot open fix rigid infile %s
UNDOCUMENTED
U: Unexpected end of fix rigid file
UNDOCUMENTED
U: Incorrect rigid body format in fix rigid file
UNDOCUMENTED
U: Invalid rigid body ID in fix rigid file
UNDOCUMENTED
*/ */

View File

@ -127,7 +127,7 @@ FixAppendAtoms::FixAppendAtoms(LAMMPS *lmp, int narg, char **arg) :
} else if (strcmp(arg[iarg],"basis") == 0) { } else if (strcmp(arg[iarg],"basis") == 0) {
if (iarg+3 > narg) error->all(FLERR,"Illegal fix append/atoms command"); if (iarg+3 > narg) error->all(FLERR,"Illegal fix append/atoms command");
if (domain->lattice == NULL) if (domain->lattice == NULL)
error->all(FLERR,"Must define lattice to append/atoms"); error->all(FLERR,"Fis append/atoms requires a lattice be defined");
int ibasis = atoi(arg[iarg+1]); int ibasis = atoi(arg[iarg+1]);
int itype = atoi(arg[iarg+2]); int itype = atoi(arg[iarg+2]);
if (ibasis <= 0 || ibasis > nbasis || itype <= 0 || itype > atom->ntypes) if (ibasis <= 0 || ibasis > nbasis || itype <= 0 || itype > atom->ntypes)

View File

@ -66,7 +66,7 @@ command-line option when running LAMMPS to see the offending line.
E: Fix append/atoms requires a lattice be defined E: Fix append/atoms requires a lattice be defined
UNDOCUMENTED Use the lattice command for this purpose.
E: Only zhi currently implemented for fix append/atoms E: Only zhi currently implemented for fix append/atoms
@ -82,10 +82,6 @@ E: Bad fix ID in fix append/atoms command
The value of the fix_id for keyword spatial must start with the suffix The value of the fix_id for keyword spatial must start with the suffix
f_. f_.
E: Must define lattice to append/atoms
A lattice must be defined before using this fix.
E: Cannot use append/atoms in periodic dimension E: Cannot use append/atoms in periodic dimension
The boundary style of the face where atoms are added can not be of The boundary style of the face where atoms are added can not be of

View File

@ -340,10 +340,6 @@ W: SRD particle %d started inside big particle %d on step %ld bounce %d
See the inside keyword if you want this message to be an error vs See the inside keyword if you want this message to be an error vs
warning. warning.
W: SRD particle %d started inside big particle %d on step %ld bounce %d
UNDOCUMENTED
E: Bad quadratic solve for particle/line collision E: Bad quadratic solve for particle/line collision
This is an internal error. It should nornally not occur. This is an internal error. It should nornally not occur.

View File

@ -72,8 +72,8 @@ AtomVecBody::~AtomVecBody()
{ {
int nall = nlocal_bonus + nghost_bonus; int nall = nlocal_bonus + nghost_bonus;
for (int i = 0; i < nall; i++) { for (int i = 0; i < nall; i++) {
memory->destroy(bonus[i].ivalue); icp->put(bonus[i].iindex);
memory->destroy(bonus[i].dvalue); dcp->put(bonus[i].dindex);
} }
memory->sfree(bonus); memory->sfree(bonus);
@ -105,6 +105,8 @@ void AtomVecBody::settings(int narg, char **arg)
else error->all(FLERR,"Invalid body style"); else error->all(FLERR,"Invalid body style");
bptr->avec = this; bptr->avec = this;
icp = bptr->icp;
dcp = bptr->dcp;
// max size of forward/border comm // max size of forward/border comm
// 7,16 are packed in pack_comm/pack_border // 7,16 are packed in pack_comm/pack_border
@ -212,8 +214,8 @@ void AtomVecBody::copy(int i, int j, int delflag)
// if deleting atom J via delflag and J has bonus data, then delete it // if deleting atom J via delflag and J has bonus data, then delete it
if (delflag && body[j] >= 0) { if (delflag && body[j] >= 0) {
memory->destroy(bonus[body[j]].ivalue); icp->put(bonus[body[j]].iindex);
memory->destroy(bonus[body[j]].dvalue); dcp->put(bonus[body[j]].dindex);
copy_bonus(nlocal_bonus-1,body[j]); copy_bonus(nlocal_bonus-1,body[j]);
nlocal_bonus--; nlocal_bonus--;
} }
@ -249,8 +251,8 @@ void AtomVecBody::clear_bonus()
{ {
int nall = nlocal_bonus + nghost_bonus; int nall = nlocal_bonus + nghost_bonus;
for (int i = nlocal_bonus; i < nall; i++) { for (int i = nlocal_bonus; i < nall; i++) {
memory->destroy(bonus[i].ivalue); icp->put(bonus[i].iindex);
memory->destroy(bonus[i].dvalue); dcp->put(bonus[i].dindex);
} }
nghost_bonus = 0; nghost_bonus = 0;
} }
@ -841,8 +843,8 @@ void AtomVecBody::unpack_border(int n, int first, double *buf)
inertia[2] = buf[m++]; inertia[2] = buf[m++];
bonus[j].ninteger = static_cast<int> (buf[m++]); bonus[j].ninteger = static_cast<int> (buf[m++]);
bonus[j].ndouble = static_cast<int> (buf[m++]); bonus[j].ndouble = static_cast<int> (buf[m++]);
memory->create(bonus[j].ivalue,bonus[j].ninteger,"body:ivalue"); bonus[j].ivalue = icp->get(bonus[j].ninteger,bonus[j].iindex);
memory->create(bonus[j].dvalue,bonus[j].ndouble,"body:dvalue"); bonus[j].dvalue = dcp->get(bonus[j].ndouble,bonus[j].dindex);
m += bptr->unpack_border_body(&bonus[j],&buf[m]); m += bptr->unpack_border_body(&bonus[j],&buf[m]);
bonus[j].ilocal = i; bonus[j].ilocal = i;
body[i] = j; body[i] = j;
@ -884,8 +886,8 @@ void AtomVecBody::unpack_border_vel(int n, int first, double *buf)
inertia[2] = buf[m++]; inertia[2] = buf[m++];
bonus[j].ninteger = static_cast<int> (buf[m++]); bonus[j].ninteger = static_cast<int> (buf[m++]);
bonus[j].ndouble = static_cast<int> (buf[m++]); bonus[j].ndouble = static_cast<int> (buf[m++]);
memory->create(bonus[j].ivalue,bonus[j].ninteger,"body:ivalue"); bonus[j].ivalue = icp->get(bonus[j].ninteger,bonus[j].iindex);
memory->create(bonus[j].dvalue,bonus[j].ndouble,"body:dvalue"); bonus[j].dvalue = dcp->get(bonus[j].ndouble,bonus[j].dindex);
m += bptr->unpack_border_body(&bonus[j],&buf[m]); m += bptr->unpack_border_body(&bonus[j],&buf[m]);
bonus[j].ilocal = i; bonus[j].ilocal = i;
body[i] = j; body[i] = j;
@ -926,8 +928,8 @@ int AtomVecBody::unpack_border_hybrid(int n, int first, double *buf)
inertia[2] = buf[m++]; inertia[2] = buf[m++];
bonus[j].ninteger = static_cast<int> (buf[m++]); bonus[j].ninteger = static_cast<int> (buf[m++]);
bonus[j].ndouble = static_cast<int> (buf[m++]); bonus[j].ndouble = static_cast<int> (buf[m++]);
memory->create(bonus[j].ivalue,bonus[j].ninteger,"body:ivalue"); bonus[j].ivalue = icp->get(bonus[j].ninteger,bonus[j].iindex);
memory->create(bonus[j].dvalue,bonus[j].ndouble,"body:dvalue"); bonus[j].dvalue = dcp->get(bonus[j].ndouble,bonus[j].dindex);
m += bptr->unpack_border_body(&bonus[j],&buf[m]); m += bptr->unpack_border_body(&bonus[j],&buf[m]);
bonus[j].ilocal = i; bonus[j].ilocal = i;
body[i] = j; body[i] = j;
@ -1030,10 +1032,10 @@ int AtomVecBody::unpack_exchange(double *buf)
inertia[2] = buf[m++]; inertia[2] = buf[m++];
bonus[nlocal_bonus].ninteger = static_cast<int> (buf[m++]); bonus[nlocal_bonus].ninteger = static_cast<int> (buf[m++]);
bonus[nlocal_bonus].ndouble = static_cast<int> (buf[m++]); bonus[nlocal_bonus].ndouble = static_cast<int> (buf[m++]);
memory->create(bonus[nlocal_bonus].ivalue,bonus[nlocal_bonus].ninteger, bonus[nlocal_bonus].ivalue = icp->get(bonus[nlocal_bonus].ninteger,
"body:ivalue"); bonus[nlocal_bonus].iindex);
memory->create(bonus[nlocal_bonus].dvalue,bonus[nlocal_bonus].ndouble, bonus[nlocal_bonus].dvalue = dcp->get(bonus[nlocal_bonus].ndouble,
"body:dvalue"); bonus[nlocal_bonus].dindex);
memcpy(bonus[nlocal_bonus].ivalue,&buf[m], memcpy(bonus[nlocal_bonus].ivalue,&buf[m],
bonus[nlocal_bonus].ninteger*sizeof(int)); bonus[nlocal_bonus].ninteger*sizeof(int));
if (intdoubleratio == 1) m += bonus[nlocal_bonus].ninteger; if (intdoubleratio == 1) m += bonus[nlocal_bonus].ninteger;
@ -1182,10 +1184,10 @@ int AtomVecBody::unpack_restart(double *buf)
inertia[2] = buf[m++]; inertia[2] = buf[m++];
bonus[nlocal_bonus].ninteger = static_cast<int> (buf[m++]); bonus[nlocal_bonus].ninteger = static_cast<int> (buf[m++]);
bonus[nlocal_bonus].ndouble = static_cast<int> (buf[m++]); bonus[nlocal_bonus].ndouble = static_cast<int> (buf[m++]);
memory->create(bonus[nlocal_bonus].ivalue,bonus[nlocal_bonus].ninteger, bonus[nlocal_bonus].ivalue = icp->get(bonus[nlocal_bonus].ninteger,
"body:ivalue"); bonus[nlocal_bonus].iindex);
memory->create(bonus[nlocal_bonus].dvalue,bonus[nlocal_bonus].ndouble, bonus[nlocal_bonus].dvalue = dcp->get(bonus[nlocal_bonus].ndouble,
"body:dvalue"); bonus[nlocal_bonus].dindex);
memcpy(bonus[nlocal_bonus].ivalue,&buf[m], memcpy(bonus[nlocal_bonus].ivalue,&buf[m],
bonus[nlocal_bonus].ninteger*sizeof(int)); bonus[nlocal_bonus].ninteger*sizeof(int));
if (intdoubleratio == 1) m += bonus[nlocal_bonus].ninteger; if (intdoubleratio == 1) m += bonus[nlocal_bonus].ninteger;
@ -1399,6 +1401,7 @@ bigint AtomVecBody::memory_usage()
if (atom->memcheck("body")) bytes += memory->usage(body,nmax); if (atom->memcheck("body")) bytes += memory->usage(body,nmax);
bytes += nmax_bonus*sizeof(Bonus); bytes += nmax_bonus*sizeof(Bonus);
bytes += icp->size + dcp->size;
int nall = nlocal_bonus + nghost_bonus; int nall = nlocal_bonus + nghost_bonus;
for (int i = 0; i < nall; i++) { for (int i = 0; i < nall; i++) {

View File

@ -21,16 +21,11 @@ AtomStyle(body,AtomVecBody)
#define LMP_ATOM_VEC_BODY_H #define LMP_ATOM_VEC_BODY_H
#include "atom_vec.h" #include "atom_vec.h"
#include "my_pool.h"
namespace LAMMPS_NS { namespace LAMMPS_NS {
class AtomVecBody : public AtomVec { class AtomVecBody : public AtomVec {
friend class Comm;
public: public:
class Body *bptr; class Body *bptr;
@ -38,6 +33,7 @@ class AtomVecBody : public AtomVec {
double quat[4]; double quat[4];
double inertia[3]; double inertia[3];
int ninteger,ndouble; int ninteger,ndouble;
int iindex,dindex;
int *ivalue; int *ivalue;
double *dvalue; double *dvalue;
int ilocal; int ilocal;
@ -100,6 +96,9 @@ class AtomVecBody : public AtomVec {
int copyflag; int copyflag;
int intdoubleratio; // sizeof(double) / sizeof(int) int intdoubleratio; // sizeof(double) / sizeof(int)
MyPool<int> *icp;
MyPool<double> *dcp;
void grow_bonus(); void grow_bonus();
void copy_bonus(int, int); void copy_bonus(int, int);
//void check(int); //void check(int);

View File

@ -16,11 +16,15 @@
#include "pointers.h" #include "pointers.h"
#include "atom_vec_body.h" #include "atom_vec_body.h"
#include "my_pool.h"
namespace LAMMPS_NS { namespace LAMMPS_NS {
class Body : protected Pointers { class Body : protected Pointers {
public: public:
MyPool<int> *icp;
MyPool<double> *dcp;
char *style; char *style;
int size_forward; // max extra values packed for comm int size_forward; // max extra values packed for comm
int size_border; // max extra values packed for border comm int size_border; // max extra values packed for border comm

View File

@ -102,10 +102,6 @@ The atom style being used does not specify an atom diameter.
E: Fix adapt requires atom attribute charge E: Fix adapt requires atom attribute charge
UNDOCUMENTED
U: Fix adapt requires atom attribute charge
The atom style being used does not specify an atom charge. The atom style being used does not specify an atom charge.
*/ */

View File

@ -84,8 +84,4 @@ E: Cannot open fix balance output file
Self-explanatory. Self-explanatory.
U: Cannot yet use fix balance with PPPM
This is a current limitation of LAMMPS.
*/ */

View File

@ -127,7 +127,9 @@ then the y dimension must be periodic.
E: Cannot use fix box/relax with tilt factor scaling on a 2nd non-periodic dimension E: Cannot use fix box/relax with tilt factor scaling on a 2nd non-periodic dimension
UNDOCUMENTED When specifying scaling on a tilt factor component, the 2nd of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic.
E: Cannot use fix box/relax with both relaxation and scaling on a tilt factor E: Cannot use fix box/relax with both relaxation and scaling on a tilt factor
@ -191,10 +193,4 @@ E: Fix_modify pressure ID does not compute pressure
The compute ID assigned to the fix must compute pressure. The compute ID assigned to the fix must compute pressure.
U: Cannot use fix box/relax with tilt factor scaling on a 2nd non-periodic dimension"
When specifying scaling on a tilt factor component, the 2nd of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic.
*/ */

View File

@ -124,7 +124,7 @@ void FixHeat::init()
if (hvar < 0) if (hvar < 0)
error->all(FLERR,"Variable name for fix heat does not exist"); error->all(FLERR,"Variable name for fix heat does not exist");
if (input->variable->equalstyle(hvar)) hstyle = EQUAL; if (input->variable->equalstyle(hvar)) hstyle = EQUAL;
else if (input->variable->equalstyle(hvar)) hstyle = ATOM; else if (input->variable->atomstyle(hvar)) hstyle = ATOM;
else error->all(FLERR,"Variable for fix heat is invalid style"); else error->all(FLERR,"Variable for fix heat is invalid style");
} }

View File

@ -67,11 +67,11 @@ Self-explanatory.
E: Variable name for fix heat does not exist E: Variable name for fix heat does not exist
UNDOCUMENTED Self-explanatory.
E: Variable for fix heat is invalid style E: Variable for fix heat is invalid style
UNDOCUMENTED Only equal-style or atom-style variables can be used.
E: Fix heat group has no atoms E: Fix heat group has no atoms
@ -84,6 +84,7 @@ heat to be invalid.
E: Fix heat kinetic energy of an atom went negative E: Fix heat kinetic energy of an atom went negative
UNDOCUMENTED This will cause the velocity rescaling about to be performed by fix
heat to be invalid.
*/ */

View File

@ -114,7 +114,7 @@ set to lattice.
E: Zero length rotation vector with fix move E: Zero length rotation vector with fix move
UNDOCUMENTED Self-explanatory.
E: Variable name for fix move does not exist E: Variable name for fix move does not exist
@ -132,8 +132,4 @@ E: Resetting timestep is not allowed with fix move
This is because fix move is moving atoms based on elapsed time. This is because fix move is moving atoms based on elapsed time.
U: Fix move cannot have 0 length rotation vector
Self-explanatory.
*/ */

View File

@ -602,7 +602,7 @@ void FixNH::init()
int icompute = modify->find_compute(id_temp); int icompute = modify->find_compute(id_temp);
if (icompute < 0) if (icompute < 0)
error->all(FLERR,"Temperature ID for fix nvt/nph/npt does not exist"); error->all(FLERR,"Temperature ID for fix nvt/npt does not exist");
temperature = modify->compute[icompute]; temperature = modify->compute[icompute];
if (temperature->tempbias) which = BIAS; if (temperature->tempbias) which = BIAS;

View File

@ -218,7 +218,7 @@ E: Cannot use fix npt and fix deform on same component of stress tensor
This would be changing the same box dimension twice. This would be changing the same box dimension twice.
E: Temperature ID for fix nvt/nph/npt does not exist E: Temperature ID for fix nvt/npt does not exist
Self-explanatory. Self-explanatory.

View File

@ -101,6 +101,6 @@ Only equal-style variables can be used.
E: Variable evaluation in fix wall gave bad value E: Variable evaluation in fix wall gave bad value
UNDOCUMENTED The returned value for epsilon or sigma < 0.0.
*/ */

View File

@ -118,11 +118,11 @@ A region ID used in the group command does not exist.
E: Variable name for group does not exist E: Variable name for group does not exist
UNDOCUMENTED Self-explanatory.
E: Variable for group is invalid style E: Variable for group is invalid style
UNDOCUMENTED Only atom-style variables can be used.
E: Group ID does not exist E: Group ID does not exist

View File

@ -220,7 +220,8 @@ or create_box command.
E: Box command after simulation box is defined E: Box command after simulation box is defined
UNDOCUMENTED The box command cannot be used after a read_data, read_restart, or
create_box command.
E: Dihedral_coeff command before simulation box is defined E: Dihedral_coeff command before simulation box is defined
@ -324,12 +325,4 @@ E: Units command after simulation box is defined
The units command cannot be used after a read_data, read_restart, or The units command cannot be used after a read_data, read_restart, or
create_box command. create_box command.
U: Input line too long: %s
This is a hard (very large) limit defined in the input.cpp file.
U: Input line too long after variable substitution
This is a hard (very large) limit defined in the input.cpp file.
*/ */

View File

@ -158,11 +158,15 @@ class KSpace : protected Pointers {
E: KSpace solver requires a pair style E: KSpace solver requires a pair style
UNDOCUMENTED No pair style is defined.
E: KSpace style is incompatible with Pair style E: KSpace style is incompatible with Pair style
UNDOCUMENTED The Ewald and PPPM solvers work with pair styles with a "coul/long" in
their name. The MSM solver with pair styles with a "coul/msm" in
their name, The dispersion solvers with pair styles with a "lj/long"
in the name. The TIP4P solvers with pair styles with a "tip4p" in the
name.
W: For better accuracy use 'pair_modify table 0' W: For better accuracy use 'pair_modify table 0'

View File

@ -150,8 +150,4 @@ E: Cannot use -cuda on without USER-CUDA installed
The USER-CUDA package must be installed via "make yes-user-cuda" The USER-CUDA package must be installed via "make yes-user-cuda"
before LAMMPS is built. before LAMMPS is built.
U: 64-bit atom IDs are not yet supported
See description of this data type in src/lmptype.h.
*/ */

View File

@ -49,10 +49,13 @@ void lammps_scatter_atoms(void *, char *, int, int, void *);
W: Library error in lammps_gather_atoms W: Library error in lammps_gather_atoms
UNDOCUMENTED This library function cannot be used if atom IDs are not defined
or are not consecutively numbered.
W: Library error in lammps_scatter_atoms W: Library error in lammps_scatter_atoms
UNDOCUMENTED This library function cannot be used if atom IDs are not defined or
are not consecutively numbered, or if no atom map is defined. See the
atom_modify command for details about atom maps.
*/ */

View File

@ -21,7 +21,9 @@ short or the bond has blown apart and an atom is too far away.
E: Bond extent > half of periodic box length E: Bond extent > half of periodic box length
UNDOCUMENTED This error was detected by the neigh_modify check yes setting. It is
an error because the bond atoms are so far apart it is ambiguous how
it should be defined.
E: Angle atoms %d %d %d missing on proc %d at step %ld E: Angle atoms %d %d %d missing on proc %d at step %ld
@ -32,7 +34,9 @@ too far away.
E: Angle extent > half of periodic box length E: Angle extent > half of periodic box length
UNDOCUMENTED This error was detected by the neigh_modify check yes setting. It is
an error because the angle atoms are so far apart it is ambiguous how
it should be defined.
E: Dihedral atoms %d %d %d %d missing on proc %d at step %ld E: Dihedral atoms %d %d %d %d missing on proc %d at step %ld
@ -43,7 +47,9 @@ too far away.
E: Dihedral/improper extent > half of periodic box length E: Dihedral/improper extent > half of periodic box length
UNDOCUMENTED This error was detected by the neigh_modify check yes setting. It is
an error because the dihedral atoms are so far apart it is ambiguous
how it should be defined.
E: Improper atoms %d %d %d %d missing on proc %d at step %ld E: Improper atoms %d %d %d %d missing on proc %d at step %ld

View File

@ -331,7 +331,13 @@ Atom types must range from 1 to Ntypes inclusive.
W: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies W: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies
UNDOCUMENTED This is because excluding specific pair interactions also excludes
them from long-range interactions which may not be the desired effect.
The special_bonds command handles this consistently by insuring
excluded (or weighted) 1-2, 1-3, 1-4 interactions are treated
consistently by both the short-range pair style and the long-range
solver. This is not done for exclusions of charged atom pairs via the
neigh_modify exclude command.
E: Neighbor include group not allowed with ghost neighbors E: Neighbor include group not allowed with ghost neighbors

View File

@ -238,7 +238,7 @@ pair_coeff command before running a simulation.
E: Pair style requres a KSpace style E: Pair style requres a KSpace style
UNDOCUMENTED No kspace style is defined.
E: Pair style does not support pair_write E: Pair style does not support pair_write

View File

@ -57,11 +57,13 @@ class PairCoulDSF : public Pair {
E: Illegal ... command E: Illegal ... command
UNDOCUMENTED 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: Incorrect args for pair coefficients E: Incorrect args for pair coefficients
UNDOCUMENTED Self-explanatory. Check the input script or data file.
E: Pair style coul/dsf requires atom attribute q E: Pair style coul/dsf requires atom attribute q

View File

@ -62,14 +62,16 @@ class PairLJCutCoulDSF : public Pair {
E: Illegal ... command E: Illegal ... command
UNDOCUMENTED 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: Incorrect args for pair coefficients E: Incorrect args for pair coefficients
UNDOCUMENTED Self-explanatory. Check the input script or data file.
E: Pair style lj/cut/coul/dsf requires atom attribute q E: Pair style lj/cut/coul/dsf requires atom attribute q
UNDOCUMENTED The atom style defined does not have these attributes.
*/ */

View File

@ -139,11 +139,11 @@ The Atoms section of a data file must come before a Triangles section.
E: Invalid data file section: Bodies E: Invalid data file section: Bodies
UNDOCUMENTED Atom style does not allow bodies.
E: Must read Atoms before Bodies E: Must read Atoms before Bodies
UNDOCUMENTED The Atoms section of a data file must come before a Bodies section.
E: Invalid data file section: Bonds E: Invalid data file section: Bonds
@ -319,7 +319,7 @@ Self-explanatory. Check data file.
E: No bodies allowed with this atom style E: No bodies allowed with this atom style
UNDOCUMENTED Self-explanatory. Check data file.
E: System in data file is too big E: System in data file is too big
@ -369,7 +369,8 @@ Atom IDs must be positive integers.
E: Too many lines in one body in data file - boost MAXBODY E: Too many lines in one body in data file - boost MAXBODY
UNDOCUMENTED MAXBODY is a setting at the top of the src/read_data.cpp file.
Set it larger and re-compile the code.
E: Bonds assigned incorrectly E: Bonds assigned incorrectly

View File

@ -96,7 +96,8 @@ private:
E: Read_dump command before simulation box is defined E: Read_dump command before simulation box is defined
UNDOCUMENTED The read_dump command cannot be used before a read_data, read_restart,
or create_box command.
E: Illegal ... command E: Illegal ... command

View File

@ -68,14 +68,14 @@ create_box command has been used.
E: Variable evaluation in region gave bad value E: Variable evaluation in region gave bad value
UNDOCUMENTED Variable returned a radius < 0.0.
E: Variable name for region cylinder does not exist E: Variable name for region cylinder does not exist
UNDOCUMENTED Self-explanatory.
E: Variable for region cylinder is invalid style E: Variable for region cylinder is invalid style
UNDOCUMENTED Only equal-style varaibles are allowed.
*/ */

View File

@ -58,14 +58,14 @@ command-line option when running LAMMPS to see the offending line.
E: Variable evaluation in region gave bad value E: Variable evaluation in region gave bad value
UNDOCUMENTED Variable returned a radius < 0.0.
E: Variable name for region sphere does not exist E: Variable name for region sphere does not exist
UNDOCUMENTED Self-explanatory.
E: Variable for region sphere is invalid style E: Variable for region sphere is invalid style
UNDOCUMENTED Only equal-style varaibles are allowed.
*/ */

View File

@ -138,7 +138,7 @@ originally an equal-style variable.
E: File variable could not read value E: File variable could not read value
UNDOCUMENTED Check the file assigned to the variable.
E: Variable name must be alphanumeric or underscore characters E: Variable name must be alphanumeric or underscore characters
@ -226,7 +226,9 @@ Variable name is not recognized.
E: Variable has circular dependency E: Variable has circular dependency
UNDOCUMENTED A circular dependency is when variable "a" in used by variable "b" and
variable "b" is also used by varaible "a". Circular dependencies with
longer chains of dependence are also not allowed.
E: Invalid variable evaluation in variable formula E: Invalid variable evaluation in variable formula
@ -257,7 +259,7 @@ Self-explanatory.
E: Modulo 0 in variable formula E: Modulo 0 in variable formula
UNDOCUMENTED Self-explanatory.
E: Power by 0 in variable formula E: Power by 0 in variable formula
@ -346,11 +348,11 @@ Grmask is per-atom operation.
E: Variable ID in variable formula does not exist E: Variable ID in variable formula does not exist
UNDOCUMENTED Self-explanatory.
E: Invalid variable in special function next E: Invalid variable in special function next
UNDOCUMENTED Only file-style variables can be used with the next() function.
E: Indexed per-atom vector in variable formula without atom map E: Indexed per-atom vector in variable formula without atom map
@ -382,6 +384,7 @@ Self-explanatory.
E: Cannot open file variable file %s E: Cannot open file variable file %s
UNDOCUMENTED The specified file cannot be opened. Check that the path and name are
correct.
*/ */

View File

@ -1 +1 @@
#define LAMMPS_VERSION "4 Mar 2013" #define LAMMPS_VERSION "22 Feb 2013"