Merge pull request #1409 from akohlmey/collected-small-changes

Collected small changes and bugfixes for the next patch release
This commit is contained in:
Axel Kohlmeyer 2019-04-05 15:39:16 -04:00 committed by GitHub
commit ac7312caf1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 177 additions and 115 deletions

View File

@ -367,7 +367,7 @@ if(PKG_KSPACE)
endif()
endif()
if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE)
if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-PLUMED OR PKG_USER-QUIP OR PKG_LATTE)
find_package(LAPACK)
find_package(BLAS)
if(NOT LAPACK_FOUND OR NOT BLAS_FOUND)
@ -577,8 +577,8 @@ if(PKG_USER-PLUMED)
message(STATUS "PLUMED download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(plumed_build
URL https://github.com/plumed/plumed2/releases/download/v2.4.4/plumed-src-2.4.4.tgz
URL_MD5 71ed465bdc7c2059e282dbda8d564e71
URL https://github.com/plumed/plumed2/releases/download/v2.5.1/plumed-src-2.5.1.tgz
URL_MD5 c2a7b519e32197a120cdf47e0f194f81
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
${CONFIGURE_REQUEST_PIC}
@ -593,10 +593,9 @@ if(PKG_USER-PLUMED)
list(APPEND LAMMPS_DEPS plumed_build)
if(PLUMED_MODE STREQUAL "STATIC")
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/plumed/obj/kernel.o
"${PLUMED_INSTALL_DIR}/lib/plumed/obj/PlumedStatic.o" ${GSL_LIBRARIES} ${CMAKE_DL_LIBS})
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${GSL_LIBRARIES} ${LAPACK_LIBRARIES} ${CMAKE_DL_LIBS})
elseif(PLUMED_MODE STREQUAL "SHARED")
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so ${CMAKE_DL_LIBS})
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so ${PLUMED_INSTALL_DIR}/lib/libplumedKernel.so ${CMAKE_DL_LIBS})
elseif(PLUMED_MODE STREQUAL "RUNTIME")
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel.so)
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS})

View File

@ -148,7 +148,7 @@ END_RST -->
<!-- HTML_ONLY -->
"CHARMM, AMBER, and DREIDING force fields"_Howto_bioFF.html
"CHARMM, AMBER, COMPASS, and DREIDING force fields"_Howto_bioFF.html
"TIP3P water model"_Howto_tip3p.html
"TIP4P water model"_Howto_tip4p.html
"SPC water model"_Howto_spc.html :all(b)

View File

@ -7,29 +7,31 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
:line
CHARMM, AMBER, and DREIDING force fields :h3
CHARMM, AMBER, COMPASS, and DREIDING force fields :h3
A force field has 2 parts: the formulas that define it and the
coefficients used for a particular system. Here we only discuss
formulas implemented in LAMMPS that correspond to formulas commonly
used in the CHARMM, AMBER, and DREIDING force fields. Setting
coefficients is done in the input data file via the
"read_data"_read_data.html command or in the input script with
used in the CHARMM, AMBER, COMPASS, and DREIDING force fields. Setting
coefficients is done either from special sections in an input data file
via the "read_data"_read_data.html command or in the input script with
commands like "pair_coeff"_pair_coeff.html or
"bond_coeff"_bond_coeff.html. See the "Tools"_Tools.html doc page for
additional tools that can use CHARMM or AMBER to assign force field
coefficients and convert their output into LAMMPS input.
"bond_coeff"_bond_coeff.html and so on. See the "Tools"_Tools.html doc
page for additional tools that can use CHARMM, AMBER, or Materials
Studio generated files to assign force field coefficients and convert
their output into LAMMPS input.
See "(MacKerell)"_#howto-MacKerell for a description of the CHARMM force
field. See "(Cornell)"_#howto-Cornell for a description of the AMBER force
field.
field. See "(Cornell)"_#howto-Cornell for a description of the AMBER
force field. See "(Sun)"_#howto-Sun for a description of the COMPASS
force field.
:link(charmm,http://www.scripps.edu/brooks)
:link(amber,http://amber.scripps.edu)
These style choices compute force field formulas that are consistent
with common options in CHARMM or AMBER. See each command's
documentation for the formula it computes.
The interaction styles listed below compute force field formulas that
are consistent with common options in CHARMM or AMBER. See each
command's documentation for the formula it computes.
"bond_style"_bond_harmonic.html harmonic
"angle_style"_angle_charmm.html charmm
@ -44,28 +46,54 @@ documentation for the formula it computes.
"special_bonds"_special_bonds.html charmm
"special_bonds"_special_bonds.html amber :ul
NOTE: For CHARMM, newer {charmmfsw} or {charmmfsh} styles were
released in March 2017. We recommend they be used instead of the
older {charmm} styles. See discussion of the differences on the "pair
charmm"_pair_charmm.html and "dihedral charmm"_dihedral_charmm.html
doc pages.
NOTE: For CHARMM, newer {charmmfsw} or {charmmfsh} styles were released
in March 2017. We recommend they be used instead of the older {charmm}
styles. See discussion of the differences on the "pair
charmm"_pair_charmm.html and "dihedral charmm"_dihedral_charmm.html doc
pages.
COMPASS is a general force field for atomistic simulation of common
organic molecules, inorganic small molecules, and polymers which was
developed using ab initio and empirical parameterization techniques.
See the "Tools"_Tools.html doc page for the msi2lmp tool for creating
LAMMPS template input and data files from BIOVIAs Materials Studio
files. Please note that the msi2lmp tool is very old and largely
unmaintained, so it does not support all features of Materials Studio
provided force field files, especially additions during the last decade.
You should watch the output carefully and compare results, where
possible. See "(Sun)"_#howto-Sun for a description of the COMPASS force
field.
These interaction styles listed below compute force field formulas that
are consistent with the COMPASS force field. See each command's
documentation for the formula it computes.
"bond_style"_bond_class2.html class2
"angle_style"_angle_class2.html class2
"dihedral_style"_dihedral_class2.html class2
"improper_style"_improper_class2.html class2 :ul
"pair_style"_pair_class2.html lj/class2
"pair_style"_pair_class2.html lj/class2/coul/cut
"pair_style"_pair_class2.html lj/class2/coul/long :ul
"special_bonds"_special_bonds.html lj/coul 0 0 1 :ul
DREIDING is a generic force field developed by the "Goddard
group"_http://www.wag.caltech.edu at Caltech and is useful for
predicting structures and dynamics of organic, biological and
main-group inorganic molecules. The philosophy in DREIDING is to use
general force constants and geometry parameters based on simple
hybridization considerations, rather than individual force constants
and geometric parameters that depend on the particular combinations of
atoms involved in the bond, angle, or torsion terms. DREIDING has an
"explicit hydrogen bond term"_pair_hbond_dreiding.html to describe
interactions involving a hydrogen atom on very electronegative atoms
(N, O, F).
predicting structures and dynamics of organic, biological and main-group
inorganic molecules. The philosophy in DREIDING is to use general force
constants and geometry parameters based on simple hybridization
considerations, rather than individual force constants and geometric
parameters that depend on the particular combinations of atoms involved
in the bond, angle, or torsion terms. DREIDING has an "explicit hydrogen
bond term"_pair_hbond_dreiding.html to describe interactions involving a
hydrogen atom on very electronegative atoms (N, O, F).
See "(Mayo)"_#howto-Mayo for a description of the DREIDING force field
These style choices compute force field formulas that are consistent
with the DREIDING force field. See each command's
The interaction styles listed below compute force field formulas that
are consistent with the DREIDING force field. See each command's
documentation for the formula it computes.
"bond_style"_bond_harmonic.html harmonic
@ -100,6 +128,9 @@ Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
[(Cornell)] Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
:link(howto-Sun)
[(Sun)] Sun, J. Phys. Chem. B, 102, 73387364 (1998).
:link(howto-Mayo)
[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).

View File

@ -10,7 +10,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
TIP3P water model :h3
The TIP3P water model as implemented in CHARMM
"(MacKerell)"_#howto-MacKerell specifies a 3-site rigid water molecule with
"(MacKerell)"_#howto-tip3p specifies a 3-site rigid water molecule with
charges and Lennard-Jones parameters assigned to each of the 3 atoms.
In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
the two O-H bonds and the H-O-H angle rigid. A bond style of
@ -60,6 +60,10 @@ models"_http://en.wikipedia.org/wiki/Water_model.
:line
:link(howto-tip3p)
[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
:link(Jorgensen1)
[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
Phys, 79, 926 (1983).

View File

@ -1136,6 +1136,7 @@ infty
inhomogeneities
inhomogeneous
init
initio
initializations
InP
inregion
@ -2814,6 +2815,7 @@ unimodal
unitless
Universite
unix
unmaintained
unoptimized
unpadded
unphysical

View File

@ -17,7 +17,7 @@ parser = ArgumentParser(prog='Install.py',
# settings
version = "2.4.4"
version = "2.5.1"
mode = "static"
# help message
@ -43,6 +43,7 @@ checksums = { \
'2.4.3' : 'b1be7c48971627febc11c61b70767fc5', \
'2.4.4' : '71ed465bdc7c2059e282dbda8d564e71', \
'2.5.0' : '6224cd089493661e19ceacccd35cf911', \
'2.5.1' : 'c2a7b519e32197a120cdf47e0f194f81', \
}
# parse and process arguments
@ -67,6 +68,7 @@ if not args.build and not args.path:
buildflag = args.build
pathflag = args.path is not None
plumedpath = args.path
mode = args.mode
homepath = fullpath('.')
homedir = "%s/plumed2" % (homepath)
@ -75,6 +77,8 @@ if pathflag:
if not os.path.isdir(plumedpath):
sys.exit("Plumed2 path %s does not exist" % plumedpath)
homedir = fullpath(plumedpath)
if not os.path.isdir(os.path.join(homedir, 'include', 'plumed', 'core')):
sys.exit("No Plumed2 installation found at %s" % plumedpath)
# download and unpack plumed2 tarball
@ -127,7 +131,7 @@ if os.path.isfile("Makefile.lammps.%s" % mode):
lines1 = open(plumedinc, 'r').readlines()
lines2 = open("Makefile.lammps.%s" % mode, 'r').readlines()
fp = open("Makefile.lammps", 'w')
fp.write(os.path.join("PLUMED_LIBDIR=", homedir, "lib\n"))
fp.write("PLUMED_LIBDIR=" + os.path.join(homedir, "lib\n"))
for line in lines1:
fp.write(line)
for line in lines2:

View File

@ -481,7 +481,7 @@ void PairKIM::init_style()
for (int i = 0; i < kim_number_of_neighbor_lists; ++i)
{
lmps_stripped_neigh_ptr[i]
= &(lmps_stripped_neigh_list[(i-1)*(neighbor->oneatom)]);
= &(lmps_stripped_neigh_list[i*(neighbor->oneatom)]);
}
}

View File

@ -99,8 +99,8 @@ void FixTuneKspace::init()
error->all(FLERR,"Cannot use fix tune/kspace with dipole long-range solver");
double old_acc = force->kspace->accuracy/force->kspace->two_charge_force;
char old_acc_str[12];
sprintf(old_acc_str,"%g",old_acc);
char old_acc_str[16];
snprintf(old_acc_str,16,"%g",old_acc);
strcpy(new_acc_str,old_acc_str);
int itmp;
@ -210,8 +210,8 @@ void FixTuneKspace::store_old_kspace_settings()
strcpy(old_kspace_style,force->kspace_style);
strcpy(new_kspace_style,old_kspace_style);
double old_acc = force->kspace->accuracy_relative;
char old_acc_str[12];
sprintf(old_acc_str,"%g",old_acc);
char old_acc_str[16];
snprintf(old_acc_str,16,"%g",old_acc);
strcpy(new_pair_style,force->pair_style);
strcpy(base_pair_style,force->pair_style);
char *trunc;

View File

@ -800,26 +800,27 @@ void FixBondBreak::print_bb()
for (int i = 0; i < atom->nlocal; i++) {
printf("TAG " TAGINT_FORMAT ": %d nbonds: ",atom->tag[i],atom->num_bond[i]);
for (int j = 0; j < atom->num_bond[i]; j++) {
printf(" %d",atom->bond_atom[i][j]);
printf(" " TAGINT_FORMAT, atom->bond_atom[i][j]);
}
printf("\n");
printf("TAG " TAGINT_FORMAT ": %d nangles: ",atom->tag[i],atom->num_angle[i]);
for (int j = 0; j < atom->num_angle[i]; j++) {
printf(" %d %d %d,",atom->angle_atom1[i][j],
atom->angle_atom2[i][j],atom->angle_atom3[i][j]);
printf(" " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT ",",
atom->angle_atom1[i][j],atom->angle_atom2[i][j],
atom->angle_atom3[i][j]);
}
printf("\n");
printf("TAG " TAGINT_FORMAT ": %d ndihedrals: ",atom->tag[i],atom->num_dihedral[i]);
for (int j = 0; j < atom->num_dihedral[i]; j++) {
printf(" %d %d %d %d,",atom->dihedral_atom1[i][j],
atom->dihedral_atom2[i][j],atom->dihedral_atom3[i][j],
atom->dihedral_atom4[i][j]);
printf(" " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT ",",
atom->dihedral_atom1[i][j],atom->dihedral_atom2[i][j],
atom->dihedral_atom3[i][j],atom->dihedral_atom4[i][j]);
}
printf("\n");
printf("TAG " TAGINT_FORMAT ": %d %d %d nspecial: ",atom->tag[i],
atom->nspecial[i][0],atom->nspecial[i][1],atom->nspecial[i][2]);
for (int j = 0; j < atom->nspecial[i][2]; j++) {
printf(" %d",atom->special[i][j]);
printf(" " TAGINT_FORMAT, atom->special[i][j]);
}
printf("\n");
}
@ -830,7 +831,7 @@ void FixBondBreak::print_bb()
void FixBondBreak::print_copy(const char *str, tagint m,
int n1, int n2, int n3, int *v)
{
printf("%s %i: %d %d %d nspecial: ",str,m,n1,n2,n3);
printf("%s " TAGINT_FORMAT ": %d %d %d nspecial: ",str,m,n1,n2,n3);
for (int j = 0; j < n3; j++) printf(" %d",v[j]);
printf("\n");
}

View File

@ -191,8 +191,6 @@ void FixHyperGlobal::pre_neighbor()
for (i = 0; i < nall_old; i++) old2now[i] = -1;
double **x = atom->x;
for (m = 0; m < nblocal; m++) {
iold = blist[m].iold;
jold = blist[m].jold;

View File

@ -353,8 +353,6 @@ void FixHyperLocal::pre_neighbor()
for (i = 0; i < nall_old; i++) old2now[i] = -1;
double **x = atom->x;
for (m = 0; m < nblocal; m++) {
iold = blist[m].iold;
jold = blist[m].jold;
@ -407,7 +405,7 @@ void FixHyperLocal::pre_neighbor()
void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */)
{
int i,j,m,ii,jj,inum,jnum,iold,jold,ibond,nbond,ijhalf,ncount;
double xtmp,ytmp,ztmp,delx,dely,delz;
double delx,dely,delz;
double r,r0,estrain,emax,ebias,vbias,fbias,fbiasr;
double halfstrain,selfstrain;
int *ilist,*jlist,*numneigh,**firstneigh;
@ -811,7 +809,7 @@ void FixHyperLocal::min_pre_neighbor()
void FixHyperLocal::build_bond_list(int natom)
{
int i,j,ii,jj,m,n,iold,jold,ilocal,jlocal,inum,jnum,nbond;
tagint itag,jtag;
tagint jtag;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq,distsq,oldcoeff;
int *ilist,*jlist,*numneigh,**firstneigh;
@ -1006,7 +1004,6 @@ void FixHyperLocal::build_bond_list(int natom)
ytmp = x[i][1];
ztmp = x[i][2];
itag = tag[i];
tagold[i] = tag[i];
jlist = firstneigh[i];
@ -1420,7 +1417,6 @@ double FixHyperLocal::compute_vector(int i)
}
if (i == 4) {
const int nlocal = atom->nlocal;
bigint allneigh,thisneigh;
thisneigh = listfull->ipage->ndatum;
MPI_Allreduce(&thisneigh,&allneigh,1,MPI_LMP_BIGINT,MPI_SUM,world);

View File

@ -268,7 +268,7 @@ void Hyper::command(int narg, char **arg)
double nnewbond,avenbias,avebiascoeff,minbiascoeff,maxbiascoeff;
double maxbondperatom,neighbondperbond,avebiasnow;
double tbondbuild,rmaxever,rmaxeverbig,allghost_toofar;
double lostbond,lostbondcoeff,biasoverlap;
double biasoverlap;
if (hyperenable) {
t_hyper = fix_hyper->query(1);

View File

@ -645,7 +645,7 @@ void FixColvars::setup(int vflag)
/* ---------------------------------------------------------------------- */
/* Main colvars handler:
* Send coodinates and add colvar forces to atoms. */
void FixColvars::post_force(int vflag)
void FixColvars::post_force(int /*vflag*/)
{
// some housekeeping: update status of the proxy as needed.
if (me == 0) {
@ -816,7 +816,7 @@ void FixColvars::min_post_force(int vflag)
}
/* ---------------------------------------------------------------------- */
void FixColvars::post_force_respa(int vflag, int ilevel, int iloop)
void FixColvars::post_force_respa(int vflag, int ilevel, int /*iloop*/)
{
/* only process colvar forces on the outmost RESPA level. */
if (ilevel == nlevels_respa-1) post_force(vflag);

View File

@ -559,7 +559,8 @@ void FixNVEManifoldRattle::rattle_manifold_x(double *x, double *v,
if (iters >= max_iter && res > tolerance) {
char msg[2048];
sprintf(msg,"Failed to constrain atom %d (x = (%f, %f, %f)! res = %e, iters = %d\n",
sprintf(msg,"Failed to constrain atom " TAGINT_FORMAT
" (x = (%f, %f, %f)! res = %e, iters = %d\n",
tagi, x[0], x[1], x[2], res, iters);
error->one(FLERR,msg);
}
@ -652,7 +653,8 @@ void FixNVEManifoldRattle::rattle_manifold_v(double *v, double *f,
if (iters >= max_iter && res >= tolerance) {
char msg[2048];
sprintf(msg,"Failed to constrain atom %d (x = (%f, %f, %f)! res = %e, iters = %d\n",
sprintf(msg,"Failed to constrain atom " TAGINT_FORMAT
" (x = (%f, %f, %f)! res = %e, iters = %d\n",
tagi, x[0], x[1], x[2], res, iters);
error->all(FLERR,msg);
}

View File

@ -343,6 +343,15 @@ void PairReaxCOMP::init_style( )
if (force->newton_pair == 0)
error->all(FLERR,"Pair style reax/c/omp requires newton pair on");
if ((atom->map_tag_max > 99999999) && (comm->me == 0))
error->warning(FLERR,"Some Atom-IDs are too large. Pair style reax/c/omp "
"native output files may get misformatted or corrupted");
// because system->bigN is an int, we cannot have more atoms than MAXSMALLINT
if (atom->natoms > MAXSMALLINT)
error->all(FLERR,"Too many atoms for pair style reax/c/omp");
// need a half neighbor list w/ Newton off and ghost neighbors
// built whenever re-neighboring occurs

View File

@ -41,7 +41,7 @@ FixReaxC::FixReaxC(LAMMPS *lmp,int narg, char **arg) :
{
// perform initial allocation of atom-based arrays
// register with atom class
oldnmax = 0;
num_bonds = NULL;
num_hbonds = NULL;

View File

@ -90,8 +90,7 @@ PairReaxC::PairReaxC(LAMMPS *lmp) : Pair(lmp)
mpi_data = (mpi_datatypes *)
memory->smalloc(sizeof(mpi_datatypes),"reax:mpi");
MPI_Comm_rank(world,&system->my_rank);
control->me = system->my_rank;
control->me = system->my_rank = comm->me;
system->my_coords[0] = 0;
system->my_coords[1] = 0;
@ -383,6 +382,14 @@ void PairReaxC::init_style( )
error->all(FLERR,"Pair style reax/c requires atom IDs");
if (force->newton_pair == 0)
error->all(FLERR,"Pair style reax/c requires newton pair on");
if ((atom->map_tag_max > 99999999) && (comm->me == 0))
error->warning(FLERR,"Some Atom-IDs are too large. Pair style reax/c "
"native output files may get misformatted or corrupted");
// because system->bigN is an int, we cannot have more atoms than MAXSMALLINT
if (atom->natoms > MAXSMALLINT)
error->all(FLERR,"Too many atoms for pair style reax/c");
// need a half neighbor list w/ Newton off and ghost neighbors
// built whenever re-neighboring occurs

View File

@ -151,7 +151,7 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax,
/* Sanity checks */
if (c == 2 && !lgflag)
control->error_ptr->all(FLERR, "Force field file requires using 'lgvdw yes'");
if (c < 9) {
snprintf (errmsg, 1024, "Missing parameter(s) in line %s", s);
control->error_ptr->all(FLERR, errmsg);
@ -320,7 +320,7 @@ char Read_Force_Field( FILE *fp, reax_interaction *reax,
if (c == 2 && !lgflag) {
control->error_ptr->all(FLERR, "Force field file requires using 'lgvdw yes'");
}
l = atoi(tmp[0]);
/* a line of comments */

View File

@ -236,21 +236,21 @@ void Initialize( reax_system *system, control_params *control,
if (Init_Workspace( system, control, workspace, msg ) ==
FAILURE) {
control->error_ptr->one(FLERR,"Workspace could not be initialized");
control->error_ptr->one(FLERR,"Workspace could not be initialized");
}
if (Init_Lists( system, control, data, workspace, lists, mpi_data, msg ) ==
FAILURE) {
control->error_ptr->one(FLERR,"Lists could not be initialized");
control->error_ptr->one(FLERR,"Lists could not be initialized");
}
if (Init_Output_Files(system,control,out_control,mpi_data,msg)== FAILURE) {
control->error_ptr->one(FLERR,"Could not open output files");
control->error_ptr->one(FLERR,"Could not open output files");
}
if (control->tabulate) {
if (Init_Lookup_Tables( system, control, workspace, mpi_data, msg ) == FAILURE) {
control->error_ptr->one(FLERR,"Lookup table could not be created");
control->error_ptr->one(FLERR,"Lookup table could not be created");
}
}

View File

@ -55,8 +55,7 @@ int Init_Output_Files( reax_system *system, control_params *control,
sprintf( temp, "%s.pot", control->sim_name );
if ((out_control->pot = fopen( temp, "w" )) != NULL) {
fflush( out_control->pot );
}
else {
} else {
strcpy( msg, "init_out_controls: .pot file could not be opened\n" );
return FAILURE;
}
@ -74,8 +73,7 @@ int Init_Output_Files( reax_system *system, control_params *control,
"step", "Pint/norm[x]", "Pint/norm[y]", "Pint/norm[z]",
"Pext/Ptot[x]", "Pext/Ptot[y]", "Pext/Ptot[z]", "Pkin/V" );
fflush( out_control->prs );
}
else {
} else {
strcpy(msg,"init_out_controls: .prs file couldn't be opened\n");
return FAILURE;
}

View File

@ -144,7 +144,7 @@ void Reset_Neighbor_Lists( reax_system *system, control_params *control,
if (total_bonds >= bonds->num_intrs * DANGER_ZONE) {
workspace->realloc.bonds = 1;
if (total_bonds >= bonds->num_intrs) {
char errmsg[256];
char errmsg[256];
snprintf(errmsg, 256, "Not enough space for bonds! total=%d allocated=%d\n",
total_bonds, bonds->num_intrs);
control->error_ptr->one(FLERR, errmsg);
@ -170,7 +170,7 @@ void Reset_Neighbor_Lists( reax_system *system, control_params *control,
if (total_hbonds >= hbonds->num_intrs * 0.90/*DANGER_ZONE*/) {
workspace->realloc.hbonds = 1;
if (total_hbonds >= hbonds->num_intrs) {
char errmsg[256];
char errmsg[256];
snprintf(errmsg, 256, "Not enough space for hbonds! total=%d allocated=%d\n",
total_hbonds, hbonds->num_intrs);
control->error_ptr->one(FLERR, errmsg);

View File

@ -42,7 +42,11 @@
#define SCI_LINE "%-37s%-24g\n"
#define REAL3_LINE "%-32s%9.3f,%9.3f,%9.3f\n"
#if defined(LAMMPS_BIGBIG)
#define INIT_DESC "%9ld%3d%9s%10.3f\n" //AtomID - AtomType, AtomName, AtomMass
#else
#define INIT_DESC "%9d%3d%9s%10.3f\n" //AtomID - AtomType, AtomName, AtomMass
#endif
#define INIT_DESC_LEN 32
#define SIZE_INFO_LINE2 "%-10d%-10d\n"
@ -51,21 +55,33 @@
#define SIZE_INFO_LINE3 "%-10d%-10d%-10d\n"
#define SIZE_INFO_LEN3 31
#if defined(LAMMPS_BIGBIG)
#define ATOM_BASIC "%9ld%10.3f%10.3f%10.3f%10.3f\n" //AtomID AtomType (X Y Z) Charge
#define ATOM_wV "%9ld%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n" //AtomID (X Y Z) (Vx Vy Vz) Charge
#define ATOM_wF "%9ld%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n" //AtomID (X Y Z) (Fx Fy Fz) Charge
#define ATOM_FULL "%9ld%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n" //AtomID (X Y Z) (Vx Vy Vz) (Fx Fy Fz) Charge
#else
#define ATOM_BASIC "%9d%10.3f%10.3f%10.3f%10.3f\n" //AtomID AtomType (X Y Z) Charge
#define ATOM_BASIC_LEN 50
#define ATOM_wV "%9d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n" //AtomID (X Y Z) (Vx Vy Vz) Charge
#define ATOM_wV_LEN 80
#define ATOM_wF "%9d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n" //AtomID (X Y Z) (Fx Fy Fz) Charge
#define ATOM_wF_LEN 80
#define ATOM_FULL "%9d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n" //AtomID (X Y Z) (Vx Vy Vz) (Fx Fy Fz) Charge
#endif
#define ATOM_BASIC_LEN 50
#define ATOM_wV_LEN 80
#define ATOM_wF_LEN 80
#define ATOM_FULL_LEN 110
#if defined(LAMMPS_BIGBIG)
#define BOND_BASIC "%9ld%9ld%10.3f%10.3f\n" // Atom1 Atom2 Dist Total_BO
#define BOND_FULL "%9ld%9ld%10.3f%10.3f%10.3f%10.3f%10.3f\n" // Atom1 Atom2 Dist Total_BO BOs BOpi BOpi2
#define ANGLE_BASIC "%9ld%9ld%9ld%10.3f\n" // Atom1 Atom2 Atom3 Theta
#else
#define BOND_BASIC "%9d%9d%10.3f%10.3f\n" // Atom1 Atom2 Dist Total_BO
#define BOND_BASIC_LEN 39
#define BOND_FULL "%9d%9d%10.3f%10.3f%10.3f%10.3f%10.3f\n" // Atom1 Atom2 Dist Total_BO BOs BOpi BOpi2
#define BOND_FULL_LEN 69
#define ANGLE_BASIC "%9d%9d%9d%10.3f\n" // Atom1 Atom2 Atom3 Theta
#endif
#define BOND_BASIC_LEN 39
#define BOND_FULL_LEN 69
#define ANGLE_BASIC_LEN 38
enum ATOM_LINE_OPTS { OPT_NOATOM = 0, OPT_ATOM_BASIC = 4, OPT_ATOM_wF = 5, OPT_ATOM_wV = 6, OPT_ATOM_FULL = 7, NR_OPT_ATOM = 8 };

View File

@ -491,7 +491,7 @@ typedef struct
int lgflag;
int enobondsflag;
class LAMMPS_NS::Error *error_ptr;
int me;
int me;
} control_params;

View File

@ -308,7 +308,7 @@ void PairTlsph::PreCompute() {
*/
if ((detF[i] < DETF_MIN) || (detF[i] > DETF_MAX) || (numNeighsRefConfig[i] == 0)) {
printf("deleting particle [%d] because det(F)=%f is outside stable range %f -- %f \n", tag[i],
printf("deleting particle [" TAGINT_FORMAT "] because det(F)=%f is outside stable range %f -- %f \n", tag[i],
Fincr[i].determinant(),
DETF_MIN, DETF_MAX);
printf("nn = %d, damage=%f\n", numNeighsRefConfig[i], damage[i]);

View File

@ -23,16 +23,6 @@
# endif
#endif
// declaration to indicate intended fallthrough cases in switch statements
// and thus silence the warnings produced by g++ -Wextra
#if defined(__GNUC__)
#define _fallthrough __attribute__ ((fallthrough))
#else
#define _fallthrough
#endif
#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
/*
@ -301,17 +291,17 @@ uint32_t hashlittle( const void *key, size_t length, uint32_t initval)
/*-------------------------------- last block: affect all 32 bits of (c) */
switch(length) /* all the case statements fall through */
{
case 12: c+=((uint32_t)k[11])<<24; _fallthrough;
case 11: c+=((uint32_t)k[10])<<16; _fallthrough;
case 10: c+=((uint32_t)k[9])<<8; _fallthrough;
case 9 : c+=k[8]; _fallthrough;
case 8 : b+=((uint32_t)k[7])<<24; _fallthrough;
case 7 : b+=((uint32_t)k[6])<<16; _fallthrough;
case 6 : b+=((uint32_t)k[5])<<8; _fallthrough;
case 5 : b+=k[4]; _fallthrough;
case 4 : a+=((uint32_t)k[3])<<24; _fallthrough;
case 3 : a+=((uint32_t)k[2])<<16; _fallthrough;
case 2 : a+=((uint32_t)k[1])<<8; _fallthrough;
case 12: c+=((uint32_t)k[11])<<24; /* fall through */
case 11: c+=((uint32_t)k[10])<<16; /* fall through */
case 10: c+=((uint32_t)k[9])<<8; /* fall through */
case 9 : c+=k[8]; /* fall through */
case 8 : b+=((uint32_t)k[7])<<24; /* fall through */
case 7 : b+=((uint32_t)k[6])<<16; /* fall through */
case 6 : b+=((uint32_t)k[5])<<8; /* fall through */
case 5 : b+=k[4]; /* fall through */
case 4 : a+=((uint32_t)k[3])<<24; /* fall through */
case 3 : a+=((uint32_t)k[2])<<16; /* fall through */
case 2 : a+=((uint32_t)k[1])<<8; /* fall through */
case 1 : a+=k[0];
break;
case 0 : return c;

View File

@ -42,6 +42,7 @@
#include "variable.h"
#include "update.h"
#include "error.h"
#include "utils.h"
#include <ctime>
#include <map>
@ -397,7 +398,7 @@ void Info::command(int narg, char **arg)
fprintf(out,"Atoms = " BIGINT_FORMAT ", types = %d, style = %s\n",
atom->natoms, atom->ntypes, force->pair_style);
if (force->pair && strstr(force->pair_style,"hybrid")) {
if (force->pair && utils::strmatch(force->pair_style,"^hybrid")) {
PairHybrid *hybrid = (PairHybrid *)force->pair;
fprintf(out,"Hybrid sub-styles:");
for (int i=0; i < hybrid->nstyles; ++i)

View File

@ -38,6 +38,7 @@
#include "timer.h"
#include "memory.h"
#include "error.h"
#include "utils.h"
#include "pair_hybrid.h"
using namespace LAMMPS_NS;
@ -120,7 +121,7 @@ Respa::Respa(LAMMPS *lmp, int narg, char **arg) :
iarg += 2;
} else if (strcmp(arg[iarg],"hybrid") == 0) {
// the hybrid keyword requires a hybrid pair style
if (!strstr(force->pair_style,"hybrid"))
if (!utils::strmatch(force->pair_style,"^hybrid"))
error->all(FLERR,"Illegal run_style respa command");
PairHybrid *hybrid = (PairHybrid *) force->pair;
nhybrid_styles = hybrid->nstyles;

View File

@ -1578,6 +1578,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
newtree->nextra = 0;
treestack[ntreestack++] = newtree;
} else if (nbracket == 1 && compute->local_flag) {
print_var_error(FLERR,"Cannot access local data via indexing",ivar);
} else print_var_error(FLERR,
"Mismatched compute in variable formula",ivar);
@ -2179,7 +2181,7 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
if (tree) {
Tree *newtree = new Tree();
newtree->type = opprevious;
if (opprevious == UNARY) {
if ((opprevious == UNARY) || (opprevious == NOT)) {
newtree->first = treestack[--ntreestack];
newtree->second = NULL;
newtree->nextra = 0;

View File

@ -33,6 +33,7 @@
#include "comm.h"
#include "memory.h"
#include "error.h"
#include "utils.h"
using namespace LAMMPS_NS;
@ -709,19 +710,19 @@ void Velocity::zero(int /*narg*/, char **arg)
{
if (strcmp(arg[0],"linear") == 0) {
if (rfix < 0) zero_momentum();
else if (strcmp(modify->fix[rfix]->style,"rigid/small") == 0) {
else if (utils::strmatch(modify->fix[rfix]->style,"^rigid/small")) {
modify->fix[rfix]->setup_pre_neighbor();
modify->fix[rfix]->zero_momentum();
} else if (strstr(modify->fix[rfix]->style,"rigid")) {
} else if (utils::strmatch(modify->fix[rfix]->style,"^rigid")) {
modify->fix[rfix]->zero_momentum();
} else error->all(FLERR,"Velocity rigid used with non-rigid fix-ID");
} else if (strcmp(arg[0],"angular") == 0) {
if (rfix < 0) zero_rotation();
else if (strcmp(modify->fix[rfix]->style,"rigid/small") == 0) {
else if (utils::strmatch(modify->fix[rfix]->style,"^rigid/small")) {
modify->fix[rfix]->setup_pre_neighbor();
modify->fix[rfix]->zero_rotation();
} else if (strstr(modify->fix[rfix]->style,"rigid")) {
} else if (utils::strmatch(modify->fix[rfix]->style,"^rigid")) {
modify->fix[rfix]->zero_rotation();
} else error->all(FLERR,"Velocity rigid used with non-rigid fix-ID");