Merge branch 'develop' into collected-small-fixes
This commit is contained in:
@ -17,12 +17,16 @@ Syntax
|
|||||||
* M = insert a single atom or molecule every M steps
|
* M = insert a single atom or molecule every M steps
|
||||||
* seed = random # seed (positive integer)
|
* seed = random # seed (positive integer)
|
||||||
* one or more keyword/value pairs may be appended to args
|
* one or more keyword/value pairs may be appended to args
|
||||||
* keyword = *region* or *id* or *global* or *local* or *near* or *gaussian* or *attempt* or *rate* or *vx* or *vy* or *vz* or *target* or *mol* or *molfrac* or *rigid* or *shake* or *orient* or *units*
|
* keyword = *region* or *var* or *set* or *id* or *global* or *local* or *near* or *gaussian* or *attempt* or *rate* or *vx* or *vy* or *vz* or *target* or *mol* or *molfrac* or *rigid* or *shake* or *orient* or *units*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
*region* value = region-ID
|
*region* value = region-ID
|
||||||
region-ID = ID of region to use as insertion volume
|
region-ID = ID of region to use as insertion volume
|
||||||
|
*var* value = name = variable name to evaluate for test of atom creation
|
||||||
|
*set* values = dim name
|
||||||
|
dim = *x* or *y* or *z*
|
||||||
|
name = name of variable to set with x, y, or z atom position
|
||||||
*id* value = *max* or *next*
|
*id* value = *max* or *next*
|
||||||
max = atom ID for new atom(s) is max ID of all current atoms plus one
|
max = atom ID for new atom(s) is max ID of all current atoms plus one
|
||||||
next = atom ID for new atom(s) increments by one for every deposition
|
next = atom ID for new atom(s) increments by one for every deposition
|
||||||
@ -193,17 +197,19 @@ simulation that is "nearby" the chosen x,y position. In this context,
|
|||||||
particles is less than the *delta* setting.
|
particles is less than the *delta* setting.
|
||||||
|
|
||||||
Once a trial x,y,z position has been selected, the insertion is only
|
Once a trial x,y,z position has been selected, the insertion is only
|
||||||
performed if no current atom in the simulation is within a distance R
|
performed if both the *near* and *var* keywords are satisfied (see below).
|
||||||
of any atom in the new particle, including the effect of periodic
|
If either the *near* or the *var* keyword is not satisfied, a new random
|
||||||
boundary conditions if applicable. R is defined by the *near*
|
position within the insertion volume is chosen and another trial is made.
|
||||||
keyword. Note that the default value for R is 0.0, which will allow
|
Up to Q attempts are made. If one or more particle insertions are not
|
||||||
atoms to strongly overlap if you are inserting where other atoms are
|
successful, LAMMPS prints a warning message.
|
||||||
present. This distance test is performed independently for each atom
|
|
||||||
in an inserted molecule, based on the randomly rotated configuration
|
The *near* keyword ensures that no current atom in the simulation is within
|
||||||
of the molecule. If this test fails, a new random position within the
|
a distance R of any atom in the new particle, including the effect of
|
||||||
insertion volume is chosen and another trial is made. Up to Q
|
periodic boundary conditions if applicable. Note that the default value
|
||||||
attempts are made. If the particle is not successfully inserted,
|
for R is 0.0, which will allow atoms to strongly overlap if you are
|
||||||
LAMMPS prints a warning message.
|
inserting where other atoms are present. This distance test is performed
|
||||||
|
independently for each atom in an inserted molecule, based on the randomly
|
||||||
|
rotated configuration of the molecule.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@ -214,6 +220,24 @@ LAMMPS prints a warning message.
|
|||||||
existing particle. LAMMPS will issue a warning if R is smaller than
|
existing particle. LAMMPS will issue a warning if R is smaller than
|
||||||
this value, based on the radii of existing and inserted particles.
|
this value, based on the radii of existing and inserted particles.
|
||||||
|
|
||||||
|
The *var* and *set* keywords can be used together to provide a criterion
|
||||||
|
for accepting or rejecting the addition of an individual atom, based on its
|
||||||
|
coordinates. The *name* specified for the *var* keyword is the name of an
|
||||||
|
:doc:`equal-style variable <variable>` that should evaluate to a zero or
|
||||||
|
non-zero value based on one or two or three variables that will store the
|
||||||
|
*x*, *y*, or *z* coordinates of an atom (one variable per coordinate). If
|
||||||
|
used, these other variables must be :doc:`internal-style variables
|
||||||
|
<variable>` defined in the input script; their initial numeric value can be
|
||||||
|
anything. They must be internal-style variables, because this command
|
||||||
|
resets their values directly. The *set* keyword is used to identify the
|
||||||
|
names of these other variables, one variable for the *x*-coordinate of a
|
||||||
|
created atom, one for *y*, and one for *z*. When an atom is created, its
|
||||||
|
:math:`(x,y,z)` coordinates become the values for any *set* variable that
|
||||||
|
is defined. The *var* variable is then evaluated. If the returned value
|
||||||
|
is 0.0, the atom is not created. If it is non-zero, the atom is created.
|
||||||
|
For an example of how to use these keywords, see the
|
||||||
|
:doc:`create_atoms <create_atoms>`command.
|
||||||
|
|
||||||
The *rate* option moves the insertion volume in the z direction (3d)
|
The *rate* option moves the insertion volume in the z direction (3d)
|
||||||
or y direction (2d). This enables particles to be inserted from a
|
or y direction (2d). This enables particles to be inserted from a
|
||||||
successively higher height over time. Note that this parameter is
|
successively higher height over time. Note that this parameter is
|
||||||
|
|||||||
@ -379,8 +379,9 @@ class lammps(object):
|
|||||||
for i in range(narg):
|
for i in range(narg):
|
||||||
if type(cmdargs[i]) is str:
|
if type(cmdargs[i]) is str:
|
||||||
cmdargs[i] = cmdargs[i].encode()
|
cmdargs[i] = cmdargs[i].encode()
|
||||||
cargs = (c_char_p*narg)(*cmdargs)
|
cargs = (c_char_p*(narg+1))(*cmdargs)
|
||||||
self.lib.lammps_open.argtypes = [c_int, c_char_p*narg, MPI_Comm, c_void_p]
|
cargs[narg] = None
|
||||||
|
self.lib.lammps_open.argtypes = [c_int, c_char_p*(narg+1), MPI_Comm, c_void_p]
|
||||||
else:
|
else:
|
||||||
self.lib.lammps_open.argtypes = [c_int, c_char_p, MPI_Comm, c_void_p]
|
self.lib.lammps_open.argtypes = [c_int, c_char_p, MPI_Comm, c_void_p]
|
||||||
|
|
||||||
@ -399,8 +400,9 @@ class lammps(object):
|
|||||||
for i in range(narg):
|
for i in range(narg):
|
||||||
if type(cmdargs[i]) is str:
|
if type(cmdargs[i]) is str:
|
||||||
cmdargs[i] = cmdargs[i].encode()
|
cmdargs[i] = cmdargs[i].encode()
|
||||||
cargs = (c_char_p*narg)(*cmdargs)
|
cargs = (c_char_p*(narg+1))(*cmdargs)
|
||||||
self.lib.lammps_open_no_mpi.argtypes = [c_int, c_char_p*narg, c_void_p]
|
cargs[narg] = None
|
||||||
|
self.lib.lammps_open_no_mpi.argtypes = [c_int, c_char_p*(narg+1), c_void_p]
|
||||||
self.lmp = c_void_p(self.lib.lammps_open_no_mpi(narg,cargs,None))
|
self.lmp = c_void_p(self.lib.lammps_open_no_mpi(narg,cargs,None))
|
||||||
else:
|
else:
|
||||||
self.lib.lammps_open_no_mpi.argtypes = [c_int, c_char_p, c_void_p]
|
self.lib.lammps_open_no_mpi.argtypes = [c_int, c_char_p, c_void_p]
|
||||||
|
|||||||
@ -34,46 +34,10 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LMP_KOKKOS_GPU
|
#ifdef LMP_KOKKOS_GPU
|
||||||
|
#if (OPEN_MPI) && (OMPI_MAJOR_VERSION >= 2)
|
||||||
// for detecting GPU-aware MPI support:
|
|
||||||
// the variable int have_gpu_aware
|
|
||||||
// - is 1 if GPU-aware MPI support is available
|
|
||||||
// - is 0 if GPU-aware MPI support is unavailable
|
|
||||||
// - is -1 if GPU-aware MPI support is unknown
|
|
||||||
|
|
||||||
#define GPU_AWARE_UNKNOWN static int have_gpu_aware = -1;
|
|
||||||
|
|
||||||
// TODO HIP: implement HIP-aware MPI support (UCX) detection
|
|
||||||
#if defined(KOKKOS_ENABLE_HIP) || defined(KOKKOS_ENABLE_SYCL) || defined(KOKKOS_ENABLE_OPENMPTARGET)
|
|
||||||
GPU_AWARE_UNKNOWN
|
|
||||||
#elif defined(KOKKOS_ENABLE_CUDA)
|
|
||||||
|
|
||||||
// OpenMPI supports detecting GPU-aware MPI as of version 2.0.0
|
|
||||||
|
|
||||||
#if (OPEN_MPI)
|
|
||||||
#if (OMPI_MAJOR_VERSION >= 2)
|
|
||||||
|
|
||||||
#include <mpi-ext.h>
|
#include <mpi-ext.h>
|
||||||
|
#endif
|
||||||
#if defined(MPIX_CUDA_AWARE_SUPPORT) && MPIX_CUDA_AWARE_SUPPORT
|
#endif
|
||||||
static int have_gpu_aware = 1;
|
|
||||||
#elif defined(MPIX_CUDA_AWARE_SUPPORT) && !MPIX_CUDA_AWARE_SUPPORT
|
|
||||||
static int have_gpu_aware = 0;
|
|
||||||
#else
|
|
||||||
GPU_AWARE_UNKNOWN
|
|
||||||
#endif // defined(MPIX_CUDA_AWARE_SUPPORT)
|
|
||||||
|
|
||||||
#else // old OpenMPI
|
|
||||||
GPU_AWARE_UNKNOWN
|
|
||||||
#endif // (OMPI_MAJOR_VERSION >=2)
|
|
||||||
|
|
||||||
#else // unknown MPI library
|
|
||||||
GPU_AWARE_UNKNOWN
|
|
||||||
#endif // OPEN_MPI
|
|
||||||
|
|
||||||
#endif // KOKKOS_ENABLE_CUDA
|
|
||||||
|
|
||||||
#endif // LMP_ENABLE_DEVICE
|
|
||||||
|
|
||||||
using namespace LAMMPS_NS;
|
using namespace LAMMPS_NS;
|
||||||
|
|
||||||
@ -243,8 +207,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
|
|||||||
// default settings for package kokkos command
|
// default settings for package kokkos command
|
||||||
|
|
||||||
binsize = 0.0;
|
binsize = 0.0;
|
||||||
#ifdef KOKKOS_ENABLE_CUDA
|
#if defined(LMP_KOKKOS_GPU)
|
||||||
// TODO HIP: implement HIP-aware MPI testing
|
|
||||||
gpu_aware_flag = 1;
|
gpu_aware_flag = 1;
|
||||||
#else
|
#else
|
||||||
gpu_aware_flag = 0;
|
gpu_aware_flag = 0;
|
||||||
@ -282,70 +245,111 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
|
|||||||
#ifdef LMP_KOKKOS_GPU
|
#ifdef LMP_KOKKOS_GPU
|
||||||
|
|
||||||
// check and warn about GPU-aware MPI availability when using multiple MPI tasks
|
// check and warn about GPU-aware MPI availability when using multiple MPI tasks
|
||||||
// change default only if we can safely detect that GPU-aware MPI is not available
|
// change default only if we can detect that GPU-aware MPI is not available
|
||||||
|
|
||||||
int nmpi = 0;
|
int nmpi = 0;
|
||||||
MPI_Comm_size(world,&nmpi);
|
MPI_Comm_size(world,&nmpi);
|
||||||
if (nmpi > 1) {
|
if (nmpi > 1) {
|
||||||
|
|
||||||
#if defined(MPI_VERSION) && (MPI_VERSION > 2)
|
// for detecting GPU-aware MPI support:
|
||||||
// Check for IBM Spectrum MPI
|
// the variable int have_gpu_aware
|
||||||
|
// - is 1 if GPU-aware MPI support is available
|
||||||
|
// - is 0 if GPU-aware MPI support is unavailable
|
||||||
|
// - is -1 if GPU-aware MPI support is unknown
|
||||||
|
|
||||||
int len;
|
int have_gpu_aware = -1;
|
||||||
char mpi_version[MPI_MAX_LIBRARY_VERSION_STRING];
|
|
||||||
MPI_Get_library_version(mpi_version, &len);
|
|
||||||
if (strstr(&mpi_version[0], "Spectrum") != nullptr) {
|
|
||||||
gpu_aware_flag = 0;
|
|
||||||
char* str;
|
|
||||||
if ((str = getenv("OMPI_MCA_pml_pami_enable_cuda")))
|
|
||||||
if ((strcmp(str,"1") == 0)) {
|
|
||||||
have_gpu_aware = 1;
|
|
||||||
gpu_aware_flag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!gpu_aware_flag)
|
// OpenMPI
|
||||||
if (me == 0)
|
|
||||||
error->warning(FLERR,"The Spectrum MPI '-gpu' flag is not set. Disabling GPU-aware MPI");
|
#if (OPEN_MPI)
|
||||||
}
|
#if (OMPI_MAJOR_VERSION >= 2)
|
||||||
|
|
||||||
|
#if defined(KOKKOS_ENABLE_CUDA)
|
||||||
|
#if defined(OMPI_HAVE_MPI_EXT_CUDA) && OMPI_HAVE_MPI_EXT_CUDA
|
||||||
|
have_gpu_aware = MPIX_Query_cuda_support();
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KOKKOS_ENABLE_HIP)
|
||||||
|
#if defined(OMPI_HAVE_MPI_EXT_ROCM) && OMPI_HAVE_MPI_EXT_ROCM
|
||||||
|
have_gpu_aware = MPIX_Query_rocm_support();
|
||||||
|
#elif (OMPI_MAJOR_VERSION < 5)
|
||||||
|
have_gpu_aware = 0;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
have_gpu_aware = 0;
|
||||||
|
#endif // OMPI_MAJOR_VERSION >= 2
|
||||||
|
|
||||||
if (gpu_aware_flag == 1 && have_gpu_aware == 0) {
|
if (gpu_aware_flag == 1 && have_gpu_aware == 0) {
|
||||||
if (me == 0)
|
if (me == 0)
|
||||||
error->warning(FLERR,"Turning off GPU-aware MPI since it is not detected, "
|
error->warning(FLERR,"Turning off GPU-aware MPI since it is not detected, "
|
||||||
"use '-pk kokkos gpu/aware on' to override");
|
"use '-pk kokkos gpu/aware on' to override");
|
||||||
gpu_aware_flag = 0;
|
gpu_aware_flag = 0;
|
||||||
} else if (have_gpu_aware == -1) { // maybe we are dealing with MPICH, MVAPICH2 or some derivative?
|
}
|
||||||
|
|
||||||
|
#endif // OPEN_MPI
|
||||||
|
|
||||||
|
// IBM Spectrum MPI
|
||||||
|
|
||||||
|
#if defined(MPI_VERSION) && (MPI_VERSION > 2)
|
||||||
|
|
||||||
|
int len;
|
||||||
|
char mpi_version[MPI_MAX_LIBRARY_VERSION_STRING];
|
||||||
|
MPI_Get_library_version(mpi_version, &len);
|
||||||
|
if (strstr(&mpi_version[0], "Spectrum") != nullptr) {
|
||||||
|
char* str;
|
||||||
|
have_gpu_aware = 0;
|
||||||
|
if ((str = getenv("OMPI_MCA_pml_pami_enable_cuda")))
|
||||||
|
if ((strcmp(str,"1") == 0))
|
||||||
|
have_gpu_aware = 1;
|
||||||
|
|
||||||
|
if (!have_gpu_aware) {
|
||||||
|
if (me == 0)
|
||||||
|
error->warning(FLERR,"The Spectrum MPI '-gpu' flag is not set. Disabling GPU-aware MPI");
|
||||||
|
gpu_aware_flag = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (have_gpu_aware == -1) {
|
||||||
// MVAPICH2
|
// MVAPICH2
|
||||||
#if defined(MPICH) && defined(MVAPICH2_VERSION)
|
#if defined(MPICH) && defined(MVAPICH2_VERSION)
|
||||||
char* str;
|
char* str;
|
||||||
gpu_aware_flag = 0;
|
have_gpu_aware = 0;
|
||||||
if ((str = getenv("MV2_USE_CUDA")))
|
if ((str = getenv("MV2_USE_CUDA")))
|
||||||
if ((strcmp(str,"1") == 0))
|
if ((strcmp(str,"1") == 0))
|
||||||
gpu_aware_flag = 1;
|
have_gpu_aware = 1;
|
||||||
|
|
||||||
if (!gpu_aware_flag)
|
if (!have_gpu_aware) {
|
||||||
if (me == 0)
|
if (me == 0)
|
||||||
error->warning(FLERR,"MVAPICH2 'MV2_USE_CUDA' environment variable is not set. Disabling GPU-aware MPI");
|
error->warning(FLERR,"MVAPICH2 'MV2_USE_CUDA' environment variable is not set. Disabling GPU-aware MPI");
|
||||||
// pure MPICH or some unsupported MPICH derivative
|
gpu_aware_flag = 0;
|
||||||
|
}
|
||||||
|
// pure MPICH or some MPICH derivative
|
||||||
|
// check for Cray MPICH which has GPU-aware support
|
||||||
#elif defined(MPICH) && !defined(MVAPICH2_VERSION)
|
#elif defined(MPICH) && !defined(MVAPICH2_VERSION)
|
||||||
char* str;
|
char* str;
|
||||||
gpu_aware_flag = 0;
|
have_gpu_aware = 0;
|
||||||
if ((str = getenv("MPICH_GPU_SUPPORT_ENABLED")))
|
if ((str = getenv("MPICH_GPU_SUPPORT_ENABLED")))
|
||||||
if ((strcmp(str,"1") == 0))
|
if ((strcmp(str,"1") == 0))
|
||||||
gpu_aware_flag = 1;
|
have_gpu_aware = 1;
|
||||||
|
|
||||||
if (!gpu_aware_flag && me == 0)
|
if (!have_gpu_aware) {
|
||||||
|
if (me == 0)
|
||||||
error->warning(FLERR,"Detected MPICH. Disabling GPU-aware MPI");
|
error->warning(FLERR,"Detected MPICH. Disabling GPU-aware MPI");
|
||||||
|
gpu_aware_flag = 0;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
if (me == 0)
|
if (me == 0)
|
||||||
error->warning(FLERR,"Kokkos with GPU-enabled backend assumes GPU-aware MPI is available,"
|
error->warning(FLERR,"Kokkos with GPU-enabled backend assumes GPU-aware MPI is available,"
|
||||||
" but cannot determine if this is the case\n try"
|
" but cannot determine if this is the case\n try"
|
||||||
" '-pk kokkos gpu/aware off' if getting segmentation faults");
|
" '-pk kokkos gpu/aware off' if getting segmentation faults");
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
} // if (-1 == have_gpu_aware)
|
}
|
||||||
} // nmpi > 0
|
} // nmpi > 0
|
||||||
#endif // LMP_ENABLE_DEVICE
|
#endif // LMP_KOKKOS_GPU
|
||||||
|
|
||||||
#ifdef KILL_KOKKOS_ON_SIGSEGV
|
#ifdef KILL_KOKKOS_ON_SIGSEGV
|
||||||
signal(SIGSEGV, my_signal_handler);
|
signal(SIGSEGV, my_signal_handler);
|
||||||
|
|||||||
@ -202,8 +202,10 @@ void PairPACEExtrapolation::compute(int eflag, int vflag)
|
|||||||
// jnum(0) = 50
|
// jnum(0) = 50
|
||||||
// jlist(neigh ind of 0-atom) = [1,2,10,7,99,25, .. 50 element in total]
|
// jlist(neigh ind of 0-atom) = [1,2,10,7,99,25, .. 50 element in total]
|
||||||
try {
|
try {
|
||||||
if (flag_compute_extrapolation_grade)
|
if (flag_compute_extrapolation_grade) {
|
||||||
|
aceimpl->ace->compute_projections = true;
|
||||||
aceimpl->ace->compute_atom(i, x, type, jnum, jlist);
|
aceimpl->ace->compute_atom(i, x, type, jnum, jlist);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
aceimpl->rec_ace->compute_atom(i, x, type, jnum, jlist);
|
aceimpl->rec_ace->compute_atom(i, x, type, jnum, jlist);
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
|
|||||||
@ -123,11 +123,9 @@ void AngleWrite::command(int narg, char **arg)
|
|||||||
|
|
||||||
if (comm->me == 0) {
|
if (comm->me == 0) {
|
||||||
// set up new LAMMPS instance with dummy system to evaluate angle potential
|
// set up new LAMMPS instance with dummy system to evaluate angle potential
|
||||||
const char *args[] = {"AngleWrite", "-nocite", "-echo", "none",
|
LAMMPS::argv args = {"AngleWrite", "-nocite", "-echo", "none",
|
||||||
"-log", "none", "-screen", "none"};
|
"-log", "none", "-screen", "none"};
|
||||||
char **argv = (char **) args;
|
LAMMPS *writer = new LAMMPS(args, singlecomm);
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *writer = new LAMMPS(argc, argv, singlecomm);
|
|
||||||
|
|
||||||
// create dummy system replicating angle style settings
|
// create dummy system replicating angle style settings
|
||||||
writer->input->one(fmt::format("units {}", update->unit_style));
|
writer->input->one(fmt::format("units {}", update->unit_style));
|
||||||
|
|||||||
@ -124,12 +124,8 @@ void DihedralWrite::command(int narg, char **arg)
|
|||||||
|
|
||||||
if (comm->me == 0) {
|
if (comm->me == 0) {
|
||||||
// set up new LAMMPS instance with dummy system to evaluate dihedral potential
|
// set up new LAMMPS instance with dummy system to evaluate dihedral potential
|
||||||
// const char *args[] = {"DihedralWrite", "-nocite", "-echo", "none",
|
LAMMPS::argv args = {"DihedralWrite", "-nocite", "-echo", "screen", "-log", "none"};
|
||||||
// "-log", "none", "-screen", "none"};
|
LAMMPS *writer = new LAMMPS(args, singlecomm);
|
||||||
const char *args[] = {"DihedralWrite", "-nocite", "-echo", "screen", "-log", "none"};
|
|
||||||
char **argv = (char **) args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *writer = new LAMMPS(argc, argv, singlecomm);
|
|
||||||
|
|
||||||
// create dummy system replicating dihedral style settings
|
// create dummy system replicating dihedral style settings
|
||||||
writer->input->one(fmt::format("units {}", update->unit_style));
|
writer->input->one(fmt::format("units {}", update->unit_style));
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
#include "domain.h"
|
#include "domain.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "fix.h"
|
#include "fix.h"
|
||||||
|
#include "input.h"
|
||||||
#include "lattice.h"
|
#include "lattice.h"
|
||||||
#include "math_const.h"
|
#include "math_const.h"
|
||||||
#include "math_extra.h"
|
#include "math_extra.h"
|
||||||
@ -29,6 +30,7 @@
|
|||||||
#include "random_park.h"
|
#include "random_park.h"
|
||||||
#include "region.h"
|
#include "region.h"
|
||||||
#include "update.h"
|
#include "update.h"
|
||||||
|
#include "variable.h"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
@ -209,6 +211,10 @@ FixDeposit::~FixDeposit()
|
|||||||
delete [] idrigid;
|
delete [] idrigid;
|
||||||
delete [] idshake;
|
delete [] idshake;
|
||||||
delete [] idregion;
|
delete [] idregion;
|
||||||
|
delete [] vstr;
|
||||||
|
delete [] xstr;
|
||||||
|
delete [] ystr;
|
||||||
|
delete [] zstr;
|
||||||
memory->destroy(coords);
|
memory->destroy(coords);
|
||||||
memory->destroy(imageflags);
|
memory->destroy(imageflags);
|
||||||
}
|
}
|
||||||
@ -226,6 +232,8 @@ int FixDeposit::setmask()
|
|||||||
|
|
||||||
void FixDeposit::init()
|
void FixDeposit::init()
|
||||||
{
|
{
|
||||||
|
warnflag = 1;
|
||||||
|
|
||||||
// set index and check validity of region
|
// set index and check validity of region
|
||||||
|
|
||||||
iregion = domain->get_region_by_id(idregion);
|
iregion = domain->get_region_by_id(idregion);
|
||||||
@ -361,6 +369,8 @@ void FixDeposit::pre_exchange()
|
|||||||
} while (iregion->match(coord[0],coord[1],coord[2]) == 0);
|
} while (iregion->match(coord[0],coord[1],coord[2]) == 0);
|
||||||
} else error->all(FLERR,"Unknown particle distribution in fix deposit");
|
} else error->all(FLERR,"Unknown particle distribution in fix deposit");
|
||||||
|
|
||||||
|
if (varflag && vartest(coord[0],coord[1],coord[2]) == 0) continue;
|
||||||
|
|
||||||
// adjust vertical coord by offset
|
// adjust vertical coord by offset
|
||||||
|
|
||||||
if (dimension == 2) coord[1] += offset;
|
if (dimension == 2) coord[1] += offset;
|
||||||
@ -583,8 +593,10 @@ void FixDeposit::pre_exchange()
|
|||||||
|
|
||||||
// warn if not successful b/c too many attempts
|
// warn if not successful b/c too many attempts
|
||||||
|
|
||||||
if (!success && comm->me == 0)
|
if (warnflag && !success && comm->me == 0) {
|
||||||
error->warning(FLERR,"Particle deposition was unsuccessful");
|
error->warning(FLERR,"One or more particle depositions were unsuccessful");
|
||||||
|
warnflag = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// reset global natoms,nbonds,etc
|
// reset global natoms,nbonds,etc
|
||||||
// increment maxtag_all and maxmol_all if necessary
|
// increment maxtag_all and maxmol_all if necessary
|
||||||
@ -661,6 +673,8 @@ void FixDeposit::options(int narg, char **arg)
|
|||||||
|
|
||||||
iregion = nullptr;
|
iregion = nullptr;
|
||||||
idregion = nullptr;
|
idregion = nullptr;
|
||||||
|
varflag = 0;
|
||||||
|
vstr = xstr = ystr = zstr = nullptr;
|
||||||
mode = ATOM;
|
mode = ATOM;
|
||||||
molfrac = nullptr;
|
molfrac = nullptr;
|
||||||
rigidflag = 0;
|
rigidflag = 0;
|
||||||
@ -680,6 +694,7 @@ void FixDeposit::options(int narg, char **arg)
|
|||||||
scaleflag = 1;
|
scaleflag = 1;
|
||||||
targetflag = 0;
|
targetflag = 0;
|
||||||
orientflag = 0;
|
orientflag = 0;
|
||||||
|
warnflag = 1;
|
||||||
rx = 0.0;
|
rx = 0.0;
|
||||||
ry = 0.0;
|
ry = 0.0;
|
||||||
rz = 0.0;
|
rz = 0.0;
|
||||||
@ -693,6 +708,27 @@ void FixDeposit::options(int narg, char **arg)
|
|||||||
idregion = utils::strdup(arg[iarg+1]);
|
idregion = utils::strdup(arg[iarg+1]);
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
|
|
||||||
|
} else if (strcmp(arg[iarg], "var") == 0) {
|
||||||
|
if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix deposit var", error);
|
||||||
|
delete[] vstr;
|
||||||
|
vstr = utils::strdup(arg[iarg + 1]);
|
||||||
|
varflag = 1;
|
||||||
|
iarg += 2;
|
||||||
|
} else if (strcmp(arg[iarg], "set") == 0) {
|
||||||
|
if (iarg + 3 > narg) utils::missing_cmd_args(FLERR, "fix deposit set", error);
|
||||||
|
if (strcmp(arg[iarg + 1], "x") == 0) {
|
||||||
|
delete[] xstr;
|
||||||
|
xstr = utils::strdup(arg[iarg + 2]);
|
||||||
|
} else if (strcmp(arg[iarg + 1], "y") == 0) {
|
||||||
|
delete[] ystr;
|
||||||
|
ystr = utils::strdup(arg[iarg + 2]);
|
||||||
|
} else if (strcmp(arg[iarg + 1], "z") == 0) {
|
||||||
|
delete[] zstr;
|
||||||
|
zstr = utils::strdup(arg[iarg + 2]);
|
||||||
|
} else
|
||||||
|
error->all(FLERR, "Unknown fix deposit set option {}", arg[iarg + 2]);
|
||||||
|
iarg += 3;
|
||||||
|
|
||||||
} else if (strcmp(arg[iarg],"mol") == 0) {
|
} else if (strcmp(arg[iarg],"mol") == 0) {
|
||||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command");
|
if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command");
|
||||||
int imol = atom->find_molecule(arg[iarg+1]);
|
int imol = atom->find_molecule(arg[iarg+1]);
|
||||||
@ -815,6 +851,39 @@ void FixDeposit::options(int narg, char **arg)
|
|||||||
iarg += 4;
|
iarg += 4;
|
||||||
} else error->all(FLERR,"Illegal fix deposit command");
|
} else error->all(FLERR,"Illegal fix deposit command");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// error check and further setup for variable test
|
||||||
|
|
||||||
|
if (!vstr && (xstr || ystr || zstr))
|
||||||
|
error->all(FLERR, "Incomplete use of variables in fix deposit command");
|
||||||
|
if (vstr && (!xstr && !ystr && !zstr))
|
||||||
|
error->all(FLERR, "Incomplete use of variables in fix deposit command");
|
||||||
|
|
||||||
|
if (varflag) {
|
||||||
|
vvar = input->variable->find(vstr);
|
||||||
|
if (vvar < 0) error->all(FLERR, "Variable {} for fix deposit does not exist", vstr);
|
||||||
|
if (!input->variable->equalstyle(vvar))
|
||||||
|
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||||
|
|
||||||
|
if (xstr) {
|
||||||
|
xvar = input->variable->find(xstr);
|
||||||
|
if (xvar < 0) error->all(FLERR, "Variable {} for fix deposit does not exist", xstr);
|
||||||
|
if (!input->variable->internalstyle(xvar))
|
||||||
|
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||||
|
}
|
||||||
|
if (ystr) {
|
||||||
|
yvar = input->variable->find(ystr);
|
||||||
|
if (yvar < 0) error->all(FLERR, "Variable {} for fix deposit does not exist", ystr);
|
||||||
|
if (!input->variable->internalstyle(yvar))
|
||||||
|
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||||
|
}
|
||||||
|
if (zstr) {
|
||||||
|
zvar = input->variable->find(zstr);
|
||||||
|
if (zvar < 0) error->all(FLERR, "Variable {} for fix deposit does not exist", zstr);
|
||||||
|
if (!input->variable->internalstyle(zvar))
|
||||||
|
error->all(FLERR, "Variable for fix deposit is invalid style");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -908,3 +977,20 @@ void *FixDeposit::extract(const char *str, int &itype)
|
|||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
test a generated atom position against variable evaluation
|
||||||
|
first set x,y,z values in internal variables
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int FixDeposit::vartest(double x, double y, double z)
|
||||||
|
{
|
||||||
|
if (xstr) input->variable->internal_set(xvar, x);
|
||||||
|
if (ystr) input->variable->internal_set(yvar, y);
|
||||||
|
if (zstr) input->variable->internal_set(zvar, z);
|
||||||
|
|
||||||
|
double value = input->variable->compute_equal(vvar);
|
||||||
|
|
||||||
|
if (value == 0.0) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|||||||
@ -40,7 +40,8 @@ class FixDeposit : public Fix {
|
|||||||
private:
|
private:
|
||||||
int ninsert, ntype, nfreq, seed;
|
int ninsert, ntype, nfreq, seed;
|
||||||
int globalflag, localflag, maxattempt, rateflag, scaleflag, targetflag;
|
int globalflag, localflag, maxattempt, rateflag, scaleflag, targetflag;
|
||||||
int mode, rigidflag, shakeflag, idnext, distflag, orientflag;
|
int mode, rigidflag, shakeflag, idnext, distflag, orientflag, warnflag;
|
||||||
|
int varflag, vvar, xvar, yvar, zvar;
|
||||||
double lo, hi, deltasq, nearsq, rate, sigma;
|
double lo, hi, deltasq, nearsq, rate, sigma;
|
||||||
double vxlo, vxhi, vylo, vyhi, vzlo, vzhi;
|
double vxlo, vxhi, vylo, vyhi, vzlo, vzhi;
|
||||||
double xlo, xhi, ylo, yhi, zlo, zhi, xmid, ymid, zmid;
|
double xlo, xhi, ylo, yhi, zlo, zhi, xmid, ymid, zmid;
|
||||||
@ -48,6 +49,8 @@ class FixDeposit : public Fix {
|
|||||||
class Region *iregion;
|
class Region *iregion;
|
||||||
char *idregion;
|
char *idregion;
|
||||||
char *idrigid, *idshake;
|
char *idrigid, *idshake;
|
||||||
|
char *vstr, *xstr, *ystr, *zstr;
|
||||||
|
char *xstr_copy, *ystr_copy, *zstr_copy;
|
||||||
|
|
||||||
class Molecule **onemols;
|
class Molecule **onemols;
|
||||||
int nmol, natom_max;
|
int nmol, natom_max;
|
||||||
@ -64,6 +67,7 @@ class FixDeposit : public Fix {
|
|||||||
|
|
||||||
void find_maxid();
|
void find_maxid();
|
||||||
void options(int, char **);
|
void options(int, char **);
|
||||||
|
int vartest(double, double, double); // evaluate a variable with new atom position
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace LAMMPS_NS
|
} // namespace LAMMPS_NS
|
||||||
|
|||||||
@ -109,6 +109,15 @@ using namespace LAMMPS_NS;
|
|||||||
* The specifics of setting up and running a simulation are handled by the
|
* The specifics of setting up and running a simulation are handled by the
|
||||||
* individual component class instances. */
|
* individual component class instances. */
|
||||||
|
|
||||||
|
/** Create a LAMMPS simulation instance
|
||||||
|
*
|
||||||
|
* \param args list of arguments
|
||||||
|
* \param communicator MPI communicator used by this LAMMPS instance
|
||||||
|
*/
|
||||||
|
LAMMPS::LAMMPS(argv & args, MPI_Comm communicator) :
|
||||||
|
LAMMPS(args.size(), argv_pointers(args).data(), communicator) {
|
||||||
|
}
|
||||||
|
|
||||||
/** Create a LAMMPS simulation instance
|
/** Create a LAMMPS simulation instance
|
||||||
*
|
*
|
||||||
* The LAMMPS constructor starts up a simulation by allocating all
|
* The LAMMPS constructor starts up a simulation by allocating all
|
||||||
@ -212,7 +221,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) :
|
|||||||
suffix = suffix2 = nullptr;
|
suffix = suffix2 = nullptr;
|
||||||
suffix_enable = 0;
|
suffix_enable = 0;
|
||||||
pair_only_flag = 0;
|
pair_only_flag = 0;
|
||||||
if (arg) exename = arg[0];
|
if (arg) exename = utils::strdup(arg[0]);
|
||||||
else exename = nullptr;
|
else exename = nullptr;
|
||||||
packargs = nullptr;
|
packargs = nullptr;
|
||||||
num_package = 0;
|
num_package = 0;
|
||||||
@ -802,6 +811,7 @@ LAMMPS::~LAMMPS() noexcept(false)
|
|||||||
delete memory;
|
delete memory;
|
||||||
|
|
||||||
delete pkg_lists;
|
delete pkg_lists;
|
||||||
|
delete[] exename;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -1468,3 +1478,17 @@ void LAMMPS::print_config(FILE *fp)
|
|||||||
}
|
}
|
||||||
fputs("\n\n",fp);
|
fputs("\n\n",fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Create vector of argv string pointers including terminating nullptr element
|
||||||
|
*
|
||||||
|
* \param args list of arguments
|
||||||
|
*/
|
||||||
|
std::vector<char*> LAMMPS::argv_pointers(argv & args){
|
||||||
|
std::vector<char*> r;
|
||||||
|
r.reserve(args.size()+1);
|
||||||
|
for(auto & a : args) {
|
||||||
|
r.push_back((char*)a.data());
|
||||||
|
}
|
||||||
|
r.push_back(nullptr);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|||||||
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <mpi.h>
|
#include <mpi.h>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace LAMMPS_NS {
|
namespace LAMMPS_NS {
|
||||||
|
|
||||||
@ -84,6 +86,10 @@ class LAMMPS {
|
|||||||
static const char *git_branch();
|
static const char *git_branch();
|
||||||
static const char *git_descriptor();
|
static const char *git_descriptor();
|
||||||
|
|
||||||
|
using argv = std::vector<std::string>;
|
||||||
|
static std::vector<char*> argv_pointers(argv & args);
|
||||||
|
|
||||||
|
LAMMPS(argv & args, MPI_Comm);
|
||||||
LAMMPS(int, char **, MPI_Comm);
|
LAMMPS(int, char **, MPI_Comm);
|
||||||
~LAMMPS() noexcept(false);
|
~LAMMPS() noexcept(false);
|
||||||
void create();
|
void create();
|
||||||
|
|||||||
@ -26,10 +26,11 @@ protected:
|
|||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite",
|
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-var", "x", "2", "-var", "zpos", "1.5"};
|
"-var", "x", "2", "-var", "zpos", "1.5",
|
||||||
|
nullptr};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
|
|||||||
@ -29,10 +29,11 @@ protected:
|
|||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none",
|
const char *args[] = {"LAMMPS_test", "-log", "none",
|
||||||
"-echo", "screen", "-nocite",
|
"-echo", "screen", "-nocite",
|
||||||
"-var", "input_dir", STRINGIFY(TEST_INPUT_FOLDER)};
|
"-var", "input_dir", STRINGIFY(TEST_INPUT_FOLDER),
|
||||||
|
nullptr};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
|
|||||||
@ -64,9 +64,9 @@ static void callback(void *handle, step_t timestep, int nlocal, tag_t *, double
|
|||||||
|
|
||||||
TEST(lammps_external, callback)
|
TEST(lammps_external, callback)
|
||||||
{
|
{
|
||||||
const char *args[] = {"liblammps", "-log", "none", "-nocite"};
|
const char *args[] = {"liblammps", "-log", "none", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
void *handle = lammps_open_no_mpi(argc, argv, nullptr);
|
void *handle = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
@ -131,9 +131,9 @@ TEST(lammps_external, callback)
|
|||||||
|
|
||||||
TEST(lammps_external, array)
|
TEST(lammps_external, array)
|
||||||
{
|
{
|
||||||
const char *args[] = {"liblammps", "-log", "none", "-nocite"};
|
const char *args[] = {"liblammps", "-log", "none", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
void *handle = lammps_open_no_mpi(argc, argv, nullptr);
|
void *handle = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
|
|||||||
@ -34,9 +34,9 @@ TEST(MPI, global_box)
|
|||||||
int boxflag;
|
int boxflag;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite"};
|
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
||||||
lammps_command(lmp, "units lj");
|
lammps_command(lmp, "units lj");
|
||||||
lammps_command(lmp, "atom_style atomic");
|
lammps_command(lmp, "atom_style atomic");
|
||||||
@ -77,9 +77,9 @@ TEST(MPI, sub_box)
|
|||||||
int boxflag;
|
int boxflag;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite"};
|
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
||||||
lammps_command(lmp, "units lj");
|
lammps_command(lmp, "units lj");
|
||||||
lammps_command(lmp, "atom_style atomic");
|
lammps_command(lmp, "atom_style atomic");
|
||||||
@ -143,9 +143,9 @@ TEST(MPI, split_comm)
|
|||||||
|
|
||||||
MPI_Comm_split(MPI_COMM_WORLD, color, key, &newcomm);
|
MPI_Comm_split(MPI_COMM_WORLD, color, key, &newcomm);
|
||||||
|
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite"};
|
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
void *lmp = lammps_open(argc, argv, newcomm, nullptr);
|
void *lmp = lammps_open(argc, argv, newcomm, nullptr);
|
||||||
lammps_command(lmp, "units lj");
|
lammps_command(lmp, "units lj");
|
||||||
lammps_command(lmp, "atom_style atomic");
|
lammps_command(lmp, "atom_style atomic");
|
||||||
@ -173,9 +173,9 @@ TEST(MPI, multi_partition)
|
|||||||
MPI_Comm_rank(MPI_COMM_WORLD, &me);
|
MPI_Comm_rank(MPI_COMM_WORLD, &me);
|
||||||
|
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-partition", "4x1",
|
const char *args[] = {"LAMMPS_test", "-log", "none", "-partition", "4x1",
|
||||||
"-echo", "screen", "-nocite", "-in", "none"};
|
"-echo", "screen", "-nocite", "-in", "none", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
||||||
|
|
||||||
lammps_command(lmp, "units lj");
|
lammps_command(lmp, "units lj");
|
||||||
@ -205,9 +205,9 @@ protected:
|
|||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {testbinary, "-log", "none", "-echo", "screen", "-nocite"};
|
const char *args[] = {testbinary, "-log", "none", "-echo", "screen", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr);
|
||||||
InitSystem();
|
InitSystem();
|
||||||
|
|||||||
@ -39,9 +39,9 @@ TEST(lammps_open, null_args)
|
|||||||
|
|
||||||
TEST(lammps_open, with_args)
|
TEST(lammps_open, with_args)
|
||||||
{
|
{
|
||||||
const char *args[] = {"liblammps", "-log", "none", "-nocite"};
|
const char *args[] = {"liblammps", "-log", "none", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
// MPI is already initialized
|
// MPI is already initialized
|
||||||
MPI_Comm mycomm;
|
MPI_Comm mycomm;
|
||||||
@ -78,9 +78,9 @@ TEST(lammps_open, with_args)
|
|||||||
TEST(lammps_open, with_kokkos)
|
TEST(lammps_open, with_kokkos)
|
||||||
{
|
{
|
||||||
if (!LAMMPS_NS::LAMMPS::is_installed_pkg("KOKKOS")) GTEST_SKIP();
|
if (!LAMMPS_NS::LAMMPS::is_installed_pkg("KOKKOS")) GTEST_SKIP();
|
||||||
const char *args[] = {"liblammps", "-k", "on", "t", "2", "-sf", "kk", "-log", "none"};
|
const char *args[] = {"liblammps", "-k", "on", "t", "2", "-sf", "kk", "-log", "none", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
void *alt_ptr;
|
void *alt_ptr;
|
||||||
@ -108,9 +108,9 @@ TEST(lammps_open, with_kokkos)
|
|||||||
|
|
||||||
TEST(lammps_open_no_mpi, no_screen)
|
TEST(lammps_open_no_mpi, no_screen)
|
||||||
{
|
{
|
||||||
const char *args[] = {"liblammps", "-log", "none", "-screen", "none", "-nocite"};
|
const char *args[] = {"liblammps", "-log", "none", "-screen", "none", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
void *alt_ptr;
|
void *alt_ptr;
|
||||||
@ -139,9 +139,9 @@ TEST(lammps_open_no_mpi, with_omp)
|
|||||||
{
|
{
|
||||||
if (!LAMMPS_NS::LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
if (!LAMMPS_NS::LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
||||||
const char *args[] = {"liblammps", "-pk", "omp", "2", "neigh", "no",
|
const char *args[] = {"liblammps", "-pk", "omp", "2", "neigh", "no",
|
||||||
"-sf", "omp", "-log", "none", "-nocite"};
|
"-sf", "omp", "-log", "none", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
void *alt_ptr;
|
void *alt_ptr;
|
||||||
@ -201,9 +201,9 @@ TEST(lammps_open_fortran, no_args)
|
|||||||
|
|
||||||
TEST(lammps_open_no_mpi, lammps_error)
|
TEST(lammps_open_no_mpi, lammps_error)
|
||||||
{
|
{
|
||||||
const char *args[] = {"liblammps", "-log", "none", "-nocite"};
|
const char *args[] = {"liblammps", "-log", "none", "-nocite", nullptr};
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
void *alt_ptr;
|
void *alt_ptr;
|
||||||
|
|||||||
@ -33,10 +33,11 @@ protected:
|
|||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none",
|
const char *args[] = {"LAMMPS_test", "-log", "none",
|
||||||
"-echo", "screen", "-nocite",
|
"-echo", "screen", "-nocite",
|
||||||
"-var", "input_dir", STRINGIFY(TEST_INPUT_FOLDER)};
|
"-var", "input_dir", STRINGIFY(TEST_INPUT_FOLDER),
|
||||||
|
nullptr};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
@ -551,10 +552,10 @@ protected:
|
|||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite"};
|
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite", nullptr};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
@ -632,10 +633,10 @@ TEST(SystemSettings, kokkos)
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
const char *args[] = {"SystemSettings", "-log", "none", "-echo", "screen", "-nocite",
|
const char *args[] = {"SystemSettings", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-k", "on", "t", "4", "-sf", "kk"};
|
"-k", "on", "t", "4", "-sf", "kk", nullptr};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
void *lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
void *lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
|
|||||||
@ -32,10 +32,11 @@ protected:
|
|||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none",
|
const char *args[] = {"LAMMPS_test", "-log", "none",
|
||||||
"-echo", "screen", "-nocite",
|
"-echo", "screen", "-nocite",
|
||||||
"-var", "input_dir", STRINGIFY(TEST_INPUT_FOLDER)};
|
"-var", "input_dir", STRINGIFY(TEST_INPUT_FOLDER),
|
||||||
|
nullptr};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = (sizeof(args) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
lmp = lammps_open_no_mpi(argc, argv, nullptr);
|
||||||
|
|||||||
@ -33,11 +33,9 @@ protected:
|
|||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {testbinary, "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {testbinary, "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
InitSystem();
|
InitSystem();
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
#include <mpi.h>
|
#include <mpi.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "../testing/utils.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
const char *demo_input[] = {"region box block 0 $x 0 2 0 2", "create_box 1 box",
|
const char *demo_input[] = {"region box block 0 $x 0 2 0 2", "create_box 1 box",
|
||||||
@ -21,9 +22,9 @@ protected:
|
|||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
Input_commands()
|
Input_commands()
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test"};
|
const char * args[] = {"LAMMPS_test", nullptr};
|
||||||
char **argv = (char **)args;
|
char ** argv = (char**)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = 1;
|
||||||
|
|
||||||
int flag;
|
int flag;
|
||||||
MPI_Initialized(&flag);
|
MPI_Initialized(&flag);
|
||||||
@ -33,13 +34,11 @@ protected:
|
|||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-var", "zpos", "1.5", "-var", "x", "2"};
|
"-var", "zpos", "1.5", "-var", "x", "2"};
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
EXPECT_STREQ(output.substr(0, 8).c_str(), "LAMMPS (");
|
EXPECT_STREQ(output.substr(0, 8).c_str(), "LAMMPS (");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,9 +21,9 @@ protected:
|
|||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
LAMMPS_plain() : lmp(nullptr)
|
LAMMPS_plain() : lmp(nullptr)
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test"};
|
const char * args[] = {"LAMMPS_test", nullptr};
|
||||||
char **argv = (char **)args;
|
char ** argv = (char**)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = 1;
|
||||||
|
|
||||||
int flag;
|
int flag;
|
||||||
MPI_Initialized(&flag);
|
MPI_Initialized(&flag);
|
||||||
@ -34,12 +34,10 @@ protected:
|
|||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "both", "-nocite"};
|
LAMMPS::argv args = {"LAMMPS_test", "-log", "none", "-echo", "both", "-nocite"};
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
EXPECT_THAT(output, StartsWith("LAMMPS ("));
|
EXPECT_THAT(output, StartsWith("LAMMPS ("));
|
||||||
}
|
}
|
||||||
@ -159,9 +157,9 @@ protected:
|
|||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
LAMMPS_omp() : lmp(nullptr)
|
LAMMPS_omp() : lmp(nullptr)
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test"};
|
const char * args[] = {"LAMMPS_test", nullptr};
|
||||||
char **argv = (char **)args;
|
char ** argv = (char**)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = 1;
|
||||||
|
|
||||||
int flag;
|
int flag;
|
||||||
MPI_Initialized(&flag);
|
MPI_Initialized(&flag);
|
||||||
@ -172,15 +170,13 @@ protected:
|
|||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-screen", "none", "-echo", "screen",
|
LAMMPS::argv args = {"LAMMPS_test", "-log", "none", "-screen", "none", "-echo", "screen",
|
||||||
"-pk", "omp", "2", "neigh", "yes", "-sf", "omp"};
|
"-pk", "omp", "2", "neigh", "yes", "-sf", "omp"};
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
// only run this test fixture with omp suffix if OPENMP package is installed
|
// only run this test fixture with omp suffix if OPENMP package is installed
|
||||||
|
|
||||||
if (LAMMPS::is_installed_pkg("OPENMP"))
|
if (LAMMPS::is_installed_pkg("OPENMP"))
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
else
|
else
|
||||||
GTEST_SKIP();
|
GTEST_SKIP();
|
||||||
}
|
}
|
||||||
@ -242,9 +238,9 @@ protected:
|
|||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
LAMMPS_kokkos() : lmp(nullptr)
|
LAMMPS_kokkos() : lmp(nullptr)
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test"};
|
const char * args[] = {"LAMMPS_test", nullptr};
|
||||||
char **argv = (char **)args;
|
char ** argv = (char**)args;
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
int argc = 1;
|
||||||
|
|
||||||
int flag;
|
int flag;
|
||||||
MPI_Initialized(&flag);
|
MPI_Initialized(&flag);
|
||||||
@ -255,15 +251,13 @@ protected:
|
|||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "none", "-screen", "none",
|
LAMMPS::argv args = {"LAMMPS_test", "-log", "none", "-echo", "none", "-screen", "none",
|
||||||
"-k", "on", "t", "1", "-sf", "kk"};
|
"-k", "on", "t", "1", "-sf", "kk"};
|
||||||
if (Info::has_accelerator_feature("KOKKOS", "api", "openmp")) args[10] = "2";
|
if (Info::has_accelerator_feature("KOKKOS", "api", "openmp")) args[10] = "2";
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
if (LAMMPS::is_installed_pkg("KOKKOS")) {
|
if (LAMMPS::is_installed_pkg("KOKKOS")) {
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
::testing::internal::GetCapturedStdout();
|
::testing::internal::GetCapturedStdout();
|
||||||
} else
|
} else
|
||||||
GTEST_SKIP();
|
GTEST_SKIP();
|
||||||
@ -333,12 +327,10 @@ TEST(LAMMPS_init, OpenMP)
|
|||||||
fputs("\n", fp);
|
fputs("\n", fp);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
const char *args[] = {"LAMMPS_init", "-in", "in.lammps_empty", "-log", "none", "-nocite"};
|
LAMMPS::argv args = {"LAMMPS_init", "-in", "in.lammps_empty", "-log", "none", "-nocite"};
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
LAMMPS *lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
EXPECT_THAT(output, ContainsRegex(".*using 2 OpenMP thread.*per MPI task.*"));
|
EXPECT_THAT(output, ContainsRegex(".*using 2 OpenMP thread.*per MPI task.*"));
|
||||||
|
|
||||||
@ -366,12 +358,10 @@ TEST(LAMMPS_init, NoOpenMP)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
platform::unsetenv("OMP_NUM_THREADS");
|
platform::unsetenv("OMP_NUM_THREADS");
|
||||||
|
|
||||||
const char *args[] = {"LAMMPS_init", "-in", "in.lammps_class_noomp", "-log", "none", "-nocite"};
|
LAMMPS::argv args = {"LAMMPS_init", "-in", "in.lammps_class_noomp", "-log", "none", "-nocite"};
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
LAMMPS *lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
EXPECT_THAT(output, ContainsRegex(
|
EXPECT_THAT(output, ContainsRegex(
|
||||||
".*OMP_NUM_THREADS environment is not set.*Defaulting to 1 thread.*"));
|
".*OMP_NUM_THREADS environment is not set.*Defaulting to 1 thread.*"));
|
||||||
|
|||||||
@ -59,11 +59,11 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(int argc, char **argv, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv & args, const TestConfig &cfg, const bool newton = true)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
|
|
||||||
// check if prerequisite styles are available
|
// check if prerequisite styles are available
|
||||||
Info *info = new Info(lmp);
|
Info *info = new Info(lmp);
|
||||||
@ -211,11 +211,9 @@ void data_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
const char *args[] = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
LAMMPS *lmp = init_lammps(args, config);
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, config);
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -303,13 +301,10 @@ TEST(AngleStyle, plain)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -358,7 +353,7 @@ TEST(AngleStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -422,14 +417,11 @@ TEST(AngleStyle, omp)
|
|||||||
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -482,7 +474,7 @@ TEST(AngleStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -525,14 +517,11 @@ TEST(AngleStyle, single)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
// create a LAMMPS instance with standard settings to detect the number of atom types
|
// create a LAMMPS instance with standard settings to detect the number of atom types
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config);
|
LAMMPS *lmp = init_lammps(args, test_config);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
@ -672,13 +661,10 @@ TEST(AngleStyle, extract)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
|
|||||||
@ -59,11 +59,11 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(int argc, char **argv, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv & args, const TestConfig &cfg, const bool newton = true)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
|
|
||||||
// check if prerequisite styles are available
|
// check if prerequisite styles are available
|
||||||
Info *info = new Info(lmp);
|
Info *info = new Info(lmp);
|
||||||
@ -211,11 +211,9 @@ void data_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
const char *args[] = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
LAMMPS *lmp = init_lammps(args, config);
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, config);
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -303,13 +301,10 @@ TEST(BondStyle, plain)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -358,7 +353,7 @@ TEST(BondStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -424,14 +419,11 @@ TEST(BondStyle, omp)
|
|||||||
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -484,7 +476,7 @@ TEST(BondStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -527,14 +519,11 @@ TEST(BondStyle, single)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
// create a LAMMPS instance with standard settings to detect the number of atom types
|
// create a LAMMPS instance with standard settings to detect the number of atom types
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config);
|
LAMMPS *lmp = init_lammps(args, test_config);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
@ -785,13 +774,10 @@ TEST(BondStyle, extract)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
|
|||||||
@ -59,11 +59,9 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(int argc, char **argv, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv & args, const TestConfig &cfg, const bool newton = true)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
|
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
|
||||||
|
|
||||||
// check if prerequisite styles are available
|
// check if prerequisite styles are available
|
||||||
Info *info = new Info(lmp);
|
Info *info = new Info(lmp);
|
||||||
@ -220,11 +218,9 @@ void data_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
const char *args[] = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
LAMMPS *lmp = init_lammps(args, config);
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, config);
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -306,13 +302,10 @@ TEST(DihedralStyle, plain)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -361,7 +354,7 @@ TEST(DihedralStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -427,14 +420,11 @@ TEST(DihedralStyle, omp)
|
|||||||
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -488,7 +478,7 @@ TEST(DihedralStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
|
|||||||
@ -61,11 +61,11 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(int argc, char **argv, const TestConfig &cfg, const bool use_respa = false)
|
LAMMPS *init_lammps(LAMMPS::argv & args, const TestConfig &cfg, const bool use_respa = false)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
|
|
||||||
// check if prerequisite styles are available
|
// check if prerequisite styles are available
|
||||||
Info *info = new Info(lmp);
|
Info *info = new Info(lmp);
|
||||||
@ -169,11 +169,8 @@ void restart_lammps(LAMMPS *lmp, const TestConfig &cfg, bool use_rmass, bool use
|
|||||||
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
const char *args[] = {"FixIntegrate", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"FixIntegrate", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
LAMMPS *lmp = init_lammps(args, config);
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, config);
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -252,13 +249,10 @@ TEST(FixTimestep, plain)
|
|||||||
if (test_config.skip_tests.count("static")) GTEST_SKIP();
|
if (test_config.skip_tests.count("static")) GTEST_SKIP();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *args[] = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config);
|
LAMMPS *lmp = init_lammps(args, test_config);
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -420,7 +414,7 @@ TEST(FixTimestep, plain)
|
|||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = init_lammps(argc, argv, test_config, true);
|
lmp = init_lammps(args, test_config, true);
|
||||||
output = ::testing::internal::GetCapturedStdout();
|
output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -554,14 +548,12 @@ TEST(FixTimestep, omp)
|
|||||||
if (test_config.skip_tests.count("static")) GTEST_SKIP();
|
if (test_config.skip_tests.count("static")) GTEST_SKIP();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *args[] = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config);
|
LAMMPS *lmp = init_lammps(args, test_config);
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -723,7 +715,7 @@ TEST(FixTimestep, omp)
|
|||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = init_lammps(argc, argv, test_config, true);
|
lmp = init_lammps(args, test_config, true);
|
||||||
output = ::testing::internal::GetCapturedStdout();
|
output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
|
|||||||
@ -59,11 +59,11 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(int argc, char **argv, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv & args, const TestConfig &cfg, const bool newton = true)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
|
|
||||||
// check if prerequisite styles are available
|
// check if prerequisite styles are available
|
||||||
Info *info = new Info(lmp);
|
Info *info = new Info(lmp);
|
||||||
@ -211,11 +211,9 @@ void data_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
const char *args[] = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
LAMMPS *lmp = init_lammps(args, config);
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, config);
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -297,13 +295,10 @@ TEST(ImproperStyle, plain)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -352,7 +347,7 @@ TEST(ImproperStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -418,14 +413,11 @@ TEST(ImproperStyle, omp)
|
|||||||
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -479,7 +471,7 @@ TEST(ImproperStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
|
|||||||
@ -61,11 +61,11 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(int argc, char **argv, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv & args, const TestConfig &cfg, const bool newton = true)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
|
|
||||||
// check if prerequisite styles are available
|
// check if prerequisite styles are available
|
||||||
Info *info = new Info(lmp);
|
Info *info = new Info(lmp);
|
||||||
@ -225,11 +225,9 @@ void data_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
LAMMPS *lmp = init_lammps(args, config);
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, config);
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -323,13 +321,10 @@ TEST(PairStyle, plain)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -388,7 +383,7 @@ TEST(PairStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton pair is forced to be on
|
// skip over these tests if newton pair is forced to be on
|
||||||
@ -469,7 +464,7 @@ TEST(PairStyle, plain)
|
|||||||
if (pair->respa_enable) {
|
if (pair->respa_enable) {
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
lmp->input->one("run_style respa 2 1 inner 1 4.8 5.5 outer 2");
|
lmp->input->one("run_style respa 2 1 inner 1 4.8 5.5 outer 2");
|
||||||
run_lammps(lmp);
|
run_lammps(lmp);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
@ -501,17 +496,14 @@ TEST(PairStyle, omp)
|
|||||||
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
if (!LAMMPS::is_installed_pkg("OPENMP")) GTEST_SKIP();
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
// cannot run dpd styles with more than 1 thread due to using multiple pRNGs
|
// cannot run dpd styles with more than 1 thread due to using multiple pRNGs
|
||||||
if (utils::strmatch(test_config.pair_style, "^dpd")) args[8] = "1";
|
if (utils::strmatch(test_config.pair_style, "^dpd")) args[8] = "1";
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -570,7 +562,7 @@ TEST(PairStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
pair = lmp->force->pair;
|
pair = lmp->force->pair;
|
||||||
@ -626,7 +618,7 @@ TEST(PairStyle, kokkos_omp)
|
|||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
if (!Info::has_accelerator_feature("KOKKOS", "api", "openmp")) GTEST_SKIP();
|
if (!Info::has_accelerator_feature("KOKKOS", "api", "openmp")) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-k", "on", "t", "4", "-sf", "kk"};
|
"-k", "on", "t", "4", "-sf", "kk"};
|
||||||
|
|
||||||
// cannot run dpd styles in plain or hybrid with more than 1 thread due to using multiple pRNGs
|
// cannot run dpd styles in plain or hybrid with more than 1 thread due to using multiple pRNGs
|
||||||
@ -642,11 +634,8 @@ TEST(PairStyle, kokkos_omp)
|
|||||||
utils::strmatch(test_config.pair_style, " pace"))
|
utils::strmatch(test_config.pair_style, " pace"))
|
||||||
args[9] = "1";
|
args[9] = "1";
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -704,7 +693,7 @@ TEST(PairStyle, kokkos_omp)
|
|||||||
if (lmp->force->newton_pair == 0) {
|
if (lmp->force->newton_pair == 0) {
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(argc, argv, test_config, false);
|
lmp = init_lammps(args, test_config, false);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
pair = lmp->force->pair;
|
pair = lmp->force->pair;
|
||||||
@ -767,22 +756,19 @@ TEST(PairStyle, gpu)
|
|||||||
(!Info::has_fft_single_support()))
|
(!Info::has_fft_single_support()))
|
||||||
GTEST_SKIP();
|
GTEST_SKIP();
|
||||||
|
|
||||||
const char *args_neigh[] = {"PairStyle", "-log", "none", "-echo",
|
LAMMPS::argv args_neigh = {"PairStyle", "-log", "none", "-echo",
|
||||||
"screen", "-nocite", "-sf", "gpu"};
|
"screen", "-nocite", "-sf", "gpu"};
|
||||||
const char *args_noneigh[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf",
|
LAMMPS::argv args_noneigh = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf",
|
||||||
"gpu", "-pk", "gpu", "0", "neigh", "no"};
|
"gpu", "-pk", "gpu", "0", "neigh", "no"};
|
||||||
|
LAMMPS::argv args = args_neigh;
|
||||||
char **argv = (char **)args_neigh;
|
|
||||||
int argc = sizeof(args_neigh) / sizeof(char *);
|
|
||||||
|
|
||||||
// cannot use GPU neighbor list with hybrid pair style (yet)
|
// cannot use GPU neighbor list with hybrid pair style (yet)
|
||||||
if (test_config.pair_style.substr(0, 6) == "hybrid") {
|
if (test_config.pair_style.substr(0, 6) == "hybrid") {
|
||||||
argv = (char **)args_noneigh;
|
args = args_noneigh;
|
||||||
argc = sizeof(args_noneigh) / sizeof(char *);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, false);
|
LAMMPS *lmp = init_lammps(args, test_config, false);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -854,18 +840,15 @@ TEST(PairStyle, intel)
|
|||||||
if (!LAMMPS::is_installed_pkg("INTEL")) GTEST_SKIP();
|
if (!LAMMPS::is_installed_pkg("INTEL")) GTEST_SKIP();
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-pk", "intel", "0", "mode", "double", "omp",
|
"-pk", "intel", "0", "mode", "double", "omp",
|
||||||
"4", "lrt", "no", "-sf", "intel"};
|
"4", "lrt", "no", "-sf", "intel"};
|
||||||
|
|
||||||
// cannot use more than 1 thread for dpd styles due to pRNG
|
// cannot use more than 1 thread for dpd styles due to pRNG
|
||||||
if (utils::strmatch(test_config.pair_style, "^dpd")) args[12] = "1";
|
if (utils::strmatch(test_config.pair_style, "^dpd")) args[12] = "1";
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -942,13 +925,10 @@ TEST(PairStyle, opt)
|
|||||||
if (!LAMMPS::is_installed_pkg("OPT")) GTEST_SKIP();
|
if (!LAMMPS::is_installed_pkg("OPT")) GTEST_SKIP();
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf", "opt"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf", "opt"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config);
|
LAMMPS *lmp = init_lammps(args, test_config);
|
||||||
|
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
@ -1025,17 +1005,14 @@ TEST(PairStyle, single)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
// need to add this dependency
|
// need to add this dependency
|
||||||
test_config.prerequisites.emplace_back("atom", "full");
|
test_config.prerequisites.emplace_back("atom", "full");
|
||||||
|
|
||||||
// create a LAMMPS instance with standard settings to detect the number of atom types
|
// create a LAMMPS instance with standard settings to detect the number of atom types
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config);
|
LAMMPS *lmp = init_lammps(args, test_config);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
@ -1276,13 +1253,10 @@ TEST(PairStyle, extract)
|
|||||||
{
|
{
|
||||||
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP();
|
||||||
|
|
||||||
const char *args[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
char **argv = (char **)args;
|
|
||||||
int argc = sizeof(args) / sizeof(char *);
|
|
||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(argc, argv, test_config, true);
|
LAMMPS *lmp = init_lammps(args, test_config, true);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
|
|||||||
@ -71,10 +71,10 @@ protected:
|
|||||||
// clang-format off
|
// clang-format off
|
||||||
const char *args[] =
|
const char *args[] =
|
||||||
{ "LAMMPS_Fortran_test", "-l", "none", "-echo", "screen", "-nocite",
|
{ "LAMMPS_Fortran_test", "-l", "none", "-echo", "screen", "-nocite",
|
||||||
"-var", "input_dir", input_dir, "-var", "zpos", "1.5", "-var", "x", "2" };
|
"-var", "input_dir", input_dir, "-var", "zpos", "1.5", "-var", "x", "2", nullptr };
|
||||||
// clang-format on
|
// clang-format on
|
||||||
char **argv = (char **)args;
|
char **argv = (char **)args;
|
||||||
int argc = sizeof(args) / sizeof(const char *);
|
int argc = (sizeof(args) / sizeof(const char *)) - 1;
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = (LAMMPS_NS::LAMMPS *)f_lammps_with_c_args(argc, argv);
|
lmp = (LAMMPS_NS::LAMMPS *)f_lammps_with_c_args(argc, argv);
|
||||||
|
|
||||||
|
|||||||
@ -107,30 +107,20 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::string testbinary = "LAMMPSTest";
|
std::string testbinary = "LAMMPSTest";
|
||||||
std::vector<std::string> args = {"-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"-log", "none", "-echo", "screen", "-nocite"};
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
Info *info;
|
Info *info;
|
||||||
|
|
||||||
void SetUp() override
|
void SetUp() override
|
||||||
{
|
{
|
||||||
int argc = args.size() + 1;
|
LAMMPS::argv full_args = {testbinary};
|
||||||
char **argv = new char *[argc];
|
full_args.insert(full_args.end(), args.begin(), args.end());
|
||||||
argv[0] = LAMMPS_NS::utils::strdup(testbinary);
|
|
||||||
for (int i = 1; i < argc; i++) {
|
|
||||||
argv[i] = LAMMPS_NS::utils::strdup(args[i - 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
HIDE_OUTPUT([&] {
|
HIDE_OUTPUT([&] {
|
||||||
lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
lmp = new LAMMPS(full_args, MPI_COMM_WORLD);
|
||||||
info = new Info(lmp);
|
info = new Info(lmp);
|
||||||
});
|
});
|
||||||
InitSystem();
|
InitSystem();
|
||||||
|
|
||||||
for (int i = 0; i < argc; i++) {
|
|
||||||
delete[] argv[i];
|
|
||||||
argv[i] = nullptr;
|
|
||||||
}
|
|
||||||
delete[] argv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void InitSystem() {}
|
virtual void InitSystem() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user