forked from lijiext/lammps
Merge pull request #2679 from akohlmey/more-unittests
Expand unit tests
This commit is contained in:
commit
b976c2d13c
|
@ -187,7 +187,7 @@ OPT.
|
|||
* :doc:`mgpt <pair_mgpt>`
|
||||
* :doc:`mie/cut (g) <pair_mie>`
|
||||
* :doc:`mliap <pair_mliap>`
|
||||
* :doc:`mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>`
|
||||
* :doc:`mm3/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
|
||||
* :doc:`momb <pair_momb>`
|
||||
* :doc:`morse (gkot) <pair_morse>`
|
||||
* :doc:`morse/smooth/linear (o) <pair_morse>`
|
||||
|
|
|
@ -2479,6 +2479,6 @@ which discuss the `QuickFF <quickff_>`_ methodology.
|
|||
* :doc:`bond_style mm3 <bond_mm3>`
|
||||
* :doc:`improper_style distharm <improper_distharm>`
|
||||
* :doc:`improper_style sqdistharm <improper_sqdistharm>`
|
||||
* :doc:`pair_style mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>`
|
||||
* :doc:`pair_style mm3/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
|
||||
* :doc:`pair_style lj/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
|
||||
* examples/USER/yaff
|
||||
|
|
|
@ -115,6 +115,18 @@ The version with "bondmax" will just run somewhat faster, due to less
|
|||
overhead in computing bond lengths and not storing them in a separate
|
||||
compute.
|
||||
|
||||
A variable can be used to implement a large variety of conditions,
|
||||
including to stop when a specific file exists. Example:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
variable exit equal is_file(EXIT)
|
||||
fix 10 all halt 100 v_exit != 0 error soft
|
||||
|
||||
Will stop the current run command when a file ``EXIT`` is created
|
||||
in the current working directory. The condition can be cleared
|
||||
by removing the file through the :doc:`shell <shell>` command.
|
||||
|
||||
The choice of operators listed above are the usual comparison
|
||||
operators. The XOR operation (exclusive or) is also included as "\|\^".
|
||||
In this context, XOR means that if either the attribute or avalue is
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
.. index:: pair_style lj/switch3/coulgauss/long
|
||||
.. index:: pair_style mm3/switch3/coulgauss/long
|
||||
|
||||
pair_style lj/switch3/coulgauss/long command
|
||||
============================================
|
||||
|
||||
pair_style mm3/switch3/coulgauss/long command
|
||||
=============================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
|
@ -10,7 +14,7 @@ Syntax
|
|||
|
||||
pair_style style args
|
||||
|
||||
* style = *lj/switch3/coulgauss/long*
|
||||
* style = *lj/switch3/coulgauss/long* or *mm3/switch3/coulgauss/long*
|
||||
* args = list of arguments for a particular style
|
||||
|
||||
.. parsed-literal::
|
||||
|
@ -20,6 +24,11 @@ Syntax
|
|||
cutoff2 = global cutoff for Coulombic (optional) (distance units)
|
||||
width = width parameter of the smoothing function (distance units)
|
||||
|
||||
*mm3/switch3/coulgauss/long* args = cutoff (cutoff2) width
|
||||
cutoff = global cutoff for MM3 (and Coulombic if only 1 arg) (distance units)
|
||||
cutoff2 = global cutoff for Coulombic (optional) (distance units)
|
||||
width = width parameter of the smoothing function (distance units)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
|
@ -31,6 +40,12 @@ Examples
|
|||
pair_style lj/switch3/coulgauss/long 12.0 10.0 3.0
|
||||
pair_coeff 1 0.2 2.5 1.2
|
||||
|
||||
pair_style mm3/switch3/coulgauss/long 12.0 3.0
|
||||
pair_coeff 1 0.2 2.5 1.2
|
||||
|
||||
pair_style mm3/switch3/coulgauss/long 12.0 10.0 3.0
|
||||
pair_coeff 1 0.2 2.5 1.2
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
@ -41,8 +56,17 @@ vdW potential
|
|||
|
||||
E = 4\epsilon \left[ \left(\frac{\sigma}{r}\right)^{12}-\left(\frac{\sigma}{r}\right)^{6} \right]
|
||||
|
||||
, which goes smoothly to zero at the cutoff r_c as defined
|
||||
by the switching function
|
||||
The *mm3/switch3/coulgauss/long* style evaluates the MM3
|
||||
vdW potential :ref:`(Allinger) <mm3-allinger1989>`
|
||||
|
||||
.. math::
|
||||
|
||||
E & = \epsilon_{ij} \left[ -2.25 \left(\frac{r_{v,ij}}{r_{ij}}\right)^6 + 1.84(10)^5 \exp\left[-12.0 r_{ij}/r_{v,ij}\right] \right] S_3(r_{ij}) \\
|
||||
r_{v,ij} & = r_{v,i} + r_{v,j} \\
|
||||
\epsilon_{ij} & = \sqrt{\epsilon_i \epsilon_j}
|
||||
|
||||
Both potentials go smoothly to zero at the cutoff r_c as defined by the
|
||||
switching function
|
||||
|
||||
.. math::
|
||||
|
||||
|
@ -85,14 +109,35 @@ commands:
|
|||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
|
||||
and cutoff distance for all of the lj/long pair styles can be mixed.
|
||||
The default mix value is *geometric*\ . See the "pair_modify" command
|
||||
for details.
|
||||
|
||||
Shifting the potential energy is not necessary because the switching
|
||||
function ensures that the potential is zero at the cut-off.
|
||||
|
||||
These pair styles support the :doc:`pair_modify <pair_modify>` table and
|
||||
options since they can tabulate the short-range portion of the
|
||||
long-range Coulombic interactions.
|
||||
|
||||
Thes pair styles do not support the :doc:`pair_modify <pair_modify>`
|
||||
tail option for adding a long-range tail correction to the
|
||||
Lennard-Jones portion of the energy and pressure.
|
||||
|
||||
These pair styles write their information to :doc:`binary restart files <restart>`, so pair_style and pair_coeff commands do not need
|
||||
to be specified in an input script that reads a restart file.
|
||||
|
||||
These pair styles can only be used via the *pair* keyword of the
|
||||
:doc:`run_style respa <run_style>` command. They do not support the
|
||||
*inner*\ , *middle*\ , *outer* keywords.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
These styles are part of the USER-YAFF package. They are only
|
||||
enabled if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
|
||||
These styles are part of the USER-YAFF package. They are only enabled
|
||||
if LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` doc page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
|
|
@ -1,109 +0,0 @@
|
|||
.. index:: pair_style mm3/switch3/coulgauss/long
|
||||
|
||||
pair_style mm3/switch3/coulgauss/long command
|
||||
=============================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style style args
|
||||
|
||||
* style = *mm3/switch3/coulgauss/long*
|
||||
* args = list of arguments for a particular style
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*mm3/switch3/coulgauss/long* args = cutoff (cutoff2) width
|
||||
cutoff = global cutoff for MM3 (and Coulombic if only 1 arg) (distance units)
|
||||
cutoff2 = global cutoff for Coulombic (optional) (distance units)
|
||||
width = width parameter of the smoothing function (distance units)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style mm3/switch3/coulgauss/long 12.0 3.0
|
||||
pair_coeff 1 0.2 2.5 1.2
|
||||
|
||||
pair_style mm3/switch3/coulgauss/long 12.0 10.0 3.0
|
||||
pair_coeff 1 0.2 2.5 1.2
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
The *mm3/switch3/coulgauss/long* style evaluates the MM3
|
||||
vdW potential :ref:`(Allinger) <mm3-allinger1989>`
|
||||
|
||||
.. math::
|
||||
|
||||
E & = \epsilon_{ij} \left[ -2.25 \left(\frac{r_{v,ij}}{r_{ij}}\right)^6 + 1.84(10)^5 \exp\left[-12.0 r_{ij}/r_{v,ij}\right] \right] S_3(r_{ij}) \\
|
||||
r_{v,ij} & = r_{v,i} + r_{v,j} \\
|
||||
\epsilon_{ij} & = \sqrt{\epsilon_i \epsilon_j}
|
||||
|
||||
, which goes smoothly to zero at the cutoff r_c as defined
|
||||
by the switching function
|
||||
|
||||
.. math::
|
||||
|
||||
S_3(r) = \left\lbrace \begin{array}{ll}
|
||||
1 & \quad\mathrm{if}\quad r < r_\mathrm{c} - w \\
|
||||
3x^2 - 2x^3 & \quad\mathrm{if}\quad r < r_\mathrm{c} \quad\mathrm{with\quad} x=\frac{r_\mathrm{c} - r}{w} \\
|
||||
0 & \quad\mathrm{if}\quad r >= r_\mathrm{c}
|
||||
\end{array} \right.
|
||||
|
||||
where w is the width defined in the arguments. This potential
|
||||
is combined with Coulomb interaction between Gaussian charge densities:
|
||||
|
||||
.. math::
|
||||
|
||||
E = \frac{q_i q_j \mathrm{erf}\left( r/\sqrt{\gamma_1^2+\gamma_2^2} \right) }{\epsilon r_{ij}}
|
||||
|
||||
where :math:`q_i` and :math:`q_j` are the charges on the 2 atoms,
|
||||
epsilon is the dielectric constant which can be set by the
|
||||
:doc:`dielectric <dielectric>` command, ::math:`\gamma_i` and
|
||||
:math:`\gamma_j` are the widths of the Gaussian charge distribution and
|
||||
erf() is the error-function. This style has to be used in conjunction
|
||||
with the :doc:`kspace_style <kspace_style>` command
|
||||
|
||||
If one cutoff is specified it is used for both the vdW and Coulomb
|
||||
terms. If two cutoffs are specified, the first is used as the cutoff
|
||||
for the vdW terms, and the second is the cutoff for the Coulombic term.
|
||||
|
||||
The following coefficients must be defined for each pair of atoms
|
||||
types via the :doc:`pair_coeff <pair_coeff>` command as in the examples
|
||||
above, or in the data file or restart files read by the
|
||||
:doc:`read_data <read_data>` or :doc:`read_restart <read_restart>`
|
||||
commands:
|
||||
|
||||
* :math:`\epsilon` (energy)
|
||||
* :math:`r_v` (distance)
|
||||
* :math:`\gamma` (distance)
|
||||
|
||||
----------
|
||||
|
||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
Mixing rules are fixed for this style as defined above.
|
||||
|
||||
Shifting the potential energy is not necessary because the switching
|
||||
function ensures that the potential is zero at the cut-off.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
These styles are part of the USER-YAFF package. They are only
|
||||
enabled if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair_coeff <pair_coeff>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
|
@ -250,7 +250,7 @@ accelerated styles exist.
|
|||
* :doc:`mgpt <pair_mgpt>` - simplified model generalized pseudopotential theory (MGPT) potential
|
||||
* :doc:`mesont/tpm <pair_mesont_tpm>` - nanotubes mesoscopic force field
|
||||
* :doc:`mie/cut <pair_mie>` - Mie potential
|
||||
* :doc:`mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>` - smoothed MM3 vdW potential with Gaussian electrostatics
|
||||
* :doc:`mm3/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>` - smoothed MM3 vdW potential with Gaussian electrostatics
|
||||
* :doc:`momb <pair_momb>` - Many-Body Metal-Organic (MOMB) force field
|
||||
* :doc:`morse <pair_morse>` - Morse potential
|
||||
* :doc:`morse/smooth/linear <pair_morse>` - linear smoothed Morse potential
|
||||
|
|
|
@ -65,8 +65,8 @@ Syntax
|
|||
bound(group,dir,region), gyration(group,region), ke(group,reigon),
|
||||
angmom(group,dim,region), torque(group,dim,region),
|
||||
inertia(group,dimdim,region), omega(group,dim,region)
|
||||
special functions = sum(x), min(x), max(x), ave(x), trap(x), slope(x), gmask(x), rmask(x), grmask(x,y), next(x)
|
||||
feature functions = is_active(category,feature,exact), is_defined(category,id,exact)
|
||||
special functions = sum(x), min(x), max(x), ave(x), trap(x), slope(x), gmask(x), rmask(x), grmask(x,y), next(x), is_file(name)
|
||||
feature functions = is_available(category,feature), is_active(category,feature), is_defined(category,id)
|
||||
atom value = id[i], mass[i], type[i], mol[i], x[i], y[i], z[i], vx[i], vy[i], vz[i], fx[i], fy[i], fz[i], q[i]
|
||||
atom vector = id, mass, type, mol, x, y, z, vx, vy, vz, fx, fy, fz, q
|
||||
compute references = c_ID, c_ID[i], c_ID[i][j], C_ID, C_ID[i]
|
||||
|
@ -429,7 +429,7 @@ argument. For *equal*\ -style variables the formula computes a scalar
|
|||
quantity, which becomes the value of the variable whenever it is
|
||||
evaluated. For *vector*\ -style variables the formula must compute a
|
||||
vector of quantities, which becomes the value of the variable whenever
|
||||
it is evaluated. The calculated vector can be on length one, but it
|
||||
it is evaluated. The calculated vector can be of length one, but it
|
||||
cannot be a simple scalar value like that produced by an equal-style
|
||||
compute. I.e. the formula for a vector-style variable must have at
|
||||
least one quantity in it that refers to a global vector produced by a
|
||||
|
@ -821,6 +821,10 @@ Special Functions
|
|||
Special functions take specific kinds of arguments, meaning their
|
||||
arguments cannot be formulas themselves.
|
||||
|
||||
The is_file(x) function is a test whether 'x' is a (readable) file
|
||||
and returns 1 in this case, otherwise it returns 0. For that 'x'
|
||||
is taken as a literal string and must not have any blanks in it.
|
||||
|
||||
The sum(x), min(x), max(x), ave(x), trap(x), and slope(x) functions
|
||||
each take 1 argument which is of the form "c_ID" or "c_ID[N]" or
|
||||
"f_ID" or "f_ID[N]" or "v_name". The first two are computes and the
|
||||
|
|
|
@ -17,21 +17,20 @@
|
|||
|
||||
#include "pair_lj_switch3_coulgauss_long.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "kspace.h"
|
||||
#include "update.h"
|
||||
#include "respa.h"
|
||||
#include "neighbor.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "math_const.h"
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "update.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace MathConst;
|
||||
|
@ -49,7 +48,6 @@ using namespace MathConst;
|
|||
PairLJSwitch3CoulGaussLong::PairLJSwitch3CoulGaussLong(LAMMPS *lmp) : Pair(lmp)
|
||||
{
|
||||
ewaldflag = pppmflag = 1;
|
||||
respa_enable = 1;
|
||||
writedata = 1;
|
||||
ftable = nullptr;
|
||||
qdist = 0.0;
|
||||
|
@ -170,8 +168,8 @@ void PairLJSwitch3CoulGaussLong::compute(int eflag, int vflag)
|
|||
expn2 = 0.0;
|
||||
erfc2 = 0.0;
|
||||
forcecoul2 = 0.0;
|
||||
}
|
||||
else {
|
||||
prefactor2 = 0.0;
|
||||
} else {
|
||||
rrij = lj2[itype][jtype]*r;
|
||||
expn2 = exp(-rrij*rrij);
|
||||
erfc2 = erfc(rrij);
|
||||
|
@ -333,42 +331,19 @@ void PairLJSwitch3CoulGaussLong::init_style()
|
|||
if (!atom->q_flag)
|
||||
error->all(FLERR,"Pair style lj/switch3/coulgauss/long requires atom attribute q");
|
||||
|
||||
// request regular or rRESPA neighbor list
|
||||
|
||||
int irequest;
|
||||
int respa = 0;
|
||||
|
||||
if (update->whichflag == 1 && strstr(update->integrate_style,"respa")) {
|
||||
if (((Respa *) update->integrate)->level_inner >= 0) respa = 1;
|
||||
if (((Respa *) update->integrate)->level_middle >= 0) respa = 2;
|
||||
}
|
||||
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
|
||||
|
||||
cut_coulsq = cut_coul * cut_coul;
|
||||
|
||||
// set rRESPA cutoffs
|
||||
|
||||
if (strstr(update->integrate_style,"respa") &&
|
||||
((Respa *) update->integrate)->level_inner >= 0)
|
||||
cut_respa = ((Respa *) update->integrate)->cutoff;
|
||||
else cut_respa = nullptr;
|
||||
|
||||
// insure use of KSpace long-range solver, set g_ewald
|
||||
|
||||
if (force->kspace == nullptr)
|
||||
error->all(FLERR,"Pair style requires a KSpace style");
|
||||
g_ewald = force->kspace->g_ewald;
|
||||
|
||||
neighbor->request(this,instance_me);
|
||||
|
||||
// setup force tables
|
||||
|
||||
if (ncoultablebits) init_tables(cut_coul,cut_respa);
|
||||
if (ncoultablebits) init_tables(cut_coul,nullptr);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
@ -413,11 +388,6 @@ double PairLJSwitch3CoulGaussLong::init_one(int i, int j)
|
|||
lj4[j][i] = lj4[i][j];
|
||||
offset[j][i] = offset[i][j];
|
||||
|
||||
// check interior rRESPA cutoff
|
||||
|
||||
if (cut_respa && MIN(cut_lj[i][j],cut_coul) < cut_respa[3])
|
||||
error->all(FLERR,"Pair cutoff < Respa interior cutoff");
|
||||
|
||||
// compute I,J contribution to long-range tail correction
|
||||
// count total # of atoms of type I and J via Allreduce
|
||||
|
||||
|
@ -610,7 +580,7 @@ double PairLJSwitch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
double &fforce)
|
||||
{
|
||||
double r2inv,r6inv,r,grij,expm2,t,erfc1,prefactor,prefactor2;
|
||||
double fraction,table,forcecoul,forcecoul2,forcelj,phicoul;
|
||||
double fraction,table,forcecoul,forcecoul2,forcelj;
|
||||
double rrij,expn2,erfc2,expb,ecoul,evdwl,trx,tr,ftr;
|
||||
|
||||
int itable;
|
||||
|
@ -643,32 +613,31 @@ double PairLJSwitch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
} else forcecoul = 0.0;
|
||||
|
||||
if (rsq < cut_ljsq[itype][jtype]) {
|
||||
r = sqrt(rsq);
|
||||
r6inv = r2inv*r2inv*r2inv;
|
||||
rrij = lj2[itype][jtype] * r;
|
||||
if (rrij==0.0) {
|
||||
forcelj = r6inv*(12.0*lj3[itype][jtype]*r6inv-6.0*lj4[itype][jtype]);
|
||||
if (lj2[itype][jtype] == 0.0) {
|
||||
expn2 = 0.0;
|
||||
erfc2 = 0.0;
|
||||
}
|
||||
else {
|
||||
forcecoul2 = 0.0;
|
||||
} else {
|
||||
r = sqrt(rsq);
|
||||
rrij = lj2[itype][jtype]*r;
|
||||
expn2 = exp(-rrij*rrij);
|
||||
erfc2 = erfc(rrij);
|
||||
prefactor2 = -force->qqrd2e*atom->q[i]*atom->q[j]/r;
|
||||
forcecoul2 = prefactor2*(erfc2+EWALD_F*rrij*expn2);
|
||||
}
|
||||
prefactor2 = -force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
||||
forcecoul2 = prefactor2 * (erfc2 + EWALD_F*rrij*expn2);
|
||||
forcelj = expb*lj1[itype][jtype]*r-6.0*lj4[itype][jtype]*r6inv;
|
||||
} else forcelj = 0.0;
|
||||
|
||||
double eng = 0.0;
|
||||
evdwl = ecoul = 0.0;
|
||||
if (rsq < cut_coulsq) {
|
||||
if (!ncoultablebits || rsq <= tabinnersq)
|
||||
phicoul = prefactor*erfc1;
|
||||
ecoul = prefactor*erfc1;
|
||||
else {
|
||||
table = etable[itable] + fraction*detable[itable];
|
||||
phicoul = atom->q[i]*atom->q[j] * table;
|
||||
ecoul = atom->q[i]*atom->q[j] * table;
|
||||
}
|
||||
if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor;
|
||||
eng += phicoul;
|
||||
if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor;
|
||||
}
|
||||
|
||||
if (rsq < cut_ljsq[itype][jtype]) {
|
||||
|
@ -678,7 +647,7 @@ double PairLJSwitch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
} else evdwl = 0.0;
|
||||
|
||||
// Truncation, see Yaff Switch3
|
||||
if (truncw>0) {
|
||||
if (truncw > 0) {
|
||||
if (rsq < cut_ljsq[itype][jtype]) {
|
||||
if (r>cut_lj[itype][jtype]-truncw) {
|
||||
trx = (cut_lj[itype][jtype]-r)*truncwi;
|
||||
|
@ -689,10 +658,9 @@ double PairLJSwitch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
}
|
||||
}
|
||||
}
|
||||
eng += evdwl*factor_lj;
|
||||
fforce = (forcecoul + factor_coul*forcecoul2 + factor_lj*forcelj) * r2inv;
|
||||
|
||||
return eng;
|
||||
return evdwl*factor_lj + ecoul;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
|
@ -17,21 +17,20 @@
|
|||
|
||||
#include "pair_mm3_switch3_coulgauss_long.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "kspace.h"
|
||||
#include "update.h"
|
||||
#include "respa.h"
|
||||
#include "neighbor.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "math_const.h"
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "update.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace MathConst;
|
||||
|
@ -49,7 +48,6 @@ using namespace MathConst;
|
|||
PairMM3Switch3CoulGaussLong::PairMM3Switch3CoulGaussLong(LAMMPS *lmp) : Pair(lmp)
|
||||
{
|
||||
ewaldflag = pppmflag = 1;
|
||||
respa_enable = 1;
|
||||
writedata = 1;
|
||||
ftable = nullptr;
|
||||
qdist = 0.0;
|
||||
|
@ -173,8 +171,7 @@ void PairMM3Switch3CoulGaussLong::compute(int eflag, int vflag)
|
|||
expn2 = 0.0;
|
||||
erfc2 = 0.0;
|
||||
forcecoul2 = 0.0;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
rrij = lj2[itype][jtype]*r;
|
||||
expn2 = exp(-rrij*rrij);
|
||||
erfc2 = erfc(rrij);
|
||||
|
@ -335,42 +332,19 @@ void PairMM3Switch3CoulGaussLong::init_style()
|
|||
if (!atom->q_flag)
|
||||
error->all(FLERR,"Pair style mm3/switch3/coulgauss/long requires atom attribute q");
|
||||
|
||||
// request regular or rRESPA neighbor list
|
||||
|
||||
int irequest;
|
||||
int respa = 0;
|
||||
|
||||
if (update->whichflag == 1 && strstr(update->integrate_style,"respa")) {
|
||||
if (((Respa *) update->integrate)->level_inner >= 0) respa = 1;
|
||||
if (((Respa *) update->integrate)->level_middle >= 0) respa = 2;
|
||||
}
|
||||
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
|
||||
|
||||
cut_coulsq = cut_coul * cut_coul;
|
||||
|
||||
// set rRESPA cutoffs
|
||||
|
||||
if (strstr(update->integrate_style,"respa") &&
|
||||
((Respa *) update->integrate)->level_inner >= 0)
|
||||
cut_respa = ((Respa *) update->integrate)->cutoff;
|
||||
else cut_respa = nullptr;
|
||||
|
||||
// insure use of KSpace long-range solver, set g_ewald
|
||||
|
||||
if (force->kspace == nullptr)
|
||||
error->all(FLERR,"Pair style requires a KSpace style");
|
||||
g_ewald = force->kspace->g_ewald;
|
||||
|
||||
neighbor->request(this,instance_me);
|
||||
|
||||
// setup force tables
|
||||
|
||||
if (ncoultablebits) init_tables(cut_coul,cut_respa);
|
||||
if (ncoultablebits) init_tables(cut_coul,nullptr);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
@ -414,11 +388,6 @@ double PairMM3Switch3CoulGaussLong::init_one(int i, int j)
|
|||
lj4[j][i] = lj4[i][j];
|
||||
offset[j][i] = offset[i][j];
|
||||
|
||||
// check interior rRESPA cutoff
|
||||
|
||||
if (cut_respa && MIN(cut_lj[i][j],cut_coul) < cut_respa[3])
|
||||
error->all(FLERR,"Pair cutoff < Respa interior cutoff");
|
||||
|
||||
// compute I,J contribution to long-range tail correction
|
||||
// count total # of atoms of type I and J via Allreduce
|
||||
|
||||
|
@ -610,8 +579,8 @@ double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
double &fforce)
|
||||
{
|
||||
double r2inv,r6inv,r,grij,expm2,t,erfc1,prefactor,prefactor2;
|
||||
double fraction,table,forcecoul,forcecoul2,forcelj,phicoul;
|
||||
double expb,rrij,expn2,erfc2,ecoul,evdwl,trx,tr,ftr;
|
||||
double fraction,table,forcecoul,forcecoul2,forcelj;
|
||||
double expb,rrij,expn2,erfc2,evdwl,ecoul,trx,tr,ftr;
|
||||
|
||||
int itable;
|
||||
|
||||
|
@ -644,32 +613,34 @@ double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
|
||||
if (rsq < cut_ljsq[itype][jtype]) {
|
||||
r = sqrt(rsq);
|
||||
r6inv = r2inv*r2inv*r2inv;
|
||||
expb = lj3[itype][jtype]*exp(-lj1[itype][jtype]*r);
|
||||
rrij = lj2[itype][jtype] * r;
|
||||
if (rrij==0.0) {
|
||||
forcelj = expb*lj1[itype][jtype]*r;
|
||||
r6inv = r2inv*r2inv*r2inv;
|
||||
forcelj -= 6.0*lj4[itype][jtype]*r6inv;
|
||||
|
||||
if (lj2[itype][jtype] == 0.0) {
|
||||
expn2 = 0.0;
|
||||
erfc2 = 0.0;
|
||||
}
|
||||
else {
|
||||
forcecoul2 = 0.0;
|
||||
prefactor2 = 0.0;
|
||||
} else {
|
||||
rrij = lj2[itype][jtype]*r;
|
||||
expn2 = exp(-rrij*rrij);
|
||||
erfc2 = erfc(rrij);
|
||||
prefactor2 = -force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
||||
forcecoul2 = prefactor2 * (erfc2 + EWALD_F*rrij*expn2);
|
||||
}
|
||||
prefactor2 = -force->qqrd2e * atom->q[i]*atom->q[j]/r;
|
||||
forcecoul2 = prefactor2 * (erfc2 + EWALD_F*rrij*expn2);
|
||||
forcelj = expb*lj1[itype][jtype]*r-6.0*lj4[itype][jtype]*r6inv;
|
||||
} else forcelj = 0.0;
|
||||
} else expb = forcelj = 0.0;
|
||||
|
||||
double eng = 0.0;
|
||||
evdwl = ecoul = 0.0;
|
||||
if (rsq < cut_coulsq) {
|
||||
if (!ncoultablebits || rsq <= tabinnersq)
|
||||
phicoul = prefactor*erfc1;
|
||||
ecoul = prefactor*erfc1;
|
||||
else {
|
||||
table = etable[itable] + fraction*detable[itable];
|
||||
phicoul = atom->q[i]*atom->q[j] * table;
|
||||
ecoul = atom->q[i]*atom->q[j] * table;
|
||||
}
|
||||
if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor;
|
||||
eng += phicoul;
|
||||
if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor;
|
||||
}
|
||||
|
||||
if (rsq < cut_ljsq[itype][jtype]) {
|
||||
|
@ -678,7 +649,7 @@ double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
} else evdwl = 0.0;
|
||||
|
||||
// Truncation, see Yaff Switch3
|
||||
if (truncw>0) {
|
||||
if (truncw > 0) {
|
||||
if (rsq < cut_ljsq[itype][jtype]) {
|
||||
if (r>cut_lj[itype][jtype]-truncw) {
|
||||
trx = (cut_lj[itype][jtype]-r)*truncwi;
|
||||
|
@ -689,10 +660,10 @@ double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype,
|
|||
}
|
||||
}
|
||||
}
|
||||
eng += evdwl*factor_lj;
|
||||
fforce = (forcecoul + factor_coul*forcecoul2 + factor_lj*forcelj) * r2inv;
|
||||
|
||||
return eng;
|
||||
return ecoul + evdwl*factor_lj;
|
||||
;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
11
src/info.cpp
11
src/info.cpp
|
@ -64,9 +64,6 @@
|
|||
#endif
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
// same as in variable.cpp
|
||||
enum {INDEX,LOOP,WORLD,UNIVERSE,ULOOP,STRING,GETENV,
|
||||
SCALARFILE,ATOMFILE,FORMAT,EQUAL,ATOM,VECTOR,PYTHON,INTERNAL};
|
||||
|
||||
enum {COMPUTES=1<<0,
|
||||
DUMPS=1<<1,
|
||||
|
@ -106,9 +103,11 @@ static const int STYLES = ATOM_STYLES | INTEGRATE_STYLES | MINIMIZE_STYLES
|
|||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
// must match enumerator in variable.h
|
||||
static const char *varstyles[] = {
|
||||
"index", "loop", "world", "universe", "uloop", "string", "getenv",
|
||||
"file", "atomfile", "format", "equal", "atom", "vector", "python", "internal", "(unknown)"};
|
||||
"file", "atomfile", "format", "equal", "atom", "vector", "python",
|
||||
"internal", "(unknown)"};
|
||||
|
||||
static const char *mapstyles[] = { "none", "array", "hash", "yes" };
|
||||
|
||||
|
@ -649,11 +648,11 @@ void Info::command(int narg, char **arg)
|
|||
fmt::print(out,"Variable[{:3d}]: {:16} style = {:16} def =",
|
||||
i,std::string(names[i])+',',
|
||||
std::string(varstyles[style[i]])+',');
|
||||
if (style[i] == INTERNAL) {
|
||||
if (style[i] == Variable::INTERNAL) {
|
||||
fmt::print(out,"{:.8}\n",input->variable->dvalue[i]);
|
||||
continue;
|
||||
}
|
||||
if ((style[i] != LOOP) && (style[i] != ULOOP))
|
||||
if ((style[i] != Variable::LOOP) && (style[i] != Variable::ULOOP))
|
||||
ndata = input->variable->num[i];
|
||||
for (int j=0; j < ndata; ++j)
|
||||
if (data[i][j]) fmt::print(out," {}",data[i][j]);
|
||||
|
|
107
src/variable.cpp
107
src/variable.cpp
|
@ -39,6 +39,7 @@
|
|||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <unistd.h>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
@ -53,8 +54,6 @@ using namespace MathConst;
|
|||
|
||||
#define MYROUND(a) (( a-floor(a) ) >= .5) ? ceil(a) : floor(a)
|
||||
|
||||
enum{INDEX,LOOP,WORLD,UNIVERSE,ULOOP,STRING,GETENV,
|
||||
SCALARFILE,ATOMFILE,FORMAT,EQUAL,ATOM,VECTOR,PYTHON,INTERNAL};
|
||||
enum{ARG,OP};
|
||||
|
||||
// customize by adding a function
|
||||
|
@ -66,7 +65,7 @@ enum{DONE,ADD,SUBTRACT,MULTIPLY,DIVIDE,CARAT,MODULO,UNARY,
|
|||
SQRT,EXP,LN,LOG,ABS,SIN,COS,TAN,ASIN,ACOS,ATAN,ATAN2,
|
||||
RANDOM,NORMAL,CEIL,FLOOR,ROUND,RAMP,STAGGER,LOGFREQ,LOGFREQ2,
|
||||
LOGFREQ3,STRIDE,STRIDE2,VDISPLACE,SWIGGLE,CWIGGLE,GMASK,RMASK,
|
||||
GRMASK,IS_ACTIVE,IS_DEFINED,IS_AVAILABLE,
|
||||
GRMASK,IS_ACTIVE,IS_DEFINED,IS_AVAILABLE,IS_FILE,
|
||||
VALUE,ATOMARRAY,TYPEARRAY,INTARRAY,BIGINTARRAY,VECTORARRAY};
|
||||
|
||||
// customize by adding a special function
|
||||
|
@ -76,6 +75,20 @@ enum{SUM,XMIN,XMAX,AVE,TRAP,SLOPE};
|
|||
|
||||
#define BIG 1.0e20
|
||||
|
||||
// constants for variable expressions. customize by adding new items.
|
||||
// if needed (cf. 'version') initialize in Variable class constructor.
|
||||
|
||||
static std::unordered_map<std::string, double> constants = {
|
||||
{"PI", MY_PI },
|
||||
{"version", -1 },
|
||||
{"yes", 1 },
|
||||
{"no", 0 },
|
||||
{"on", 1 },
|
||||
{"off", 0 },
|
||||
{"true", 1 },
|
||||
{"false", 0 }
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
Variable::Variable(LAMMPS *lmp) : Pointers(lmp)
|
||||
|
@ -98,6 +111,10 @@ Variable::Variable(LAMMPS *lmp) : Pointers(lmp)
|
|||
randomequal = nullptr;
|
||||
randomatom = nullptr;
|
||||
|
||||
// override initializer since LAMMPS class needs to be instantiated
|
||||
|
||||
constants["version"] = lmp->num_ver;
|
||||
|
||||
// customize by assigning a precedence level
|
||||
|
||||
precedence[DONE] = 0;
|
||||
|
@ -517,12 +534,10 @@ void Variable::set(int narg, char **arg)
|
|||
|
||||
if (replaceflag) return;
|
||||
|
||||
if (!utils::is_id(arg[0]))
|
||||
error->all(FLERR,fmt::format("Variable name '{}' must have only alphanu"
|
||||
"meric characters or underscores",arg[0]));
|
||||
names[nvar] = utils::strdup(arg[0]);
|
||||
for (auto c : std::string(arg[0]))
|
||||
if (!isalnum(c) && (c != '_'))
|
||||
error->all(FLERR,fmt::format("Variable name '{}' must have only "
|
||||
"alphanumeric characters or underscores",
|
||||
names[nvar]));
|
||||
nvar++;
|
||||
}
|
||||
|
||||
|
@ -966,9 +981,12 @@ double Variable::compute_equal(int ivar)
|
|||
don't need to flag eval_in_progress since is an immediate variable
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double Variable::compute_equal(char *str)
|
||||
double Variable::compute_equal(const std::string &str)
|
||||
{
|
||||
return evaluate(str,nullptr,-1);
|
||||
char *ptr = utils::strdup(str);
|
||||
double val = evaluate(ptr,nullptr,-1);
|
||||
delete[] ptr;
|
||||
return val;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
@ -1215,6 +1233,9 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
|
|||
int i = 0;
|
||||
int expect = ARG;
|
||||
|
||||
if (str == nullptr)
|
||||
print_var_error(FLERR,"Invalid syntax in variable formula",ivar);
|
||||
|
||||
while (1) {
|
||||
onechar = str[i];
|
||||
|
||||
|
@ -2093,8 +2114,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
|
|||
// constant
|
||||
// ----------------
|
||||
|
||||
} else if (is_constant(word)) {
|
||||
value1 = constant(word);
|
||||
} else if (constants.find(word) != constants.end()) {
|
||||
value1 = constants[word];
|
||||
if (tree) {
|
||||
Tree *newtree = new Tree();
|
||||
newtree->type = VALUE;
|
||||
|
@ -4058,7 +4079,7 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
|
|||
strcmp(word,"gmask") && strcmp(word,"rmask") &&
|
||||
strcmp(word,"grmask") && strcmp(word,"next") &&
|
||||
strcmp(word,"is_active") && strcmp(word,"is_defined") &&
|
||||
strcmp(word,"is_available"))
|
||||
strcmp(word,"is_available") && strcmp(word,"is_file"))
|
||||
return 0;
|
||||
|
||||
// parse contents for comma-separated args
|
||||
|
@ -4467,6 +4488,26 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
|
|||
|
||||
// save value in tree or on argstack
|
||||
|
||||
if (tree) {
|
||||
Tree *newtree = new Tree();
|
||||
newtree->type = VALUE;
|
||||
newtree->value = value;
|
||||
newtree->first = newtree->second = nullptr;
|
||||
newtree->nextra = 0;
|
||||
treestack[ntreestack++] = newtree;
|
||||
} else argstack[nargstack++] = value;
|
||||
|
||||
} else if (strcmp(word,"is_file") == 0) {
|
||||
if (narg != 1)
|
||||
print_var_error(FLERR,"Invalid is_file() function in "
|
||||
"variable formula",ivar);
|
||||
|
||||
FILE *fp = fopen(args[0],"r");
|
||||
value = (fp == nullptr) ? 0.0 : 1.0;
|
||||
if (fp) fclose(fp);
|
||||
|
||||
// save value in tree or on argstack
|
||||
|
||||
if (tree) {
|
||||
Tree *newtree = new Tree();
|
||||
newtree->type = VALUE;
|
||||
|
@ -4663,43 +4704,6 @@ void Variable::atom_vector(char *word, Tree **tree,
|
|||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
check if word matches a constant
|
||||
return 1 if yes, else 0
|
||||
customize by adding a constant: PI, version
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
int Variable::is_constant(char *word)
|
||||
{
|
||||
if (strcmp(word,"PI") == 0) return 1;
|
||||
if (strcmp(word,"version") == 0) return 1;
|
||||
if (strcmp(word,"yes") == 0) return 1;
|
||||
if (strcmp(word,"no") == 0) return 1;
|
||||
if (strcmp(word,"on") == 0) return 1;
|
||||
if (strcmp(word,"off") == 0) return 1;
|
||||
if (strcmp(word,"true") == 0) return 1;
|
||||
if (strcmp(word,"false") == 0) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
process a constant in formula
|
||||
customize by adding a constant: PI, version
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double Variable::constant(char *word)
|
||||
{
|
||||
if (strcmp(word,"PI") == 0) return MY_PI;
|
||||
if (strcmp(word,"version") == 0) return lmp->num_ver;
|
||||
if (strcmp(word,"yes") == 0) return 1.0;
|
||||
if (strcmp(word,"no") == 0) return 0.0;
|
||||
if (strcmp(word,"on") == 0) return 1.0;
|
||||
if (strcmp(word,"off") == 0) return 0.0;
|
||||
if (strcmp(word,"true") == 0) return 1.0;
|
||||
if (strcmp(word,"false") == 0) return 0.0;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
parse string for comma-separated args
|
||||
store copy of each arg in args array
|
||||
|
@ -4725,7 +4729,6 @@ int Variable::parse_args(char *str, char **args)
|
|||
return narg;
|
||||
}
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
find next comma in str
|
||||
skip commas inside one or more nested parenthesis
|
||||
|
@ -5059,7 +5062,7 @@ VarReader::VarReader(LAMMPS *lmp, char *name, char *file, int flag) :
|
|||
id_fix = nullptr;
|
||||
buffer = nullptr;
|
||||
|
||||
if (style == ATOMFILE) {
|
||||
if (style == Variable::ATOMFILE) {
|
||||
if (atom->map_style == Atom::MAP_NONE)
|
||||
error->all(FLERR,"Cannot use atomfile-style "
|
||||
"variable unless an atom map exists");
|
||||
|
|
|
@ -41,7 +41,7 @@ class Variable : protected Pointers {
|
|||
|
||||
char *retrieve(const char *);
|
||||
double compute_equal(int);
|
||||
double compute_equal(char *);
|
||||
double compute_equal(const std::string &);
|
||||
void compute_atom(int, int, double *, int, int);
|
||||
int compute_vector(int, double **);
|
||||
void internal_set(int, double);
|
||||
|
@ -53,6 +53,10 @@ class Variable : protected Pointers {
|
|||
int nvar; // # of defined variables
|
||||
char **names; // name of each variable
|
||||
|
||||
// must match "varstyles" array in info.cpp
|
||||
enum{INDEX,LOOP,WORLD,UNIVERSE,ULOOP,STRING,GETENV,
|
||||
SCALARFILE,ATOMFILE,FORMAT,EQUAL,ATOM,VECTOR,PYTHON,INTERNAL};
|
||||
|
||||
private:
|
||||
int me;
|
||||
int maxvar; // max # of variables following lists can hold
|
||||
|
@ -122,8 +126,6 @@ class Variable : protected Pointers {
|
|||
Tree **, Tree **, int &, double *, int &);
|
||||
int is_atom_vector(char *);
|
||||
void atom_vector(char *, Tree **, Tree **, int &);
|
||||
int is_constant(char *);
|
||||
double constant(char *);
|
||||
int parse_args(char *, char **);
|
||||
char *find_next_comma(char *);
|
||||
void print_var_error(const std::string &, int, const std::string &,
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
include(GTest)
|
||||
|
||||
# check if we can run the compiled executable and whether it prints
|
||||
# the LAMMPS version header in the output for an empty input
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/in.empty "")
|
||||
add_test(NAME RunLammps
|
||||
COMMAND $<TARGET_FILE:lmp> -log none -echo none -in in.empty
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(RunLammps PROPERTIES
|
||||
PASS_REGULAR_EXPRESSION "^LAMMPS \\([0-9]+ [A-Za-z]+ 2[0-9][0-9][0-9]\\)")
|
||||
|
||||
if(BUILD_MPI)
|
||||
function(add_mpi_test)
|
||||
set(MPI_TEST_NUM_PROCS 1)
|
||||
|
|
|
@ -191,7 +191,7 @@ TEST(MPI, multi_partition)
|
|||
EXPECT_EQ(lammps_extract_setting(lmp, "world_rank"), 0);
|
||||
|
||||
char *part_id = (char *)lammps_extract_variable(lmp, "partition", nullptr);
|
||||
ASSERT_THAT(part_id, StrEq(std::to_string(me+1)));
|
||||
ASSERT_THAT(part_id, StrEq(std::to_string(me + 1)));
|
||||
|
||||
lammps_close(lmp);
|
||||
};
|
||||
|
|
|
@ -37,6 +37,10 @@ add_executable(test_groups test_groups.cpp)
|
|||
target_link_libraries(test_groups PRIVATE lammps GTest::GMock GTest::GTest)
|
||||
add_test(NAME Groups COMMAND test_groups WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
add_executable(test_variables test_variables.cpp)
|
||||
target_link_libraries(test_variables PRIVATE lammps GTest::GMock GTest::GTest)
|
||||
add_test(NAME Variables COMMAND test_variables WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
add_executable(test_kim_commands test_kim_commands.cpp)
|
||||
if(KIM_EXTRA_UNITTESTS)
|
||||
if(CURL_FOUND)
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
|
@ -29,12 +30,6 @@
|
|||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
#if defined(OMPI_MAJOR_VERSION)
|
||||
const bool have_openmpi = true;
|
||||
#else
|
||||
const bool have_openmpi = false;
|
||||
#endif
|
||||
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
@ -42,54 +37,22 @@ using ::testing::ExitedWithCode;
|
|||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
if (verbose) std::cout << mesg; \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} else { \
|
||||
if (!have_openmpi) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
if (verbose) std::cout << mesg; \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} \
|
||||
}
|
||||
|
||||
class GroupTest : public ::testing::Test {
|
||||
class GroupTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
Group *group;
|
||||
Domain *domain;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"GroupTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
group = lmp->group;
|
||||
testbinary = "GroupTest";
|
||||
LAMMPSTest::SetUp();
|
||||
group = lmp->group;
|
||||
domain = lmp->domain;
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
std::cout.flush();
|
||||
}
|
||||
|
||||
void command(const std::string &cmd) { lmp->input->one(cmd); }
|
||||
|
||||
void atomic_system()
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
command("lattice sc 1.0 origin 0.125 0.125 0.125");
|
||||
command("region box block -2 2 -2 2 -2 2");
|
||||
|
@ -101,23 +64,25 @@ protected:
|
|||
command("region top block INF INF -2.0 -1.0 INF INF");
|
||||
command("set region left type 2");
|
||||
command("set region right type 3");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void molecular_system()
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("fix props all property/atom mol rmass q");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
atomic_system();
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable molid atom floor(id/4)+1");
|
||||
command("variable charge atom 2.0*sin(PI/32*id)");
|
||||
command("set atom * mol v_molid");
|
||||
command("set atom * charge v_charge");
|
||||
command("set type 1 mass 0.5");
|
||||
command("set type 2*4 mass 2.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -131,7 +96,7 @@ TEST_F(GroupTest, EmptyDelete)
|
|||
{
|
||||
atomic_system();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group new1 empty");
|
||||
command("group new2 empty");
|
||||
command("group new2 empty");
|
||||
|
@ -143,16 +108,16 @@ TEST_F(GroupTest, EmptyDelete)
|
|||
command("compute 1 new3 ke");
|
||||
command("dump 1 new4 atom 50 dump.melt");
|
||||
command("atom_modify first new5");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->ngroup, 7);
|
||||
TEST_FAILURE(".*ERROR: Illegal group command.*", command("group new3 xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal group command.*", command("group new3 empty xxx"););
|
||||
TEST_FAILURE(".*ERROR: Group command requires atom attribute molecule.*",
|
||||
command("group new2 include molecule"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
group->assign("new1 delete");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->ngroup, 6);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal group command.*", command("group new2 delete xxx"););
|
||||
|
@ -172,13 +137,13 @@ TEST_F(GroupTest, RegionClear)
|
|||
{
|
||||
atomic_system();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group one region left");
|
||||
command("group two region right");
|
||||
command("group three empty");
|
||||
command("group four region left");
|
||||
command("group four region right");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("one")), 16);
|
||||
ASSERT_EQ(group->count(group->find("two")), 16);
|
||||
ASSERT_EQ(group->count(group->find("three")), 0);
|
||||
|
@ -189,20 +154,20 @@ TEST_F(GroupTest, RegionClear)
|
|||
TEST_FAILURE(".*ERROR: Illegal group command.*", command("group three region left xxx"););
|
||||
TEST_FAILURE(".*ERROR: Group region ID does not exist.*", command("group four region dummy"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group one clear");
|
||||
command("group two clear");
|
||||
command("group three clear");
|
||||
command("group four clear");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("one")), 0);
|
||||
ASSERT_EQ(group->count(group->find("two")), 0);
|
||||
ASSERT_EQ(group->count(group->find("three")), 0);
|
||||
ASSERT_EQ(group->count(group->find("four")), 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("delete_atoms region box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("all")), 0);
|
||||
}
|
||||
|
||||
|
@ -214,7 +179,7 @@ TEST_F(GroupTest, SelectRestart)
|
|||
for (int i = 0; i < lmp->atom->natoms; ++i)
|
||||
flags[i] = i & 1;
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group one region left");
|
||||
command("group two region right");
|
||||
group->create("half", flags);
|
||||
|
@ -224,7 +189,7 @@ TEST_F(GroupTest, SelectRestart)
|
|||
command("group five subtract all half four");
|
||||
command("group top region top");
|
||||
command("group six intersect half top");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("one")), 16);
|
||||
ASSERT_EQ(group->count(group->find("two")), 16);
|
||||
ASSERT_EQ(group->count(group->find("three")), 0);
|
||||
|
@ -235,12 +200,12 @@ TEST_F(GroupTest, SelectRestart)
|
|||
ASSERT_EQ(group->count(group->find("half"), domain->find_region("top")), 8);
|
||||
ASSERT_DOUBLE_EQ(group->mass(group->find("half"), domain->find_region("top")), 8.0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("write_restart group.restart");
|
||||
command("clear");
|
||||
command("read_restart group.restart");
|
||||
unlink("group.restart");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
group = lmp->group;
|
||||
ASSERT_EQ(group->count(group->find("one")), 16);
|
||||
ASSERT_EQ(group->count(group->find("two")), 16);
|
||||
|
@ -250,11 +215,11 @@ TEST_F(GroupTest, SelectRestart)
|
|||
ASSERT_EQ(group->count(group->find("five")), 16);
|
||||
ASSERT_DOUBLE_EQ(group->mass(group->find("six")), 8.0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group four clear");
|
||||
command("group five clear");
|
||||
command("group six clear");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Group ID does not exist.*", command("group four union one two xxx"););
|
||||
TEST_FAILURE(".*ERROR: Group ID does not exist.*",
|
||||
|
@ -267,14 +232,14 @@ TEST_F(GroupTest, Molecular)
|
|||
{
|
||||
molecular_system();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group one region left");
|
||||
command("group two region right");
|
||||
command("group half id 1:1000:2");
|
||||
command("group top region top");
|
||||
command("group three intersect half top");
|
||||
command("group three include molecule");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("one")), 16);
|
||||
ASSERT_EQ(group->count(group->find("two")), 16);
|
||||
ASSERT_EQ(group->count(group->find("three")), 15);
|
||||
|
@ -290,36 +255,36 @@ TEST_F(GroupTest, Dynamic)
|
|||
{
|
||||
atomic_system();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable step atom id<=step");
|
||||
command("group half id 1:1000:2");
|
||||
command("group grow dynamic half var step every 1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("grow")), 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("run 10 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("grow")), 5);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group grow dynamic half var step every 1");
|
||||
command("run 10 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("grow")), 10);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group grow static");
|
||||
command("run 10 post no");
|
||||
command("group part variable step");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("grow")), 10);
|
||||
ASSERT_EQ(group->count(group->find("part")), 30);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group grow dynamic half var step every 1");
|
||||
command("run 10 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->count(group->find("grow")), 20);
|
||||
TEST_FAILURE(".*ERROR: Cannot subtract groups using a dynamic group.*",
|
||||
command("group chunk subtract half grow"););
|
||||
|
@ -328,10 +293,10 @@ TEST_F(GroupTest, Dynamic)
|
|||
TEST_FAILURE(".*ERROR: Cannot intersect groups using a dynamic group.*",
|
||||
command("group chunk intersect half grow"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group grow delete");
|
||||
command("variable ramp equal step");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(group->ngroup, 4);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Group dynamic cannot reference itself.*",
|
||||
|
@ -351,7 +316,7 @@ int main(int argc, char **argv)
|
|||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (have_openmpi && !LAMMPS_NS::Info::has_exceptions())
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -22,6 +22,7 @@
|
|||
#include "utils.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
@ -32,12 +33,6 @@
|
|||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
#if defined(OMPI_MAJOR_VERSION)
|
||||
const bool have_openmpi = true;
|
||||
#else
|
||||
const bool have_openmpi = false;
|
||||
#endif
|
||||
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
@ -45,49 +40,22 @@ using ::testing::ExitedWithCode;
|
|||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} else { \
|
||||
if (!have_openmpi) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} \
|
||||
}
|
||||
|
||||
class LatticeRegionTest : public ::testing::Test {
|
||||
class LatticeRegionTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"LatticeRegionTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
lmp->input->one("units metal");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
testbinary = "LatticeRegionTest";
|
||||
LAMMPSTest::SetUp();
|
||||
command("units metal");
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_none)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice none 2.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice none 2.0");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::NONE);
|
||||
ASSERT_EQ(lattice->xlattice, 2.0);
|
||||
|
@ -96,15 +64,15 @@ TEST_F(LatticeRegionTest, lattice_none)
|
|||
ASSERT_EQ(lattice->nbasis, 0);
|
||||
ASSERT_EQ(lattice->basis, nullptr);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", lmp->input->one("lattice"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", lmp->input->one("lattice xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", lmp->input->one("lattice none 1.0 origin"););
|
||||
TEST_FAILURE(".*ERROR: Expected floating point.*", lmp->input->one("lattice none xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", command("lattice"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", command("lattice xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", command("lattice none 1.0 origin"););
|
||||
TEST_FAILURE(".*ERROR: Expected floating point.*", command("lattice none xxx"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units lj");
|
||||
lmp->input->one("lattice none 1.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units lj");
|
||||
command("lattice none 1.0");
|
||||
END_HIDE_OUTPUT();
|
||||
lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->xlattice, 1.0);
|
||||
ASSERT_EQ(lattice->ylattice, 1.0);
|
||||
|
@ -113,10 +81,9 @@ TEST_F(LatticeRegionTest, lattice_none)
|
|||
|
||||
TEST_F(LatticeRegionTest, lattice_sc)
|
||||
{
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice sc 1.0 spacing 1.5 2.0 3.0");
|
||||
auto output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("lattice sc 1.0 spacing 1.5 2.0 3.0");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Lattice spacing in x,y,z = 1.50* 2.0* 3.0*.*"));
|
||||
|
||||
auto lattice = lmp->domain->lattice;
|
||||
|
@ -124,10 +91,9 @@ TEST_F(LatticeRegionTest, lattice_sc)
|
|||
ASSERT_EQ(lattice->ylattice, 2.0);
|
||||
ASSERT_EQ(lattice->zlattice, 3.0);
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice sc 2.0");
|
||||
output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("lattice sc 2.0");
|
||||
output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Lattice spacing in x,y,z = 2.0* 2.0* 2.0*.*"));
|
||||
|
||||
lattice = lmp->domain->lattice;
|
||||
|
@ -151,43 +117,42 @@ TEST_F(LatticeRegionTest, lattice_sc)
|
|||
ASSERT_EQ(lattice->basis[0][2], 0.0);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*",
|
||||
lmp->input->one("lattice sc 1.0 origin 1.0 1.0 1.0"););
|
||||
command("lattice sc 1.0 origin 1.0 1.0 1.0"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", command("lattice sc 1.0 origin 1.0"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*",
|
||||
lmp->input->one("lattice sc 1.0 origin 1.0"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*",
|
||||
lmp->input->one("lattice sc 1.0 origin 0.0 0.0 0.0 xxx"););
|
||||
command("lattice sc 1.0 origin 0.0 0.0 0.0 xxx"););
|
||||
TEST_FAILURE(".*ERROR: Expected floating point.*",
|
||||
lmp->input->one("lattice sc 1.0 origin xxx 1.0 1.0"););
|
||||
command("lattice sc 1.0 origin xxx 1.0 1.0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice orient vectors are not orthogonal.*",
|
||||
lmp->input->one("lattice sc 1.0 orient x 2 2 0"););
|
||||
command("lattice sc 1.0 orient x 2 2 0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice orient vectors are not right-handed.*",
|
||||
lmp->input->one("lattice sc 1.0 orient y 0 -1 0"););
|
||||
command("lattice sc 1.0 orient y 0 -1 0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice spacings are invalid.*",
|
||||
lmp->input->one("lattice sc 1.0 spacing 0.0 1.0 1.0"););
|
||||
command("lattice sc 1.0 spacing 0.0 1.0 1.0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice spacings are invalid.*",
|
||||
lmp->input->one("lattice sc 1.0 spacing 1.0 -0.1 1.0"););
|
||||
command("lattice sc 1.0 spacing 1.0 -0.1 1.0"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units lj");
|
||||
lmp->input->one("lattice sc 2.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units lj");
|
||||
command("lattice sc 2.0");
|
||||
END_HIDE_OUTPUT();
|
||||
lattice = lmp->domain->lattice;
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, pow(0.5, 1.0 / 3.0));
|
||||
ASSERT_DOUBLE_EQ(lattice->ylattice, pow(0.5, 1.0 / 3.0));
|
||||
ASSERT_DOUBLE_EQ(lattice->zlattice, pow(0.5, 1.0 / 3.0));
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice sc 1.0"););
|
||||
command("lattice sc 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_bcc)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice bcc 4.2 orient x 1 1 0 orient y -1 1 0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice bcc 4.2 orient x 1 1 0 orient y -1 1 0");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::BCC);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, sqrt(2.0) * 4.2);
|
||||
|
@ -201,18 +166,18 @@ TEST_F(LatticeRegionTest, lattice_bcc)
|
|||
ASSERT_EQ(lattice->basis[1][1], 0.5);
|
||||
ASSERT_EQ(lattice->basis[1][2], 0.5);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice bcc 1.0"););
|
||||
command("lattice bcc 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_fcc)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice fcc 3.5 origin 0.5 0.5 0.5");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice fcc 3.5 origin 0.5 0.5 0.5");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::FCC);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, 3.5);
|
||||
|
@ -233,24 +198,23 @@ TEST_F(LatticeRegionTest, lattice_fcc)
|
|||
ASSERT_EQ(lattice->basis[3][2], 0.5);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Invalid option in lattice command for non-custom style.*",
|
||||
lmp->input->one("lattice fcc 1.0 basis 0.0 0.0 0.0"););
|
||||
command("lattice fcc 1.0 basis 0.0 0.0 0.0"););
|
||||
TEST_FAILURE(".*ERROR: Invalid option in lattice command for non-custom style.*",
|
||||
lmp->input->one("lattice fcc 1.0 a1 0.0 1.0 0.0"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*",
|
||||
lmp->input->one("lattice fcc 1.0 orient w 1 0 0"););
|
||||
command("lattice fcc 1.0 a1 0.0 1.0 0.0"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*", command("lattice fcc 1.0 orient w 1 0 0"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice fcc 1.0"););
|
||||
command("lattice fcc 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_hcp)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice hcp 3.0 orient z 0 0 1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice hcp 3.0 orient z 0 0 1");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::HCP);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, 3.0);
|
||||
|
@ -280,21 +244,21 @@ TEST_F(LatticeRegionTest, lattice_hcp)
|
|||
ASSERT_DOUBLE_EQ(lattice->a3[2], sqrt(8.0 / 3.0));
|
||||
|
||||
TEST_FAILURE(".*ERROR: Invalid option in lattice command for non-custom style.*",
|
||||
lmp->input->one("lattice hcp 1.0 a2 0.0 1.0 0.0"););
|
||||
command("lattice hcp 1.0 a2 0.0 1.0 0.0"););
|
||||
TEST_FAILURE(".*ERROR: Invalid option in lattice command for non-custom style.*",
|
||||
lmp->input->one("lattice hcp 1.0 a3 0.0 1.0 0.0"););
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
command("lattice hcp 1.0 a3 0.0 1.0 0.0"););
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice hcp 1.0"););
|
||||
command("lattice hcp 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_diamond)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice diamond 4.1 orient x 1 1 2 orient y -1 1 0 orient z -1 -1 1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice diamond 4.1 orient x 1 1 2 orient y -1 1 0 orient z -1 -1 1");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::DIAMOND);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, 6.6952719636073539);
|
||||
|
@ -335,19 +299,19 @@ TEST_F(LatticeRegionTest, lattice_diamond)
|
|||
ASSERT_EQ(lattice->a3[1], 0.0);
|
||||
ASSERT_EQ(lattice->a3[2], 1.0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice diamond 1.0"););
|
||||
command("lattice diamond 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_sq)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
lmp->input->one("lattice sq 3.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
command("lattice sq 3.0");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::SQ);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, 3.0);
|
||||
|
@ -358,23 +322,22 @@ TEST_F(LatticeRegionTest, lattice_sq)
|
|||
ASSERT_EQ(lattice->basis[0][1], 0.0);
|
||||
ASSERT_EQ(lattice->basis[0][2], 0.0);
|
||||
|
||||
TEST_FAILURE(
|
||||
".*ERROR: Lattice settings are not compatible with 2d simulation.*",
|
||||
lmp->input->one("lattice sq 1.0 orient x 1 1 2 orient y -1 1 0 orient z -1 -1 1"););
|
||||
TEST_FAILURE(".*ERROR: Lattice settings are not compatible with 2d simulation.*",
|
||||
command("lattice sq 1.0 orient x 1 1 2 orient y -1 1 0 orient z -1 -1 1"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 3");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 3");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice sq 1.0"););
|
||||
command("lattice sq 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_sq2)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
lmp->input->one("lattice sq2 2.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
command("lattice sq2 2.0");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::SQ2);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, 2.0);
|
||||
|
@ -388,19 +351,19 @@ TEST_F(LatticeRegionTest, lattice_sq2)
|
|||
ASSERT_EQ(lattice->basis[1][1], 0.5);
|
||||
ASSERT_EQ(lattice->basis[1][2], 0.0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 3");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 3");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice sq2 1.0"););
|
||||
command("lattice sq2 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_hex)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
lmp->input->one("lattice hex 2.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
command("lattice hex 2.0");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::HEX);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, 2.0);
|
||||
|
@ -423,34 +386,34 @@ TEST_F(LatticeRegionTest, lattice_hex)
|
|||
ASSERT_EQ(lattice->a3[1], 0.0);
|
||||
ASSERT_EQ(lattice->a3[2], 1.0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 3");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 3");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Lattice style incompatible with simulation dimension.*",
|
||||
lmp->input->one("lattice hex 1.0"););
|
||||
command("lattice hex 1.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, lattice_custom)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("variable a equal 4.34");
|
||||
lmp->input->one("variable b equal $a*sqrt(3.0)");
|
||||
lmp->input->one("variable c equal $a*sqrt(8.0/3.0)");
|
||||
lmp->input->one("variable t equal 1.0/3.0");
|
||||
lmp->input->one("variable f equal 5.0/6.0");
|
||||
lmp->input->one("lattice custom 1.0 "
|
||||
"a1 $a 0.0 0.0 "
|
||||
"a2 0.0 $b 0.0 "
|
||||
"a3 0.0 0.0 $c "
|
||||
"basis 0.0 0.0 0.0 "
|
||||
"basis 0.5 0.5 0.0 "
|
||||
"basis $t 0.0 0.5 "
|
||||
"basis $f 0.5 0.5 "
|
||||
"basis 0.0 0.0 0.625 "
|
||||
"basis 0.5 0.5 0.625 "
|
||||
"basis $t 0.0 0.125 "
|
||||
"basis $f 0.5 0.125 ");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable a equal 4.34");
|
||||
command("variable b equal $a*sqrt(3.0)");
|
||||
command("variable c equal $a*sqrt(8.0/3.0)");
|
||||
command("variable t equal 1.0/3.0");
|
||||
command("variable f equal 5.0/6.0");
|
||||
command("lattice custom 1.0 "
|
||||
"a1 $a 0.0 0.0 "
|
||||
"a2 0.0 $b 0.0 "
|
||||
"a3 0.0 0.0 $c "
|
||||
"basis 0.0 0.0 0.0 "
|
||||
"basis 0.5 0.5 0.0 "
|
||||
"basis $t 0.0 0.5 "
|
||||
"basis $f 0.5 0.5 "
|
||||
"basis 0.0 0.0 0.625 "
|
||||
"basis 0.5 0.5 0.625 "
|
||||
"basis $t 0.0 0.125 "
|
||||
"basis $f 0.5 0.125 ");
|
||||
END_HIDE_OUTPUT();
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::CUSTOM);
|
||||
ASSERT_DOUBLE_EQ(lattice->xlattice, 4.34);
|
||||
|
@ -492,48 +455,48 @@ TEST_F(LatticeRegionTest, lattice_custom)
|
|||
ASSERT_DOUBLE_EQ(lattice->a3[2], 4.34 * sqrt(8.0 / 3.0));
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*",
|
||||
lmp->input->one("lattice custom 1.0 basis -0.1 0 0"););
|
||||
command("lattice custom 1.0 basis -0.1 0 0"););
|
||||
TEST_FAILURE(".*ERROR: Illegal lattice command.*",
|
||||
lmp->input->one("lattice custom 1.0 basis 0.0 1.0 0"););
|
||||
command("lattice custom 1.0 basis 0.0 1.0 0"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("dimension 2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
TEST_FAILURE(".*ERROR: No basis atoms in lattice.*", lmp->input->one("lattice custom 1.0"););
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dimension 2");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: No basis atoms in lattice.*", command("lattice custom 1.0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice settings are not compatible with 2d simulation.*",
|
||||
lmp->input->one("lattice custom 1.0 origin 0.5 0.5 0.5 basis 0.0 0.0 0.0"););
|
||||
command("lattice custom 1.0 origin 0.5 0.5 0.5 basis 0.0 0.0 0.0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice settings are not compatible with 2d simulation.*",
|
||||
lmp->input->one("lattice custom 1.0 a1 1.0 1.0 1.0 basis 0.0 0.0 0.0"););
|
||||
command("lattice custom 1.0 a1 1.0 1.0 1.0 basis 0.0 0.0 0.0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice settings are not compatible with 2d simulation.*",
|
||||
lmp->input->one("lattice custom 1.0 a2 1.0 1.0 1.0 basis 0.0 0.0 0.0"););
|
||||
command("lattice custom 1.0 a2 1.0 1.0 1.0 basis 0.0 0.0 0.0"););
|
||||
TEST_FAILURE(".*ERROR: Lattice settings are not compatible with 2d simulation.*",
|
||||
lmp->input->one("lattice custom 1.0 a3 1.0 1.0 1.0 basis 0.0 0.0 0.0"););
|
||||
command("lattice custom 1.0 a3 1.0 1.0 1.0 basis 0.0 0.0 0.0"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_fail)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice none 2.0");
|
||||
lmp->input->one("region box block 0 1 0 1 0 1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice none 2.0");
|
||||
command("region box block 0 1 0 1 0 1");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Create_atoms command before simulation box is defined.*",
|
||||
lmp->input->one("create_atoms 1 box"););
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("create_box 1 box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
command("create_atoms 1 box"););
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("create_box 1 box");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Cannot create atoms with undefined lattice.*",
|
||||
lmp->input->one("create_atoms 1 box"););
|
||||
command("create_atoms 1 box"););
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_block_lattice)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice sc 1.5");
|
||||
lmp->input->one("region box block 0 2 0 2 0 2 units lattice");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice sc 1.5");
|
||||
command("region box block 0 2 0 2 0 2 units lattice");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 box");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
auto x = lmp->atom->x;
|
||||
|
@ -554,12 +517,12 @@ TEST_F(LatticeRegionTest, region_block_lattice)
|
|||
|
||||
TEST_F(LatticeRegionTest, region_block_box)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice sc 1.5 origin 0.75 0.75 0.75");
|
||||
lmp->input->one("region box block 0 2 0 2 0 2 units box");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice sc 1.5 origin 0.75 0.75 0.75");
|
||||
command("region box block 0 2 0 2 0 2 units box");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 box");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
|
||||
auto x = lmp->atom->x;
|
||||
|
@ -571,93 +534,93 @@ TEST_F(LatticeRegionTest, region_block_box)
|
|||
|
||||
TEST_F(LatticeRegionTest, region_cone)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
lmp->input->one("region box cone x 1.0 1.0 0.5 2.1 0.0 2.0");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 region box");
|
||||
lmp->input->one("write_dump all atom init.lammpstrj");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
command("region box cone x 1.0 1.0 0.5 2.1 0.0 2.0");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 region box");
|
||||
command("write_dump all atom init.lammpstrj");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
ASSERT_EQ(lmp->atom->natoms, 42);
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_cylinder)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
lmp->input->one("region box cylinder z 1.0 1.0 2.1 0.0 2.0 ");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 region box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
command("region box cylinder z 1.0 1.0 2.1 0.0 2.0 ");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 region box");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
ASSERT_EQ(lmp->atom->natoms, 114);
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_prism)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice bcc 2.5 origin 0.75 0.75 0.75");
|
||||
lmp->input->one("region box prism 0 2 0 2 0 2 0.5 0.0 0.0");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice bcc 2.5 origin 0.75 0.75 0.75");
|
||||
command("region box prism 0 2 0 2 0 2 0.5 0.0 0.0");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 box");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 1);
|
||||
ASSERT_EQ(lmp->atom->natoms, 16);
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_sphere)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
lmp->input->one("region box sphere 1.0 1.0 1.0 1.1");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 region box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
command("region box sphere 1.0 1.0 1.0 1.1");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 region box");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
ASSERT_EQ(lmp->atom->natoms, 14);
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_union)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
lmp->input->one("region part1 sphere 2.0 1.0 1.0 1.1");
|
||||
lmp->input->one("region part2 block 0.0 2.0 0.0 2.0 0.0 2.0");
|
||||
lmp->input->one("region box union 2 part1 part2");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 region box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
command("region part1 sphere 2.0 1.0 1.0 1.1");
|
||||
command("region part2 block 0.0 2.0 0.0 2.0 0.0 2.0");
|
||||
command("region box union 2 part1 part2");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 region box");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
ASSERT_EQ(lmp->atom->natoms, 67);
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_intersect)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
lmp->input->one("region part1 sphere 2.0 1.0 1.0 1.8");
|
||||
lmp->input->one("region part2 block 0.0 2.0 0.0 2.0 0.0 2.0");
|
||||
lmp->input->one("region box intersect 2 part1 part2");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 region box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
command("region part1 sphere 2.0 1.0 1.0 1.8");
|
||||
command("region part2 block 0.0 2.0 0.0 2.0 0.0 2.0");
|
||||
command("region box intersect 2 part1 part2");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 region box");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
ASSERT_EQ(lmp->atom->natoms, 21);
|
||||
}
|
||||
|
||||
TEST_F(LatticeRegionTest, region_plane)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
lmp->input->one("region box block 0.0 2.0 0.0 2.0 0.0 2.0");
|
||||
lmp->input->one("region part1 plane 0.5 1.0 0.0 0.75 0.0 0.0");
|
||||
lmp->input->one("region part2 plane 1.5 1.0 0.0 0.75 0.0 0.0 side out");
|
||||
lmp->input->one("region atoms intersect 2 part1 part2");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 region atoms");
|
||||
lmp->input->one("write_dump all atom init.lammpstrj");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("lattice fcc 2.5 origin 0.5 0.5 0.5");
|
||||
command("region box block 0.0 2.0 0.0 2.0 0.0 2.0");
|
||||
command("region part1 plane 0.5 1.0 0.0 0.75 0.0 0.0");
|
||||
command("region part2 plane 1.5 1.0 0.0 0.75 0.0 0.0 side out");
|
||||
command("region atoms intersect 2 part1 part2");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 region atoms");
|
||||
command("write_dump all atom init.lammpstrj");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->domain->triclinic, 0);
|
||||
ASSERT_EQ(lmp->atom->natoms, 16);
|
||||
}
|
||||
|
@ -669,7 +632,7 @@ int main(int argc, char **argv)
|
|||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (have_openmpi && !LAMMPS_NS::Info::has_exceptions())
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "utils.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <mpi.h>
|
||||
|
@ -28,12 +29,6 @@
|
|||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
#if defined(OMPI_MAJOR_VERSION)
|
||||
const bool have_openmpi = true;
|
||||
#else
|
||||
const bool have_openmpi = false;
|
||||
#endif
|
||||
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
@ -41,49 +36,22 @@ using ::testing::MatchesRegex;
|
|||
|
||||
#define GETIDX(i) lmp->atom->map(i)
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} else { \
|
||||
if (!have_openmpi) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define STRINGIFY(val) XSTR(val)
|
||||
#define XSTR(val) #val
|
||||
|
||||
class ResetIDsTest : public ::testing::Test {
|
||||
class ResetIDsTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"ResetIDsTest", "-log", "none", "-nocite", "-echo", "screen"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
Info *info = new Info(lmp);
|
||||
testbinary = "ResetIDsTest";
|
||||
LAMMPSTest::SetUp();
|
||||
if (info->has_style("atom", "full")) {
|
||||
lmp->input->one("variable input_dir index " STRINGIFY(TEST_INPUT_FOLDER));
|
||||
lmp->input->one("include ${input_dir}/in.fourmol");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable input_dir index " STRINGIFY(TEST_INPUT_FOLDER));
|
||||
command("include ${input_dir}/in.fourmol");
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
delete info;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -124,9 +92,9 @@ TEST_F(ResetIDsTest, MolIDAll)
|
|||
|
||||
// the original data file has two different molecule IDs
|
||||
// for two residues of the same molecule/fragment.
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_mol_ids all");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_mol_ids all");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(molid[GETIDX(1)], 1);
|
||||
ASSERT_EQ(molid[GETIDX(2)], 1);
|
||||
|
@ -166,12 +134,12 @@ TEST_F(ResetIDsTest, DeletePlusAtomID)
|
|||
auto molid = lmp->atom->molecule;
|
||||
|
||||
// delete two water molecules
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("group allwater molecule 3:6");
|
||||
lmp->input->one("group twowater molecule 4:6:2");
|
||||
lmp->input->one("delete_atoms group twowater compress no bond yes");
|
||||
lmp->input->one("reset_mol_ids all");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group allwater molecule 3:6");
|
||||
command("group twowater molecule 4:6:2");
|
||||
command("delete_atoms group twowater compress no bond yes");
|
||||
command("reset_mol_ids all");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->atom->natoms, 23);
|
||||
ASSERT_EQ(lmp->atom->map_tag_max, 26);
|
||||
|
||||
|
@ -228,9 +196,9 @@ TEST_F(ResetIDsTest, DeletePlusAtomID)
|
|||
ASSERT_GE(GETIDX(25), 0);
|
||||
ASSERT_GE(GETIDX(26), 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_atom_ids");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_atom_ids");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(lmp->atom->map_tag_max, 23);
|
||||
for (int i = 1; i <= 23; ++i)
|
||||
|
@ -244,11 +212,11 @@ TEST_F(ResetIDsTest, PartialOffset)
|
|||
auto molid = lmp->atom->molecule;
|
||||
|
||||
// delete two water molecules
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("group allwater molecule 3:6");
|
||||
lmp->input->one("group nowater subtract all allwater");
|
||||
lmp->input->one("reset_mol_ids allwater offset 4");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group allwater molecule 3:6");
|
||||
command("group nowater subtract all allwater");
|
||||
command("reset_mol_ids allwater offset 4");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->atom->natoms, 29);
|
||||
ASSERT_EQ(lmp->atom->map_tag_max, 29);
|
||||
|
||||
|
@ -282,9 +250,9 @@ TEST_F(ResetIDsTest, PartialOffset)
|
|||
ASSERT_EQ(molid[GETIDX(28)], 8);
|
||||
ASSERT_EQ(molid[GETIDX(29)], 8);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_mol_ids nowater offset 0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_mol_ids nowater offset 0");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(molid[GETIDX(1)], 1);
|
||||
ASSERT_EQ(molid[GETIDX(2)], 1);
|
||||
|
@ -324,13 +292,13 @@ TEST_F(ResetIDsTest, DeleteAdd)
|
|||
auto molid = lmp->atom->molecule;
|
||||
|
||||
// delete two water molecules
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("group allwater molecule 3:6");
|
||||
lmp->input->one("group twowater molecule 4:6:2");
|
||||
lmp->input->one("group nowater subtract all allwater");
|
||||
lmp->input->one("delete_atoms group twowater compress no bond yes mol yes");
|
||||
lmp->input->one("reset_mol_ids allwater");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group allwater molecule 3:6");
|
||||
command("group twowater molecule 4:6:2");
|
||||
command("group nowater subtract all allwater");
|
||||
command("delete_atoms group twowater compress no bond yes mol yes");
|
||||
command("reset_mol_ids allwater");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->atom->natoms, 23);
|
||||
ASSERT_EQ(lmp->atom->map_tag_max, 26);
|
||||
|
||||
|
@ -387,17 +355,17 @@ TEST_F(ResetIDsTest, DeleteAdd)
|
|||
ASSERT_GE(GETIDX(25), 0);
|
||||
ASSERT_GE(GETIDX(26), 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_atom_ids sort yes");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_atom_ids sort yes");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(lmp->atom->map_tag_max, 23);
|
||||
for (int i = 1; i <= 23; ++i)
|
||||
ASSERT_GE(GETIDX(i), 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_mol_ids nowater offset 1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_mol_ids nowater offset 1");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(molid[GETIDX(1)], 2);
|
||||
ASSERT_EQ(molid[GETIDX(2)], 2);
|
||||
|
@ -423,13 +391,13 @@ TEST_F(ResetIDsTest, DeleteAdd)
|
|||
ASSERT_EQ(molid[GETIDX(22)], 4);
|
||||
ASSERT_EQ(molid[GETIDX(23)], 4);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("create_atoms 1 single 0.0 0.0 0.0");
|
||||
lmp->input->one("create_atoms 2 single 1.0 0.0 0.0");
|
||||
lmp->input->one("create_atoms 3 single 2.0 0.0 0.0");
|
||||
lmp->input->one("create_atoms 4 single 3.0 0.0 0.0");
|
||||
lmp->input->one("reset_mol_ids all single yes");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("create_atoms 1 single 0.0 0.0 0.0");
|
||||
command("create_atoms 2 single 1.0 0.0 0.0");
|
||||
command("create_atoms 3 single 2.0 0.0 0.0");
|
||||
command("create_atoms 4 single 3.0 0.0 0.0");
|
||||
command("reset_mol_ids all single yes");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->atom->natoms, 27);
|
||||
ASSERT_EQ(lmp->atom->map_tag_max, 27);
|
||||
|
||||
|
@ -441,9 +409,9 @@ TEST_F(ResetIDsTest, DeleteAdd)
|
|||
ASSERT_EQ(molid[GETIDX(26)], 6);
|
||||
ASSERT_EQ(molid[GETIDX(27)], 7);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_mol_ids all single no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_mol_ids all single no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(molid[GETIDX(21)], 3);
|
||||
ASSERT_EQ(molid[GETIDX(22)], 3);
|
||||
|
@ -453,9 +421,9 @@ TEST_F(ResetIDsTest, DeleteAdd)
|
|||
ASSERT_EQ(molid[GETIDX(26)], 0);
|
||||
ASSERT_EQ(molid[GETIDX(27)], 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_mol_ids all compress no single yes");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_mol_ids all compress no single yes");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(molid[GETIDX(21)], 21);
|
||||
ASSERT_EQ(molid[GETIDX(22)], 21);
|
||||
|
@ -471,21 +439,21 @@ TEST_F(ResetIDsTest, TopologyData)
|
|||
if (lmp->atom->natoms == 0) GTEST_SKIP();
|
||||
|
||||
// delete two water molecules
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("group allwater molecule 3:6");
|
||||
lmp->input->one("group twowater molecule 4:6:2");
|
||||
lmp->input->one("group nowater subtract all allwater");
|
||||
lmp->input->one("delete_atoms group twowater compress no bond yes mol yes");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("group allwater molecule 3:6");
|
||||
command("group twowater molecule 4:6:2");
|
||||
command("group nowater subtract all allwater");
|
||||
command("delete_atoms group twowater compress no bond yes mol yes");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->atom->natoms, 23);
|
||||
ASSERT_EQ(lmp->atom->map_tag_max, 26);
|
||||
|
||||
auto num_bond = lmp->atom->num_bond;
|
||||
auto num_angle = lmp->atom->num_angle;
|
||||
auto bond_atom = lmp->atom->bond_atom;
|
||||
auto angle_atom1 = lmp->atom->angle_atom1;
|
||||
auto angle_atom2 = lmp->atom->angle_atom2;
|
||||
auto angle_atom3 = lmp->atom->angle_atom3;
|
||||
auto num_bond = lmp->atom->num_bond;
|
||||
auto num_angle = lmp->atom->num_angle;
|
||||
auto bond_atom = lmp->atom->bond_atom;
|
||||
auto angle_atom1 = lmp->atom->angle_atom1;
|
||||
auto angle_atom2 = lmp->atom->angle_atom2;
|
||||
auto angle_atom3 = lmp->atom->angle_atom3;
|
||||
ASSERT_EQ(num_bond[GETIDX(1)], 2);
|
||||
ASSERT_EQ(bond_atom[GETIDX(1)][0], 2);
|
||||
ASSERT_EQ(bond_atom[GETIDX(1)][1], 3);
|
||||
|
@ -560,16 +528,16 @@ TEST_F(ResetIDsTest, TopologyData)
|
|||
ASSERT_EQ(angle_atom2[GETIDX(24)][0], 24);
|
||||
ASSERT_EQ(angle_atom3[GETIDX(24)][0], 26);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_atom_ids sort yes");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_atom_ids sort yes");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
num_bond = lmp->atom->num_bond;
|
||||
num_angle = lmp->atom->num_angle;
|
||||
bond_atom = lmp->atom->bond_atom;
|
||||
angle_atom1 = lmp->atom->angle_atom1;
|
||||
angle_atom2 = lmp->atom->angle_atom2;
|
||||
angle_atom3 = lmp->atom->angle_atom3;
|
||||
num_bond = lmp->atom->num_bond;
|
||||
num_angle = lmp->atom->num_angle;
|
||||
bond_atom = lmp->atom->bond_atom;
|
||||
angle_atom1 = lmp->atom->angle_atom1;
|
||||
angle_atom2 = lmp->atom->angle_atom2;
|
||||
angle_atom3 = lmp->atom->angle_atom3;
|
||||
ASSERT_EQ(num_bond[GETIDX(1)], 2);
|
||||
ASSERT_EQ(bond_atom[GETIDX(1)][0], 3);
|
||||
ASSERT_EQ(bond_atom[GETIDX(1)][1], 2);
|
||||
|
@ -658,61 +626,60 @@ TEST_F(ResetIDsTest, DeathTests)
|
|||
{
|
||||
if (lmp->atom->natoms == 0) GTEST_SKIP();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*", lmp->input->one("reset_mol_ids"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*", command("reset_mol_ids"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*",
|
||||
lmp->input->one("reset_mol_ids all offset 1 1"););
|
||||
command("reset_mol_ids all offset 1 1"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*",
|
||||
lmp->input->one("reset_mol_ids all offset -2"););
|
||||
command("reset_mol_ids all offset -2"););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Expected integer.*", command("reset_mol_ids all offset xxx"););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Expected integer.*",
|
||||
lmp->input->one("reset_mol_ids all offset xxx"););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Expected integer.*",
|
||||
lmp->input->one("reset_mol_ids all compress yes single no offset xxx"););
|
||||
command("reset_mol_ids all compress yes single no offset xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*", command("reset_mol_ids all offset"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*",
|
||||
lmp->input->one("reset_mol_ids all offset"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*",
|
||||
lmp->input->one("reset_mol_ids all compress"););
|
||||
command("reset_mol_ids all compress"););
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*",
|
||||
lmp->input->one("reset_mol_ids all compress xxx"););
|
||||
command("reset_mol_ids all compress xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*", command("reset_mol_ids all single"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*",
|
||||
lmp->input->one("reset_mol_ids all single"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_mol_ids command.*",
|
||||
lmp->input->one("reset_mol_ids all single xxx"););
|
||||
command("reset_mol_ids all single xxx"););
|
||||
}
|
||||
|
||||
TEST(ResetMolIds, CMDFail)
|
||||
{
|
||||
LAMMPS *lmp;
|
||||
const char *args[] = {"ResetIDsTest", "-log", "none", "-nocite", "-echo", "screen"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Reset_mol_ids command before simulation box is.*",
|
||||
lmp->input->one("reset_mol_ids all"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("atom_modify id no");
|
||||
lmp->input->one("region box block 0 1 0 1 0 1");
|
||||
lmp->input->one("create_box 1 box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
TEST_FAILURE(".*ERROR: Cannot use reset_mol_ids unless.*",
|
||||
lmp->input->one("reset_mol_ids all"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("region box block 0 1 0 1 0 1");
|
||||
lmp->input->one("create_box 1 box");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
TEST_FAILURE(".*ERROR: Can only use reset_mol_ids.*", lmp->input->one("reset_mol_ids all"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
class ResetMolIDsTest : public LAMMPSTest {
|
||||
protected:
|
||||
void SetUp() override
|
||||
{
|
||||
testbinary = "ResetIDsTest";
|
||||
LAMMPSTest::SetUp();
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(ResetMolIDsTest, FailBeforeBox)
|
||||
{
|
||||
TEST_FAILURE(".*ERROR: Reset_mol_ids command before simulation box is.*",
|
||||
command("reset_mol_ids all"););
|
||||
}
|
||||
|
||||
TEST_F(ResetMolIDsTest, FailMissingId)
|
||||
{
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("atom_modify id no");
|
||||
command("region box block 0 1 0 1 0 1");
|
||||
command("create_box 1 box");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Cannot use reset_mol_ids unless.*", command("reset_mol_ids all"););
|
||||
}
|
||||
|
||||
TEST_F(ResetMolIDsTest, FailOnlyMolecular)
|
||||
{
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("region box block 0 1 0 1 0 1");
|
||||
command("create_box 1 box");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Can only use reset_mol_ids.*", command("reset_mol_ids all"););
|
||||
}
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
@ -720,7 +687,7 @@ int main(int argc, char **argv)
|
|||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (have_openmpi && !LAMMPS_NS::Info::has_exceptions())
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "fmt/format.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
@ -34,11 +35,6 @@
|
|||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
#if defined(OMPI_MAJOR_VERSION)
|
||||
const bool have_openmpi = true;
|
||||
#else
|
||||
const bool have_openmpi = false;
|
||||
#endif
|
||||
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
|
@ -47,46 +43,12 @@ using ::testing::ExitedWithCode;
|
|||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} else { \
|
||||
if (!have_openmpi) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} \
|
||||
}
|
||||
|
||||
class SimpleCommandsTest : public ::testing::Test {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"SimpleCommandsTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
class SimpleCommandsTest : public LAMMPSTest {
|
||||
};
|
||||
|
||||
TEST_F(SimpleCommandsTest, UnknownCommand)
|
||||
{
|
||||
TEST_FAILURE(".*ERROR: Unknown command.*", lmp->input->one("XXX one two"););
|
||||
TEST_FAILURE(".*ERROR: Unknown command.*", command("XXX one two"););
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Echo)
|
||||
|
@ -94,47 +56,47 @@ TEST_F(SimpleCommandsTest, Echo)
|
|||
ASSERT_EQ(lmp->input->echo_screen, 1);
|
||||
ASSERT_EQ(lmp->input->echo_log, 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("echo none");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("echo none");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->input->echo_screen, 0);
|
||||
ASSERT_EQ(lmp->input->echo_log, 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("echo both");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("echo both");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->input->echo_screen, 1);
|
||||
ASSERT_EQ(lmp->input->echo_log, 1);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("echo screen");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("echo screen");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->input->echo_screen, 1);
|
||||
ASSERT_EQ(lmp->input->echo_log, 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("echo log");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("echo log");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->input->echo_screen, 0);
|
||||
ASSERT_EQ(lmp->input->echo_log, 1);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal echo command.*", lmp->input->one("echo"););
|
||||
TEST_FAILURE(".*ERROR: Illegal echo command.*", lmp->input->one("echo xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal echo command.*", command("echo"););
|
||||
TEST_FAILURE(".*ERROR: Illegal echo command.*", command("echo xxx"););
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Log)
|
||||
{
|
||||
ASSERT_EQ(lmp->logfile, nullptr);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("log simple_command_test.log");
|
||||
lmp->input->one("print 'test1'");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("log simple_command_test.log");
|
||||
command("print 'test1'");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_NE(lmp->logfile, nullptr);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("log none");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("log none");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->logfile, nullptr);
|
||||
|
||||
std::string text;
|
||||
|
@ -144,14 +106,14 @@ TEST_F(SimpleCommandsTest, Log)
|
|||
in.close();
|
||||
ASSERT_THAT(text, StrEq("test1"));
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("log simple_command_test.log append");
|
||||
lmp->input->one("print 'test2'");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("log simple_command_test.log append");
|
||||
command("print 'test2'");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_NE(lmp->logfile, nullptr);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("log none");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("log none");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->logfile, nullptr);
|
||||
|
||||
in.open("simple_command_test.log");
|
||||
|
@ -162,7 +124,7 @@ TEST_F(SimpleCommandsTest, Log)
|
|||
in.close();
|
||||
remove("simple_command_test.log");
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal log command.*", lmp->input->one("log"););
|
||||
TEST_FAILURE(".*ERROR: Illegal log command.*", command("log"););
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Newton)
|
||||
|
@ -170,82 +132,79 @@ TEST_F(SimpleCommandsTest, Newton)
|
|||
// default setting is "on" for both
|
||||
ASSERT_EQ(lmp->force->newton_pair, 1);
|
||||
ASSERT_EQ(lmp->force->newton_bond, 1);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("newton off");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("newton off");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->force->newton_pair, 0);
|
||||
ASSERT_EQ(lmp->force->newton_bond, 0);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("newton on off");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("newton on off");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->force->newton_pair, 1);
|
||||
ASSERT_EQ(lmp->force->newton_bond, 0);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("newton off on");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("newton off on");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->force->newton_pair, 0);
|
||||
ASSERT_EQ(lmp->force->newton_bond, 1);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("newton on");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("newton on");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->force->newton_pair, 1);
|
||||
ASSERT_EQ(lmp->force->newton_bond, 1);
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Partition)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("echo none");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
TEST_FAILURE(".*ERROR: Illegal partition command .*",
|
||||
lmp->input->one("partition xxx 1 echo none"););
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("echo none");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Illegal partition command .*", command("partition xxx 1 echo none"););
|
||||
TEST_FAILURE(".*ERROR: Numeric index 2 is out of bounds.*",
|
||||
lmp->input->one("partition yes 2 echo none"););
|
||||
command("partition yes 2 echo none"););
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("partition yes 1 print 'test'");
|
||||
auto text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("partition yes 1 print 'test'");
|
||||
auto text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, StrEq("test\n"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("partition no 1 print 'test'");
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("partition no 1 print 'test'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, StrEq(""));
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Quit)
|
||||
{
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("echo none");
|
||||
::testing::internal::GetCapturedStdout();
|
||||
TEST_FAILURE(".*ERROR: Expected integer .*", lmp->input->one("quit xxx"););
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("echo none");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*ERROR: Expected integer .*", command("quit xxx"););
|
||||
|
||||
// the following tests must be skipped with OpenMPI due to using threads
|
||||
if (have_openmpi) GTEST_SKIP();
|
||||
ASSERT_EXIT(lmp->input->one("quit"), ExitedWithCode(0), "");
|
||||
ASSERT_EXIT(lmp->input->one("quit 9"), ExitedWithCode(9), "");
|
||||
if (Info::get_mpi_vendor() == "Open MPI") GTEST_SKIP();
|
||||
ASSERT_EXIT(command("quit"), ExitedWithCode(0), "");
|
||||
ASSERT_EXIT(command("quit 9"), ExitedWithCode(9), "");
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, ResetTimestep)
|
||||
{
|
||||
ASSERT_EQ(lmp->update->ntimestep, 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_timestep 10");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_timestep 10");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->update->ntimestep, 10);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("reset_timestep 0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("reset_timestep 0");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->update->ntimestep, 0);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Timestep must be >= 0.*", lmp->input->one("reset_timestep -10"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_timestep .*", lmp->input->one("reset_timestep"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_timestep .*", lmp->input->one("reset_timestep 10 10"););
|
||||
TEST_FAILURE(".*ERROR: Expected integer .*", lmp->input->one("reset_timestep xxx"););
|
||||
TEST_FAILURE(".*ERROR: Timestep must be >= 0.*", command("reset_timestep -10"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_timestep .*", command("reset_timestep"););
|
||||
TEST_FAILURE(".*ERROR: Illegal reset_timestep .*", command("reset_timestep 10 10"););
|
||||
TEST_FAILURE(".*ERROR: Expected integer .*", command("reset_timestep xxx"););
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Suffix)
|
||||
|
@ -254,93 +213,92 @@ TEST_F(SimpleCommandsTest, Suffix)
|
|||
ASSERT_EQ(lmp->suffix, nullptr);
|
||||
ASSERT_EQ(lmp->suffix2, nullptr);
|
||||
|
||||
TEST_FAILURE(".*ERROR: May only enable suffixes after defining one.*",
|
||||
lmp->input->one("suffix on"););
|
||||
TEST_FAILURE(".*ERROR: May only enable suffixes after defining one.*", command("suffix on"););
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("suffix one");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("suffix one");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_THAT(lmp->suffix, StrEq("one"));
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("suffix hybrid two three");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("suffix hybrid two three");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_THAT(lmp->suffix, StrEq("two"));
|
||||
ASSERT_THAT(lmp->suffix2, StrEq("three"));
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("suffix four");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("suffix four");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_THAT(lmp->suffix, StrEq("four"));
|
||||
ASSERT_EQ(lmp->suffix2, nullptr);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("suffix off");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("suffix off");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->suffix_enable, 0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("suffix on");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("suffix on");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->suffix_enable, 1);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal suffix command.*", lmp->input->one("suffix"););
|
||||
TEST_FAILURE(".*ERROR: Illegal suffix command.*", lmp->input->one("suffix hybrid"););
|
||||
TEST_FAILURE(".*ERROR: Illegal suffix command.*", lmp->input->one("suffix hybrid one"););
|
||||
TEST_FAILURE(".*ERROR: Illegal suffix command.*", command("suffix"););
|
||||
TEST_FAILURE(".*ERROR: Illegal suffix command.*", command("suffix hybrid"););
|
||||
TEST_FAILURE(".*ERROR: Illegal suffix command.*", command("suffix hybrid one"););
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Thermo)
|
||||
{
|
||||
ASSERT_EQ(lmp->output->thermo_every, 0);
|
||||
ASSERT_EQ(lmp->output->var_thermo, nullptr);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("thermo 2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("thermo 2");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->output->thermo_every, 2);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("variable step equal logfreq(10,3,10)");
|
||||
lmp->input->one("thermo v_step");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable step equal logfreq(10,3,10)");
|
||||
command("thermo v_step");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_THAT(lmp->output->var_thermo, StrEq("step"));
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("thermo 10");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("thermo 10");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->output->thermo_every, 10);
|
||||
ASSERT_EQ(lmp->output->var_thermo, nullptr);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal thermo command.*", lmp->input->one("thermo"););
|
||||
TEST_FAILURE(".*ERROR: Illegal thermo command.*", lmp->input->one("thermo -1"););
|
||||
TEST_FAILURE(".*ERROR: Expected integer.*", lmp->input->one("thermo xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal thermo command.*", command("thermo"););
|
||||
TEST_FAILURE(".*ERROR: Illegal thermo command.*", command("thermo -1"););
|
||||
TEST_FAILURE(".*ERROR: Expected integer.*", command("thermo xxx"););
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, TimeStep)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("timestep 1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("timestep 1");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->update->dt, 1.0);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("timestep 0.1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("timestep 0.1");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->update->dt, 0.1);
|
||||
|
||||
// zero timestep is legal and works (atoms don't move)
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("timestep 0.0");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("timestep 0.0");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->update->dt, 0.0);
|
||||
|
||||
// negative timestep also creates a viable MD.
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("timestep -0.1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("timestep -0.1");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(lmp->update->dt, -0.1);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal timestep command.*", lmp->input->one("timestep"););
|
||||
TEST_FAILURE(".*ERROR: Expected floating point.*", lmp->input->one("timestep xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal timestep command.*", command("timestep"););
|
||||
TEST_FAILURE(".*ERROR: Expected floating point.*", command("timestep xxx"););
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, Units)
|
||||
|
@ -352,19 +310,19 @@ TEST_F(SimpleCommandsTest, Units)
|
|||
|
||||
ASSERT_THAT(lmp->update->unit_style, StrEq("lj"));
|
||||
for (std::size_t i = 0; i < num; ++i) {
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one(fmt::format("units {}", names[i]));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("units {}", names[i]));
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_THAT(lmp->update->unit_style, StrEq(names[i]));
|
||||
ASSERT_EQ(lmp->update->dt, dt[i]);
|
||||
}
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_THAT(lmp->update->unit_style, StrEq("lj"));
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal units command.*", lmp->input->one("units unknown"););
|
||||
TEST_FAILURE(".*ERROR: Illegal units command.*", command("units unknown"););
|
||||
}
|
||||
|
||||
#if defined(LMP_PLUGIN)
|
||||
|
@ -442,18 +400,18 @@ TEST_F(SimpleCommandsTest, Plugin)
|
|||
|
||||
TEST_F(SimpleCommandsTest, Shell)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("shell putenv TEST_VARIABLE=simpletest");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("shell putenv TEST_VARIABLE=simpletest");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
char *test_var = getenv("TEST_VARIABLE");
|
||||
ASSERT_NE(test_var, nullptr);
|
||||
ASSERT_THAT(test_var, StrEq("simpletest"));
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("shell putenv TEST_VARIABLE=simpletest");
|
||||
lmp->input->one("shell putenv TEST_VARIABLE2=simpletest2 OTHER_VARIABLE=2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("shell putenv TEST_VARIABLE=simpletest");
|
||||
command("shell putenv TEST_VARIABLE2=simpletest2 OTHER_VARIABLE=2");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
char *test_var2 = getenv("TEST_VARIABLE2");
|
||||
char *other_var = getenv("OTHER_VARIABLE");
|
||||
|
@ -471,32 +429,30 @@ TEST_F(SimpleCommandsTest, CiteMe)
|
|||
|
||||
lmp->citeme = new LAMMPS_NS::CiteMe(lmp, CiteMe::TERSE, CiteMe::TERSE, nullptr);
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
lmp->citeme->add("test citation one:\n 1\n");
|
||||
lmp->citeme->add("test citation two:\n 2\n");
|
||||
lmp->citeme->add("test citation one:\n 1\n");
|
||||
lmp->citeme->flush();
|
||||
std::string text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
std::string text = END_CAPTURE_OUTPUT();
|
||||
|
||||
// find the two unique citations, but not the third
|
||||
ASSERT_THAT(text, MatchesRegex(".*one.*two.*"));
|
||||
ASSERT_THAT(text, Not(MatchesRegex(".*one.*two.*one.*")));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
lmp->citeme->add("test citation one:\n 0\n");
|
||||
lmp->citeme->add("test citation two:\n 2\n");
|
||||
lmp->citeme->add("test citation three:\n 3\n");
|
||||
lmp->citeme->flush();
|
||||
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
|
||||
// find the forth (only differs in long citation) and sixth added citation
|
||||
ASSERT_THAT(text, MatchesRegex(".*one.*three.*"));
|
||||
ASSERT_THAT(text, Not(MatchesRegex(".*two.*")));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
lmp->citeme->add("test citation one:\n 1\n");
|
||||
lmp->citeme->add("test citation two:\n 2\n");
|
||||
lmp->citeme->add("test citation one:\n 0\n");
|
||||
|
@ -504,8 +460,7 @@ TEST_F(SimpleCommandsTest, CiteMe)
|
|||
lmp->citeme->add("test citation three:\n 3\n");
|
||||
lmp->citeme->flush();
|
||||
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
|
||||
// no new citation. no CITE-CITE-CITE- lines
|
||||
ASSERT_THAT(text, Not(MatchesRegex(".*CITE-CITE-CITE-CITE.*")));
|
||||
|
@ -517,7 +472,7 @@ int main(int argc, char **argv)
|
|||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (have_openmpi && !LAMMPS_NS::Info::has_exceptions())
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
|
|
|
@ -0,0 +1,528 @@
|
|||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://lammps.sandia.gov/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "lammps.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "domain.h"
|
||||
#include "group.h"
|
||||
#include "info.h"
|
||||
#include "input.h"
|
||||
#include "math_const.h"
|
||||
#include "region.h"
|
||||
#include "variable.h"
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
|
||||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
using LAMMPS_NS::MathConst::MY_PI;
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::ExitedWithCode;
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
|
||||
class VariableTest : public LAMMPSTest {
|
||||
protected:
|
||||
Group *group;
|
||||
Domain *domain;
|
||||
Variable *variable;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
testbinary = "VariableTest";
|
||||
args = {"-log", "none", "-echo", "screen", "-nocite", "-v", "num", "1"};
|
||||
LAMMPSTest::SetUp();
|
||||
group = lmp->group;
|
||||
domain = lmp->domain;
|
||||
variable = lmp->input->variable;
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
LAMMPSTest::TearDown();
|
||||
unlink("test_variable.file");
|
||||
unlink("test_variable.atomfile");
|
||||
}
|
||||
|
||||
void atomic_system()
|
||||
{
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
command("lattice sc 1.0 origin 0.125 0.125 0.125");
|
||||
command("region box block -2 2 -2 2 -2 2");
|
||||
command("create_box 8 box");
|
||||
command("create_atoms 1 box");
|
||||
command("mass * 1.0");
|
||||
command("region left block -2.0 -1.0 INF INF INF INF");
|
||||
command("region right block 0.5 2.0 INF INF INF INF");
|
||||
command("region top block INF INF -2.0 -1.0 INF INF");
|
||||
command("set region left type 2");
|
||||
command("set region right type 3");
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void molecular_system()
|
||||
{
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("fix props all property/atom mol rmass q");
|
||||
END_HIDE_OUTPUT();
|
||||
atomic_system();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable molid atom floor(id/4)+1");
|
||||
command("variable charge atom 2.0*sin(PI/32*id)");
|
||||
command("set atom * mol v_molid");
|
||||
command("set atom * charge v_charge");
|
||||
command("set type 1 mass 0.5");
|
||||
command("set type 2*4 mass 2.0");
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void file_vars()
|
||||
{
|
||||
FILE *fp = fopen("test_variable.file", "w");
|
||||
fputs("# test file for file style variable\n\n\none\n two \n\n"
|
||||
"three # with comment\nfour ! with non-comment\n"
|
||||
"# comments only\n five\n#END\n",
|
||||
fp);
|
||||
fclose(fp);
|
||||
fp = fopen("test_variable.atomfile", "w");
|
||||
|
||||
fputs("# test file for atomfile style variable\n\n"
|
||||
"4 # four lines\n4 0.5 #with comment\n"
|
||||
"2 -0.5 \n3 1.5\n1 -1.5\n\n"
|
||||
"2\n10 1.0 # test\n13 1.0\n\n######\n"
|
||||
"4\n1 4.0 # test\n2 3.0\n3 2.0\n4 1.0\n#END\n",
|
||||
fp);
|
||||
fclose(fp);
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(VariableTest, CreateDelete)
|
||||
{
|
||||
file_vars();
|
||||
ASSERT_EQ(variable->nvar, 1);
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable one index 1 2 3 4");
|
||||
command("variable two equal 1");
|
||||
command("variable two equal 2");
|
||||
command("variable three string four");
|
||||
command("variable three string three");
|
||||
command("variable four1 loop 4");
|
||||
command("variable four2 loop 2 4");
|
||||
command("variable five1 loop 100 pad");
|
||||
command("variable five2 loop 10 200 pad");
|
||||
command("variable six world one");
|
||||
command("variable seven format two \"%5.2f\"");
|
||||
command("variable eight getenv PWD");
|
||||
command("variable eight getenv XXXXX");
|
||||
command("variable nine file test_variable.file");
|
||||
command("variable ten internal 1.0");
|
||||
command("variable ten internal 10.0");
|
||||
command("variable ten1 universe 1 2 3 4");
|
||||
command("variable ten2 uloop 4");
|
||||
command("variable ten3 uloop 4 pad");
|
||||
command("variable dummy index 0");
|
||||
command("variable file equal is_file(MYFILE)");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(variable->nvar, 18);
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable dummy delete");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_EQ(variable->nvar, 17);
|
||||
ASSERT_THAT(variable->retrieve("three"), StrEq("three"));
|
||||
variable->set_string("three", "four");
|
||||
ASSERT_THAT(variable->retrieve("three"), StrEq("four"));
|
||||
ASSERT_THAT(variable->retrieve("four2"), StrEq("2"));
|
||||
ASSERT_THAT(variable->retrieve("five1"), StrEq("001"));
|
||||
ASSERT_THAT(variable->retrieve("seven"), StrEq(" 2.00"));
|
||||
ASSERT_THAT(variable->retrieve("ten"), StrEq("1"));
|
||||
ASSERT_THAT(variable->retrieve("eight"), StrEq(""));
|
||||
variable->internal_set(variable->find("ten"), 2.5);
|
||||
ASSERT_THAT(variable->retrieve("ten"), StrEq("2.5"));
|
||||
ASSERT_THAT(variable->retrieve("file"), StrEq("0"));
|
||||
FILE *fp = fopen("MYFILE","w");
|
||||
fputs(" ",fp);
|
||||
fclose(fp);
|
||||
ASSERT_THAT(variable->retrieve("file"), StrEq("1"));
|
||||
unlink("MYFILE");
|
||||
ASSERT_THAT(variable->retrieve("file"), StrEq("0"));
|
||||
|
||||
ASSERT_EQ(variable->equalstyle(variable->find("one")), 0);
|
||||
ASSERT_EQ(variable->equalstyle(variable->find("two")), 1);
|
||||
ASSERT_EQ(variable->equalstyle(variable->find("ten")), 1);
|
||||
|
||||
ASSERT_EQ(variable->internalstyle(variable->find("two")), 0);
|
||||
ASSERT_EQ(variable->internalstyle(variable->find("ten")), 1);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal variable command.*", command("variable"););
|
||||
TEST_FAILURE(".*ERROR: Illegal variable command.*", command("variable dummy index"););
|
||||
TEST_FAILURE(".*ERROR: Illegal variable command.*", command("variable dummy delete xxx"););
|
||||
TEST_FAILURE(".*ERROR: Illegal variable command.*", command("variable dummy loop -1"););
|
||||
TEST_FAILURE(".*ERROR: Illegal variable command.*", command("variable dummy loop 10 1"););
|
||||
TEST_FAILURE(".*ERROR: Illegal variable command.*", command("variable dummy xxxx"););
|
||||
TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*",
|
||||
command("variable two string xxx"););
|
||||
TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*",
|
||||
command("variable two getenv xxx"););
|
||||
TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*",
|
||||
command("variable one equal 2"););
|
||||
TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*",
|
||||
command("variable one internal 2"););
|
||||
TEST_FAILURE(".*ERROR: Cannot use atomfile-style variable unless an atom map exists.*",
|
||||
command("variable eleven atomfile test_variable.atomfile"););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Cannot open file variable file test_variable.xxx.*",
|
||||
command("variable nine1 file test_variable.xxx"););
|
||||
TEST_FAILURE(".*ERROR: World variable count doesn't match # of partitions.*",
|
||||
command("variable ten10 world xxx xxx"););
|
||||
TEST_FAILURE(".*ERROR: All universe/uloop variables must have same # of values.*",
|
||||
command("variable ten4 uloop 2"););
|
||||
TEST_FAILURE(".*ERROR: Incorrect conversion in format string.*",
|
||||
command("variable ten11 format two \"%08f\""););
|
||||
TEST_FAILURE(".*ERROR: Variable name 'ten@12' must have only alphanumeric characters or.*",
|
||||
command("variable ten@12 index one two three"););
|
||||
TEST_FAILURE(".*ERROR: Variable evaluation before simulation box is defined.*",
|
||||
variable->compute_equal("c_thermo_press"););
|
||||
TEST_FAILURE(".*ERROR: Invalid variable reference v_unknown in variable formula.*",
|
||||
variable->compute_equal("v_unknown"););
|
||||
}
|
||||
|
||||
TEST_F(VariableTest, AtomicSystem)
|
||||
{
|
||||
HIDE_OUTPUT([&] { command("atom_modify map array"); });
|
||||
atomic_system();
|
||||
file_vars();
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable one index 1 2 3 4");
|
||||
command("variable id atom type");
|
||||
command("variable id atom id");
|
||||
command("variable ten atomfile test_variable.atomfile");
|
||||
|
||||
command("compute press all pressure NULL pair");
|
||||
command("compute rg all gyration");
|
||||
command("compute vacf all vacf");
|
||||
command("fix press all ave/time 1 1 1 c_press mode vector");
|
||||
command("fix rg all ave/time 1 1 1 c_rg mode vector");
|
||||
command("fix vacf all ave/time 1 1 1 c_vacf mode vector");
|
||||
|
||||
command("variable press vector f_press");
|
||||
command("variable rg vector f_rg");
|
||||
command("variable vacf vector f_vacf");
|
||||
command("variable press vector f_press+0.0");
|
||||
command("variable self vector v_self+f_press");
|
||||
command("variable circle vector f_press+v_circle");
|
||||
command("variable sum vector v_press+v_rg");
|
||||
command("variable sum2 vector v_vacf+v_rg");
|
||||
command("variable pmax equal max(v_press)");
|
||||
command("variable psum equal sum(v_press)");
|
||||
command("variable rgmax equal max(v_rg)");
|
||||
command("variable rgsum equal sum(v_rg)");
|
||||
command("variable loop equal v_loop+1");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_EQ(variable->atomstyle(variable->find("one")), 0);
|
||||
ASSERT_EQ(variable->atomstyle(variable->find("id")), 1);
|
||||
ASSERT_EQ(variable->atomstyle(variable->find("ten")), 1);
|
||||
|
||||
ASSERT_EQ(variable->vectorstyle(variable->find("one")), 0);
|
||||
ASSERT_EQ(variable->vectorstyle(variable->find("press")), 1);
|
||||
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_pmax"), 0.0);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_psum"), 0.0);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_rgmax"), 1.25);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_rgsum"), 3.75);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_sum[1]"), 1.25);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*",
|
||||
command("variable one atom x"););
|
||||
TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*",
|
||||
command("variable one vector f_press"););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Cannot open file variable file test_variable.xxx.*",
|
||||
command("variable ten1 atomfile test_variable.xxx"););
|
||||
TEST_FAILURE(".*ERROR: Variable loop: has a circular dependency.*",
|
||||
variable->compute_equal("v_loop"););
|
||||
TEST_FAILURE(".*Variable self: Vector-style variable in equal-style variable formula.*",
|
||||
variable->compute_equal("v_self"););
|
||||
TEST_FAILURE(".*ERROR: Variable sum2: Inconsistent lengths in vector-style variable.*",
|
||||
variable->compute_equal("max(v_sum2)"););
|
||||
}
|
||||
|
||||
TEST_F(VariableTest, Expressions)
|
||||
{
|
||||
atomic_system();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable one index 1");
|
||||
command("variable two equal 2");
|
||||
command("variable three equal v_one+v_two");
|
||||
command("variable four equal PI");
|
||||
command("variable five equal version");
|
||||
command("variable six equal XXX");
|
||||
command("variable seven equal -v_one");
|
||||
command("variable eight equal v_three-0.5");
|
||||
command("variable nine equal v_two*(v_one+v_three)");
|
||||
command("variable ten equal (1.0/v_two)^2");
|
||||
command("variable eleven equal v_three%2");
|
||||
command("variable twelve equal 1==2");
|
||||
command("variable ten3 equal 1!=v_two");
|
||||
command("variable ten4 equal 1<2");
|
||||
command("variable ten5 equal 2>1");
|
||||
command("variable ten6 equal (1<=v_one)&&(v_ten>=0.2)");
|
||||
command("variable ten7 equal !(1<v_two)");
|
||||
command("variable ten8 equal 1|^0");
|
||||
command("variable ten9 equal v_one-v_ten9");
|
||||
command("variable ten10 internal 100.0");
|
||||
command("variable ten11 equal (1!=1)+(2<1)+(2<=1)+(1>2)+(1>=2)+(1&&0)+(0||0)+(1|^1)+10^0");
|
||||
command("variable ten12 equal yes+no+on+off+true+false");
|
||||
command("variable err1 equal v_one/v_ten7");
|
||||
command("variable err2 equal v_one%v_ten7");
|
||||
command("variable err3 equal v_ten7^-v_one");
|
||||
variable->set("dummy index 1 2");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
int ivar = variable->find("one");
|
||||
ASSERT_FALSE(variable->equalstyle(ivar));
|
||||
ivar = variable->find("two");
|
||||
ASSERT_TRUE(variable->equalstyle(ivar));
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(ivar), 2.0);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_three"), 3.0);
|
||||
ASSERT_FLOAT_EQ(variable->compute_equal("v_four"), MY_PI);
|
||||
ASSERT_GE(variable->compute_equal("v_five"), 20210310);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_seven"), -1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_eight"), 2.5);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_nine"), 8);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten"), 0.25);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_eleven"), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_twelve"), 0);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten3"), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten4"), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten5"), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten6"), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten7"), 0);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten8"), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten10"), 100);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten11"), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_ten12"), 3);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Variable six: Invalid thermo keyword 'XXX' in variable formula.*",
|
||||
command("print \"${six}\""););
|
||||
TEST_FAILURE(".*ERROR: Variable ten9: has a circular dependency.*",
|
||||
command("print \"${ten9}\""););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Variable err1: Divide by 0 in variable formula.*",
|
||||
command("print \"${err1}\""););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Variable err2: Modulo 0 in variable formula.*",
|
||||
command("print \"${err2}\""););
|
||||
TEST_FAILURE(".*ERROR on proc 0: Variable err3: Invalid power expression in variable formula.*",
|
||||
command("print \"${err3}\""););
|
||||
}
|
||||
|
||||
TEST_F(VariableTest, Functions)
|
||||
{
|
||||
atomic_system();
|
||||
file_vars();
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable seed index 643532");
|
||||
command("variable one index 1");
|
||||
command("variable two equal random(1,2,v_seed)");
|
||||
command("variable three equal atan2(v_one,1)");
|
||||
command("variable four equal atan2()");
|
||||
command("variable five equal sqrt(v_one+v_one)");
|
||||
command("variable six equal exp(ln(0.1))");
|
||||
command("variable seven equal abs(log(1.0/100.0))");
|
||||
command("variable eight equal 0.5*PI");
|
||||
command("variable nine equal round(sin(v_eight)+cos(v_eight))");
|
||||
command("variable ten equal floor(1.85)+ceil(1.85)");
|
||||
command("variable ten1 equal tan(v_eight/2.0)");
|
||||
command("variable ten2 equal asin(-1.0)+acos(0.0)");
|
||||
command("variable ten3 equal floor(100*random(0.2,0.8,v_seed)+1)");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_GT(variable->compute_equal(variable->find("two")), 0.99);
|
||||
ASSERT_LT(variable->compute_equal(variable->find("two")), 2.01);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(variable->find("three")), 0.25 * MY_PI);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(variable->find("five")), sqrt(2.0));
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(variable->find("six")), 0.1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(variable->find("seven")), 2);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(variable->find("nine")), 1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(variable->find("ten")), 3);
|
||||
ASSERT_FLOAT_EQ(variable->compute_equal(variable->find("ten1")), 1);
|
||||
ASSERT_GT(variable->compute_equal(variable->find("ten3")), 19);
|
||||
ASSERT_LT(variable->compute_equal(variable->find("ten3")), 81);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Variable four: Invalid syntax in variable formula.*",
|
||||
command("print \"${four}\""););
|
||||
}
|
||||
|
||||
TEST_F(VariableTest, IfCommand)
|
||||
{
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable one index 1");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if 1>0 then 'print \"bingo!\"'");
|
||||
auto text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if 1>2 then 'print \"bingo!\"' else 'print \"nope?\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*nope\?.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (1<=0) then 'print \"bingo!\"' else 'print \"nope?\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*nope\?.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (-1.0e-1<0.0E+0)|^(1<0) then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (${one}==1.0)&&(2>=1) then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if !((${one}!=1.0)||(2|^1)) then 'print \"missed\"' else 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (1>=2)&&(0&&1) then 'print \"missed\"' else 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if !1 then 'print \"missed\"' else 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if !(a==b) then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if x==x|^1==0 then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if x!=x|^a!=b then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if () then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if \"1 1\" then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if 1a then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if 1=<2 then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if 1!=a then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if 1&<2 then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if 1|<2 then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if (1)( then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if (1)1 then 'print \"bingo!\"'"););
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if (v_one==1.0)&&(2>=1) then 'print \"bingo!\"'"););
|
||||
}
|
||||
|
||||
TEST_F(VariableTest, NextCommand)
|
||||
{
|
||||
file_vars();
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable one index 1 2");
|
||||
command("variable two equal 2");
|
||||
command("variable three file test_variable.file");
|
||||
command("variable four loop 2 4");
|
||||
command("variable five index 1 2");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_one"), 1);
|
||||
ASSERT_THAT(variable->retrieve("three"), StrEq("one"));
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("next one");
|
||||
command("next three");
|
||||
END_HIDE_OUTPUT();
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_one"), 2);
|
||||
ASSERT_THAT(variable->retrieve("three"), StrEq("two"));
|
||||
ASSERT_GE(variable->find("one"), 0);
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("next one");
|
||||
command("next three");
|
||||
END_HIDE_OUTPUT();
|
||||
// index style variable is deleted if no more next element
|
||||
ASSERT_EQ(variable->find("one"), -1);
|
||||
ASSERT_GE(variable->find("three"), 0);
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("next three");
|
||||
command("next three");
|
||||
command("next three");
|
||||
END_HIDE_OUTPUT();
|
||||
// file style variable is deleted if no more next element
|
||||
ASSERT_EQ(variable->find("three"), -1);
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal next command.*", command("next"););
|
||||
TEST_FAILURE(".*ERROR: Invalid variable 'xxx' in next command.*", command("next xxx"););
|
||||
TEST_FAILURE(".*ERROR: Invalid variable style with next command.*", command("next two"););
|
||||
TEST_FAILURE(".*ERROR: All variables in next command must have same style.*",
|
||||
command("next five four"););
|
||||
}
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
// handle arguments passed via environment variable
|
||||
if (const char *var = getenv("TEST_ARGS")) {
|
||||
std::vector<std::string> env = split_words(var);
|
||||
for (auto arg : env) {
|
||||
if (arg == "-v") {
|
||||
verbose = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true;
|
||||
|
||||
int rv = RUN_ALL_TESTS();
|
||||
MPI_Finalize();
|
||||
return rv;
|
||||
}
|
|
@ -307,7 +307,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
|
||||
// init_forces
|
||||
block.clear();
|
||||
auto f = lmp->atom->f;
|
||||
auto f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
@ -327,7 +327,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
f = lmp->atom->f;
|
||||
f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
|
|
@ -307,7 +307,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
|
||||
// init_forces
|
||||
block.clear();
|
||||
auto f = lmp->atom->f;
|
||||
auto f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
@ -327,7 +327,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
f = lmp->atom->f;
|
||||
f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
|
|
@ -53,17 +53,17 @@ TestConfigReader::TestConfigReader(TestConfig &config) : YamlReader(), config(co
|
|||
consumers["global_scalar"] = &TestConfigReader::global_scalar;
|
||||
consumers["global_vector"] = &TestConfigReader::global_vector;
|
||||
|
||||
consumers["bond_style"] = &TestConfigReader::bond_style;
|
||||
consumers["bond_coeff"] = &TestConfigReader::bond_coeff;
|
||||
consumers["angle_style"] = &TestConfigReader::angle_style;
|
||||
consumers["angle_coeff"] = &TestConfigReader::angle_coeff;
|
||||
consumers["bond_style"] = &TestConfigReader::bond_style;
|
||||
consumers["bond_coeff"] = &TestConfigReader::bond_coeff;
|
||||
consumers["angle_style"] = &TestConfigReader::angle_style;
|
||||
consumers["angle_coeff"] = &TestConfigReader::angle_coeff;
|
||||
consumers["dihedral_style"] = &TestConfigReader::dihedral_style;
|
||||
consumers["dihedral_coeff"] = &TestConfigReader::dihedral_coeff;
|
||||
consumers["improper_style"] = &TestConfigReader::improper_style;
|
||||
consumers["improper_coeff"] = &TestConfigReader::improper_coeff;
|
||||
consumers["init_energy"] = &TestConfigReader::init_energy;
|
||||
consumers["run_energy"] = &TestConfigReader::run_energy;
|
||||
consumers["equilibrium"] = &TestConfigReader::equilibrium;
|
||||
consumers["init_energy"] = &TestConfigReader::init_energy;
|
||||
consumers["run_energy"] = &TestConfigReader::run_energy;
|
||||
consumers["equilibrium"] = &TestConfigReader::equilibrium;
|
||||
}
|
||||
|
||||
void TestConfigReader::prerequisites(const yaml_event_t &event)
|
||||
|
|
|
@ -310,7 +310,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
|
||||
// init_forces
|
||||
block.clear();
|
||||
auto f = lmp->atom->f;
|
||||
auto f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
@ -330,7 +330,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
f = lmp->atom->f;
|
||||
f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
|
|
@ -301,7 +301,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
|
||||
// init_forces
|
||||
block.clear();
|
||||
auto f = lmp->atom->f;
|
||||
auto f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
@ -321,7 +321,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
f = lmp->atom->f;
|
||||
f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
|
|
@ -307,7 +307,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
|
||||
// init_forces
|
||||
block.clear();
|
||||
auto f = lmp->atom->f;
|
||||
auto f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
@ -330,7 +330,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
f = lmp->atom->f;
|
||||
f = lmp->atom->f;
|
||||
for (int i = 1; i <= natoms; ++i) {
|
||||
const int j = lmp->atom->map(i);
|
||||
block += fmt::format("{:3} {:23.16e} {:23.16e} {:23.16e}\n", i, f[j][0], f[j][1], f[j][2]);
|
||||
|
@ -829,9 +829,8 @@ TEST(PairStyle, intel)
|
|||
GTEST_SKIP();
|
||||
}
|
||||
|
||||
if ((test_config.pair_style == "rebo")
|
||||
|| utils::strmatch(test_config.pair_style, "^dpd")
|
||||
|| utils::strmatch(test_config.pair_style, "^tersoff.* shift ")) {
|
||||
if ((test_config.pair_style == "rebo") || utils::strmatch(test_config.pair_style, "^dpd") ||
|
||||
utils::strmatch(test_config.pair_style, "^tersoff.* shift ")) {
|
||||
std::cerr << "Skipping pair style " << lmp->force->pair_style << "\n";
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
cleanup_lammps(lmp, test_config);
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Tue Mar 23 08:05:02 202
|
||||
epsilon: 1e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
dihedral table/cut
|
||||
pre_commands: ! ""
|
||||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
dihedral_style: table/cut linear 3600
|
||||
dihedral_coeff: ! |
|
||||
1 aat 1.00 170 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_1
|
||||
2 aat 1.00 170 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_2
|
||||
3 aat 0.50 175 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_3
|
||||
4 aat 1.00 170 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_4
|
||||
5 aat 0.25 170 175 ${input_dir}/harmonic_dihedral.txt HARMONIC_5
|
||||
extract: ! ""
|
||||
natoms: 29
|
||||
init_energy: 552.225725624496
|
||||
init_stress: ! |-
|
||||
-7.4008882268909986e+01 1.3648518393804071e+02 -6.2476301669130748e+01 3.4620215707793108e+01 1.3017899329318067e+02 1.9706621502063012e+02
|
||||
init_forces: ! |2
|
||||
1 -8.1198888996808620e+01 7.1073378215839497e+01 -1.1918247546822441e+02
|
||||
2 3.8575810899979956e+01 -1.9920126773772417e+01 1.8847596663648414e+01
|
||||
3 1.0913741754895571e+02 -7.1292512160682776e+01 7.5572753355603993e+01
|
||||
4 -4.7848742793736733e+01 -7.5245295675494663e+00 6.4464643610526949e+01
|
||||
5 -1.5539692023725792e+01 5.7172364237479494e+00 -1.3226941634858840e+00
|
||||
6 -1.1355716924924745e+02 -8.6143836335725510e+01 -5.7299648623432482e+00
|
||||
7 4.1372375526613887e+01 4.5139121695653614e+01 -7.4310043691848229e+00
|
||||
8 2.1399043677828325e+02 1.8625470581545247e+02 -3.3675100353189755e+00
|
||||
9 5.2653582674682809e+01 5.6583201775589529e+01 -2.5669664860295835e+01
|
||||
10 -4.7984520275438535e+02 -5.1382692638722949e+02 -1.3749287390453020e+02
|
||||
11 1.6539670687119863e+02 1.4091972117987351e+02 -1.2657881071783035e+02
|
||||
12 3.4200742496423310e+01 1.2794076077133660e+02 2.3610219433759886e+02
|
||||
13 1.8270592580559917e+00 4.1997746033241778e+00 8.8146411631557697e+00
|
||||
14 1.8694466162959706e+01 -2.6013807510038696e+01 -9.2498849040619788e+00
|
||||
15 -6.2869548680867373e+00 2.1284514172388507e+00 -6.4318098210331209e+00
|
||||
16 -1.0694908795819050e+02 -5.9251517113768401e+01 1.0405679351593225e+01
|
||||
17 1.7537714042702788e+02 1.4401690395071051e+02 2.8249184624181581e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
run_energy: 549.782031215547
|
||||
run_stress: ! |-
|
||||
-7.5056949042919044e+01 1.3698944188847955e+02 -6.1932492845560127e+01 3.3581673544215263e+01 1.2888596290133776e+02 1.9565093507759894e+02
|
||||
run_forces: ! |2
|
||||
1 -8.1850261118769851e+01 7.1565857666082792e+01 -1.1998194154132169e+02
|
||||
2 3.8942730288029111e+01 -2.0139091742218607e+01 1.9096837462073495e+01
|
||||
3 1.0933304895917627e+02 -7.1974713700542679e+01 7.7222647280784500e+01
|
||||
4 -4.7578796179763913e+01 -7.4260553823873163e+00 6.4056709071407184e+01
|
||||
5 -1.5573770424692153e+01 5.7360778752676689e+00 -1.3292716784107659e+00
|
||||
6 -1.1205401245818740e+02 -8.3930835846975214e+01 -6.4629873083122060e+00
|
||||
7 4.1368235883807785e+01 4.5098977123947911e+01 -7.4207495093494247e+00
|
||||
8 2.1112963982593271e+02 1.8319846795829790e+02 -4.5077247269703236e+00
|
||||
9 5.2596180125216748e+01 5.6303309547815658e+01 -2.5556604563933746e+01
|
||||
10 -4.8079664429997507e+02 -5.1197713825609452e+02 -1.3418905325289452e+02
|
||||
11 1.6804796981040414e+02 1.4157399298542791e+02 -1.2667138198231208e+02
|
||||
12 3.3945852325507303e+01 1.2661718822016165e+02 2.3437614824953252e+02
|
||||
13 1.8225699822433148e+00 4.1983174055270061e+00 8.8273571873798709e+00
|
||||
14 1.8256498023781354e+01 -2.5354302062650923e+01 -8.9739201991677255e+00
|
||||
15 -6.2761226111239754e+00 2.1261045368019413e+00 -6.4368032911012207e+00
|
||||
16 -1.0841619930894663e+02 -6.1089982213467948e+01 9.6877249595793860e+00
|
||||
17 1.7710308117736014e+02 1.4547382588500676e+02 2.8263013843016775e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
...
|
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Tue Mar 23 08:06:45 202
|
||||
epsilon: 1e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
dihedral table/cut
|
||||
pre_commands: ! ""
|
||||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
dihedral_style: table/cut spline 3600
|
||||
dihedral_coeff: ! |
|
||||
1 aat 1.00 170 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_1
|
||||
2 aat 1.00 170 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_2
|
||||
3 aat 0.50 175 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_3
|
||||
4 aat 1.00 170 180 ${input_dir}/harmonic_dihedral.txt HARMONIC_4
|
||||
5 aat 0.25 170 175 ${input_dir}/harmonic_dihedral.txt HARMONIC_5
|
||||
extract: ! ""
|
||||
natoms: 29
|
||||
init_energy: 552.218725263499
|
||||
init_stress: ! |-
|
||||
-7.4019824552159534e+01 1.3649499111894895e+02 -6.2475166566789284e+01 3.4617375151088808e+01 1.3019745657214429e+02 1.9709007795400348e+02
|
||||
init_forces: ! |2
|
||||
1 -8.1213286444115909e+01 7.1080525227994045e+01 -1.1918872501604099e+02
|
||||
2 3.8585732128399350e+01 -1.9925249987601369e+01 1.8852444035804549e+01
|
||||
3 1.0914957240045973e+02 -7.1293677289031876e+01 7.5564572526931997e+01
|
||||
4 -4.7856039321211888e+01 -7.5256880640368262e+00 6.4474469548287303e+01
|
||||
5 -1.5540068306011690e+01 5.7173997377718440e+00 -1.3227187051350375e+00
|
||||
6 -1.1356202282295826e+02 -8.6148464023143134e+01 -5.7287967059654719e+00
|
||||
7 4.1373182001548223e+01 4.5140001882310173e+01 -7.4311492797065428e+00
|
||||
8 2.1400860040790070e+02 1.8627156816363441e+02 -3.3695416437372394e+00
|
||||
9 5.2656207239745335e+01 5.6586006420025306e+01 -2.5670940543260770e+01
|
||||
10 -4.7989294342864497e+02 -5.1388484267202580e+02 -1.3749831844924219e+02
|
||||
11 1.6541995228367492e+02 1.4093778373411678e+02 -1.2659553837843652e+02
|
||||
12 3.4200230035629019e+01 1.2795430859179336e+02 2.3612094879489862e+02
|
||||
13 1.8271828366360419e+00 4.2000586675545639e+00 8.8152373675940172e+00
|
||||
14 1.8695088969660507e+01 -2.6014674160815950e+01 -9.2501930642549315e+00
|
||||
15 -6.2873518284233292e+00 2.1285858083405422e+00 -6.4322159275576647e+00
|
||||
16 -1.0696654386912348e+02 -5.9261377200437906e+01 1.0407194734343612e+01
|
||||
17 1.7540250771683571e+02 1.4403773516355190e+02 2.8253270705477313e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
run_energy: 549.770211120194
|
||||
run_stress: ! |-
|
||||
-7.5054671721636595e+01 1.3699895801893166e+02 -6.1944286297295179e+01 3.3587137063275613e+01 1.2891678447538322e+02 1.9568224888755336e+02
|
||||
run_forces: ! |2
|
||||
1 -8.1862157367941563e+01 7.1571534225465314e+01 -1.1998648925690665e+02
|
||||
2 3.8950856557592253e+01 -2.0143295233943885e+01 1.9100831488650599e+01
|
||||
3 1.0934424273562679e+02 -7.1974764063434151e+01 7.7213177208305225e+01
|
||||
4 -4.7585717040630072e+01 -7.4272048534134285e+00 6.4066017644735453e+01
|
||||
5 -1.5574231365780285e+01 5.7363230482123928e+00 -1.3292888747698781e+00
|
||||
6 -1.1207625383797915e+02 -8.3953260935523502e+01 -6.4560404254467478e+00
|
||||
7 4.1369305653963607e+01 4.5100137884474947e+01 -7.4209393875477607e+00
|
||||
8 2.1117769556228862e+02 1.8324468258252551e+02 -4.5178766251241402e+00
|
||||
9 5.2599757474211380e+01 5.6307064747883963e+01 -2.5558323416528047e+01
|
||||
10 -4.8085705384233728e+02 -5.1205238742034794e+02 -1.3420522978505346e+02
|
||||
11 1.6806394787511115e+02 1.4159239612328381e+02 -1.2668631632096621e+02
|
||||
12 3.3951439786882119e+01 1.2663190154365350e+02 2.3440594816333368e+02
|
||||
13 1.8227069769227078e+00 4.1986314416593373e+00 8.8280212719479678e+00
|
||||
14 1.8256647570003278e+01 -2.5354504765353397e+01 -8.9739916559242712e+00
|
||||
15 -6.2764595167862440e+00 2.1262187967343880e+00 -6.4371500960467092e+00
|
||||
16 -1.0842617323615015e+02 -6.1092389588080550e+01 9.6917320121684938e+00
|
||||
17 1.7712144601500279e+02 1.4548891646620359e+02 2.8265918055172548e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
...
|
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Mon Mar 22 21:19:05 202
|
||||
epsilon: 1e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
dihedral table
|
||||
pre_commands: ! ""
|
||||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
dihedral_style: table linear 3600
|
||||
dihedral_coeff: ! |
|
||||
1 ${input_dir}/harmonic_dihedral.txt HARMONIC_1
|
||||
2 ${input_dir}/harmonic_dihedral.txt HARMONIC_2
|
||||
3 ${input_dir}/harmonic_dihedral.txt HARMONIC_3
|
||||
4 ${input_dir}/harmonic_dihedral.txt HARMONIC_4
|
||||
5 ${input_dir}/harmonic_dihedral.txt HARMONIC_5
|
||||
extract: ! ""
|
||||
natoms: 29
|
||||
init_energy: 789.184256783584
|
||||
init_stress: ! |-
|
||||
-1.6165501104216639e+02 -7.4114380315441565e+01 2.3576939135760787e+02 -2.3488521541598647e+02 3.4341737187983938e+02 -1.5959461001900144e+02
|
||||
init_forces: ! |2
|
||||
1 -2.1498835469576278e+01 4.0242705861631180e+01 -9.0007821437717382e+01
|
||||
2 -8.2018888113291979e+00 4.2353656629457461e+00 -4.0073270940910781e+00
|
||||
3 9.1203773212580060e+01 -1.3765900530865244e+02 8.1977349479812418e+01
|
||||
4 -4.8195100042546727e+01 -8.0451084249021534e+00 6.4747111681716376e+01
|
||||
5 -6.2251242080533295e+01 2.2803637398534534e+01 -5.3285420895267421e+00
|
||||
6 9.1265646559106216e+01 1.3743040689865262e+02 -3.9343488033831335e+01
|
||||
7 -4.7432736093120091e+01 -5.1202947877496094e+01 8.4096202947719512e+00
|
||||
8 2.2566883016909227e+02 1.6219571012359663e+02 5.7664673263129927e+01
|
||||
9 -2.0799357954651114e+00 5.0308583175017674e+00 -7.5442843674616533e-01
|
||||
10 -4.0472227269030174e+02 -4.7265020465440665e+02 -9.9994880868353093e+01
|
||||
11 3.9893735247972799e+01 2.0808487532188158e+02 -1.3663466833430391e+02
|
||||
12 6.2491147091194719e+01 7.0245646325825419e+01 1.9568453298435855e+02
|
||||
13 2.9232948128895806e+01 6.7196393653186874e+01 1.4103425861049234e+02
|
||||
14 7.2097046578806413e+01 -1.0032480603588586e+02 -3.5673090473056490e+01
|
||||
15 -1.0059127788938771e+02 3.4055222675821568e+01 -1.0290895713652986e+02
|
||||
16 -9.2256978542416007e+01 -1.2565565388894508e+02 -6.3113527034307076e+01
|
||||
17 1.7537714042702783e+02 1.4401690395071046e+02 2.8249184624181567e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
run_energy: 786.199103735512
|
||||
run_stress: ! |-
|
||||
-1.5979555001643004e+02 -7.4781079673606996e+01 2.3457662969003690e+02 -2.3349637150864024e+02 3.4159374485946643e+02 -1.5956254217954015e+02
|
||||
run_forces: ! |2
|
||||
1 -2.2291107377203105e+01 4.0666970718627333e+01 -9.0497211256380396e+01
|
||||
2 -7.6875363073287559e+00 3.9737486142840055e+00 -3.7620801734312614e+00
|
||||
3 9.2103819928191996e+01 -1.3743335232167533e+02 8.2431881459386020e+01
|
||||
4 -4.8290666517219691e+01 -8.1170776132331781e+00 6.4779991104261541e+01
|
||||
5 -6.2246983418905813e+01 2.2813785810311227e+01 -5.3751809499241965e+00
|
||||
6 9.1087481738151070e+01 1.3760819705271160e+02 -3.9500650484032505e+01
|
||||
7 -4.6891554381909977e+01 -5.0621074446115216e+01 8.3775716071879351e+00
|
||||
8 2.2268693398316259e+02 1.5891760123847899e+02 5.7199245600838793e+01
|
||||
9 -1.3435027007714808e+00 5.5949363550589339e+00 -1.0517595721340651e+00
|
||||
10 -4.0565110153193677e+02 -4.7084401363160805e+02 -9.7618847422734831e+01
|
||||
11 4.2251495153612957e+01 2.0872309038043886e+02 -1.3675117078222070e+02
|
||||
12 6.2352820175292266e+01 6.8729440749361473e+01 1.9366789701210121e+02
|
||||
13 2.9032540154457664e+01 6.7387205615336427e+01 1.4127076790322786e+02
|
||||
14 7.1580926568596425e+01 -9.9385928393915108e+01 -3.5110636800452511e+01
|
||||
15 -1.0011174024358218e+02 3.3796455380232061e+01 -1.0280446675457922e+02
|
||||
16 -9.3357186802666320e+01 -1.2692958041908989e+02 -6.3465822450651899e+01
|
||||
17 1.7677536158005910e+02 1.4511959491079591e+02 2.8210471959538260e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
...
|
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Mon Mar 22 21:19:05 202
|
||||
epsilon: 1e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
dihedral table
|
||||
pre_commands: ! ""
|
||||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
dihedral_style: table spline 3600
|
||||
dihedral_coeff: ! |
|
||||
1 ${input_dir}/harmonic_dihedral.txt HARMONIC_1
|
||||
2 ${input_dir}/harmonic_dihedral.txt HARMONIC_2
|
||||
3 ${input_dir}/harmonic_dihedral.txt HARMONIC_3
|
||||
4 ${input_dir}/harmonic_dihedral.txt HARMONIC_4
|
||||
5 ${input_dir}/harmonic_dihedral.txt HARMONIC_5
|
||||
extract: ! ""
|
||||
natoms: 29
|
||||
init_energy: 789.17395865366
|
||||
init_stress: ! |-
|
||||
-1.6167160198618581e+02 -7.4120077515581954e+01 2.3579167950176785e+02 -2.3490764576822448e+02 3.4342184840668585e+02 -1.5962456212434762e+02
|
||||
init_forces: ! |2
|
||||
1 -2.1511698354927645e+01 4.0249060385771472e+01 -9.0013321064696271e+01
|
||||
2 -8.1931699818042816e+00 4.2308633547530370e+00 -4.0030671970615401e+00
|
||||
3 9.1213724085941266e+01 -1.3766351443388791e+02 8.1969246814730084e+01
|
||||
4 -4.8202572709944334e+01 -8.0465316616826055e+00 6.4757081268568328e+01
|
||||
5 -6.2252471687916213e+01 2.2804485237535822e+01 -5.3285277358374286e+00
|
||||
6 9.1271091175285207e+01 1.3743691094855717e+02 -3.9344000146381845e+01
|
||||
7 -4.7435622491834799e+01 -5.1206081227011012e+01 8.4101355534202042e+00
|
||||
8 2.2568717307036252e+02 1.6221073791401761e+02 5.7667169771245945e+01
|
||||
9 -2.0794865262354030e+00 5.0314964866185363e+00 -7.5468527912272698e-01
|
||||
10 -4.0476567716026062e+02 -4.7270660864081441e+02 -9.9999223852109083e+01
|
||||
11 3.9909170153607846e+01 2.0810704891869841e+02 -1.3665197982219311e+02
|
||||
12 6.2493704712199360e+01 7.0253447706808217e+01 1.9569964315907762e+02
|
||||
13 2.9234925386176613e+01 6.7200938680873065e+01 1.4104379788150430e+02
|
||||
14 7.2099736473223771e+01 -1.0032854908984555e+02 -3.5674421413108355e+01
|
||||
15 -1.0059762925477315e+02 3.4057372933448626e+01 -1.0291545484092256e+02
|
||||
16 -9.2273704605935819e+01 -1.2566881267739232e+02 -6.3115663802590909e+01
|
||||
17 1.7540250771683569e+02 1.4403773516355182e+02 2.8253270705477295e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
run_energy: 786.186636054773
|
||||
run_stress: ! |-
|
||||
-1.5982910389343505e+02 -7.4774149450379937e+01 2.3460325334381506e+02 -2.3353349487854388e+02 3.4161194489304893e+02 -1.5958869300328692e+02
|
||||
run_forces: ! |2
|
||||
1 -2.2302877568136338e+01 4.0672550148970281e+01 -9.0501596555606994e+01
|
||||
2 -7.6795596366469354e+00 3.9696255711631245e+00 -3.7581781934774909e+00
|
||||
3 9.2113037896352481e+01 -1.3743858578373496e+02 8.2424527928857074e+01
|
||||
4 -4.8297128431903225e+01 -8.1171172458509702e+00 6.4789088257516795e+01
|
||||
5 -6.2249945655197145e+01 2.2813353706915890e+01 -5.3758960971523750e+00
|
||||
6 9.1082266941280153e+01 1.3760435384789912e+02 -3.9497610389853719e+01
|
||||
7 -4.6896901941201634e+01 -5.0626903993409201e+01 8.3785409954385486e+00
|
||||
8 2.2272760597411565e+02 1.5895499661752211e+02 5.7194518486415930e+01
|
||||
9 -1.3424389468966993e+00 5.5961120653727576e+00 -1.0522843110369067e+00
|
||||
10 -4.0569661746613480e+02 -4.7090645573337184e+02 -9.7628440089732422e+01
|
||||
11 4.2260633619776542e+01 2.0874271121537350e+02 -1.3676519708069108e+02
|
||||
12 6.2351939732772273e+01 6.8740733319529681e+01 1.9368291661547465e+02
|
||||
13 2.9034913906341565e+01 6.7392732862315881e+01 1.4128237934676201e+02
|
||||
14 7.1584708176938221e+01 -9.9391162142709391e+01 -3.5112483055478720e+01
|
||||
15 -1.0011391207749671e+02 3.3797184006896543e+01 -1.0280672266200776e+02
|
||||
16 -9.3370883891440556e+01 -1.2693997492906119e+02 -6.3467168010540369e+01
|
||||
17 1.7679515936747723e+02 1.4513584646617855e+02 2.8213604815112788e+01
|
||||
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||
...
|
|
@ -0,0 +1,78 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Thu Mar 25 14:07:45 202
|
||||
epsilon: 1e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
fix adapt
|
||||
pre_commands: ! |
|
||||
variable scale equal ramp(0.5,1.0)
|
||||
post_commands: ! |
|
||||
fix move all nve
|
||||
pair_style coul/long 8.0
|
||||
pair_coeff * *
|
||||
kspace_style pppm 1.0e-5
|
||||
fix test solute adapt 1 pair coul/long scale * * v_scale kspace v_scale scale no
|
||||
input_file: in.fourmol
|
||||
natoms: 29
|
||||
run_pos: ! |2
|
||||
1 -2.7585387890471996e-01 2.4721267521182790e+00 -1.7590741140808724e-01
|
||||
2 3.0525219871189541e-01 2.9567528136379986e+00 -8.4936576402532038e-01
|
||||
3 -6.9505003051265457e-01 1.2527081545845018e+00 -6.1997181046584049e-01
|
||||
4 -1.5812017862079175e+00 1.4837803436802379e+00 -1.2534501022240629e+00
|
||||
5 -9.0698616844921520e-01 9.2696438488362154e-01 3.9881670647678125e-01
|
||||
6 2.9475212358066677e-01 2.3090672513870800e-01 -1.2850129871041163e+00
|
||||
7 3.3910265413162427e-01 -9.8304106880631008e-03 -2.4646152989509647e+00
|
||||
8 1.1651505006204030e+00 -4.8743821011767707e-01 -6.7114884751728299e-01
|
||||
9 1.3774263981599719e+00 -2.5621838794437357e-01 2.7183404529472238e-01
|
||||
10 2.0205575722774203e+00 -1.4247755749375353e+00 -9.7170370274694495e-01
|
||||
11 1.7878178367325690e+00 -1.9913978116155537e+00 -1.8882122011553970e+00
|
||||
12 3.0049755926663213e+00 -4.9113386667261005e-01 -1.6222548793223990e+00
|
||||
13 4.0509873346708982e+00 -8.9189599256758900e-01 -1.6399664169684836e+00
|
||||
14 2.6067290768076905e+00 -4.1787776166657575e-01 -2.6628987151232200e+00
|
||||
15 2.9696220092443193e+00 5.5371700758037623e-01 -1.2345762790291681e+00
|
||||
16 2.6502758794398509e+00 -2.3947260224551123e+00 3.7979604817656068e-02
|
||||
17 2.2329379457566403e+00 -2.1019011639091216e+00 1.1489747581405534e+00
|
||||
18 2.1370039459092824e+00 3.0160650231380983e+00 -3.5182461434707273e+00
|
||||
19 1.5358245580755947e+00 2.6253262982024990e+00 -4.2345405067543185e+00
|
||||
20 2.7723206208610200e+00 3.6917660744997280e+00 -3.9324445897897893e+00
|
||||
21 4.9046698830002544e+00 -4.0744208992376789e+00 -3.6231785861154941e+00
|
||||
22 4.3619404928241057e+00 -4.2118418466324723e+00 -4.4549778550789503e+00
|
||||
23 5.7375471428283742e+00 -3.5861419285984151e+00 -3.8743083628403299e+00
|
||||
24 2.0685472614153846e+00 3.1534292413678289e+00 3.1539268144873454e+00
|
||||
25 1.3099248377134609e+00 3.2652552015323466e+00 2.5158443987470833e+00
|
||||
26 2.5769610944059931e+00 4.0046351067750248e+00 3.2209102828198946e+00
|
||||
27 -1.9616446495134594e+00 -4.3541288139763008e+00 2.1089564303871438e+00
|
||||
28 -2.7409194780982360e+00 -4.0232390590132754e+00 1.5874446954442702e+00
|
||||
29 -1.3169303967683006e+00 -3.6019395338314788e+00 2.2736834157327834e+00
|
||||
run_vel: ! |2
|
||||
1 3.2647934948866072e-03 -1.0659515509476220e-03 -3.5596416446573862e-03
|
||||
2 6.5461183155830240e-04 5.3408204488965814e-04 3.7281153774905299e-03
|
||||
3 5.5824606761867453e-04 6.8767077705354802e-03 2.6081254050903369e-03
|
||||
4 -3.0104306057251481e-03 -6.3737880755571717e-03 -5.7689309472175711e-04
|
||||
5 -1.0695603162793169e-02 -9.3124438941875488e-03 -3.5561825582117166e-03
|
||||
6 9.7217275192988716e-04 2.4037242875343898e-03 -1.4804194461220557e-03
|
||||
7 -9.8813125701116859e-04 7.1676860005907047e-05 -4.9726864557309155e-04
|
||||
8 5.7695861497255153e-04 -2.8105851335220203e-03 5.2330664783477206e-03
|
||||
9 -1.4995649604676725e-03 3.1649947790849786e-06 2.0412648677152027e-03
|
||||
10 1.5839012837707146e-03 3.0321007338515189e-03 -4.0872484640111792e-03
|
||||
11 -4.7758918532801661e-03 -2.6593274143911529e-03 -1.1550198582046794e-03
|
||||
12 9.0128567357444442e-04 -1.2761751259519178e-03 -2.0871137241467094e-03
|
||||
13 2.1567295863873783e-03 5.8607859346030983e-03 -7.1626599947017036e-04
|
||||
14 3.5355218381749455e-03 -5.7850299516532602e-03 -3.4518030258956843e-03
|
||||
15 -1.7110094580322296e-03 -6.3503642729395085e-03 5.8528583997245172e-03
|
||||
16 -1.3548756014535996e-03 1.4721717701533786e-03 3.4684968840172224e-03
|
||||
17 1.2456371869895035e-03 7.2712506650925211e-05 -1.0263875344785681e-03
|
||||
18 -7.6671852987712384e-04 -6.2725590016584319e-04 -1.7887461816215443e-03
|
||||
19 1.5144560879023705e-03 -2.7339688331763923e-03 8.2529894052008699e-03
|
||||
20 3.1192665056846264e-03 3.0118796973856330e-03 3.9267694079263664e-03
|
||||
21 -8.3441863827979606e-04 5.2127470504020413e-04 -1.3858761585700890e-03
|
||||
22 -3.4781949993989694e-03 -3.5196597997799125e-03 6.4236038889072932e-03
|
||||
23 -1.5073299456798523e-04 -5.2285186251896619e-03 4.8604614163606421e-03
|
||||
24 -6.9684359242923175e-05 1.0646658518855285e-03 -9.5542384314521332e-04
|
||||
25 5.4585615099357566e-03 -5.7013984855115978e-03 3.7920245454784174e-03
|
||||
26 -1.8076492725572590e-03 -4.1945707008573113e-03 4.0407648570027713e-03
|
||||
27 -3.5547747026063570e-05 1.1321728960280906e-03 -6.3187029759558986e-04
|
||||
28 -4.2637774879869998e-05 -1.6726973615869391e-03 2.4434056859341056e-03
|
||||
29 -3.5302833519675510e-03 -2.4353648747156768e-03 2.8116576375086392e-03
|
||||
...
|
|
@ -0,0 +1,77 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Thu Mar 25 14:01:17 202
|
||||
epsilon: 1e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
fix adapt
|
||||
pre_commands: ! |
|
||||
variable epsilon equal ramp(0.01,0.03)
|
||||
post_commands: ! |
|
||||
fix move all nve
|
||||
pair_style lj/cut 8.0
|
||||
pair_coeff * * 0.02 2.5
|
||||
fix test solute adapt 1 pair lj/cut epsilon * * v_epsilon scale no
|
||||
input_file: in.fourmol
|
||||
natoms: 29
|
||||
run_pos: ! |2
|
||||
1 -3.2551307172152166e-01 2.4346451341937119e+00 -1.1396829659429568e-01
|
||||
2 4.8617926885321056e-01 3.1070882859405997e+00 -1.0606347736697450e+00
|
||||
3 -6.4277692336189840e-01 1.2540574692558419e+00 -6.5067148095539729e-01
|
||||
4 -1.7124546848614086e+00 1.5199062846474698e+00 -1.3466731463120185e+00
|
||||
5 -9.4318702684092770e-01 8.7036167560098177e-01 5.8107949039715845e-01
|
||||
6 2.8417536732521353e-01 2.4411028847076369e-01 -1.2672995916002334e+00
|
||||
7 3.3978105928826102e-01 -1.3702127966002052e-02 -2.4842417404954271e+00
|
||||
8 1.1448702036571965e+00 -5.1199787721085332e-01 -7.6207631323785585e-01
|
||||
9 1.4560807143664061e+00 -1.7028374483027719e-01 6.2141359752210135e-01
|
||||
10 2.0382797810616289e+00 -1.4042635759560305e+00 -9.2654260470655225e-01
|
||||
11 1.7519024690839582e+00 -2.0813293238835207e+00 -2.0333284515052927e+00
|
||||
12 2.9787289051059695e+00 -5.2434906497210465e-01 -1.5904467995849627e+00
|
||||
13 4.1953422217253049e+00 -9.4830119722648354e-01 -1.6427468797605889e+00
|
||||
14 2.5500081793995157e+00 -4.0614435033397922e-01 -2.8121984203395161e+00
|
||||
15 2.9657048145111777e+00 7.0300473914796602e-01 -1.1808819862439999e+00
|
||||
16 2.6579963051616033e+00 -2.4005456919625914e+00 2.0005383723547647e-02
|
||||
17 2.2277056239576578e+00 -2.0984522178633980e+00 1.1635464820238732e+00
|
||||
18 2.1302246968151799e+00 2.9885050666882940e+00 -3.4237069257450177e+00
|
||||
19 1.3456038469693135e+00 2.5038497935542385e+00 -4.4658170467307343e+00
|
||||
20 2.9896625556783665e+00 3.9232215029072903e+00 -4.0788037150506025e+00
|
||||
21 4.8757906644427553e+00 -4.1085999726993636e+00 -3.5248264027627227e+00
|
||||
22 4.1728425444281765e+00 -4.2576916791274551e+00 -4.7519930504553214e+00
|
||||
23 6.0419888290998678e+00 -3.4039201576442903e+00 -3.9699675670526715e+00
|
||||
24 2.0885027685082749e+00 3.0623262332232590e+00 3.2053854817911325e+00
|
||||
25 1.0405778226848383e+00 3.3092074961772369e+00 2.2889143046855063e+00
|
||||
26 2.7667223704388135e+00 4.3243759349108064e+00 3.2424899041692892e+00
|
||||
27 -1.9442324574216177e+00 -4.4528190486931383e+00 2.1453601072505339e+00
|
||||
28 -3.0374110711029547e+00 -3.8950976773182124e+00 1.3869509742028494e+00
|
||||
29 -1.0900141540951092e+00 -3.3361017662313661e+00 2.3288506481859019e+00
|
||||
run_vel: ! |2
|
||||
1 -2.6363966609802322e-02 -2.1121682067821074e-02 3.6083903537541533e-02
|
||||
2 1.1439082425218627e-01 9.6059686259844332e-02 -1.2808582493334400e-01
|
||||
3 4.1111553959541365e-02 4.8218907676123458e-03 -2.0053345127339979e-02
|
||||
4 -1.1200342113854607e-01 2.3479218026487367e-02 -7.8322526982440521e-02
|
||||
5 -3.8701176979056742e-02 -5.4238808461352553e-02 1.3872068929223944e-01
|
||||
6 -1.2123879257604515e-02 1.8312769875475924e-02 1.5946869603522588e-02
|
||||
7 -2.8033909635229349e-04 -4.1270986674540478e-03 -2.1849258860351647e-02
|
||||
8 -1.0170253112050078e-02 -1.7528863700725254e-02 -4.2491773012772370e-02
|
||||
9 4.5241065101710616e-02 5.1469831376004180e-02 2.0995899436627763e-01
|
||||
10 1.8368003566726739e-02 1.4179451083200369e-02 2.9470727636806446e-02
|
||||
11 -3.2659358322720752e-02 -7.3493919093785873e-02 -1.1457396195350034e-01
|
||||
12 -2.1332063889491135e-02 -2.8577988202947827e-02 2.3932097053094816e-02
|
||||
13 1.2690181040869375e-01 -4.2622009579717637e-02 -3.2122980905022864e-03
|
||||
14 -4.3986665577866770e-02 4.1189150738941797e-03 -1.2884939606320925e-01
|
||||
15 -5.1087806082402770e-03 1.2103885273247751e-01 5.1598463273012998e-02
|
||||
16 7.2721700595591750e-03 -5.1107380318211630e-03 -1.6206172124102816e-02
|
||||
17 -4.5383051620802401e-03 3.8550131312268723e-03 1.5203146179855118e-02
|
||||
18 -3.4035600174367278e-03 -1.6724199163900926e-02 5.8534078947667954e-02
|
||||
19 -1.2309357029421318e-01 -8.2342186011711699e-02 -1.4270564232030267e-01
|
||||
20 1.3831939524791759e-01 1.4683346823701657e-01 -8.6190510762895065e-02
|
||||
21 -1.8190109221215101e-02 -2.0433705925500686e-02 5.9790597332019774e-02
|
||||
22 -1.2248854674722252e-01 -3.2562959165287515e-02 -1.7942350258565937e-01
|
||||
23 1.8820938314857302e-01 1.0738920901878871e-01 -5.3571267428950652e-02
|
||||
24 1.3241508666550663e-02 -5.5202622564252735e-02 3.1590984003367552e-02
|
||||
25 -1.6538995535147813e-01 2.1577200806135906e-02 -1.3992038866639564e-01
|
||||
26 1.1598773628387443e-01 1.9315924859017630e-01 1.7906411933036825e-02
|
||||
27 9.5161140946472839e-03 -6.0207807869183290e-02 2.1271816291477584e-02
|
||||
28 -1.8165131190419664e-01 7.5944941014218031e-02 -1.2012012232111549e-01
|
||||
29 1.3987378313944554e-01 1.6482908858701009e-01 3.7930623655713772e-02
|
||||
...
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,158 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Wed Mar 24 12:18:23 202
|
||||
epsilon: 5e-13
|
||||
prerequisites: ! |
|
||||
pair mliap
|
||||
pair zbl
|
||||
pre_commands: ! |
|
||||
variable newton_pair delete
|
||||
variable newton_pair index on
|
||||
post_commands: ! ""
|
||||
input_file: in.manybody
|
||||
pair_style: hybrid/overlay zbl 4.0 4.8 mliap model nn Ta06A.nn.mliap.model descriptor
|
||||
sna Ta06A.mliap.descriptor
|
||||
pair_coeff: ! |
|
||||
1*8 1*8 zbl 73 73
|
||||
* * mliap Ta Ta Ta Ta Ta Ta Ta Ta
|
||||
extract: ! ""
|
||||
natoms: 64
|
||||
init_vdwl: -473.569864629026
|
||||
init_coul: 0
|
||||
init_stress: ! |2-
|
||||
3.9989504688551500e+02 4.0778136516736993e+02 4.3596322435184823e+02 -2.5242497284339720e+01 1.2811620806363655e+02 2.8644673361821793e+00
|
||||
init_forces: ! |2
|
||||
1 -3.7538180163781538e+00 8.8612947043788708e+00 6.7712977816732263e+00
|
||||
2 -7.6696525239232596e+00 -3.7674335682223203e-01 -5.7958054718422760e+00
|
||||
3 -2.9221261341045079e-01 -1.2984917885683813e+00 2.2320440844884399e+00
|
||||
4 -4.7103509354198474e+00 9.2783458784125941e+00 4.3108702582741429e+00
|
||||
5 -2.0331946400488916e+00 -2.9593716047756180e+00 -1.6136351145373196e+00
|
||||
6 1.8086748683348572e+00 4.6479727629048675e+00 3.0425695895915184e-01
|
||||
7 -3.0573043543220644e+00 -4.0575899915120264e+00 1.5283788878527900e+00
|
||||
8 2.7148403621334427e-01 1.3063473238306007e+00 -1.1268098385676173e+00
|
||||
9 5.2043326273129953e-01 -2.9340446386399996e+00 -7.6461969078455834e+00
|
||||
10 -6.2786875145099508e-01 5.6606570005199308e-02 -5.3746300485699576e+00
|
||||
11 8.1946917251451818e+00 -6.7267140406524675e+00 2.5930013855034630e+00
|
||||
12 -1.4328402235895087e+01 -8.0774309292156197e+00 -7.6980199570965677e+00
|
||||
13 -3.2260600618006614e+00 1.3854745225224621e+01 -1.8038061855949390e+00
|
||||
14 -2.9498732270039856e+00 8.5589611530655674e+00 2.0530716609447816e-01
|
||||
15 -8.6349846297038031e+00 9.1996942753987270e+00 -9.5905201240123024e+00
|
||||
16 3.7310502876344778e+00 1.9788328492752776e+00 1.5687925430243098e+01
|
||||
17 5.0755393464331471e+00 6.1278868384113423e+00 -1.0750955741273682e+01
|
||||
18 1.7371660543384140e+00 3.0620693584379239e+00 7.2701166654624991e+00
|
||||
19 -2.9132243097469201e+00 -1.1018213008189437e+00 -2.8349170179881567e+00
|
||||
20 -1.6464048708371479e+01 2.4791517492525559e+00 3.4072780064525732e-01
|
||||
21 3.9250706073854098e+00 -1.0562396695052145e+00 -9.1632104209006702e+00
|
||||
22 -1.5634125465245701e+01 8.9090677007239911e+00 -1.2750204519006148e+01
|
||||
23 2.8936071278420723e+00 5.3816164530412767e+00 7.4597216732837071e+00
|
||||
24 3.1860163425620680e+00 4.7170150104555253e+00 6.3461114127051133e+00
|
||||
25 8.8078411119652245e-01 -1.4554648001614754e+00 1.6812657581308246e+00
|
||||
26 -1.8170871697803546e+00 -3.7700946621067644e-01 6.2457161242680581e-01
|
||||
27 4.3406014531279231e+00 -2.9009678649007267e+00 5.2435008444617139e+00
|
||||
28 -7.0542478046177770e-01 1.0981989037209707e+00 1.3116499712117630e+01
|
||||
29 -6.6151960592236154e+00 1.6410275382967996e+00 -1.0570398181017497e+00
|
||||
30 -3.6949627314218070e+00 2.0505225752289262e+00 -1.5676706969561256e+00
|
||||
31 -3.1645464836586603e+00 3.4678442856969571e-01 -3.0903933004746946e+00
|
||||
32 -7.8831496558114571e+00 4.7917666582558249e-01 8.5821461480119510e-01
|
||||
33 1.0742815926879523e+01 -5.8142728701457189e+00 9.7282423280124952e+00
|
||||
34 -1.3523086688998047e+00 -1.1117518205645105e-01 1.6057041203339644e+00
|
||||
35 2.5212001799950716e+00 -2.2938190564661185e+00 5.7029334689777986e+00
|
||||
36 1.7666626040313700e+00 -4.4698105712986091e+00 2.0563602888032650e-01
|
||||
37 -3.8714388913204467e+00 5.6357721515897250e+00 -6.6078854304621775e+00
|
||||
38 1.4632813171776671e+00 -3.3182377007830244e-01 -8.4412322782161375e-01
|
||||
39 4.1718406489245972e+00 -6.3270387696640586e+00 -1.1208012916569135e+01
|
||||
40 9.5193696695210637e+00 -7.0213638399035432e+00 -1.5692669012530696e+00
|
||||
41 2.4000089474497699e-01 1.0045144396502914e+00 -2.3032449685213630e+00
|
||||
42 -9.4741999244791426e+00 -6.3134658287662750e+00 -3.6928028439517893e+00
|
||||
43 2.7218639962411728e-01 -1.3813634477251096e+01 5.5147832931992291e-01
|
||||
44 8.0196107396135208e+00 -8.1793730426384545e+00 3.5131695854462590e+00
|
||||
45 -1.8910274064701343e-01 3.9137627573846219e+00 -7.4450993876429399e+00
|
||||
46 -3.5282857552811575e+00 -5.1713579630178099e+00 1.2477491203990510e+01
|
||||
47 5.1131478665605341e+00 2.3800985688973459e+00 5.1348001359881970e+00
|
||||
48 2.1755560727357057e+00 2.9996491762493216e+00 -9.9575511910097214e-01
|
||||
49 -2.3978299788760209e+00 -1.2283692236805253e+01 -8.3755937565454435e+00
|
||||
50 3.6161933080447888e+00 5.6291551969069182e+00 -6.9709721613230968e-01
|
||||
51 -3.0166275666360352e+00 1.1037977712957442e+01 8.8691052932904171e+00
|
||||
52 1.2943573147098917e+01 -1.1745909799528654e+01 1.6522312348562508e+01
|
||||
53 5.8389424736085775e+00 7.5295796786576226e+00 5.5403096028203525e+00
|
||||
54 4.6678942858445893e+00 -5.7948610984030058e+00 -4.7138910958393971e+00
|
||||
55 4.9846400582125163e+00 -8.4400769236810902e+00 -6.5776931744173313e+00
|
||||
56 -3.5699586538966939e-02 1.5545384984529795e+00 -5.2139902048630429e+00
|
||||
57 2.1375440189892982e+00 -1.3001299791681296e+00 -8.9740026386466654e-01
|
||||
58 5.2652486142639416e+00 -2.5529130533710997e+00 2.0016357749193905e-01
|
||||
59 9.0343971306644377e+00 4.2302611807585224e+00 -1.8088550980511922e+00
|
||||
60 -5.1586404521695464e+00 -1.5178664164309549e+01 -9.8559725391424795e+00
|
||||
61 9.6892046530364073e-01 3.6493959386458350e+00 -8.3809793809505195e-01
|
||||
62 -6.2693637951458694e+00 5.5593866650560679e+00 -4.0417158962655781e+00
|
||||
63 5.8570431431678962e+00 -6.2896068000076317e+00 -3.8788666930728688e+00
|
||||
64 7.5837965251215369e+00 7.5954689486766096e+00 1.6804021764142011e+01
|
||||
run_vdwl: -473.666568306022
|
||||
run_coul: 0
|
||||
run_stress: ! |2-
|
||||
3.9951053758431499e+02 4.0757094669497650e+02 4.3599209936956868e+02 -2.5012844114476398e+01 1.2751742945242590e+02 3.9821818278564844e+00
|
||||
run_forces: ! |2
|
||||
1 -3.7832595710893155e+00 8.8212124103655292e+00 6.7792549500694745e+00
|
||||
2 -7.6693903913873163e+00 -4.4331479267505980e-01 -5.8319844453604492e+00
|
||||
3 -3.5652510811236748e-01 -1.2843261396638010e+00 2.3164336943032460e+00
|
||||
4 -4.6688281400123417e+00 9.2569804046918627e+00 4.2532553525093961e+00
|
||||
5 -2.0698377683688305e+00 -3.0068940885360655e+00 -1.5557558367041349e+00
|
||||
6 1.9121936983089021e+00 4.6485144224151016e+00 3.8302570899366983e-01
|
||||
7 -3.0000564919294019e+00 -3.9598169423628935e+00 1.4730795882443171e+00
|
||||
8 2.2616298546615310e-01 1.3160780554993146e+00 -1.1365737437456360e+00
|
||||
9 4.5475496885290934e-01 -3.0115904820513633e+00 -7.6802788934953448e+00
|
||||
10 -6.5754023848348220e-01 4.3910855294922169e-02 -5.2814927356947416e+00
|
||||
11 8.0870811363765238e+00 -6.6478157150338770e+00 2.5239196033647513e+00
|
||||
12 -1.4266979871278297e+01 -7.9890391049193692e+00 -7.6506348180232058e+00
|
||||
13 -3.0605842642063994e+00 1.3809674690005217e+01 -1.6731082107132822e+00
|
||||
14 -3.0058694850615257e+00 8.5169039650285132e+00 1.8498544937038552e-01
|
||||
15 -8.6057398167379340e+00 9.1431278151038597e+00 -9.5164336499508586e+00
|
||||
16 3.7105123804670184e+00 1.9684880085511294e+00 1.5628485674431591e+01
|
||||
17 5.0446625217738115e+00 6.1086935560886335e+00 -1.0684670022014132e+01
|
||||
18 1.6342572076662352e+00 3.0978003138559700e+00 7.3023410755539730e+00
|
||||
19 -2.9853538081785418e+00 -1.1736228416330263e+00 -2.8772549755196275e+00
|
||||
20 -1.6354717680325663e+01 2.4069036913441169e+00 2.5852528541413577e-01
|
||||
21 3.9596059647558470e+00 -1.1309140461374385e+00 -9.2411865520092746e+00
|
||||
22 -1.5578599385494211e+01 8.8837889458923414e+00 -1.2717012806950681e+01
|
||||
23 2.9286474436436607e+00 5.4115499463398438e+00 7.4875237575502283e+00
|
||||
24 3.2309052666659346e+00 4.6724691716691664e+00 6.3076914533727404e+00
|
||||
25 8.7447853599857761e-01 -1.4447800235404800e+00 1.6369348219913344e+00
|
||||
26 -1.8229284577405889e+00 -3.3721763232208768e-01 6.1531223202321172e-01
|
||||
27 4.3482945496099807e+00 -2.9274873379719288e+00 5.2404893120488989e+00
|
||||
28 -7.6160360457911214e-01 1.1530752576673735e+00 1.3094542130299224e+01
|
||||
29 -6.6257114998810200e+00 1.6523572981586176e+00 -1.0670925651816274e+00
|
||||
30 -3.6586042068050459e+00 2.0111737944853250e+00 -1.5501355511382873e+00
|
||||
31 -3.1601602861552482e+00 3.3256891161094693e-01 -3.0724685917071382e+00
|
||||
32 -7.8275016718590731e+00 4.4236506496773642e-01 8.3868054333668041e-01
|
||||
33 1.0688722918141039e+01 -5.7920158261872583e+00 9.6923706747923646e+00
|
||||
34 -1.3525464452783258e+00 -1.0575652830645854e-01 1.6380965403350563e+00
|
||||
35 2.5193832475087721e+00 -2.2598987796878789e+00 5.6810280412635601e+00
|
||||
36 1.7111787089042565e+00 -4.4473718671663391e+00 9.6398513850121076e-02
|
||||
37 -3.8563809307986823e+00 5.6131073606614059e+00 -6.6177968130852260e+00
|
||||
38 1.5064516388374909e+00 -3.1694753678232956e-01 -8.3526359314898979e-01
|
||||
39 4.1314418694153812e+00 -6.2751004763663678e+00 -1.1210904504268449e+01
|
||||
40 9.5830290785144836e+00 -7.0395435048262769e+00 -1.6267459470122683e+00
|
||||
41 3.1375436243120802e-01 1.0622164383329200e+00 -2.2467935230672076e+00
|
||||
42 -9.4881290346220375e+00 -6.3542967900678029e+00 -3.7436081761319060e+00
|
||||
43 2.2855728522521823e-01 -1.3797673758210431e+01 5.1169123226999269e-01
|
||||
44 8.0135824689800454e+00 -8.1618220152116709e+00 3.4767795780208774e+00
|
||||
45 -2.2793629160624870e-01 3.8533578964252726e+00 -7.3720918772105994e+00
|
||||
46 -3.5217473183911405e+00 -5.1375353430494126e+00 1.2535347493777751e+01
|
||||
47 5.1244898311428937e+00 2.3801653011346930e+00 5.1114297013297003e+00
|
||||
48 2.1906793040748171e+00 3.0345200169741182e+00 -1.0179863236095192e+00
|
||||
49 -2.4788694934316329e+00 -1.2411071815396923e+01 -8.4971983039341392e+00
|
||||
50 3.6569038614206466e+00 5.6055766933888798e+00 -7.2525721879624516e-01
|
||||
51 -3.1071936932427051e+00 1.1143003955179145e+01 8.9003301745210983e+00
|
||||
52 1.2953816665492676e+01 -1.1681525536724189e+01 1.6495289315845085e+01
|
||||
53 5.8923317047264643e+00 7.6559750818830006e+00 5.7413363341910788e+00
|
||||
54 4.6456819257039355e+00 -5.7613868673147293e+00 -4.6785882460677595e+00
|
||||
55 4.9036275837635479e+00 -8.4131355466563491e+00 -6.4652425471547437e+00
|
||||
56 -2.5919766291264371e-02 1.4942725648609447e+00 -5.1846171304946838e+00
|
||||
57 2.1354464802186661e+00 -1.3197172317543322e+00 -8.9084444403811647e-01
|
||||
58 5.2496503717062382e+00 -2.5023030575014631e+00 1.2534239362101771e-01
|
||||
59 9.1088663289515797e+00 4.2501608997098561e+00 -1.8293706034164023e+00
|
||||
60 -5.2377119984886820e+00 -1.5252944642880552e+01 -9.9884309435445626e+00
|
||||
61 9.8418569822230928e-01 3.6718229831397404e+00 -7.9620939417097958e-01
|
||||
62 -6.2529671270584286e+00 5.5348777429740972e+00 -3.9890515783571203e+00
|
||||
63 5.8510809377900035e+00 -6.3420520892802621e+00 -3.9437203585924383e+00
|
||||
64 7.6647749161376320e+00 7.7322248465188412e+00 1.6865884297614787e+01
|
||||
...
|
|
@ -0,0 +1,158 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Wed Mar 24 12:24:38 202
|
||||
epsilon: 5e-13
|
||||
prerequisites: ! |
|
||||
pair mliap
|
||||
pair zbl
|
||||
pre_commands: ! |
|
||||
variable newton_pair delete
|
||||
variable newton_pair index on
|
||||
post_commands: ! ""
|
||||
input_file: in.manybody
|
||||
pair_style: hybrid/overlay zbl 4.0 4.8 mliap model quadratic W.quadratic.mliap.model
|
||||
descriptor sna W.quadratic.mliap.descriptor
|
||||
pair_coeff: ! |
|
||||
1*8 1*8 zbl 74 74
|
||||
* * mliap W W W W W W W W
|
||||
extract: ! ""
|
||||
natoms: 64
|
||||
init_vdwl: 310.670038860846
|
||||
init_coul: 0
|
||||
init_stress: ! |2-
|
||||
5.6259528842196187e+02 5.7316629871796738e+02 5.8790591480137323e+02 -1.8189500835315549e+01 1.3614672500307736e+02 5.6212035897053383e+00
|
||||
init_forces: ! |2
|
||||
1 -1.7332406552612252e+00 9.6965139437668633e+00 5.8109280039223741e+00
|
||||
2 -8.4506855506966403e+00 1.7517630868906400e+00 -5.8585143024763751e+00
|
||||
3 1.3067558540335114e+00 2.4533443839399922e+00 -5.3832194918864029e-01
|
||||
4 -5.4997504048583030e+00 8.6507394288895618e+00 3.5210921442144869e+00
|
||||
5 -5.4578004799253836e+00 -3.8166835957403560e+00 -1.9324965001410375e+00
|
||||
6 1.8068295611859355e+00 7.7167110612740411e+00 2.2464754671860354e+00
|
||||
7 -1.4615233556948404e+00 -4.5523205969121312e+00 5.2307165009286525e+00
|
||||
8 1.3470528830761590e+00 1.1150099302890997e+00 -2.4124956929134638e+00
|
||||
9 1.8536678547304528e+00 -5.9192817641183115e+00 -8.9231779770120117e+00
|
||||
10 -1.6830129533144051e+00 -2.0004948002622096e+00 -6.7940188134883588e+00
|
||||
11 9.3899899055663916e+00 -9.6096061996623181e+00 5.4294046031393410e+00
|
||||
12 -1.8440182258152287e+01 -9.1578611598783599e+00 -6.9019373206621033e+00
|
||||
13 -1.4789077352315048e+00 1.6126223605834220e+01 -2.3399418562200816e+00
|
||||
14 -5.1192810384232743e+00 7.8887975887856649e+00 2.7987351355628833e+00
|
||||
15 -1.1432288954023196e+01 1.2052925891647078e+01 -7.6561230955500186e+00
|
||||
16 4.9875199325917112e+00 -7.9756500980837031e-01 1.5348327626794408e+01
|
||||
17 3.0326448198662455e+00 1.0247763080256838e+01 -1.3162357502394531e+01
|
||||
18 1.1912120343158321e+00 3.8795028741303881e+00 9.7535980505837134e+00
|
||||
19 -4.1904376957856400e+00 -3.2045372808825174e+00 -1.1178952155997879e+00
|
||||
20 -2.0524722840954009e+01 1.3584987641399842e+00 1.2643890965526294e+00
|
||||
21 7.8962692301193274e+00 3.0756220916596053e+00 -1.0060035052224105e+01
|
||||
22 -1.6638865872488534e+01 7.3242501928548176e+00 -1.1470088145525292e+01
|
||||
23 3.1098873977160020e+00 8.9978923066815906e+00 7.3796685128197010e+00
|
||||
24 3.7623303590129575e+00 3.9470381598445985e+00 8.3456006313463575e+00
|
||||
25 2.7135762879995773e+00 1.2688233449033359e-01 2.7652325878214103e+00
|
||||
26 -2.5567333671028858e+00 -1.5012729784955012e+00 3.8180756571583805e+00
|
||||
27 5.4933629833598179e+00 -3.5852699914334007e-01 5.6772577899252621e+00
|
||||
28 2.1583223591405485e+00 2.5602854563986126e+00 1.2987493211097293e+01
|
||||
29 -9.3928065614100227e+00 8.1231719788253520e-01 -3.4139694444606663e+00
|
||||
30 -6.5111025810175223e+00 3.9239227943865140e+00 -1.9909323666256402e+00
|
||||
31 -4.5532920832558466e+00 2.9334735012590949e+00 -2.2603005294374805e+00
|
||||
32 -1.1131319171235056e+01 4.0773060096293179e-01 2.3495354245782185e-01
|
||||
33 1.1946312975015427e+01 -4.8997346173109610e+00 8.5135451343035555e+00
|
||||
34 2.2567306848110924e-01 -9.7924723339198039e-01 1.7583322195512454e+00
|
||||
35 2.8580692192724184e+00 -9.9224668537616911e-01 8.1615215594264985e+00
|
||||
36 -9.5804648131257442e-02 -6.2355391184959963e+00 -1.1533359083409473e+00
|
||||
37 -5.1866584177272408e+00 5.2276382338316552e+00 -9.4551207183301855e+00
|
||||
38 -1.1543907922565189e+00 -1.2217116705851163e+00 7.8535042419588308e-01
|
||||
39 7.5764294215464227e+00 -4.6563914581780939e+00 -1.4559998851452969e+01
|
||||
40 1.1962426631242364e+01 -6.5095442931054395e+00 -3.2593809840204688e+00
|
||||
41 4.2161422225881529e-01 -1.4729246940628351e+00 -4.8653082075157528e+00
|
||||
42 -1.2872945210845128e+01 -6.7834573750437004e+00 -6.3019087398505946e-01
|
||||
43 2.5785048972790117e+00 -1.6923099420445759e+01 -1.3360019377139212e+00
|
||||
44 1.2291023950270986e+01 -1.2191603864766963e+01 2.7304006094143318e+00
|
||||
45 -1.2398099447130371e+00 5.0658390044921555e+00 -9.2322482748129762e+00
|
||||
46 -1.4311260929166141e+00 -5.6910264552445193e+00 1.3277999978308035e+01
|
||||
47 6.2057343183031417e+00 3.7310981833648289e+00 4.8205098133270914e+00
|
||||
48 3.3963650236743295e+00 2.0831245825926228e+00 -1.2673031459768591e+00
|
||||
49 -1.8543360773247199e+00 -1.3380317233196116e+01 -8.4112300152561250e+00
|
||||
50 -1.9920275269520710e-01 7.0107508582593869e+00 -2.6708325452002271e+00
|
||||
51 -9.3660629689657249e-01 1.1809167034995344e+01 9.8986119959157612e+00
|
||||
52 1.2220659999225337e+01 -1.2024509026677922e+01 1.4962970527017067e+01
|
||||
53 7.4348387428600198e+00 7.7548706874243649e+00 4.1933368746931752e+00
|
||||
54 7.0105713161150085e+00 -7.7007180274608169e+00 -6.5961935960226112e+00
|
||||
55 3.2473798770902653e+00 -9.0385173613511878e+00 -8.5508326243716120e+00
|
||||
56 4.2348804882267466e-01 4.3169490550492495e-01 -5.3478203134943731e+00
|
||||
57 3.5009508489349979e+00 -3.3027079935021968e+00 -2.1184761311459956e+00
|
||||
58 9.2468424036384231e+00 -4.5181490794556876e+00 2.4559890235342761e+00
|
||||
59 9.9448793924013952e+00 4.5973129034833260e+00 -2.2322113512955504e+00
|
||||
60 -3.6986806985028280e+00 -1.7543528229443428e+01 -1.0133821358926038e+01
|
||||
61 -2.2233420196353229e+00 6.0781304306653574e+00 -1.8495331839082056e+00
|
||||
62 -1.2719363808848012e+01 8.6073749589883608e+00 -4.9797073704539283e+00
|
||||
63 7.9457470990016770e+00 -9.7673000016796276e+00 -4.3317841246475552e-01
|
||||
64 9.3812874011747454e+00 7.3062141638106093e+00 2.1744814847410481e+01
|
||||
run_vdwl: 310.495392494539
|
||||
run_coul: 0
|
||||
run_stress: ! |2-
|
||||
5.6245390685235475e+02 5.7310155923142815e+02 5.8811705982147669e+02 -1.8382792415481248e+01 1.3530908723557451e+02 6.7996805811527254e+00
|
||||
run_forces: ! |2
|
||||
1 -1.7474911328125362e+00 9.6453508706584969e+00 5.8264070485591564e+00
|
||||
2 -8.4157283593600489e+00 1.6574874271599898e+00 -5.8310589262897814e+00
|
||||
3 1.2088949261773574e+00 2.4669650164003505e+00 -4.1375090165872641e-01
|
||||
4 -5.4649039359012761e+00 8.6435152499830856e+00 3.4462094837625115e+00
|
||||
5 -5.4958328716797862e+00 -3.8484174335646353e+00 -1.8816778997456991e+00
|
||||
6 1.9551787223560284e+00 7.7494231202147503e+00 2.2973472684776728e+00
|
||||
7 -1.4123397167898091e+00 -4.4576559389423105e+00 5.1606908467828738e+00
|
||||
8 1.3003903361118314e+00 1.1090418970773539e+00 -2.4122402377787160e+00
|
||||
9 1.7752795626830657e+00 -5.9789440759859360e+00 -8.9434548975396595e+00
|
||||
10 -1.7012447055310522e+00 -1.9935230569531357e+00 -6.6673307006625988e+00
|
||||
11 9.2689566064779427e+00 -9.5287746372607316e+00 5.4104731087638704e+00
|
||||
12 -1.8405278855921495e+01 -9.0991584859228194e+00 -6.8488708319775853e+00
|
||||
13 -1.2996763830273808e+00 1.6069530823653931e+01 -2.2707313142490793e+00
|
||||
14 -5.1882033738262070e+00 7.8832636277485548e+00 2.7916487158318102e+00
|
||||
15 -1.1433449800945827e+01 1.2015094164432849e+01 -7.5825275115016781e+00
|
||||
16 4.9454676036434462e+00 -7.8102971145205025e-01 1.5266194219606220e+01
|
||||
17 3.0052148409052588e+00 1.0222703724442866e+01 -1.3093555057589381e+01
|
||||
18 1.0836570454713836e+00 3.9100837051064552e+00 9.7948718675854156e+00
|
||||
19 -4.2707464401127355e+00 -3.2934173316232527e+00 -1.1211010156027728e+00
|
||||
20 -2.0392897715847305e+01 1.3054265260795233e+00 1.1968830911637141e+00
|
||||
21 7.9027972563135283e+00 2.9933448022464120e+00 -1.0141811195436880e+01
|
||||
22 -1.6575655480795024e+01 7.3026015885081472e+00 -1.1453084247555879e+01
|
||||
23 3.1438035132341287e+00 9.0208182590437627e+00 7.4001520562013852e+00
|
||||
24 3.8345333002034385e+00 3.8688922268567087e+00 8.2635479168723016e+00
|
||||
25 2.6893003750410522e+00 1.3495734265712933e-01 2.6770556576379549e+00
|
||||
26 -2.5895248886874898e+00 -1.4293305889359713e+00 3.8291245405081260e+00
|
||||
27 5.5060054332311656e+00 -4.1092061919393136e-01 5.6759895801356688e+00
|
||||
28 2.1307408306936098e+00 2.6175526554889608e+00 1.2958660769748445e+01
|
||||
29 -9.3633952447569087e+00 8.2665579439215930e-01 -3.4012747321257448e+00
|
||||
30 -6.4533544693943297e+00 3.8387646522939547e+00 -2.0200114390690862e+00
|
||||
31 -4.5312579127038672e+00 2.9434281499085380e+00 -2.2589125870011584e+00
|
||||
32 -1.1081437585586908e+01 3.5221507626974347e-01 1.7034641632139044e-01
|
||||
33 1.1876109082707279e+01 -4.8655564590595244e+00 8.4901635945810785e+00
|
||||
34 1.9834861495951994e-01 -9.7867922827610787e-01 1.7689988369185765e+00
|
||||
35 2.8755972285806117e+00 -9.4201232104253185e-01 8.1427329437299605e+00
|
||||
36 -1.7696676342095063e-01 -6.2050030582426956e+00 -1.2610314329006926e+00
|
||||
37 -5.1523185432926066e+00 5.1647495629610471e+00 -9.4596116018450456e+00
|
||||
38 -1.0982182558331921e+00 -1.1973914898033993e+00 8.2357032136004271e-01
|
||||
39 7.5153819798537249e+00 -4.6353686206926801e+00 -1.4561478300809743e+01
|
||||
40 1.2018485301986439e+01 -6.4889114819969862e+00 -3.3179507002516861e+00
|
||||
41 5.3906537639254815e-01 -1.3597164515464635e+00 -4.7572664553057376e+00
|
||||
42 -1.2853367469523606e+01 -6.8243263403454719e+00 -7.0954222980753212e-01
|
||||
43 2.5285681786651231e+00 -1.6882295131334587e+01 -1.3986624925913076e+00
|
||||
44 1.2309710907856807e+01 -1.2175400941985238e+01 2.6677164515852514e+00
|
||||
45 -1.3287685848983446e+00 4.9721749381786715e+00 -9.1534484515246355e+00
|
||||
46 -1.4302864380872948e+00 -5.6407929749476793e+00 1.3337675572559966e+01
|
||||
47 6.2320161927247124e+00 3.7264499027617033e+00 4.8100453121557578e+00
|
||||
48 3.4140183611989756e+00 2.1640838168269934e+00 -1.2936781336070275e+00
|
||||
49 -1.9593115645555264e+00 -1.3493991739193522e+01 -8.5023532432195843e+00
|
||||
50 -1.6811489988289596e-01 6.9681072464297396e+00 -2.7188888125967106e+00
|
||||
51 -1.0469270161190001e+00 1.1884430462587432e+01 9.9090099481589125e+00
|
||||
52 1.2258922313552624e+01 -1.1933013587721307e+01 1.4931067313457525e+01
|
||||
53 7.4707442724281288e+00 7.8432472024360917e+00 4.3940747538426654e+00
|
||||
54 6.9725677862692397e+00 -7.6678940689959383e+00 -6.5509217426800008e+00
|
||||
55 3.1754349262716173e+00 -9.0126325358351416e+00 -8.4265432974728931e+00
|
||||
56 4.0310136221619780e-01 3.3628916654912500e-01 -5.3158911291318605e+00
|
||||
57 3.5009222797756716e+00 -3.3989600099867601e+00 -2.1369392158489036e+00
|
||||
58 9.2532114410873234e+00 -4.4437952950838877e+00 2.3641140155667579e+00
|
||||
59 1.0015845748025313e+01 4.6123938091542342e+00 -2.2569748666852796e+00
|
||||
60 -3.7800808893756161e+00 -1.7584651166860183e+01 -1.0234679510276377e+01
|
||||
61 -2.1980530287652753e+00 6.1071583911470810e+00 -1.7912415049492632e+00
|
||||
62 -1.2705161798029133e+01 8.5765301471185520e+00 -4.9056271749898661e+00
|
||||
63 7.9321561763633355e+00 -9.8033451737328594e+00 -4.9729640856821433e-01
|
||||
64 9.4795662420049851e+00 7.4221786097433808e+00 2.1786648548971794e+01
|
||||
...
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:10 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:14:43 202
|
||||
epsilon: 5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -9,22 +9,22 @@ pre_commands: ! ""
|
|||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
pair_style: born 8.0
|
||||
pair_coeff: ! "1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613
|
||||
141.547923828784 \n1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663
|
||||
4.09225030876458 \n1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725
|
||||
403.51858739517 \n1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071
|
||||
0.177172207445923 \n2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284
|
||||
17.5662073921955 \n2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855
|
||||
0.000703093129207124 \n2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145
|
||||
12.548008396489 \n3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117
|
||||
1019.38354056979 \n3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722\n"
|
||||
pair_coeff: ! |
|
||||
1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613 141.547923828784
|
||||
1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663 4.09225030876458
|
||||
1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725 403.51858739517
|
||||
1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071 0.177172207445923
|
||||
2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284 17.5662073921955
|
||||
2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855 0.000703093129207124
|
||||
2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145 12.548008396489
|
||||
3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117 1019.38354056979
|
||||
3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
extract: ! |
|
||||
a 2
|
||||
c 2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:10 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:14:43 202
|
||||
epsilon: 5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -9,22 +9,22 @@ pre_commands: ! ""
|
|||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
pair_style: born/coul/dsf 0.25 8.0
|
||||
pair_coeff: ! "1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613
|
||||
141.547923828784 \n1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663
|
||||
4.09225030876458 \n1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725
|
||||
403.51858739517 \n1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071
|
||||
0.177172207445923 \n2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284
|
||||
17.5662073921955 \n2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855
|
||||
0.000703093129207124 \n2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145
|
||||
12.548008396489 \n3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117
|
||||
1019.38354056979 \n3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722\n"
|
||||
pair_coeff: ! |
|
||||
1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613 141.547923828784
|
||||
1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663 4.09225030876458
|
||||
1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725 403.51858739517
|
||||
1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071 0.177172207445923
|
||||
2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284 17.5662073921955
|
||||
2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855 0.000703093129207124
|
||||
2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145 12.548008396489
|
||||
3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117 1019.38354056979
|
||||
3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
extract: ! ""
|
||||
natoms: 29
|
||||
init_vdwl: 225.01325775005
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:10 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:14:43 202
|
||||
epsilon: 7.5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -14,22 +14,22 @@ post_commands: ! |
|
|||
kspace_modify compute no
|
||||
input_file: in.fourmol
|
||||
pair_style: born/coul/long 8.0
|
||||
pair_coeff: ! "1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613
|
||||
141.547923828784 \n1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663
|
||||
4.09225030876458 \n1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725
|
||||
403.51858739517 \n1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071
|
||||
0.177172207445923 \n2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284
|
||||
17.5662073921955 \n2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855
|
||||
0.000703093129207124 \n2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145
|
||||
12.548008396489 \n3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117
|
||||
1019.38354056979 \n3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n"
|
||||
pair_coeff: ! |
|
||||
1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613 141.547923828784
|
||||
1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663 4.09225030876458
|
||||
1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725 403.51858739517
|
||||
1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071 0.177172207445923
|
||||
2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284 17.5662073921955
|
||||
2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855 0.000703093129207124
|
||||
2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145 12.548008396489
|
||||
3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117 1019.38354056979
|
||||
3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
extract: ! |
|
||||
cut_coul 0
|
||||
natoms: 29
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:10 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:14:43 202
|
||||
epsilon: 5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -15,22 +15,22 @@ post_commands: ! |
|
|||
kspace_modify pressure/scalar no # required for USER-OMP with msm
|
||||
input_file: in.fourmol
|
||||
pair_style: born/coul/msm 12.0
|
||||
pair_coeff: ! "1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613
|
||||
141.547923828784 \n1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663
|
||||
4.09225030876458 \n1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725
|
||||
403.51858739517 \n1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071
|
||||
0.177172207445923 \n2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284
|
||||
17.5662073921955 \n2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855
|
||||
0.000703093129207124 \n2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145
|
||||
12.548008396489 \n3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117
|
||||
1019.38354056979 \n3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n"
|
||||
pair_coeff: ! |
|
||||
1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613 141.547923828784
|
||||
1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663 4.09225030876458
|
||||
1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725 403.51858739517
|
||||
1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071 0.177172207445923
|
||||
2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284 17.5662073921955
|
||||
2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855 0.000703093129207124
|
||||
2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145 12.548008396489
|
||||
3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117 1019.38354056979
|
||||
3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
extract: ! |
|
||||
cut_coul 0
|
||||
natoms: 29
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:10 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:14:43 202
|
||||
epsilon: 5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -15,22 +15,22 @@ post_commands: ! |
|
|||
kspace_modify pressure/scalar no # required for USER-OMP with msm
|
||||
input_file: in.fourmol
|
||||
pair_style: born/coul/msm 12.0
|
||||
pair_coeff: ! "1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613
|
||||
141.547923828784 \n1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663
|
||||
4.09225030876458 \n1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725
|
||||
403.51858739517 \n1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071
|
||||
0.177172207445923 \n2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284
|
||||
17.5662073921955 \n2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855
|
||||
0.000703093129207124 \n2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145
|
||||
12.548008396489 \n3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117
|
||||
1019.38354056979 \n3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n"
|
||||
pair_coeff: ! |
|
||||
1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613 141.547923828784
|
||||
1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663 4.09225030876458
|
||||
1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725 403.51858739517
|
||||
1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071 0.177172207445923
|
||||
2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284 17.5662073921955
|
||||
2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855 0.000703093129207124
|
||||
2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145 12.548008396489
|
||||
3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117 1019.38354056979
|
||||
3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
extract: ! |
|
||||
cut_coul 0
|
||||
natoms: 29
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:11 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:14:44 202
|
||||
epsilon: 5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -9,22 +9,22 @@ pre_commands: ! ""
|
|||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
pair_style: born/coul/wolf 0.25 8.0
|
||||
pair_coeff: ! "1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613
|
||||
141.547923828784 \n1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663
|
||||
4.09225030876458 \n1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725
|
||||
403.51858739517 \n1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061
|
||||
303.336540547726 \n2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071
|
||||
0.177172207445923 \n2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284
|
||||
17.5662073921955 \n2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855
|
||||
0.000703093129207124 \n2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145
|
||||
12.548008396489 \n3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117
|
||||
1019.38354056979 \n3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624
|
||||
778.254162800904 \n4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722 \n5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912
|
||||
592.979935420722\n"
|
||||
pair_coeff: ! |
|
||||
1 1 2.51937098847838 0.148356076521964 1.82166848001002 29.0375806150613 141.547923828784
|
||||
1 2 2.87560097202631 0.103769845319212 1.18949647259382 1.7106306969663 4.09225030876458
|
||||
1 3 2.73333746288062 0.169158133709025 2.06291417638668 63.7180294456725 403.51858739517
|
||||
1 4 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
1 5 2.51591531388789 0.166186965980131 2.01659390849669 49.622913109061 303.336540547726
|
||||
2 2 1.0594557710255 0.281261664467988 0.314884389172266 0.271080184997071 0.177172207445923
|
||||
2 3 2.12127488295383 0.124576922646243 1.46526793359105 5.10367785279284 17.5662073921955
|
||||
2 4 0.523836115049206 0.140093804714855 0.262040872137659 0.00432916334694855 0.000703093129207124
|
||||
2 5 2.36887234111228 0.121604450909563 1.39946581861656 3.82529730669145 12.548008396489
|
||||
3 3 2.81831917530019 0.189944649028137 2.31041576143228 127.684271782117 1019.38354056979
|
||||
3 4 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
3 5 2.5316180773506 0.186976803503293 2.26748506873271 100.602835334624 778.254162800904
|
||||
4 4 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
4 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
5 5 2.63841820292211 0.184008285863681 2.19742633928911 79.1465822481912 592.979935420722
|
||||
extract: ! ""
|
||||
natoms: 29
|
||||
init_vdwl: 225.01325775005
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Thu Apr 1 12:05:31 202
|
||||
epsilon: 7.5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
pair lj/switch3/coulgauss/long
|
||||
kspace ewald
|
||||
pre_commands: ! ""
|
||||
post_commands: ! |
|
||||
pair_modify mix arithmetic
|
||||
pair_modify table 0
|
||||
kspace_style ewald 1.0e-6
|
||||
kspace_modify gewald 0.3
|
||||
kspace_modify compute no
|
||||
input_file: in.fourmol
|
||||
pair_style: lj/switch3/coulgauss/long 8.0 2.0
|
||||
pair_coeff: ! |
|
||||
1 1 0.02 2.5 1.0
|
||||
2 2 0.005 1.0 0.7
|
||||
2 4 0.005 0.5 0.7
|
||||
3 3 0.02 3.2 1.3
|
||||
4 4 0.015 3.1 1.2
|
||||
5 5 0.015 3.1 1.2
|
||||
extract: ! |
|
||||
epsilon 2
|
||||
sigma 2
|
||||
gamma 2
|
||||
cut_coul 0
|
||||
natoms: 29
|
||||
init_vdwl: 749.239201392283
|
||||
init_coul: 262.63137433058
|
||||
init_stress: ! |2-
|
||||
2.1905445805730942e+03 2.1830788072793757e+03 4.6581902800701146e+03 -7.4288115309776367e+02 2.6990012828168151e+01 6.7591505796334252e+02
|
||||
init_forces: ! |2
|
||||
1 -2.2440985285095003e+01 2.6839510386427128e+02 3.3548778459373403e+02
|
||||
2 1.6014525975608947e+02 1.2916401608538342e+02 -1.9007855889522560e+02
|
||||
3 -1.3523588460187835e+02 -3.8701969631758487e+02 -1.4563951593124975e+02
|
||||
4 -8.1626375608064503e+00 2.0129840978934559e+00 -5.9838237090267477e+00
|
||||
5 -3.2509810426586694e+00 -3.8006496952690405e+00 1.2238094761779506e+01
|
||||
6 -8.3272100467340556e+02 9.6240884847023358e+02 1.1512799880160530e+03
|
||||
7 5.9109223946129624e+01 -3.3613343492781996e+02 -1.7166010182633938e+03
|
||||
8 1.4374025374023395e+02 -1.0687979059788748e+02 3.9897084761513247e+02
|
||||
9 8.0822098286061347e+01 8.1693084015402164e+01 3.5446319638063176e+02
|
||||
10 5.3122611725677234e+02 -6.1057993090036803e+02 -1.8379536842135653e+02
|
||||
11 -3.0599394771020791e+00 -5.2185583295434022e+00 -1.0179624348800495e+01
|
||||
12 1.9237456341967800e+01 1.0181865500248987e+01 -6.1597937746835436e+00
|
||||
13 8.3909903723672699e+00 -3.3718280449484173e+00 -3.3038121588715319e-01
|
||||
14 -4.1292661630995928e+00 9.9336707464018092e-01 -9.3350058002796388e+00
|
||||
15 4.2168785095757555e-01 8.7977955328786113e+00 2.0699990715180956e+00
|
||||
16 4.6411046171725997e+02 -3.3264571918035432e+02 -1.1912223271773271e+03
|
||||
17 -4.5697820722395699e+02 3.2194358869766086e+02 1.2030903913181610e+03
|
||||
18 -2.9720972086277636e-01 1.7565528490258597e+00 2.4294604263813859e+00
|
||||
19 -2.6658339749427125e+00 -3.5543359860963246e+00 -7.0028176604540848e-01
|
||||
20 2.3030703223874878e+00 1.6788085961460804e+00 8.8715814688464914e-02
|
||||
21 -7.2491063430524989e+01 -8.0704358691908013e+01 2.2713112476019884e+02
|
||||
22 -1.1047017798074540e+02 -2.7622195109041627e+01 -1.7106972908159221e+02
|
||||
23 1.8254515612066885e+02 1.0874225091685935e+02 -5.5558584096022528e+01
|
||||
24 3.7139490938880684e+01 -2.1182968679989389e+02 1.1239472278345924e+02
|
||||
25 -1.5173442669154963e+02 2.2482896227152501e+01 -1.2683235954885029e+02
|
||||
26 1.1404997762743471e+02 1.8910942097520967e+02 1.3865307057956501e+01
|
||||
27 5.1263700969024825e+01 -2.2708329767472884e+02 9.0733209359745530e+01
|
||||
28 -1.8280634435959598e+02 7.6676771027308675e+01 -1.2320543486529729e+02
|
||||
29 1.3193901693998819e+02 1.5040612832512986e+02 3.2448964935598738e+01
|
||||
run_vdwl: 719.395943067584
|
||||
run_coul: 262.577357625246
|
||||
run_stress: ! |2-
|
||||
2.1439469903049130e+03 2.1388099416476502e+03 4.3901771762143671e+03 -7.2215136136852652e+02 4.3981220891989977e+01 6.3726346095247902e+02
|
||||
run_forces: ! |2
|
||||
1 -1.9342111296614632e+01 2.6536048036936916e+02 3.2628113020689460e+02
|
||||
2 1.5478381002242270e+02 1.2483653341336152e+02 -1.8332859341112297e+02
|
||||
3 -1.3348486669886435e+02 -3.7921582819403795e+02 -1.4287155661999228e+02
|
||||
4 -8.1288301070929982e+00 2.0080316198654273e+00 -5.9722562656827858e+00
|
||||
5 -3.2351829753164845e+00 -3.7719427860922665e+00 1.2190138978995325e+01
|
||||
6 -8.0768848311420356e+02 9.2016491680294996e+02 1.0274658369925041e+03
|
||||
7 5.6698550383493917e+01 -3.1122940570534678e+02 -1.5733988978986536e+03
|
||||
8 1.3387241605110836e+02 -9.8275697925936129e+01 3.8773060932891792e+02
|
||||
9 7.8389121495727082e+01 7.8858365413426057e+01 3.4347185476758511e+02
|
||||
10 5.2128680605857573e+02 -5.9933944295277558e+02 -1.8148565911030960e+02
|
||||
11 -3.0663895518130402e+00 -5.1690166614639725e+00 -1.0127704831021171e+01
|
||||
12 1.9218490979542565e+01 1.0175625089829989e+01 -6.2912885237383334e+00
|
||||
13 8.3443094714464650e+00 -3.3361880724739623e+00 -3.2980152351128239e-01
|
||||
14 -4.0925411684752673e+00 9.7261482089301243e-01 -9.2160488176079518e+00
|
||||
15 4.0396689631175081e-01 8.8125643989717197e+00 2.0895512608739368e+00
|
||||
16 4.3558458306026108e+02 -3.1347365130054965e+02 -1.1153604445579856e+03
|
||||
17 -4.2831293616595980e+02 3.0256033131579363e+02 1.1274168049543377e+03
|
||||
18 -3.0240289244505925e-01 1.7692205043557692e+00 2.4421829464376694e+00
|
||||
19 -2.6549690010635465e+00 -3.5598277436632562e+00 -6.9536112330149602e-01
|
||||
20 2.2933819335528716e+00 1.6713255394851048e+00 7.9301163390346582e-02
|
||||
21 -7.1399138479900728e+01 -7.8808617837125738e+01 2.2288288096726535e+02
|
||||
22 -1.0872540509179575e+02 -2.7364445523270156e+01 -1.6789056923341974e+02
|
||||
23 1.7970587875020576e+02 1.0659054948727307e+02 -5.4485902397030543e+01
|
||||
24 3.8719492068991073e+01 -2.1018768384060851e+02 1.1276643199107306e+02
|
||||
25 -1.5234502496218383e+02 2.2328379592897981e+01 -1.2741458364942766e+02
|
||||
26 1.1307896673604499e+02 1.8762340967163530e+02 1.4075792400442774e+01
|
||||
27 5.0253213702344411e+01 -2.2292638222448988e+02 8.8474597952361989e+01
|
||||
28 -1.7928804250876811e+02 7.5155358290636585e+01 -1.2061205300179266e+02
|
||||
29 1.2943333640446872e+02 1.4777042443708973e+02 3.2113607053518280e+01
|
||||
...
|
|
@ -0,0 +1,99 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Thu Apr 1 12:05:32 202
|
||||
epsilon: 5e-13
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
pair lj/switch3/coulgauss/long
|
||||
kspace ewald
|
||||
pre_commands: ! ""
|
||||
post_commands: ! |
|
||||
pair_modify mix arithmetic
|
||||
pair_modify table 16
|
||||
kspace_style ewald 1.0e-6
|
||||
kspace_modify gewald 0.3
|
||||
kspace_modify compute no
|
||||
input_file: in.fourmol
|
||||
pair_style: lj/switch3/coulgauss/long 8.0 2.0
|
||||
pair_coeff: ! |
|
||||
1 1 0.02 2.5 1.0
|
||||
2 2 0.005 1.0 0.7
|
||||
2 4 0.005 0.5 0.7
|
||||
3 3 0.02 3.2 1.3
|
||||
4 4 0.015 3.1 1.2
|
||||
5 5 0.015 3.1 1.2
|
||||
extract: ! |
|
||||
epsilon 2
|
||||
sigma 2
|
||||
gamma 2
|
||||
cut_coul 0
|
||||
natoms: 29
|
||||
init_vdwl: 749.239201392283
|
||||
init_coul: 262.631410551483
|
||||
init_stress: ! |2-
|
||||
2.1905446008358158e+03 2.1830788130354440e+03 4.6581902934947393e+03 -7.4288114980317005e+02 2.6990022323315568e+01 6.7591506205400140e+02
|
||||
init_forces: ! |2
|
||||
1 -2.2440986789065228e+01 2.6839510344190973e+02 3.3548778280211798e+02
|
||||
2 1.6014525925595575e+02 1.2916401535280644e+02 -1.9007855755707530e+02
|
||||
3 -1.3523588449321372e+02 -3.8701969643290909e+02 -1.4563951605577458e+02
|
||||
4 -8.1626375642225835e+00 2.0129845605828729e+00 -5.9838235187927911e+00
|
||||
5 -3.2509808748500135e+00 -3.8006487477814463e+00 1.2238094996907998e+01
|
||||
6 -8.3272100512926681e+02 9.6240884941333036e+02 1.1512799862203640e+03
|
||||
7 5.9109223148516158e+01 -3.3613343497406407e+02 -1.7166010203250210e+03
|
||||
8 1.4374025301066052e+02 -1.0687979086260394e+02 3.9897084965667705e+02
|
||||
9 8.0822100084645626e+01 8.1693083424499093e+01 3.5446319827945621e+02
|
||||
10 5.3122611737361080e+02 -6.1057993046376589e+02 -1.8379536902952145e+02
|
||||
11 -3.0599395914956227e+00 -5.2185576282473036e+00 -1.0179624244755713e+01
|
||||
12 1.9237456510724858e+01 1.0181865558167726e+01 -6.1597946782797850e+00
|
||||
13 8.3909904522091470e+00 -3.3718281778746344e+00 -3.3038108557256562e-01
|
||||
14 -4.1292663075103953e+00 9.9336695410995779e-01 -9.3350056582436061e+00
|
||||
15 4.2168780003223016e-01 8.7977952410479840e+00 2.0699996667940117e+00
|
||||
16 4.6411046291217519e+02 -3.3264572037764498e+02 -1.1912223268528312e+03
|
||||
17 -4.5697820745668372e+02 3.2194358895792664e+02 1.2030903912557251e+03
|
||||
18 -2.9720916995537250e-01 1.7565528041526848e+00 2.4294595600637425e+00
|
||||
19 -2.6658359770891962e+00 -3.5543374045750902e+00 -7.0028189781643846e-01
|
||||
20 2.3030721439983917e+00 1.6788097920639553e+00 8.8716903513438167e-02
|
||||
21 -7.2491063802446362e+01 -8.0704358127081790e+01 2.2713112533044830e+02
|
||||
22 -1.1047018068190837e+02 -2.7622196765220032e+01 -1.7106973071745716e+02
|
||||
23 1.8254515931328083e+02 1.0874225209184637e+02 -5.5558583211276250e+01
|
||||
24 3.7139491235265282e+01 -2.1182968640787311e+02 1.1239472233677957e+02
|
||||
25 -1.5173442866720330e+02 2.2482894929853938e+01 -1.2683236039424271e+02
|
||||
26 1.1404997991795076e+02 1.8910942242955088e+02 1.3865308691923977e+01
|
||||
27 5.1263700853661504e+01 -2.2708329750901160e+02 9.0733209165823396e+01
|
||||
28 -1.8280634707113845e+02 7.6676770092406045e+01 -1.2320543608135794e+02
|
||||
29 1.3193901956336219e+02 1.5040612883439849e+02 3.2448966441423750e+01
|
||||
run_vdwl: 719.3959430344
|
||||
run_coul: 262.577390407319
|
||||
run_stress: ! |2-
|
||||
2.1439470065972137e+03 2.1388099427650550e+03 4.3901771876285757e+03 -7.2215135528838152e+02 4.3981227731157169e+01 6.3726346514781233e+02
|
||||
run_forces: ! |2
|
||||
1 -1.9342112777764044e+01 2.6536047986408227e+02 3.2628112882188066e+02
|
||||
2 1.5478380987853197e+02 1.2483653254176838e+02 -1.8332859191802055e+02
|
||||
3 -1.3348486656752218e+02 -3.7921582829992821e+02 -1.4287155674732023e+02
|
||||
4 -8.1288300595478145e+00 2.0080320707984289e+00 -5.9722560784187575e+00
|
||||
5 -3.2351826602132863e+00 -3.7719418655198664e+00 1.2190139134122882e+01
|
||||
6 -8.0768848338103430e+02 9.2016491733383600e+02 1.0274658351618857e+03
|
||||
7 5.6698550307468736e+01 -3.1122940556308856e+02 -1.5733989002062301e+03
|
||||
8 1.3387241574644310e+02 -9.8275698627583083e+01 3.8773061254696188e+02
|
||||
9 7.8389123166777367e+01 7.8858364582844956e+01 3.4347185682031875e+02
|
||||
10 5.2128680625044581e+02 -5.9933944258147972e+02 -1.8148565985727146e+02
|
||||
11 -3.0663897393660062e+00 -5.1690158790311020e+00 -1.0127704822035417e+01
|
||||
12 1.9218491178640956e+01 1.0175625315025894e+01 -6.2912900026938683e+00
|
||||
13 8.3443096072761875e+00 -3.3361882591914980e+00 -3.2980142478029900e-01
|
||||
14 -4.0925412507338894e+00 9.7261457606495283e-01 -9.2160486509597419e+00
|
||||
15 4.0396659601733209e-01 8.8125640821770475e+00 2.0895518255992327e+00
|
||||
16 4.3558458334132916e+02 -3.1347365174745744e+02 -1.1153604446371062e+03
|
||||
17 -4.2831293628122177e+02 3.0256033223226825e+02 1.1274168046352991e+03
|
||||
18 -3.0240272912362937e-01 1.7692204105371876e+00 2.4421821828695935e+00
|
||||
19 -2.6549708608109603e+00 -3.5598291696654596e+00 -6.9536106786938656e-01
|
||||
20 2.2933837220124476e+00 1.6713266856927325e+00 7.9302040608548133e-02
|
||||
21 -7.1399139014949796e+01 -7.8808617040884513e+01 2.2288288163778361e+02
|
||||
22 -1.0872540740988465e+02 -2.7364447046562592e+01 -1.6789057060588300e+02
|
||||
23 1.7970588157677136e+02 1.0659055047797085e+02 -5.4485901626092641e+01
|
||||
24 3.8719492028250940e+01 -2.1018768371930031e+02 1.1276643093423978e+02
|
||||
25 -1.5234502685835807e+02 2.2328378412375191e+01 -1.2741458439419397e+02
|
||||
26 1.1307896905891306e+02 1.8762341114219453e+02 1.4075794088855011e+01
|
||||
27 5.0253213439313768e+01 -2.2292638208302930e+02 8.8474597770747309e+01
|
||||
28 -1.7928804514846018e+02 7.5155357340410589e+01 -1.2061205423392185e+02
|
||||
29 1.2943333884079848e+02 1.4777042481467481e+02 3.2113608671625300e+01
|
||||
...
|
|
@ -0,0 +1,99 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Thu Apr 1 12:40:49 202
|
||||
epsilon: 7.5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
pair mm3/switch3/coulgauss/long
|
||||
kspace ewald
|
||||
pre_commands: ! ""
|
||||
post_commands: ! |
|
||||
pair_modify mix arithmetic
|
||||
pair_modify table 0
|
||||
kspace_style ewald 1.0e-6
|
||||
kspace_modify gewald 0.3
|
||||
kspace_modify compute no
|
||||
input_file: in.fourmol
|
||||
pair_style: mm3/switch3/coulgauss/long 8.0 2.0
|
||||
pair_coeff: ! |
|
||||
1 1 0.02 2.5 1.0
|
||||
2 2 0.005 1.0 0.7
|
||||
2 4 0.005 0.5 0.7
|
||||
3 3 0.02 3.2 1.3
|
||||
4 4 0.015 3.1 1.2
|
||||
5 5 0.015 3.1 1.2
|
||||
extract: ! |
|
||||
epsilon 2
|
||||
sigma 2
|
||||
gamma 2
|
||||
cut_coul 0
|
||||
natoms: 29
|
||||
init_vdwl: 38.1287498820824
|
||||
init_coul: 262.63137433058
|
||||
init_stress: ! |-
|
||||
-9.1891442318066098e+01 -1.3287972066289731e+02 -3.2601698046780012e+02 3.0074181349476991e+01 -4.6650805915669622e+00 -8.2199038214680613e+01
|
||||
init_forces: ! |2
|
||||
1 2.0409906927303840e+00 -1.8543276343677643e+01 -3.5869856577020748e+01
|
||||
2 -1.8468129335667530e+01 -1.7027855689261912e+01 2.0713359151753043e+01
|
||||
3 1.0001881298085964e+01 5.9235891506906007e+01 2.4372336208613245e+01
|
||||
4 -4.5761624241138597e+00 -9.8945397153998949e-01 -3.3785801701857485e+00
|
||||
5 -3.6934402656902114e+00 -4.0696606560869748e+00 3.8826787260480975e+00
|
||||
6 7.6754814037515942e+01 -9.5808744511121716e+01 -9.3227045949147495e+01
|
||||
7 -2.1177649780159676e+01 2.8793163914062454e+01 1.2529350681895039e+02
|
||||
8 -2.1450096176689623e+01 1.0356391751725083e+01 -2.8955420955058667e+01
|
||||
9 -8.2497939748793154e+00 -1.3077027567751550e+01 -3.6173491871315754e+01
|
||||
10 -5.3511691146997535e+01 6.0900974965221437e+01 1.8391821307129032e+01
|
||||
11 -1.3170240621133327e+00 -3.2364695484525727e+00 -4.4029422841407655e+00
|
||||
12 2.5797191091185894e+01 -7.5496414014335278e-01 -2.6346161145571760e+00
|
||||
13 3.3781782842360095e+00 -7.7635850626588521e-01 -6.1835215466770443e-01
|
||||
14 -2.5357285341105120e-02 9.3547318559063564e-01 -4.9468893910982210e+00
|
||||
15 4.2707742121454375e+00 4.7941154645598454e+00 -1.2015244265327498e+00
|
||||
16 -3.6573746563916743e+01 1.8565541369425805e+01 1.1446966549457964e+02
|
||||
17 4.3913383545862132e+01 -3.3849656320211224e+01 -9.5337593733730870e+01
|
||||
18 2.6570097579579910e+00 6.2826343323709564e+00 -1.0356872257658154e+00
|
||||
19 -2.6993382209993975e+00 -3.5969189205658059e+00 -6.8072388138355555e-01
|
||||
20 2.3243788182239480e+00 1.6918048474772680e+00 1.0886178998340870e-01
|
||||
21 8.8572294982176594e+00 1.1602893199785523e+01 -3.0057630309158139e+01
|
||||
22 1.2429506519553414e+01 2.1605554971279792e+00 2.1808499086967526e+01
|
||||
23 -2.1432721217228789e+01 -1.3678275101206289e+01 8.4081109687741140e+00
|
||||
24 -3.9016922943010681e+00 2.9074424568745080e+01 -1.3996421656066522e+01
|
||||
25 1.7462841196067998e+01 -4.6818042132561875e+00 1.5548837958928004e+01
|
||||
26 -1.2984517260341663e+01 -2.4211628682033979e+01 -4.8885242451183231e-01
|
||||
27 -7.1989693245110757e+00 3.0862600015720503e+01 -1.2113492397573609e+01
|
||||
28 2.1728885747832702e+01 -1.1241487657358419e+01 1.5185683466068600e+01
|
||||
29 -1.4356735366664552e+01 -1.9712882789785066e+01 -3.0642394558798047e+00
|
||||
run_vdwl: 37.7351028273436
|
||||
run_coul: 262.634961661768
|
||||
run_stress: ! |-
|
||||
-9.3272108018189712e+01 -1.3382217126586661e+02 -3.2672293936615591e+02 2.9759545957029179e+01 -4.9209094100413031e+00 -8.2642487904188499e+01
|
||||
run_forces: ! |2
|
||||
1 2.0020649788635687e+00 -1.8597539511786593e+01 -3.5898845980394640e+01
|
||||
2 -1.8527112215088330e+01 -1.7111766426267462e+01 2.0691354848190322e+01
|
||||
3 1.0099460867786970e+01 5.9365750003142132e+01 2.4423492212473526e+01
|
||||
4 -4.5756546931309785e+00 -9.8171265309239830e-01 -3.3833947541955820e+00
|
||||
5 -3.6935770918861186e+00 -4.0701905608402482e+00 3.8892344342573999e+00
|
||||
6 7.6571694717448139e+01 -9.5745009991872053e+01 -9.3149401161723290e+01
|
||||
7 -2.1146519945476555e+01 2.8805358955193604e+01 1.2508940744689353e+02
|
||||
8 -2.1038405837727929e+01 9.9856756739362105e+00 -2.8916679506818486e+01
|
||||
9 -8.2725059756602182e+00 -1.3032514603603040e+01 -3.6169609418536254e+01
|
||||
10 -5.3760826931047106e+01 6.1170224214358463e+01 1.8495907821099792e+01
|
||||
11 -1.3253792323264064e+00 -3.2541587509559888e+00 -4.4355038136226383e+00
|
||||
12 2.5785718250683153e+01 -7.4878886859791716e-01 -2.6134474044331246e+00
|
||||
13 3.3829109925579108e+00 -7.7854283145617098e-01 -6.1471416338880658e-01
|
||||
14 -4.1269999117458912e-02 9.3253553809356449e-01 -4.9663548861610076e+00
|
||||
15 4.2930245502032669e+00 4.8016878244809185e+00 -1.2067988554549580e+00
|
||||
16 -3.6783956118288792e+01 1.8760442771705005e+01 1.1514035612976591e+02
|
||||
17 4.4141165055486525e+01 -3.4054760176447999e+01 -9.5996384977569576e+01
|
||||
18 2.6593312590300169e+00 6.2866044197349034e+00 -1.0406390620860617e+00
|
||||
19 -2.6868912576483734e+00 -3.5919428389901107e+00 -6.7199629496476021e-01
|
||||
20 2.3122559534773646e+00 1.6848231900639974e+00 1.0223174367536356e-01
|
||||
21 9.0047861017105912e+00 1.1657532054221129e+01 -3.0300252008113389e+01
|
||||
22 1.2602723597354565e+01 2.2333302149108087e+00 2.1993415039821400e+01
|
||||
23 -2.1752703090839589e+01 -1.3807398281546009e+01 8.4647717981317978e+00
|
||||
24 -4.1597044706741348e+00 2.9600068810024190e+01 -1.4377966609809059e+01
|
||||
25 1.8008123772533907e+01 -4.7255601865067156e+00 1.6011744232774660e+01
|
||||
26 -1.3270414090792938e+01 -2.4692000422804888e+01 -5.6774111520305048e-01
|
||||
27 -7.3472295182173077e+00 3.1133794558171346e+01 -1.2191686027733443e+01
|
||||
28 2.2002916813161221e+01 -1.1345147346836630e+01 1.5336216642368582e+01
|
||||
29 -1.4484026442375008e+01 -1.9880794776432037e+01 -3.1367163092441239e+00
|
||||
...
|
|
@ -0,0 +1,99 @@
|
|||
---
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Thu Apr 1 12:40:49 202
|
||||
epsilon: 5e-13
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
pair mm3/switch3/coulgauss/long
|
||||
kspace ewald
|
||||
pre_commands: ! ""
|
||||
post_commands: ! |
|
||||
pair_modify mix arithmetic
|
||||
pair_modify table 16
|
||||
kspace_style ewald 1.0e-6
|
||||
kspace_modify gewald 0.3
|
||||
kspace_modify compute no
|
||||
input_file: in.fourmol
|
||||
pair_style: mm3/switch3/coulgauss/long 8.0 2.0
|
||||
pair_coeff: ! |
|
||||
1 1 0.02 2.5 1.0
|
||||
2 2 0.005 1.0 0.7
|
||||
2 4 0.005 0.5 0.7
|
||||
3 3 0.02 3.2 1.3
|
||||
4 4 0.015 3.1 1.2
|
||||
5 5 0.015 3.1 1.2
|
||||
extract: ! |
|
||||
epsilon 2
|
||||
sigma 2
|
||||
gamma 2
|
||||
cut_coul 0
|
||||
natoms: 29
|
||||
init_vdwl: 38.1287498820824
|
||||
init_coul: 262.631410551483
|
||||
init_stress: ! |-
|
||||
-9.1891422055344222e+01 -1.3287971490682878e+02 -3.2601696704317601e+02 3.0074184644070325e+01 -4.6650710964193243e+00 -8.2199034124021594e+01
|
||||
init_forces: ! |2
|
||||
1 2.0409891887601410e+00 -1.8543276766039128e+01 -3.5869858368636784e+01
|
||||
2 -1.8468129835801221e+01 -1.7027856421838862e+01 2.0713360489903284e+01
|
||||
3 1.0001881406750512e+01 5.9235891391581845e+01 2.4372336084088403e+01
|
||||
4 -4.5761624275299884e+00 -9.8945350885057237e-01 -3.3785799799517919e+00
|
||||
5 -3.6934400978815565e+00 -4.0696597085993824e+00 3.8826789611765924e+00
|
||||
6 7.6754813581654659e+01 -9.5808743568025008e+01 -9.3227047744836440e+01
|
||||
7 -2.1177650577773125e+01 2.8793163867818368e+01 1.2529350475732382e+02
|
||||
8 -2.1450096906263081e+01 1.0356391487008732e+01 -2.8955418913514073e+01
|
||||
9 -8.2497921762950064e+00 -1.3077028158654645e+01 -3.6173489972491325e+01
|
||||
10 -5.3511691030159355e+01 6.0900975401823587e+01 1.8391820698964121e+01
|
||||
11 -1.3170241765068751e+00 -3.2364688471564778e+00 -4.4029421800959856e+00
|
||||
12 2.5797191259942942e+01 -7.5496408222462352e-01 -2.6346170181534139e+00
|
||||
13 3.3781783640778875e+00 -7.7635863919210357e-01 -6.1835202435311720e-01
|
||||
14 -2.5357429751907436e-02 9.3547306506041328e-01 -4.9468892490621892e+00
|
||||
15 4.2707741612200945e+00 4.7941151727292111e+00 -1.2015238312568339e+00
|
||||
16 -3.6573745369001358e+01 1.8565540172135101e+01 1.1446966581907569e+02
|
||||
17 4.3913383313135455e+01 -3.3849656059945403e+01 -9.5337593796166914e+01
|
||||
18 2.6570103088653938e+00 6.2826342874977836e+00 -1.0356880920834588e+00
|
||||
19 -2.6993402231458812e+00 -3.5969203390445723e+00 -6.8072401315458542e-01
|
||||
20 2.3243806398348510e+00 1.6918060433951427e+00 1.0886287880838207e-01
|
||||
21 8.8572291262962786e+00 1.1602893764611768e+01 -3.0057629738908702e+01
|
||||
22 1.2429503818390431e+01 2.1605538409495715e+00 2.1808497451102578e+01
|
||||
23 -2.1432718024616804e+01 -1.3678273926219282e+01 8.4081118535203938e+00
|
||||
24 -3.9016919979164766e+00 2.9074424960765882e+01 -1.3996422102746218e+01
|
||||
25 1.7462839220414320e+01 -4.6818055105547502e+00 1.5548837113535589e+01
|
||||
26 -1.2984514969825625e+01 -2.4211627227692777e+01 -4.8885079054435532e-01
|
||||
27 -7.1989694398744213e+00 3.0862600181437756e+01 -1.2113492591495778e+01
|
||||
28 2.1728883036290242e+01 -1.1241488592261051e+01 1.5185682250007966e+01
|
||||
29 -1.4356732743290538e+01 -1.9712882280516450e+01 -3.0642379500547996e+00
|
||||
run_vdwl: 37.735102831577
|
||||
run_coul: 262.634996567417
|
||||
run_stress: ! |-
|
||||
-9.3272087816450096e+01 -1.3382216892660497e+02 -3.2672292496064199e+02 2.9759550012391575e+01 -4.9209020012813669e+00 -8.2642482482441096e+01
|
||||
run_forces: ! |2
|
||||
1 2.0020633315697571e+00 -1.8597540312576371e+01 -3.5898847150887825e+01
|
||||
2 -1.8527112685977595e+01 -1.7111767435468980e+01 2.0691356245503808e+01
|
||||
3 1.0099461000123771e+01 5.9365749899001820e+01 2.4423492074447349e+01
|
||||
4 -4.5756545930134305e+00 -9.8171217238369679e-01 -3.3833945796207656e+00
|
||||
5 -3.6935769629718820e+00 -4.0701894718259650e+00 3.8892346120926988e+00
|
||||
6 7.6571693742405060e+01 -9.5745009619986718e+01 -9.3149402824851791e+01
|
||||
7 -2.1146520723115522e+01 2.8805359357005347e+01 1.2508940510400312e+02
|
||||
8 -2.1038406658511651e+01 9.9856753020536395e+00 -2.8916677199745425e+01
|
||||
9 -8.2725040661224440e+00 -1.3032515389877304e+01 -3.6169607187530971e+01
|
||||
10 -5.3760826866916233e+01 6.1170224662661617e+01 1.8495907188455345e+01
|
||||
11 -1.3253793686585611e+00 -3.2541579724226799e+00 -4.4355037885599886e+00
|
||||
12 2.5785718921609639e+01 -7.4878876652861359e-01 -2.6134482478760357e+00
|
||||
13 3.3829110641517599e+00 -7.7854300168776425e-01 -6.1471395974905052e-01
|
||||
14 -4.1270221660368221e-02 9.3253524130353482e-01 -4.9663546372704301e+00
|
||||
15 4.2930244204525003e+00 4.8016875903370053e+00 -1.2067983339497499e+00
|
||||
16 -3.6783955303667234e+01 1.8760441796324653e+01 1.1514035663250905e+02
|
||||
17 4.4141164796979076e+01 -3.4054759175778408e+01 -9.5996385613193283e+01
|
||||
18 2.6593320216432965e+00 6.2866046080770897e+00 -1.0406402388907743e+00
|
||||
19 -2.6868932719674365e+00 -3.5919446222505456e+00 -6.7199643833073341e-01
|
||||
20 2.3122579672731871e+00 1.6848245740968735e+00 1.0223265461108680e-01
|
||||
21 9.0047857933168434e+00 1.1657532538116142e+01 -3.0300251561127794e+01
|
||||
22 1.2602721079420199e+01 2.2333285795234898e+00 2.1993413545558095e+01
|
||||
23 -2.1752700027690018e+01 -1.3807397168507773e+01 8.4647725463156984e+00
|
||||
24 -4.1597043845955195e+00 2.9600069115788433e+01 -1.4377967328816560e+01
|
||||
25 1.8008122136440438e+01 -4.7255613901672264e+00 1.6011743726111732e+01
|
||||
26 -1.3270411937489305e+01 -2.4691999045812377e+01 -5.6773953378636655e-01
|
||||
27 -7.3472299042491755e+00 3.1133794605717583e+01 -1.2191686159483819e+01
|
||||
28 2.2002914561082278e+01 -1.1345148097691201e+01 1.5336215539418586e+01
|
||||
29 -1.4484023859861420e+01 -1.9880794227041598e+01 -3.1367150853552728e+00
|
||||
...
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:19 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:27:01 202
|
||||
epsilon: 5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -9,17 +9,22 @@ pre_commands: ! ""
|
|||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
pair_style: morse 8.0
|
||||
pair_coeff: ! "1 1 0.0202798941614106 2.78203488021395 2.725417159299 \n1 2 0.0101167811264648
|
||||
3.9793050302425 1.90749569018897 \n1 3 0.0202934330695928 2.43948720203264 3.10711749999622
|
||||
\n1 4 0.0175731334238374 2.48316585521317 3.05258880102438 \n1 5 0.0175731334238374
|
||||
2.48316585521317 3.05258880102438 \n2 2 0.00503064360487288 6.98433077606902 1.08960295117864
|
||||
\n2 3 0.0101296013842819 3.31380153807866 2.28919067558352 \n2 4 0.00497405122588691
|
||||
14.0508902925745 0.544416409093563 \n2 5 0.00877114211614446 3.39491256196178 2.23466262511073
|
||||
\n3 3 0.0203039874239943 2.17204344301477 3.48881895084762 \n3 4 0.0175825321440736
|
||||
2.20660439192238 3.43428999287994 \n3 5 0.0175825321440736 2.20660439192238 3.43428999287994
|
||||
\n4 4 0.0152259201379927 2.24227873774009 3.37976131582396 \n4 5 0.0152259201379927
|
||||
2.24227873774009 3.37976131582396 \n5 5 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
\n"
|
||||
pair_coeff: ! |
|
||||
1 1 0.0202798941614106 2.78203488021395 2.725417159299
|
||||
1 2 0.0101167811264648 3.9793050302425 1.90749569018897
|
||||
1 3 0.0202934330695928 2.43948720203264 3.10711749999622
|
||||
1 4 0.0175731334238374 2.48316585521317 3.05258880102438
|
||||
1 5 0.0175731334238374 2.48316585521317 3.05258880102438
|
||||
2 2 0.00503064360487288 6.98433077606902 1.08960295117864
|
||||
2 3 0.0101296013842819 3.31380153807866 2.28919067558352
|
||||
2 4 0.00497405122588691 14.0508902925745 0.544416409093563
|
||||
2 5 0.00877114211614446 3.39491256196178 2.23466262511073
|
||||
3 3 0.0203039874239943 2.17204344301477 3.48881895084762
|
||||
3 4 0.0175825321440736 2.20660439192238 3.43428999287994
|
||||
3 5 0.0175825321440736 2.20660439192238 3.43428999287994
|
||||
4 4 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
4 5 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
5 5 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
extract: ! |
|
||||
d0 2
|
||||
r0 2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
lammps_version: 24 Aug 2020
|
||||
date_generated: Tue Sep 15 09:44:19 202
|
||||
lammps_version: 10 Mar 2021
|
||||
date_generated: Fri Apr 2 15:27:01 202
|
||||
epsilon: 5e-14
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
|
@ -9,17 +9,22 @@ pre_commands: ! ""
|
|||
post_commands: ! ""
|
||||
input_file: in.fourmol
|
||||
pair_style: morse/smooth/linear 8.0
|
||||
pair_coeff: ! "1 1 0.0202798941614106 2.78203488021395 2.725417159299 \n1 2 0.0101167811264648
|
||||
3.9793050302425 1.90749569018897 \n1 3 0.0202934330695928 2.43948720203264 3.10711749999622
|
||||
\n1 4 0.0175731334238374 2.48316585521317 3.05258880102438 \n1 5 0.0175731334238374
|
||||
2.48316585521317 3.05258880102438 \n2 2 0.00503064360487288 6.98433077606902 1.08960295117864
|
||||
\n2 3 0.0101296013842819 3.31380153807866 2.28919067558352 \n2 4 0.00497405122588691
|
||||
14.0508902925745 0.544416409093563 \n2 5 0.00877114211614446 3.39491256196178 2.23466262511073
|
||||
\n3 3 0.0203039874239943 2.17204344301477 3.48881895084762 \n3 4 0.0175825321440736
|
||||
2.20660439192238 3.43428999287994 \n3 5 0.0175825321440736 2.20660439192238 3.43428999287994
|
||||
\n4 4 0.0152259201379927 2.24227873774009 3.37976131582396 \n4 5 0.0152259201379927
|
||||
2.24227873774009 3.37976131582396 \n5 5 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
\n"
|
||||
pair_coeff: ! |
|
||||
1 1 0.0202798941614106 2.78203488021395 2.725417159299
|
||||
1 2 0.0101167811264648 3.9793050302425 1.90749569018897
|
||||
1 3 0.0202934330695928 2.43948720203264 3.10711749999622
|
||||
1 4 0.0175731334238374 2.48316585521317 3.05258880102438
|
||||
1 5 0.0175731334238374 2.48316585521317 3.05258880102438
|
||||
2 2 0.00503064360487288 6.98433077606902 1.08960295117864
|
||||
2 3 0.0101296013842819 3.31380153807866 2.28919067558352
|
||||
2 4 0.00497405122588691 14.0508902925745 0.544416409093563
|
||||
2 5 0.00877114211614446 3.39491256196178 2.23466262511073
|
||||
3 3 0.0203039874239943 2.17204344301477 3.48881895084762
|
||||
3 4 0.0175825321440736 2.20660439192238 3.43428999287994
|
||||
3 5 0.0175825321440736 2.20660439192238 3.43428999287994
|
||||
4 4 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
4 5 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
5 5 0.0152259201379927 2.24227873774009 3.37976131582396
|
||||
extract: ! |
|
||||
d0 2
|
||||
r0 2
|
||||
|
|
|
@ -45,14 +45,14 @@ public:
|
|||
|
||||
void enable_triclinic()
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("change_box all triclinic");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void generate_dump(std::string dump_file, std::string dump_modify_options, int ntimesteps)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id all {} 1 {}", dump_style, dump_file));
|
||||
|
||||
if (!dump_modify_options.empty()) {
|
||||
|
@ -60,7 +60,7 @@ public:
|
|||
}
|
||||
|
||||
command(fmt::format("run {}", ntimesteps));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void generate_text_and_compressed_dump(std::string text_file, std::string compressed_file,
|
||||
|
@ -76,7 +76,7 @@ public:
|
|||
std::string text_modify_options, std::string compressed_modify_options,
|
||||
int ntimesteps)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id0 all {} 1 {} {}", dump_style, text_file, text_options));
|
||||
command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_file, compressed_options));
|
||||
|
||||
|
@ -89,17 +89,17 @@ public:
|
|||
}
|
||||
|
||||
command(fmt::format("run {}", ntimesteps));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
std::string convert_compressed_to_text(std::string compressed_file)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
std::string converted_file = compressed_file.substr(0, compressed_file.find_last_of('.'));
|
||||
std::string cmdline =
|
||||
fmt::format("{} -d -c {} > {}", COMPRESS_BINARY, compressed_file, converted_file);
|
||||
system(cmdline.c_str());
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
return converted_file;
|
||||
}
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -32,14 +32,14 @@ class DumpAtomTest : public MeltTest {
|
|||
public:
|
||||
void enable_triclinic()
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("change_box all triclinic");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void generate_dump(std::string dump_file, std::string dump_modify_options, int ntimesteps)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id all {} 1 {}", dump_style, dump_file));
|
||||
|
||||
if (!dump_modify_options.empty()) {
|
||||
|
@ -47,13 +47,13 @@ public:
|
|||
}
|
||||
|
||||
command(fmt::format("run {}", ntimesteps));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void generate_text_and_binary_dump(std::string text_file, std::string binary_file,
|
||||
std::string dump_modify_options, int ntimesteps)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id0 all {} 1 {}", dump_style, text_file));
|
||||
command(fmt::format("dump id1 all {} 1 {}", dump_style, binary_file));
|
||||
|
||||
|
@ -63,15 +63,15 @@ public:
|
|||
}
|
||||
|
||||
command(fmt::format("run {}", ntimesteps));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
std::string convert_binary_to_text(std::string binary_file)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
std::string cmdline = fmt::format("{} {}", BINARY2TXT_BINARY, binary_file);
|
||||
system(cmdline.c_str());
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
return fmt::format("{}.txt", binary_file);
|
||||
}
|
||||
};
|
||||
|
@ -504,27 +504,27 @@ TEST_F(DumpAtomTest, per_processor_multi_file_run1)
|
|||
|
||||
TEST_F(DumpAtomTest, dump_modify_scale_invalid)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dump id all atom 1 dump.txt");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*Illegal dump_modify command.*", command("dump_modify id scale true"););
|
||||
}
|
||||
|
||||
TEST_F(DumpAtomTest, dump_modify_image_invalid)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dump id all atom 1 dump.txt");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*Illegal dump_modify command.*", command("dump_modify id image true"););
|
||||
}
|
||||
|
||||
TEST_F(DumpAtomTest, dump_modify_invalid)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("dump id all atom 1 dump.txt");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*Illegal dump_modify command.*", command("dump_modify id true"););
|
||||
}
|
||||
|
@ -534,12 +534,12 @@ TEST_F(DumpAtomTest, write_dump)
|
|||
auto reference = "dump_ref_run0.melt";
|
||||
auto dump_file = "write_dump_atom_run0.melt";
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id all atom 1 {}", reference));
|
||||
command("dump_modify id scale no units yes");
|
||||
command("run 0");
|
||||
command("write_dump all atom write_dump_atom_run*.melt modify scale no units yes");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_FILE_EXISTS(reference);
|
||||
ASSERT_FILE_EXISTS(dump_file);
|
||||
|
@ -556,12 +556,12 @@ TEST_F(DumpAtomTest, binary_write_dump)
|
|||
auto reference = "dump_run0.melt.bin";
|
||||
auto dump_file = "write_dump_atom_run0_p0.melt.bin";
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id all atom 1 {}", reference));
|
||||
command("dump_modify id scale no units yes");
|
||||
command("run 0");
|
||||
command("write_dump all atom write_dump_atom_run*_p%.melt.bin modify scale no units yes");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_FILE_EXISTS(reference);
|
||||
ASSERT_FILE_EXISTS(dump_file);
|
||||
|
|
|
@ -340,9 +340,9 @@ TEST_F(DumpAtomCompressTest, compressed_modify_bad_param)
|
|||
{
|
||||
if (compression_style != "atom/gz") GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt")));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 compression_level 12");
|
||||
|
@ -353,9 +353,9 @@ TEST_F(DumpAtomCompressTest, compressed_modify_multi_bad_param)
|
|||
{
|
||||
if (compression_style != "atom/gz") GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt")));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 pad 3 compression_level 12");
|
||||
|
|
|
@ -30,7 +30,7 @@ public:
|
|||
void generate_dump(std::string dump_file, std::string fields, std::string dump_modify_options,
|
||||
int ntimesteps)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id all {} 1 {} {}", dump_style, dump_file, fields));
|
||||
|
||||
if (!dump_modify_options.empty()) {
|
||||
|
@ -38,7 +38,7 @@ public:
|
|||
}
|
||||
|
||||
command(fmt::format("run {}", ntimesteps));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -54,9 +54,9 @@ TEST_F(DumpCfgTest, require_multifile)
|
|||
auto fields =
|
||||
"mass type xs ys zs id proc procp1 x y z ix iy iz xu yu zu xsu ysu zsu vx vy vz fx fy fz";
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id all cfg 1 {} {}", dump_file, fields));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*Dump cfg requires one snapshot per file.*", command("run 0"););
|
||||
}
|
||||
|
|
|
@ -230,9 +230,9 @@ TEST_F(DumpCfgCompressTest, compressed_modify_bad_param)
|
|||
if (compression_style != "cfg/gz") GTEST_SKIP();
|
||||
|
||||
auto fields = "mass type xs ys zs id proc procp1 x y z ix iy iz vx vy vz fx fy fz";
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.cfg"), fields));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 compression_level 12");
|
||||
|
@ -244,9 +244,9 @@ TEST_F(DumpCfgCompressTest, compressed_modify_multi_bad_param)
|
|||
if (compression_style != "cfg/gz") GTEST_SKIP();
|
||||
|
||||
auto fields = "mass type xs ys zs id proc procp1 x y z ix iy iz vx vy vz fx fy fz";
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.cfg"), fields));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 pad 3 compression_level 12");
|
||||
|
|
|
@ -30,15 +30,15 @@ class DumpCustomTest : public MeltTest {
|
|||
public:
|
||||
void enable_triclinic()
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("change_box all triclinic");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void generate_dump(std::string dump_file, std::string fields, std::string dump_modify_options,
|
||||
int ntimesteps)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id all {} 1 {} {}", dump_style, dump_file, fields));
|
||||
|
||||
if (!dump_modify_options.empty()) {
|
||||
|
@ -46,14 +46,14 @@ public:
|
|||
}
|
||||
|
||||
command(fmt::format("run {}", ntimesteps));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void generate_text_and_binary_dump(std::string text_file, std::string binary_file,
|
||||
std::string fields, std::string dump_modify_options,
|
||||
int ntimesteps)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id0 all {} 1 {} {}", dump_style, text_file, fields));
|
||||
command(fmt::format("dump id1 all {} 1 {} {}", dump_style, binary_file, fields));
|
||||
|
||||
|
@ -63,15 +63,15 @@ public:
|
|||
}
|
||||
|
||||
command(fmt::format("run {}", ntimesteps));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
std::string convert_binary_to_text(std::string binary_file)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
std::string cmdline = fmt::format("{} {}", BINARY2TXT_BINARY, binary_file);
|
||||
system(cmdline.c_str());
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
return fmt::format("{}.txt", binary_file);
|
||||
}
|
||||
};
|
||||
|
@ -113,9 +113,9 @@ TEST_F(DumpCustomTest, thresh_run0)
|
|||
|
||||
TEST_F(DumpCustomTest, compute_run0)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("compute comp all property/atom x y z");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto dump_file = "dump_custom_compute_run0.melt";
|
||||
auto fields = "id type x y z c_comp[1] c_comp[2] c_comp[3]";
|
||||
|
@ -134,9 +134,9 @@ TEST_F(DumpCustomTest, compute_run0)
|
|||
|
||||
TEST_F(DumpCustomTest, fix_run0)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("fix numdiff all numdiff 1 0.0001");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto dump_file = "dump_custom_compute_run0.melt";
|
||||
auto fields = "id x y z f_numdiff[1] f_numdiff[2] f_numdiff[3]";
|
||||
|
@ -155,10 +155,10 @@ TEST_F(DumpCustomTest, fix_run0)
|
|||
|
||||
TEST_F(DumpCustomTest, custom_run0)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("fix prop all property/atom i_flag1 d_flag2");
|
||||
command("compute 1 all property/atom i_flag1 d_flag2");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto dump_file = "dump_custom_custom_run0.melt";
|
||||
auto fields = "id x y z i_flag1 d_flag2";
|
||||
|
@ -242,10 +242,10 @@ TEST_F(DumpCustomTest, binary_triclinic_run1)
|
|||
|
||||
TEST_F(DumpCustomTest, with_variable_run1)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("compute 1 all property/atom proc");
|
||||
command("variable p atom (c_1%10)+1");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto dump_file = "dump_custom_with_variable_run1.melt";
|
||||
auto fields = "id type x y z v_p";
|
||||
|
|
|
@ -31,9 +31,9 @@ public:
|
|||
void SetUp() override {
|
||||
CompressedDumpTest::SetUp();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("compute comp all pair/local dist eng");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -205,9 +205,9 @@ TEST_F(DumpLocalCompressTest, compressed_modify_bad_param)
|
|||
|
||||
auto fields = "index c_comp[1]";
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.local"), fields));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 compression_level 12");
|
||||
|
@ -220,9 +220,9 @@ TEST_F(DumpLocalCompressTest, compressed_modify_multi_bad_param)
|
|||
|
||||
auto fields = "index c_comp[1]";
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.local"), fields));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 pad 3 compression_level 12");
|
||||
|
|
|
@ -191,9 +191,9 @@ TEST_F(DumpXYZCompressTest, compressed_modify_bad_param)
|
|||
{
|
||||
if (compression_style != "xyz/gz") GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.xyz")));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 compression_level 12");
|
||||
|
@ -204,9 +204,9 @@ TEST_F(DumpXYZCompressTest, compressed_modify_multi_bad_param)
|
|||
{
|
||||
if (compression_style != "xyz/gz") GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.xyz")));
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*",
|
||||
command("dump_modify id1 pad 3 compression_level 12");
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "utils.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <mpi.h>
|
||||
|
@ -28,28 +29,23 @@ using utils::split_words;
|
|||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
class EIMPotentialFileReaderTest : public ::testing::Test {
|
||||
class EIMPotentialFileReaderTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
PairEIM::Setfl setfl;
|
||||
static const int nelements = 9;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {
|
||||
"PotentialFileReaderTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
lmp->input->one("units metal");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
testbinary = "EIMPotentialFileReaderTest";
|
||||
LAMMPSTest::SetUp();
|
||||
ASSERT_NE(lmp, nullptr);
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// check if the prerequisite eim pair style is available
|
||||
Info *info = new Info(lmp);
|
||||
ASSERT_TRUE(info->has_style("pair", "eim"));
|
||||
delete info;
|
||||
|
||||
int npair = nelements * (nelements + 1) / 2;
|
||||
setfl.ielement = new int[nelements];
|
||||
|
@ -99,17 +95,15 @@ protected:
|
|||
delete[] setfl.rs;
|
||||
delete[] setfl.tp;
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
LAMMPSTest::TearDown();
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(EIMPotentialFileReaderTest, global_line)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
EIMPotentialFileReader reader(lmp, "ffield.eim");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
reader.get_global(&setfl);
|
||||
ASSERT_DOUBLE_EQ(setfl.division, 2.0);
|
||||
|
@ -119,9 +113,9 @@ TEST_F(EIMPotentialFileReaderTest, global_line)
|
|||
|
||||
TEST_F(EIMPotentialFileReaderTest, element_line_sequential)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
EIMPotentialFileReader reader(lmp, "ffield.eim");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
reader.get_element(&setfl, 0, "Li");
|
||||
ASSERT_EQ(setfl.ielement[0], 3);
|
||||
|
@ -144,9 +138,9 @@ TEST_F(EIMPotentialFileReaderTest, element_line_sequential)
|
|||
|
||||
TEST_F(EIMPotentialFileReaderTest, element_line_random)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
EIMPotentialFileReader reader(lmp, "ffield.eim");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
reader.get_element(&setfl, 0, "Id");
|
||||
ASSERT_EQ(setfl.ielement[0], 53);
|
||||
|
@ -160,9 +154,9 @@ TEST_F(EIMPotentialFileReaderTest, element_line_random)
|
|||
|
||||
TEST_F(EIMPotentialFileReaderTest, pair_line)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
EIMPotentialFileReader reader(lmp, "ffield.eim");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
reader.get_pair(&setfl, 0, "Li", "Li");
|
||||
ASSERT_DOUBLE_EQ(setfl.rcutphiA[0], 6.0490e+00);
|
||||
|
@ -183,9 +177,9 @@ TEST_F(EIMPotentialFileReaderTest, pair_line)
|
|||
|
||||
TEST_F(EIMPotentialFileReaderTest, pair_identical)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
EIMPotentialFileReader reader(lmp, "ffield.eim");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
reader.get_pair(&setfl, 0, "Li", "Na");
|
||||
reader.get_pair(&setfl, 1, "Na", "Li");
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "utils.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <mpi.h>
|
||||
|
@ -31,43 +32,17 @@ using utils::sfgets;
|
|||
using utils::sfread;
|
||||
using utils::split_words;
|
||||
|
||||
#if defined(OMPI_MAJOR_VERSION)
|
||||
const bool have_openmpi = true;
|
||||
#else
|
||||
const bool have_openmpi = false;
|
||||
#endif
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} else { \
|
||||
if (!have_openmpi) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} \
|
||||
}
|
||||
|
||||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
class FileOperationsTest : public ::testing::Test {
|
||||
class FileOperationsTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"FileOperationsTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
testbinary = "FileOperationsTest";
|
||||
LAMMPSTest::SetUp();
|
||||
ASSERT_NE(lmp, nullptr);
|
||||
|
||||
FILE *fp = fopen("safe_file_read_test.txt", "wb");
|
||||
ASSERT_NE(fp, nullptr);
|
||||
fputs("one line\n", fp);
|
||||
|
@ -79,9 +54,7 @@ protected:
|
|||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
LAMMPSTest::TearDown();
|
||||
remove("safe_file_read_test.txt");
|
||||
}
|
||||
};
|
||||
|
@ -154,15 +127,15 @@ TEST_F(FileOperationsTest, safe_fread)
|
|||
TEST_F(FileOperationsTest, logmesg)
|
||||
{
|
||||
char buf[8];
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("echo none");
|
||||
::testing::internal::GetCapturedStdout();
|
||||
::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("echo none");
|
||||
END_HIDE_OUTPUT();
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
utils::logmesg(lmp, "one\n");
|
||||
lmp->input->one("log test_logmesg.log");
|
||||
command("log test_logmesg.log");
|
||||
utils::logmesg(lmp, "two\n");
|
||||
lmp->input->one("log none");
|
||||
std::string out = ::testing::internal::GetCapturedStdout();
|
||||
command("log none");
|
||||
std::string out = END_CAPTURE_OUTPUT();
|
||||
memset(buf, 0, 8);
|
||||
FILE *fp = fopen("test_logmesg.log", "r");
|
||||
fread(buf, 1, 8, fp);
|
||||
|
@ -177,7 +150,7 @@ int main(int argc, char **argv)
|
|||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (have_openmpi && !LAMMPS_NS::Info::has_exceptions())
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "input.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
@ -28,41 +29,32 @@ using LAMMPS_NS::utils::split_words;
|
|||
namespace LAMMPS_NS {
|
||||
using ::testing::Eq;
|
||||
|
||||
|
||||
class ImageFlagsTest : public ::testing::Test {
|
||||
class ImageFlagsTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"ImageFlagsTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
testbinary = "ImageFlagsTest";
|
||||
LAMMPSTest::SetUp();
|
||||
ASSERT_NE(lmp, nullptr);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("dimension 3");
|
||||
lmp->input->one("region box block -2 2 -2 2 -2 2");
|
||||
lmp->input->one("create_box 1 box");
|
||||
lmp->input->one("create_atoms 1 single 0.0 0.0 0.0 units box");
|
||||
lmp->input->one("create_atoms 1 single 1.9 -1.9 1.9999 units box");
|
||||
lmp->input->one("pair_style zero 2.0");
|
||||
lmp->input->one("pair_coeff * *");
|
||||
lmp->input->one("mass * 1.0");
|
||||
lmp->input->one("set atom 1 image -1 2 3");
|
||||
lmp->input->one("set atom 2 image -2 1 -1");
|
||||
lmp->input->one("write_data test_image_flags.data");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
command("dimension 3");
|
||||
command("region box block -2 2 -2 2 -2 2");
|
||||
command("create_box 1 box");
|
||||
command("create_atoms 1 single 0.0 0.0 0.0 units box");
|
||||
command("create_atoms 1 single 1.9 -1.9 1.9999 units box");
|
||||
command("pair_style zero 2.0");
|
||||
command("pair_coeff * *");
|
||||
command("mass * 1.0");
|
||||
command("set atom 1 image -1 2 3");
|
||||
command("set atom 2 image -2 1 -1");
|
||||
command("write_data test_image_flags.data");
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
LAMMPSTest::TearDown();
|
||||
remove("test_image_flags.data");
|
||||
}
|
||||
};
|
||||
|
@ -70,191 +62,191 @@ protected:
|
|||
TEST_F(ImageFlagsTest, change_box)
|
||||
{
|
||||
auto image = lmp->atom->image;
|
||||
int imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
int imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
int imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
int imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
int imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
int imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx, -1);
|
||||
ASSERT_EQ(imy, 2);
|
||||
ASSERT_EQ(imz, 3);
|
||||
|
||||
ASSERT_EQ(imx,-1);
|
||||
ASSERT_EQ(imy,2);
|
||||
ASSERT_EQ(imz,3);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,-2);
|
||||
ASSERT_EQ(imy,1);
|
||||
ASSERT_EQ(imz,-1);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("change_box all boundary f p p");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
ASSERT_EQ(imx, -2);
|
||||
ASSERT_EQ(imy, 1);
|
||||
ASSERT_EQ(imz, -1);
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("change_box all boundary f p p");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
image = lmp->atom->image;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,2);
|
||||
ASSERT_EQ(imz,3);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 2);
|
||||
ASSERT_EQ(imz, 3);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,1);
|
||||
ASSERT_EQ(imz,-1);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 1);
|
||||
ASSERT_EQ(imz, -1);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("change_box all boundary f s p");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("change_box all boundary f s p");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
image = lmp->atom->image;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,0);
|
||||
ASSERT_EQ(imz,3);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 0);
|
||||
ASSERT_EQ(imz, 3);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,0);
|
||||
ASSERT_EQ(imz,-1);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 0);
|
||||
ASSERT_EQ(imz, -1);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("change_box all boundary p p m");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("change_box all boundary p p m");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
image = lmp->atom->image;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,0);
|
||||
ASSERT_EQ(imz,0);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 0);
|
||||
ASSERT_EQ(imz, 0);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,0);
|
||||
ASSERT_EQ(imz,0);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 0);
|
||||
ASSERT_EQ(imz, 0);
|
||||
}
|
||||
|
||||
TEST_F(ImageFlagsTest, read_data)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("dimension 3");
|
||||
lmp->input->one("boundary p p p");
|
||||
lmp->input->one("pair_style zero 2.0");
|
||||
lmp->input->one("read_data test_image_flags.data");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("dimension 3");
|
||||
command("boundary p p p");
|
||||
command("pair_style zero 2.0");
|
||||
command("read_data test_image_flags.data");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto image = lmp->atom->image;
|
||||
int imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
int imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
int imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
int imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
int imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
int imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx, -1);
|
||||
ASSERT_EQ(imy, 2);
|
||||
ASSERT_EQ(imz, 3);
|
||||
|
||||
ASSERT_EQ(imx,-1);
|
||||
ASSERT_EQ(imy,2);
|
||||
ASSERT_EQ(imz,3);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,-2);
|
||||
ASSERT_EQ(imy,1);
|
||||
ASSERT_EQ(imz,-1);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("dimension 3");
|
||||
lmp->input->one("boundary f p p");
|
||||
lmp->input->one("pair_style zero 2.0");
|
||||
lmp->input->one("read_data test_image_flags.data");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
ASSERT_EQ(imx, -2);
|
||||
ASSERT_EQ(imy, 1);
|
||||
ASSERT_EQ(imz, -1);
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("dimension 3");
|
||||
command("boundary f p p");
|
||||
command("pair_style zero 2.0");
|
||||
command("read_data test_image_flags.data");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
image = lmp->atom->image;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,2);
|
||||
ASSERT_EQ(imz,3);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 2);
|
||||
ASSERT_EQ(imz, 3);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,0);
|
||||
ASSERT_EQ(imy,1);
|
||||
ASSERT_EQ(imz,-1);
|
||||
ASSERT_EQ(imx, 0);
|
||||
ASSERT_EQ(imy, 1);
|
||||
ASSERT_EQ(imz, -1);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("dimension 3");
|
||||
lmp->input->one("boundary p s p");
|
||||
lmp->input->one("pair_style zero 2.0");
|
||||
lmp->input->one("read_data test_image_flags.data");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("dimension 3");
|
||||
command("boundary p s p");
|
||||
command("pair_style zero 2.0");
|
||||
command("read_data test_image_flags.data");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
image = lmp->atom->image;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,-1);
|
||||
ASSERT_EQ(imy,0);
|
||||
ASSERT_EQ(imz,3);
|
||||
ASSERT_EQ(imx, -1);
|
||||
ASSERT_EQ(imy, 0);
|
||||
ASSERT_EQ(imz, 3);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,-2);
|
||||
ASSERT_EQ(imy,0);
|
||||
ASSERT_EQ(imz,-1);
|
||||
ASSERT_EQ(imx, -2);
|
||||
ASSERT_EQ(imy, 0);
|
||||
ASSERT_EQ(imz, -1);
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("dimension 3");
|
||||
lmp->input->one("boundary p p m");
|
||||
lmp->input->one("pair_style zero 2.0");
|
||||
lmp->input->one("read_data test_image_flags.data");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("dimension 3");
|
||||
command("boundary p p m");
|
||||
command("pair_style zero 2.0");
|
||||
command("read_data test_image_flags.data");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
image = lmp->atom->image;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
imx = (image[0] & IMGMASK) - IMGMAX;
|
||||
imy = (image[0] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[0] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,-1);
|
||||
ASSERT_EQ(imy,2);
|
||||
ASSERT_EQ(imz,0);
|
||||
ASSERT_EQ(imx, -1);
|
||||
ASSERT_EQ(imy, 2);
|
||||
ASSERT_EQ(imz, 0);
|
||||
|
||||
imx = (image[1] & IMGMASK) - IMGMAX;
|
||||
imy = (image[1] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
imz = (image[1] >> IMG2BITS) - IMGMAX;
|
||||
|
||||
ASSERT_EQ(imx,-2);
|
||||
ASSERT_EQ(imy,1);
|
||||
ASSERT_EQ(imz,0);
|
||||
ASSERT_EQ(imx, -2);
|
||||
ASSERT_EQ(imy, 1);
|
||||
ASSERT_EQ(imz, 0);
|
||||
}
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "utils.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <mpi.h>
|
||||
|
@ -33,26 +34,6 @@ using utils::split_words;
|
|||
|
||||
#define test_name test_info_->name()
|
||||
|
||||
#if defined(OMPI_MAJOR_VERSION)
|
||||
const bool have_openmpi = true;
|
||||
#else
|
||||
const bool have_openmpi = false;
|
||||
#endif
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} else { \
|
||||
if (!have_openmpi) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} \
|
||||
}
|
||||
|
||||
static void create_molecule_files()
|
||||
{
|
||||
|
@ -96,27 +77,21 @@ static void create_molecule_files()
|
|||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
class MoleculeFileTest : public ::testing::Test {
|
||||
class MoleculeFileTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"MoleculeFileTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
create_molecule_files();
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
testbinary = "MoleculeFileTest";
|
||||
LAMMPSTest::SetUp();
|
||||
ASSERT_NE(lmp, nullptr);
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
create_molecule_files();
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
LAMMPSTest::TearDown();
|
||||
remove("h2o.mol");
|
||||
remove("co2.mol");
|
||||
}
|
||||
|
@ -128,22 +103,21 @@ protected:
|
|||
fputs(content.c_str(), fp);
|
||||
fclose(fp);
|
||||
|
||||
lmp->input->one(fmt::format("molecule {} {} {}", name, file, args));
|
||||
command(fmt::format("molecule {} {} {}", name, file, args));
|
||||
remove(file.c_str());
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(MoleculeFileTest, nofile)
|
||||
{
|
||||
TEST_FAILURE(".*Cannot open molecule file nofile.mol.*",
|
||||
lmp->input->one("molecule 1 nofile.mol"););
|
||||
TEST_FAILURE(".*Cannot open molecule file nofile.mol.*", command("molecule 1 nofile.mol"););
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, badid)
|
||||
{
|
||||
TEST_FAILURE(".*Molecule template ID must have only "
|
||||
"alphanumeric or underscore characters.*",
|
||||
lmp->input->one("molecule @mol nofile.mol"););
|
||||
command("molecule @mol nofile.mol"););
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, badargs)
|
||||
|
@ -200,32 +174,29 @@ TEST_F(MoleculeFileTest, nospecial)
|
|||
|
||||
TEST_F(MoleculeFileTest, minimal)
|
||||
{
|
||||
::testing::internal::CaptureStdout();
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
run_mol_cmd(test_name, "", "Comment\n1 atoms\n\n Coords\n\n 1 0.0 0.0 0.0\n");
|
||||
auto output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template.*1 molecules.*1 atoms.*0 bonds.*"));
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, twomols)
|
||||
{
|
||||
::testing::internal::CaptureStdout();
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
run_mol_cmd(test_name, "",
|
||||
"Comment\n2 atoms\n\n"
|
||||
" Coords\n\n 1 0.0 0.0 0.0\n 2 0.0 0.0 1.0\n"
|
||||
" Molecules\n\n 1 1\n 2 2\n\n Types\n\n 1 1\n 2 2\n\n");
|
||||
auto output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template.*2 molecules.*2 atoms "
|
||||
"with max type 2.*0 bonds.*"));
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, twofiles)
|
||||
{
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0");
|
||||
auto output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template twomols:.*1 molecules.*3 atoms "
|
||||
"with max type 2.*2 bonds with max type 1.*"
|
||||
"1 angles with max type 1.*0 dihedrals.*"
|
||||
|
@ -236,11 +207,11 @@ TEST_F(MoleculeFileTest, twofiles)
|
|||
|
||||
TEST_F(MoleculeFileTest, bonds)
|
||||
{
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("atom_style bond");
|
||||
lmp->input->one("region box block 0 1 0 1 0 1");
|
||||
lmp->input->one("create_box 2 box bond/types 2 extra/bond/per/atom 2 "
|
||||
"extra/special/per/atom 4");
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("atom_style bond");
|
||||
command("region box block 0 1 0 1 0 1");
|
||||
command("create_box 2 box bond/types 2 extra/bond/per/atom 2 "
|
||||
"extra/special/per/atom 4");
|
||||
run_mol_cmd(test_name, "",
|
||||
"Comment\n"
|
||||
"4 atoms\n"
|
||||
|
@ -258,19 +229,17 @@ TEST_F(MoleculeFileTest, bonds)
|
|||
" Bonds\n\n"
|
||||
" 1 1 1 2\n"
|
||||
" 2 2 1 3\n\n");
|
||||
auto output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template.*1 molecules.*4 atoms.*type.*2.*"
|
||||
"2 bonds.*type.*2.*0 angles.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("mass * 2.0");
|
||||
lmp->input->one("create_atoms 0 single 0.5 0.5 0.5 mol bonds 67235");
|
||||
output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("mass * 2.0");
|
||||
command("create_atoms 0 single 0.5 0.5 0.5 mol bonds 67235");
|
||||
output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Created 4 atoms.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
Molecule *mol = lmp->atom->molecules[0];
|
||||
ASSERT_EQ(mol->natoms, 4);
|
||||
ASSERT_EQ(lmp->atom->natoms, 4);
|
||||
|
@ -282,8 +251,7 @@ TEST_F(MoleculeFileTest, bonds)
|
|||
EXPECT_DOUBLE_EQ(mol->com[2], 0.5);
|
||||
EXPECT_DOUBLE_EQ(mol->maxextent, sqrt(2));
|
||||
EXPECT_EQ(mol->comatom, 1);
|
||||
output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
@ -291,7 +259,7 @@ int main(int argc, char **argv)
|
|||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (have_openmpi && !LAMMPS_NS::Info::has_exceptions())
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "thermo.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
@ -42,45 +43,36 @@ const double p_convert = 1.01325;
|
|||
// of data in update.cpp. could be 1.0e-12
|
||||
const double rel_error = 5.0e-7;
|
||||
|
||||
class PairUnitConvertTest : public ::testing::Test {
|
||||
class PairUnitConvertTest : public LAMMPSTest {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
Info *info;
|
||||
double fold[4][3];
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {"PairUnitConvertTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
testbinary = "PairUnitConvertTest";
|
||||
LAMMPSTest::SetUp();
|
||||
ASSERT_NE(lmp, nullptr);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
info = new Info(lmp);
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("dimension 3");
|
||||
lmp->input->one("region box block -4 4 -4 4 -4 4");
|
||||
lmp->input->one("create_box 2 box");
|
||||
lmp->input->one("create_atoms 1 single -1.1 1.2 0.0 units box");
|
||||
lmp->input->one("create_atoms 1 single -1.2 -1.1 0.0 units box");
|
||||
lmp->input->one("create_atoms 2 single 0.9 1.0 0.0 units box");
|
||||
lmp->input->one("create_atoms 2 single 1.0 -0.9 0.0 units box");
|
||||
lmp->input->one("pair_style zero 4.0");
|
||||
lmp->input->one("pair_coeff * *");
|
||||
lmp->input->one("mass * 1.0");
|
||||
lmp->input->one("write_data test_pair_unit_convert.data nocoeff");
|
||||
lmp->input->one("clear");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("dimension 3");
|
||||
command("region box block -4 4 -4 4 -4 4");
|
||||
command("create_box 2 box");
|
||||
command("create_atoms 1 single -1.1 1.2 0.0 units box");
|
||||
command("create_atoms 1 single -1.2 -1.1 0.0 units box");
|
||||
command("create_atoms 2 single 0.9 1.0 0.0 units box");
|
||||
command("create_atoms 2 single 1.0 -0.9 0.0 units box");
|
||||
command("pair_style zero 4.0");
|
||||
command("pair_coeff * *");
|
||||
command("mass * 1.0");
|
||||
command("write_data test_pair_unit_convert.data nocoeff");
|
||||
command("clear");
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete info;
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
LAMMPSTest::TearDown();
|
||||
remove("test_pair_unit_convert.data");
|
||||
}
|
||||
};
|
||||
|
@ -90,13 +82,13 @@ TEST_F(PairUnitConvertTest, zero)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "zero")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style zero 6.0");
|
||||
lmp->input->one("pair_coeff * *");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style zero 6.0");
|
||||
command("pair_coeff * *");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -107,14 +99,14 @@ TEST_F(PairUnitConvertTest, zero)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style zero 6.0");
|
||||
lmp->input->one("pair_coeff * *");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style zero 6.0");
|
||||
command("pair_coeff * *");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -133,17 +125,17 @@ TEST_F(PairUnitConvertTest, lj_cut)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "lj/cut")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style lj/cut 6.0");
|
||||
lmp->input->one("pair_coeff * * 0.01014286346782117 2.0");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style lj/cut 6.0");
|
||||
command("pair_coeff * * 0.01014286346782117 2.0");
|
||||
remove("test.table.metal");
|
||||
lmp->input->one("pair_write 1 1 1000 r 0.1 6.0 test.table.metal lj_1_1");
|
||||
lmp->input->one("pair_write 1 2 1000 r 0.1 6.0 test.table.metal lj_1_2");
|
||||
lmp->input->one("pair_write 2 2 1000 r 0.1 6.0 test.table.metal lj_2_2");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
command("pair_write 1 1 1000 r 0.1 6.0 test.table.metal lj_1_1");
|
||||
command("pair_write 1 2 1000 r 0.1 6.0 test.table.metal lj_1_2");
|
||||
command("pair_write 2 2 1000 r 0.1 6.0 test.table.metal lj_2_2");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -154,18 +146,18 @@ TEST_F(PairUnitConvertTest, lj_cut)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style lj/cut 6.0");
|
||||
lmp->input->one("pair_coeff * * 0.2339 2.0");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style lj/cut 6.0");
|
||||
command("pair_coeff * * 0.2339 2.0");
|
||||
remove("test.table.real");
|
||||
lmp->input->one("pair_write 1 1 1000 r 0.1 6.0 test.table.real lj_1_1");
|
||||
lmp->input->one("pair_write 1 2 1000 r 0.1 6.0 test.table.real lj_1_2");
|
||||
lmp->input->one("pair_write 2 2 1000 r 0.1 6.0 test.table.real lj_2_2");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
command("pair_write 1 1 1000 r 0.1 6.0 test.table.real lj_1_1");
|
||||
command("pair_write 1 2 1000 r 0.1 6.0 test.table.real lj_1_2");
|
||||
command("pair_write 2 2 1000 r 0.1 6.0 test.table.real lj_2_2");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -184,13 +176,13 @@ TEST_F(PairUnitConvertTest, eam)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "eam")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam");
|
||||
lmp->input->one("pair_coeff * * Cu_u3.eam");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam");
|
||||
command("pair_coeff * * Cu_u3.eam");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -201,14 +193,14 @@ TEST_F(PairUnitConvertTest, eam)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam");
|
||||
lmp->input->one("pair_coeff * * Cu_u3.eam");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam");
|
||||
command("pair_coeff * * Cu_u3.eam");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -227,13 +219,13 @@ TEST_F(PairUnitConvertTest, eam_alloy)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "eam/alloy")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam/alloy");
|
||||
lmp->input->one("pair_coeff * * AlCu.eam.alloy Al Cu");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam/alloy");
|
||||
command("pair_coeff * * AlCu.eam.alloy Al Cu");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -244,14 +236,14 @@ TEST_F(PairUnitConvertTest, eam_alloy)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam/alloy");
|
||||
lmp->input->one("pair_coeff * * AlCu.eam.alloy Al Cu");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam/alloy");
|
||||
command("pair_coeff * * AlCu.eam.alloy Al Cu");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -270,13 +262,13 @@ TEST_F(PairUnitConvertTest, eam_fs)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "eam/fs")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam/fs");
|
||||
lmp->input->one("pair_coeff * * FeP_mm.eam.fs Fe P");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam/fs");
|
||||
command("pair_coeff * * FeP_mm.eam.fs Fe P");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -287,14 +279,14 @@ TEST_F(PairUnitConvertTest, eam_fs)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam/fs");
|
||||
lmp->input->one("pair_coeff * * FeP_mm.eam.fs Fe P");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam/fs");
|
||||
command("pair_coeff * * FeP_mm.eam.fs Fe P");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -313,13 +305,13 @@ TEST_F(PairUnitConvertTest, eam_cd)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "eam/cd")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam/cd");
|
||||
lmp->input->one("pair_coeff * * FeCr.cdeam Cr Fe");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam/cd");
|
||||
command("pair_coeff * * FeCr.cdeam Cr Fe");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -330,14 +322,14 @@ TEST_F(PairUnitConvertTest, eam_cd)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eam/cd");
|
||||
lmp->input->one("pair_coeff * * FeCr.cdeam Cr Fe");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eam/cd");
|
||||
command("pair_coeff * * FeCr.cdeam Cr Fe");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -356,13 +348,13 @@ TEST_F(PairUnitConvertTest, eim)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "eim")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eim");
|
||||
lmp->input->one("pair_coeff * * Na Cl ffield.eim Na Cl");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eim");
|
||||
command("pair_coeff * * Na Cl ffield.eim Na Cl");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -373,14 +365,14 @@ TEST_F(PairUnitConvertTest, eim)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style eim");
|
||||
lmp->input->one("pair_coeff * * Na Cl ffield.eim Na Cl");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style eim");
|
||||
command("pair_coeff * * Na Cl ffield.eim Na Cl");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -399,13 +391,13 @@ TEST_F(PairUnitConvertTest, gw)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "gw")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style gw");
|
||||
lmp->input->one("pair_coeff * * SiC.gw Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style gw");
|
||||
command("pair_coeff * * SiC.gw Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -416,14 +408,14 @@ TEST_F(PairUnitConvertTest, gw)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style gw");
|
||||
lmp->input->one("pair_coeff * * SiC.gw Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style gw");
|
||||
command("pair_coeff * * SiC.gw Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -442,13 +434,13 @@ TEST_F(PairUnitConvertTest, gw_zbl)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "gw/zbl")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style gw/zbl");
|
||||
lmp->input->one("pair_coeff * * SiC.gw.zbl Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style gw/zbl");
|
||||
command("pair_coeff * * SiC.gw.zbl Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -459,14 +451,14 @@ TEST_F(PairUnitConvertTest, gw_zbl)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style gw/zbl");
|
||||
lmp->input->one("pair_coeff * * SiC.gw.zbl Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style gw/zbl");
|
||||
command("pair_coeff * * SiC.gw.zbl Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -485,13 +477,13 @@ TEST_F(PairUnitConvertTest, nb3b_harmonic)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "nb3b/harmonic")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style nb3b/harmonic");
|
||||
lmp->input->one("pair_coeff * * MOH.nb3b.harmonic M O");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style nb3b/harmonic");
|
||||
command("pair_coeff * * MOH.nb3b.harmonic M O");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -502,14 +494,14 @@ TEST_F(PairUnitConvertTest, nb3b_harmonic)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style nb3b/harmonic");
|
||||
lmp->input->one("pair_coeff * * MOH.nb3b.harmonic M O");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style nb3b/harmonic");
|
||||
command("pair_coeff * * MOH.nb3b.harmonic M O");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -528,13 +520,13 @@ TEST_F(PairUnitConvertTest, sw)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "sw")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style sw");
|
||||
lmp->input->one("pair_coeff * * GaN.sw Ga N");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style sw");
|
||||
command("pair_coeff * * GaN.sw Ga N");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -545,14 +537,14 @@ TEST_F(PairUnitConvertTest, sw)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style sw");
|
||||
lmp->input->one("pair_coeff * * GaN.sw Ga N");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style sw");
|
||||
command("pair_coeff * * GaN.sw Ga N");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -571,15 +563,15 @@ TEST_F(PairUnitConvertTest, table_metal2real)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "table")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style table linear 1000");
|
||||
lmp->input->one("pair_coeff 1 1 test.table.metal lj_1_1");
|
||||
lmp->input->one("pair_coeff 1 2 test.table.metal lj_1_2");
|
||||
lmp->input->one("pair_coeff 2 2 test.table.metal lj_2_2");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style table linear 1000");
|
||||
command("pair_coeff 1 1 test.table.metal lj_1_1");
|
||||
command("pair_coeff 1 2 test.table.metal lj_1_2");
|
||||
command("pair_coeff 2 2 test.table.metal lj_2_2");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -590,16 +582,16 @@ TEST_F(PairUnitConvertTest, table_metal2real)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style table linear 1000");
|
||||
lmp->input->one("pair_coeff 1 1 test.table.metal lj_1_1");
|
||||
lmp->input->one("pair_coeff 1 2 test.table.metal lj_1_2");
|
||||
lmp->input->one("pair_coeff 2 2 test.table.metal lj_2_2");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style table linear 1000");
|
||||
command("pair_coeff 1 1 test.table.metal lj_1_1");
|
||||
command("pair_coeff 1 2 test.table.metal lj_1_2");
|
||||
command("pair_coeff 2 2 test.table.metal lj_2_2");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -618,15 +610,15 @@ TEST_F(PairUnitConvertTest, table_real2metal)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "table")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style table linear 1000");
|
||||
lmp->input->one("pair_coeff 1 1 test.table.real lj_1_1");
|
||||
lmp->input->one("pair_coeff 1 2 test.table.real lj_1_2");
|
||||
lmp->input->one("pair_coeff 2 2 test.table.real lj_2_2");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style table linear 1000");
|
||||
command("pair_coeff 1 1 test.table.real lj_1_1");
|
||||
command("pair_coeff 1 2 test.table.real lj_1_2");
|
||||
command("pair_coeff 2 2 test.table.real lj_2_2");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -637,16 +629,16 @@ TEST_F(PairUnitConvertTest, table_real2metal)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style table linear 1000");
|
||||
lmp->input->one("pair_coeff 1 1 test.table.real lj_1_1");
|
||||
lmp->input->one("pair_coeff 1 2 test.table.real lj_1_2");
|
||||
lmp->input->one("pair_coeff 2 2 test.table.real lj_2_2");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style table linear 1000");
|
||||
command("pair_coeff 1 1 test.table.real lj_1_1");
|
||||
command("pair_coeff 1 2 test.table.real lj_1_2");
|
||||
command("pair_coeff 2 2 test.table.real lj_2_2");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -665,13 +657,13 @@ TEST_F(PairUnitConvertTest, tersoff)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "tersoff")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff");
|
||||
command("pair_coeff * * SiC.tersoff Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -682,14 +674,14 @@ TEST_F(PairUnitConvertTest, tersoff)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff");
|
||||
command("pair_coeff * * SiC.tersoff Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -708,13 +700,13 @@ TEST_F(PairUnitConvertTest, tersoff_mod)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "tersoff/mod")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/mod");
|
||||
lmp->input->one("pair_coeff * * Si.tersoff.mod Si Si");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/mod");
|
||||
command("pair_coeff * * Si.tersoff.mod Si Si");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -725,14 +717,14 @@ TEST_F(PairUnitConvertTest, tersoff_mod)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/mod");
|
||||
lmp->input->one("pair_coeff * * Si.tersoff.mod Si Si");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/mod");
|
||||
command("pair_coeff * * Si.tersoff.mod Si Si");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -751,13 +743,13 @@ TEST_F(PairUnitConvertTest, tersoff_mod_c)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "tersoff/mod/c")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/mod/c");
|
||||
lmp->input->one("pair_coeff * * Si.tersoff.modc Si Si");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/mod/c");
|
||||
command("pair_coeff * * Si.tersoff.modc Si Si");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -768,14 +760,14 @@ TEST_F(PairUnitConvertTest, tersoff_mod_c)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/mod/c");
|
||||
lmp->input->one("pair_coeff * * Si.tersoff.modc Si Si");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/mod/c");
|
||||
command("pair_coeff * * Si.tersoff.modc Si Si");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -794,13 +786,13 @@ TEST_F(PairUnitConvertTest, tersoff_table)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "tersoff/table")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/table");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/table");
|
||||
command("pair_coeff * * SiC.tersoff Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -811,14 +803,14 @@ TEST_F(PairUnitConvertTest, tersoff_table)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/table");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/table");
|
||||
command("pair_coeff * * SiC.tersoff Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -837,13 +829,13 @@ TEST_F(PairUnitConvertTest, tersoff_zbl)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "tersoff/zbl")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/zbl");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/zbl");
|
||||
command("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -854,14 +846,14 @@ TEST_F(PairUnitConvertTest, tersoff_zbl)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/zbl");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/zbl");
|
||||
command("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -880,14 +872,14 @@ TEST_F(PairUnitConvertTest, tersoff_zbl_omp)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "tersoff/zbl/omp")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("package omp 4");
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/zbl/omp");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("package omp 4");
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/zbl/omp");
|
||||
command("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -898,15 +890,15 @@ TEST_F(PairUnitConvertTest, tersoff_zbl_omp)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("package omp 4");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style tersoff/zbl/omp");
|
||||
lmp->input->one("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("package omp 4");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style tersoff/zbl/omp");
|
||||
command("pair_coeff * * SiC.tersoff.zbl Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
@ -925,13 +917,13 @@ TEST_F(PairUnitConvertTest, vashishta)
|
|||
// check if the prerequisite pair style is available
|
||||
if (!info->has_style("pair", "vashishta")) GTEST_SKIP();
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style vashishta");
|
||||
lmp->input->one("pair_coeff * * SiC.vashishta Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style vashishta");
|
||||
command("pair_coeff * * SiC.vashishta Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
// copy pressure, energy, and force from first step
|
||||
double pold;
|
||||
|
@ -942,14 +934,14 @@ TEST_F(PairUnitConvertTest, vashishta)
|
|||
for (int j = 0; j < 3; ++j)
|
||||
fold[i][j] = f[i][j];
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("clear");
|
||||
lmp->input->one("units real");
|
||||
lmp->input->one("read_data test_pair_unit_convert.data");
|
||||
lmp->input->one("pair_style vashishta");
|
||||
lmp->input->one("pair_coeff * * SiC.vashishta Si C");
|
||||
lmp->input->one("run 0 post no");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("clear");
|
||||
command("units real");
|
||||
command("read_data test_pair_unit_convert.data");
|
||||
command("pair_style vashishta");
|
||||
command("pair_coeff * * SiC.vashishta Si C");
|
||||
command("run 0 post no");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
double pnew;
|
||||
lmp->output->thermo->evaluate_keyword("press", &pnew);
|
||||
|
|
|
@ -28,37 +28,17 @@
|
|||
#include "potential_file_reader.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "../testing/core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <iostream>
|
||||
#include <mpi.h>
|
||||
#include <vector>
|
||||
|
||||
#if defined(OMPI_MAJOR_VERSION)
|
||||
const bool have_openmpi = true;
|
||||
#else
|
||||
const bool have_openmpi = false;
|
||||
#endif
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using ::testing::MatchesRegex;
|
||||
using utils::split_words;
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} else { \
|
||||
if (!have_openmpi) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
} \
|
||||
}
|
||||
|
||||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
bool verbose = false;
|
||||
|
||||
|
@ -75,36 +55,16 @@ const int LAMMPS_NS::PairNb3bHarmonic::NPARAMS_PER_LINE;
|
|||
const int LAMMPS_NS::PairVashishta::NPARAMS_PER_LINE;
|
||||
const int LAMMPS_NS::PairTersoffTable::NPARAMS_PER_LINE;
|
||||
|
||||
class PotentialFileReaderTest : public ::testing::Test {
|
||||
protected:
|
||||
LAMMPS *lmp;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {
|
||||
"PotentialFileReaderTest", "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
class PotentialFileReaderTest : public LAMMPSTest {
|
||||
};
|
||||
|
||||
// open for native units
|
||||
TEST_F(PotentialFileReaderTest, Sw_native)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "Si.sw", "Stillinger-Weber");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairSW::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairSW::NPARAMS_PER_LINE);
|
||||
|
@ -113,10 +73,10 @@ TEST_F(PotentialFileReaderTest, Sw_native)
|
|||
// open with supported conversion enabled
|
||||
TEST_F(PotentialFileReaderTest, Sw_conv)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units real");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
PotentialFileReader reader(lmp, "Si.sw", "Stillinger-Weber", utils::METAL2REAL);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairSW::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairSW::NPARAMS_PER_LINE);
|
||||
|
@ -125,9 +85,9 @@ TEST_F(PotentialFileReaderTest, Sw_conv)
|
|||
// open without conversion enabled
|
||||
TEST_F(PotentialFileReaderTest, Sw_noconv)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units real");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
TEST_FAILURE(".*ERROR on proc.*potential.*requires metal units but real.*",
|
||||
PotentialFileReader reader(lmp, "Si.sw", "Stillinger-Weber", utils::REAL2METAL););
|
||||
|
@ -135,10 +95,10 @@ TEST_F(PotentialFileReaderTest, Sw_noconv)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, Comb)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "ffield.comb", "COMB");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairComb::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairComb::NPARAMS_PER_LINE);
|
||||
|
@ -146,10 +106,10 @@ TEST_F(PotentialFileReaderTest, Comb)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, Comb3)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "ffield.comb3", "COMB3");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairComb3::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairComb3::NPARAMS_PER_LINE);
|
||||
|
@ -157,10 +117,10 @@ TEST_F(PotentialFileReaderTest, Comb3)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, Tersoff)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "Si.tersoff", "Tersoff");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairTersoff::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairTersoff::NPARAMS_PER_LINE);
|
||||
|
@ -168,10 +128,10 @@ TEST_F(PotentialFileReaderTest, Tersoff)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, TersoffMod)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "Si.tersoff.mod", "Tersoff/Mod");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairTersoffMOD::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairTersoffMOD::NPARAMS_PER_LINE);
|
||||
|
@ -179,10 +139,10 @@ TEST_F(PotentialFileReaderTest, TersoffMod)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, TersoffModC)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "Si.tersoff.modc", "Tersoff/ModC");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairTersoffMODC::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairTersoffMODC::NPARAMS_PER_LINE);
|
||||
|
@ -190,10 +150,10 @@ TEST_F(PotentialFileReaderTest, TersoffModC)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, TersoffTable)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "Si.tersoff", "TersoffTable");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairTersoffTable::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairTersoffTable::NPARAMS_PER_LINE);
|
||||
|
@ -201,10 +161,10 @@ TEST_F(PotentialFileReaderTest, TersoffTable)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, TersoffZBL)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "SiC.tersoff.zbl", "Tersoff/ZBL");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairTersoffZBL::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairTersoffZBL::NPARAMS_PER_LINE);
|
||||
|
@ -212,10 +172,10 @@ TEST_F(PotentialFileReaderTest, TersoffZBL)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, GW)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "SiC.gw", "GW");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairGW::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairGW::NPARAMS_PER_LINE);
|
||||
|
@ -223,10 +183,10 @@ TEST_F(PotentialFileReaderTest, GW)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, GWZBL)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "SiC.gw.zbl", "GW/ZBL");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairGWZBL::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairGWZBL::NPARAMS_PER_LINE);
|
||||
|
@ -234,10 +194,10 @@ TEST_F(PotentialFileReaderTest, GWZBL)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, Nb3bHarmonic)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units real");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
PotentialFileReader reader(lmp, "MOH.nb3b.harmonic", "NB3B Harmonic");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairNb3bHarmonic::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairNb3bHarmonic::NPARAMS_PER_LINE);
|
||||
|
@ -245,10 +205,10 @@ TEST_F(PotentialFileReaderTest, Nb3bHarmonic)
|
|||
|
||||
TEST_F(PotentialFileReaderTest, Vashishta)
|
||||
{
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
PotentialFileReader reader(lmp, "SiC.vashishta", "Vashishta");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
auto line = reader.next_line(PairVashishta::NPARAMS_PER_LINE);
|
||||
ASSERT_EQ(utils::count_words(line), PairVashishta::NPARAMS_PER_LINE);
|
||||
|
@ -259,38 +219,38 @@ TEST_F(PotentialFileReaderTest, UnitConvert)
|
|||
PotentialFileReader *reader;
|
||||
int unit_convert, flag;
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
lmp->input->one("units metal");
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units metal");
|
||||
reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber");
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
unit_convert = reader->get_unit_convert();
|
||||
ASSERT_EQ(unit_convert, 0);
|
||||
delete reader;
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
flag = utils::get_supported_conversions(utils::UNKNOWN);
|
||||
reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber", flag);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
unit_convert = reader->get_unit_convert();
|
||||
ASSERT_EQ(unit_convert, 0);
|
||||
delete reader;
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
flag = utils::get_supported_conversions(utils::ENERGY);
|
||||
reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber", flag);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
unit_convert = reader->get_unit_convert();
|
||||
ASSERT_EQ(unit_convert, 0);
|
||||
delete reader;
|
||||
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
flag = utils::get_supported_conversions(utils::ENERGY);
|
||||
lmp->input->one("units real");
|
||||
command("units real");
|
||||
reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber", flag);
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
unit_convert = reader->get_unit_convert();
|
||||
ASSERT_EQ(unit_convert, utils::METAL2REAL);
|
||||
|
@ -302,7 +262,7 @@ int main(int argc, char **argv)
|
|||
MPI_Init(&argc, &argv);
|
||||
::testing::InitGoogleMock(&argc, argv);
|
||||
|
||||
if (have_openmpi && !LAMMPS_NS::Info::has_exceptions())
|
||||
if (Info::get_mpi_vendor() == "Open MPI" && !LAMMPS_NS::Info::has_exceptions())
|
||||
std::cout << "Warning: using OpenMPI without exceptions. "
|
||||
"Death tests will be skipped\n";
|
||||
|
||||
|
|
|
@ -19,8 +19,11 @@
|
|||
#include "variable.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "exceptions.h"
|
||||
|
||||
#include <functional>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
|
@ -48,15 +51,43 @@ class LAMMPSTest : public ::testing::Test {
|
|||
public:
|
||||
void command(const std::string &line) { lmp->input->one(line.c_str()); }
|
||||
|
||||
void BEGIN_HIDE_OUTPUT() {
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
}
|
||||
|
||||
void END_HIDE_OUTPUT() {
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
|
||||
void BEGIN_CAPTURE_OUTPUT() {
|
||||
::testing::internal::CaptureStdout();
|
||||
}
|
||||
|
||||
std::string END_CAPTURE_OUTPUT() {
|
||||
auto output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
return output;
|
||||
}
|
||||
|
||||
void HIDE_OUTPUT(std::function<void()> f) {
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
f();
|
||||
try {
|
||||
f();
|
||||
} catch(LAMMPSException & e) {
|
||||
if (!verbose) std::cout << ::testing::internal::GetCapturedStdout();
|
||||
throw e;
|
||||
}
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
}
|
||||
|
||||
std::string CAPTURE_OUTPUT(std::function<void()> f) {
|
||||
::testing::internal::CaptureStdout();
|
||||
f();
|
||||
try {
|
||||
f();
|
||||
} catch(LAMMPSException & e) {
|
||||
if (verbose) std::cout << ::testing::internal::GetCapturedStdout();
|
||||
throw e;
|
||||
}
|
||||
auto output = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << output;
|
||||
return output;
|
||||
|
@ -74,20 +105,31 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
const char *testbinary = "LAMMPSTest";
|
||||
std::string testbinary = "LAMMPSTest";
|
||||
std::vector<std::string> args = {"-log", "none", "-echo", "screen", "-nocite"};
|
||||
LAMMPS *lmp;
|
||||
Info *info;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
const char *args[] = {testbinary, "-log", "none", "-echo", "screen", "-nocite"};
|
||||
char **argv = (char **)args;
|
||||
int argc = sizeof(args) / sizeof(char *);
|
||||
int argc = args.size() + 1;
|
||||
char ** argv = new char*[argc];
|
||||
argv[0] = utils::strdup(testbinary);
|
||||
for(int i = 1; i < argc; i++) {
|
||||
argv[i] = utils::strdup(args[i-1]);
|
||||
}
|
||||
|
||||
HIDE_OUTPUT([&] {
|
||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
info = new Info(lmp);
|
||||
});
|
||||
InitSystem();
|
||||
|
||||
for(int i = 0; i < argc; i++) {
|
||||
delete [] argv[i];
|
||||
argv[i] = nullptr;
|
||||
}
|
||||
delete [] argv;
|
||||
}
|
||||
|
||||
virtual void InitSystem() {}
|
||||
|
@ -100,6 +142,7 @@ protected:
|
|||
info = nullptr;
|
||||
lmp = nullptr;
|
||||
});
|
||||
std::cout.flush();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ TEST(Tokenizer, as_vector1)
|
|||
|
||||
TEST(Tokenizer, as_vector2)
|
||||
{
|
||||
auto list = Tokenizer("a\\b\\c","\\").as_vector();
|
||||
auto list = Tokenizer("a\\b\\c", "\\").as_vector();
|
||||
ASSERT_THAT(list[0], Eq("a"));
|
||||
ASSERT_THAT(list[1], Eq("b"));
|
||||
ASSERT_THAT(list[2], Eq("c"));
|
||||
|
@ -121,14 +121,14 @@ TEST(Tokenizer, as_vector2)
|
|||
|
||||
TEST(Tokenizer, as_vector3)
|
||||
{
|
||||
auto list = Tokenizer ("a\\","\\").as_vector();
|
||||
auto list = Tokenizer("a\\", "\\").as_vector();
|
||||
ASSERT_THAT(list[0], Eq("a"));
|
||||
ASSERT_EQ(list.size(), 1);
|
||||
}
|
||||
|
||||
TEST(Tokenizer, as_vector4)
|
||||
{
|
||||
auto list = Tokenizer ("\\a","\\").as_vector();
|
||||
auto list = Tokenizer("\\a", "\\").as_vector();
|
||||
ASSERT_THAT(list[0], Eq("a"));
|
||||
ASSERT_EQ(list.size(), 1);
|
||||
}
|
||||
|
|
|
@ -542,10 +542,12 @@ TEST(Utils, strfind_dot)
|
|||
|
||||
TEST(Utils, strfind_kim)
|
||||
{
|
||||
ASSERT_THAT(utils::strfind("n3409jfse MO_004835508849_000 aslfjiaf",
|
||||
"[MS][MO]_\\d\\d\\d+_\\d\\d\\d"), StrEq("MO_004835508849_000"));
|
||||
ASSERT_THAT(
|
||||
utils::strfind("n3409jfse MO_004835508849_000 aslfjiaf", "[MS][MO]_\\d\\d\\d+_\\d\\d\\d"),
|
||||
StrEq("MO_004835508849_000"));
|
||||
ASSERT_THAT(utils::strfind("VanDuinChakraborty_2003_CHNO__SM_107643900657_000",
|
||||
"[MS][MO]_\\d\\d\\d+_\\d\\d\\d"), StrEq("SM_107643900657_000"));
|
||||
"[MS][MO]_\\d\\d\\d+_\\d\\d\\d"),
|
||||
StrEq("SM_107643900657_000"));
|
||||
}
|
||||
|
||||
TEST(Utils, bounds_case1)
|
||||
|
|
Loading…
Reference in New Issue