diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 7f212ac48e..bde36aa896 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -303,6 +303,7 @@ include(Packages/USER-QUIP) include(Packages/USER-QMMM) include(Packages/USER-VTK) include(Packages/KIM) +include(Packages/LATTE) include(Packages/MESSAGE) include(Packages/MSCG) include(Packages/COMPRESS) diff --git a/doc/src/Commands_all.txt b/doc/src/Commands_all.txt index 58ca148555..80f91d5291 100644 --- a/doc/src/Commands_all.txt +++ b/doc/src/Commands_all.txt @@ -50,11 +50,11 @@ An alphabetic list of all general LAMMPS commands. "dump"_dump.html, "dump adios"_dump_adios.html, "dump image"_dump_image.html, -"dump_modify"_dump_modify.html, "dump movie"_dump_image.html, "dump netcdf"_dump_netcdf.html, "dump netcdf/mpiio"_dump_netcdf.html, "dump vtk"_dump_vtk.html, +"dump_modify"_dump_modify.html, "dynamical_matrix"_dynamical_matrix.html, "echo"_echo.html, "fix"_fix.html, diff --git a/doc/src/Commands_pair.txt b/doc/src/Commands_pair.txt index fea085b4ed..6077fad8ec 100644 --- a/doc/src/Commands_pair.txt +++ b/doc/src/Commands_pair.txt @@ -222,6 +222,8 @@ OPT. "sph/rhosum"_pair_sph_rhosum.html, "sph/taitwater"_pair_sph_taitwater.html, "sph/taitwater/morris"_pair_sph_taitwater_morris.html, +"spin/dipole/cut"_pair_spin_dipole.html, +"spin/dipole/long"_pair_spin_dipole.html, "spin/dmi"_pair_spin_dmi.html, "spin/exchange"_pair_spin_exchange.html, "spin/magelec"_pair_spin_magelec.html, diff --git a/doc/src/Eqs/angle_class2_p6.tex b/doc/src/Eqs/angle_class2_p6.tex new file mode 100644 index 0000000000..37fd87e9ec --- /dev/null +++ b/doc/src/Eqs/angle_class2_p6.tex @@ -0,0 +1,15 @@ +\documentclass[12pt]{article} + +\pagestyle{empty} +\begin{document} + +$$ + E_{a} = K_2\left(\theta - \theta_0\right)^2 + K_3\left(\theta - \theta_0\right)^3 + K_4\left(\theta - \theta_0\right)^4 + K_5\left(\theta - \theta_0\right)^5 + K_6\left(\theta - \theta_0\right)^6 +$$ + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/doc/src/Eqs/angle_cosine_buck6d.tex b/doc/src/Eqs/angle_cosine_buck6d.tex new file mode 100644 index 0000000000..49be2fc8c2 --- /dev/null +++ b/doc/src/Eqs/angle_cosine_buck6d.tex @@ -0,0 +1,15 @@ +\documentclass[12pt]{article} + +\pagestyle{empty} +\begin{document} + +$$ + E = K \left[ 1 + \cos(n\theta - \theta_0)\right] +$$ + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/doc/src/Eqs/improper_inversion_harmonic.tex b/doc/src/Eqs/improper_inversion_harmonic.tex new file mode 100644 index 0000000000..a1607a1149 --- /dev/null +++ b/doc/src/Eqs/improper_inversion_harmonic.tex @@ -0,0 +1,15 @@ +\documentclass[12pt]{article} + +\pagestyle{empty} +\begin{document} + +$$ + E = K \left(\theta - \theta_0\right)^2 +$$ + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/doc/src/Eqs/pair_agni.tex b/doc/src/Eqs/pair_agni.tex new file mode 100644 index 0000000000..b9aa7882fc --- /dev/null +++ b/doc/src/Eqs/pair_agni.tex @@ -0,0 +1,18 @@ +\documentclass[12pt]{article} + +\pagestyle{empty} +\begin{document} + +\begin{eqnarray*} + F_i^u & = & \sum_t^{N_t}\alpha_t \cdot \exp\left[-\frac{\left(d_{i,t}^u\right)^2}{2l^2}\right] \\ + d_{i,t}^u & = & \left|\left| V_i^u(\eta) - V_t^u(\eta) \right|\right| \\ + V_i^u(\eta) & = & \sum_{j \neq i}\frac{r^u_{ij}}{r_{ij}} \cdot e^{-\left(\frac{r_{ij}}{\eta} \right)^2} \cdot f_d\left(r_{ij}\right) \\ + f_d\left(r_{ij}\right) & = & \frac{1}{2} \left[\cos\left(\frac{\pi r_{ij}}{R_c}\right) + 1 \right] +\end{eqnarray*} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/doc/src/Eqs/pair_buck6d.txt b/doc/src/Eqs/pair_buck6d.tex similarity index 91% rename from doc/src/Eqs/pair_buck6d.txt rename to doc/src/Eqs/pair_buck6d.tex index 4888444d8c..903c0685be 100644 --- a/doc/src/Eqs/pair_buck6d.txt +++ b/doc/src/Eqs/pair_buck6d.tex @@ -1,6 +1,7 @@ \documentclass[12pt]{article} \begin{document} +\pagestyle{empty} \begin{eqnarray*} E = A e^{-\kappa r} - \frac{C}{r^6} \cdot \frac{1}{1 + D r^{14}} \qquad r < r_c \\ diff --git a/doc/src/Eqs/pair_coul_gauss.tex b/doc/src/Eqs/pair_coul_gauss.tex new file mode 100644 index 0000000000..1eb9c05a6f --- /dev/null +++ b/doc/src/Eqs/pair_coul_gauss.tex @@ -0,0 +1,15 @@ +\documentclass[12pt]{article} + +\pagestyle{empty} +\begin{document} + +$$ + E = \frac{C_{q_i q_j}}{\epsilon r_{ij}}\,\, \textrm{erf}\left(\alpha_{ij} r_{ij}\right)\quad\quad\quad r < r_c +$$ + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 1528adc420..bd5addda6f 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -911,6 +911,8 @@ the usual manner via MD. Various pair, fix, and compute styles. src/SPIN: filenames -> commands "Howto spins"_Howto_spins.html +"pair_style spin/dipole/cut"_pair_spin_dipole.html +"pair_style spin/dipole/long"_pair_spin_dipole.html "pair_style spin/dmi"_pair_spin_dmi.html "pair_style spin/exchange"_pair_spin_exchange.html "pair_style spin/magelec"_pair_spin_magelec.html diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 2738c9b051..8abe9cffa1 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -647,6 +647,7 @@ pair_sph_lj.html pair_sph_rhosum.html pair_sph_taitwater.html pair_sph_taitwater_morris.html +pair_spin_dipole.html pair_spin_dmi.html pair_spin_exchange.html pair_spin_magelec.html diff --git a/doc/src/pair_modify.txt b/doc/src/pair_modify.txt index 4824a3d83e..c446aa29d0 100644 --- a/doc/src/pair_modify.txt +++ b/doc/src/pair_modify.txt @@ -13,7 +13,8 @@ pair_modify command :h3 pair_modify keyword values ... :pre one or more keyword/value pairs may be listed :ulb,l -keyword = {pair} or {shift} or {mix} or {table} or {table/disp} or {tabinner} or {tabinner/disp} or {tail} or {compute} :l +keyword = {pair} or {shift} or {mix} or {table} or {table/disp} or {tabinner} +or {tabinner/disp} or {tail} or {compute} or {nofdotr} :l {pair} values = sub-style N {special} which wt1 wt2 wt3 or sub-style N {compute/tally} flag sub-style = sub-style of "pair hybrid"_pair_hybrid.html @@ -33,7 +34,8 @@ keyword = {pair} or {shift} or {mix} or {table} or {table/disp} or {tabinner} or {tabinner/disp} value = cutoff cutoff = inner cutoff at which to begin table (distance units) {tail} value = {yes} or {no} - {compute} value = {yes} or {no} :pre + {compute} value = {yes} or {no} + {nofdotr} :pre :ule [Examples:] @@ -212,6 +214,10 @@ a pair style will not work, because the "kspace_style"_kspace_style.html command requires a Kspace-compatible pair style be defined. +The {nofdotr} keyword allows to disable an optimization that computes +the global stress tensor from the total forces and atom positions rather +than from summing forces between individual pairs of atoms. + :line The {special} keyword allows to override the 1-2, 1-3, and 1-4 diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt index e305bc705d..8a35e5a467 100644 --- a/doc/src/pair_style.txt +++ b/doc/src/pair_style.txt @@ -284,6 +284,8 @@ accelerated styles exist. "sph/rhosum"_pair_sph_rhosum.html - "sph/taitwater"_pair_sph_taitwater.html - "sph/taitwater/morris"_pair_sph_taitwater_morris.html - +"spin/dipole/cut"_pair_spin_dipole.html - +"spin/dipole/long"_pair_spin_dipole.html - "spin/dmi"_pair_spin_dmi.html - "spin/exchange"_pair_spin_exchange.html - "spin/magelec"_pair_spin_magelec.html - diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt index babdd2d1cc..2f63f18bad 100644 --- a/doc/src/pairs.txt +++ b/doc/src/pairs.txt @@ -105,6 +105,7 @@ Pair Styles :h1 pair_sph_rhosum pair_sph_taitwater pair_sph_taitwater_morris + pair_spin_dipole pair_spin_dmi pair_spin_exchange pair_spin_magelec diff --git a/src/CLASS2/pair_lj_class2_coul_cut.cpp b/src/CLASS2/pair_lj_class2_coul_cut.cpp index dafa83c8fd..8dc038b8fc 100644 --- a/src/CLASS2/pair_lj_class2_coul_cut.cpp +++ b/src/CLASS2/pair_lj_class2_coul_cut.cpp @@ -473,9 +473,8 @@ double PairLJClass2CoulCut::single(int i, int j, int itype, int jtype, void *PairLJClass2CoulCut::extract(const char *str, int &dim) { - dim = 0; - if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; dim = 2; + if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; if (strcmp(str,"epsilon") == 0) return (void *) epsilon; if (strcmp(str,"sigma") == 0) return (void *) sigma; return NULL; diff --git a/src/MISC/fix_orient_bcc.cpp b/src/MISC/fix_orient_bcc.cpp index c614577933..02cce5a014 100644 --- a/src/MISC/fix_orient_bcc.cpp +++ b/src/MISC/fix_orient_bcc.cpp @@ -115,25 +115,25 @@ FixOrientBCC::FixOrientBCC(LAMMPS *lmp, int narg, char **arg) : char *result; int count; - FILE *infile = fopen(xifilename,"r"); - if (infile == NULL) error->one(FLERR,"Fix orient/bcc file open failed"); + FILE *inpfile = fopen(xifilename,"r"); + if (inpfile == NULL) error->one(FLERR,"Fix orient/bcc file open failed"); for (int i = 0; i < 4; i++) { - result = fgets(line,IMGMAX,infile); + result = fgets(line,IMGMAX,inpfile); if (!result) error->one(FLERR,"Fix orient/bcc file read failed"); count = sscanf(line,"%lg %lg %lg",&Rxi[i][0],&Rxi[i][1],&Rxi[i][2]); if (count != 3) error->one(FLERR,"Fix orient/bcc file read failed"); } - fclose(infile); + fclose(inpfile); - infile = fopen(chifilename,"r"); - if (infile == NULL) error->one(FLERR,"Fix orient/bcc file open failed"); + inpfile = fopen(chifilename,"r"); + if (inpfile == NULL) error->one(FLERR,"Fix orient/bcc file open failed"); for (int i = 0; i < 4; i++) { - result = fgets(line,IMGMAX,infile); + result = fgets(line,IMGMAX,inpfile); if (!result) error->one(FLERR,"Fix orient/bcc file read failed"); count = sscanf(line,"%lg %lg %lg",&Rchi[i][0],&Rchi[i][1],&Rchi[i][2]); if (count != 3) error->one(FLERR,"Fix orient/bcc file read failed"); } - fclose(infile); + fclose(inpfile); } MPI_Bcast(&Rxi[0][0],18,MPI_DOUBLE,0,world); diff --git a/src/MISC/fix_orient_fcc.cpp b/src/MISC/fix_orient_fcc.cpp index 5b394adde7..fc827ceb8f 100644 --- a/src/MISC/fix_orient_fcc.cpp +++ b/src/MISC/fix_orient_fcc.cpp @@ -113,25 +113,25 @@ FixOrientFCC::FixOrientFCC(LAMMPS *lmp, int narg, char **arg) : char *result; int count; - FILE *infile = fopen(xifilename,"r"); - if (infile == NULL) error->one(FLERR,"Fix orient/fcc file open failed"); + FILE *inpfile = fopen(xifilename,"r"); + if (inpfile == NULL) error->one(FLERR,"Fix orient/fcc file open failed"); for (int i = 0; i < 6; i++) { - result = fgets(line,IMGMAX,infile); + result = fgets(line,IMGMAX,inpfile); if (!result) error->one(FLERR,"Fix orient/fcc file read failed"); count = sscanf(line,"%lg %lg %lg",&Rxi[i][0],&Rxi[i][1],&Rxi[i][2]); if (count != 3) error->one(FLERR,"Fix orient/fcc file read failed"); } - fclose(infile); + fclose(inpfile); - infile = fopen(chifilename,"r"); - if (infile == NULL) error->one(FLERR,"Fix orient/fcc file open failed"); + inpfile = fopen(chifilename,"r"); + if (inpfile == NULL) error->one(FLERR,"Fix orient/fcc file open failed"); for (int i = 0; i < 6; i++) { - result = fgets(line,IMGMAX,infile); + result = fgets(line,IMGMAX,inpfile); if (!result) error->one(FLERR,"Fix orient/fcc file read failed"); count = sscanf(line,"%lg %lg %lg",&Rchi[i][0],&Rchi[i][1],&Rchi[i][2]); if (count != 3) error->one(FLERR,"Fix orient/fcc file read failed"); } - fclose(infile); + fclose(inpfile); } MPI_Bcast(&Rxi[0][0],18,MPI_DOUBLE,0,world); diff --git a/src/MISC/pair_nm_cut_coul_cut.cpp b/src/MISC/pair_nm_cut_coul_cut.cpp index 6a09d579b7..a8428ab980 100644 --- a/src/MISC/pair_nm_cut_coul_cut.cpp +++ b/src/MISC/pair_nm_cut_coul_cut.cpp @@ -487,9 +487,8 @@ double PairNMCutCoulCut::single(int i, int j, int itype, int jtype, void *PairNMCutCoulCut::extract(const char *str, int &dim) { - dim = 0; - if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; dim = 2; + if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; if (strcmp(str,"e0") == 0) return (void *) e0; if (strcmp(str,"r0") == 0) return (void *) r0; if (strcmp(str,"nn") == 0) return (void *) nn; diff --git a/src/REPLICA/neb.cpp b/src/REPLICA/neb.cpp index 3963379356..6b68c52dbb 100644 --- a/src/REPLICA/neb.cpp +++ b/src/REPLICA/neb.cpp @@ -146,12 +146,12 @@ void NEB::command(int narg, char **arg) if (strcmp(arg[5],"final") == 0) { if (narg != 7 && narg !=8) error->universe_all(FLERR,"Illegal NEB command"); - infile = arg[6]; - readfile(infile,0); + inpfile = arg[6]; + readfile(inpfile,0); } else if (strcmp(arg[5],"each") == 0) { if (narg != 7 && narg !=8) error->universe_all(FLERR,"Illegal NEB command"); - infile = arg[6]; - readfile(infile,1); + inpfile = arg[6]; + readfile(inpfile,1); } else if (strcmp(arg[5],"none") == 0) { if (narg != 6 && narg !=7) error->universe_all(FLERR,"Illegal NEB command"); } else error->universe_all(FLERR,"Illegal NEB command"); diff --git a/src/REPLICA/neb.h b/src/REPLICA/neb.h index 9453c3c43b..f585a0c8a7 100644 --- a/src/REPLICA/neb.h +++ b/src/REPLICA/neb.h @@ -47,7 +47,7 @@ class NEB : protected Pointers { double ftol; // force tolerance convergence criterion int n1steps, n2steps; // number of steps in stage 1 and 2 int nevery; // output interval - char *infile; // name of file containing final state + char *inpfile; // name of file containing final state class FixNEB *fneb; int numall; // per-replica dimension of array all diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 8fa43b89ce..abb669bc02 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -59,7 +59,7 @@ enum{ISO,ANISO,TRICLINIC}; FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), step_respa(NULL), - infile(NULL), nrigid(NULL), mol2body(NULL), body2mol(NULL), + inpfile(NULL), nrigid(NULL), mol2body(NULL), body2mol(NULL), body(NULL), displace(NULL), masstotal(NULL), xcm(NULL), vcm(NULL), fcm(NULL), inertia(NULL), ex_space(NULL), ey_space(NULL), ez_space(NULL), angmom(NULL), omega(NULL), @@ -327,7 +327,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : t_iter = 1; t_order = 3; p_chain = 10; - infile = NULL; + inpfile = NULL; pcouple = NONE; pstyle = ANISO; @@ -546,12 +546,12 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) : p_chain = force->inumeric(FLERR,arg[iarg+1]); iarg += 2; - } else if (strcmp(arg[iarg],"infile") == 0) { + } else if (strcmp(arg[iarg],"inpfile") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid command"); - delete [] infile; + delete [] inpfile; int n = strlen(arg[iarg+1]) + 1; - infile = new char[n]; - strcpy(infile,arg[iarg+1]); + inpfile = new char[n]; + strcpy(inpfile,arg[iarg+1]); restart_file = 1; reinitflag = 0; iarg += 2; @@ -649,7 +649,7 @@ FixRigid::~FixRigid() atom->delete_callback(id,0); delete random; - delete [] infile; + delete [] inpfile; memory->destroy(mol2body); memory->destroy(body2mol); @@ -760,14 +760,14 @@ void FixRigid::init() // setup rigid bodies, using current atom info. if reinitflag is not set, // do the initialization only once, b/c properties may not be re-computable // especially if overlapping particles. - // do not do dynamic init if read body properties from infile. - // this is b/c the infile defines the static and dynamic properties and may + // do not do dynamic init if read body properties from inpfile. + // this is b/c the inpfile defines the static and dynamic properties and may // not be computable if contain overlapping particles. - // setup_bodies_static() reads infile itself + // setup_bodies_static() reads inpfile itself if (reinitflag || !setupflag) { setup_bodies_static(); - if (!infile) setup_bodies_dynamic(); + if (!inpfile) setup_bodies_dynamic(); setupflag = 1; } @@ -1640,7 +1640,7 @@ void FixRigid::set_v() sets extended flags, masstotal, center-of-mass sets Cartesian and diagonalized inertia tensor sets body image flags - may read some properties from infile + may read some properties from inpfile ------------------------------------------------------------------------- */ void FixRigid::setup_bodies_static() @@ -1791,7 +1791,7 @@ void FixRigid::setup_bodies_static() xcm[ibody][2] = all[ibody][2]/masstotal[ibody]; } - // set vcm, angmom = 0.0 in case infile is used + // set vcm, angmom = 0.0 in case inpfile is used // and doesn't overwrite all body's values // since setup_bodies_dynamic() will not be called @@ -1810,7 +1810,7 @@ void FixRigid::setup_bodies_static() // inbody[i] = 0/1 if Ith rigid body is initialized by file int *inbody; - if (infile) { + if (inpfile) { memory->create(inbody,nbody,"rigid:inbody"); for (ibody = 0; ibody < nbody; ibody++) inbody[ibody] = 0; readfile(0,masstotal,xcm,vcm,angmom,imagebody,inbody); @@ -1918,7 +1918,7 @@ void FixRigid::setup_bodies_static() // overwrite Cartesian inertia tensor with file values - if (infile) readfile(1,NULL,all,NULL,NULL,NULL,inbody); + if (inpfile) readfile(1,NULL,all,NULL,NULL,NULL,inbody); // diagonalize inertia tensor for each body via Jacobi rotations // inertia = 3 eigenvalues = principal moments of inertia @@ -2116,11 +2116,11 @@ void FixRigid::setup_bodies_static() MPI_Allreduce(sum[0],all[0],6*nbody,MPI_DOUBLE,MPI_SUM,world); // error check that re-computed moments of inertia match diagonalized ones - // do not do test for bodies with params read from infile + // do not do test for bodies with params read from inpfile double norm; for (ibody = 0; ibody < nbody; ibody++) { - if (infile && inbody[ibody]) continue; + if (inpfile && inbody[ibody]) continue; if (inertia[ibody][0] == 0.0) { if (fabs(all[ibody][0]) > TOLERANCE) error->all(FLERR,"Fix rigid: Bad principal moments"); @@ -2149,7 +2149,7 @@ void FixRigid::setup_bodies_static() error->all(FLERR,"Fix rigid: Bad principal moments"); } - if (infile) memory->destroy(inbody); + if (inpfile) memory->destroy(inbody); } /* ---------------------------------------------------------------------- @@ -2268,10 +2268,10 @@ void FixRigid::readfile(int which, double *vec, char line[MAXLINE]; if (me == 0) { - fp = fopen(infile,"r"); + fp = fopen(inpfile,"r"); if (fp == NULL) { char str[128]; - snprintf(str,128,"Cannot open fix rigid infile %s",infile); + snprintf(str,128,"Cannot open fix rigid inpfile %s",inpfile); error->one(FLERR,str); } @@ -2371,7 +2371,7 @@ void FixRigid::readfile(int which, double *vec, /* ---------------------------------------------------------------------- write out restart info for mass, COM, inertia tensor, image flags to file - identical format to infile option, so info can be read in when restarting + identical format to inpfile option, so info can be read in when restarting only proc 0 writes list of global bodies to file ------------------------------------------------------------------------- */ diff --git a/src/RIGID/fix_rigid.h b/src/RIGID/fix_rigid.h index 507e4c7553..d9d7b07ce8 100644 --- a/src/RIGID/fix_rigid.h +++ b/src/RIGID/fix_rigid.h @@ -67,7 +67,7 @@ class FixRigid : public Fix { int triclinic; double MINUSPI,TWOPI; - char *infile; // file to read rigid body attributes from + char *inpfile; // file to read rigid body attributes from int rstyle; // SINGLE,MOLECULE,GROUP int setupflag; // 1 if body properties are setup, else 0 int earlyflag; // 1 if forces/torques computed at post_force() @@ -261,7 +261,7 @@ E: Fix rigid: Bad principal moments The principal moments of inertia computed for a rigid body are not within the required tolerances. -E: Cannot open fix rigid infile %s +E: Cannot open fix rigid inpfile %s The specified file cannot be opened. Check that the path and name are correct. diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index 54fb83f0aa..dedd71c98d 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -70,7 +70,7 @@ enum{FULL_BODY,INITIAL,FINAL,FORCE_TORQUE,VCM_ANGMOM,XCM_MASS,ITENSOR,DOF}; FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), step_respa(NULL), - infile(NULL), body(NULL), bodyown(NULL), bodytag(NULL), atom2body(NULL), + inpfile(NULL), body(NULL), bodyown(NULL), bodytag(NULL), atom2body(NULL), xcmimage(NULL), displace(NULL), eflags(NULL), orient(NULL), dorient(NULL), avec_ellipsoid(NULL), avec_line(NULL), avec_tri(NULL), counts(NULL), itensor(NULL), mass_body(NULL), langextra(NULL), random(NULL), @@ -191,7 +191,7 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : int seed; langflag = 0; - infile = NULL; + inpfile = NULL; onemols = NULL; reinitflag = 1; @@ -232,12 +232,12 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : if (seed <= 0) error->all(FLERR,"Illegal fix rigid/small command"); iarg += 5; - } else if (strcmp(arg[iarg],"infile") == 0) { + } else if (strcmp(arg[iarg],"inpfile") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix rigid/small command"); - delete [] infile; + delete [] inpfile; int n = strlen(arg[iarg+1]) + 1; - infile = new char[n]; - strcpy(infile,arg[iarg+1]); + inpfile = new char[n]; + strcpy(inpfile,arg[iarg+1]); restart_file = 1; reinitflag = 0; iarg += 2; @@ -546,7 +546,7 @@ FixRigidSmall::~FixRigidSmall() memory->destroy(dorient); delete random; - delete [] infile; + delete [] inpfile; memory->destroy(langextra); memory->destroy(mass_body); @@ -622,10 +622,10 @@ void FixRigidSmall::init() if reinitflag is not set, do the initialization only once, b/c properties may not be re-computable especially if overlapping particles or bodies are inserted from mol template. - do not do dynamic init if read body properties from infile. this - is b/c the infile defines the static and dynamic properties and may not + do not do dynamic init if read body properties from inpfile. this + is b/c the inpfile defines the static and dynamic properties and may not be computable if contain overlapping particles setup_bodies_static() - reads infile itself. + reads inpfile itself. cannot do this until now, b/c requires comm->setup() to have setup stencil invoke pre_neighbor() to insure body xcmimage flags are reset needed if Verlet::setup::pbc() has remapped/migrated atoms for 2nd run @@ -638,7 +638,7 @@ void FixRigidSmall::setup_pre_neighbor() setup_bodies_static(); else pre_neighbor(); - if ((reinitflag || !setupflag) && !infile) + if ((reinitflag || !setupflag) && !inpfile) setup_bodies_dynamic(); setupflag = 1; @@ -1775,7 +1775,7 @@ int FixRigidSmall::rendezvous_body(int n, char *inbuf, sets extended flags, masstotal, center-of-mass sets Cartesian and diagonalized inertia tensor sets body image flags - may read some properties from infile + may read some properties from inpfile ------------------------------------------------------------------------- */ void FixRigidSmall::setup_bodies_static() @@ -1932,7 +1932,7 @@ void FixRigidSmall::setup_bodies_static() xcm[2] /= body[ibody].mass; } - // set vcm, angmom = 0.0 in case infile is used + // set vcm, angmom = 0.0 in case inpfile is used // and doesn't overwrite all body's values // since setup_bodies_dynamic() will not be called @@ -1955,7 +1955,7 @@ void FixRigidSmall::setup_bodies_static() // inbody[i] = 0/1 if Ith rigid body is initialized by file int *inbody; - if (infile) { + if (inpfile) { memory->create(inbody,nlocal_body,"rigid/small:inbody"); for (ibody = 0; ibody < nlocal_body; ibody++) inbody[ibody] = 0; readfile(0,NULL,inbody); @@ -2058,7 +2058,7 @@ void FixRigidSmall::setup_bodies_static() // overwrite Cartesian inertia tensor with file values - if (infile) readfile(1,itensor,inbody); + if (inpfile) readfile(1,itensor,inbody); // diagonalize inertia tensor for each body via Jacobi rotations // inertia = 3 eigenvalues = principal moments of inertia @@ -2257,11 +2257,11 @@ void FixRigidSmall::setup_bodies_static() comm->reverse_comm_fix(this,6); // error check that re-computed moments of inertia match diagonalized ones - // do not do test for bodies with params read from infile + // do not do test for bodies with params read from inpfile double norm; for (ibody = 0; ibody < nlocal_body; ibody++) { - if (infile && inbody[ibody]) continue; + if (inpfile && inbody[ibody]) continue; inertia = body[ibody].inertia; if (inertia[0] == 0.0) { @@ -2295,7 +2295,7 @@ void FixRigidSmall::setup_bodies_static() // clean up memory->destroy(itensor); - if (infile) memory->destroy(inbody); + if (inpfile) memory->destroy(inbody); } /* ---------------------------------------------------------------------- @@ -2437,10 +2437,10 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) // open file and read header if (me == 0) { - fp = fopen(infile,"r"); + fp = fopen(inpfile,"r"); if (fp == NULL) { char str[128]; - snprintf(str,128,"Cannot open fix rigid/small infile %s",infile); + snprintf(str,128,"Cannot open fix rigid/small inpfile %s",inpfile); error->one(FLERR,str); } @@ -2538,7 +2538,7 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) /* ---------------------------------------------------------------------- write out restart info for mass, COM, inertia tensor to file - identical format to infile option, so info can be read in when restarting + identical format to inpfile option, so info can be read in when restarting each proc contributes info for rigid bodies it owns ------------------------------------------------------------------------- */ diff --git a/src/RIGID/fix_rigid_small.h b/src/RIGID/fix_rigid_small.h index b5a3d5208d..6dae443d1c 100644 --- a/src/RIGID/fix_rigid_small.h +++ b/src/RIGID/fix_rigid_small.h @@ -74,7 +74,7 @@ class FixRigidSmall : public Fix { int triclinic; double MINUSPI,TWOPI; - char *infile; // file to read rigid body attributes from + char *inpfile; // file to read rigid body attributes from int setupflag; // 1 if body properties are setup, else 0 int earlyflag; // 1 if forces/torques are computed at post_force() int commflag; // various modes of forward/reverse comm @@ -318,7 +318,7 @@ E: Fix rigid: Bad principal moments The principal moments of inertia computed for a rigid body are not within the required tolerances. -E: Cannot open fix rigid/small infile %s +E: Cannot open fix rigid/small inpfile %s The specified file cannot be opened. Check that the path and name are correct. diff --git a/src/SPIN/neb_spin.cpp b/src/SPIN/neb_spin.cpp index 126cfb09e3..46a0541488 100644 --- a/src/SPIN/neb_spin.cpp +++ b/src/SPIN/neb_spin.cpp @@ -139,12 +139,12 @@ void NEBSpin::command(int narg, char **arg) if (strcmp(arg[5],"final") == 0) { if (narg != 7 && narg !=8) error->universe_all(FLERR,"Illegal NEBSpin command"); - infile = arg[6]; - readfile(infile,0); + inpfile = arg[6]; + readfile(inpfile,0); } else if (strcmp(arg[5],"each") == 0) { if (narg != 7 && narg !=8) error->universe_all(FLERR,"Illegal NEBSpin command"); - infile = arg[6]; - readfile(infile,1); + inpfile = arg[6]; + readfile(inpfile,1); } else if (strcmp(arg[5],"none") == 0) { if (narg != 6 && narg !=7) error->universe_all(FLERR,"Illegal NEBSpin command"); } else error->universe_all(FLERR,"Illegal NEBSpin command"); diff --git a/src/SPIN/neb_spin.h b/src/SPIN/neb_spin.h index 5acd034e95..c128eaffa4 100644 --- a/src/SPIN/neb_spin.h +++ b/src/SPIN/neb_spin.h @@ -46,7 +46,7 @@ class NEBSpin : protected Pointers { double ttol; // torque tolerance convergence criterion int n1steps, n2steps; // number of steps in stage 1 and 2 int nevery; // output interval - char *infile; // name of file containing final state + char *inpfile; // name of file containing final state class FixNEBSpin *fneb; int numall; // per-replica dimension of array all diff --git a/src/atom.cpp b/src/atom.cpp index a53f35d7b3..1f5d5a80c4 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -455,8 +455,8 @@ void Atom::create_avec(const char *style, int narg, char **arg, int trysuffix) if (sflag) { char estyle[256]; - if (sflag == 1) sprintf(estyle,"%s/%s",style,lmp->suffix); - else sprintf(estyle,"%s/%s",style,lmp->suffix2); + if (sflag == 1) snprintf(estyle,256,"%s/%s",style,lmp->suffix); + else snprintf(estyle,256,"%s/%s",style,lmp->suffix2); int n = strlen(estyle) + 1; atom_style = new char[n]; strcpy(atom_style,estyle); @@ -487,7 +487,7 @@ AtomVec *Atom::new_avec(const char *style, int trysuffix, int &sflag) if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (avec_map->find(estyle) != avec_map->end()) { AtomVecCreator avec_creator = (*avec_map)[estyle]; return avec_creator(lmp); @@ -497,7 +497,7 @@ AtomVec *Atom::new_avec(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 2; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix2); + snprintf(estyle,256,"%s/%s",style,lmp->suffix2); if (avec_map->find(estyle) != avec_map->end()) { AtomVecCreator avec_creator = (*avec_map)[estyle]; return avec_creator(lmp); diff --git a/src/domain.cpp b/src/domain.cpp index 2e7652a434..74d7560c31 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -1734,7 +1734,7 @@ void Domain::add_region(int narg, char **arg) if (lmp->suffix_enable) { if (lmp->suffix) { char estyle[256]; - sprintf(estyle,"%s/%s",arg[1],lmp->suffix); + snprintf(estyle,256,"%s/%s",arg[1],lmp->suffix); if (region_map->find(estyle) != region_map->end()) { RegionCreator region_creator = (*region_map)[estyle]; regions[nregion] = region_creator(lmp, narg, arg); @@ -1746,7 +1746,7 @@ void Domain::add_region(int narg, char **arg) if (lmp->suffix2) { char estyle[256]; - sprintf(estyle,"%s/%s",arg[1],lmp->suffix2); + snprintf(estyle,256,"%s/%s",arg[1],lmp->suffix2); if (region_map->find(estyle) != region_map->end()) { RegionCreator region_creator = (*region_map)[estyle]; regions[nregion] = region_creator(lmp, narg, arg); diff --git a/src/force.cpp b/src/force.cpp index ed27df1215..2648358932 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -238,7 +238,7 @@ Pair *Force::new_pair(const char *style, int trysuffix, int &sflag) if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (pair_map->find(estyle) != pair_map->end()) { PairCreator pair_creator = (*pair_map)[estyle]; return pair_creator(lmp); @@ -247,7 +247,7 @@ Pair *Force::new_pair(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 2; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix2); + snprintf(estyle,256,"%s/%s",style,lmp->suffix2); if (pair_map->find(estyle) != pair_map->end()) { PairCreator pair_creator = (*pair_map)[estyle]; return pair_creator(lmp); @@ -350,7 +350,7 @@ Bond *Force::new_bond(const char *style, int trysuffix, int &sflag) if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (bond_map->find(estyle) != bond_map->end()) { BondCreator bond_creator = (*bond_map)[estyle]; return bond_creator(lmp); @@ -360,7 +360,7 @@ Bond *Force::new_bond(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 2; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix2); + snprintf(estyle,256,"%s/%s",style,lmp->suffix2); if (bond_map->find(estyle) != bond_map->end()) { BondCreator bond_creator = (*bond_map)[estyle]; return bond_creator(lmp); @@ -429,7 +429,7 @@ Angle *Force::new_angle(const char *style, int trysuffix, int &sflag) if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (angle_map->find(estyle) != angle_map->end()) { AngleCreator angle_creator = (*angle_map)[estyle]; return angle_creator(lmp); @@ -439,7 +439,7 @@ Angle *Force::new_angle(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 2; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (angle_map->find(estyle) != angle_map->end()) { AngleCreator angle_creator = (*angle_map)[estyle]; return angle_creator(lmp); @@ -509,7 +509,7 @@ Dihedral *Force::new_dihedral(const char *style, int trysuffix, int &sflag) if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (dihedral_map->find(estyle) != dihedral_map->end()) { DihedralCreator dihedral_creator = (*dihedral_map)[estyle]; return dihedral_creator(lmp); @@ -519,7 +519,7 @@ Dihedral *Force::new_dihedral(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 2; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix2); + snprintf(estyle,256,"%s/%s",style,lmp->suffix2); if (dihedral_map->find(estyle) != dihedral_map->end()) { DihedralCreator dihedral_creator = (*dihedral_map)[estyle]; return dihedral_creator(lmp); @@ -588,7 +588,7 @@ Improper *Force::new_improper(const char *style, int trysuffix, int &sflag) if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (improper_map->find(estyle) != improper_map->end()) { ImproperCreator improper_creator = (*improper_map)[estyle]; return improper_creator(lmp); @@ -598,7 +598,7 @@ Improper *Force::new_improper(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 2; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix2); + snprintf(estyle,256,"%s/%s",style,lmp->suffix2); if (improper_map->find(estyle) != improper_map->end()) { ImproperCreator improper_creator = (*improper_map)[estyle]; return improper_creator(lmp); @@ -671,7 +671,7 @@ KSpace *Force::new_kspace(const char *style, int trysuffix, int &sflag) if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (kspace_map->find(estyle) != kspace_map->end()) { KSpaceCreator kspace_creator = (*kspace_map)[estyle]; return kspace_creator(lmp); @@ -681,7 +681,7 @@ KSpace *Force::new_kspace(const char *style, int trysuffix, int &sflag) if (lmp->suffix2) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix2); + snprintf(estyle,256,"%s/%s",style,lmp->suffix2); if (kspace_map->find(estyle) != kspace_map->end()) { KSpaceCreator kspace_creator = (*kspace_map)[estyle]; return kspace_creator(lmp); @@ -735,8 +735,8 @@ void Force::store_style(char *&str, const char *style, int sflag) { if (sflag) { char estyle[256]; - if (sflag == 1) sprintf(estyle,"%s/%s",style,lmp->suffix); - else sprintf(estyle,"%s/%s",style,lmp->suffix2); + if (sflag == 1) snprintf(estyle,256,"%s/%s",style,lmp->suffix); + else snprintf(estyle,256,"%s/%s",style,lmp->suffix2); int n = strlen(estyle) + 1; str = new char[n]; strcpy(str,estyle); diff --git a/src/input.cpp b/src/input.cpp index 0111cb5738..9e0ad78d9e 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -1818,11 +1818,11 @@ void Input::pair_style() if (!match && lmp->suffix_enable) { char estyle[256]; if (lmp->suffix) { - sprintf(estyle,"%s/%s",arg[0],lmp->suffix); + snprintf(estyle,256,"%s/%s",arg[0],lmp->suffix); if (strcmp(estyle,force->pair_style) == 0) match = 1; } if (lmp->suffix2) { - sprintf(estyle,"%s/%s",arg[0],lmp->suffix2); + snprintf(estyle,256,"%s/%s",arg[0],lmp->suffix2); if (strcmp(estyle,force->pair_style) == 0) match = 1; } } diff --git a/src/pair.cpp b/src/pair.cpp index 92b5d003a8..2b4863a54c 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -186,6 +186,10 @@ void Pair::modify_params(int narg, char **arg) else if (strcmp(arg[iarg+1],"no") == 0) compute_flag = 0; else error->all(FLERR,"Illegal pair_modify command"); iarg += 2; + } else if (strcmp(arg[iarg],"nofdotr") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal pair_modify command"); + no_virial_fdotr_compute = 1; + ++iarg; } else error->all(FLERR,"Illegal pair_modify command"); } } diff --git a/src/pair_coul_cut.cpp b/src/pair_coul_cut.cpp index e7c0e0aabb..196e064219 100644 --- a/src/pair_coul_cut.cpp +++ b/src/pair_coul_cut.cpp @@ -303,6 +303,7 @@ double PairCoulCut::single(int i, int j, int /*itype*/, int /*jtype*/, void *PairCoulCut::extract(const char *str, int &dim) { dim = 2; + if (strcmp(str,"cut_coul") == 0) return (void *) &cut; if (strcmp(str,"scale") == 0) return (void *) scale; return NULL; } diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 4dcd249ac6..9aff8a387a 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -254,6 +254,7 @@ void PairHybrid::settings(int narg, char **arg) delete[] multiple; delete[] special_lj; delete[] special_coul; + delete[] compute_tally; } if (allocated) { @@ -273,7 +274,6 @@ void PairHybrid::settings(int narg, char **arg) special_lj = new double*[narg]; special_coul = new double*[narg]; - compute_tally = new int[narg]; // allocate each sub-style @@ -649,6 +649,8 @@ void PairHybrid::write_restart(FILE *fp) // each sub-style writes its settings, but no coeff info + fwrite(compute_tally,sizeof(int),nstyles,fp); + int n; for (int m = 0; m < nstyles; m++) { n = strlen(keywords[m]) + 1; @@ -682,6 +684,7 @@ void PairHybrid::read_restart(FILE *fp) delete[] multiple; delete[] special_lj; delete[] special_coul; + delete[] compute_tally; styles = new Pair*[nstyles]; keywords = new char*[nstyles]; @@ -689,10 +692,14 @@ void PairHybrid::read_restart(FILE *fp) special_lj = new double*[nstyles]; special_coul = new double*[nstyles]; + compute_tally = new int[nstyles]; // each sub-style is created via new_pair() // each reads its settings, but no coeff info + if (me == 0) fread(compute_tally,sizeof(int),nstyles,fp); + MPI_Bcast(compute_tally,nstyles,MPI_INT,0,world); + int n,dummy; for (int m = 0; m < nstyles; m++) { if (me == 0) fread(&n,sizeof(int),1,fp); @@ -938,17 +945,24 @@ void *PairHybrid::extract(const char *str, int &dim) void *cutptr = NULL; void *ptr; double cutvalue = 0.0; + int couldim = -1; for (int m = 0; m < nstyles; m++) { ptr = styles[m]->extract(str,dim); if (ptr && strcmp(str,"cut_coul") == 0) { + if (cutptr && dim != couldim) + error->all(FLERR, + "Coulomb styles of pair hybrid sub-styles do not match"); double *p_newvalue = (double *) ptr; double newvalue = *p_newvalue; - if (cutptr && newvalue != cutvalue) + if (cutptr && (newvalue != cutvalue)) error->all(FLERR, "Coulomb cutoffs of pair hybrid sub-styles do not match"); - cutptr = ptr; - cutvalue = newvalue; + if (dim == 0) { + cutptr = ptr; + cutvalue = newvalue; + } + couldim = dim; } else if (ptr) return ptr; } diff --git a/src/pair_lj_cut_coul_cut.cpp b/src/pair_lj_cut_coul_cut.cpp index 6f2ba75309..38a6e2c431 100644 --- a/src/pair_lj_cut_coul_cut.cpp +++ b/src/pair_lj_cut_coul_cut.cpp @@ -461,9 +461,8 @@ double PairLJCutCoulCut::single(int i, int j, int itype, int jtype, void *PairLJCutCoulCut::extract(const char *str, int &dim) { - dim = 0; - if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; dim = 2; + if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; if (strcmp(str,"epsilon") == 0) return (void *) epsilon; if (strcmp(str,"sigma") == 0) return (void *) sigma; return NULL; diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 5aa4622a67..6e156da837 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -580,32 +580,32 @@ void ReadRestart::command(int narg, char **arg) } /* ---------------------------------------------------------------------- - infile contains a "*" - search for all files which match the infile pattern + inpfile contains a "*" + search for all files which match the inpfile pattern replace "*" with latest timestep value to create outfile name search dir referenced by initial pathname of file - if infile also contains "%", use "base" when searching directory + if inpfile also contains "%", use "base" when searching directory only called by proc 0 ------------------------------------------------------------------------- */ -void ReadRestart::file_search(char *infile, char *outfile) +void ReadRestart::file_search(char *inpfile, char *outfile) { char *ptr; - // separate infile into dir + filename + // separate inpfile into dir + filename - char *dirname = new char[strlen(infile) + 1]; - char *filename = new char[strlen(infile) + 1]; + char *dirname = new char[strlen(inpfile) + 1]; + char *filename = new char[strlen(inpfile) + 1]; - if (strchr(infile,'/')) { - ptr = strrchr(infile,'/'); + if (strchr(inpfile,'/')) { + ptr = strrchr(inpfile,'/'); *ptr = '\0'; - strcpy(dirname,infile); + strcpy(dirname,inpfile); strcpy(filename,ptr+1); *ptr = '/'; } else { strcpy(dirname,"./"); - strcpy(filename,infile); + strcpy(filename,inpfile); } // if filename contains "%" replace "%" with "base" @@ -651,11 +651,11 @@ void ReadRestart::file_search(char *infile, char *outfile) if (maxnum < 0) error->one(FLERR,"Found no restart file matching pattern"); // create outfile with maxint substituted for "*" - // use original infile, not pattern, since need to retain "%" in filename + // use original inpfile, not pattern, since need to retain "%" in filename - ptr = strchr(infile,'*'); + ptr = strchr(inpfile,'*'); *ptr = '\0'; - sprintf(outfile,"%s" BIGINT_FORMAT "%s",infile,maxnum,ptr+1); + sprintf(outfile,"%s" BIGINT_FORMAT "%s",inpfile,maxnum,ptr+1); *ptr = '*'; // clean up diff --git a/src/update.cpp b/src/update.cpp index 6f9c2c9a07..f5e706e354 100644 --- a/src/update.cpp +++ b/src/update.cpp @@ -316,8 +316,8 @@ void Update::create_integrate(int narg, char **arg, int trysuffix) if (sflag) { char estyle[256]; - if (sflag == 1) sprintf(estyle,"%s/%s",arg[0],lmp->suffix); - else sprintf(estyle,"%s/%s",arg[0],lmp->suffix2); + if (sflag == 1) snprintf(estyle,256,"%s/%s",arg[0],lmp->suffix); + else snprintf(estyle,256,"%s/%s",arg[0],lmp->suffix2); int n = strlen(estyle) + 1; integrate_style = new char[n]; strcpy(integrate_style,estyle); @@ -339,7 +339,7 @@ void Update::new_integrate(char *style, int narg, char **arg, if (lmp->suffix) { sflag = 1; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix); + snprintf(estyle,256,"%s/%s",style,lmp->suffix); if (integrate_map->find(estyle) != integrate_map->end()) { IntegrateCreator integrate_creator = (*integrate_map)[estyle]; integrate = integrate_creator(lmp, narg, arg); @@ -350,7 +350,7 @@ void Update::new_integrate(char *style, int narg, char **arg, if (lmp->suffix2) { sflag = 2; char estyle[256]; - sprintf(estyle,"%s/%s",style,lmp->suffix2); + snprintf(estyle,256,"%s/%s",style,lmp->suffix2); if (integrate_map->find(estyle) != integrate_map->end()) { IntegrateCreator integrate_creator = (*integrate_map)[estyle]; integrate = integrate_creator(lmp, narg, arg);