diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 86418574ce..5016d9a644 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -72,6 +72,8 @@ src/EXTRA-COMMAND/ndx_group.* @akohlmey src/EXTRA-COMPUTE/compute_stress_mop*.* @RomainVermorel src/EXTRA-COMPUTE/compute_born_matrix.* @Bibobu @athomps src/EXTRA-FIX/fix_deform_pressure.* @jtclemm +src/EXTRA-PAIR/pair_dispersion_d3.* @soniasolomoni @arthurfl +src/EXTRA-PAIR/d3_parameters.h @soniasolomoni @arthurfl src/MISC/*_tracker.* @jtclemm src/MC/fix_gcmc.* @athomps src/MC/fix_sgcmc.* @athomps diff --git a/doc/src/Commands_bond.rst b/doc/src/Commands_bond.rst index 40532bdef7..05c505b5ee 100644 --- a/doc/src/Commands_bond.rst +++ b/doc/src/Commands_bond.rst @@ -23,6 +23,7 @@ OPT. * * :doc:`bpm/rotational ` * :doc:`bpm/spring ` + * :doc:`bpm/spring/plastic ` * :doc:`class2 (ko) ` * :doc:`fene (iko) ` * :doc:`fene/expand (o) ` diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 7c73583a4f..b53d9d6820 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -178,6 +178,7 @@ KOKKOS, o = OPENMP, t = OPT. * :doc:`ti ` * :doc:`torque/chunk ` * :doc:`vacf ` + * :doc:`vacf/chunk ` * :doc:`vcm/chunk ` * :doc:`viscosity/cos ` * :doc:`voronoi/atom ` diff --git a/doc/src/Examples.rst b/doc/src/Examples.rst index 683cbd0500..d80fc8aa4c 100644 --- a/doc/src/Examples.rst +++ b/doc/src/Examples.rst @@ -54,7 +54,7 @@ Lowercase directories +-------------+------------------------------------------------------------------+ | body | body particles, 2d system | +-------------+------------------------------------------------------------------+ -| bpm | BPM simulations of pouring elastic grains and plate impact | +| bpm | simulations of solid elastic/plastic deformation and fracture | +-------------+------------------------------------------------------------------+ | cmap | CMAP 5-body contributions to CHARMM force field | +-------------+------------------------------------------------------------------+ diff --git a/doc/src/Howto_bpm.rst b/doc/src/Howto_bpm.rst index f2aa1fc0a3..f632ee6172 100644 --- a/doc/src/Howto_bpm.rst +++ b/doc/src/Howto_bpm.rst @@ -42,12 +42,14 @@ such as those created by pouring grains using :doc:`fix pour ---------- -Currently, there are two types of bonds included in the BPM package. The +Currently, there are three types of bonds included in the BPM package. The first bond style, :doc:`bond bpm/spring `, only applies pairwise, central body forces. Point particles must have :doc:`bond atom style ` and may be thought of as nodes in a spring network. An optional multibody term can be used to adjust the network's -Poisson's ratio. Alternatively, the second bond style, :doc:`bond bpm/rotational +Poisson's ratio. The :doc:`bpm/spring/plastic ` +bond style is similar except it adds a plastic yield strain. +Alternatively, the third bond style, :doc:`bond bpm/rotational `, resolves tangential forces and torques arising with the shearing, bending, and twisting of the bond due to rotation or displacement of particles. Particles are similar to those used in the diff --git a/doc/src/bond_bpm_spring.rst b/doc/src/bond_bpm_spring.rst index 88d63c901d..69d8e2d491 100644 --- a/doc/src/bond_bpm_spring.rst +++ b/doc/src/bond_bpm_spring.rst @@ -10,7 +10,7 @@ Syntax bond_style bpm/spring keyword value attribute1 attribute2 ... -* optional keyword = *overlay/pair* or *store/local* or *smooth* or *break* or *volume/factor* +* optional keyword = *overlay/pair* or *store/local* or *smooth* or *normalize* or *break* or *volume/factor* .. parsed-literal:: @@ -141,7 +141,8 @@ calculated using bond lengths squared and the cube root in the above equation is accordingly replaced with a square root. This approximation assumes bonds are evenly distributed on a spherical surface and neglects constant prefactors which are irrelevant since only the ratio of volumes matters. This term may be -used to adjust the Poisson's ratio. +used to adjust the Poisson's ratio. See the simulation in the +examples/bpm/poissons_ratio directory for a demonstration of this effect. If a bond is broken (or created), :math:`V_{0,i}` is updated by subtracting (or adding) that bond's contribution. @@ -214,11 +215,11 @@ for an overview of LAMMPS output options. The vector or array will be floating point values that correspond to the specified attribute. -The single() function of this bond style returns 0.0 for the energy -of a bonded interaction, since energy is not conserved in these -dissipative potentials. The single() function also calculates an -extra bond quantity, the initial distance :math:`r_0`. This -extra quantity can be accessed by the +The potential energy and the single() function of this bond style return +:math:`k (r - r_0)^2 / 2` as a proxy of the energy of a bonded interaction, +ignoring any volumetric/smoothing factors or dissipative forces. The single() +function also calculates an extra bond quantity, the initial distance +:math:`r_0`. This extra quantity can be accessed by the :doc:`compute bond/local ` command as *b1*\ . Restrictions diff --git a/doc/src/bond_bpm_spring_plastic.rst b/doc/src/bond_bpm_spring_plastic.rst new file mode 100644 index 0000000000..fb0c50e9d3 --- /dev/null +++ b/doc/src/bond_bpm_spring_plastic.rst @@ -0,0 +1,183 @@ +.. index:: bond_style bpm/spring/plastic + +bond_style bpm/spring/plastic command +===================================== + +Syntax +"""""" + +.. code-block:: LAMMPS + + bond_style bpm/spring/plastic keyword value attribute1 attribute2 ... + +* optional keyword = *overlay/pair* or *store/local* or *smooth* or *normalize* or *break* + + .. parsed-literal:: + + *store/local* values = fix_ID N attributes ... + * fix_ID = ID of associated internal fix to store data + * N = prepare data for output every this many timesteps + * attributes = zero or more of the below attributes may be appended + + *id1, id2* = IDs of two atoms in the bond + *time* = the timestep the bond broke + *x, y, z* = the center of mass position of the two atoms when the bond broke (distance units) + *x/ref, y/ref, z/ref* = the initial center of mass position of the two atoms (distance units) + + *overlay/pair* value = *yes* or *no* + bonded particles will still interact with pair forces + + *smooth* value = *yes* or *no* + smooths bond forces near the breaking point + + *normalize* value = *yes* or *no* + normalizes bond forces by the reference length + + *break* value = *yes* or *no* + indicates whether bonds break during a run + +Examples +"""""""" + +.. code-block:: LAMMPS + + bond_style bpm/spring/plastic + bond_coeff 1 1.0 0.05 0.1 0.02 + + bond_style bpm/spring/plastic myfix 1000 time id1 id2 + dump 1 all local 1000 dump.broken f_myfix[1] f_myfix[2] f_myfix[3] + dump_modify 1 write_header no + +Description +""""""""""" + +.. versionadded:: TBD + +The *bpm/spring/plastic* bond style computes forces based on +deviations from the initial reference state of the two atoms and the +strain history. The reference length of the bond :math:`r_0` is stored +by each bond when it is first computed in the setup of a run. Initially, +the equilibrium length of each bond :math:`r_\mathrm{eq}` is set equal +to :math:`r_0` but can evolve. data is then preserved across run commands +and is written to :doc:`binary restart files ` such that restarting +the system will not modify either of these quantities. + +This bond style only applies central-body forces which conserve the +translational and rotational degrees of freedom of a bonded set of +particles. The force has a magnitude of + +.. math:: + + F = -k (r_\mathrm{eq} - r) w + +where :math:`k` is a stiffness, :math:`r` is the current distance between +the two particles, and :math:`w` is an optional smoothing factor discussed +below. If the bond stretches beyond a strain of :math:`\epsilon_p` in compression +or extension, it will plastically activate and :math:`r_\mathrm{eq}` will evolve +to ensure :math:`|(r-r_\mathrm{eq})/r_\mathrm{eq}|` never exceeds :math:`\epsilon_p`. +Therefore, if a bond is continually loaded in either tension or compression, the +force will initially grow elastically before plateauing. See +:ref:`(Clemmer) ` for more details on these mechanics. + +Bonds will break at a strain of :math:`\epsilon_c`. This is done by setting +the bond type to 0 such that forces are no longer computed. + +An additional damping force is applied to the bonded +particles. This forces is proportional to the difference in the +normal velocity of particles: + +.. math:: + + F_D = - \gamma w (\hat{r} \bullet \vec{v}) + +where :math:`\gamma` is the damping strength, :math:`\hat{r}` is the +radial normal vector, and :math:`\vec{v}` is the velocity difference +between the two particles. + +The smoothing factor :math:`w` is constructed such that forces smoothly +go to zero, avoiding discontinuities, as bonds approach the critical +breaking strain + +.. math:: + + w = 1.0 - \left( \frac{r - r_0}{r_0 \epsilon_c} \right)^8 . + +The following coefficients must be defined for each bond type via the +:doc:`bond_coeff ` command as in the example above, or in +the data file or restart files read by the :doc:`read_data +` or :doc:`read_restart ` commands: + +* :math:`k` (force/distance units) +* :math:`\epsilon_c` (unit less) +* :math:`\gamma` (force/velocity units) +* :math:`\epsilon_p (unit less) + +See the :doc:`bpm/spring doc page ` for information on +the *smooth*, *normalize*, *break*, *overlay/pair*, and *store/local* +keywords. + +Note that when unbroken bonds are dumped to a file via the +:doc:`dump local ` command, bonds with type 0 (broken bonds) +are not included. +The :doc:`delete_bonds ` command can also be used to +query the status of broken bonds or permanently delete them, e.g.: + +.. code-block:: LAMMPS + + delete_bonds all stats + delete_bonds all bond 0 remove + +---------- + +Restart and other info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +This bond style writes the reference state and plastic history of each +bond to :doc:`binary restart files `. Loading a restart +file will properly restore bonds. However, the reference state is NOT +written to data files. Therefore reading a data file will not +restore bonds and will cause their reference states to be redefined. + +The potential energy and the single() function of this bond style returns zero. +The single() function also calculates two extra bond quantities, the initial +distance :math:`r_0` and the current equilbrium length :math:`r_eq`. These extra +quantities can be accessed by the :doc:`compute bond/local ` +command as *b1* and *b2*, respectively. + +Restrictions +"""""""""""" + +This bond style is part of the BPM package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. + +By default if pair interactions between bonded atoms are to be disabled, +this bond style requires setting + +.. code-block:: LAMMPS + + special_bonds lj 0 1 1 coul 1 1 1 + +and :doc:`newton ` must be set to bond off. If the *overlay/pair* +keyword is set to *yes*, this bond style alternatively requires setting + +.. code-block:: LAMMPS + + special_bonds lj/coul 1 1 1 + +Related commands +"""""""""""""""" + +:doc:`bond_coeff `, :doc:`bond bpm/spring ` + +Default +""""""" + +The option defaults are *overlay/pair* = *no*, *smooth* = *yes*, *normalize* = *no*, and *break* = *yes* + +---------- + +.. _plastic-Clemmer: + +**(Clemmer)** Clemmer and Lechman, Powder Technology (2025). + diff --git a/doc/src/bond_style.rst b/doc/src/bond_style.rst index 590f7c8cba..a30fb9e812 100644 --- a/doc/src/bond_style.rst +++ b/doc/src/bond_style.rst @@ -10,7 +10,7 @@ Syntax bond_style style args -* style = *none* or *zero* or *hybrid* or *bpm/rotational* or *bpm/spring* or *class2* or *fene* or *fene/expand* or *fene/nm* or *gaussian* or *gromos* or *harmonic* or *harmonic/restrain* *harmonic/shift* or *harmonic/shift/cut* or *lepton* or *morse* or *nonlinear* or *oxdna/fene* or *oxdena2/fene* or *oxrna2/fene* or *quartic* or *special* or *table* +* style = *none* or *zero* or *hybrid* or *bpm/rotational* or *bpm/spring* or *bpm/spring/plastic* or *class2* or *fene* or *fene/expand* or *fene/nm* or *gaussian* or *gromos* or *harmonic* or *harmonic/restrain* *harmonic/shift* or *harmonic/shift/cut* or *lepton* or *morse* or *nonlinear* or *oxdna/fene* or *oxdena2/fene* or *oxrna2/fene* or *quartic* or *special* or *table* * args = none for any style except *hybrid* @@ -86,6 +86,7 @@ accelerated styles exist. * :doc:`bpm/rotational ` - breakable bond with forces and torques based on deviation from reference state * :doc:`bpm/spring ` - breakable bond with forces based on deviation from reference length +* :doc:`bpm/spring/plastic ` - a similar breakable bond with plastic yield * :doc:`class2 ` - COMPASS (class 2) bond * :doc:`fene ` - FENE (finite-extensible non-linear elastic) bond * :doc:`fene/expand ` - FENE bonds with variable size particles diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 9a8a1734fb..323f3ed3e5 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -356,6 +356,7 @@ The individual style names on the :doc:`Commands compute ` pag * :doc:`ti ` - thermodynamic integration free energy values * :doc:`torque/chunk ` - torque applied on each chunk * :doc:`vacf ` - velocity auto-correlation function of group of atoms +* :doc:`vacf/chunk ` - velocity auto-correlation for the center of mass velocities of chunks of atoms * :doc:`vcm/chunk ` - velocity of center-of-mass for each chunk * :doc:`viscosity/cos ` - velocity profile under cosine-shaped acceleration * :doc:`voronoi/atom ` - Voronoi volume and neighbors for each atom diff --git a/doc/src/compute_msd.rst b/doc/src/compute_msd.rst index bc16a3de6f..8f2726e8a3 100644 --- a/doc/src/compute_msd.rst +++ b/doc/src/compute_msd.rst @@ -116,7 +116,9 @@ Compute *msd* cannot be used with a dynamic group. Related commands """""""""""""""" -:doc:`compute msd/nongauss `, :doc:`compute displace_atom `, :doc:`fix store/state `, :doc:`compute msd/chunk ` +:doc:`compute msd/nongauss `, +:doc:`compute displace_atom `, :doc:`fix store/state `, +:doc:`compute msd/chunk ` Default """"""" diff --git a/doc/src/compute_msd_chunk.rst b/doc/src/compute_msd_chunk.rst index db6e1e6fc2..863be4db35 100644 --- a/doc/src/compute_msd_chunk.rst +++ b/doc/src/compute_msd_chunk.rst @@ -131,7 +131,7 @@ Restrictions Related commands """""""""""""""" -:doc:`compute msd ` +:doc:`compute msd `, :doc:`compute vacf/chunk ` Default """"""" diff --git a/doc/src/compute_reduce.rst b/doc/src/compute_reduce.rst index e5c99a478f..d9aa7e1821 100644 --- a/doc/src/compute_reduce.rst +++ b/doc/src/compute_reduce.rst @@ -87,7 +87,7 @@ values in the vector. The *sumsq* option sums the square of the values in the vector into a global total. The *avesq* setting does the same as *sumsq*, then divides the sum of squares by the number of values. The last two options can be useful for calculating the -variance of some quantity (e.g., variance = sumsq :math:`-` ave\ +variance of some quantity (e.g., variance = *avesq* :math:`-` *ave*\ :math:`^2`). The *sumabs* option sums the absolute values in the vector into a global total. The *aveabs* setting does the same as *sumabs*, then divides the sum of absolute values by the number of diff --git a/doc/src/compute_vacf.rst b/doc/src/compute_vacf.rst index 704e597e18..72f675360c 100644 --- a/doc/src/compute_vacf.rst +++ b/doc/src/compute_vacf.rst @@ -76,7 +76,7 @@ Restrictions Related commands """""""""""""""" -:doc:`compute msd ` +:doc:`compute msd `, :doc:`compute vacf/chunk ` Default """"""" diff --git a/doc/src/compute_vacf_chunk.rst b/doc/src/compute_vacf_chunk.rst new file mode 100644 index 0000000000..f9d22e22a1 --- /dev/null +++ b/doc/src/compute_vacf_chunk.rst @@ -0,0 +1,124 @@ +.. index:: compute vacf/chunk + +compute vacf/chunk command +========================== + +Syntax +"""""" + +.. code-block:: LAMMPS + + compute ID group-ID vacf/chunk chunkID + +* ID, group-ID are documented in :doc:`compute ` command +* vacf/chunk = style name of this compute command +* chunkID = ID of :doc:`compute chunk/atom ` command + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute 1 all vacf/chunk molchunk + +Description +""""""""""" + +.. versionadded:: TBD + +Define a computation that calculates the velocity auto-correlation +function (VACF) for multiple chunks of atoms. + +In LAMMPS, chunks are collections of atoms defined by a :doc:`compute +chunk/atom ` command, which assigns each atom to a +single chunk (or no chunk). The ID for this command is specified as +chunkID. For example, a single chunk could be the atoms in a molecule +or atoms in a spatial bin. See the :doc:`compute chunk/atom +` and :doc:`Howto chunk ` doc pages for +details of how chunks can be defined and examples of how they can be +used to measure properties of a system. + +Four quantities are calculated by this compute for each chunk. The +first 3 quantities are the product of the initial center of mass +velocity (VCM) for each chunk in *x*, *y*, and *z* direction with the +current center of mass velocity in the same direction. The fourth +component is the total VACF, i.e. the sum of the three components. + +Note that only atoms in the specified group contribute to the +calculation. The :doc:`compute chunk/atom ` command +defines its own group; atoms will have a chunk ID = 0 if they are not in +that group, signifying they are not assigned to a chunk, and will thus +also not contribute to this calculation. You can specify the "all" +group for this command if you simply want to include atoms with non-zero +chunk IDs. + +The integral of the VACF versus time is proportional to the diffusion +coefficient of the diffusing chunks. + +.. note:: + + The number of chunks *Nchunk* calculated by the + :doc:`compute chunk/atom ` command must remain constant + each time this compute is invoked, so that the dot product for each chunk + from its original position can be computed consistently. If *Nchunk* + does not remain constant, an error will be generated. If needed, you + can enforce a constant *Nchunk* by using the *nchunk once* or *ids once* + options when specifying the :doc:`compute chunk/atom ` + command. + +.. note:: + + This compute stores the original center-of-mass velocities of each + chunk. When a VACF is calculated on a later timestep, it is assumed + that the same atoms are assigned to the same chunk ID. However + LAMMPS has no simple way to ensure this is the case, though you can + use the *ids once* option when specifying the :doc:`compute + chunk/atom ` command. Note that if this is not + the case, the VACF calculation does not have a sensible meaning. + +.. note:: + + If you want the quantities calculated by this compute to be + continuous when running from a :doc:`restart file `, then + you should use the same ID for this compute, as in the original run. + This is so that the fix this compute creates to store per-chunk + quantities will also have the same ID, and thus be initialized + correctly with chunk reference positions from the restart file. + +The simplest way to output the results of the compute vacf/chunk +calculation to a file is to use the :doc:`fix ave/time ` +command, for example: + +.. code-block:: LAMMPS + + compute cc1 all chunk/atom molecule + compute myChunk all vacf/chunk cc1 + fix 1 all ave/time 100 1 100 c_myChunk[*] file tmp.out mode vector + +Output info +""""""""""" + +This compute calculates a global array where the number of rows = the +number of chunks *Nchunk* as calculated by the specified :doc:`compute +chunk/atom ` command. The number of columns = 4 for +the *x*, *y*, *z*, component and the total VACF. These values can be +accessed by any command that uses global array values from a compute as +input. See the :doc:`Howto output ` page for an overview +of LAMMPS output options. + +The array values are "intensive". The array values will be in +distance\ :math:`^2` divided by time\ :math:`^2` :doc:`units `. + +Restrictions +"""""""""""" + none + +Related commands +"""""""""""""""" + +:doc:`compute vacf `, :doc:`compute msd/chunk ` + +Default +""""""" + +none diff --git a/doc/src/fix_move.rst b/doc/src/fix_move.rst index 3fde5f0861..bce6f7046e 100644 --- a/doc/src/fix_move.rst +++ b/doc/src/fix_move.rst @@ -35,11 +35,12 @@ Syntax v_vx,v_vy,v_vz = 3 variable names that calculate x,y,z velocity as function of time, any component can be specified as NULL * zero or more keyword/value pairs may be appended -* keyword = *units* +* keyword = *units* or *update* .. parsed-literal:: *units* value = *box* or *lattice* + *update* value = *dipole* Examples """""""" @@ -49,7 +50,7 @@ Examples fix 1 boundary move wiggle 3.0 0.0 0.0 1.0 units box fix 2 boundary move rotate 0.0 0.0 0.0 0.0 0.0 1.0 5.0 fix 2 boundary move variable v_myx v_myy NULL v_VX v_VY NULL - fix 3 boundary move transrot 0.1 0.1 0.0 0.0 0.0 0.0 0.0 0.0 1.0 5.0 units box + fix 3 boundary move transrot 0.1 0.1 0.0 0.0 0.0 0.0 0.0 0.0 1.0 5.0 units box update dipole Description """"""""""" @@ -217,6 +218,15 @@ been previously used to define the lattice spacing. Each of these 3 quantities may be dependent on the x,y,z dimension, since the lattice spacings can be different in x,y,z. +.. versionadded:: TBD + +If the *update dipole* keyword/value pair is used together with the +*rotate* or *transrot* style, then the orientation of the dipole moment +of each particle is also updated appropriately to correspond with the rotation. +This option should be used for models where a dipole moment is assigned to +finite-size particles, e.g. spheroids via use of the :doc:`atom_style hybrid +sphere dipole ` command. + ---------- Restart, fix_modify, output, run start/stop, minimize info diff --git a/doc/src/fix_press_langevin.rst b/doc/src/fix_press_langevin.rst index 8438d72192..02437bd731 100644 --- a/doc/src/fix_press_langevin.rst +++ b/doc/src/fix_press_langevin.rst @@ -54,7 +54,7 @@ the Langevin equation such as: f_P = & \frac{N k_B T_{target}}{V} + \frac{1}{V d}\sum_{i=1}^{N} \vec r_i \cdot \vec f_i - P_{target} \\ Q\ddot{L} + \alpha{}\dot{L} = & f_P + \beta(t)\\ - L^{n+1} = & L^{n} + bdt\dot{L}^{n} \frac{bdt^{2}}{2Q} \\ + L^{n+1} = & L^{n} + bdt\dot{L}^{n} + \frac{bdt^{2}}{2Q} f^{n}_{P} + \frac{bdt}{2Q} \beta^{n+1} \\ \dot{L}^{n+1} = & \alpha\dot{L}^{n} + \frac{dt}{2Q}\left(a f^{n}_{P} + f^{n+1}_{P}\right) + \frac{b}{Q}\beta^{n+1} \\ a = & \frac{1-\frac{\alpha{}dt}{2Q}}{1+\frac{\alpha{}dt}{2Q}} \\ b = & \frac{1}{1+\frac{\alpha{}dt}{2Q}} \\ diff --git a/doc/src/pair_bpm_spring.rst b/doc/src/pair_bpm_spring.rst index 53375d86b8..19ba4cdbec 100644 --- a/doc/src/pair_bpm_spring.rst +++ b/doc/src/pair_bpm_spring.rst @@ -117,6 +117,10 @@ This pair style can only be used via the *pair* keyword of the :doc:`run_style respa ` command. It does not support the *inner*, *middle*, *outer* keywords. +The potential energy and the single() function of this pair style returns +:math:`k (r - r_c)^2 / 2 + k_a (r - r_c)^4 / 4` for a proxy +of the energy of a pair interaction, ignoring any smoothing or dissipative forces. + ---------- Restrictions diff --git a/doc/src/pair_dispersion_d3.rst b/doc/src/pair_dispersion_d3.rst index d6a548e01f..a9249299d0 100644 --- a/doc/src/pair_dispersion_d3.rst +++ b/doc/src/pair_dispersion_d3.rst @@ -10,7 +10,7 @@ Syntax pair_style dispersion/d3 damping functional cutoff cn_cutoff -* damping = damping function: *zero*, *zerom*, *bj*, or *bjm* +* damping = damping function: *original*, *zerom*, *bj*, or *bjm* * functional = XC functional form: *pbe*, *pbe0*, ... (see list below) * cutoff = global cutoff (distance units) * cn_cutoff = coordination number cutoff (distance units) @@ -20,7 +20,7 @@ Examples .. code-block:: LAMMPS - pair_style dispersion/d3 zero pbe 30.0 20.0 + pair_style dispersion/d3 original pbe 30.0 20.0 pair_coeff * * C Description @@ -55,9 +55,16 @@ factor, and :math:`f_n^{damp}` are damping functions. contributions, according to, for example, the Axilrod-Teller-Muto model. -Available damping functions are the original "zero-damping" -:ref:`(Grimme1) `, Becke-Johnson damping :ref:`(Grimme2) -`, and their revised forms :ref:`(Sherrill) `. +.. versionchanged:: TBD + + renamed *zero* keyword to *original* to avoid conflicts with + :doc:`pair style zero ` when used as :doc:`hybrid + sub-style `. + +Available damping functions are the original "zero-damping" (*original*) +:ref:`(Grimme1) `, Becke-Johnson damping (*bj*) :ref:`(Grimme2) +`, and their revised forms (*zerom* and *bjm*, respectively) +:ref:`(Sherrill) `. Available XC functional scaling factors are listed in the table below, and depend on the selected damping function. @@ -67,7 +74,7 @@ and depend on the selected damping function. +==================+================================================================================+ | | | | slater-dirac-exchange, b-lyp, b-p, b97-d, revpbe, pbe, pbesol, rpw86-pbe, | | | | | rpbe, tpss, b3-lyp, pbe0, hse06, revpbe38, pw6b95, tpss0, b2-plyp, pwpb95, | -| | zero | | b2gp-plyp, ptpss, hf, mpwlyp, bpbe, bh-lyp, tpssh, pwb6k, b1b95, bop, o-lyp, | +| | original | | b2gp-plyp, ptpss, hf, mpwlyp, bpbe, bh-lyp, tpssh, pwb6k, b1b95, bop, o-lyp, | | | | | o-pbe, ssb, revssb, otpss, b3pw91, revpbe0, pbe38, mpw1b95, mpwb1k, bmk, | | | | | cam-b3lyp, lc-wpbe, m05, m052x, m06l, m06, m062x, m06hf, hcth120 | +------------------+--------------------------------------------------------------------------------+ @@ -122,6 +129,8 @@ Style *dispersion/d3* is part of the EXTRA-PAIR package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +The compiled in parameters require the use of :doc:`metal units `. + It is currently *not* possible to calculate three-body dispersion contributions according to, for example, the Axilrod-Teller-Muto model. diff --git a/doc/src/pair_granular.rst b/doc/src/pair_granular.rst index f54079daf1..4ae59a587f 100644 --- a/doc/src/pair_granular.rst +++ b/doc/src/pair_granular.rst @@ -29,6 +29,9 @@ Examples pair_style granular pair_coeff * * hertz/material 1e8 0.3 0.3 tangential mindlin_rescale NULL 1.0 0.4 damping tsuji + pair_style granular + pair_coeff * * hertz/material 1e8 0.3 0.3 tangential mindlin_rescale NULL 1.0 0.4 damping coeff_restitution synchronized_verlet + pair_style granular pair_coeff 1 * jkr 1000.0 500.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall pair_coeff 2 2 hertz 200.0 100.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall @@ -103,11 +106,12 @@ on particle *i* due to contact with particle *j* is given by: \mathbf{F}_{ne, Hooke} = k_n \delta_{ij} \mathbf{n} Where :math:`\delta_{ij} = R_i + R_j - \|\mathbf{r}_{ij}\|` is the particle -overlap, :math:`R_i, R_j` are the particle radii, :math:`\mathbf{r}_{ij} = \mathbf{r}_i - \mathbf{r}_j` is the vector separating the two -particle centers (note the i-j ordering so that :math:`\mathbf{F}_{ne}` is -positive for repulsion), and :math:`\mathbf{n} = \frac{\mathbf{r}_{ij}}{\|\mathbf{r}_{ij}\|}`. Therefore, -for *hooke*, the units of the spring constant :math:`k_n` are -*force*\ /\ *distance*, or equivalently *mass*\ /*time\^2*. +overlap, :math:`R_i, R_j` are the particle radii, :math:`\mathbf{r}_{ij} = +\mathbf{r}_i - \mathbf{r}_j` is the vector separating the two particle centers +(note the i-j ordering so that :math:`\mathbf{F}_{ne}` is positive for repulsion), +and :math:`\mathbf{n} = \frac{\mathbf{r}_{ij}}{\|\mathbf{r}_{ij}\|}`. Therefore, +for *hooke*, the units of the spring constant :math:`k_n` are *force*\ /\ +*distance*, or equivalently *mass*\ /*time\^2*. For the *hertz* model, the normal component of force is given by: @@ -313,7 +317,8 @@ following general form: \mathbf{F}_{n,damp} = -\eta_n \mathbf{v}_{n,rel} -Here, :math:`\mathbf{v}_{n,rel} = (\mathbf{v}_j - \mathbf{v}_i) \cdot \mathbf{n}\ \mathbf{n}` is the component of relative velocity along +Here, :math:`\mathbf{v}_{n,rel} = (\mathbf{v}_j - \mathbf{v}_i) \cdot +\mathbf{n}\ \mathbf{n}` is the component of relative velocity along :math:`\mathbf{n}`. The optional *damping* keyword to the *pair_coeff* command followed by @@ -488,7 +493,8 @@ the normal force: F_{n0} = \|\mathbf{F}_n\| For cohesive models such as *jkr* and *dmt*, the critical force is -adjusted so that the critical tangential force approaches :math:`\mu_t F_{pulloff}`, see :ref:`Marshall `, equation 43, and +adjusted so that the critical tangential force approaches +:math:`\mu_t F_{pulloff}`, see :ref:`Marshall `, equation 43, and :ref:`Thornton `. For both models, :math:`F_{n0}` takes the form: @@ -578,7 +584,6 @@ of :math:`a`, the radius of the contact region. The tangential force is given by \mathbf{F}_t = -\min(\mu_t F_{n0}, \|-k_t a \mathbf{\xi} + \mathbf{F}_\mathrm{t,damp}\|) \mathbf{t} - Here, :math:`a` is the radius of the contact region, given by :math:`a =\sqrt{R\delta}` for all normal contact models, except for *jkr*, where it is given implicitly by :math:`\delta = a^2/R - 2\sqrt{\pi \gamma a/E}`, see @@ -694,9 +699,11 @@ the tangential force: \mathbf{F}_{roll,0} = k_{roll} \mathbf{\xi}_{roll} - \gamma_{roll} \mathbf{v}_{roll} -Here, :math:`\mathbf{v}_{roll} = -R(\boldsymbol{\Omega}_i - \boldsymbol{\Omega}_j) \times \mathbf{n}` is the relative rolling -velocity, as given in :ref:`Wang et al ` and -:ref:`Luding `. This differs from the expressions given by :ref:`Kuhn and Bagi ` and used in :ref:`Marshall `; see :ref:`Wang et al ` for details. The rolling displacement is given by: +Here, :math:`\mathbf{v}_{roll} = -R(\boldsymbol{\Omega}_i - \boldsymbol{\Omega}_j) +\times \mathbf{n}` is the relative rolling velocity, as given in +:ref:`Wang et al ` and :ref:`Luding `. This differs from the +expressions given by :ref:`Kuhn and Bagi ` and used in :ref:`Marshall `; +see :ref:`Wang et al ` for details. The rolling displacement is given by: .. math:: @@ -753,9 +760,10 @@ the most straightforward treatment: \tau_{twist,0} = -k_{twist}\xi_{twist} - \gamma_{twist}\Omega_{twist} -Here :math:`\xi_{twist} = \int_{t_0}^t \Omega_{twist} (\tau) \mathrm{d}\tau` is the twisting angular displacement, and -:math:`\Omega_{twist} = (\mathbf{\Omega}_i - \mathbf{\Omega}_j) \cdot \mathbf{n}` is the relative twisting angular velocity. The torque -is then truncated according to: +Here :math:`\xi_{twist} = \int_{t_0}^t \Omega_{twist} (\tau) \mathrm{d}\tau` is +the twisting angular displacement, and +:math:`\Omega_{twist} = (\mathbf{\Omega}_i - \mathbf{\Omega}_j) \cdot \mathbf{n}` +is the relative twisting angular velocity. The torque is then truncated according to: .. math:: @@ -809,6 +817,19 @@ attractive force. This keyword cannot be used with the JKR or DMT models. ---------- +The standard velocity-Verlet integration scheme's half-step staggering of +position and velocity can introduce inaccuracies in frictional tangential +force calculations, resulting in unphysical kinematics in certain systems. +These effects are particularly pronounced in polydisperse frictional flows +characterized by large-to-small size ratios exceeding three. The +*synchronized_verlet* flag implements an alternate Velocity-Verlet integration +scheme, as detailed in :ref:`Vyas et al `, that synchronizes position +and velocity updates for force evaluation. By refining tangential force +calculations, the *synchronized_verlet* method ensures physically consistent +results without significantly impacting computational cost. + +---------- + The optional *heat* keyword enables heat conduction. The options currently supported are: @@ -923,8 +944,9 @@ or E_{eff,ij} = \frac{E_{ij}}{2(1-\nu_{ij}^2)} -These pair styles write their information to :doc:`binary restart files `, so a pair_style command does not need to be -specified in an input script that reads a restart file. +These pair styles write their information to :doc:`binary restart files `, +so a pair_style command does not need to be specified in an input script that reads +a restart file. These pair styles can only be used via the *pair* keyword of the :doc:`run_style respa ` command. They do not support the @@ -954,8 +976,8 @@ maximum number of extra quantities in a model but the order of quantities is determined by each model's specific set of sub-models. Any unused quantities are zeroed. -These extra quantities can be accessed by the :doc:`compute pair/local ` command, as *p1*, *p2*, ..., -*p12*\ . +These extra quantities can be accessed by the :doc:`compute pair/local +` command, as *p1*, *p2*, ..., *p12*\ . ---------- @@ -1118,3 +1140,8 @@ I. Assembling process, geometry, and contact networks. Phys. Rev. E, 76, 061302. Heat conduction in granular materials. AIChE Journal, 47(5), 1052-1059. +.. _Vyas2025: + +**(Vyas et al, 2025)** Vyas D. R., Ottino J. M., Lueptow R. M., & Umbanhowar P. B. (2025). +Improved Velocity-Verlet Algorithm for the Discrete Element Method. +Computer Physics Communications, 109524. diff --git a/doc/src/region.rst b/doc/src/region.rst index 6d4bbaca4b..dbe14360ff 100644 --- a/doc/src/region.rst +++ b/doc/src/region.rst @@ -40,7 +40,7 @@ Syntax *plane* args = px py pz nx ny nz px,py,pz = point on the plane (distance units) nx,ny,nz = direction normal to plane (distance units) - px,py,pz can be a variable (see below) + px,py,pz,nx,ny,nz can be a variable (see below) *prism* args = xlo xhi ylo yhi zlo zhi xy xz yz xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism (distance units) xy = distance to tilt y in x direction (distance units) @@ -211,9 +211,11 @@ equal-style :doc:`variable `. Likewise, for style *sphere* and *ellipsoid* the x-, y-, and z- coordinates of the center of the sphere/ellipsoid can be specified as an equal-style variable. And for style *cylinder* the two center positions c1 and c2 for the location of -the cylinder axes can be specified as a equal-style variable. For style -*cone* and *prism* all properties can be defined via equal-style variables. For -style *plane* the point can be defined via equal-style variables. +the cylinder axes can be specified as a equal-style variable. For styles +*block*, *cone*, *prism*, and *plane* all properties can be defined via +equal-style variables. For style *plane*, the components of the direction +vector normal to plane should be either all constants or all defined by +equal-style variables. If the value is a variable, it should be specified as v_name, where name is the variable name. In this case, the variable will be @@ -226,6 +228,21 @@ keywords for the simulation box parameters and timestep and elapsed time. Thus it is easy to specify a time-dependent radius or have a time dependent position of the sphere or cylinder region. +.. note:: + + Whenever a region property, such as a coordinate or an upper/lower + bound, is defined via an equal-style variable, the variable should + not cause any of the region boundaries to move + too far within a single timestep. Otherwise, bad dynamics will occur. + "Too far" means a small fraction of the approximate distance of + closest approach between two particles, which for the case of Lennard-Jones + particles is the distance of the energy minimum while for granular + particles it is their diameter. An example is a rapidly varying direction + vector in region plane since a small change in the normal to plane will + shift the region surface far away from the region point by a large displacement. + Similarly, bad dynamics can also occur for fast changing variables employed + in the move/rotate options. + See the :doc:`Howto tricilinc ` page for a geometric description of triclinic boxes, as defined by LAMMPS, and how to transform these parameters to and from other commonly used diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index f94d528cfe..43067f76f9 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -2074,6 +2074,7 @@ lubricateU lucas lucy Luding +Lueptow Luijten lunit Lunkad @@ -2800,6 +2801,7 @@ orthorhombic Ortner os oso +Ottino Otype Ouadfel Ouldridge @@ -3934,6 +3936,7 @@ uloop ulsph Ultrafast uMech +Umbanhowar umin Umin un diff --git a/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1 b/examples/ASPHERE/flat_membrane/log.3Mar25.flat_membrane.g++.1 similarity index 66% rename from examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1 rename to examples/ASPHERE/flat_membrane/log.3Mar25.flat_membrane.g++.1 index 750aa5328c..5c051bb725 100644 --- a/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1 +++ b/examples/ASPHERE/flat_membrane/log.3Mar25.flat_membrane.g++.1 @@ -1,4 +1,5 @@ -LAMMPS (15 Sep 2022) +LAMMPS (4 Feb 2025 - Development - patch_4Feb2025-106-g5d02e140d4) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99) using 1 OpenMP thread(s) per MPI task # flat membrane demo variable r0 equal 0.97 @@ -46,7 +47,7 @@ set type 1 mass 1.0 Setting atom values ... 1920 settings made for mass -set type 1 shape 1 1 1 +set type 1 shape 1 0.99 0.99 Setting atom values ... 1920 settings made for shape @@ -99,7 +100,7 @@ CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update: every = 1 steps, delay = 10 steps, check = yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 3.6 ghost atom cutoff = 3.6 @@ -113,47 +114,47 @@ Neighbor list info ... Per MPI rank memory allocation (min/avg/max) = 5.024 | 5.024 | 5.024 Mbytes Step Temp Press Pxx Pyy 0 0.23 -0.0073508785 -0.012283389 -0.012234574 - 200 0.20903886 -0.0010605951 -0.0011885957 -0.00198842 - 400 0.21898026 -0.00069250685 -0.0013217981 -0.00073225707 - 600 0.22689361 -0.00057919328 -0.00076880503 -0.0010242283 - 800 0.22983221 -0.00032145682 -0.00051928834 -0.00059337525 - 1000 0.23819392 -0.00027969126 -0.00088082301 -5.2666567e-05 - 1200 0.22053795 -0.00029571329 -0.0004446455 -0.00035529929 - 1400 0.22285021 -0.0002690371 -0.00068896571 -3.6258442e-05 - 1600 0.22687044 2.8599875e-05 -0.00032651798 0.0004056081 - 1800 0.23356905 -2.28742e-05 -0.00027073251 0.00025081131 - 2000 0.22499821 8.8230586e-06 -7.5750159e-05 0.0001988705 - 2200 0.23162995 -9.026855e-05 -0.00025832535 5.4904927e-05 - 2400 0.22920223 0.00016700455 3.5283125e-05 0.00034955857 - 2600 0.2260299 5.3095557e-05 0.00025691786 0.00013353467 - 2800 0.2296401 0.00043234854 0.00058344966 0.00063645193 - 3000 0.22564577 2.6423111e-05 8.9918406e-05 0.00022146229 -Loop time of 6.76659 on 1 procs for 3000 steps with 1920 atoms + 200 0.20906916 -0.0010610794 -0.0011895359 -0.00198968 + 400 0.21907691 -0.00068750897 -0.0013175111 -0.00072355516 + 600 0.22648739 -0.00057306694 -0.000831971 -0.00096776143 + 800 0.2368957 -0.00028517767 -0.00050638195 -0.00052670236 + 1000 0.22735705 -0.00032638104 -0.00037959812 -0.00071879257 + 1200 0.22910882 -0.00019457758 -0.00024451315 -0.00027807764 + 1400 0.22754022 -0.00033048317 -0.00010053263 -0.00075173132 + 1600 0.22503496 -7.593954e-05 5.2989168e-05 -0.00022521685 + 1800 0.22673577 -0.00017917699 1.0176667e-05 -0.00047893102 + 2000 0.22480858 9.318318e-05 0.00031024343 1.2738253e-05 + 2200 0.22387294 -6.9083174e-05 -4.6170865e-05 4.6682009e-05 + 2400 0.22686231 0.00022776785 0.00028204391 0.00030116273 + 2600 0.23055637 8.2778175e-05 0.00027137529 4.2254076e-05 + 2800 0.23126717 0.00044863024 0.00071654709 0.00057652233 + 3000 0.22234736 0.00031577792 0.00051797227 0.00039087282 +Loop time of 7.17991 on 1 procs for 3000 steps with 1920 atoms -Performance: 383058.431 tau/day, 443.355 timesteps/s -99.8% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 361007.348 tau/day, 417.833 timesteps/s, 802.239 katom-step/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 5.7968 | 5.7968 | 5.7968 | 0.0 | 85.67 -Neigh | 0.086077 | 0.086077 | 0.086077 | 0.0 | 1.27 -Comm | 0.034761 | 0.034761 | 0.034761 | 0.0 | 0.51 -Output | 0.00038014 | 0.00038014 | 0.00038014 | 0.0 | 0.01 -Modify | 0.8268 | 0.8268 | 0.8268 | 0.0 | 12.22 -Other | | 0.02181 | | | 0.32 +Pair | 6.2257 | 6.2257 | 6.2257 | 0.0 | 86.71 +Neigh | 0.11392 | 0.11392 | 0.11392 | 0.0 | 1.59 +Comm | 0.036614 | 0.036614 | 0.036614 | 0.0 | 0.51 +Output | 0.00052672 | 0.00052672 | 0.00052672 | 0.0 | 0.01 +Modify | 0.78577 | 0.78577 | 0.78577 | 0.0 | 10.94 +Other | | 0.01743 | | | 0.24 Nlocal: 1920 ave 1920 max 1920 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 772 ave 772 max 772 min +Nghost: 771 ave 771 max 771 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 46804 ave 46804 max 46804 min +Neighs: 46750 ave 46750 max 46750 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 46804 -Ave neighs/atom = 24.377083 -Neighbor list builds = 99 +Total # of neighbors = 46750 +Ave neighs/atom = 24.348958 +Neighbor list builds = 98 Dangerous builds = 0 -Total wall time: 0:00:06 +Total wall time: 0:00:07 diff --git a/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4 b/examples/ASPHERE/flat_membrane/log.3Mar25.flat_membrane.g++.4 similarity index 65% rename from examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4 rename to examples/ASPHERE/flat_membrane/log.3Mar25.flat_membrane.g++.4 index 7bbe99b58b..b695da500b 100644 --- a/examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4 +++ b/examples/ASPHERE/flat_membrane/log.3Mar25.flat_membrane.g++.4 @@ -1,4 +1,5 @@ -LAMMPS (15 Sep 2022) +LAMMPS (4 Feb 2025 - Development - patch_4Feb2025-106-g5d02e140d4) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99) using 1 OpenMP thread(s) per MPI task # flat membrane demo variable r0 equal 0.97 @@ -46,7 +47,7 @@ set type 1 mass 1.0 Setting atom values ... 1920 settings made for mass -set type 1 shape 1 1 1 +set type 1 shape 1 0.99 0.99 Setting atom values ... 1920 settings made for shape @@ -99,7 +100,7 @@ CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule Neighbor list info ... - update: every = 1 steps, delay = 10 steps, check = yes + update: every = 1 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 3.6 ghost atom cutoff = 3.6 @@ -113,47 +114,47 @@ Neighbor list info ... Per MPI rank memory allocation (min/avg/max) = 4.182 | 4.794 | 5.472 Mbytes Step Temp Press Pxx Pyy 0 0.23 -0.0073508785 -0.012283389 -0.012234574 - 200 0.20647718 -0.0012368074 -0.0021167303 -0.0015343502 - 400 0.21648371 -0.00085695085 -0.0015627331 -0.0011177093 - 600 0.22929515 -0.00050218657 -0.0008332 -0.00062622609 - 800 0.22062664 -0.00049172378 -0.000611884 -0.00075089294 - 1000 0.22422425 -0.00039405068 -0.00037600355 -0.00070786572 - 1200 0.2298767 -0.00025939082 -0.00021616578 -0.00053125505 - 1400 0.2335927 5.8028332e-05 0.00017530192 -3.1675138e-05 - 1600 0.22884878 -0.0001733902 -0.0008056431 0.00014276754 - 1800 0.22813498 0.00019873459 0.00051040124 5.8860949e-05 - 2000 0.2273166 -3.3595127e-05 0.0001705632 -0.00026498213 - 2200 0.2251643 -2.4517311e-05 -4.0618888e-05 1.066658e-05 - 2400 0.22460629 -4.5661259e-05 -0.00019144039 -1.6649099e-05 - 2600 0.23085675 0.00014029405 0.00017983536 0.00017895001 - 2800 0.22364591 4.2999164e-05 -0.00011000466 0.00024363243 - 3000 0.23421357 0.00023505702 0.00020752013 0.00053567111 -Loop time of 4.68577 on 4 procs for 3000 steps with 1920 atoms + 200 0.21866566 -0.0011213114 -0.0017540296 -0.0017008786 + 400 0.22409469 -0.00055137604 -0.00050366017 -0.0012846672 + 600 0.21623646 -0.0004808564 -0.00063496522 -0.00071617302 + 800 0.22248339 -0.00066333806 -0.00093812145 -0.00099410261 + 1000 0.22367907 -0.0003439459 -0.00076259578 -0.00013354375 + 1200 0.23276206 8.5764334e-06 -0.00036165178 0.00038543803 + 1400 0.23129049 -5.1997966e-06 -0.00040514787 0.00017093646 + 1600 0.22074564 -0.0001604642 -0.00053959031 9.0463391e-05 + 1800 0.2276062 -0.00015655254 -0.00042925633 5.4938379e-05 + 2000 0.22469391 -3.6198836e-05 -1.8538296e-06 -0.00010464749 + 2200 0.22737515 -1.8967356e-05 0.0001341006 -0.00022739894 + 2400 0.22607533 0.00014650382 -2.4871789e-05 0.00058296255 + 2600 0.24044743 0.00045066449 0.00049153595 0.00078042437 + 2800 0.23346628 0.00017994019 -5.0897724e-05 0.00046011801 + 3000 0.22427206 0.00040437022 0.00049580531 0.00046259202 +Loop time of 5.04539 on 4 procs for 3000 steps with 1920 atoms -Performance: 553164.568 tau/day, 640.237 timesteps/s -95.6% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 513736.789 tau/day, 594.603 timesteps/s, 1.142 Matom-step/s +99.0% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.00015072 | 1.6029 | 3.8573 | 131.7 | 34.21 -Neigh | 0.00055747 | 0.025423 | 0.065858 | 17.0 | 0.54 -Comm | 0.0052259 | 0.48173 | 1.624 | 96.5 | 10.28 -Output | 0.0003894 | 0.023428 | 0.047223 | 15.0 | 0.50 -Modify | 0.00037337 | 0.2141 | 0.44595 | 46.3 | 4.57 -Other | | 2.338 | | | 49.90 +Pair | 4.1163 | 4.2634 | 4.4004 | 6.5 | 84.50 +Neigh | 0.00088605 | 0.032793 | 0.083516 | 19.1 | 0.65 +Comm | 0.006704 | 0.20003 | 0.40672 | 42.5 | 3.96 +Output | 0.00033812 | 0.0012192 | 0.0020905 | 2.3 | 0.02 +Modify | 0.00035967 | 0.20167 | 0.42535 | 45.0 | 4.00 +Other | | 0.3462 | | | 6.86 -Nlocal: 480 ave 1011 max 0 min +Nlocal: 480 ave 1052 max 0 min Histogram: 2 0 0 0 0 0 0 0 1 1 -Nghost: 860 ave 1771 max 0 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Neighs: 11697.8 ave 30095 max 0 min +Nghost: 854.5 ave 1801 max 0 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Neighs: 11684.2 ave 31145 max 0 min Histogram: 2 0 0 0 0 1 0 0 0 1 -Total # of neighbors = 46791 -Ave neighs/atom = 24.370313 -Neighbor list builds = 99 +Total # of neighbors = 46737 +Ave neighs/atom = 24.342188 +Neighbor list builds = 98 Dangerous builds = 0 -Total wall time: 0:00:04 +Total wall time: 0:00:05 diff --git a/examples/bpm/plasticity/in.bpm.plasticity b/examples/bpm/plasticity/in.bpm.plasticity new file mode 100644 index 0000000000..4cf8f277a8 --- /dev/null +++ b/examples/bpm/plasticity/in.bpm.plasticity @@ -0,0 +1,103 @@ +# Load then unload four cantilevers with different plastic yield strains +# model from DOI: 10.1016/j.powtec.2024.120563 + +units lj +dimension 3 +boundary p s s +atom_style bond +special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0 +newton on off +comm_modify vel yes cutoff 2.6 +lattice fcc 1.41 +region box block 0 20 -1 41 -5 5 units box +create_box 4 box bond/types 4 extra/bond/per/atom 20 extra/special/per/atom 50 +mass * 1.0 + +# Create initial disordered geometry somewhat near jamming + +region cantilever block 3.0 12.0 0 40 -2.5 2.5 units box +region cantileverw block 2.0 13.0 -1 41 -3.5 3.5 units box +create_atoms 1 region cantilever + +velocity all create 0.1 345910 + +pair_style bpm/spring +pair_coeff * * 1.0 1.0 1.0 + +fix 1 all nve +fix wtemp all wall/region cantileverw harmonic 1.0 1.0 1.0 + +thermo_style custom step ke pe pxx pyy pzz +thermo 100 + +timestep 0.1 +run 20000 +unfix wtemp + +# Replicate cylinder and add bonds + +replicate 4 1 1 + +region r1 block 0.0 20.0 EDGE EDGE EDGE EDGE side in units box +region r2 block 20.0 40.0 EDGE EDGE EDGE EDGE side in units box +region r3 block 40.0 60.0 EDGE EDGE EDGE EDGE side in units box +region r4 block 60.0 80.0 EDGE EDGE EDGE EDGE side in units box + +group c1 region r1 +group c2 region r2 +group c3 region r3 +group c4 region r4 + +set group c2 type 2 +set group c3 type 3 +set group c4 type 4 + +velocity all set 0.0 0.0 0.0 +neighbor 1.0 bin + +create_bonds many c1 c1 1 0.0 1.5 +create_bonds many c2 c2 2 0.0 1.5 +create_bonds many c3 c3 3 0.0 1.5 +create_bonds many c4 c4 4 0.0 1.5 + +neighbor 0.3 bin +special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 + +bond_style bpm/spring/plastic break no smooth no +bond_coeff 1 1.0 0 1.0 1.0 +bond_coeff 2 1.0 0 1.0 0.022 +bond_coeff 3 1.0 0 1.0 0.0185 +bond_coeff 4 1.0 0 1.0 0.017 + +# apply load + +region anchor block EDGE EDGE EDGE 2.0 EDGE EDGE units box +region load block EDGE EDGE 38.0 EDGE EDGE EDGE units box +group anchor region anchor +group load region load + +variable fload equal ramp(0.0,-0.0005) +fix 2 anchor setforce 0.0 0.0 0.0 +fix 3 load addforce 0.0 0.0 v_fload +fix 4 all viscous 0.0016 + +compute zmin1 c1 reduce min z +compute zmin2 c2 reduce min z +compute zmin3 c3 reduce min z +compute zmin4 c4 reduce min z + +thermo_style custom step ke c_zmin1 c_zmin2 c_zmin3 c_zmin4 +#dump 1 all custom 1000 atomDump id type x y z + +run 30000 + +# hold load + +unfix 3 +fix 3 load addforce 0.0 0.0 -0.0005 +run 50000 + +# remove load + +unfix 3 +run 60000 diff --git a/examples/bpm/plasticity/log.19Nov2024.bpm.plasticity.g++.1 b/examples/bpm/plasticity/log.19Nov2024.bpm.plasticity.g++.1 new file mode 100644 index 0000000000..e51437b585 --- /dev/null +++ b/examples/bpm/plasticity/log.19Nov2024.bpm.plasticity.g++.1 @@ -0,0 +1,2024 @@ +LAMMPS (19 Nov 2024 - Development - patch_19Nov2024-1034-ged627579f6-modified) +# Load then unload four cantilevers with different plastic yield strains +# model from DOI: 10.1016/j.powtec.2024.120563 + +units lj +dimension 3 +boundary p s s +atom_style bond +special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0 +newton on off +comm_modify vel yes cutoff 2.6 +lattice fcc 1.41 +Lattice spacing in x,y,z = 1.4156209 1.4156209 1.4156209 +region box block 0 20 -1 41 -5 5 units box +create_box 4 box bond/types 4 extra/bond/per/atom 20 extra/special/per/atom 50 +Created orthogonal box = (0 -1 -5) to (20 41 5) + 1 by 1 by 1 MPI processor grid +mass * 1.0 + +# Create initial disordered geometry somewhat near jamming + +region cantilever block 3.0 12.0 0 40 -2.5 2.5 units box +region cantileverw block 2.0 13.0 -1 41 -3.5 3.5 units box +create_atoms 1 region cantilever +Created 2394 atoms + using lattice units in orthogonal box = (0 -1.0042 -5.001) to (20 41.0042 5.001) + create_atoms CPU = 0.001 seconds + +velocity all create 0.1 345910 + +pair_style bpm/spring +pair_coeff * * 1.0 1.0 1.0 + +fix 1 all nve +fix wtemp all wall/region cantileverw harmonic 1.0 1.0 1.0 + +thermo_style custom step ke pe pxx pyy pzz +thermo 100 + +timestep 0.1 +run 20000 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 2.6 + binsize = 0.65, bins = 31 65 16 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 9.752 | 9.752 | 9.752 Mbytes + Step KinEng PotEng Pxx Pyy Pzz + 0 0.14993734 0 0.071514461 0.070121562 0.071454556 + 100 0.0066788839 0.0029982274 0.016637041 0.016868542 0.015823802 + 200 0.0019715508 0.00071490141 0.007843495 0.0076223765 0.0067662021 + 300 0.00087217257 0.00026043228 0.003985349 0.004259066 0.0040664397 + 400 0.00050307484 0.00011882009 0.0024899485 0.0025393633 0.0024477801 + 500 0.00033241763 6.5955939e-05 0.0016895447 0.0018048761 0.0017308071 + 600 0.00023663671 4.4828066e-05 0.0013515511 0.001353668 0.0013208904 + 700 0.0001837694 2.7185024e-05 0.00094852029 0.0010286312 0.00099370739 + 800 0.00014655165 1.8873405e-05 0.00075979673 0.0008230931 0.00075345331 + 900 0.00012145909 1.4344012e-05 0.00060702604 0.00068683252 0.00061213385 + 1000 0.00010239299 1.2153676e-05 0.00055078741 0.00060838425 0.00054159268 + 1100 8.8075366e-05 9.9954299e-06 0.00045915185 0.00057179945 0.00047014896 + 1200 7.8336822e-05 7.4598572e-06 0.00038286385 0.000423282 0.00040077777 + 1300 6.8617848e-05 7.4071518e-06 0.00038962894 0.00045042653 0.00042176853 + 1400 6.1816066e-05 5.7757188e-06 0.00035626235 0.00037452754 0.00033148835 + 1500 5.5158763e-05 5.3010672e-06 0.00032659745 0.00035059437 0.0003143055 + 1600 5.0680523e-05 4.4203877e-06 0.00027420802 0.00032194903 0.00030193132 + 1700 4.6020086e-05 4.0228214e-06 0.00026909527 0.00029969818 0.00027492066 + 1800 4.1968387e-05 3.9751303e-06 0.00027184181 0.00028203292 0.00026747334 + 1900 3.8741903e-05 3.5539155e-06 0.00024183418 0.00026550737 0.00025356968 + 2000 3.6204768e-05 2.9462894e-06 0.00022277001 0.00025408288 0.0002123446 + 2100 3.3266509e-05 2.8028832e-06 0.00021917117 0.00024069099 0.00020369452 + 2200 3.102664e-05 2.6085678e-06 0.0001882006 0.00023685724 0.00019134947 + 2300 2.903812e-05 2.3143895e-06 0.0001749797 0.00021704715 0.00019021214 + 2400 2.7141792e-05 2.1848123e-06 0.00018014226 0.00020933228 0.00017930569 + 2500 2.5612882e-05 1.8545406e-06 0.00017807794 0.00016882959 0.0001750063 + 2600 2.4068378e-05 1.7104525e-06 0.00015853683 0.000178264 0.00015848288 + 2700 2.2573196e-05 1.7771307e-06 0.00015577573 0.00017747772 0.00016654472 + 2800 2.1422175e-05 1.4847142e-06 0.00014322637 0.00013897114 0.00014490629 + 2900 2.0433268e-05 1.3514585e-06 0.00012745407 0.00014678277 0.000135221 + 3000 1.9204132e-05 1.3849721e-06 0.00012986068 0.00015084177 0.00014142185 + 3100 1.8212704e-05 1.2748732e-06 0.00013317833 0.00014368027 0.00013451894 + 3200 1.7326097e-05 1.3213286e-06 0.00012777819 0.00014793494 0.00012886678 + 3300 1.6615969e-05 1.1158927e-06 0.00011223033 0.00012323335 0.0001210878 + 3400 1.5855041e-05 1.1229014e-06 0.00011468711 0.00013243589 0.00012051018 + 3500 1.532374e-05 8.888678e-07 0.00010638549 0.00011430069 0.00010089698 + 3600 1.467535e-05 8.7654654e-07 8.8094885e-05 0.00011642682 0.00010671988 + 3700 1.4062105e-05 8.1807269e-07 9.4265348e-05 0.0001161673 9.3404926e-05 + 3800 1.3552196e-05 8.3487647e-07 8.6030873e-05 0.00011280194 0.0001010521 + 3900 1.3022591e-05 7.9989391e-07 0.00010119027 0.00010258667 9.1434393e-05 + 4000 1.2525445e-05 8.1520281e-07 9.5211467e-05 0.00010785495 9.97298e-05 + 4100 1.2181734e-05 6.4410557e-07 9.4373715e-05 8.9279858e-05 7.9893316e-05 + 4200 1.1704251e-05 7.0450874e-07 8.0872404e-05 9.4334475e-05 8.8302993e-05 + 4300 1.1280286e-05 7.1408139e-07 9.1119222e-05 8.5870034e-05 8.8445587e-05 + 4400 1.1016643e-05 6.0873467e-07 7.9024773e-05 8.1967988e-05 8.5977338e-05 + 4500 1.0668349e-05 5.8516931e-07 7.8294095e-05 8.0043527e-05 8.4715888e-05 + 4600 1.0331041e-05 5.7376843e-07 7.5679063e-05 8.2398328e-05 7.4278168e-05 + 4700 1.0004816e-05 5.4597537e-07 7.2607537e-05 7.7956907e-05 6.9095147e-05 + 4800 9.7594591e-06 5.2681078e-07 7.6737892e-05 6.79129e-05 7.2013864e-05 + 4900 9.4372215e-06 5.108678e-07 7.1926492e-05 7.6336467e-05 7.2404427e-05 + 5000 9.2301398e-06 4.9943356e-07 6.9272822e-05 7.4437007e-05 6.8591392e-05 + 5100 8.9087719e-06 5.0137676e-07 7.1953364e-05 7.0112306e-05 7.1894235e-05 + 5200 8.6733384e-06 4.6530133e-07 5.9160431e-05 7.2957759e-05 6.7731265e-05 + 5300 8.5237067e-06 4.0166784e-07 5.6976938e-05 6.4780167e-05 6.2493655e-05 + 5400 8.2585748e-06 3.9144457e-07 5.6287251e-05 6.5281415e-05 6.4678701e-05 + 5500 8.1089159e-06 3.5903718e-07 6.2738749e-05 5.8042636e-05 5.1954549e-05 + 5600 7.8605737e-06 3.9176106e-07 6.1198736e-05 6.5959291e-05 5.8081374e-05 + 5700 7.6788462e-06 3.8505614e-07 5.5766462e-05 6.4100303e-05 6.0012403e-05 + 5800 7.5163424e-06 3.4531571e-07 5.326349e-05 6.1833688e-05 4.8218455e-05 + 5900 7.3552892e-06 3.1726542e-07 5.2593444e-05 5.3015093e-05 5.2366381e-05 + 6000 7.1550139e-06 3.188599e-07 4.7713401e-05 5.6322276e-05 5.2424598e-05 + 6100 7.0361757e-06 3.0641052e-07 4.7286992e-05 5.8028248e-05 5.2063931e-05 + 6200 6.8801441e-06 2.7974487e-07 5.3580486e-05 4.6047586e-05 4.7327222e-05 + 6300 6.6802143e-06 3.3499395e-07 5.8400669e-05 5.5627535e-05 4.7978034e-05 + 6400 6.5789434e-06 2.8602311e-07 5.0198228e-05 5.5844532e-05 4.877662e-05 + 6500 6.4436475e-06 2.6008325e-07 4.7602086e-05 4.4486849e-05 4.6404674e-05 + 6600 6.2843629e-06 2.7832981e-07 4.7074622e-05 4.6606369e-05 4.9936757e-05 + 6700 6.1703075e-06 2.8089174e-07 4.7083973e-05 4.6575052e-05 5.0006622e-05 + 6800 6.0794707e-06 2.5065496e-07 4.3818817e-05 4.8409259e-05 3.8917908e-05 + 6900 5.9095362e-06 2.8634305e-07 5.2986415e-05 4.8027488e-05 5.1770643e-05 + 7000 5.8364704e-06 2.4891212e-07 4.3004439e-05 4.6236407e-05 4.203024e-05 + 7100 5.676111e-06 2.8000071e-07 4.2647162e-05 5.4717075e-05 4.5375773e-05 + 7200 5.6485498e-06 2.0372933e-07 3.7420101e-05 4.5276234e-05 3.716119e-05 + 7300 5.4828422e-06 2.3962736e-07 4.4493988e-05 4.3446503e-05 4.673755e-05 + 7400 5.3980604e-06 2.3856758e-07 4.0222008e-05 4.6533781e-05 4.3072176e-05 + 7500 5.3006008e-06 2.2358346e-07 4.0025366e-05 3.6897725e-05 4.4834626e-05 + 7600 5.197958e-06 2.3660321e-07 4.0784719e-05 4.4961031e-05 4.2087955e-05 + 7700 5.1806799e-06 1.7718602e-07 3.2411759e-05 3.9110371e-05 3.8802708e-05 + 7800 5.0962887e-06 1.7412195e-07 3.6552483e-05 3.5361276e-05 3.2904976e-05 + 7900 4.9703998e-06 2.1337014e-07 4.3936409e-05 4.0886722e-05 3.9732939e-05 + 8000 4.9053377e-06 1.7953438e-07 3.7608294e-05 3.4731494e-05 3.6081071e-05 + 8100 4.8171492e-06 1.9697727e-07 3.3678657e-05 4.1808664e-05 4.1007093e-05 + 8200 4.7721132e-06 1.7544811e-07 3.4665105e-05 3.2777884e-05 3.774731e-05 + 8300 4.708456e-06 1.6203898e-07 3.7062724e-05 3.4881585e-05 2.9315416e-05 + 8400 4.6397062e-06 1.3777361e-07 3.1993062e-05 2.840598e-05 2.8943249e-05 + 8500 4.5983716e-06 1.3333705e-07 3.2032331e-05 3.1515185e-05 2.7257332e-05 + 8600 4.5175708e-06 1.4915416e-07 3.0728382e-05 3.0468802e-05 3.1961748e-05 + 8700 4.4347789e-06 1.5492856e-07 3.0961313e-05 3.4774356e-05 2.957729e-05 + 8800 4.3438643e-06 1.9416152e-07 3.5496445e-05 3.650361e-05 3.7686819e-05 + 8900 4.2916882e-06 1.7972527e-07 3.4999135e-05 3.4301174e-05 3.369003e-05 + 9000 4.2420397e-06 1.653212e-07 3.2002391e-05 3.5994842e-05 3.6333896e-05 + 9100 4.156708e-06 1.7541257e-07 3.1781091e-05 3.3713908e-05 3.6414424e-05 + 9200 4.1206942e-06 1.6684543e-07 3.1148086e-05 3.4009984e-05 3.6543294e-05 + 9300 4.0739027e-06 1.5661214e-07 3.2100841e-05 3.1002639e-05 3.2377644e-05 + 9400 4.0749842e-06 1.1325533e-07 2.7132088e-05 2.6729932e-05 2.6505394e-05 + 9500 4.0182431e-06 1.1916661e-07 2.8267149e-05 2.7495849e-05 2.5348393e-05 + 9600 3.9394743e-06 1.4897486e-07 3.1303396e-05 2.8986697e-05 3.3906299e-05 + 9700 3.9202642e-06 1.1265772e-07 2.6904853e-05 2.9419644e-05 2.3388387e-05 + 9800 3.8563029e-06 1.4201267e-07 2.9742419e-05 3.0333264e-05 2.8597551e-05 + 9900 3.8407551e-06 1.0925008e-07 2.4813089e-05 2.518408e-05 2.5132946e-05 + 10000 3.8031732e-06 1.0429945e-07 2.4587006e-05 2.4160366e-05 2.2475372e-05 + 10100 3.7403802e-06 1.188634e-07 2.621425e-05 2.747381e-05 2.7423478e-05 + 10200 3.6933569e-06 1.177636e-07 2.3506114e-05 3.0373875e-05 2.7330288e-05 + 10300 3.6359757e-06 1.3540565e-07 2.4720627e-05 3.1264106e-05 3.0431809e-05 + 10400 3.6158282e-06 1.1027073e-07 2.6627036e-05 2.5041131e-05 2.3909283e-05 + 10500 3.5857824e-06 1.0049365e-07 2.5306577e-05 2.7251152e-05 2.1635787e-05 + 10600 3.5260536e-06 1.1579533e-07 2.581535e-05 2.7130923e-05 2.4935895e-05 + 10700 3.5024547e-06 1.0954559e-07 2.5027035e-05 2.8379233e-05 2.2447535e-05 + 10800 3.4853309e-06 9.4720082e-08 2.2724388e-05 2.0056563e-05 2.3309701e-05 + 10900 3.4396529e-06 1.0829632e-07 2.5958339e-05 2.6491256e-05 2.1617336e-05 + 11000 3.3987023e-06 9.7092727e-08 2.2470175e-05 2.2846816e-05 2.091066e-05 + 11100 3.3606128e-06 9.8398405e-08 2.2648156e-05 2.4731296e-05 2.0418175e-05 + 11200 3.3396876e-06 7.6470057e-08 1.9873816e-05 1.9797248e-05 1.9115439e-05 + 11300 3.3041431e-06 9.3155692e-08 2.3746612e-05 2.3286585e-05 1.93667e-05 + 11400 3.2797866e-06 9.0584145e-08 2.1717142e-05 2.5320734e-05 2.118408e-05 + 11500 3.2454003e-06 8.5422835e-08 2.2434639e-05 1.920118e-05 2.0617104e-05 + 11600 3.1819911e-06 1.1244129e-07 1.791276e-05 2.6915583e-05 2.355823e-05 + 11700 3.1635572e-06 1.0031236e-07 2.2122734e-05 2.3651576e-05 2.2707601e-05 + 11800 3.1420932e-06 8.9733842e-08 2.0691568e-05 2.1346189e-05 2.3543388e-05 + 11900 3.1066705e-06 9.1501672e-08 2.0236573e-05 2.2932414e-05 1.9990374e-05 + 12000 3.0745943e-06 8.9277079e-08 2.0150526e-05 2.2352883e-05 1.8398403e-05 + 12100 3.0733981e-06 7.4616245e-08 1.9385797e-05 1.7454795e-05 1.9264248e-05 + 12200 3.0257929e-06 9.2174543e-08 1.869441e-05 2.4202442e-05 2.2015e-05 + 12300 3.0234068e-06 6.5090899e-08 1.767132e-05 1.9462735e-05 1.6725567e-05 + 12400 3.0027086e-06 6.2193553e-08 1.4880016e-05 2.0662066e-05 1.8614087e-05 + 12500 2.9319141e-06 1.0097547e-07 2.1488942e-05 2.1615501e-05 2.148531e-05 + 12600 2.9289151e-06 7.6302482e-08 1.7692348e-05 1.8642681e-05 1.7425701e-05 + 12700 2.90702e-06 7.6215717e-08 1.9509559e-05 1.8415327e-05 2.2776532e-05 + 12800 2.8758381e-06 7.9105433e-08 1.8521166e-05 2.0454146e-05 2.0370962e-05 + 12900 2.8317602e-06 9.1385197e-08 2.0335336e-05 2.4975614e-05 2.0240701e-05 + 13000 2.8410057e-06 6.0044423e-08 1.629434e-05 1.823554e-05 1.511721e-05 + 13100 2.782039e-06 8.4410675e-08 2.0919093e-05 2.0809882e-05 1.8657917e-05 + 13200 2.791875e-06 5.337143e-08 1.5825524e-05 1.9356399e-05 1.2911019e-05 + 13300 2.7487173e-06 7.6547916e-08 1.962803e-05 1.8981737e-05 2.0142921e-05 + 13400 2.7299962e-06 6.7372367e-08 1.7153528e-05 1.8103989e-05 1.7732609e-05 + 13500 2.7057441e-06 7.2429583e-08 1.9019906e-05 1.9691015e-05 1.9578145e-05 + 13600 2.6778573e-06 8.0573212e-08 1.8433433e-05 2.0729038e-05 2.0267435e-05 + 13700 2.6826077e-06 4.4511734e-08 1.3084576e-05 1.5000823e-05 1.3750559e-05 + 13800 2.647424e-06 5.9574367e-08 1.4631775e-05 1.4306273e-05 1.7157491e-05 + 13900 2.6110162e-06 7.4881186e-08 1.7818332e-05 2.148169e-05 1.7463563e-05 + 14000 2.6014529e-06 6.3294079e-08 1.5635773e-05 1.7333417e-05 1.6871959e-05 + 14100 2.5707329e-06 7.3706564e-08 1.691795e-05 2.2276988e-05 1.7435609e-05 + 14200 2.5693783e-06 5.5754478e-08 1.6045272e-05 1.5266604e-05 1.6872656e-05 + 14300 2.543378e-06 5.6841288e-08 1.7342484e-05 1.6861913e-05 1.5333195e-05 + 14400 2.5180009e-06 6.7438588e-08 1.7569821e-05 1.8124358e-05 1.8789645e-05 + 14500 2.505371e-06 5.8372098e-08 1.5370256e-05 1.7944439e-05 1.3727925e-05 + 14600 2.50052e-06 5.2960357e-08 1.2874059e-05 1.6976938e-05 1.5523433e-05 + 14700 2.4677314e-06 5.6098859e-08 1.5234684e-05 1.4810739e-05 1.6137648e-05 + 14800 2.4431342e-06 6.9542809e-08 1.7307233e-05 1.675592e-05 1.8785122e-05 + 14900 2.4217996e-06 6.5392872e-08 1.8214833e-05 1.7872976e-05 1.6079527e-05 + 15000 2.4223306e-06 4.8254257e-08 1.6243518e-05 1.3430592e-05 1.4053815e-05 + 15100 2.3971545e-06 5.8012806e-08 1.5024579e-05 1.5105347e-05 1.3560674e-05 + 15200 2.3734628e-06 5.4310001e-08 1.3063191e-05 1.5414145e-05 1.5458277e-05 + 15300 2.3523286e-06 6.1640634e-08 1.7876627e-05 1.6249813e-05 1.687417e-05 + 15400 2.3489693e-06 4.7278336e-08 1.2011731e-05 1.2230688e-05 1.678822e-05 + 15500 2.3284108e-06 5.2715812e-08 1.3176372e-05 1.6503583e-05 1.3955123e-05 + 15600 2.2947375e-06 6.7465869e-08 1.5326712e-05 1.9881502e-05 1.6487331e-05 + 15700 2.3019796e-06 4.8005103e-08 1.4590446e-05 1.4276946e-05 1.4055723e-05 + 15800 2.2826912e-06 4.9641879e-08 1.3481867e-05 1.6276418e-05 1.3419255e-05 + 15900 2.2583072e-06 5.4614844e-08 1.7382114e-05 1.604672e-05 1.4741544e-05 + 16000 2.2430797e-06 4.8420384e-08 1.2843624e-05 1.2618834e-05 1.2491054e-05 + 16100 2.2264678e-06 4.796181e-08 1.4438989e-05 1.5552177e-05 1.2048946e-05 + 16200 2.2123007e-06 5.2907699e-08 1.2747032e-05 1.4431874e-05 1.6152188e-05 + 16300 2.1942666e-06 5.1538008e-08 1.3243122e-05 1.4793006e-05 1.4855916e-05 + 16400 2.1800741e-06 5.0280071e-08 1.1549921e-05 1.5836438e-05 1.5087605e-05 + 16500 2.1718081e-06 4.2144732e-08 1.4603756e-05 1.3084635e-05 1.2983558e-05 + 16600 2.15145e-06 4.6326815e-08 1.4904114e-05 1.4500088e-05 1.2283839e-05 + 16700 2.1563978e-06 3.2862475e-08 1.1841441e-05 1.2463519e-05 1.0662253e-05 + 16800 2.1128692e-06 5.462978e-08 1.3455978e-05 1.6216741e-05 1.4636363e-05 + 16900 2.1178726e-06 3.6500222e-08 1.1666564e-05 1.2789709e-05 9.6393609e-06 + 17000 2.1058751e-06 3.6428095e-08 1.3109685e-05 1.304962e-05 1.0397847e-05 + 17100 2.0817867e-06 5.1894295e-08 1.5527039e-05 1.442429e-05 1.1662417e-05 + 17200 2.0697616e-06 4.8400908e-08 1.2051247e-05 1.4854095e-05 1.4277423e-05 + 17300 2.0496506e-06 5.1765629e-08 1.5484172e-05 1.6516861e-05 1.3787806e-05 + 17400 2.0318945e-06 5.0178134e-08 1.2610435e-05 1.5926848e-05 1.3146463e-05 + 17500 2.0312975e-06 4.2775082e-08 1.1413756e-05 1.2303892e-05 1.332512e-05 + 17600 2.0286562e-06 3.3246228e-08 9.9623166e-06 1.1190246e-05 1.0713751e-05 + 17700 2.0057117e-06 4.1465626e-08 1.28564e-05 1.2354674e-05 1.1732572e-05 + 17800 1.9775891e-06 5.3253383e-08 1.3320474e-05 1.6084721e-05 1.1697579e-05 + 17900 1.9763707e-06 4.0037754e-08 1.0787927e-05 1.0905895e-05 1.2524822e-05 + 18000 1.9659819e-06 4.2213997e-08 1.0786016e-05 1.356023e-05 1.3052018e-05 + 18100 1.962808e-06 3.1950711e-08 1.0829314e-05 1.246617e-05 1.1079602e-05 + 18200 1.9360469e-06 4.3810974e-08 1.382493e-05 1.245849e-05 1.2288243e-05 + 18300 1.9407685e-06 3.0042901e-08 7.3716082e-06 1.109871e-05 1.226921e-05 + 18400 1.910359e-06 4.7042217e-08 1.3644803e-05 1.4884969e-05 1.1956804e-05 + 18500 1.8946497e-06 5.0743345e-08 1.1974771e-05 1.4385508e-05 1.7610709e-05 + 18600 1.8962987e-06 3.9757677e-08 1.0582884e-05 1.2673246e-05 1.3298389e-05 + 18700 1.8742478e-06 4.4718119e-08 1.5344401e-05 1.2546575e-05 1.1764246e-05 + 18800 1.8650878e-06 3.7704721e-08 1.07802e-05 1.2917662e-05 9.5373738e-06 + 18900 1.8685713e-06 3.6504734e-08 1.0815769e-05 1.3268273e-05 9.2228416e-06 + 19000 1.8510631e-06 3.5157873e-08 1.2534306e-05 1.2128038e-05 1.0355377e-05 + 19100 1.844547e-06 3.5807341e-08 1.1011196e-05 1.2288462e-05 1.042938e-05 + 19200 1.8237482e-06 4.4374495e-08 1.0976301e-05 1.0525434e-05 1.3496339e-05 + 19300 1.809658e-06 4.663351e-08 1.0427019e-05 1.2761301e-05 1.2443509e-05 + 19400 1.8047595e-06 3.7730816e-08 1.2549441e-05 9.4564734e-06 1.159109e-05 + 19500 1.7912254e-06 3.9882052e-08 1.3940679e-05 1.220604e-05 1.1210472e-05 + 19600 1.789224e-06 3.7125586e-08 1.0231473e-05 1.2070753e-05 1.1047121e-05 + 19700 1.7845362e-06 3.456485e-08 1.12335e-05 1.042505e-05 9.0484867e-06 + 19800 1.7683141e-06 3.8353201e-08 1.29417e-05 1.0764969e-05 1.116828e-05 + 19900 1.7664071e-06 3.2153664e-08 9.4515931e-06 1.1051242e-05 1.0924767e-05 + 20000 1.7618892e-06 2.2689236e-08 8.4011955e-06 7.5721128e-06 8.9521609e-06 +Loop time of 1.48476 on 1 procs for 20000 steps with 2394 atoms + +Performance: 116382628.128 tau/day, 13470.212 timesteps/s, 32.248 Matom-step/s +99.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.63885 | 0.63885 | 0.63885 | 0.0 | 43.03 +Bond | 0.00053413 | 0.00053413 | 0.00053413 | 0.0 | 0.04 +Neigh | 0.15112 | 0.15112 | 0.15112 | 0.0 | 10.18 +Comm | 0.0056225 | 0.0056225 | 0.0056225 | 0.0 | 0.38 +Output | 0.0032158 | 0.0032158 | 0.0032158 | 0.0 | 0.22 +Modify | 0.61597 | 0.61597 | 0.61597 | 0.0 | 41.49 +Other | | 0.06945 | | | 4.68 + +Nlocal: 2394 ave 2394 max 2394 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 11170 ave 11170 max 11170 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 11170 +Ave neighs/atom = 4.6658312 +Ave special neighs/atom = 0 +Neighbor list builds = 199 +Dangerous builds = 0 +unfix wtemp + +# Replicate cylinder and add bonds + +replicate 4 1 1 +Replication is creating a 4x1x1 = 4 times larger system... + orthogonal box = (0 -0.0019118212 -2.5018545) to (80 40.003414 2.5021045) + 1 by 1 by 1 MPI processor grid + 9576 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 0 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.000 seconds + replicate CPU = 0.001 seconds + +region r1 block 0.0 20.0 EDGE EDGE EDGE EDGE side in units box +region r2 block 20.0 40.0 EDGE EDGE EDGE EDGE side in units box +region r3 block 40.0 60.0 EDGE EDGE EDGE EDGE side in units box +region r4 block 60.0 80.0 EDGE EDGE EDGE EDGE side in units box + +group c1 region r1 +2394 atoms in group c1 +group c2 region r2 +2394 atoms in group c2 +group c3 region r3 +2394 atoms in group c3 +group c4 region r4 +2394 atoms in group c4 + +set group c2 type 2 +Setting atom values ... + 2394 settings made for type +set group c3 type 3 +Setting atom values ... + 2394 settings made for type +set group c4 type 4 +Setting atom values ... + 2394 settings made for type + +velocity all set 0.0 0.0 0.0 +neighbor 1.0 bin + +create_bonds many c1 c1 1 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 41 6 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 13760 bonds, new total = 13760 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 17 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.001 seconds +create_bonds many c2 c2 2 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Bonds are defined but no bond style is set (../force.cpp:197) +WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:199) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 41 6 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 13760 bonds, new total = 27520 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 17 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.002 seconds +create_bonds many c3 c3 3 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Bonds are defined but no bond style is set (../force.cpp:197) +WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:199) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 41 6 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 13760 bonds, new total = 41280 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 17 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.002 seconds +create_bonds many c4 c4 4 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Bonds are defined but no bond style is set (../force.cpp:197) +WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:199) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 41 6 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 13760 bonds, new total = 55040 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 17 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.002 seconds + +neighbor 0.3 bin +special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 + +bond_style bpm/spring/plastic break no smooth no +bond_coeff 1 1.0 0 1.0 1.0 +bond_coeff 2 1.0 0 1.0 0.022 +bond_coeff 3 1.0 0 1.0 0.0185 +bond_coeff 4 1.0 0 1.0 0.017 + +# apply load + +region anchor block EDGE EDGE EDGE 2.0 EDGE EDGE units box +region load block EDGE EDGE 38.0 EDGE EDGE EDGE units box +group anchor region anchor +512 atoms in group anchor +group load region load +592 atoms in group load + +variable fload equal ramp(0.0,-0.0005) +fix 2 anchor setforce 0.0 0.0 0.0 +fix 3 load addforce 0.0 0.0 v_fload +fix 4 all viscous 0.0016 + +compute zmin1 c1 reduce min z +compute zmin2 c2 reduce min z +compute zmin3 c3 reduce min z +compute zmin4 c4 reduce min z + +thermo_style custom step ke c_zmin1 c_zmin2 c_zmin3 c_zmin4 +dump 1 all custom 1000 atomDump id type x y z + +run 30000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- BPM bond style: doi:10.1039/D3SM01373A + +@Article{Clemmer2024, + author = {Clemmer, Joel T. and Monti, Joseph M. and Lechman, Jeremy B.}, + title = {A soft departure from jamming: the compaction of deformable + granular matter under high pressures}, + journal = {Soft Matter}, + year = 2024, + volume = 20, + number = 8, + pages = {1702--1718} +} + +- BPM/spring/plastic bond style: doi:10.1016/j.powtec.2024.120563 + +@Article{Clemmer2025, + author = {Clemmer, Joel T. and Lechman, Jeremy B.}, + title = {Onset and impact of plastic deformation in granular compaction}, + journal = {Powder Technology}, + year = 2025, + volume = 452, + number = 28, + pages = {120563} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 2.6 + binsize = 0.65, bins = 124 62 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 20.02 | 20.02 | 20.02 Mbytes + Step KinEng c_zmin1 c_zmin2 c_zmin3 c_zmin4 + 20000 0 -2.5009426 -2.5009426 -2.5009426 -2.5009426 + 20100 1.2351668e-12 -2.5009426 -2.5009426 -2.5009426 -2.5009426 + 20200 1.6504342e-11 -2.50094 -2.50094 -2.50094 -2.50094 + 20300 7.2443173e-11 -2.5009238 -2.5009238 -2.5009238 -2.5009238 + 20400 2.0430679e-10 -2.5009047 -2.5009047 -2.5009047 -2.5009047 + 20500 4.5403534e-10 -2.5014106 -2.5014106 -2.5014106 -2.5014106 + 20600 8.6883638e-10 -2.5021368 -2.5021368 -2.5021368 -2.5021368 + 20700 1.5005944e-09 -2.5032627 -2.5032627 -2.5032627 -2.5032627 + 20800 2.4020834e-09 -2.5048635 -2.5048635 -2.5048635 -2.5048635 + 20900 3.620123e-09 -2.5068127 -2.5068127 -2.5068127 -2.5068127 + 21000 5.1981536e-09 -2.5091315 -2.5091315 -2.5091315 -2.5091315 + 21100 7.1838766e-09 -2.5118405 -2.5118405 -2.5118405 -2.5118405 + 21200 9.6334884e-09 -2.5149609 -2.5149609 -2.5149609 -2.5149609 + 21300 1.2612436e-08 -2.5185116 -2.5185116 -2.5185116 -2.5185116 + 21400 1.6194239e-08 -2.5224995 -2.5224995 -2.5224995 -2.5224995 + 21500 2.0460353e-08 -2.5269165 -2.5269165 -2.5269165 -2.5269165 + 21600 2.5502476e-08 -2.5317485 -2.5317485 -2.5317485 -2.5317485 + 21700 3.1420875e-08 -2.5369872 -2.5369872 -2.5369872 -2.5369872 + 21800 3.831695e-08 -2.5426357 -2.5426357 -2.5426357 -2.5426357 + 21900 4.6285399e-08 -2.5487084 -2.5487084 -2.5487084 -2.5487084 + 22000 5.540962e-08 -2.5552276 -2.5552276 -2.5552276 -2.5552276 + 22100 6.5761039e-08 -2.5622201 -2.5622201 -2.5622201 -2.5622201 + 22200 7.7400349e-08 -2.5697151 -2.5697151 -2.5697151 -2.5697151 + 22300 9.0377386e-08 -2.5777426 -2.5777426 -2.5777426 -2.5777426 + 22400 1.047309e-07 -2.5863331 -2.5863331 -2.5863331 -2.5863331 + 22500 1.2049105e-07 -2.5955148 -2.5955148 -2.5955148 -2.5955148 + 22600 1.3768365e-07 -2.6053118 -2.6053118 -2.6053118 -2.6053118 + 22700 1.5633289e-07 -2.6157454 -2.6157454 -2.6157454 -2.6157454 + 22800 1.7646087e-07 -2.6268375 -2.6268375 -2.6268375 -2.6268375 + 22900 1.9808425e-07 -2.6386137 -2.6386137 -2.6386137 -2.6386137 + 23000 2.2121115e-07 -2.6511024 -2.6511024 -2.6511024 -2.6511024 + 23100 2.4583965e-07 -2.6643302 -2.6643302 -2.6643302 -2.6643302 + 23200 2.7195651e-07 -2.678336 -2.678336 -2.678336 -2.678336 + 23300 2.9953549e-07 -2.6934773 -2.6934773 -2.6934773 -2.6934773 + 23400 3.2853628e-07 -2.7094153 -2.7094153 -2.7094153 -2.7094153 + 23500 3.5890539e-07 -2.7261413 -2.7261413 -2.7261413 -2.7261413 + 23600 3.9057925e-07 -2.7436388 -2.7436388 -2.7436388 -2.7436388 + 23700 4.2348784e-07 -2.7618864 -2.7618864 -2.7618864 -2.7618864 + 23800 4.5755714e-07 -2.7808597 -2.7808597 -2.7808597 -2.7808597 + 23900 4.9271044e-07 -2.8005353 -2.8005353 -2.8005353 -2.8005353 + 24000 5.2886942e-07 -2.8208926 -2.8208926 -2.8208926 -2.8208926 + 24100 5.6595503e-07 -2.8419149 -2.8419149 -2.8419149 -2.8419149 + 24200 6.0388753e-07 -2.8635875 -2.8635875 -2.8635875 -2.8635875 + 24300 6.4258508e-07 -2.885895 -2.885895 -2.885895 -2.885895 + 24400 6.8196158e-07 -2.9088193 -2.9088193 -2.9088193 -2.9088193 + 24500 7.2192513e-07 -2.9323405 -2.9323405 -2.9323405 -2.9323405 + 24600 7.6237754e-07 -2.9564391 -2.9564391 -2.9564391 -2.9564391 + 24700 8.0321442e-07 -2.9810988 -2.9810988 -2.9810988 -2.9810988 + 24800 8.4432539e-07 -3.0063086 -3.0063086 -3.0063086 -3.0063086 + 24900 8.8559455e-07 -3.0320638 -3.0320638 -3.0320638 -3.0320638 + 25000 9.2690186e-07 -3.0583647 -3.0583647 -3.0583647 -3.0583647 + 25100 9.6812534e-07 -3.0852155 -3.0852155 -3.0852155 -3.0852155 + 25200 1.0091433e-06 -3.1126219 -3.1126219 -3.1126219 -3.1126219 + 25300 1.0498359e-06 -3.1405884 -3.1405884 -3.1405884 -3.1405884 + 25400 1.0900852e-06 -3.1691161 -3.1691161 -3.1691161 -3.1691161 + 25500 1.1297762e-06 -3.1982005 -3.1982005 -3.1982005 -3.1982005 + 25600 1.1687961e-06 -3.227832 -3.227832 -3.227832 -3.227832 + 25700 1.2070344e-06 -3.257997 -3.257997 -3.257997 -3.257997 + 25800 1.2443825e-06 -3.2886792 -3.2886792 -3.2886792 -3.2886792 + 25900 1.2807322e-06 -3.3198613 -3.3198613 -3.3198613 -3.3198613 + 26000 1.3159765e-06 -3.3515247 -3.3515247 -3.3515247 -3.3515247 + 26100 1.3500098e-06 -3.3836487 -3.3836487 -3.3836487 -3.3836487 + 26200 1.3827298e-06 -3.4162094 -3.4162094 -3.4162094 -3.4162094 + 26300 1.4140396e-06 -3.449179 -3.449179 -3.449179 -3.449179 + 26400 1.4438488e-06 -3.4825256 -3.4825256 -3.4825256 -3.4825256 + 26500 1.4720759e-06 -3.5162134 -3.5162134 -3.5162134 -3.5162134 + 26600 1.4986491e-06 -3.5502047 -3.5502047 -3.5502047 -3.5502047 + 26700 1.5235069e-06 -3.5844612 -3.5844612 -3.5844612 -3.5844612 + 26800 1.5465982e-06 -3.6189462 -3.6189462 -3.6189462 -3.6189462 + 26900 1.567881e-06 -3.6536265 -3.6536265 -3.6536265 -3.6536265 + 27000 1.5873207e-06 -3.6884733 -3.6884733 -3.6884733 -3.6884733 + 27100 1.6048891e-06 -3.7234623 -3.7234623 -3.7234623 -3.7234623 + 27200 1.6205631e-06 -3.758573 -3.758573 -3.758573 -3.758573 + 27300 1.6343242e-06 -3.7937872 -3.7937872 -3.7937872 -3.7937872 + 27400 1.6461586e-06 -3.8290884 -3.8290884 -3.8290884 -3.8290884 + 27500 1.6560567e-06 -3.8644611 -3.8644611 -3.8644611 -3.8644611 + 27600 1.6640149e-06 -3.899891 -3.899891 -3.899891 -3.899891 + 27700 1.6700356e-06 -3.9353655 -3.9353655 -3.9353655 -3.9353655 + 27800 1.6741283e-06 -3.9708734 -3.9708734 -3.9708734 -3.9708734 + 27900 1.6763095e-06 -4.0064055 -4.0064055 -4.0064055 -4.0064055 + 28000 1.6766027e-06 -4.0419539 -4.0419539 -4.0419539 -4.0419539 + 28100 1.6750373e-06 -4.077511 -4.077511 -4.077511 -4.077511 + 28200 1.6716485e-06 -4.1130688 -4.1130688 -4.1130688 -4.1130688 + 28300 1.666476e-06 -4.148617 -4.148617 -4.148617 -4.148617 + 28400 1.6595633e-06 -4.1841425 -4.1841425 -4.1841425 -4.1841425 + 28500 1.6509568e-06 -4.2196283 -4.2196283 -4.2196283 -4.2196283 + 28600 1.6407058e-06 -4.2550543 -4.2550543 -4.2550543 -4.2550543 + 28700 1.6288629e-06 -4.2903975 -4.2903975 -4.2903975 -4.2903975 + 28800 1.6154837e-06 -4.3256335 -4.3256335 -4.3256335 -4.3256335 + 28900 1.6006277e-06 -4.3607374 -4.3607374 -4.3607374 -4.3607374 + 29000 1.5843585e-06 -4.3956842 -4.3956842 -4.3956842 -4.3956842 + 29100 1.5667441e-06 -4.4304495 -4.4304495 -4.4304495 -4.4304495 + 29200 1.5478572e-06 -4.4650097 -4.4650097 -4.4650097 -4.4650097 + 29300 1.5277745e-06 -4.4993416 -4.4993416 -4.4993416 -4.4993416 + 29400 1.5065765e-06 -4.5334229 -4.5334229 -4.5334229 -4.5334229 + 29500 1.4843462e-06 -4.5672325 -4.5672325 -4.5672325 -4.5672325 + 29600 1.4611684e-06 -4.6007505 -4.6007505 -4.6007505 -4.6007505 + 29700 1.4371284e-06 -4.6339595 -4.6339595 -4.6339595 -4.6339595 + 29800 1.412311e-06 -4.6668452 -4.6668452 -4.6668452 -4.6668452 + 29900 1.3868001e-06 -4.69941 -4.69941 -4.69941 -4.69941 + 30000 1.3606774e-06 -4.7317632 -4.7317632 -4.7317632 -4.7317632 + 30100 1.3340227e-06 -4.76377 -4.76377 -4.76377 -4.76377 + 30200 1.3069138e-06 -4.7954293 -4.7954293 -4.7954293 -4.7954293 + 30300 1.2794267e-06 -4.826742 -4.826742 -4.826742 -4.826742 + 30400 1.2516354e-06 -4.8577097 -4.8577097 -4.8577097 -4.8577097 + 30500 1.2236126e-06 -4.8883345 -4.8883345 -4.8883345 -4.8883345 + 30600 1.1954291e-06 -4.9186182 -4.9186182 -4.9186182 -4.9186182 + 30700 1.1671536e-06 -4.9485623 -4.9485623 -4.9485623 -4.9485623 + 30800 1.1388527e-06 -4.9781677 -4.9781677 -4.9781677 -4.9781677 + 30900 1.1105897e-06 -5.0074351 -5.0074351 -5.0074351 -5.0074351 + 31000 1.0824248e-06 -5.0363645 -5.0363645 -5.0363645 -5.0363645 + 31100 1.0544142e-06 -5.0649552 -5.0649552 -5.0649552 -5.0649552 + 31200 1.0266103e-06 -5.0932055 -5.0932055 -5.0932055 -5.0932055 + 31300 9.9906169e-07 -5.1211123 -5.1211123 -5.1211123 -5.1211123 + 31400 9.7181373e-07 -5.1486876 -5.1486876 -5.1486876 -5.1486876 + 31500 9.4490879e-07 -5.1759111 -5.1759111 -5.1759111 -5.1759111 + 31600 9.1838696e-07 -5.2027732 -5.2027732 -5.2027732 -5.2027732 + 31700 8.9228652e-07 -5.2292668 -5.2292668 -5.2292668 -5.2292668 + 31800 8.6664417e-07 -5.2553847 -5.2553847 -5.2553847 -5.2553847 + 31900 8.4149512e-07 -5.2811209 -5.2811209 -5.2811209 -5.2811209 + 32000 8.1687287e-07 -5.3064709 -5.3064709 -5.3064709 -5.3064709 + 32100 7.9281087e-07 -5.3314323 -5.3314323 -5.3314323 -5.3314323 + 32200 7.693436e-07 -5.3560044 -5.3560044 -5.3560044 -5.3560044 + 32300 7.4649823e-07 -5.3801886 -5.3801886 -5.3801886 -5.3801885 + 32400 7.2430185e-07 -5.4039883 -5.4039883 -5.4039883 -5.4039876 + 32500 7.0277838e-07 -5.4274085 -5.4274085 -5.4274085 -5.4274072 + 32600 6.8194371e-07 -5.4504561 -5.4504561 -5.4504561 -5.450454 + 32700 6.6180956e-07 -5.4731397 -5.4731397 -5.4731397 -5.4731309 + 32800 6.4238471e-07 -5.4954696 -5.4954696 -5.4954696 -5.4954407 + 32900 6.2367538e-07 -5.517458 -5.517458 -5.517458 -5.5173896 + 33000 6.0568719e-07 -5.5391181 -5.5391181 -5.5391181 -5.53899 + 33100 5.8842608e-07 -5.5604644 -5.5604644 -5.5604644 -5.5602642 + 33200 5.7189792e-07 -5.5815118 -5.5815118 -5.5815118 -5.5812347 + 33300 5.5610452e-07 -5.6022749 -5.6022749 -5.6022749 -5.6019247 + 33400 5.410414e-07 -5.6227679 -5.6227679 -5.6227677 -5.6223564 + 33500 5.2670461e-07 -5.6430039 -5.6430039 -5.643003 -5.6425457 + 33600 5.13089e-07 -5.6629947 -5.6629947 -5.6629934 -5.6625036 + 33700 5.0018639e-07 -5.6827507 -5.6827507 -5.6827475 -5.6822421 + 33800 4.8798924e-07 -5.7022812 -5.7022812 -5.7022682 -5.7017757 + 33900 4.7648926e-07 -5.7215944 -5.7215944 -5.7215589 -5.7211162 + 34000 4.6567529e-07 -5.7406979 -5.7406979 -5.7406264 -5.7402717 + 34100 4.5554038e-07 -5.7595982 -5.7595982 -5.7594773 -5.759254 + 34200 4.4607339e-07 -5.7783018 -5.7783018 -5.7781229 -5.7780764 + 34300 4.3726399e-07 -5.7968143 -5.7968143 -5.7965761 -5.7967496 + 34400 4.2910401e-07 -5.8151413 -5.8151413 -5.8148484 -5.8152817 + 34500 4.2158403e-07 -5.8332884 -5.8332884 -5.8329516 -5.8336748 + 34600 4.1469569e-07 -5.8512614 -5.8512614 -5.8508964 -5.8519314 + 34700 4.0843328e-07 -5.8690666 -5.8690666 -5.8686918 -5.8700571 + 34800 4.0278964e-07 -5.8867115 -5.8867115 -5.8863453 -5.8880528 + 34900 3.9775583e-07 -5.9042045 -5.9042045 -5.9038622 -5.9059244 + 35000 3.9332306e-07 -5.9215558 -5.9215558 -5.9212498 -5.9236864 + 35100 3.8948492e-07 -5.9387768 -5.9387768 -5.938519 -5.9413578 + 35200 3.8623515e-07 -5.9558803 -5.9558803 -5.9556901 -5.9589542 + 35300 3.8356577e-07 -5.97288 -5.97288 -5.972785 -5.9764919 + 35400 3.8146978e-07 -5.9897909 -5.9897909 -5.9898219 -5.9939894 + 35500 3.7994065e-07 -6.0066279 -6.0066279 -6.0068188 -6.0114634 + 35600 3.7896927e-07 -6.0234067 -6.0234067 -6.0237929 -6.0289317 + 35700 3.7854838e-07 -6.0401425 -6.0401425 -6.0407595 -6.046413 + 35800 3.7867504e-07 -6.0568506 -6.0568506 -6.0577305 -6.0639244 + 35900 3.7934403e-07 -6.073546 -6.073546 -6.0747141 -6.0814828 + 36000 3.8055014e-07 -6.0902428 -6.0902428 -6.0917191 -6.0991062 + 36100 3.822875e-07 -6.1069545 -6.1069545 -6.1087535 -6.1168173 + 36200 3.8455059e-07 -6.1236936 -6.1236936 -6.1258264 -6.1346395 + 36300 3.8733451e-07 -6.1404712 -6.1404712 -6.1429523 -6.1525926 + 36400 3.9063465e-07 -6.1572973 -6.1572973 -6.1601456 -6.1706942 + 36500 3.9444979e-07 -6.1741803 -6.1741803 -6.1774156 -6.1889579 + 36600 3.9877462e-07 -6.1911275 -6.1911275 -6.1947708 -6.2073907 + 36700 4.0360209e-07 -6.2081447 -6.2081444 -6.2122229 -6.2259974 + 36800 4.0892611e-07 -6.2252372 -6.2252362 -6.2297856 -6.2447864 + 36900 4.1474582e-07 -6.2424093 -6.2424078 -6.2474694 -6.2637675 + 37000 4.2105987e-07 -6.2596652 -6.2596616 -6.2652795 -6.2829469 + 37100 4.278675e-07 -6.2770089 -6.2769964 -6.2832236 -6.3023256 + 37200 4.3516486e-07 -6.2944444 -6.2944137 -6.3013104 -6.3219024 + 37300 4.4294786e-07 -6.311976 -6.3119204 -6.3195489 -6.3416787 + 37400 4.512123e-07 -6.3296083 -6.3295241 -6.337952 -6.3616602 + 37500 4.5995765e-07 -6.3473462 -6.347229 -6.356533 -6.3818527 + 37600 4.6918335e-07 -6.3651953 -6.3650404 -6.3753017 -6.4022577 + 37700 4.7888891e-07 -6.3831614 -6.382968 -6.3942651 -6.422876 + 37800 4.8907018e-07 -6.4012511 -6.4010212 -6.4134308 -6.4437102 + 37900 4.9972207e-07 -6.4194716 -6.4192109 -6.4328105 -6.4647635 + 38000 5.1084661e-07 -6.4378304 -6.4375485 -6.4524158 -6.4860362 + 38100 5.2245021e-07 -6.4563352 -6.4560448 -6.4722554 -6.5075297 + 38200 5.3453551e-07 -6.474994 -6.4747086 -6.4923378 -6.5292546 + 38300 5.4709721e-07 -6.4938146 -6.4935478 -6.5126746 -6.551226 + 38400 5.6012683e-07 -6.5128043 -6.5125712 -6.5332754 -6.5734544 + 38500 5.7361412e-07 -6.5319698 -6.5317869 -6.5541463 -6.5959487 + 38600 5.875481e-07 -6.5513169 -6.5512006 -6.575295 -6.6187201 + 38700 6.0191931e-07 -6.5708504 -6.5708162 -6.5967316 -6.6417805 + 38800 6.1671807e-07 -6.5905742 -6.5906376 -6.6184627 -6.6651425 + 38900 6.3193476e-07 -6.6104909 -6.6106737 -6.6404881 -6.68882 + 39000 6.4755602e-07 -6.6306022 -6.6309304 -6.6628027 -6.7128271 + 39100 6.6356716e-07 -6.6509087 -6.651408 -6.6854023 -6.7371747 + 39200 6.799606e-07 -6.6714099 -6.6721063 -6.7082886 -6.7618692 + 39300 6.9673229e-07 -6.6921045 -6.6930242 -6.7314662 -6.7869147 + 39400 7.1387242e-07 -6.7129904 -6.7141597 -6.7549369 -6.8123276 + 39500 7.3137322e-07 -6.7340645 -6.7355102 -6.7787026 -6.8381295 + 39600 7.492261e-07 -6.7553235 -6.75707 -6.8027643 -6.8643258 + 39700 7.6743034e-07 -6.7767638 -6.778833 -6.8271184 -6.8909078 + 39800 7.8598949e-07 -6.7983813 -6.8007937 -6.8517552 -6.917865 + 39900 8.0490221e-07 -6.8201725 -6.8229454 -6.8766684 -6.9451934 + 40000 8.2415688e-07 -6.8421338 -6.8452858 -6.901861 -6.9728915 + 40100 8.4374097e-07 -6.864262 -6.867816 -6.9273366 -7.0009554 + 40200 8.6364555e-07 -6.8865544 -6.8905339 -6.9530937 -7.0293789 + 40300 8.838587e-07 -6.9090086 -6.9134391 -6.9791319 -7.0581537 + 40400 9.0436474e-07 -6.9316229 -6.9365371 -7.0054542 -7.0872714 + 40500 9.2515314e-07 -6.9543954 -6.9598375 -7.0320667 -7.1167306 + 40600 9.4621992e-07 -6.977325 -6.9833475 -7.0589795 -7.1465334 + 40700 9.6755576e-07 -7.0004103 -7.007071 -7.086205 -7.1766789 + 40800 9.8914267e-07 -7.0236502 -7.0310135 -7.113751 -7.2071597 + 40900 1.0109639e-06 -7.0470434 -7.0551756 -7.1416188 -7.2379692 + 41000 1.0330104e-06 -7.0705884 -7.0795617 -7.1698053 -7.2691075 + 41100 1.055268e-06 -7.0942835 -7.1041794 -7.1983254 -7.300579 + 41200 1.0777262e-06 -7.1181264 -7.1290332 -7.227206 -7.3323881 + 41300 1.100373e-06 -7.1421142 -7.154123 -7.2564562 -7.364538 + 41400 1.1231977e-06 -7.1662434 -7.1794488 -7.2860681 -7.3970305 + 41500 1.1461923e-06 -7.1905095 -7.2050153 -7.3160319 -7.4298653 + 41600 1.1693586e-06 -7.2149077 -7.2308283 -7.3463446 -7.4630463 + 41700 1.1926936e-06 -7.2394319 -7.2568943 -7.377007 -7.4965838 + 41800 1.2161847e-06 -7.2640758 -7.283217 -7.408017 -7.5304875 + 41900 1.2398179e-06 -7.2888322 -7.3097906 -7.4393692 -7.5647667 + 42000 1.2635904e-06 -7.3136938 -7.3366033 -7.4710521 -7.5994229 + 42100 1.2874997e-06 -7.3386526 -7.3636497 -7.5030557 -7.6344459 + 42200 1.3115362e-06 -7.3637008 -7.3909301 -7.5353759 -7.6698255 + 42300 1.3356922e-06 -7.3888302 -7.4184429 -7.5680103 -7.7055643 + 42400 1.3599513e-06 -7.414033 -7.4461781 -7.6009523 -7.7416659 + 42500 1.3843042e-06 -7.4393014 -7.4741209 -7.6341917 -7.7781333 + 42600 1.4087525e-06 -7.464628 -7.5022626 -7.6677208 -7.8149709 + 42700 1.433296e-06 -7.4900056 -7.5306011 -7.7015333 -7.8521774 + 42800 1.4579308e-06 -7.5154277 -7.5591331 -7.7356249 -7.889754 + 42900 1.4826449e-06 -7.5408882 -7.5878529 -7.7699976 -7.9277095 + 43000 1.5074396e-06 -7.5663815 -7.6167496 -7.8046519 -7.9660526 + 43100 1.5323522e-06 -7.5919026 -7.6458053 -7.8395834 -8.0047873 + 43200 1.5574191e-06 -7.6174466 -7.6750038 -7.8747872 -8.043909 + 43300 1.5826553e-06 -7.6430093 -7.704343 -7.9102672 -8.0834101 + 43400 1.608076e-06 -7.6685867 -7.7338334 -7.9460305 -8.1232884 + 43500 1.6336848e-06 -7.6941747 -7.7634818 -7.9820849 -8.163539 + 43600 1.6594854e-06 -7.7197695 -7.793284 -8.0184353 -8.2041504 + 43700 1.6854811e-06 -7.745367 -7.8232363 -8.0550736 -8.2451171 + 43800 1.7116722e-06 -7.7709631 -7.8533424 -8.0919889 -8.2864464 + 43900 1.7380708e-06 -7.7965535 -7.8836122 -8.1291827 -8.3281466 + 44000 1.7646824e-06 -7.8221334 -7.9140624 -8.1666648 -8.3702187 + 44100 1.7915041e-06 -7.8476979 -7.9447062 -8.2044417 -8.4126654 + 44200 1.8185378e-06 -7.8732418 -7.9755475 -8.2425213 -8.4554912 + 44300 1.8457823e-06 -7.8987595 -8.0065827 -8.2809053 -8.4986984 + 44400 1.8732376e-06 -7.9242452 -8.0378114 -8.3195929 -8.5422886 + 44500 1.9009024e-06 -7.9496926 -8.0692574 -8.3585942 -8.5862653 + 44600 1.9287771e-06 -7.9750956 -8.1009455 -8.3979234 -8.6306258 + 44700 1.9568796e-06 -8.0004479 -8.1328733 -8.4375902 -8.6753713 + 44800 1.9852267e-06 -8.0257432 -8.1650252 -8.4775966 -8.7205038 + 44900 2.0138173e-06 -8.0509754 -8.1973908 -8.5179355 -8.7660264 + 45000 2.0426543e-06 -8.0761387 -8.2299659 -8.5585966 -8.8119535 + 45100 2.0717448e-06 -8.1012276 -8.2627482 -8.5995784 -8.8582997 + 45200 2.1010968e-06 -8.1262371 -8.295733 -8.6408768 -8.9050662 + 45300 2.1307207e-06 -8.1511626 -8.3289113 -8.6824783 -8.952247 + 45400 2.1606216e-06 -8.176 -8.362268 -8.7243759 -8.9998355 + 45500 2.1908108e-06 -8.2007459 -8.3957877 -8.7665774 -9.0478269 + 45600 2.2213082e-06 -8.2253973 -8.4294622 -8.8090894 -9.0962176 + 45700 2.2521283e-06 -8.2499518 -8.4632881 -8.8519107 -9.145009 + 45800 2.2832822e-06 -8.2744073 -8.4972575 -8.8950383 -9.1941982 + 45900 2.3147632e-06 -8.2987623 -8.531359 -8.9384703 -9.2437813 + 46000 2.3465754e-06 -8.3230156 -8.5655896 -8.9822085 -9.2937535 + 46100 2.3787288e-06 -8.3471663 -8.5999519 -9.0262548 -9.3441103 + 46200 2.4112412e-06 -8.3712136 -8.6344487 -9.0706087 -9.3948508 + 46300 2.4441202e-06 -8.3951568 -8.6690821 -9.1152687 -9.4459741 + 46400 2.4773664e-06 -8.4189955 -8.7038542 -9.160238 -9.4974773 + 46500 2.5109832e-06 -8.4427289 -8.7387691 -9.2055252 -9.5493598 + 46600 2.5449914e-06 -8.4663562 -8.7738282 -9.2511356 -9.6016247 + 46700 2.579414e-06 -8.4898767 -8.80903 -9.2970756 -9.6542811 + 46800 2.6142781e-06 -8.5132893 -8.8443792 -9.3433586 -9.7073395 + 46900 2.6495975e-06 -8.5365929 -8.8798868 -9.3899934 -9.7608033 + 47000 2.6853869e-06 -8.5597861 -8.915567 -9.4369751 -9.814665 + 47100 2.7216669e-06 -8.5828678 -8.9514302 -9.4842958 -9.8689112 + 47200 2.7584517e-06 -8.6058365 -8.9874749 -9.5319521 -9.9235345 + 47300 2.7957656e-06 -8.6286909 -9.0236916 -9.579942 -9.978542 + 47400 2.8336304e-06 -8.6514298 -9.0600726 -9.6282649 -10.033947 + 47500 2.8720595e-06 -8.6740522 -9.0966179 -9.676922 -10.089757 + 47600 2.9110599e-06 -8.6965572 -9.1333398 -9.7259158 -10.145978 + 47700 2.9506321e-06 -8.7189442 -9.17025 -9.7752484 -10.202619 + 47800 2.990773e-06 -8.7412131 -9.2073578 -9.824923 -10.259692 + 47900 3.0314775e-06 -8.763364 -9.2446643 -9.8749382 -10.317211 + 48000 3.0727446e-06 -8.7853976 -9.2821621 -9.9252891 -10.375187 + 48100 3.1145746e-06 -8.807315 -9.3198445 -9.9759731 -10.433624 + 48200 3.1569733e-06 -8.8291174 -9.3577154 -10.026988 -10.492518 + 48300 3.1999413e-06 -8.8508069 -9.3957874 -10.078334 -10.551857 + 48400 3.243476e-06 -8.8723857 -9.4340674 -10.130014 -10.611634 + 48500 3.2875839e-06 -8.8938562 -9.4725493 -10.182031 -10.671843 + 48600 3.3322818e-06 -8.9152212 -9.5112224 -10.23439 -10.732479 + 48700 3.377592e-06 -8.9364838 -9.5500805 -10.287095 -10.793538 + 48800 3.4235363e-06 -8.957647 -9.5891272 -10.340142 -10.855019 + 48900 3.4701214e-06 -8.9787139 -9.6283737 -10.393527 -10.91692 + 49000 3.5173532e-06 -8.9996878 -9.6678294 -10.447244 -10.979234 + 49100 3.5652329e-06 -9.0205717 -9.7074906 -10.501287 -11.041952 + 49200 3.6137624e-06 -9.0413686 -9.7473481 -10.55566 -11.105071 + 49300 3.6629506e-06 -9.0620814 -9.7873994 -10.610377 -11.168598 + 49400 3.712811e-06 -9.0827128 -9.8276463 -10.66545 -11.232539 + 49500 3.7633584e-06 -9.1032654 -9.8680948 -10.720888 -11.296892 + 49600 3.8146001e-06 -9.1237415 -9.9087544 -10.776703 -11.361653 + 49700 3.8665406e-06 -9.1441435 -9.9496285 -10.832901 -11.426822 + 49800 3.9191804e-06 -9.1644734 -9.9907125 -10.889488 -11.492403 + 49900 3.9725064e-06 -9.1847335 -10.032002 -10.946469 -11.558392 + 50000 4.0265078e-06 -9.2049257 -10.073506 -11.003853 -11.624781 +Loop time of 22.9271 on 1 procs for 30000 steps with 9576 atoms + +Performance: 11305406.065 tau/day, 1308.496 timesteps/s, 12.530 Matom-step/s +99.7% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.5727 | 2.5727 | 2.5727 | 0.0 | 11.22 +Bond | 16.951 | 16.951 | 16.951 | 0.0 | 73.94 +Neigh | 0.25843 | 0.25843 | 0.25843 | 0.0 | 1.13 +Comm | 0.037787 | 0.037787 | 0.037787 | 0.0 | 0.16 +Output | 0.17723 | 0.17723 | 0.17723 | 0.0 | 0.77 +Modify | 2.4504 | 2.4504 | 2.4504 | 0.0 | 10.69 +Other | | 0.4793 | | | 2.09 + +Nlocal: 9576 ave 9576 max 9576 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 44684 ave 44684 max 44684 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 44684 +Ave neighs/atom = 4.666249 +Ave special neighs/atom = 11.495405 +Neighbor list builds = 62 +Dangerous builds = 0 + +# hold load + +unfix 3 +fix 3 load addforce 0.0 0.0 -0.0005 +run 50000 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 22.14 | 22.14 | 22.14 Mbytes + Step KinEng c_zmin1 c_zmin2 c_zmin3 c_zmin4 + 50000 4.0265078e-06 -9.2049257 -10.073506 -11.003853 -11.624781 + 50100 4.078797e-06 -9.2250318 -10.115223 -11.061622 -11.691546 + 50200 4.1270084e-06 -9.2449811 -10.157097 -11.119697 -11.758608 + 50300 4.1711893e-06 -9.2647179 -10.199076 -11.178013 -11.825901 + 50400 4.2114017e-06 -9.2842039 -10.241117 -11.236524 -11.89339 + 50500 4.2477072e-06 -9.3034085 -10.283187 -11.295191 -11.961052 + 50600 4.2801682e-06 -9.3223057 -10.325266 -11.353975 -12.02887 + 50700 4.3088438e-06 -9.3408726 -10.367334 -11.412844 -12.096827 + 50800 4.3338082e-06 -9.3590897 -10.409371 -11.471771 -12.164895 + 50900 4.3551278e-06 -9.3769407 -10.451355 -11.530744 -12.233048 + 51000 4.3728717e-06 -9.3944117 -10.493273 -11.589752 -12.301263 + 51100 4.387118e-06 -9.4114896 -10.535111 -11.648783 -12.369533 + 51200 4.3979324e-06 -9.4281581 -10.576852 -11.707826 -12.437854 + 51300 4.405391e-06 -9.4443998 -10.618478 -11.766867 -12.506225 + 51400 4.4095986e-06 -9.4602071 -10.659965 -11.825894 -12.574638 + 51500 4.4106676e-06 -9.4755859 -10.701294 -11.884892 -12.64309 + 51600 4.4087216e-06 -9.4905472 -10.742454 -11.943846 -12.711578 + 51700 4.4038781e-06 -9.505097 -10.783448 -12.00275 -12.7801 + 51800 4.3962565e-06 -9.519232 -10.824279 -12.061602 -12.848658 + 51900 4.3859809e-06 -9.5329408 -10.86494 -12.120398 -12.917251 + 52000 4.3731813e-06 -9.5462073 -10.905422 -12.179122 -12.985875 + 52100 4.3579929e-06 -9.5590133 -10.945716 -12.237752 -13.05452 + 52200 4.3405399e-06 -9.5713407 -10.985817 -12.296262 -13.123175 + 52300 4.3209453e-06 -9.5831701 -11.025719 -12.354633 -13.191817 + 52400 4.2993304e-06 -9.5944811 -11.065401 -12.412855 -13.260421 + 52500 4.2758022e-06 -9.6052526 -11.104835 -12.470917 -13.32896 + 52600 4.2504626e-06 -9.6154653 -11.144002 -12.528802 -13.397392 + 52700 4.2234264e-06 -9.6251006 -11.182886 -12.586499 -13.465677 + 52800 4.1947978e-06 -9.6341381 -11.221469 -12.643995 -13.533785 + 52900 4.1646861e-06 -9.6425532 -11.259729 -12.701274 -13.601698 + 53000 4.1331936e-06 -9.650319 -11.297644 -12.758321 -13.669405 + 53100 4.1004239e-06 -9.6574113 -11.335194 -12.815117 -13.7369 + 53200 4.0664734e-06 -9.6638134 -11.37236 -12.87165 -13.804166 + 53300 4.0314247e-06 -9.6695187 -11.409125 -12.927908 -13.871183 + 53400 3.9953609e-06 -9.6745308 -11.44547 -12.983882 -13.937932 + 53500 3.958361e-06 -9.678861 -11.481378 -13.039563 -14.004398 + 53600 3.9204924e-06 -9.6825257 -11.516831 -13.094946 -14.070565 + 53700 3.8818222e-06 -9.6855446 -11.55182 -13.150016 -14.136414 + 53800 3.8424179e-06 -9.6879389 -11.586341 -13.20475 -14.201925 + 53900 3.802351e-06 -9.6897295 -11.620382 -13.259122 -14.267094 + 54000 3.7616954e-06 -9.6909351 -11.653935 -13.313107 -14.331924 + 54100 3.7205096e-06 -9.6915723 -11.686988 -13.366686 -14.396421 + 54200 3.6788456e-06 -9.6916562 -11.719539 -13.419853 -14.460587 + 54300 3.6367529e-06 -9.6912028 -11.751587 -13.472603 -14.524419 + 54400 3.5942808e-06 -9.6902301 -11.78313 -13.524935 -14.587911 + 54500 3.5514841e-06 -9.6887575 -11.814165 -13.576852 -14.651062 + 54600 3.5084298e-06 -9.6868041 -11.844692 -13.628353 -14.713879 + 54700 3.4651784e-06 -9.6843863 -11.874712 -13.679436 -14.776371 + 54800 3.4217746e-06 -9.6815167 -11.904226 -13.730098 -14.83854 + 54900 3.3782546e-06 -9.678204 -11.933234 -13.78033 -14.900389 + 55000 3.3346481e-06 -9.6744535 -11.961736 -13.830127 -14.961924 + 55100 3.2909881e-06 -9.6702679 -11.989737 -13.879469 -15.023152 + 55200 3.2473053e-06 -9.6656485 -12.017245 -13.928333 -15.084074 + 55300 3.2036292e-06 -9.6605962 -12.044264 -13.976706 -15.144683 + 55400 3.1599879e-06 -9.6551133 -12.070797 -14.024589 -15.20497 + 55500 3.1164123e-06 -9.6492041 -12.096845 -14.071986 -15.264927 + 55600 3.0729335e-06 -9.6428755 -12.122406 -14.118904 -15.324555 + 55700 3.0295858e-06 -9.6361363 -12.147478 -14.165353 -15.383856 + 55800 2.9863981e-06 -9.6289973 -12.172059 -14.211339 -15.442837 + 55900 2.9433934e-06 -9.6214706 -12.196146 -14.256854 -15.501503 + 56000 2.9006069e-06 -9.6135705 -12.219735 -14.301885 -15.559855 + 56100 2.8580637e-06 -9.6053146 -12.242824 -14.346426 -15.617887 + 56200 2.8157841e-06 -9.5967246 -12.265408 -14.390484 -15.675588 + 56300 2.7737823e-06 -9.5878265 -12.287481 -14.434061 -15.732951 + 56400 2.7320692e-06 -9.57865 -12.309038 -14.47716 -15.789968 + 56500 2.6906601e-06 -9.5692276 -12.330071 -14.519787 -15.84663 + 56600 2.64957e-06 -9.5595926 -12.350575 -14.561944 -15.902927 + 56700 2.6088072e-06 -9.5497782 -12.370547 -14.60363 -15.958858 + 56800 2.5683744e-06 -9.5398154 -12.389981 -14.644843 -16.014425 + 56900 2.5282818e-06 -9.5297323 -12.408875 -14.685587 -16.069637 + 57000 2.4885392e-06 -9.5195536 -12.427228 -14.725871 -16.124497 + 57100 2.4491523e-06 -9.5093009 -12.445039 -14.765701 -16.179012 + 57200 2.4101321e-06 -9.4989936 -12.462311 -14.805087 -16.23318 + 57300 2.3714907e-06 -9.4886498 -12.479044 -14.84404 -16.286992 + 57400 2.3332399e-06 -9.4782868 -12.49524 -14.882568 -16.340447 + 57500 2.2953888e-06 -9.4679208 -12.510901 -14.920681 -16.393547 + 57600 2.2579441e-06 -9.4575669 -12.526028 -14.958383 -16.446294 + 57700 2.2209217e-06 -9.4472381 -12.540624 -14.995679 -16.498686 + 57800 2.1843408e-06 -9.4369452 -12.55469 -15.032568 -16.550724 + 57900 2.148211e-06 -9.4266967 -12.568233 -15.069047 -16.602411 + 58000 2.1125489e-06 -9.4164992 -12.58126 -15.105109 -16.653755 + 58100 2.0773723e-06 -9.4063586 -12.59378 -15.140752 -16.704763 + 58200 2.0426985e-06 -9.3962804 -12.605798 -15.175974 -16.755442 + 58300 2.0085419e-06 -9.3862716 -12.617325 -15.210773 -16.805792 + 58400 1.9749169e-06 -9.376341 -12.628369 -15.24515 -16.855808 + 58500 1.9418404e-06 -9.3664996 -12.63894 -15.279106 -16.905489 + 58600 1.9093242e-06 -9.3567612 -12.649046 -15.312642 -16.954835 + 58700 1.8773791e-06 -9.3471412 -12.658696 -15.34576 -17.003847 + 58800 1.8460246e-06 -9.3376564 -12.667897 -15.37846 -17.052526 + 58900 1.8152788e-06 -9.328325 -12.676657 -15.410738 -17.10088 + 59000 1.7851552e-06 -9.3191656 -12.684982 -15.442593 -17.148921 + 59100 1.755666e-06 -9.3101975 -12.692877 -15.474026 -17.196659 + 59200 1.7268136e-06 -9.3014405 -12.700347 -15.505042 -17.2441 + 59300 1.6985996e-06 -9.2929146 -12.707394 -15.535645 -17.291248 + 59400 1.6710291e-06 -9.2846391 -12.714019 -15.565835 -17.33811 + 59500 1.6441075e-06 -9.2766326 -12.720223 -15.595615 -17.384691 + 59600 1.6178416e-06 -9.2689115 -12.726005 -15.624992 -17.43099 + 59700 1.5922386e-06 -9.2614901 -12.731366 -15.653971 -17.477 + 59800 1.5673001e-06 -9.2543795 -12.736306 -15.682555 -17.522719 + 59900 1.5430251e-06 -9.2475875 -12.740826 -15.710746 -17.568159 + 60000 1.5194111e-06 -9.2411192 -12.744926 -15.738547 -17.613333 + 60100 1.4964539e-06 -9.2349771 -12.748607 -15.765961 -17.658252 + 60200 1.4741469e-06 -9.2291618 -12.751872 -15.792994 -17.702918 + 60300 1.452483e-06 -9.2236729 -12.754724 -15.81965 -17.74733 + 60400 1.4314582e-06 -9.2185089 -12.757166 -15.845934 -17.791492 + 60500 1.4110672e-06 -9.2136679 -12.759202 -15.871853 -17.835407 + 60600 1.3913025e-06 -9.2091471 -12.760837 -15.897411 -17.879083 + 60700 1.3721603e-06 -9.2049432 -12.762077 -15.922613 -17.922523 + 60800 1.3536465e-06 -9.2010525 -12.762928 -15.947463 -17.965735 + 60900 1.3357766e-06 -9.1974705 -12.763398 -15.971968 -18.008725 + 61000 1.3185562e-06 -9.1941931 -12.763493 -15.996134 -18.051505 + 61100 1.301988e-06 -9.1912164 -12.763221 -16.019967 -18.094083 + 61200 1.286069e-06 -9.1885375 -12.762591 -16.043469 -18.136466 + 61300 1.2707926e-06 -9.1861551 -12.761611 -16.066641 -18.178649 + 61400 1.2561515e-06 -9.1840693 -12.76029 -16.089484 -18.220615 + 61500 1.242133e-06 -9.1822818 -12.758637 -16.112003 -18.262351 + 61600 1.2287209e-06 -9.1807954 -12.756662 -16.134201 -18.303856 + 61700 1.2158979e-06 -9.1796136 -12.754377 -16.156083 -18.345144 + 61800 1.2036478e-06 -9.1787399 -12.751795 -16.177651 -18.38623 + 61900 1.1919547e-06 -9.1781775 -12.748922 -16.198906 -18.427133 + 62000 1.1808002e-06 -9.1779287 -12.745765 -16.219849 -18.467871 + 62100 1.1701663e-06 -9.1779946 -12.742326 -16.240481 -18.508455 + 62200 1.1600337e-06 -9.1783751 -12.738614 -16.260802 -18.548894 + 62300 1.1503837e-06 -9.1790684 -12.734634 -16.280813 -18.589193 + 62400 1.1411983e-06 -9.1800712 -12.730396 -16.300513 -18.629354 + 62500 1.1324607e-06 -9.1813786 -12.725909 -16.319903 -18.66938 + 62600 1.1241544e-06 -9.1829836 -12.721181 -16.338988 -18.709274 + 62700 1.116262e-06 -9.1848777 -12.716223 -16.35777 -18.749044 + 62800 1.108765e-06 -9.1870506 -12.711044 -16.376253 -18.788702 + 62900 1.1016477e-06 -9.1894902 -12.705655 -16.394443 -18.828258 + 63000 1.094896e-06 -9.1921835 -12.700068 -16.412344 -18.867726 + 63100 1.088493e-06 -9.1951168 -12.694294 -16.429963 -18.907115 + 63200 1.0824237e-06 -9.1982759 -12.688346 -16.447305 -18.946431 + 63300 1.0766757e-06 -9.201647 -12.682239 -16.464375 -18.985678 + 63400 1.0712329e-06 -9.2052162 -12.675991 -16.481176 -19.02486 + 63500 1.0660797e-06 -9.2089708 -12.669619 -16.497712 -19.06398 + 63600 1.0612034e-06 -9.2128981 -12.663141 -16.513984 -19.103042 + 63700 1.0565937e-06 -9.2169867 -12.656574 -16.529997 -19.142048 + 63800 1.0522386e-06 -9.2212255 -12.649931 -16.545756 -19.181 + 63900 1.0481256e-06 -9.2256043 -12.643227 -16.561263 -19.219895 + 64000 1.044244e-06 -9.2301138 -12.636472 -16.576521 -19.258733 + 64100 1.0405828e-06 -9.2347455 -12.62968 -16.591533 -19.297522 + 64200 1.0371318e-06 -9.2394921 -12.622862 -16.606302 -19.336268 + 64300 1.0338805e-06 -9.2443471 -12.616029 -16.620834 -19.374972 + 64400 1.0308178e-06 -9.2493047 -12.609192 -16.635132 -19.413635 + 64500 1.0279322e-06 -9.25436 -12.602365 -16.649201 -19.452262 + 64600 1.0252144e-06 -9.2595079 -12.595558 -16.663042 -19.490855 + 64700 1.0226584e-06 -9.2647432 -12.588783 -16.676659 -19.52942 + 64800 1.0202581e-06 -9.27006 -12.582049 -16.690053 -19.567963 + 64900 1.0180105e-06 -9.2754516 -12.575365 -16.703226 -19.606489 + 65000 1.0159116e-06 -9.2809101 -12.568738 -16.71618 -19.645 + 65100 1.0139582e-06 -9.2864265 -12.562176 -16.728919 -19.683496 + 65200 1.0121467e-06 -9.2919907 -12.555687 -16.741443 -19.721981 + 65300 1.010459e-06 -9.2975917 -12.549279 -16.753754 -19.760461 + 65400 1.0086577e-06 -9.3032175 -12.542962 -16.765856 -19.798942 + 65500 1.0066536e-06 -9.3088558 -12.536743 -16.77775 -19.837426 + 65600 1.004453e-06 -9.3144938 -12.530633 -16.789439 -19.875926 + 65700 1.0020671e-06 -9.3201185 -12.524639 -16.800925 -19.914483 + 65800 9.9950947e-07 -9.3257167 -12.518772 -16.812212 -19.953131 + 65900 9.968017e-07 -9.3312758 -12.51304 -16.823301 -19.99191 + 66000 9.9396747e-07 -9.3367833 -12.507452 -16.834197 -20.030859 + 66100 9.9102959e-07 -9.3422277 -12.502016 -16.844902 -20.069999 + 66200 9.8798593e-07 -9.347598 -12.496742 -16.855419 -20.109314 + 66300 9.8482957e-07 -9.3528845 -12.491638 -16.865751 -20.148757 + 66400 9.8156176e-07 -9.3580785 -12.486712 -16.875901 -20.18827 + 66500 9.7819021e-07 -9.3631727 -12.481972 -16.885873 -20.227801 + 66600 9.7472343e-07 -9.3681604 -12.477425 -16.895668 -20.267311 + 66700 9.712278e-07 -9.3730365 -12.473074 -16.905289 -20.306775 + 66800 9.6780941e-07 -9.3777962 -12.468926 -16.91474 -20.346176 + 66900 9.6449158e-07 -9.382436 -12.464981 -16.924023 -20.385501 + 67000 9.6129032e-07 -9.3869529 -12.461244 -16.93314 -20.424732 + 67100 9.5785756e-07 -9.3913442 -12.457714 -16.942095 -20.463854 + 67200 9.5371856e-07 -9.395608 -12.454395 -16.95089 -20.502856 + 67300 9.4891171e-07 -9.3997425 -12.451287 -16.959527 -20.541724 + 67400 9.4350467e-07 -9.4037458 -12.448392 -16.968007 -20.580497 + 67500 9.3758361e-07 -9.4076163 -12.44571 -16.976331 -20.619217 + 67600 9.3125213e-07 -9.4113518 -12.443241 -16.984501 -20.657864 + 67700 9.2467231e-07 -9.4149495 -12.440987 -16.992519 -20.696471 + 67800 9.17895e-07 -9.4184062 -12.438946 -17.000385 -20.735059 + 67900 9.1092621e-07 -9.4217181 -12.437119 -17.008104 -20.773606 + 68000 9.037436e-07 -9.4248808 -12.435503 -17.015678 -20.812066 + 68100 8.9632454e-07 -9.4278893 -12.434097 -17.023109 -20.850368 + 68200 8.8868003e-07 -9.4307387 -12.4329 -17.030401 -20.888421 + 68300 8.8082464e-07 -9.4334238 -12.431911 -17.037556 -20.926152 + 68400 8.7264845e-07 -9.4359399 -12.43113 -17.044575 -20.963515 + 68500 8.6414307e-07 -9.4382824 -12.430554 -17.051461 -21.000495 + 68600 8.5530062e-07 -9.4404476 -12.430183 -17.058216 -21.037119 + 68700 8.4608456e-07 -9.4424321 -12.430015 -17.06484 -21.073453 + 68800 8.3649395e-07 -9.4442336 -12.43005 -17.071335 -21.109547 + 68900 8.26558e-07 -9.4458505 -12.430284 -17.077704 -21.145443 + 69000 8.1633394e-07 -9.4472821 -12.430715 -17.083949 -21.18119 + 69100 8.0586323e-07 -9.4485286 -12.43134 -17.090072 -21.216828 + 69200 7.9515603e-07 -9.4495911 -12.432155 -17.096076 -21.252376 + 69300 7.8411468e-07 -9.4504716 -12.433156 -17.101965 -21.28781 + 69400 7.7269813e-07 -9.451173 -12.434339 -17.10774 -21.323067 + 69500 7.6097e-07 -9.4516988 -12.435697 -17.113404 -21.358081 + 69600 7.4897838e-07 -9.452053 -12.437226 -17.118958 -21.392816 + 69700 7.3673467e-07 -9.4522403 -12.43892 -17.124405 -21.427257 + 69800 7.2422692e-07 -9.4522654 -12.440771 -17.129747 -21.461389 + 69900 7.1145876e-07 -9.4521333 -12.442772 -17.134983 -21.495214 + 70000 6.9848658e-07 -9.4518489 -12.444918 -17.140117 -21.52874 + 70100 6.8538497e-07 -9.4514172 -12.4472 -17.14515 -21.56198 + 70200 6.7218615e-07 -9.4508426 -12.449612 -17.150082 -21.594934 + 70300 6.5891116e-07 -9.4501296 -12.452147 -17.154915 -21.627574 + 70400 6.4558523e-07 -9.449282 -12.4548 -17.15965 -21.659856 + 70500 6.321348e-07 -9.4483035 -12.457562 -17.164289 -21.691733 + 70600 6.1842797e-07 -9.4471971 -12.460429 -17.168832 -21.723164 + 70700 6.0457328e-07 -9.4459655 -12.463394 -17.17328 -21.754134 + 70800 5.9068715e-07 -9.4446113 -12.466451 -17.177635 -21.784664 + 70900 5.7677945e-07 -9.4431365 -12.469592 -17.181897 -21.814795 + 71000 5.6284242e-07 -9.4415434 -12.472812 -17.186067 -21.844543 + 71100 5.4889964e-07 -9.4398341 -12.476105 -17.190147 -21.87395 + 71200 5.3499627e-07 -9.4380111 -12.479464 -17.194138 -21.903053 + 71300 5.211734e-07 -9.4360772 -12.482883 -17.198042 -21.931868 + 71400 5.074343e-07 -9.4340358 -12.486356 -17.20186 -21.960377 + 71500 4.9377075e-07 -9.4318907 -12.489877 -17.205593 -21.988521 + 71600 4.8019586e-07 -9.4296466 -12.49344 -17.209244 -22.016228 + 71700 4.6675091e-07 -9.4273083 -12.49704 -17.212814 -22.043447 + 71800 4.5346957e-07 -9.4248817 -12.50067 -17.216304 -22.070153 + 71900 4.4036826e-07 -9.4223728 -12.504322 -17.219718 -22.096336 + 72000 4.2744648e-07 -9.419788 -12.507992 -17.223055 -22.121996 + 72100 4.147014e-07 -9.4171345 -12.51167 -17.226319 -22.147148 + 72200 4.0213736e-07 -9.4144191 -12.515351 -17.229509 -22.171827 + 72300 3.8968552e-07 -9.4116493 -12.519027 -17.232628 -22.196072 + 72400 3.7731834e-07 -9.4088323 -12.522691 -17.235676 -22.21991 + 72500 3.6504308e-07 -9.4059756 -12.526336 -17.238655 -22.243351 + 72600 3.528774e-07 -9.4030861 -12.529956 -17.241566 -22.266407 + 72700 3.4084323e-07 -9.4001707 -12.533544 -17.244411 -22.289072 + 72800 3.2896553e-07 -9.397236 -12.537094 -17.24719 -22.31133 + 72900 3.1726887e-07 -9.3942879 -12.5406 -17.249904 -22.333185 + 73000 3.057647e-07 -9.3913321 -12.544056 -17.252556 -22.35466 + 73100 2.9445657e-07 -9.3883737 -12.547457 -17.255145 -22.375774 + 73200 2.8334766e-07 -9.3854172 -12.550799 -17.257674 -22.39654 + 73300 2.7244019e-07 -9.3824667 -12.554077 -17.260143 -22.416954 + 73400 2.6173654e-07 -9.3795259 -12.557287 -17.262553 -22.437012 + 73500 2.5123949e-07 -9.3765982 -12.560425 -17.264905 -22.456701 + 73600 2.4095345e-07 -9.3736867 -12.563489 -17.267198 -22.476005 + 73700 2.3088425e-07 -9.3707943 -12.566475 -17.269435 -22.494898 + 73800 2.2103772e-07 -9.3679238 -12.569379 -17.271616 -22.513361 + 73900 2.1141867e-07 -9.3650781 -12.572199 -17.273741 -22.531381 + 74000 2.0203343e-07 -9.3622601 -12.574931 -17.275812 -22.548956 + 74100 1.9289161e-07 -9.3594732 -12.577573 -17.277828 -22.566091 + 74200 1.8399577e-07 -9.3567207 -12.580122 -17.279791 -22.582801 + 74300 1.7534721e-07 -9.3540064 -12.582575 -17.281701 -22.599099 + 74400 1.6694731e-07 -9.3513342 -12.584931 -17.28356 -22.614992 + 74500 1.5879542e-07 -9.3487085 -12.587186 -17.285368 -22.630485 + 74600 1.5088951e-07 -9.3461336 -12.589339 -17.287126 -22.645577 + 74700 1.4323414e-07 -9.3436142 -12.591387 -17.288835 -22.660261 + 74800 1.3582974e-07 -9.3411548 -12.593327 -17.290496 -22.674528 + 74900 1.286769e-07 -9.33876 -12.595158 -17.292111 -22.68837 + 75000 1.2177641e-07 -9.3364341 -12.596878 -17.29368 -22.701789 + 75100 1.1512768e-07 -9.3341814 -12.598483 -17.295205 -22.714793 + 75200 1.0872721e-07 -9.3320056 -12.599973 -17.296687 -22.727401 + 75300 1.0257069e-07 -9.3299104 -12.601347 -17.298127 -22.739632 + 75400 9.665416e-08 -9.3278989 -12.602602 -17.299526 -22.751495 + 75500 9.0973866e-08 -9.3259737 -12.603739 -17.300885 -22.762997 + 75600 8.5524905e-08 -9.324137 -12.604758 -17.302204 -22.774142 + 75700 8.0303176e-08 -9.3223906 -12.605658 -17.303486 -22.78493 + 75800 7.5300214e-08 -9.3207356 -12.60644 -17.304729 -22.795363 + 75900 7.0512608e-08 -9.3191729 -12.607105 -17.305936 -22.80544 + 76000 6.5937317e-08 -9.3177028 -12.607654 -17.307107 -22.815168 + 76100 6.1570362e-08 -9.3163251 -12.608089 -17.308242 -22.82456 + 76200 5.7406859e-08 -9.3150395 -12.608412 -17.309341 -22.833635 + 76300 5.3442002e-08 -9.3138454 -12.608624 -17.310405 -22.842413 + 76400 4.9671366e-08 -9.3127422 -12.608727 -17.311435 -22.85091 + 76500 4.6090508e-08 -9.3117289 -12.608725 -17.31243 -22.859136 + 76600 4.2694669e-08 -9.3108047 -12.608619 -17.313392 -22.867095 + 76700 3.9478997e-08 -9.309969 -12.608411 -17.31432 -22.874788 + 76800 3.6438661e-08 -9.309221 -12.608103 -17.315215 -22.882214 + 76900 3.3568879e-08 -9.3085604 -12.607699 -17.316076 -22.889371 + 77000 3.0864591e-08 -9.3079867 -12.6072 -17.316905 -22.896257 + 77100 2.8320317e-08 -9.3074999 -12.606609 -17.317702 -22.902871 + 77200 2.5930255e-08 -9.3070998 -12.605927 -17.318468 -22.909213 + 77300 2.3688703e-08 -9.3067865 -12.605157 -17.319202 -22.915285 + 77400 2.1590179e-08 -9.3065602 -12.604302 -17.319905 -22.921089 + 77500 1.9629471e-08 -9.3064208 -12.603364 -17.320577 -22.926623 + 77600 1.7801632e-08 -9.3063682 -12.602344 -17.32122 -22.931888 + 77700 1.610156e-08 -9.3064024 -12.601246 -17.321834 -22.936879 + 77800 1.4523448e-08 -9.3065229 -12.600071 -17.322418 -22.941594 + 77900 1.3062773e-08 -9.3067289 -12.598823 -17.322975 -22.94603 + 78000 1.1715357e-08 -9.3070194 -12.597503 -17.323505 -22.950189 + 78100 1.0477075e-08 -9.3073932 -12.596116 -17.324007 -22.954079 + 78200 9.3438122e-09 -9.3078485 -12.594663 -17.324484 -22.957701 + 78300 8.3114812e-09 -9.3083833 -12.593149 -17.324935 -22.96106 + 78400 7.3759632e-09 -9.3089952 -12.591578 -17.325361 -22.964161 + 78500 6.5329698e-09 -9.3096816 -12.589952 -17.325764 -22.96701 + 78600 5.7782395e-09 -9.3104396 -12.588276 -17.326142 -22.969612 + 78700 5.1076313e-09 -9.3112659 -12.586554 -17.326498 -22.971972 + 78800 4.5171232e-09 -9.3121572 -12.584791 -17.326832 -22.974094 + 78900 4.0028003e-09 -9.31311 -12.582991 -17.327144 -22.975982 + 79000 3.5608745e-09 -9.3141209 -12.581158 -17.327434 -22.97764 + 79100 3.1877271e-09 -9.3151861 -12.579296 -17.327704 -22.979075 + 79200 2.879901e-09 -9.3163023 -12.57741 -17.327953 -22.980294 + 79300 2.6340677e-09 -9.3174661 -12.575503 -17.328182 -22.981301 + 79400 2.4470004e-09 -9.3186742 -12.573581 -17.328391 -22.982104 + 79500 2.3155651e-09 -9.3199237 -12.571645 -17.32858 -22.982709 + 79600 2.2367165e-09 -9.3212116 -12.569701 -17.328749 -22.983122 + 79700 2.2074751e-09 -9.3225353 -12.56775 -17.328899 -22.983348 + 79800 2.2248763e-09 -9.3238925 -12.565798 -17.329029 -22.983393 + 79900 2.2858845e-09 -9.3252808 -12.563846 -17.32914 -22.983261 + 80000 2.3872196e-09 -9.3266982 -12.561897 -17.329232 -22.982957 + 80100 2.5252324e-09 -9.3281425 -12.559954 -17.329305 -22.982486 + 80200 2.6960974e-09 -9.3296118 -12.55802 -17.329359 -22.981853 + 80300 2.8959618e-09 -9.331104 -12.556098 -17.329394 -22.981058 + 80400 3.1210894e-09 -9.3326171 -12.554189 -17.329411 -22.980101 + 80500 3.3679774e-09 -9.3341489 -12.552297 -17.329409 -22.978976 + 80600 3.6334239e-09 -9.3356972 -12.550424 -17.329389 -22.977679 + 80700 3.9145016e-09 -9.3372595 -12.548572 -17.329351 -22.976203 + 80800 4.2084436e-09 -9.3388332 -12.546744 -17.329295 -22.974545 + 80900 4.5125046e-09 -9.3404155 -12.544942 -17.329222 -22.972704 + 81000 4.8238281e-09 -9.3420036 -12.543169 -17.329133 -22.970685 + 81100 5.1393798e-09 -9.3435944 -12.541428 -17.329026 -22.968494 + 81200 5.4559668e-09 -9.3451847 -12.539721 -17.328904 -22.966139 + 81300 5.7703158e-09 -9.3467713 -12.538051 -17.328766 -22.96363 + 81400 6.0791507e-09 -9.348351 -12.536422 -17.328612 -22.960975 + 81500 6.3792764e-09 -9.3499205 -12.534834 -17.328443 -22.958187 + 81600 6.667679e-09 -9.3514766 -12.533292 -17.32826 -22.955278 + 81700 6.9416205e-09 -9.3530162 -12.531797 -17.328064 -22.952257 + 81800 7.1987179e-09 -9.3545365 -12.530353 -17.327853 -22.949137 + 81900 7.4370092e-09 -9.3560346 -12.528961 -17.327631 -22.945927 + 82000 7.6549817e-09 -9.3575079 -12.527622 -17.327396 -22.942639 + 82100 7.8515201e-09 -9.3589542 -12.52634 -17.327149 -22.939283 + 82200 8.0257897e-09 -9.3603713 -12.525115 -17.326892 -22.935868 + 82300 8.177098e-09 -9.3617574 -12.523948 -17.326624 -22.932403 + 82400 8.3047752e-09 -9.3631109 -12.52284 -17.326347 -22.928896 + 82500 8.4081006e-09 -9.3644305 -12.521792 -17.326061 -22.925357 + 82600 8.48631e-09 -9.3657149 -12.520805 -17.325766 -22.921791 + 82700 8.5386892e-09 -9.3669632 -12.519878 -17.325464 -22.918207 + 82800 8.5647081e-09 -9.3681746 -12.519013 -17.325156 -22.914612 + 82900 8.5641292e-09 -9.3693481 -12.518209 -17.324841 -22.911013 + 83000 8.5370622e-09 -9.3704831 -12.517465 -17.324521 -22.907414 + 83100 8.4839711e-09 -9.3715789 -12.516782 -17.324196 -22.90382 + 83200 8.4056463e-09 -9.3726347 -12.516159 -17.323867 -22.900232 + 83300 8.3031519e-09 -9.3736498 -12.515596 -17.323534 -22.896654 + 83400 8.1777561e-09 -9.3746234 -12.515094 -17.323198 -22.893084 + 83500 8.0308562e-09 -9.3755545 -12.51465 -17.32286 -22.889524 + 83600 7.8639089e-09 -9.3764422 -12.514266 -17.32252 -22.885976 + 83700 7.6783756e-09 -9.3772856 -12.513941 -17.322179 -22.882442 + 83800 7.4756841e-09 -9.3780835 -12.513674 -17.321837 -22.878926 + 83900 7.257211e-09 -9.3788351 -12.513466 -17.321494 -22.875433 + 84000 7.0242926e-09 -9.3795392 -12.513316 -17.321152 -22.87197 + 84100 6.7782694e-09 -9.3801949 -12.513225 -17.32081 -22.868545 + 84200 6.5205501e-09 -9.3808014 -12.51319 -17.32047 -22.865167 + 84300 6.2526645e-09 -9.3813579 -12.513214 -17.320132 -22.861844 + 84400 5.9762864e-09 -9.3818637 -12.513294 -17.319797 -22.858586 + 84500 5.6932252e-09 -9.3823185 -12.51343 -17.319464 -22.855402 + 84600 5.4053952e-09 -9.3827218 -12.513622 -17.319136 -22.852302 + 84700 5.114762e-09 -9.3830738 -12.513868 -17.318811 -22.849291 + 84800 4.8232725e-09 -9.3833744 -12.514168 -17.318492 -22.846377 + 84900 4.5327819e-09 -9.3836242 -12.514521 -17.318178 -22.843565 + 85000 4.2449939e-09 -9.3838235 -12.514924 -17.317869 -22.840858 + 85100 3.9614258e-09 -9.3839731 -12.515376 -17.317567 -22.838261 + 85200 3.683405e-09 -9.3840739 -12.515875 -17.317272 -22.835774 + 85300 3.4120954e-09 -9.384127 -12.51642 -17.316984 -22.8334 + 85400 3.1485479e-09 -9.3841335 -12.517009 -17.316704 -22.831141 + 85500 2.8937607e-09 -9.3840947 -12.517639 -17.316432 -22.828998 + 85600 2.6487302e-09 -9.3840117 -12.518308 -17.316168 -22.826972 + 85700 2.4144738e-09 -9.383886 -12.519014 -17.315913 -22.825062 + 85800 2.1920178e-09 -9.3837188 -12.519754 -17.315667 -22.823268 + 85900 1.9823576e-09 -9.3835113 -12.520528 -17.31543 -22.821589 + 86000 1.7864049e-09 -9.3832647 -12.521332 -17.315203 -22.820024 + 86100 1.6049407e-09 -9.3829802 -12.522164 -17.314986 -22.81857 + 86200 1.4385795e-09 -9.3826589 -12.523023 -17.314778 -22.817226 + 86300 1.2877519e-09 -9.3823016 -12.523906 -17.314581 -22.815991 + 86400 1.152703e-09 -9.3819094 -12.524812 -17.314394 -22.814864 + 86500 1.0335007e-09 -9.3814833 -12.525739 -17.314217 -22.813845 + 86600 9.3005621e-10 -9.381024 -12.526686 -17.31405 -22.812932 + 86700 8.4215379e-10 -9.3805324 -12.52765 -17.313894 -22.812128 + 86800 7.6948733e-10 -9.3800096 -12.52863 -17.313748 -22.811431 + 86900 7.1169892e-10 -9.3794564 -12.529624 -17.313613 -22.810845 + 87000 6.6841107e-10 -9.3788739 -12.530632 -17.313488 -22.81037 + 87100 6.3924337e-10 -9.3782632 -12.53165 -17.313374 -22.810009 + 87200 6.2380809e-10 -9.3776256 -12.532679 -17.313271 -22.809763 + 87300 6.2168519e-10 -9.3769622 -12.533716 -17.313178 -22.809634 + 87400 6.3238498e-10 -9.3762746 -12.53476 -17.313096 -22.809622 + 87500 6.5531164e-10 -9.3755643 -12.535808 -17.313026 -22.809727 + 87600 6.8974014e-10 -9.3748329 -12.53686 -17.312965 -22.809946 + 87700 7.3481344e-10 -9.3740822 -12.537913 -17.312916 -22.810279 + 87800 7.8956013e-10 -9.373314 -12.538965 -17.312878 -22.810722 + 87900 8.529276e-10 -9.3725302 -12.540014 -17.312851 -22.811271 + 88000 9.2382332e-10 -9.3717326 -12.541058 -17.312834 -22.811923 + 88100 1.0011562e-09 -9.3709232 -12.542096 -17.312828 -22.812673 + 88200 1.0838705e-09 -9.370104 -12.543125 -17.312832 -22.813519 + 88300 1.1709672e-09 -9.3692767 -12.544143 -17.312847 -22.814455 + 88400 1.2615099e-09 -9.3684432 -12.545149 -17.312872 -22.815477 + 88500 1.354617e-09 -9.3676053 -12.54614 -17.312906 -22.816582 + 88600 1.4494437e-09 -9.3667647 -12.547115 -17.312951 -22.817765 + 88700 1.5451589e-09 -9.3659227 -12.548072 -17.313004 -22.81902 + 88800 1.6409241e-09 -9.365081 -12.54901 -17.313067 -22.820344 + 88900 1.7358808e-09 -9.3642407 -12.549928 -17.313138 -22.821731 + 89000 1.829151e-09 -9.3634033 -12.550823 -17.313217 -22.823178 + 89100 1.9198491e-09 -9.3625697 -12.551696 -17.313305 -22.82468 + 89200 2.0071045e-09 -9.3617411 -12.552545 -17.3134 -22.826234 + 89300 2.090087e-09 -9.3609185 -12.553369 -17.313503 -22.827835 + 89400 2.1680332e-09 -9.3601028 -12.554167 -17.313612 -22.829481 + 89500 2.240269e-09 -9.359295 -12.55494 -17.313728 -22.831168 + 89600 2.3062246e-09 -9.358496 -12.555685 -17.313851 -22.832895 + 89700 2.3654413e-09 -9.3577067 -12.556403 -17.313979 -22.834658 + 89800 2.4175676e-09 -9.3569281 -12.557093 -17.314114 -22.836457 + 89900 2.4623443e-09 -9.3561611 -12.557755 -17.314253 -22.838289 + 90000 2.4995836e-09 -9.3554069 -12.558388 -17.314398 -22.840153 + 90100 2.5291444e-09 -9.3546663 -12.558992 -17.314548 -22.842047 + 90200 2.5509117e-09 -9.3539406 -12.559566 -17.314702 -22.843967 + 90300 2.5647856e-09 -9.3532307 -12.56011 -17.314861 -22.845911 + 90400 2.5706824e-09 -9.3525378 -12.560623 -17.315023 -22.847874 + 90500 2.5685486e-09 -9.351863 -12.561105 -17.31519 -22.849853 + 90600 2.5583814e-09 -9.3512074 -12.561556 -17.31536 -22.851841 + 90700 2.54025e-09 -9.3505721 -12.561974 -17.315533 -22.853835 + 90800 2.5143108e-09 -9.3499581 -12.56236 -17.315709 -22.855829 + 90900 2.4808131e-09 -9.3493663 -12.562713 -17.315887 -22.857818 + 91000 2.4400949e-09 -9.3487977 -12.563032 -17.316068 -22.859798 + 91100 2.3925689e-09 -9.3482529 -12.563319 -17.31625 -22.861763 + 91200 2.3387042e-09 -9.3477327 -12.563571 -17.316433 -22.863711 + 91300 2.2790054e-09 -9.3472377 -12.563789 -17.316618 -22.865637 + 91400 2.2139935e-09 -9.3467682 -12.563974 -17.316803 -22.867537 + 91500 2.1441896e-09 -9.3463247 -12.564125 -17.316989 -22.86941 + 91600 2.0701055e-09 -9.3459073 -12.564243 -17.317174 -22.871252 + 91700 1.9922402e-09 -9.3455162 -12.564328 -17.317359 -22.87306 + 91800 1.9110826e-09 -9.3451515 -12.56438 -17.317543 -22.874832 + 91900 1.8271204e-09 -9.344813 -12.5644 -17.317726 -22.876566 + 92000 1.7408508e-09 -9.3445008 -12.564389 -17.317907 -22.878261 + 92100 1.6527904e-09 -9.3442146 -12.564347 -17.318086 -22.879913 + 92200 1.5634808e-09 -9.3439543 -12.564275 -17.318263 -22.881522 + 92300 1.4734874e-09 -9.3437197 -12.564174 -17.318438 -22.883086 + 92400 1.3833916e-09 -9.3435107 -12.564044 -17.31861 -22.884604 + 92500 1.293777e-09 -9.3433269 -12.563888 -17.318778 -22.886074 + 92600 1.2052122e-09 -9.3431683 -12.563704 -17.318944 -22.887495 + 92700 1.1182337e-09 -9.3430347 -12.563496 -17.319106 -22.888867 + 92800 1.0333314e-09 -9.3429259 -12.563262 -17.319265 -22.890188 + 92900 9.5094008e-10 -9.3428419 -12.563005 -17.319419 -22.891457 + 93000 8.7143713e-10 -9.3427824 -12.562725 -17.319571 -22.892674 + 93100 7.9514727e-10 -9.3427473 -12.562422 -17.319718 -22.893836 + 93200 7.2235222e-10 -9.3427365 -12.562098 -17.319861 -22.894943 + 93300 6.5330251e-10 -9.3427498 -12.561754 -17.32 -22.895991 + 93400 5.8822831e-10 -9.342787 -12.561389 -17.320134 -22.896981 + 93500 5.2734631e-10 -9.3428479 -12.561006 -17.320264 -22.897909 + 93600 4.7086102e-10 -9.3429322 -12.560604 -17.32039 -22.898774 + 93700 4.1896043e-10 -9.3430395 -12.560184 -17.32051 -22.899575 + 93800 3.7180759e-10 -9.3431694 -12.559748 -17.320626 -22.90031 + 93900 3.2953055e-10 -9.3433213 -12.559296 -17.320736 -22.900979 + 94000 2.9221312e-10 -9.3434948 -12.558829 -17.320841 -22.901581 + 94100 2.5988848e-10 -9.3436891 -12.558347 -17.320941 -22.902116 + 94200 2.3253663e-10 -9.3439036 -12.557853 -17.321035 -22.902584 + 94300 2.1008603e-10 -9.3441374 -12.557346 -17.321124 -22.902985 + 94400 1.9241905e-10 -9.3443897 -12.556829 -17.321207 -22.903321 + 94500 1.7938028e-10 -9.3446597 -12.556301 -17.321284 -22.903593 + 94600 1.7078669e-10 -9.3449463 -12.555765 -17.321355 -22.9038 + 94700 1.6643777e-10 -9.3452488 -12.555221 -17.321421 -22.903946 + 94800 1.661242e-10 -9.3455661 -12.554671 -17.32148 -22.90403 + 94900 1.696333e-10 -9.3458974 -12.554116 -17.321533 -22.904055 + 95000 1.7675047e-10 -9.3462416 -12.553556 -17.32158 -22.904022 + 95100 1.8725666e-10 -9.346598 -12.552994 -17.321621 -22.903932 + 95200 2.0092296e-10 -9.3469656 -12.552431 -17.321656 -22.903787 + 95300 2.1750427e-10 -9.3473436 -12.551866 -17.321685 -22.903588 + 95400 2.3673443e-10 -9.3477313 -12.551302 -17.321709 -22.903336 + 95500 2.5832421e-10 -9.3481278 -12.55074 -17.321726 -22.903034 + 95600 2.8196334e-10 -9.3485325 -12.55018 -17.321739 -22.902682 + 95700 3.0732612e-10 -9.3489446 -12.549624 -17.321745 -22.902281 + 95800 3.3407969e-10 -9.3493635 -12.549072 -17.321746 -22.901832 + 95900 3.6189322e-10 -9.3497886 -12.548525 -17.321743 -22.901338 + 96000 3.9044647e-10 -9.3502191 -12.547984 -17.321734 -22.900798 + 96100 4.1943628e-10 -9.3506544 -12.547449 -17.32172 -22.900213 + 96200 4.4858014e-10 -9.3510939 -12.546922 -17.321701 -22.899585 + 96300 4.7761672e-10 -9.3515368 -12.546403 -17.321677 -22.898915 + 96400 5.063037e-10 -9.3519825 -12.545892 -17.321649 -22.898203 + 96500 5.3441387e-10 -9.3524302 -12.54539 -17.321616 -22.897452 + 96600 5.6173072e-10 -9.3528792 -12.544897 -17.321579 -22.896662 + 96700 5.8804481e-10 -9.3533288 -12.544415 -17.321538 -22.895836 + 96800 6.1315181e-10 -9.353778 -12.543944 -17.321493 -22.894976 + 96900 6.3685288e-10 -9.3542261 -12.543485 -17.321443 -22.894084 + 97000 6.5895716e-10 -9.3546724 -12.543037 -17.321389 -22.893163 + 97100 6.792861e-10 -9.3551158 -12.542602 -17.321332 -22.892215 + 97200 6.9767854e-10 -9.3555557 -12.54218 -17.321271 -22.891244 + 97300 7.1399564e-10 -9.3559911 -12.541772 -17.321206 -22.890252 + 97400 7.2812476e-10 -9.3564214 -12.541378 -17.321138 -22.889242 + 97500 7.3998151e-10 -9.3568457 -12.541 -17.321066 -22.888216 + 97600 7.4950955e-10 -9.3572633 -12.540636 -17.320991 -22.887178 + 97700 7.5667833e-10 -9.3576735 -12.540289 -17.320913 -22.886128 + 97800 7.6147897e-10 -9.3580758 -12.539958 -17.320833 -22.88507 + 97900 7.6391946e-10 -9.3584694 -12.539644 -17.32075 -22.884005 + 98000 7.6402002e-10 -9.358854 -12.539346 -17.320664 -22.882936 + 98100 7.6180965e-10 -9.359229 -12.539066 -17.320576 -22.881864 + 98200 7.5732469e-10 -9.3595941 -12.538804 -17.320486 -22.880791 + 98300 7.506093e-10 -9.3599488 -12.53856 -17.320395 -22.879718 + 98400 7.4171771e-10 -9.3602928 -12.538333 -17.320302 -22.878648 + 98500 7.3071707e-10 -9.3606258 -12.538125 -17.320208 -22.877581 + 98600 7.1769027e-10 -9.3609476 -12.537934 -17.320113 -22.87652 + 98700 7.0273752e-10 -9.3612579 -12.537762 -17.320016 -22.875465 + 98800 6.859765e-10 -9.3615565 -12.537607 -17.31992 -22.874417 + 98900 6.6754074e-10 -9.3618432 -12.53747 -17.319822 -22.873379 + 99000 6.4757667e-10 -9.3621177 -12.537351 -17.319725 -22.872352 + 99100 6.2623981e-10 -9.3623798 -12.537249 -17.319627 -22.871336 + 99200 6.0369068e-10 -9.3626294 -12.537165 -17.31953 -22.870333 + 99300 5.8009109e-10 -9.3628662 -12.537097 -17.319432 -22.869345 + 99400 5.5560125e-10 -9.36309 -12.537047 -17.319335 -22.868373 + 99500 5.3037803e-10 -9.3633006 -12.537013 -17.319238 -22.867419 + 99600 5.0457446e-10 -9.3634978 -12.536995 -17.319142 -22.866484 + 99700 4.783403e-10 -9.3636814 -12.536994 -17.319047 -22.865571 + 99800 4.5182336e-10 -9.3638511 -12.537008 -17.318952 -22.864681 + 99900 4.25171e-10 -9.364007 -12.537038 -17.318858 -22.863815 + 100000 3.9853122e-10 -9.3641487 -12.537084 -17.318766 -22.862977 +Loop time of 41.8797 on 1 procs for 50000 steps with 9576 atoms + +Performance: 10315267.104 tau/day, 1193.897 timesteps/s, 11.433 Matom-step/s +99.7% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 5.1258 | 5.1258 | 5.1258 | 0.0 | 12.24 +Bond | 31.193 | 31.193 | 31.193 | 0.0 | 74.48 +Neigh | 0.37652 | 0.37652 | 0.37652 | 0.0 | 0.90 +Comm | 0.044633 | 0.044633 | 0.044633 | 0.0 | 0.11 +Output | 0.29854 | 0.29854 | 0.29854 | 0.0 | 0.71 +Modify | 4.0413 | 4.0413 | 4.0413 | 0.0 | 9.65 +Other | | 0.8001 | | | 1.91 + +Nlocal: 9576 ave 9576 max 9576 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 44699 ave 44699 max 44699 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 44699 +Ave neighs/atom = 4.6678154 +Ave special neighs/atom = 11.495405 +Neighbor list builds = 87 +Dangerous builds = 0 + +# remove load + +unfix 3 +run 60000 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Per MPI rank memory allocation (min/avg/max) = 22.79 | 22.79 | 22.79 Mbytes + Step KinEng c_zmin1 c_zmin2 c_zmin3 c_zmin4 + 100000 3.9853122e-10 -9.3641487 -12.537084 -17.318766 -22.862977 + 100100 3.5487181e-07 -9.347706 -12.521662 -17.304923 -22.850482 + 100200 1.1048285e-06 -9.3098594 -12.486642 -17.274616 -22.825787 + 100300 2.09412e-06 -9.2577873 -12.438147 -17.232311 -22.791429 + 100400 3.2446006e-06 -9.1945595 -12.379111 -17.18065 -22.749587 + 100500 4.5095394e-06 -9.1218239 -12.311089 -17.120959 -22.701319 + 100600 5.8962791e-06 -9.0405439 -12.235072 -17.054037 -22.647626 + 100700 7.4071499e-06 -8.9515584 -12.152057 -16.980878 -22.590092 + 100800 8.9252679e-06 -8.8557405 -12.062841 -16.902516 -22.529648 + 100900 1.0436071e-05 -8.7538679 -11.968042 -16.819503 -22.466505 + 101000 1.2004455e-05 -8.6471559 -11.868309 -16.732522 -22.400901 + 101100 1.3664609e-05 -8.5344938 -11.763131 -16.64137 -22.331963 + 101200 1.5435862e-05 -8.4145338 -11.651482 -16.544942 -22.25844 + 101300 1.7329818e-05 -8.2886227 -11.534016 -16.443025 -22.180074 + 101400 1.9341036e-05 -8.1613043 -11.413486 -16.337007 -22.097577 + 101500 2.149567e-05 -8.0362918 -11.292652 -16.22894 -22.012022 + 101600 2.379198e-05 -7.9137246 -11.172437 -16.120324 -21.924324 + 101700 2.6143742e-05 -7.7911499 -11.05203 -16.011569 -21.834655 + 101800 2.8435464e-05 -7.6655446 -10.929826 -15.901965 -21.7426 + 101900 3.0585533e-05 -7.5345357 -10.804146 -15.790243 -21.647652 + 102000 3.2570088e-05 -7.3967405 -10.673798 -15.67532 -21.549743 + 102100 3.4408767e-05 -7.2515693 -10.538154 -15.556704 -21.449276 + 102200 3.6110535e-05 -7.0986912 -10.396743 -15.434194 -21.346487 + 102300 3.7661447e-05 -6.9376524 -10.248984 -15.30738 -21.241019 + 102400 3.9067031e-05 -6.7685859 -10.094421 -15.17571 -21.132285 + 102500 4.0360203e-05 -6.5919739 -9.9330939 -15.038938 -21.019913 + 102600 4.1580899e-05 -6.4083696 -9.7653567 -14.897181 -20.903748 + 102700 4.2752243e-05 -6.2179388 -9.5912293 -14.750463 -20.783396 + 102800 4.3867778e-05 -6.0196523 -9.4100975 -14.598311 -20.658063 + 102900 4.4905718e-05 -5.8122198 -9.2211414 -14.439854 -20.526991 + 103000 4.5842765e-05 -5.5954068 -9.0240591 -14.27436 -20.38981 + 103100 4.6643623e-05 -5.3706435 -8.8195843 -14.10181 -20.24683 + 103200 4.7257711e-05 -5.1407004 -8.6095428 -13.923194 -20.09912 + 103300 4.7640875e-05 -4.9088296 -8.3964367 -13.740368 -19.948346 + 103400 4.7779448e-05 -4.679239 -8.1828233 -13.555586 -19.796377 + 103500 4.7696642e-05 -4.4530927 -7.9708711 -13.370981 -19.64489 + 103600 4.7433332e-05 -4.2318059 -7.7622458 -13.188308 -19.495202 + 103700 4.7021885e-05 -4.0163345 -7.5581405 -13.008881 -19.348248 + 103800 4.6483006e-05 -3.8069765 -7.3592268 -12.833556 -19.204552 + 103900 4.5839221e-05 -3.6033241 -7.1655849 -12.662661 -19.064169 + 104000 4.5118601e-05 -3.4045548 -6.9768414 -12.496036 -18.92674 + 104100 4.4342741e-05 -3.210046 -6.7925467 -12.33328 -18.791711 + 104200 4.3512814e-05 -3.0198554 -6.6125628 -12.174118 -18.658706 + 104300 4.260878e-05 -2.8346702 -6.437192 -12.018655 -18.527758 + 104400 4.1604286e-05 -2.6552638 -6.266961 -11.867372 -18.399228 + 104500 4.0482841e-05 -2.5176099 -6.1021991 -11.720813 -18.273561 + 104600 3.9237628e-05 -2.5004006 -5.9426879 -11.57919 -18.150945 + 104700 3.786889e-05 -2.5004006 -5.7875945 -11.442207 -18.031247 + 104800 3.6385884e-05 -2.5004006 -5.635687 -11.309141 -17.914142 + 104900 3.4813209e-05 -2.5004006 -5.4856266 -11.179061 -17.79913 + 105000 3.318736e-05 -2.5004006 -5.3362456 -11.05096 -17.685664 + 105100 3.1543908e-05 -2.5004006 -5.1868099 -10.92394 -17.573176 + 105200 2.9906762e-05 -2.5004006 -5.0370482 -10.797408 -17.461118 + 105300 2.8287703e-05 -2.5004006 -4.8870726 -10.671038 -17.349249 + 105400 2.6693031e-05 -2.5004006 -4.7374545 -10.54486 -17.237654 + 105500 2.5128464e-05 -2.5004006 -4.5891081 -10.419178 -17.126596 + 105600 2.3596602e-05 -2.5004006 -4.4431796 -10.294478 -17.016406 + 105700 2.209201e-05 -2.5004006 -4.3006536 -10.171287 -16.907366 + 105800 2.0602256e-05 -2.5004006 -4.1620482 -10.050014 -16.799677 + 105900 1.9116576e-05 -2.5004006 -4.0281597 -9.9309323 -16.693565 + 106000 1.7633217e-05 -2.5004006 -3.9019825 -9.8142744 -16.589335 + 106100 1.6160554e-05 -2.5004006 -3.7805244 -9.7004093 -16.487451 + 106200 1.4713035e-05 -2.5004006 -3.6644212 -9.5899493 -16.38855 + 106300 1.330694e-05 -2.5004006 -3.5544965 -9.4837064 -16.293344 + 106400 1.1959006e-05 -2.5004006 -3.4516178 -9.3826045 -16.202569 + 106500 1.0685396e-05 -2.5004006 -3.3565542 -9.287537 -16.116953 + 106600 9.4984127e-06 -2.5004006 -3.2698292 -9.1992598 -16.037126 + 106700 8.4032693e-06 -2.5004006 -3.2015219 -9.1182656 -15.963481 + 106800 7.3978375e-06 -2.5004006 -3.1498898 -9.0447009 -15.896084 + 106900 6.4755429e-06 -2.5004006 -3.1050942 -8.9784041 -15.834666 + 107000 5.6287954e-06 -2.5004006 -3.0627741 -8.9189792 -15.778742 + 107100 4.8501672e-06 -2.5004006 -3.0231021 -8.865887 -15.727761 + 107200 4.1326005e-06 -2.5004006 -2.9864678 -8.8185681 -15.681216 + 107300 3.4699394e-06 -2.5004006 -2.9531122 -8.7765661 -15.638701 + 107400 2.8587351e-06 -2.5004006 -2.923128 -8.7395448 -15.599918 + 107500 2.3000777e-06 -2.5004006 -2.8964681 -8.7072168 -15.564637 + 107600 1.7994277e-06 -2.5004006 -2.8730717 -8.679263 -15.532644 + 107700 1.3642715e-06 -2.5004006 -2.8532885 -8.6553139 -15.503733 + 107800 1.0014359e-06 -2.5004006 -2.8374966 -8.6349286 -15.477683 + 107900 7.1531362e-07 -2.5004006 -2.8258105 -8.6175607 -15.454188 + 108000 5.0716602e-07 -2.5004006 -2.8182266 -8.6025998 -15.432865 + 108100 3.7503723e-07 -2.5004006 -2.8159949 -8.5894723 -15.413338 + 108200 3.1373374e-07 -2.5004006 -2.8171018 -8.5777497 -15.395322 + 108300 3.1539689e-07 -2.5004006 -2.8212795 -8.5672104 -15.378673 + 108400 3.7090063e-07 -2.5004006 -2.8282139 -8.5578638 -15.363387 + 108500 4.7143014e-07 -2.5004006 -2.8375562 -8.5499184 -15.349597 + 108600 6.0956766e-07 -2.5004006 -2.8489216 -8.5437227 -15.337555 + 108700 7.7968225e-07 -2.5004006 -2.8624052 -8.5397088 -15.327573 + 108800 9.7807566e-07 -2.5004006 -2.8784284 -8.5383293 -15.319962 + 108900 1.2031726e-06 -2.5004006 -2.8954385 -8.5400089 -15.315043 + 109000 1.4554796e-06 -2.5004006 -2.9130628 -8.5451191 -15.313135 + 109100 1.7368325e-06 -2.5004006 -2.9309968 -8.5540107 -15.314523 + 109200 2.0489671e-06 -2.5004006 -2.9492988 -8.5670257 -15.319484 + 109300 2.3920401e-06 -2.5004006 -2.9698896 -8.5844888 -15.328295 + 109400 2.7637732e-06 -2.5004006 -2.9937714 -8.6066937 -15.341197 + 109500 3.1594063e-06 -2.5004006 -3.0190384 -8.6338611 -15.358361 + 109600 3.5722268e-06 -2.5004006 -3.0451744 -8.6660919 -15.379852 + 109700 3.9943975e-06 -2.5004006 -3.0738889 -8.7033259 -15.40561 + 109800 4.4179496e-06 -2.5004006 -3.1264147 -8.7453212 -15.435439 + 109900 4.8358302e-06 -2.5004006 -3.1926464 -8.7916683 -15.469002 + 110000 5.2427423e-06 -2.5004006 -3.2620472 -8.8418282 -15.50584 + 110100 5.6355004e-06 -2.5004006 -3.3338744 -8.8951847 -15.545423 + 110200 6.0128491e-06 -2.5004006 -3.4074052 -8.9511053 -15.587208 + 110300 6.3749561e-06 -2.5004006 -3.4819994 -9.0089991 -15.630702 + 110400 6.7228067e-06 -2.5004006 -3.5571458 -9.0683496 -15.675495 + 110500 7.0575473e-06 -2.5004006 -3.6324839 -9.1287192 -15.721275 + 110600 7.3797433e-06 -2.5004006 -3.7077935 -9.1897336 -15.767809 + 110700 7.6886705e-06 -2.5004006 -3.7829624 -9.2510646 -15.814919 + 110800 7.981934e-06 -2.5004006 -3.8589983 -9.3124217 -15.862464 + 110900 8.2556483e-06 -2.5004006 -3.9355708 -9.3735576 -15.910323 + 111000 8.5051218e-06 -2.5004006 -4.0119236 -9.4342848 -15.958387 + 111100 8.7257428e-06 -2.5004006 -4.0881369 -9.4944983 -16.006569 + 111200 8.913761e-06 -2.5004006 -4.1643481 -9.5541962 -16.054817 + 111300 9.0668171e-06 -2.5004006 -4.2407696 -9.6134896 -16.10314 + 111400 9.1841976e-06 -2.5004006 -4.317688 -9.6725986 -16.15162 + 111500 9.2668004e-06 -2.5004006 -4.3954408 -9.7318276 -16.200413 + 111600 9.3167959e-06 -2.5004006 -4.4743719 -9.7915244 -16.249732 + 111700 9.337047e-06 -2.5004006 -4.5547755 -9.8520308 -16.299817 + 111800 9.3304488e-06 -2.5004006 -4.636842 -9.9136385 -16.350895 + 111900 9.2993681e-06 -2.5004006 -4.7206196 -9.9765595 -16.403153 + 112000 9.2452764e-06 -2.5004006 -4.8060026 -10.040913 -16.456714 + 112100 9.1685974e-06 -2.5004006 -4.8927457 -10.106724 -16.511635 + 112200 9.0687823e-06 -2.5004006 -4.9804983 -10.173934 -16.5679 + 112300 8.944641e-06 -2.5004006 -5.0688456 -10.242406 -16.625431 + 112400 8.7948926e-06 -2.5004006 -5.157345 -10.311938 -16.684087 + 112500 8.6187879e-06 -2.5215298 -5.2455492 -10.382268 -16.743674 + 112600 8.416589e-06 -2.6271999 -5.3330146 -10.453077 -16.803944 + 112700 8.1897625e-06 -2.7311225 -5.4193007 -10.52399 -16.864602 + 112800 7.9408788e-06 -2.8316816 -5.5039695 -10.594593 -16.925306 + 112900 7.6733103e-06 -2.9283994 -5.5865907 -10.664443 -16.985688 + 113000 7.390825e-06 -3.0209084 -5.6667585 -10.733096 -17.045368 + 113100 7.0971404e-06 -3.1089967 -5.7441177 -10.800135 -17.103987 + 113200 6.7955021e-06 -3.1926309 -5.8183944 -10.865203 -17.161237 + 113300 6.4883736e-06 -3.2719499 -5.8894218 -10.928021 -17.216882 + 113400 6.1773169e-06 -3.3472318 -5.9571525 -10.988397 -17.270768 + 113500 5.8630885e-06 -3.4188422 -6.0216546 -11.046227 -17.322825 + 113600 5.5459073e-06 -3.4871784 -6.0830894 -11.101482 -17.373052 + 113700 5.2258176e-06 -3.5526228 -6.1416794 -11.154194 -17.421494 + 113800 4.9030728e-06 -3.6155133 -6.1976736 -11.204441 -17.468222 + 113900 4.5784639e-06 -3.676134 -6.2513187 -11.252331 -17.513319 + 114000 4.2535123e-06 -3.7347204 -6.3028421 -11.298005 -17.556864 + 114100 3.9304639e-06 -3.7914694 -6.3524462 -11.341626 -17.598938 + 114200 3.6120818e-06 -3.8465437 -6.4003108 -11.383386 -17.639625 + 114300 3.3013084e-06 -3.9000646 -6.4465971 -11.423497 -17.679023 + 114400 3.000903e-06 -3.9520926 -6.4914472 -11.462185 -17.717245 + 114500 2.71314e-06 -4.0026025 -6.534976 -11.499672 -17.754418 + 114600 2.4396133e-06 -4.0514629 -6.5772551 -11.53615 -17.790677 + 114700 2.1811631e-06 -4.09843 -6.6182928 -11.571765 -17.826143 + 114800 1.937937e-06 -4.1431583 -6.6580182 -11.606594 -17.860911 + 114900 1.7095797e-06 -4.1852306 -6.6962738 -11.640634 -17.895031 + 115000 1.4955164e-06 -4.2241991 -6.7328222 -11.673804 -17.928502 + 115100 1.2952537e-06 -4.2596304 -6.7673659 -11.705953 -17.961267 + 115200 1.1086212e-06 -4.2911436 -6.799577 -11.736878 -17.993216 + 115300 9.3589775e-07 -4.3184364 -6.8291295 -11.766343 -18.024197 + 115400 7.7780598e-07 -4.3412954 -6.8557293 -11.794094 -18.054026 + 115500 6.3538495e-07 -4.3595944 -6.8791349 -11.819883 -18.082503 + 115600 5.0977442e-07 -4.3732855 -6.8991689 -11.843474 -18.10942 + 115700 4.0196207e-07 -4.3823894 -6.9157192 -11.864655 -18.134577 + 115800 3.1255607e-07 -4.3869904 -6.9287352 -11.883243 -18.157791 + 115900 2.4163786e-07 -4.3872364 -6.9382219 -11.899095 -18.178905 + 116000 1.8872243e-07 -4.383342 -6.9442352 -11.912111 -18.197798 + 116100 1.5282277e-07 -4.3755894 -6.9468791 -11.922245 -18.214396 + 116200 1.3259628e-07 -4.3643232 -6.9463059 -11.929504 -18.22867 + 116300 1.2654338e-07 -4.3499364 -6.9427138 -11.933956 -18.240644 + 116400 1.3322195e-07 -4.332846 -6.9363422 -11.935721 -18.250388 + 116500 1.514324e-07 -4.313464 -6.9274615 -11.934965 -18.258012 + 116600 1.8032733e-07 -4.2921667 -6.9163579 -11.931887 -18.263651 + 116700 2.1941753e-07 -4.2692694 -6.9033149 -11.926704 -18.267459 + 116800 2.6847901e-07 -4.2450107 -6.8885954 -11.91964 -18.26959 + 116900 3.2739493e-07 -4.2195482 -6.8724265 -11.910915 -18.270194 + 117000 3.9597905e-07 -4.1929627 -6.8549898 -11.900736 -18.269409 + 117100 4.7382263e-07 -4.1652701 -6.8364186 -11.889296 -18.267361 + 117200 5.6019505e-07 -4.1364328 -6.8167988 -11.876764 -18.264162 + 117300 6.5401566e-07 -4.1063711 -6.7961737 -11.863291 -18.259916 + 117400 7.5390056e-07 -4.074969 -6.7745486 -11.848996 -18.254718 + 117500 8.5827252e-07 -4.0420799 -6.7518944 -11.833964 -18.248653 + 117600 9.6550892e-07 -4.0075307 -6.7281501 -11.818241 -18.24179 + 117700 1.0740952e-06 -3.9711309 -6.7032244 -11.801825 -18.234179 + 117800 1.1827528e-06 -3.9326859 -6.6769999 -11.78467 -18.225842 + 117900 1.2905154e-06 -3.8920164 -6.6493399 -11.766685 -18.216771 + 118000 1.3967381e-06 -3.8489801 -6.6201007 -11.747748 -18.206919 + 118100 1.5010369e-06 -3.803493 -6.589147 -11.727718 -18.196212 + 118200 1.603175e-06 -3.7555453 -6.5563696 -11.706449 -18.184548 + 118300 1.7029282e-06 -3.705209 -6.5217016 -11.68381 -18.171816 + 118400 1.7999666e-06 -3.6526364 -6.4851303 -11.659697 -18.157898 + 118500 1.8937816e-06 -3.5980487 -6.4467035 -11.63404 -18.142694 + 118600 1.9836696e-06 -3.5417207 -6.4065276 -11.606814 -18.126124 + 118700 2.0687692e-06 -3.4839627 -6.3647605 -11.578033 -18.108138 + 118800 2.1481395e-06 -3.4251045 -6.3216 -11.547755 -18.088725 + 118900 2.2208621e-06 -3.3654821 -6.277271 -11.516074 -18.067907 + 119000 2.2861461e-06 -3.3054294 -6.2320135 -11.483118 -18.045744 + 119100 2.3434158e-06 -3.2452701 -6.1860731 -11.449043 -18.022326 + 119200 2.3923602e-06 -3.185311 -6.1396938 -11.414029 -17.997769 + 119300 2.4329335e-06 -3.1258332 -6.0931123 -11.378272 -17.972211 + 119400 2.4653074e-06 -3.0670811 -6.0465528 -11.34198 -17.945801 + 119500 2.4897867e-06 -3.0092507 -6.0002217 -11.305361 -17.918698 + 119600 2.5067096e-06 -2.9524789 -5.9543001 -11.268618 -17.89106 + 119700 2.5163573e-06 -2.8968368 -5.9089367 -11.231939 -17.863038 + 119800 2.5188949e-06 -2.8423295 -5.8642415 -11.195488 -17.834772 + 119900 2.5143551e-06 -2.788902 -5.8202812 -11.159403 -17.806385 + 120000 2.5026654e-06 -2.7369575 -5.7770789 -11.123788 -17.777982 + 120100 2.4837067e-06 -2.6860432 -5.7346169 -11.088718 -17.749647 + 120200 2.4573859e-06 -2.6357773 -5.6928442 -11.054231 -17.721445 + 120300 2.4237057e-06 -2.5860497 -5.6516857 -11.02034 -17.693425 + 120400 2.3828187e-06 -2.5367615 -5.6110524 -10.987029 -17.665619 + 120500 2.3350559e-06 -2.5004006 -5.5708518 -10.954256 -17.638043 + 120600 2.280923e-06 -2.5004006 -5.5309958 -10.921962 -17.610698 + 120700 2.2210649e-06 -2.5004006 -5.4914082 -10.890069 -17.58357 + 120800 2.1562043e-06 -2.5004006 -5.4520301 -10.858494 -17.556629 + 120900 2.0870683e-06 -2.5004006 -5.4128247 -10.827149 -17.52983 + 121000 2.0143207e-06 -2.5004006 -5.3737819 -10.795955 -17.503116 + 121100 1.9385159e-06 -2.5004006 -5.3349221 -10.764851 -17.476426 + 121200 1.860084e-06 -2.5004006 -5.2962992 -10.733797 -17.449699 + 121300 1.7793482e-06 -2.5004006 -5.2580016 -10.702787 -17.422881 + 121400 1.6965678e-06 -2.5004006 -5.2201513 -10.671846 -17.39594 + 121500 1.6119922e-06 -2.5004006 -5.1828985 -10.641034 -17.368863 + 121600 1.5259138e-06 -2.5004006 -5.1464145 -10.610443 -17.341667 + 121700 1.438705e-06 -2.5004006 -5.1108814 -10.580189 -17.314399 + 121800 1.3508347e-06 -2.5004006 -5.0764813 -10.550405 -17.287131 + 121900 1.2628608e-06 -2.5004006 -5.0433859 -10.521234 -17.259956 + 122000 1.1754029e-06 -2.5004006 -5.0117477 -10.492825 -17.232985 + 122100 1.0890982e-06 -2.5004006 -4.9816941 -10.465318 -17.206339 + 122200 1.0045523e-06 -2.5004006 -4.9533231 -10.438849 -17.180142 + 122300 9.2229207e-07 -2.5004006 -4.9267026 -10.413537 -17.154513 + 122400 8.4273397e-07 -2.5004006 -4.9018698 -10.389485 -17.129566 + 122500 7.6617351e-07 -2.5004006 -4.8788325 -10.366773 -17.105402 + 122600 6.9279853e-07 -2.5004006 -4.8575701 -10.34546 -17.082108 + 122700 6.2272148e-07 -2.5004006 -4.8380355 -10.325576 -17.059753 + 122800 5.5602138e-07 -2.5004006 -4.8201576 -10.307127 -17.038387 + 122900 4.927844e-07 -2.5004006 -4.8038446 -10.290092 -17.018043 + 123000 4.3313347e-07 -2.5004006 -4.7889899 -10.274426 -16.998733 + 123100 3.7724101e-07 -2.5004006 -4.7754784 -10.260064 -16.980451 + 123200 3.2532341e-07 -2.5004006 -4.7631943 -10.246925 -16.963177 + 123300 2.7762006e-07 -2.5004006 -4.7520294 -10.234919 -16.946876 + 123400 2.3436252e-07 -2.5004006 -4.7418903 -10.223952 -16.931504 + 123500 1.9574072e-07 -2.5004006 -4.7327041 -10.213932 -16.917009 + 123600 1.6187327e-07 -2.5004006 -4.7244224 -10.204775 -16.903335 + 123700 1.3278806e-07 -2.5004006 -4.7170225 -10.196406 -16.890421 + 123800 1.0841742e-07 -2.5004006 -4.7105072 -10.188767 -16.878212 + 123900 8.8609419e-08 -2.5004006 -4.7049024 -10.181818 -16.866651 + 124000 7.3152805e-08 -2.5004006 -4.7002542 -10.175539 -16.855691 + 124100 6.1809589e-08 -2.5004006 -4.696625 -10.169933 -16.845296 + 124200 5.4347329e-08 -2.5004006 -4.694089 -10.165022 -16.83544 + 124300 5.056334e-08 -2.5004006 -4.6927277 -10.16085 -16.826116 + 124400 5.0295838e-08 -2.5004006 -4.6926245 -10.157475 -16.817334 + 124500 5.3420689e-08 -2.5004006 -4.6938589 -10.154968 -16.80912 + 124600 5.9836108e-08 -2.5004006 -4.6965007 -10.153404 -16.801519 + 124700 6.9440139e-08 -2.5004006 -4.7006041 -10.152859 -16.794586 + 124800 8.2106762e-08 -2.5004006 -4.7062025 -10.1534 -16.788386 + 124900 9.7666162e-08 -2.5004006 -4.713305 -10.155083 -16.782987 + 125000 1.1589335e-07 -2.5004006 -4.721894 -10.157948 -16.778455 + 125100 1.3650746e-07 -2.5004006 -4.7319257 -10.162016 -16.774848 + 125200 1.5918183e-07 -2.5004006 -4.7433318 -10.167288 -16.772213 + 125300 1.83563e-07 -2.5004006 -4.7560232 -10.173746 -16.770582 + 125400 2.0929463e-07 -2.5004006 -4.7698944 -10.181351 -16.769973 + 125500 2.3604124e-07 -2.5004006 -4.7848283 -10.190048 -16.770387 + 125600 2.6350657e-07 -2.5004006 -4.8007018 -10.199767 -16.771811 + 125700 2.9144238e-07 -2.5004006 -4.81739 -10.210426 -16.774215 + 125800 3.1964642e-07 -2.5004006 -4.8347707 -10.221932 -16.77756 + 125900 3.479507e-07 -2.5004006 -4.8527286 -10.234186 -16.781793 + 126000 3.7620404e-07 -2.5004006 -4.8711593 -10.247088 -16.786855 + 126100 4.0425349e-07 -2.5004006 -4.8899721 -10.260537 -16.792681 + 126200 4.3192948e-07 -2.5004006 -4.9090936 -10.274441 -16.799199 + 126300 4.5903768e-07 -2.5004006 -4.9284696 -10.288716 -16.806338 + 126400 4.8535933e-07 -2.5004006 -4.948066 -10.30329 -16.81403 + 126500 5.1065934e-07 -2.5004006 -4.967869 -10.318107 -16.822207 + 126600 5.3470041e-07 -2.5004006 -4.987883 -10.333127 -16.83081 + 126700 5.5725997e-07 -2.5004006 -5.0081274 -10.348327 -16.839785 + 126800 5.7814625e-07 -2.5004006 -5.028633 -10.363699 -16.849089 + 126900 5.9721035e-07 -2.5004006 -5.0494368 -10.379249 -16.858689 + 127000 6.1435134e-07 -2.5004006 -5.0705772 -10.394995 -16.868564 + 127100 6.2951369e-07 -2.5004006 -5.092089 -10.410962 -16.878703 + 127200 6.4267759e-07 -2.5004006 -5.1139996 -10.427183 -16.889105 + 127300 6.5384484e-07 -2.5004006 -5.1363251 -10.443689 -16.899782 + 127400 6.6302381e-07 -2.5004006 -5.159068 -10.460511 -16.910751 + 127500 6.7021715e-07 -2.5004006 -5.1822147 -10.477673 -16.922037 + 127600 6.7541492e-07 -2.5004006 -5.2057352 -10.495188 -16.933667 + 127700 6.7859443e-07 -2.5004006 -5.2295823 -10.513059 -16.945668 + 127800 6.7972593e-07 -2.5004006 -5.2536923 -10.531273 -16.958063 + 127900 6.7878275e-07 -2.5004006 -5.2779872 -10.549802 -16.970869 + 128000 6.7575294e-07 -2.5004006 -5.3023767 -10.568605 -16.984091 + 128100 6.7064989e-07 -2.5004006 -5.326762 -10.587628 -16.997724 + 128200 6.6351954e-07 -2.5004006 -5.3510399 -10.606803 -17.011752 + 128300 6.5444255e-07 -2.5004006 -5.375107 -10.626057 -17.026143 + 128400 6.4353093e-07 -2.5004006 -5.3988641 -10.645311 -17.040858 + 128500 6.3091992e-07 -2.5211791 -5.4222201 -10.664484 -17.055847 + 128600 6.1675665e-07 -2.547792 -5.4450952 -10.683495 -17.071053 + 128700 6.0118827e-07 -2.5735874 -5.467423 -10.702269 -17.086416 + 128800 5.8435213e-07 -2.598545 -5.4891522 -10.720735 -17.101873 + 128900 5.6637005e-07 -2.6226631 -5.5102471 -10.738832 -17.117362 + 129000 5.4734767e-07 -2.6459559 -5.5306875 -10.756508 -17.132822 + 129100 5.2737869e-07 -2.668452 -5.5504678 -10.773724 -17.148198 + 129200 5.0655233e-07 -2.6905442 -5.5695959 -10.790451 -17.163438 + 129300 4.8496202e-07 -2.7120022 -5.5880913 -10.806673 -17.178497 + 129400 4.6271289e-07 -2.7327604 -5.605983 -10.822389 -17.193338 + 129500 4.3992647e-07 -2.7528729 -5.6233059 -10.837605 -17.207931 + 129600 4.167414e-07 -2.7723886 -5.6400985 -10.852338 -17.222255 + 129700 3.9331016e-07 -2.7913465 -5.6563988 -10.866614 -17.236297 + 129800 3.6979242e-07 -2.8097728 -5.6722408 -10.880462 -17.250051 + 129900 3.4634653e-07 -2.8276781 -5.6876517 -10.893912 -17.263521 + 130000 3.2312082e-07 -2.8450562 -5.7026487 -10.906993 -17.276715 + 130100 3.002466e-07 -2.8618845 -5.7172377 -10.919731 -17.289646 + 130200 2.7783426e-07 -2.8781249 -5.7314118 -10.932146 -17.302332 + 130300 2.5597318e-07 -2.8937259 -5.7451517 -10.944249 -17.31479 + 130400 2.347353e-07 -2.9086255 -5.7584264 -10.956043 -17.327039 + 130500 2.1418118e-07 -2.9227545 -5.7711948 -10.967519 -17.339095 + 130600 1.9436695e-07 -2.9360398 -5.783408 -10.978661 -17.350969 + 130700 1.7535043e-07 -2.9484084 -5.7950117 -10.989441 -17.362667 + 130800 1.5719483e-07 -2.959791 -5.8059493 -10.999825 -17.374189 + 130900 1.3996943e-07 -2.9701253 -5.8161644 -11.009773 -17.385526 + 131000 1.2374711e-07 -2.97936 -5.8256043 -11.019238 -17.396661 + 131100 1.0859952e-07 -2.9874572 -5.8342221 -11.028176 -17.407571 + 131200 9.4591008e-08 -2.9943944 -5.8419797 -11.03654 -17.418225 + 131300 8.177269e-08 -3.0001663 -5.8488493 -11.04429 -17.42859 + 131400 7.0178003e-08 -3.0047846 -5.8548151 -11.051391 -17.438626 + 131500 5.9820607e-08 -3.0082773 -5.8598741 -11.057812 -17.448296 + 131600 5.0695144e-08 -3.0106873 -5.8640358 -11.063536 -17.457563 + 131700 4.2780611e-08 -3.0120693 -5.8673217 -11.068552 -17.466391 + 131800 3.6045578e-08 -3.0124871 -5.8697639 -11.072858 -17.474751 + 131900 3.0454034e-08 -3.0120103 -5.8714031 -11.076465 -17.482618 + 132000 2.5970511e-08 -3.0107105 -5.8722867 -11.079389 -17.489973 + 132100 2.2563391e-08 -3.0086585 -5.8724662 -11.081655 -17.496804 + 132200 2.0205753e-08 -3.0059205 -5.8719949 -11.083296 -17.503106 + 132300 1.8873779e-08 -3.0025559 -5.8709253 -11.084348 -17.508879 + 132400 1.8543311e-08 -2.9986151 -5.8693071 -11.084852 -17.51413 + 132500 1.9185541e-08 -2.9941371 -5.8671847 -11.084848 -17.51887 + 132600 2.0762964e-08 -2.9891492 -5.8645958 -11.084377 -17.523117 + 132700 2.3226563e-08 -2.9836659 -5.8615699 -11.083479 -17.526891 + 132800 2.6514887e-08 -2.9776898 -5.8581275 -11.082186 -17.530215 + 132900 3.0555251e-08 -2.9712126 -5.8542792 -11.080527 -17.533116 + 133000 3.5266809e-08 -2.9642171 -5.8500267 -11.078522 -17.535618 + 133100 4.0564871e-08 -2.9566797 -5.8453633 -11.076186 -17.537747 + 133200 4.6365571e-08 -2.9485731 -5.8402755 -11.073523 -17.539525 + 133300 5.2589906e-08 -2.9398698 -5.8347447 -11.070533 -17.540974 + 133400 5.9166335e-08 -2.9305449 -5.8287498 -11.067209 -17.542107 + 133500 6.6031484e-08 -2.9205788 -5.8222696 -11.063536 -17.542936 + 133600 7.3128931e-08 -2.9099599 -5.815285 -11.059501 -17.543467 + 133700 8.040656e-08 -2.8986859 -5.8077813 -11.055084 -17.5437 + 133800 8.7813218e-08 -2.8867656 -5.7997498 -11.050269 -17.54363 + 133900 9.5295618e-08 -2.8742193 -5.7911895 -11.04504 -17.543247 + 134000 1.0279623e-07 -2.8610787 -5.782108 -11.039388 -17.542541 + 134100 1.1025268e-07 -2.8473869 -5.7725217 -11.033304 -17.541495 + 134200 1.1759883e-07 -2.8331967 -5.7624561 -11.026791 -17.540097 + 134300 1.2476716e-07 -2.8185693 -5.751945 -11.019856 -17.53833 + 134400 1.3169207e-07 -2.8035721 -5.7410299 -11.012512 -17.536184 + 134500 1.383133e-07 -2.7882764 -5.7297584 -11.004783 -17.53365 + 134600 1.4457879e-07 -2.7727543 -5.7181826 -10.996697 -17.530725 + 134700 1.5044634e-07 -2.7570764 -5.7063576 -10.988287 -17.527408 + 134800 1.5588383e-07 -2.7413091 -5.6943388 -10.979592 -17.523706 + 134900 1.6086801e-07 -2.7255122 -5.6821805 -10.970654 -17.519631 + 135000 1.6538214e-07 -2.7097372 -5.6699339 -10.961516 -17.515198 + 135100 1.6941314e-07 -2.6940968 -5.6576454 -10.952221 -17.510427 + 135200 1.7294891e-07 -2.6788564 -5.6453549 -10.94281 -17.505341 + 135300 1.7597648e-07 -2.6637272 -5.6330957 -10.933323 -17.499967 + 135400 1.7848133e-07 -2.6487208 -5.6208929 -10.923795 -17.494332 + 135500 1.8044803e-07 -2.6338403 -5.6087641 -10.914256 -17.488465 + 135600 1.8186189e-07 -2.619082 -5.5967194 -10.904731 -17.482395 + 135700 1.8271131e-07 -2.6044367 -5.5847619 -10.895238 -17.476151 + 135800 1.8299011e-07 -2.5898921 -5.5728888 -10.88579 -17.469758 + 135900 1.8269942e-07 -2.5754344 -5.5610931 -10.876393 -17.463242 + 136000 1.8184858e-07 -2.5610505 -5.5493647 -10.867048 -17.456624 + 136100 1.8045496e-07 -2.5467304 -5.5376922 -10.857752 -17.449923 + 136200 1.7854265e-07 -2.5324685 -5.526065 -10.848497 -17.443154 + 136300 1.7614038e-07 -2.5182651 -5.5144745 -10.839276 -17.436326 + 136400 1.7327902e-07 -2.504128 -5.502916 -10.830078 -17.429446 + 136500 1.6998933e-07 -2.5004006 -5.4913899 -10.820895 -17.422519 + 136600 1.6630027e-07 -2.5004006 -5.4799023 -10.811722 -17.415543 + 136700 1.6223834e-07 -2.5004006 -5.4684659 -10.802555 -17.408517 + 136800 1.5782784e-07 -2.5004006 -5.4570996 -10.793397 -17.401435 + 136900 1.5309214e-07 -2.5004006 -5.4458283 -10.784253 -17.394293 + 137000 1.4805525e-07 -2.5004006 -5.4346819 -10.775137 -17.387088 + 137100 1.4274361e-07 -2.5004006 -5.4236947 -10.766064 -17.379815 + 137200 1.3718733e-07 -2.5004006 -5.4129035 -10.757057 -17.372474 + 137300 1.3142078e-07 -2.5004006 -5.4023468 -10.74814 -17.365069 + 137400 1.2548227e-07 -2.5004006 -5.3920626 -10.739343 -17.357603 + 137500 1.1941291e-07 -2.5004006 -5.3820876 -10.730695 -17.350087 + 137600 1.1325488e-07 -2.5004006 -5.3724554 -10.722229 -17.342534 + 137700 1.0704945e-07 -2.5004006 -5.3631954 -10.713974 -17.334959 + 137800 1.0083521e-07 -2.5004006 -5.3543318 -10.705961 -17.327382 + 137900 9.4646792e-08 -2.5004006 -5.3458827 -10.698214 -17.319825 + 138000 8.8514374e-08 -2.5004006 -5.33786 -10.690757 -17.31231 + 138100 8.2463947e-08 -2.5004006 -5.330269 -10.683609 -17.30486 + 138200 7.6518304e-08 -2.5004006 -5.3231087 -10.676782 -17.297499 + 138300 7.0698401e-08 -2.5004006 -5.3163726 -10.670285 -17.290248 + 138400 6.502476e-08 -2.5004006 -5.3100491 -10.664121 -17.28313 + 138500 5.9518554e-08 -2.5004006 -5.3041229 -10.658288 -17.276161 + 138600 5.4202125e-08 -2.5004006 -5.2985762 -10.65278 -17.269358 + 138700 4.9098811e-08 -2.5004006 -5.2933901 -10.647588 -17.262735 + 138800 4.4232137e-08 -2.5004006 -5.2885454 -10.642698 -17.256301 + 138900 3.9624566e-08 -2.5004006 -5.2840247 -10.638097 -17.250064 + 139000 3.529608e-08 -2.5004006 -5.2798126 -10.633769 -17.244027 + 139100 3.1262933e-08 -2.5004006 -5.2758974 -10.629699 -17.238191 + 139200 2.7536817e-08 -2.5004006 -5.2722714 -10.625874 -17.232555 + 139300 2.4124621e-08 -2.5004006 -5.2689313 -10.622282 -17.227114 + 139400 2.1028826e-08 -2.5004006 -5.2658785 -10.618916 -17.221864 + 139500 1.8248416e-08 -2.5004006 -5.2631188 -10.61577 -17.216796 + 139600 1.5780096e-08 -2.5004006 -5.2606619 -10.612844 -17.211905 + 139700 1.3619539e-08 -2.5004006 -5.2585204 -10.610141 -17.207183 + 139800 1.1762389e-08 -2.5004006 -5.2567095 -10.607668 -17.202624 + 139900 1.0204813e-08 -2.5004006 -5.2552451 -10.605434 -17.198226 + 140000 8.9435033e-09 -2.5004006 -5.2541432 -10.60345 -17.193984 + 140100 7.975189e-09 -2.5004006 -5.2534187 -10.601732 -17.189901 + 140200 7.2957819e-09 -2.5004006 -5.2530837 -10.600291 -17.185978 + 140300 6.8994055e-09 -2.5004006 -5.2531476 -10.599144 -17.182222 + 140400 6.7775428e-09 -2.5004006 -5.2536154 -10.5983 -17.17864 + 140500 6.9185184e-09 -2.5004006 -5.2544877 -10.597772 -17.17524 + 140600 7.30744e-09 -2.5004006 -5.2557605 -10.597565 -17.172034 + 140700 7.9266229e-09 -2.5004006 -5.2574248 -10.597684 -17.169033 + 140800 8.7564097e-09 -2.5004006 -5.2594671 -10.598129 -17.166249 + 140900 9.7762172e-09 -2.5004006 -5.2618695 -10.598895 -17.163692 + 141000 1.0965593e-08 -2.5004006 -5.264611 -10.599976 -17.161371 + 141100 1.2305073e-08 -2.5004006 -5.2676674 -10.601358 -17.159296 + 141200 1.3776682e-08 -2.5004006 -5.2710132 -10.603028 -17.157471 + 141300 1.5363996e-08 -2.5004006 -5.2746218 -10.604967 -17.155901 + 141400 1.7051815e-08 -2.5004006 -5.2784669 -10.607157 -17.154587 + 141500 1.8825531e-08 -2.5004006 -5.2825234 -10.609576 -17.153527 + 141600 2.0670404e-08 -2.5004006 -5.2867683 -10.612203 -17.152717 + 141700 2.2570913e-08 -2.5004006 -5.2911814 -10.615017 -17.152153 + 141800 2.4510364e-08 -2.5004006 -5.2957458 -10.617999 -17.151825 + 141900 2.6470853e-08 -2.5004006 -5.3004482 -10.62113 -17.151724 + 142000 2.8433591e-08 -2.5004006 -5.3052792 -10.624396 -17.151839 + 142100 3.0379539e-08 -2.5004006 -5.3102327 -10.627783 -17.152158 + 142200 3.2290204e-08 -2.5004006 -5.3153061 -10.631283 -17.152669 + 142300 3.4148438e-08 -2.5004006 -5.3204995 -10.634889 -17.153359 + 142400 3.5939073e-08 -2.5004006 -5.3258148 -10.638597 -17.154217 + 142500 3.7649273e-08 -2.5004006 -5.3312555 -10.642407 -17.155231 + 142600 3.9268541e-08 -2.5004006 -5.336825 -10.64632 -17.156394 + 142700 4.0788411e-08 -2.5004006 -5.3425266 -10.65034 -17.157697 + 142800 4.2201909e-08 -2.5004006 -5.3483623 -10.65447 -17.159134 + 142900 4.3502919e-08 -2.5004006 -5.3543317 -10.658714 -17.160702 + 143000 4.4685615e-08 -2.5004006 -5.3604321 -10.663075 -17.162398 + 143100 4.5744081e-08 -2.5004006 -5.3666578 -10.667555 -17.164222 + 143200 4.6672204e-08 -2.5004006 -5.3729997 -10.672154 -17.166176 + 143300 4.7463853e-08 -2.5004006 -5.3794455 -10.67687 -17.16826 + 143400 4.8113292e-08 -2.5004006 -5.3859798 -10.681697 -17.170479 + 143500 4.8615729e-08 -2.5004006 -5.3925844 -10.686629 -17.172833 + 143600 4.8967858e-08 -2.5004006 -5.3992391 -10.691654 -17.175326 + 143700 4.9168274e-08 -2.5004006 -5.4059217 -10.69676 -17.177957 + 143800 4.9217677e-08 -2.5004006 -5.4126094 -10.701931 -17.180727 + 143900 4.91188e-08 -2.5004006 -5.419279 -10.707149 -17.183635 + 144000 4.8876098e-08 -2.5004006 -5.4259081 -10.712397 -17.186675 + 144100 4.8495254e-08 -2.5004006 -5.4324753 -10.717656 -17.189843 + 144200 4.798262e-08 -2.5004006 -5.4389613 -10.722907 -17.193131 + 144300 4.7344699e-08 -2.5004006 -5.4453492 -10.72813 -17.196532 + 144400 4.6587783e-08 -2.5013784 -5.4516248 -10.73331 -17.200033 + 144500 4.5717794e-08 -2.5080656 -5.4577771 -10.73843 -17.203624 + 144600 4.4740363e-08 -2.5151272 -5.4637982 -10.743476 -17.207292 + 144700 4.3661091e-08 -2.5220124 -5.4696833 -10.748439 -17.211024 + 144800 4.2485915e-08 -2.5287237 -5.4754305 -10.753309 -17.214808 + 144900 4.122149e-08 -2.5352651 -5.48104 -10.758081 -17.21863 + 145000 3.9875468e-08 -2.5416416 -5.4865143 -10.762752 -17.222478 + 145100 3.8456615e-08 -2.5478579 -5.491857 -10.767321 -17.226342 + 145200 3.697473e-08 -2.5539182 -5.4970723 -10.771788 -17.23021 + 145300 3.5440375e-08 -2.5598255 -5.5021645 -10.776156 -17.234074 + 145400 3.3864464e-08 -2.5655807 -5.5071373 -10.78043 -17.237926 + 145500 3.2257812e-08 -2.5711825 -5.5119933 -10.784613 -17.241761 + 145600 3.0630716e-08 -2.5766274 -5.5167333 -10.788708 -17.245574 + 145700 2.8992651e-08 -2.5819091 -5.5213563 -10.79272 -17.249363 + 145800 2.7352145e-08 -2.587019 -5.5258592 -10.796649 -17.253126 + 145900 2.5716828e-08 -2.5919465 -5.5302367 -10.800498 -17.256863 + 146000 2.4093626e-08 -2.596679 -5.5344814 -10.804264 -17.260574 + 146100 2.2489059e-08 -2.6012031 -5.538584 -10.807945 -17.264259 + 146200 2.090954e-08 -2.6055044 -5.5425339 -10.811536 -17.26792 + 146300 1.936161e-08 -2.609569 -5.5463193 -10.81503 -17.271558 + 146400 1.7852051e-08 -2.6133834 -5.549928 -10.818418 -17.275171 + 146500 1.6387846e-08 -2.6169355 -5.553348 -10.821692 -17.278759 + 146600 1.4975998e-08 -2.6202152 -5.5565676 -10.824841 -17.282321 + 146700 1.3623242e-08 -2.6232149 -5.5595765 -10.827854 -17.285852 + 146800 1.233572e-08 -2.6259293 -5.5623659 -10.83072 -17.289348 + 146900 1.1118692e-08 -2.6283564 -5.564929 -10.83343 -17.292804 + 147000 9.9763296e-09 -2.6304967 -5.5672612 -10.835975 -17.296213 + 147100 8.9116479e-09 -2.6323538 -5.5693603 -10.838347 -17.299567 + 147200 7.9265771e-09 -2.6339338 -5.5712268 -10.84054 -17.302859 + 147300 7.0221506e-09 -2.6352451 -5.5728632 -10.842551 -17.306079 + 147400 6.1987672e-09 -2.6362976 -5.5742744 -10.844377 -17.309219 + 147500 5.4564643e-09 -2.6371027 -5.5754673 -10.846018 -17.312271 + 147600 4.7951432e-09 -2.6376723 -5.5764501 -10.847478 -17.315227 + 147700 4.2146999e-09 -2.6380185 -5.5772321 -10.848759 -17.31808 + 147800 3.7150388e-09 -2.6381529 -5.5778233 -10.849868 -17.320824 + 147900 3.2959748e-09 -2.638086 -5.5782336 -10.850812 -17.323454 + 148000 2.9570538e-09 -2.6378271 -5.5784727 -10.851598 -17.325965 + 148100 2.6973404e-09 -2.6373839 -5.5785494 -10.852234 -17.328357 + 148200 2.5152272e-09 -2.636762 -5.5784712 -10.852729 -17.330626 + 148300 2.4083119e-09 -2.6359654 -5.5782444 -10.853091 -17.332775 + 148400 2.3733744e-09 -2.634996 -5.5778736 -10.853327 -17.334803 + 148500 2.4064606e-09 -2.6338542 -5.5773617 -10.853443 -17.336713 + 148600 2.5030569e-09 -2.6325391 -5.5767102 -10.853443 -17.338508 + 148700 2.65832e-09 -2.6310489 -5.575919 -10.853331 -17.340192 + 148800 2.8673153e-09 -2.629381 -5.5749868 -10.85311 -17.341767 + 148900 3.1252177e-09 -2.6275331 -5.5739117 -10.852779 -17.343239 + 149000 3.4274384e-09 -2.6255031 -5.5726911 -10.852338 -17.34461 + 149100 3.7696599e-09 -2.6232898 -5.5713225 -10.851784 -17.345883 + 149200 4.1477819e-09 -2.6208934 -5.5698037 -10.851117 -17.347061 + 149300 4.5578011e-09 -2.6183155 -5.5681331 -10.850332 -17.348145 + 149400 4.9956612e-09 -2.6155597 -5.5663104 -10.849427 -17.349137 + 149500 5.4571156e-09 -2.6126316 -5.5643365 -10.848399 -17.350035 + 149600 5.937639e-09 -2.6095385 -5.562214 -10.847246 -17.350839 + 149700 6.4324122e-09 -2.6062898 -5.559947 -10.845968 -17.351546 + 149800 6.9363879e-09 -2.6028968 -5.5575414 -10.844564 -17.352156 + 149900 7.4444241e-09 -2.5993718 -5.5550047 -10.843037 -17.352664 + 150000 7.9514595e-09 -2.5957285 -5.5523459 -10.841388 -17.353067 + 150100 8.4526943e-09 -2.5919813 -5.5495753 -10.839624 -17.353364 + 150200 8.943742e-09 -2.5881446 -5.5467039 -10.837748 -17.353552 + 150300 9.4207224e-09 -2.5842328 -5.5437436 -10.83577 -17.353628 + 150400 9.8802834e-09 -2.5802597 -5.5407065 -10.833697 -17.353591 + 150500 1.0319552e-08 -2.5762382 -5.5376044 -10.831538 -17.35344 + 150600 1.073603e-08 -2.5721797 -5.5344489 -10.829302 -17.353177 + 150700 1.112747e-08 -2.5680944 -5.5312507 -10.827001 -17.352803 + 150800 1.1491747e-08 -2.5639907 -5.5280193 -10.824644 -17.352319 + 150900 1.182678e-08 -2.5598754 -5.5247633 -10.822239 -17.351729 + 151000 1.2130495e-08 -2.5557538 -5.5214897 -10.819797 -17.351038 + 151100 1.2400856e-08 -2.5516296 -5.518204 -10.817324 -17.35025 + 151200 1.2635948e-08 -2.5475052 -5.5149106 -10.814829 -17.34937 + 151300 1.2834091e-08 -2.5433822 -5.5116123 -10.812316 -17.348405 + 151400 1.2993958e-08 -2.5392615 -5.5083111 -10.80979 -17.347361 + 151500 1.3114674e-08 -2.5351438 -5.5050079 -10.807254 -17.346243 + 151600 1.3195868e-08 -2.5310296 -5.5017033 -10.80471 -17.345058 + 151700 1.3237675e-08 -2.5269202 -5.4983976 -10.80216 -17.343811 + 151800 1.3240676e-08 -2.5228173 -5.4950908 -10.799604 -17.342508 + 151900 1.32058e-08 -2.5187237 -5.4917837 -10.797041 -17.341154 + 152000 1.3134211e-08 -2.5146433 -5.4884775 -10.794473 -17.339751 + 152100 1.3027189e-08 -2.5105812 -5.485174 -10.791897 -17.338303 + 152200 1.2886046e-08 -2.5066951 -5.4818764 -10.789315 -17.336813 + 152300 1.2712083e-08 -2.5030851 -5.4785886 -10.786726 -17.335282 + 152400 1.2506586e-08 -2.5006113 -5.4753157 -10.784132 -17.333711 + 152500 1.2270879e-08 -2.5004006 -5.4720638 -10.781536 -17.3321 + 152600 1.2006388e-08 -2.5004006 -5.4688398 -10.778939 -17.330451 + 152700 1.171472e-08 -2.5004006 -5.4656515 -10.776347 -17.328763 + 152800 1.1397726e-08 -2.5004006 -5.4625071 -10.773763 -17.327036 + 152900 1.1057531e-08 -2.5004006 -5.4594152 -10.771194 -17.325271 + 153000 1.0696521e-08 -2.5004006 -5.4563842 -10.768646 -17.323468 + 153100 1.0317294e-08 -2.5004006 -5.4534223 -10.766126 -17.321628 + 153200 9.9225764e-09 -2.5004006 -5.4505372 -10.763641 -17.319753 + 153300 9.5151232e-09 -2.5004006 -5.447736 -10.761198 -17.317845 + 153400 9.0976257e-09 -2.5004006 -5.4450245 -10.758805 -17.315908 + 153500 8.6726371e-09 -2.5004006 -5.4424076 -10.756467 -17.313945 + 153600 8.242532e-09 -2.5004006 -5.4398892 -10.754192 -17.31196 + 153700 7.8095034e-09 -2.5004006 -5.4374717 -10.751983 -17.309958 + 153800 7.375593e-09 -2.5004006 -5.4351563 -10.749846 -17.307945 + 153900 6.9427439e-09 -2.5004006 -5.4329435 -10.747784 -17.305925 + 154000 6.5128599e-09 -2.5004006 -5.4308325 -10.7458 -17.303905 + 154100 6.0878549e-09 -2.5004006 -5.4288219 -10.743894 -17.30189 + 154200 5.6696804e-09 -2.5004006 -5.4269097 -10.742066 -17.299886 + 154300 5.2603221e-09 -2.5004006 -5.4250935 -10.740317 -17.297897 + 154400 4.8617668e-09 -2.5004006 -5.423371 -10.738646 -17.295928 + 154500 4.4759446e-09 -2.5004006 -5.4217399 -10.73705 -17.293984 + 154600 4.1046613e-09 -2.5004006 -5.4201984 -10.735528 -17.292068 + 154700 3.7495317e-09 -2.5004006 -5.418745 -10.734077 -17.290183 + 154800 3.4119309e-09 -2.5004006 -5.4173789 -10.732696 -17.288331 + 154900 3.092969e-09 -2.5004006 -5.4161002 -10.731383 -17.286513 + 155000 2.793497e-09 -2.5004006 -5.4149093 -10.730136 -17.284731 + 155100 2.5141371e-09 -2.5004006 -5.4138077 -10.728955 -17.282986 + 155200 2.2553324e-09 -2.5004006 -5.4127972 -10.72784 -17.281277 + 155300 2.0174016e-09 -2.5004006 -5.4118804 -10.726791 -17.279603 + 155400 1.8005885e-09 -2.5004006 -5.4110599 -10.725809 -17.277966 + 155500 1.6050935e-09 -2.5004006 -5.4103387 -10.724897 -17.276363 + 155600 1.4310838e-09 -2.5004006 -5.4097195 -10.724056 -17.274795 + 155700 1.2786791e-09 -2.5004006 -5.4092049 -10.723288 -17.273262 + 155800 1.1479199e-09 -2.5004006 -5.4087972 -10.722597 -17.271765 + 155900 1.0387255e-09 -2.5004006 -5.4084979 -10.721985 -17.270302 + 156000 9.5085432e-10 -2.5004006 -5.4083077 -10.721454 -17.268877 + 156100 8.838743e-10 -2.5004006 -5.4082268 -10.721007 -17.267489 + 156200 8.3715364e-10 -2.5004006 -5.4082542 -10.720646 -17.266142 + 156300 8.0987244e-10 -2.5004006 -5.4083882 -10.720372 -17.264837 + 156400 8.0105445e-10 -2.5004006 -5.408626 -10.720185 -17.263577 + 156500 8.0961255e-10 -2.5004006 -5.4089644 -10.720085 -17.262365 + 156600 8.3439893e-10 -2.5004006 -5.4093991 -10.72007 -17.261204 + 156700 8.7425049e-10 -2.5004006 -5.4099256 -10.720141 -17.260096 + 156800 9.2802148e-10 -2.5004006 -5.4105388 -10.720292 -17.259045 + 156900 9.9459842e-10 -2.5004006 -5.4112335 -10.720523 -17.258053 + 157000 1.0728967e-09 -2.5004006 -5.4120045 -10.720828 -17.257121 + 157100 1.1618421e-09 -2.5004006 -5.4128467 -10.721205 -17.256253 + 157200 1.2603445e-09 -2.5004006 -5.4137554 -10.721649 -17.255449 + 157300 1.3672709e-09 -2.5004006 -5.4147261 -10.722156 -17.25471 + 157400 1.4814262e-09 -2.5004006 -5.4157553 -10.722721 -17.254036 + 157500 1.6015478e-09 -2.5004006 -5.4168395 -10.723342 -17.253428 + 157600 1.7263161e-09 -2.5004006 -5.4179763 -10.724013 -17.252883 + 157700 1.8543789e-09 -2.5004006 -5.4191635 -10.724733 -17.252402 + 157800 1.9843869e-09 -2.5004006 -5.4203997 -10.725498 -17.251981 + 157900 2.1150318e-09 -2.5004006 -5.4216839 -10.726306 -17.25162 + 158000 2.2450816e-09 -2.5004006 -5.4230153 -10.727156 -17.251317 + 158100 2.3734049e-09 -2.5004006 -5.4243934 -10.728046 -17.251068 + 158200 2.4989819e-09 -2.5004006 -5.4258176 -10.728976 -17.250872 + 158300 2.6209012e-09 -2.5004006 -5.4272873 -10.729945 -17.250727 + 158400 2.7383439e-09 -2.5004006 -5.4288018 -10.730953 -17.25063 + 158500 2.8505612e-09 -2.5004006 -5.4303597 -10.732 -17.250581 + 158600 2.9568506e-09 -2.5004006 -5.4319595 -10.733086 -17.250577 + 158700 3.0565375e-09 -2.5004006 -5.433599 -10.734209 -17.250618 + 158800 3.1489662e-09 -2.5004006 -5.4352753 -10.73537 -17.250703 + 158900 3.233503e-09 -2.5004006 -5.4369853 -10.736568 -17.250832 + 159000 3.3095496e-09 -2.5004006 -5.438725 -10.737801 -17.251004 + 159100 3.3765645e-09 -2.5004006 -5.4404902 -10.739067 -17.251221 + 159200 3.4340876e-09 -2.5004006 -5.442276 -10.740364 -17.251481 + 159300 3.4817613e-09 -2.5004006 -5.4440776 -10.741689 -17.251787 + 159400 3.519345e-09 -2.5004006 -5.4458896 -10.743039 -17.252137 + 159500 3.5467184e-09 -2.5004006 -5.4477069 -10.74441 -17.252532 + 159600 3.5638745e-09 -2.5004006 -5.4495245 -10.745798 -17.252973 + 159700 3.5709026e-09 -2.5004006 -5.4513374 -10.7472 -17.253459 + 159800 3.5679663e-09 -2.5004006 -5.4531412 -10.74861 -17.25399 + 159900 3.5552803e-09 -2.5004006 -5.4549318 -10.750025 -17.254564 + 160000 3.5330905e-09 -2.5004006 -5.4567055 -10.75144 -17.255181 +Loop time of 49.2753 on 1 procs for 60000 steps with 9576 atoms + +Performance: 10520476.677 tau/day, 1217.648 timesteps/s, 11.660 Matom-step/s +99.7% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 6.0276 | 6.0276 | 6.0276 | 0.0 | 12.23 +Bond | 36.671 | 36.671 | 36.671 | 0.0 | 74.42 +Neigh | 0.63507 | 0.63507 | 0.63507 | 0.0 | 1.29 +Comm | 0.063752 | 0.063752 | 0.063752 | 0.0 | 0.13 +Output | 0.3562 | 0.3562 | 0.3562 | 0.0 | 0.72 +Modify | 4.5593 | 4.5593 | 4.5593 | 0.0 | 9.25 +Other | | 0.9622 | | | 1.95 + +Nlocal: 9576 ave 9576 max 9576 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 44691 ave 44691 max 44691 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 44691 +Ave neighs/atom = 4.6669799 +Ave special neighs/atom = 11.495405 +Neighbor list builds = 147 +Dangerous builds = 0 +Total wall time: 0:01:55 diff --git a/examples/bpm/poissons_ratio/in.bpm.poissons_ratio b/examples/bpm/poissons_ratio/in.bpm.poissons_ratio new file mode 100644 index 0000000000..71052ad417 --- /dev/null +++ b/examples/bpm/poissons_ratio/in.bpm.poissons_ratio @@ -0,0 +1,90 @@ +# Squish four pillars with different Poisson's ratios +# going from nearly incompressible to auxetic +# from left to right, nu ~ 0.5, 0.25, 0, <0 +# calibration from DOI: 10.1039/d3sm01373a + +units lj +dimension 3 +boundary p p s +atom_style bond +special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0 +newton on off +comm_modify vel yes cutoff 2.6 +lattice fcc 1.41 +region box block 0 20 -10 10 -1 21 units box +create_box 4 box bond/types 4 extra/bond/per/atom 20 extra/special/per/atom 50 +mass * 1.0 + +# Create initial disordered geometry somewhat near jamming + +region pillar cylinder z 10.0 0.0 7.0 0.0 20.0 units box +region pillarw cylinder z 10.0 0.0 8.0 -1.0 21.0 units box +create_atoms 1 region pillar + +velocity all create 0.1 345910 + +pair_style bpm/spring +pair_coeff * * 1.0 1.0 1.0 + +fix 1 all nve +fix wtemp all wall/region pillarw harmonic 1.0 1.0 1.0 + +thermo_style custom step ke pe pxx pyy pzz +thermo 100 + +timestep 0.1 +run 20000 +unfix wtemp + +# Replicate cylinder and add bonds + +replicate 4 1 1 + +region r1 block 0.0 20.0 EDGE EDGE EDGE EDGE side in units box +region r2 block 20.0 40.0 EDGE EDGE EDGE EDGE side in units box +region r3 block 40.0 60.0 EDGE EDGE EDGE EDGE side in units box +region r4 block 60.0 80.0 EDGE EDGE EDGE EDGE side in units box + +group p1 region r1 +group p2 region r2 +group p3 region r3 +group p4 region r4 + +set group p2 type 2 +set group p3 type 3 +set group p4 type 4 + +velocity all set 0.0 0.0 0.0 +neighbor 1.0 bin + +create_bonds many p1 p1 1 0.0 1.5 +create_bonds many p2 p2 2 0.0 1.5 +create_bonds many p3 p3 3 0.0 1.5 +create_bonds many p4 p4 4 0.0 1.5 + +neighbor 0.3 bin +special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 + +bond_style bpm/spring break no smooth no volume/factor yes +bond_coeff 1 1.0 0 1.0 -0.8 +bond_coeff 2 1.0 0 1.0 0.0 +bond_coeff 3 1.0 0 1.0 2.0 +bond_coeff 4 1.0 0 1.0 10.0 + +# squish + +region b block EDGE EDGE EDGE EDGE -1.0 2.0 units box +region t block EDGE EDGE EDGE EDGE 18.0 21.0 units box +group bot region b +group top region t + +velocity top set 0.0 0.0 -0.0025 +fix 2 bot setforce 0.0 0.0 0.0 +fix 3 top setforce 0.0 0.0 0.0 + +compute zmax all reduce max z + +thermo_style custom step ke pe pxx pyy pzz c_zmax +#dump 1 all custom 100 atomDump id type x y z + +run 10000 diff --git a/examples/bpm/poissons_ratio/log.19Nov2024.bpm.poissons_ratio.g++.1 b/examples/bpm/poissons_ratio/log.19Nov2024.bpm.poissons_ratio.g++.1 new file mode 100644 index 0000000000..e4a95e2b70 --- /dev/null +++ b/examples/bpm/poissons_ratio/log.19Nov2024.bpm.poissons_ratio.g++.1 @@ -0,0 +1,635 @@ +LAMMPS (19 Nov 2024 - Development - patch_19Nov2024-1028-g800a5f6310-modified) +# Squish three pillars with different Poisson's ratios +# from left to right, nu ~ 0.5, nu = 0.25 nu ~ 0, nu << 0 + +units lj +dimension 3 +boundary p p s +atom_style bond +special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0 +newton on off +comm_modify vel yes cutoff 2.6 +lattice fcc 1.41 +Lattice spacing in x,y,z = 1.4156209 1.4156209 1.4156209 +region box block 0 20 -10 10 -1 21 units box +create_box 4 box bond/types 4 extra/bond/per/atom 20 extra/special/per/atom 50 +Created orthogonal box = (0 -10 -1) to (20 10 21) + 1 by 1 by 1 MPI processor grid +mass * 1.0 + +# Create roughly jammed initial disordered geometry + +region pillar cylinder z 10.0 0.0 7.0 0.0 20.0 units box +region pillarw cylinder z 10.0 0.0 8.0 -1.0 21.0 units box +create_atoms 1 region pillar +Created 4348 atoms + using lattice units in orthogonal box = (0 -10 -1.0022) to (20 10 21.0022) + create_atoms CPU = 0.001 seconds + +velocity all create 0.1 345910 + +pair_style bpm/spring +pair_coeff * * 1.0 1.0 1.0 + +fix 1 all nve +fix wtemp all wall/region pillarw harmonic 1.0 1.0 1.0 + +thermo_style custom step ke pe pxx pyy pzz +thermo 100 + +timestep 0.1 +run 20000 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 2.6 + binsize = 0.65, bins = 31 31 34 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 9.863 | 9.863 | 9.863 Mbytes + Step KinEng PotEng Pxx Pyy Pzz + 0 0.1499655 0 0.055275974 0.054026613 0.05516469 + 100 0.0045460156 0.0041409796 0.020750379 0.02025897 0.02055488 + 200 0.0013178069 0.0013493823 0.011925094 0.011431479 0.012133526 + 300 0.00061239509 0.00063111128 0.0078970462 0.0079941921 0.0081233289 + 400 0.00035752073 0.00035219764 0.0058819816 0.0058434966 0.0059449021 + 500 0.00024124423 0.00021786035 0.0046674184 0.0045620932 0.0045613656 + 600 0.00016811016 0.0001529395 0.0037258758 0.0038555361 0.0038576669 + 700 0.00012945096 0.00010987332 0.0031369246 0.0032615013 0.0032031682 + 800 0.00010709448 8.0430402e-05 0.0026895825 0.0027732167 0.0027501992 + 900 8.7153735e-05 6.3865397e-05 0.0024057711 0.0024050424 0.0024818746 + 1000 7.3842889e-05 5.1564094e-05 0.0021520507 0.0021316601 0.0022291678 + 1100 6.3710979e-05 4.3417308e-05 0.0019865788 0.0019506967 0.0020247423 + 1200 5.6443217e-05 3.5839723e-05 0.0018116278 0.0017780415 0.0018009974 + 1300 5.2117104e-05 2.9304564e-05 0.0016091295 0.001640217 0.0016494854 + 1400 4.7722691e-05 2.4720323e-05 0.0014728954 0.0014850638 0.0015059012 + 1500 4.3462545e-05 2.1647487e-05 0.0013643988 0.001374924 0.0013860842 + 1600 4.0536322e-05 1.8288037e-05 0.0012573942 0.0012444583 0.0012755521 + 1700 3.775762e-05 1.6253386e-05 0.0011940081 0.0011936534 0.0011875306 + 1800 3.5608024e-05 1.4169135e-05 0.0011046597 0.0011124609 0.0011233068 + 1900 3.3550883e-05 1.2504042e-05 0.0010287232 0.0010521058 0.0010397415 + 2000 3.1777303e-05 1.1341947e-05 0.00099021486 0.000998969 0.0009824298 + 2100 3.0397425e-05 1.0197816e-05 0.00093175155 0.0009356076 0.00093587614 + 2200 2.9415297e-05 9.1442693e-06 0.00087450395 0.00088005632 0.00090292439 + 2300 2.8707506e-05 8.0867687e-06 0.00083155793 0.00084280783 0.00081915094 + 2400 2.8087223e-05 7.1902632e-06 0.0007805398 0.00077693415 0.00079586919 + 2500 2.7412036e-05 6.5329159e-06 0.00074113675 0.00075460667 0.00075182142 + 2600 2.679767e-05 5.9994917e-06 0.00071331838 0.00071107795 0.00071851862 + 2700 2.635836e-05 5.4669016e-06 0.00067864938 0.00067012596 0.00068378851 + 2800 2.5965243e-05 4.949289e-06 0.00064702706 0.00064070457 0.00065886675 + 2900 2.559065e-05 4.5456845e-06 0.0006226747 0.00061715852 0.00061944402 + 3000 2.5250954e-05 4.1940249e-06 0.00059390621 0.00060635122 0.00059577814 + 3100 2.4986177e-05 3.8098655e-06 0.00057100922 0.00056783357 0.00056395219 + 3200 2.4747099e-05 3.5558624e-06 0.00054231559 0.00054795569 0.00055365101 + 3300 2.4583172e-05 3.2301482e-06 0.00052359125 0.00052829803 0.00051398925 + 3400 2.4465352e-05 2.9399683e-06 0.000501977 0.00050484541 0.00050034857 + 3500 2.4292908e-05 2.7427543e-06 0.00048102359 0.00048510374 0.00047731201 + 3600 2.4101584e-05 2.5764805e-06 0.00045636206 0.00047866627 0.00046659816 + 3700 2.3996774e-05 2.3958219e-06 0.00045065226 0.00045184729 0.0004429641 + 3800 2.3876498e-05 2.2130338e-06 0.00043775075 0.00043861927 0.00042506898 + 3900 2.3795887e-05 2.0489788e-06 0.00041988245 0.00041826647 0.00040894442 + 4000 2.3728265e-05 1.8872709e-06 0.0004011638 0.00040340239 0.00039261217 + 4100 2.361572e-05 1.8065046e-06 0.00038335165 0.00039918443 0.00037720392 + 4200 2.3535095e-05 1.6942677e-06 0.00037114826 0.00038329691 0.0003685779 + 4300 2.3470549e-05 1.5919892e-06 0.00036932669 0.00036792338 0.00034946519 + 4400 2.3435028e-05 1.4707935e-06 0.00035224849 0.00035387592 0.00033687303 + 4500 2.3379331e-05 1.3699313e-06 0.00033731606 0.00034141019 0.00032655896 + 4600 2.3319696e-05 1.3018783e-06 0.0003294574 0.00032975202 0.00031755058 + 4700 2.3261329e-05 1.2276139e-06 0.00031109085 0.00032618425 0.00030828008 + 4800 2.3223647e-05 1.140323e-06 0.00030403794 0.00030819264 0.00029880154 + 4900 2.3159354e-05 1.1062118e-06 0.00029932089 0.00031023756 0.0002883218 + 5000 2.3107215e-05 1.0481984e-06 0.00028703077 0.00029791419 0.00028428891 + 5100 2.3059227e-05 9.9631603e-07 0.00028386337 0.00029449929 0.00027691149 + 5200 2.2992218e-05 9.7498165e-07 0.00028122064 0.00029160621 0.00026605841 + 5300 2.2965927e-05 9.089863e-07 0.00026898334 0.00027744029 0.00025999853 + 5400 2.2917228e-05 8.6905288e-07 0.00026737748 0.00026872859 0.00025247197 + 5500 2.2888721e-05 8.1654344e-07 0.00025981052 0.00025927594 0.00024538697 + 5600 2.2858634e-05 7.7918083e-07 0.00024981244 0.00025588577 0.00023814373 + 5700 2.281493e-05 7.5493879e-07 0.00024608832 0.0002484983 0.00024049134 + 5800 2.2768424e-05 7.3151987e-07 0.00024270273 0.00024299121 0.00022677616 + 5900 2.2732815e-05 7.074362e-07 0.00023856426 0.00024317059 0.00022163128 + 6000 2.2709157e-05 6.6558163e-07 0.00023134432 0.00023530205 0.00022005083 + 6100 2.2662747e-05 6.5786116e-07 0.0002266164 0.00023346154 0.0002204147 + 6200 2.2633078e-05 6.2893457e-07 0.00022245338 0.00022992048 0.00021358332 + 6300 2.2609503e-05 5.9395689e-07 0.00021957435 0.00022236534 0.00020603821 + 6400 2.2569287e-05 5.8419818e-07 0.00021444329 0.00022008074 0.00020680001 + 6500 2.2558171e-05 5.5154822e-07 0.00020972278 0.00021475404 0.0001968296 + 6600 2.2537593e-05 5.2835018e-07 0.00020614625 0.00021023961 0.00019204871 + 6700 2.2502584e-05 5.1813436e-07 0.00020503279 0.00020643962 0.00019037754 + 6800 2.2478356e-05 4.9790083e-07 0.00020102604 0.00020156032 0.00018515076 + 6900 2.2455758e-05 4.8193847e-07 0.00019951327 0.00019687965 0.00017945937 + 7000 2.2451788e-05 4.5334026e-07 0.00019179079 0.00019105513 0.00018131892 + 7100 2.242032e-05 4.4768512e-07 0.00018785677 0.00019138466 0.00017575316 + 7200 2.2399735e-05 4.3736624e-07 0.00018626883 0.00019360748 0.00017301675 + 7300 2.2389231e-05 4.15585e-07 0.00018246126 0.00018633267 0.00016724368 + 7400 2.2380183e-05 3.9716485e-07 0.00017807282 0.00017911936 0.00016526154 + 7500 2.2360502e-05 3.8572453e-07 0.00017941834 0.00017481595 0.00016562917 + 7600 2.2352618e-05 3.6544203e-07 0.0001738664 0.00017168235 0.00015859374 + 7700 2.2334806e-05 3.607199e-07 0.00017225216 0.00017080992 0.00015661869 + 7800 2.2324987e-05 3.4379759e-07 0.00016927498 0.00016663572 0.00015055472 + 7900 2.2312673e-05 3.3388048e-07 0.00016641481 0.00016711678 0.00014572442 + 8000 2.2301157e-05 3.2411769e-07 0.00016240031 0.00016423398 0.00014745631 + 8100 2.2289999e-05 3.1300113e-07 0.00015980907 0.00016023173 0.00014648402 + 8200 2.2290743e-05 2.9256755e-07 0.00015325928 0.00015691336 0.00013999402 + 8300 2.2281125e-05 2.8428888e-07 0.00015228905 0.00015083585 0.00013859409 + 8400 2.2276417e-05 2.7196488e-07 0.00014803522 0.00014827108 0.00013276633 + 8500 2.2270336e-05 2.6090967e-07 0.00014433988 0.00014599154 0.00013300747 + 8600 2.2263872e-05 2.4958292e-07 0.00013831677 0.00014270235 0.00012905707 + 8700 2.2248712e-05 2.4963205e-07 0.00013872459 0.0001439154 0.00012481041 + 8800 2.2250741e-05 2.3462546e-07 0.00013718378 0.00013836506 0.00012339897 + 8900 2.224156e-05 2.2671444e-07 0.00013600425 0.00013296456 0.00011974963 + 9000 2.223534e-05 2.2123093e-07 0.00013416263 0.00013296441 0.00011589796 + 9100 2.2228222e-05 2.1383104e-07 0.00013107675 0.00012912031 0.0001145627 + 9200 2.2227286e-05 2.0166229e-07 0.00012779654 0.00012790731 0.00011151855 + 9300 2.2220754e-05 1.9643141e-07 0.00012495065 0.0001246298 0.00010931293 + 9400 2.221898e-05 1.8787396e-07 0.00012142128 0.0001220759 0.00010842013 + 9500 2.2213967e-05 1.8124491e-07 0.00011804877 0.00012238176 0.00010366211 + 9600 2.2207421e-05 1.7767413e-07 0.00011648229 0.00012054702 0.00010322444 + 9700 2.2204058e-05 1.7056842e-07 0.00011554095 0.00011498299 9.977342e-05 + 9800 2.2199188e-05 1.6522097e-07 0.0001128848 0.00011236078 9.9036502e-05 + 9900 2.2197504e-05 1.5746927e-07 0.00010946504 0.00010989886 9.6727132e-05 + 10000 2.2192316e-05 1.5304623e-07 0.00010594185 0.00010914699 9.528986e-05 + 10100 2.2184947e-05 1.5244045e-07 0.00010752432 0.00010893017 9.4551907e-05 + 10200 2.2178334e-05 1.4903759e-07 0.00010714254 0.00010631136 9.3781244e-05 + 10300 2.2176545e-05 1.4377101e-07 0.00010349821 0.00010615276 9.0627052e-05 + 10400 2.2170858e-05 1.4070094e-07 0.00010356274 0.00010425909 8.9700967e-05 + 10500 2.216613e-05 1.3820877e-07 0.00010184809 0.00010281562 8.9244415e-05 + 10600 2.2164055e-05 1.3216024e-07 0.00010308437 9.8578026e-05 8.5149176e-05 + 10700 2.2159491e-05 1.2984075e-07 9.8219521e-05 9.9602891e-05 8.4157228e-05 + 10800 2.2154477e-05 1.2630119e-07 9.6387929e-05 9.8518691e-05 8.4474815e-05 + 10900 2.2154048e-05 1.2065173e-07 9.7781796e-05 9.576565e-05 8.154014e-05 + 11000 2.2149114e-05 1.1781869e-07 9.2783199e-05 9.5117475e-05 8.0363701e-05 + 11100 2.2141212e-05 1.1917239e-07 9.5852588e-05 9.4366973e-05 8.1109475e-05 + 11200 2.2137916e-05 1.1552597e-07 9.3462537e-05 9.3233749e-05 8.1109707e-05 + 11300 2.213658e-05 1.1008603e-07 9.0556648e-05 9.0476596e-05 7.9879738e-05 + 11400 2.2132896e-05 1.0849193e-07 9.0387656e-05 8.8771879e-05 7.7878167e-05 + 11500 2.2131699e-05 1.0493084e-07 8.8911234e-05 8.9360083e-05 7.6820653e-05 + 11600 2.212882e-05 1.0226714e-07 8.7730933e-05 8.9073361e-05 7.4566523e-05 + 11700 2.2124982e-05 9.9910102e-08 8.477437e-05 8.7806303e-05 7.4307427e-05 + 11800 2.2122352e-05 9.7448554e-08 8.7713138e-05 8.4813396e-05 7.2459814e-05 + 11900 2.2115306e-05 9.9205622e-08 8.6813079e-05 8.772968e-05 7.320007e-05 + 12000 2.211193e-05 9.6005824e-08 8.5655613e-05 8.5316917e-05 7.2326687e-05 + 12100 2.2111397e-05 9.2687716e-08 8.307622e-05 8.4586949e-05 7.1199156e-05 + 12200 2.2109506e-05 9.0349635e-08 8.3196249e-05 8.0047918e-05 7.1459883e-05 + 12300 2.210352e-05 9.1828777e-08 8.3023487e-05 8.298801e-05 7.0680887e-05 + 12400 2.2102016e-05 8.8266841e-08 8.1237167e-05 8.0897688e-05 6.8984427e-05 + 12500 2.2100818e-05 8.4451868e-08 8.1241577e-05 7.9056657e-05 6.717288e-05 + 12600 2.2099153e-05 8.2172667e-08 8.1099692e-05 7.7228294e-05 6.5679604e-05 + 12700 2.2096311e-05 8.1609526e-08 7.8279774e-05 7.7218651e-05 6.5855028e-05 + 12800 2.2092745e-05 8.0724331e-08 7.7558727e-05 7.7608398e-05 6.3769835e-05 + 12900 2.2092691e-05 7.7030815e-08 7.6375935e-05 7.5224855e-05 6.3459282e-05 + 13000 2.2090024e-05 7.6060223e-08 7.7017264e-05 7.4786591e-05 6.3026033e-05 + 13100 2.2087518e-05 7.4543793e-08 7.6332555e-05 7.3188101e-05 6.1356128e-05 + 13200 2.2084857e-05 7.418719e-08 7.6669987e-05 7.404012e-05 6.2432396e-05 + 13300 2.2082212e-05 7.2196183e-08 7.4038422e-05 7.4260224e-05 6.1635001e-05 + 13400 2.2080736e-05 7.0711865e-08 7.2995841e-05 7.2774089e-05 5.8837968e-05 + 13500 2.2078436e-05 7.0246025e-08 7.2080944e-05 7.1699053e-05 6.0562467e-05 + 13600 2.2076176e-05 6.8496408e-08 7.3283243e-05 7.0444762e-05 5.8434239e-05 + 13700 2.207464e-05 6.6747696e-08 7.0510931e-05 7.0209957e-05 5.8512753e-05 + 13800 2.2073094e-05 6.4951584e-08 7.221483e-05 6.8194771e-05 5.8326554e-05 + 13900 2.2069993e-05 6.4329747e-08 7.108122e-05 6.7692383e-05 5.6975473e-05 + 14000 2.2068384e-05 6.3826074e-08 7.0821331e-05 6.6802334e-05 5.68441e-05 + 14100 2.2066879e-05 6.1895531e-08 6.9341143e-05 6.788505e-05 5.5082465e-05 + 14200 2.2065117e-05 6.1337212e-08 6.9233584e-05 6.8817889e-05 5.5574272e-05 + 14300 2.2064837e-05 5.8643765e-08 6.5620482e-05 6.5164345e-05 5.5025535e-05 + 14400 2.2063445e-05 5.7670706e-08 6.5693047e-05 6.5227069e-05 5.3546255e-05 + 14500 2.2062593e-05 5.538514e-08 6.696964e-05 6.4489522e-05 5.186144e-05 + 14600 2.2059889e-05 5.6128076e-08 6.6606975e-05 6.3318574e-05 5.3065953e-05 + 14700 2.2058311e-05 5.4197187e-08 6.5636138e-05 6.2862183e-05 5.1216722e-05 + 14800 2.2056992e-05 5.3753302e-08 6.4166876e-05 6.2347682e-05 5.1644619e-05 + 14900 2.2055144e-05 5.3731475e-08 6.2886449e-05 6.2665027e-05 5.1085737e-05 + 15000 2.2055534e-05 5.1421678e-08 6.3216438e-05 6.2497955e-05 4.9420052e-05 + 15100 2.2053654e-05 5.02402e-08 6.185253e-05 6.1020856e-05 4.8961501e-05 + 15200 2.2052236e-05 4.9076779e-08 6.1894516e-05 5.8658526e-05 4.9270802e-05 + 15300 2.2050986e-05 4.8464692e-08 6.1632248e-05 5.939126e-05 4.7954422e-05 + 15400 2.2050221e-05 4.7362506e-08 5.9932389e-05 5.8619584e-05 4.8571134e-05 + 15500 2.2049702e-05 4.5776499e-08 5.9343369e-05 5.6908271e-05 4.5799128e-05 + 15600 2.2046842e-05 4.6074337e-08 6.0035433e-05 5.8667997e-05 4.6172612e-05 + 15700 2.2046262e-05 4.542862e-08 5.8703316e-05 5.7704418e-05 4.6189812e-05 + 15800 2.204616e-05 4.3329814e-08 5.6689179e-05 5.6845301e-05 4.5918735e-05 + 15900 2.2044466e-05 4.3332045e-08 5.806419e-05 5.6030356e-05 4.5166944e-05 + 16000 2.2043425e-05 4.2921122e-08 5.6716404e-05 5.5927539e-05 4.5500189e-05 + 16100 2.2041966e-05 4.1774604e-08 5.6210966e-05 5.4580522e-05 4.4615956e-05 + 16200 2.2041126e-05 4.1198995e-08 5.6314084e-05 5.5538584e-05 4.3793702e-05 + 16300 2.2040394e-05 4.0405671e-08 5.6049147e-05 5.5461464e-05 4.1884999e-05 + 16400 2.2040538e-05 3.8384306e-08 5.4398726e-05 5.3601303e-05 4.2580325e-05 + 16500 2.2039103e-05 3.8153339e-08 5.46254e-05 5.3390447e-05 4.2089044e-05 + 16600 2.2036976e-05 3.8358477e-08 5.2955748e-05 5.3742853e-05 4.1975739e-05 + 16700 2.20354e-05 3.8227046e-08 5.3241934e-05 5.2684751e-05 4.1815545e-05 + 16800 2.2034486e-05 3.7612842e-08 5.3915367e-05 5.3101063e-05 3.9996576e-05 + 16900 2.2033757e-05 3.6901749e-08 5.324896e-05 5.2020981e-05 4.0209668e-05 + 17000 2.2032483e-05 3.631797e-08 5.2504044e-05 5.1532024e-05 4.1841265e-05 + 17100 2.2031907e-05 3.5761725e-08 5.2177113e-05 5.1853522e-05 4.0475234e-05 + 17200 2.2030622e-05 3.5615934e-08 5.2153967e-05 5.1680185e-05 4.0255138e-05 + 17300 2.2028906e-05 3.5769817e-08 5.3276095e-05 5.1713123e-05 3.9429947e-05 + 17400 2.2027982e-05 3.5279634e-08 5.1720769e-05 5.1071287e-05 3.946136e-05 + 17500 2.2027385e-05 3.4532852e-08 5.0897208e-05 5.0132128e-05 3.9770047e-05 + 17600 2.2025743e-05 3.4705869e-08 5.1921573e-05 4.9849618e-05 3.9250188e-05 + 17700 2.202442e-05 3.4664237e-08 5.1037538e-05 5.1309699e-05 3.8699028e-05 + 17800 2.2024041e-05 3.3230639e-08 5.0676543e-05 4.9676967e-05 3.6992319e-05 + 17900 2.2024009e-05 3.2185399e-08 4.9624741e-05 4.8805054e-05 3.8163917e-05 + 18000 2.2023291e-05 3.1901464e-08 4.9090832e-05 4.9184392e-05 3.7458065e-05 + 18100 2.202221e-05 3.1698456e-08 4.9178905e-05 4.8243736e-05 3.7166662e-05 + 18200 2.2021437e-05 3.1022506e-08 4.8457604e-05 4.8875433e-05 3.5824097e-05 + 18300 2.2020792e-05 3.0064688e-08 4.909522e-05 4.7180933e-05 3.5355876e-05 + 18400 2.2021113e-05 2.9279611e-08 4.7111226e-05 4.7747191e-05 3.4625046e-05 + 18500 2.2019843e-05 2.9077485e-08 4.7131195e-05 4.633375e-05 3.5061152e-05 + 18600 2.201863e-05 2.9334156e-08 4.7778742e-05 4.7369011e-05 3.4559728e-05 + 18700 2.2018219e-05 2.862088e-08 4.7260131e-05 4.5881586e-05 3.4305681e-05 + 18800 2.2018393e-05 2.7165913e-08 4.6456933e-05 4.5912824e-05 3.3022256e-05 + 18900 2.201532e-05 2.8873682e-08 4.7138874e-05 4.6487853e-05 3.5130117e-05 + 19000 2.2014497e-05 2.8430782e-08 4.7563112e-05 4.6760097e-05 3.3226263e-05 + 19100 2.2014081e-05 2.8050044e-08 4.6431839e-05 4.6219284e-05 3.4248177e-05 + 19200 2.2013576e-05 2.7201031e-08 4.5709989e-05 4.5916792e-05 3.3897641e-05 + 19300 2.2012609e-05 2.7374842e-08 4.561715e-05 4.5693439e-05 3.4284473e-05 + 19400 2.2010667e-05 2.8105102e-08 4.6663945e-05 4.6539017e-05 3.3608877e-05 + 19500 2.2010486e-05 2.6897595e-08 4.5576796e-05 4.6292499e-05 3.2656892e-05 + 19600 2.2010302e-05 2.6248669e-08 4.4996903e-05 4.3675939e-05 3.4540503e-05 + 19700 2.2009254e-05 2.6450724e-08 4.4868007e-05 4.5628545e-05 3.3413034e-05 + 19800 2.2007283e-05 2.721852e-08 4.5939302e-05 4.5327011e-05 3.3411556e-05 + 19900 2.2007538e-05 2.6295204e-08 4.5722301e-05 4.441743e-05 3.4023953e-05 + 20000 2.2006515e-05 2.6089093e-08 4.4621124e-05 4.5449725e-05 3.2126359e-05 +Loop time of 7.03939 on 1 procs for 20000 steps with 4348 atoms + +Performance: 24547586.015 tau/day, 2841.156 timesteps/s, 12.353 Matom-step/s +99.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.55 | 4.55 | 4.55 | 0.0 | 64.64 +Bond | 0.00067765 | 0.00067765 | 0.00067765 | 0.0 | 0.01 +Neigh | 0.3745 | 0.3745 | 0.3745 | 0.0 | 5.32 +Comm | 0.013687 | 0.013687 | 0.013687 | 0.0 | 0.19 +Output | 0.006889 | 0.006889 | 0.006889 | 0.0 | 0.10 +Modify | 1.9222 | 1.9222 | 1.9222 | 0.0 | 27.31 +Other | | 0.1715 | | | 2.44 + +Nlocal: 4348 ave 4348 max 4348 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 23350 ave 23350 max 23350 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 23350 +Ave neighs/atom = 5.3702852 +Ave special neighs/atom = 0 +Neighbor list builds = 222 +Dangerous builds = 0 +unfix wtemp + +# Replicate cylinder and add bonds + +replicate 4 1 1 +Replication is creating a 4x1x1 = 4 times larger system... + orthogonal box = (0 -10 -0.0025658844) to (80 10 20.002511) + 1 by 1 by 1 MPI processor grid + 17392 atoms +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 0 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.001 seconds + replicate CPU = 0.003 seconds + +region r1 block 0.0 20.0 EDGE EDGE EDGE EDGE side in units box +region r2 block 20.0 40.0 EDGE EDGE EDGE EDGE side in units box +region r3 block 40.0 60.0 EDGE EDGE EDGE EDGE side in units box +region r4 block 60.0 80.0 EDGE EDGE EDGE EDGE side in units box + +group p1 region r1 +4348 atoms in group p1 +group p2 region r2 +4348 atoms in group p2 +group p3 region r3 +4348 atoms in group p3 +group p4 region r4 +4348 atoms in group p4 + +set group p2 type 2 +Setting atom values ... + 4348 settings made for type +set group p3 type 3 +Setting atom values ... + 4348 settings made for type +set group p4 type 4 +Setting atom values ... + 4348 settings made for type + +velocity all set 0.0 0.0 0.0 +neighbor 1.0 bin + +create_bonds many p1 p1 1 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 20 21 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 29229 bonds, new total = 29229 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 19 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.002 seconds +create_bonds many p2 p2 2 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Bonds are defined but no bond style is set (../force.cpp:197) +WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:199) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 20 21 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 29229 bonds, new total = 58458 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 19 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.003 seconds +create_bonds many p3 p3 3 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Bonds are defined but no bond style is set (../force.cpp:197) +WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:199) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 20 21 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 29229 bonds, new total = 87687 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 19 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.004 seconds +create_bonds many p4 p4 4 0.0 1.5 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +WARNING: Bonds are defined but no bond style is set (../force.cpp:197) +WARNING: Likewise 1-2 special neighbor interactions != 1.0 (../force.cpp:199) +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2 + ghost atom cutoff = 2.6 + binsize = 1, bins = 80 20 21 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) command create_bonds, occasional + attributes: full, newton on + pair build: full/bin + stencil: full/bin/3d + bin: standard + (2) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Added 29229 bonds, new total = 116916 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 19 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.005 seconds + +neighbor 0.3 bin +special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 + +bond_style bpm/spring break no smooth no volume/factor yes +bond_coeff 1 1.0 0 1.0 -0.8 +bond_coeff 2 1.0 0 1.0 0.0 +bond_coeff 3 1.0 0 1.0 2.0 +bond_coeff 4 1.0 0 1.0 10.0 + +# squish + +region b block EDGE EDGE EDGE EDGE -1.0 2.0 units box +region t block EDGE EDGE EDGE EDGE 18.0 21.0 units box +group bot region b +2040 atoms in group bot +group top region t +2036 atoms in group top + +velocity top set 0.0 0.0 -0.0025 +fix 2 bot setforce 0.0 0.0 0.0 +fix 3 top setforce 0.0 0.0 0.0 + +compute zmax all reduce max z + +thermo_style custom step ke pe pxx pyy pzz c_zmax +dump 1 all custom 100 atomDump id type x y z + +run 10000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- BPM bond style: doi:10.1039/D3SM01373A + +@Article{Clemmer2024, + author = {Clemmer, Joel T. and Monti, Joseph M. and Lechman, Jeremy B.}, + title = {A soft departure from jamming: the compaction of deformable + granular matter under high pressures}, + journal = {Soft Matter}, + year = 2024, + volume = 20, + number = 8, + pages = {1702--1718} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 2.6 + binsize = 0.65, bins = 124 31 31 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair bpm/spring, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 33.55 | 33.55 | 33.55 Mbytes + Step KinEng PotEng Pxx Pyy Pzz c_zmax + 20000 7.3311514e-07 0 5.5082149e-05 5.6035691e-05 0.00016879881 20.000342 + 20100 3.1226194e-06 4.1766539e-06 -0.00013996263 -0.00014393529 0.0029331928 19.964952 + 20200 2.5567295e-06 1.4988852e-05 -0.00027674096 -0.00027610139 0.0056641847 19.929561 + 20300 2.5665365e-06 3.3513395e-05 -0.00042198157 -0.0004191815 0.0083802213 19.894171 + 20400 2.4143831e-06 5.9638373e-05 -0.00055373017 -0.00055236369 0.011083701 19.85878 + 20500 2.2440232e-06 9.3155125e-05 -0.00070411826 -0.00070166982 0.013871936 19.82339 + 20600 2.3036882e-06 0.00013415012 -0.00084108079 -0.00084004876 0.016564858 19.787999 + 20700 2.4894579e-06 0.00018252868 -0.00098164122 -0.00097848101 0.019243173 19.752609 + 20800 2.3533488e-06 0.0002383092 -0.0011196916 -0.0011163409 0.021906836 19.717218 + 20900 2.3312562e-06 0.000301439 -0.0012662271 -0.0012625903 0.024743687 19.681828 + 21000 2.3806649e-06 0.00037188609 -0.0014035798 -0.0013992731 0.02739958 19.646437 + 21100 2.3212779e-06 0.00044964779 -0.0015396059 -0.0015348733 0.030041098 19.611047 + 21200 2.3908442e-06 0.00053469194 -0.001674797 -0.0016694993 0.03266844 19.575656 + 21300 2.3622478e-06 0.00062699617 -0.001822934 -0.0018167895 0.035552232 19.540266 + 21400 2.349964e-06 0.00072653051 -0.0019569691 -0.0019503123 0.038170924 19.504875 + 21500 2.3567592e-06 0.00083327134 -0.0020899915 -0.0020827032 0.040775314 19.469484 + 21600 2.3616263e-06 0.00094719631 -0.0022220661 -0.0022140075 0.043365368 19.434094 + 21700 2.353721e-06 0.0010682808 -0.0023711759 -0.0023623886 0.046296241 19.398703 + 21800 2.3646799e-06 0.0011965 -0.0025021157 -0.0024925265 0.048877326 19.363313 + 21900 2.3550746e-06 0.0013318277 -0.0026319662 -0.0026215842 0.051443901 19.327922 + 22000 2.3552825e-06 0.0014742397 -0.0027607166 -0.0027495396 0.053995979 19.292532 + 22100 2.3588762e-06 0.0016237112 -0.0028884164 -0.0028763855 0.05653356 19.257141 + 22200 2.3566445e-06 0.0017802179 -0.0030385388 -0.0030255211 0.05951687 19.221751 + 22300 2.3569128e-06 0.0019437341 -0.0031650443 -0.0031511287 0.062044959 19.18636 + 22400 2.3573615e-06 0.0021142342 -0.0032904648 -0.0032756057 0.064558413 19.15097 + 22500 2.3556792e-06 0.0022916926 -0.003414791 -0.0033989599 0.067057238 19.115579 + 22600 2.3559622e-06 0.0024760839 -0.0035658051 -0.0035488398 0.070087637 19.080189 + 22700 2.3565188e-06 0.0026673826 -0.0036888874 -0.0036708796 0.072576558 19.044798 + 22800 2.3554654e-06 0.0028655631 -0.0038108556 -0.0037917743 0.075050709 19.009408 + 22900 2.3556755e-06 0.0030705996 -0.0039317038 -0.0039115206 0.07751008 18.974017 + 23000 2.3553906e-06 0.0032824663 -0.0040835075 -0.0040620186 0.080587643 18.938627 + 23100 2.3549893e-06 0.0035011372 -0.0042030492 -0.0041803845 0.08303667 18.903236 + 23200 2.3549869e-06 0.0037265864 -0.0043214571 -0.004297582 0.085470779 18.867846 + 23300 2.3548674e-06 0.0039587875 -0.0044387217 -0.004413608 0.087889956 18.832455 + 23400 2.3544804e-06 0.0041977141 -0.0045911895 -0.0045645946 0.091014737 18.797065 + 23500 2.3543814e-06 0.0044433399 -0.0047070844 -0.0046791718 0.093423108 18.761674 + 23600 2.3541461e-06 0.0046956382 -0.0048218198 -0.0047925569 0.09581641 18.726284 + 23700 2.3539051e-06 0.0049545823 -0.0049353928 -0.0049047458 0.098194634 18.690893 + 23800 2.3537612e-06 0.0052201456 -0.0050478006 -0.0050157354 0.10055777 18.655502 + 23900 2.3535618e-06 0.0054923012 -0.0052005398 -0.0051667526 0.10373359 18.620112 + 24000 2.353333e-06 0.005771022 -0.0053114912 -0.0052762067 0.10608529 18.584721 + 24100 2.3531619e-06 0.006056281 -0.0054212598 -0.0053844406 0.10842176 18.549331 + 24200 2.3529697e-06 0.0063480511 -0.0055298409 -0.0054914515 0.11074298 18.51394 + 24300 2.352776e-06 0.0066463046 -0.0056829436 -0.0056426256 0.11396569 18.47855 + 24400 2.3526011e-06 0.0069510143 -0.0057899993 -0.0057480274 0.11627496 18.443159 + 24500 2.3524078e-06 0.0072621525 -0.0058958481 -0.0058521853 0.11856882 18.407769 + 24600 2.3522128e-06 0.0075796913 -0.0060004865 -0.0059550957 0.12084728 18.372378 + 24700 2.3520292e-06 0.0079036029 -0.0061538145 -0.0061062726 0.12411681 18.336988 + 24800 2.3518453e-06 0.0082338593 -0.0062568585 -0.0062074978 0.12638278 18.301597 + 24900 2.3516643e-06 0.0085704324 -0.0063586718 -0.0063074546 0.12863317 18.266207 + 25000 2.3514892e-06 0.0089132938 -0.0064592514 -0.0064061393 0.13086797 18.230816 + 25100 2.3513106e-06 0.0092624151 -0.0066126575 -0.0065571568 0.13418421 18.195426 + 25200 2.3511362e-06 0.0096177679 -0.0067115701 -0.0066540785 0.13640596 18.160035 + 25300 2.3509678e-06 0.0099793234 -0.0068092292 -0.0067497066 0.13861195 18.124645 + 25400 2.3508006e-06 0.010347053 -0.0069056318 -0.0068440373 0.14080217 18.089254 + 25500 2.3506356e-06 0.010720927 -0.0070007749 -0.0069370671 0.14297661 18.053864 + 25600 2.3504737e-06 0.011100917 -0.0071536223 -0.0070872122 0.14634153 18.018473 + 25700 2.3503117e-06 0.011486993 -0.007247006 -0.0071783805 0.14850216 17.983083 + 25800 2.3501529e-06 0.011879126 -0.0073391102 -0.0072682259 0.15064682 17.947692 + 25900 2.3499998e-06 0.012277287 -0.0074299315 -0.0073567446 0.1527755 17.912302 + 26000 2.3498505e-06 0.012681445 -0.0075824884 -0.0075063219 0.15618632 17.876911 + 26100 2.3497046e-06 0.013091571 -0.0076714736 -0.0075928957 0.15830056 17.84152 + 26200 2.3495632e-06 0.013507634 -0.0077591555 -0.0076781204 0.16039862 17.80613 + 26300 2.349426e-06 0.013929604 -0.0078455309 -0.0077619923 0.1624805 17.770739 + 26400 2.3492932e-06 0.014357451 -0.0079976262 -0.0079108096 0.16593692 17.735349 + 26500 2.349166e-06 0.014791144 -0.008082087 -0.0079926504 0.16800369 17.699958 + 26600 2.3490444e-06 0.015230653 -0.0081652207 -0.0080731154 0.17005406 17.664568 + 26700 2.3489277e-06 0.015675946 -0.008247024 -0.0081522008 0.17208804 17.629177 + 26800 2.3488161e-06 0.016126992 -0.0083984781 -0.008300055 0.17558967 17.593787 + 26900 2.3487105e-06 0.016583761 -0.0084782861 -0.0083770201 0.17760782 17.558396 + 27000 2.3486117e-06 0.017046219 -0.0085567431 -0.008452582 0.17960935 17.523006 + 27100 2.3485201e-06 0.017514336 -0.0086338458 -0.0085267367 0.18159424 17.487615 + 27200 2.3484365e-06 0.017988079 -0.0087095911 -0.0085994803 0.18356247 17.452225 + 27300 2.3483611e-06 0.018467417 -0.008859495 -0.0087453549 0.18710893 17.416834 + 27400 2.3482941e-06 0.018952317 -0.0089331441 -0.0088158653 0.18906038 17.381444 + 27500 2.3482362e-06 0.019442747 -0.0090054148 -0.0088849402 0.19099494 17.346053 + 27600 2.3481885e-06 0.019938673 -0.009076304 -0.0089525756 0.19291257 17.310663 + 27700 2.3481517e-06 0.020440063 -0.0092251203 -0.0090969772 0.19650266 17.275272 + 27800 2.3481263e-06 0.020946883 -0.0092938279 -0.0091622823 0.1984027 17.239882 + 27900 2.3481132e-06 0.0214591 -0.0093611327 -0.0092261226 0.20028558 17.204491 + 28000 2.3481132e-06 0.02197668 -0.0094270316 -0.0092884939 0.20215126 17.169101 + 28100 2.3481274e-06 0.02249959 -0.0095745512 -0.0094311779 0.20578425 17.13371 + 28200 2.348157e-06 0.023027794 -0.0096381809 -0.0094911175 0.20763145 17.09832 + 28300 2.3482036e-06 0.023561259 -0.0097003831 -0.0095495617 0.20946119 17.062929 + 28400 2.3482687e-06 0.024099949 -0.0097611548 -0.0096065059 0.21127344 17.027538 + 28500 2.3480319e-06 0.024643805 -0.0099071195 -0.0097471709 0.21494867 16.992148 + 28600 2.3475123e-06 0.025192783 -0.0099654368 -0.0098014823 0.21674185 16.956757 + 28700 2.3465283e-06 0.02574682 -0.010022297 -0.0098542782 0.21851751 16.921367 + 28800 2.3462245e-06 0.026305935 -0.010077643 -0.0099055665 0.2202753 16.885976 + 28900 2.3465001e-06 0.026870106 -0.010131548 -0.0099553377 0.22201519 16.850586 + 29000 2.3468383e-06 0.027439281 -0.010274668 -0.010092595 0.22572932 16.815195 + 29100 2.3470511e-06 0.028013406 -0.010326047 -0.010139547 0.22744875 16.779805 + 29200 2.3477211e-06 0.02859243 -0.010375939 -0.01018496 0.22915025 16.744414 + 29300 2.348195e-06 0.029176333 -0.010424252 -0.010228763 0.23083364 16.709024 + 29400 2.3486217e-06 0.02976508 -0.010565133 -0.010363233 0.2345875 16.673633 + 29500 2.3494547e-06 0.030358578 -0.010610824 -0.010404093 0.2362499 16.638243 + 29600 2.350246e-06 0.030956806 -0.010654741 -0.010443743 0.23789521 16.602852 + 29700 2.350645e-06 0.031559783 -0.010697062 -0.01048188 0.23952237 16.567462 + 29800 2.3513205e-06 0.032167468 -0.010835186 -0.010613742 0.24331694 16.532071 + 29900 2.3500682e-06 0.03277985 -0.010874694 -0.010649336 0.2449217 16.496681 + 30000 2.348814e-06 0.033396866 -0.010912585 -0.010683036 0.24650812 16.46129 +Loop time of 96.3898 on 1 procs for 10000 steps with 17392 atoms + +Performance: 896360.661 tau/day, 103.745 timesteps/s, 1.804 Matom-step/s +99.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.4048 | 2.4048 | 2.4048 | 0.0 | 2.49 +Bond | 89.472 | 89.472 | 89.472 | 0.0 | 92.82 +Neigh | 0.25526 | 0.25526 | 0.25526 | 0.0 | 0.26 +Comm | 0.0489 | 0.0489 | 0.0489 | 0.0 | 0.05 +Output | 1.6355 | 1.6355 | 1.6355 | 0.0 | 1.70 +Modify | 1.8578 | 1.8578 | 1.8578 | 0.0 | 1.93 +Other | | 0.7153 | | | 0.74 + +Nlocal: 17392 ave 17392 max 17392 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 77 ave 77 max 77 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 102662 ave 102662 max 102662 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 102662 +Ave neighs/atom = 5.9028289 +Ave special neighs/atom = 13.444802 +Neighbor list builds = 23 +Dangerous builds = 0 + 10000 +ERROR: Unknown command: 10000 (../input.cpp:314) +Last input line: 10000 diff --git a/examples/granular/3ps.dat b/examples/granular/3ps.dat new file mode 100644 index 0000000000..88360e2d06 --- /dev/null +++ b/examples/granular/3ps.dat @@ -0,0 +1,20 @@ +LAMMPS data file + +3 atoms +2 atom types + +-0.03 0.03 xlo xhi +-0.02 0.02 ylo yhi +-0.02 0.02 zlo zhi + +Atoms # sphere + +1 2 0.0005 2500 0.005 2.7937481665024794E-05 0.0016005372526493155 0 0 0 +2 1 0.01 2500 0.01 0.0 0.0 0 0 0 +3 1 0.01 2500 0.0 0.0 0.0 0 0 0 + +Velocities + +1 0 0 0 0 0 0 +2 0 0 0 0 0 0 +3 0 0 0 0 0 0 diff --git a/examples/granular/in.sync_verlet b/examples/granular/in.sync_verlet new file mode 100644 index 0000000000..6626c8694d --- /dev/null +++ b/examples/granular/in.sync_verlet @@ -0,0 +1,31 @@ +# Example problem demonstrating the use of synchronized_verlet +# Refer https://doi.org/10.1016/j.cpc.2025.109524 for further details + +units si +atom_style sphere +newton off + +boundary p p f +read_data 3ps.dat + +group ps type 1 +group fine type 2 + +pair_style granular +pair_coeff * * hooke 1e4 0.5 tangential linear_history 8235 0 0.5 damping coeff_restitution synchronized_verlet +# pair_coeff * * hertz/material 5e8 0.5 0.3 tangential mindlin NULL 0.0 0.5 damping coeff_restitution #synchronized_verlet + +timestep 1e-6 +fix frz ps freeze +fix g fine gravity 9.81 vector 0 0 -1 +fix 1 fine nve/sphere +fix 2 all wall/gran granular hooke 1e4 0.5 tangential linear_history 8235 0 0.5 damping coeff_restitution zplane $(zlo) $(zhi) + +# dump 1 all custom 3000 op.dump id x y z vx vy vz type diameter + +comm_modify vel yes + +thermo 3000 +thermo_style custom step ke +run_style verlet +run 300000 diff --git a/examples/granular/log.18Feb25.sync_verlet.g++.1 b/examples/granular/log.18Feb25.sync_verlet.g++.1 new file mode 100644 index 0000000000..4fa1b8f5b3 --- /dev/null +++ b/examples/granular/log.18Feb25.sync_verlet.g++.1 @@ -0,0 +1,186 @@ +LAMMPS (19 Nov 2024 - Development - patch_5May2020-20901-g8641486249-modified) +# Example problem demonstrating the use of synchronized_verlet +# Refer https://doi.org/10.1016/j.cpc.2025.109524 for further details + +units si +atom_style sphere +newton off + +boundary p p f +read_data 3ps.dat +Reading data file ... + orthogonal box = (-0.03 -0.02 -0.02) to (0.03 0.02 0.02) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3 atoms + reading velocities ... + 3 velocities + read_data CPU = 0.003 seconds + +group ps type 1 +2 atoms in group ps +group fine type 2 +1 atoms in group fine + +pair_style granular +pair_coeff * * hooke 1e4 0.5 tangential linear_history 8235 0 0.5 damping coeff_restitution synchronized_verlet +# pair_coeff * * hertz/material 5e8 0.5 0.3 tangential mindlin NULL 0.0 0.5 damping coeff_restitution #synchronized_verlet + +timestep 1e-6 +fix frz ps freeze +fix g fine gravity 9.81 vector 0 0 -1 +fix 1 fine nve/sphere +fix 2 all wall/gran granular hooke 1e4 0.5 tangential linear_history 8235 0 0.5 damping coeff_restitution zplane $(zlo) $(zhi) +fix 2 all wall/gran granular hooke 1e4 0.5 tangential linear_history 8235 0 0.5 damping coeff_restitution zplane -0.020000000000000000416 $(zhi) +fix 2 all wall/gran granular hooke 1e4 0.5 tangential linear_history 8235 0 0.5 damping coeff_restitution zplane -0.020000000000000000416 0.020000000000000000416 + +dump 1 all custom 3000 op.dump id x y z vx vy vz type diameter + +comm_modify vel yes + +thermo 3000 +thermo_style custom step ke +run_style verlet +run 300000 +Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 0.011 + ghost atom cutoff = 0.011 + binsize = 0.0055, bins = 11 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair granular, perpetual + attributes: half, newton off, size, history + pair build: half/size/bin/atomonly/newtoff + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 10.34 | 10.34 | 10.34 Mbytes + Step KinEng + 0 0 + 3000 7.7090573e-16 + 6000 3.11122e-15 + 9000 7.1189829e-15 + 12000 1.2962539e-14 + 15000 2.0887458e-14 + 18000 3.1226589e-14 + 21000 4.4413694e-14 + 24000 6.1001238e-14 + 27000 8.1683111e-14 + 30000 1.0732325e-13 + 33000 1.3899142e-13 + 36000 1.7800759e-13 + 39000 2.2599689e-13 + 42000 2.849574e-13 + 45000 3.5734355e-13 + 48000 4.4616861e-13 + 51000 5.5513052e-13 + 54000 6.8876606e-13 + 57000 8.5263971e-13 + 60000 1.0535747e-12 + 63000 1.2999356e-12 + 66000 1.6019734e-12 + 69000 1.9722472e-12 + 72000 2.4261384e-12 + 75000 2.9824767e-12 + 78000 3.6643038e-12 + 81000 4.4997992e-12 + 84000 5.5234053e-12 + 87000 6.7771879e-12 + 90000 8.3124767e-12 + 93000 1.0191838e-11 + 96000 1.2491433e-11 + 99000 1.5303816e-11 + 102000 1.8741238e-11 + 105000 2.2939491e-11 + 108000 2.8062329e-11 + 111000 3.4306457e-11 + 114000 4.1907005e-11 + 117000 5.114332e-11 + 120000 6.2344723e-11 + 123000 7.5895667e-11 + 126000 9.2239362e-11 + 129000 1.118785e-10 + 132000 1.3537107e-10 + 135000 1.6331855e-10 + 138000 1.96343e-10 + 141000 2.3504868e-10 + 144000 2.799638e-10 + 147000 4.4767299e-10 + 150000 8.5696526e-10 + 153000 1.4079769e-09 + 156000 2.1007079e-09 + 159000 2.9351582e-09 + 162000 3.9113279e-09 + 165000 5.029217e-09 + 168000 6.2888254e-09 + 171000 7.6901531e-09 + 174000 9.2332002e-09 + 177000 1.0917967e-08 + 180000 1.2744453e-08 + 183000 1.4712658e-08 + 186000 1.6822582e-08 + 189000 1.9074226e-08 + 192000 2.1467589e-08 + 195000 2.4002672e-08 + 198000 2.6679474e-08 + 201000 2.9497995e-08 + 204000 3.2458236e-08 + 207000 6.543991e-09 + 210000 5.3049419e-09 + 213000 4.2076122e-09 + 216000 3.2520018e-09 + 219000 2.4381108e-09 + 222000 1.7659392e-09 + 225000 1.2354868e-09 + 228000 8.4675389e-10 + 231000 5.997403e-10 + 234000 4.9444606e-10 + 237000 5.3087117e-10 + 240000 7.0901564e-10 + 243000 1.0288795e-09 + 246000 1.4904626e-09 + 249000 2.0937652e-09 + 252000 2.8387871e-09 + 255000 3.7255283e-09 + 258000 4.7539889e-09 + 261000 5.9241689e-09 + 264000 7.2360682e-09 + 267000 1.6704365e-09 + 270000 1.161387e-09 + 273000 7.9405678e-10 + 276000 5.6844595e-10 + 279000 4.8455448e-10 + 282000 5.4238236e-10 + 285000 7.419296e-10 + 288000 1.0831962e-09 + 291000 1.5661821e-09 + 294000 8.41555e-10 + 297000 5.7599278e-10 + 300000 4.5214992e-10 +Loop time of 0.193539 on 1 procs for 300000 steps with 3 atoms + +98.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.064036 | 0.064036 | 0.064036 | 0.0 | 33.09 +Neigh | 0.00015725 | 0.00015725 | 0.00015725 | 0.0 | 0.08 +Comm | 0.027944 | 0.027944 | 0.027944 | 0.0 | 14.44 +Output | 0.002992 | 0.002992 | 0.002992 | 0.0 | 1.55 +Modify | 0.059704 | 0.059704 | 0.059704 | 0.0 | 30.85 +Other | | 0.03871 | | | 20.00 + +Nlocal: 3 ave 3 max 3 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1 ave 1 max 1 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1 ave 1 max 1 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1 +Ave neighs/atom = 0.33333333 +Neighbor list builds = 70 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/python/lammps/core.py b/python/lammps/core.py index d8fc3a666e..d4609d3b5d 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -17,7 +17,6 @@ from __future__ import print_function import os -import sys from ctypes import CDLL, POINTER, RTLD_GLOBAL, CFUNCTYPE, py_object, byref, cast, sizeof, \ create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, c_char, \ pythonapi diff --git a/src/.gitignore b/src/.gitignore index 12ab005cd4..910a584354 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -374,6 +374,8 @@ /bond_bpm_rotational.h /bond_bpm_spring.cpp /bond_bpm_spring.h +/bond_bpm_spring_plastic.cpp +/bond_bpm_spring_plastic.h /compute_nbond_atom.cpp /compute_nbond_atom.h /fix_nve_bpm_sphere.cpp diff --git a/src/ASPHERE/pair_ylz.cpp b/src/ASPHERE/pair_ylz.cpp index 78692c833c..6b07c78196 100644 --- a/src/ASPHERE/pair_ylz.cpp +++ b/src/ASPHERE/pair_ylz.cpp @@ -32,7 +32,7 @@ #include using namespace LAMMPS_NS; -using MathConst::MY_4PI; +using MathConst::MY_PI; using MathConst::MY_PI2; using MathConst::MY_TWOBYSIXTH; @@ -487,7 +487,7 @@ double PairYLZ::ylz_analytic(const int i, const int j, double a1[3][3], double a uA = -energy_well * t1 * cos_t; U = uA * phi; - dUdr = MY_4PI / (rcut - rmin) * (t1) *sin(t) * phi * energy_well; + dUdr = MY_PI * zt / (rcut - rmin) * (t1) *sin(t) * phi * energy_well; dUdphi = uA; } diff --git a/src/BOCS/compute_pressure_bocs.cpp b/src/BOCS/compute_pressure_bocs.cpp index 12ca17093f..c52f3a7db2 100644 --- a/src/BOCS/compute_pressure_bocs.cpp +++ b/src/BOCS/compute_pressure_bocs.cpp @@ -43,7 +43,7 @@ ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) : vptr(nullptr), id_temp(nullptr) { if (narg < 4) utils::missing_cmd_args(FLERR,"compute pressure/bocs", error); - if (igroup) error->all(FLERR,"Compute pressure/bocs must use group all"); + if (igroup) error->all(FLERR, 1, "Compute pressure/bocs must use group all"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -64,9 +64,9 @@ ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) : temperature = modify->get_compute_by_id(id_temp); if (!temperature) - error->all(FLERR,"Could not find compute pressure/bocs temperature compute {}", id_temp); + error->all(FLERR, 3, "Could not find compute pressure/bocs temperature compute {}", id_temp); if (temperature->tempflag == 0) - error->all(FLERR,"Compute pressure/bocs temperature compute {} does not compute " + error->all(FLERR, 3, "Compute pressure/bocs temperature compute {} does not compute " "temperature", id_temp); } @@ -104,8 +104,8 @@ ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) : // error check if (keflag && id_temp == nullptr) - error->all(FLERR,"Compute pressure/bocs requires temperature ID " - "to include kinetic energy"); + error->all(FLERR, 3, + "Compute pressure/bocs requires temperature ID to include kinetic energy"); vector = new double[size_vector]; nvirial = 0; @@ -119,9 +119,9 @@ ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) : ComputePressureBocs::~ComputePressureBocs() { - delete [] id_temp; - delete [] vector; - delete [] vptr; + delete[] id_temp; + delete[] vector; + delete[] vptr; if (phi_coeff) free(phi_coeff); } @@ -139,7 +139,8 @@ void ComputePressureBocs::init() if (keflag) { temperature = modify->get_compute_by_id(id_temp); if (!temperature) - error->all(FLERR,"Could not find compute pressure/bocs temperature compute {}", id_temp); + error->all(FLERR, Error::NOLASTLINE, + "Could not find compute pressure/bocs temperature compute {}", id_temp); } // detect contributions to virial @@ -214,10 +215,10 @@ double ComputePressureBocs::find_index(double * grid, double value) if (value >= grid[i] && value <= (grid[i] + spacing)) { return i; } - error->all(FLERR,"find_index could not find value in grid for value: {}", value); - for (int i = 0; i < gridsize; ++i) - { - fprintf(stderr, "grid %d: %f\n",i,grid[i]); + error->all(FLERR, Error::NOLASTLINE, + "find_index could not find value in grid for value: {}", value); + for (int i = 0; i < gridsize; ++i) { + fprintf(stderr, "grid %d: %f\n", i, grid[i]); } exit(1); @@ -237,7 +238,7 @@ double ComputePressureBocs::get_cg_p_corr(double ** grid, int basis_type, return grid[1][i] + (deltax) * ( grid[1][i+1] - grid[1][i] ) / ( grid[0][i+1] - grid[0][i] ); else if (basis_type == BASIS_CUBIC_SPLINE) return grid[1][i] + (grid[2][i] * deltax) + (grid[3][i] * pow(deltax,2)) + (grid[4][i] * pow(deltax,3)); - else error->all(FLERR,"bad spline type passed to get_cg_p_corr()\n"); + else error->all(FLERR, Error::NOLASTLINE, "bad spline type passed to get_cg_p_corr()"); return 0.0; } @@ -251,7 +252,7 @@ void ComputePressureBocs::send_cg_info(int basis_type, int sent_N_basis, double sent_vavg) { if (basis_type == BASIS_ANALYTIC) p_basis_type = BASIS_ANALYTIC; - else error->all(FLERR,"Incorrect basis type passed to ComputePressureBocs\n"); + else error->all(FLERR, Error::NOLASTLINE, "Incorrect basis type passed to ComputePressureBocs"); p_match_flag = 1; @@ -276,7 +277,7 @@ void ComputePressureBocs::send_cg_info(int basis_type, else if (basis_type == BASIS_CUBIC_SPLINE) { p_basis_type = BASIS_CUBIC_SPLINE; } else { - error->all(FLERR,"Incorrect basis type passed to ComputePressureBocs\n"); + error->all(FLERR, Error::NOLASTLINE, "Incorrect basis type passed to ComputePressureBocs"); } splines = in_splines; spline_length = gridsize; @@ -328,9 +329,8 @@ double ComputePressureBocs::compute_scalar() scalar = (virial[0] + virial[1] + virial[2]) / 3.0 * inv_volume * nktv2p + (correction); } else { - if (p_match_flag) - { - error->all(FLERR,"Pressure matching not implemented in 2-d.\n"); + if (p_match_flag) { + error->all(FLERR, Error::NOLASTLINE, "Pressure matching not implemented in 2-d."); exit(1); } // The rest of this can probably be deleted. inv_volume = 1.0 / (domain->xprd * domain->yprd); @@ -357,7 +357,7 @@ void ComputePressureBocs::compute_vector() error->all(FLERR, Error::NOLASTLINE, "Virial was not tallied on needed timestep{}", utils::errorurl(22)); if (force->kspace && kspace_virial && force->kspace->scalar_pressure_flag) - error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' for " + error->all(FLERR, Error::NOLASTLINE, "Must use 'kspace_modify pressure/scalar no' for " "tensor components with kspace_style msm"); // invoke temperature if it hasn't been already diff --git a/src/BPM/atom_vec_bpm_sphere.cpp b/src/BPM/atom_vec_bpm_sphere.cpp index 4332d517b4..5a79bb5b00 100644 --- a/src/BPM/atom_vec_bpm_sphere.cpp +++ b/src/BPM/atom_vec_bpm_sphere.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "atom_vec_bpm_sphere.h" #include "atom.h" diff --git a/src/BPM/bond_bpm.cpp b/src/BPM/bond_bpm.cpp index 24f8be8fd9..db6b96cf05 100644 --- a/src/BPM/bond_bpm.cpp +++ b/src/BPM/bond_bpm.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "bond_bpm.h" #include "atom.h" diff --git a/src/BPM/bond_bpm_rotational.cpp b/src/BPM/bond_bpm_rotational.cpp index b8de3faca4..7cc04955c6 100644 --- a/src/BPM/bond_bpm_rotational.cpp +++ b/src/BPM/bond_bpm_rotational.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "bond_bpm_rotational.h" #include "atom.h" @@ -154,7 +158,7 @@ void BondBPMRotational::store_data() type = bond_type[i][m]; //Skip if bond was turned off - if (type < 0) continue; + if (type <= 0) continue; // map to find index n for tag j = atom->map(atom->bond_atom[i][m]); @@ -775,7 +779,6 @@ void BondBPMRotational::read_restart_settings(FILE *fp) double BondBPMRotational::single(int type, double rsq, int i, int j, double &fforce) { - // Not yet enabled if (type <= 0) return 0.0; int flipped = 0; diff --git a/src/BPM/bond_bpm_spring.cpp b/src/BPM/bond_bpm_spring.cpp index 8da72cfb9e..873b5010b4 100644 --- a/src/BPM/bond_bpm_spring.cpp +++ b/src/BPM/bond_bpm_spring.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "bond_bpm_spring.h" #include "atom.h" @@ -124,7 +128,7 @@ void BondBPMSpring::store_data() type = bond_type[i][m]; //Skip if bond was turned off - if (type < 0) continue; + if (type <= 0) continue; // map to find index n j = atom->map(atom->bond_atom[i][m]); @@ -197,7 +201,7 @@ void BondBPMSpring::compute(int eflag, int vflag) int i1, i2, itmp, n, type; double delx, dely, delz, delvx, delvy, delvz; - double e, rsq, r, r0, rinv, smooth, fbond, dot; + double e, rsq, r, r0, rinv, smooth, fbond, ebond, dot; double vol_sum, vol0_sum, vol_temp; ev_init(eflag, vflag); @@ -264,7 +268,9 @@ void BondBPMSpring::compute(int eflag, int vflag) if (normalize_flag) fbond = -k[type] * e; else - fbond = k[type] * (r0 - r); + fbond = -k[type] * (r - r0); + + if (eflag) ebond = -0.5 * fbond * (r - r0); if (volume_flag) { vol_sum = vol[i1] + vol[i2]; @@ -300,7 +306,7 @@ void BondBPMSpring::compute(int eflag, int vflag) f[i2][2] -= delz * fbond; } - if (evflag) ev_tally(i1, i2, nlocal, newton_bond, 0.0, fbond, delx, dely, delz); + if (evflag) ev_tally(i1, i2, nlocal, newton_bond, ebond, fbond, delx, dely, delz); } // Update vol0 to account for any broken bonds @@ -574,7 +580,9 @@ double BondBPMSpring::single(int type, double rsq, int i, int j, double &fforce) if (normalize_flag) fforce = -k[type] * e; else - fforce = k[type] * (r0 - r); + fforce = -k[type] * (r - r0); + + double ebond = -0.5 * fforce * (r - r0); if (volume_flag) { double invdim = 1.0 / domain->dimension; @@ -610,7 +618,7 @@ double BondBPMSpring::single(int type, double rsq, int i, int j, double &fforce) svector[0] = r0; - return 0.0; + return ebond; } /* ---------------------------------------------------------------------- */ diff --git a/src/BPM/bond_bpm_spring_plastic.cpp b/src/BPM/bond_bpm_spring_plastic.cpp new file mode 100644 index 0000000000..35fd8e4691 --- /dev/null +++ b/src/BPM/bond_bpm_spring_plastic.cpp @@ -0,0 +1,477 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + +#include "bond_bpm_spring_plastic.h" + +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "domain.h" +#include "error.h" +#include "fix_bond_history.h" +#include "force.h" +#include "memory.h" +#include "neighbor.h" + +#include +#include + +static constexpr double EPSILON = 1e-10; + +using namespace LAMMPS_NS; + +static const char cite_bpm_plastic[] = + "BPM/spring/plastic bond style: doi:10.1016/j.powtec.2024.120563\n\n" + "@Article{Clemmer2025,\n" + " author = {Clemmer, Joel T. and Lechman, Jeremy B.},\n" + " title = {Onset and impact of plastic deformation in granular compaction},\n" + " journal = {Powder Technology},\n" + " year = 2025,\n" + " volume = 452,\n" + " number = 28,\n" + " pages = {120563}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +BondBPMSpringPlastic::BondBPMSpringPlastic(LAMMPS *_lmp) : + BondBPM(_lmp), k(nullptr), eplastic(nullptr), ecrit(nullptr), gamma(nullptr) +{ + partial_flag = 1; + smooth_flag = 1; + normalize_flag = 0; + writedata = 0; + + nhistory = 2; + update_flag = 1; + id_fix_bond_history = utils::strdup("HISTORY_BPM_SPRING_PLASTIC"); + + single_extra = 2; + svector = new double[2]; + + if (lmp->citeme) lmp->citeme->add(cite_bpm_plastic); +} + +/* ---------------------------------------------------------------------- */ + +BondBPMSpringPlastic::~BondBPMSpringPlastic() +{ + delete[] svector; + + if (allocated) { + memory->destroy(setflag); + memory->destroy(k); + memory->destroy(ecrit); + memory->destroy(gamma); + memory->destroy(eplastic); + } +} + +/* ---------------------------------------------------------------------- + Store data for a single bond - if bond added after LAMMPS init (e.g. pour) +------------------------------------------------------------------------- */ + +double BondBPMSpringPlastic::store_bond(int n, int i, int j) +{ + double delx, dely, delz, r; + double **x = atom->x; + double **bondstore = fix_bond_history->bondstore; + tagint *tag = atom->tag; + + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + + r = sqrt(delx * delx + dely * dely + delz * delz); + bondstore[n][0] = r; + + if (i < atom->nlocal) { + for (int m = 0; m < atom->num_bond[i]; m++) { + if (atom->bond_atom[i][m] == tag[j]) { + fix_bond_history->update_atom_value(i, m, 0, r); + fix_bond_history->update_atom_value(i, m, 1, 0); + } + } + } + + if (j < atom->nlocal) { + for (int m = 0; m < atom->num_bond[j]; m++) { + if (atom->bond_atom[j][m] == tag[i]) { + fix_bond_history->update_atom_value(j, m, 0, r); + fix_bond_history->update_atom_value(j, m, 1, 0); + } + } + } + + return r; +} + +/* ---------------------------------------------------------------------- + Store data for all bonds called once +------------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::store_data() +{ + int i, j, m, type; + double delx, dely, delz, r; + double **x = atom->x; + int **bond_type = atom->bond_type; + + for (i = 0; i < atom->nlocal; i++) { + for (m = 0; m < atom->num_bond[i]; m++) { + type = bond_type[i][m]; + + //Skip if bond was turned off + if (type <= 0) continue; + + // map to find index n + j = atom->map(atom->bond_atom[i][m]); + if (j == -1) error->one(FLERR, "Atom missing in BPM bond"); + + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + + // Get closest image in case bonded with ghost + domain->minimum_image(delx, dely, delz); + r = sqrt(delx * delx + dely * dely + delz * delz); + + fix_bond_history->update_atom_value(i, m, 0, r); + fix_bond_history->update_atom_value(i, m, 1, 0); + } + } + + fix_bond_history->post_neighbor(); +} + +/* ---------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::compute(int eflag, int vflag) +{ + if (!fix_bond_history->stored_flag) { + fix_bond_history->stored_flag = true; + store_data(); + } + + if (hybrid_flag) fix_bond_history->compress_history(); + + int i1, i2, itmp, n, type; + double delx, dely, delz, delvx, delvy, delvz; + double e, ep, rsq, r, r0, rinv, smooth, fbond, dot; + + ev_init(eflag, vflag); + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + tagint *tag = atom->tag; + int **bondlist = neighbor->bondlist; + int nbondlist = neighbor->nbondlist; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + double **bondstore = fix_bond_history->bondstore; + + for (n = 0; n < nbondlist; n++) { + + // skip bond if already broken + if (bondlist[n][2] <= 0) continue; + + i1 = bondlist[n][0]; + i2 = bondlist[n][1]; + type = bondlist[n][2]; + r0 = bondstore[n][0]; + ep = bondstore[n][1]; + + // Ensure pair is always ordered to ensure numerical operations + // are identical to minimize the possibility that a bond straddling + // an mpi grid (newton off) doesn't break on one proc but not the other + if (tag[i2] < tag[i1]) { + itmp = i1; + i1 = i2; + i2 = itmp; + } + + // If bond hasn't been set - should be initialized to zero + if (r0 < EPSILON || std::isnan(r0)) r0 = store_bond(n, i1, i2); + + delx = x[i1][0] - x[i2][0]; + dely = x[i1][1] - x[i2][1]; + delz = x[i1][2] - x[i2][2]; + + rsq = delx * delx + dely * dely + delz * delz; + r = sqrt(rsq); + e = (r - r0) / r0; + + if ((fabs(e) > ecrit[type]) && break_flag) { + bondlist[n][2] = 0; + process_broken(i1, i2); + continue; + } + + if (e > (ep + eplastic[type])) { + ep = e - eplastic[type]; + bondstore[n][1] = ep; + } + + if (e < (ep - eplastic[type])) { + ep = e + eplastic[type]; + bondstore[n][1] = ep; + } + + rinv = 1.0 / r; + if (normalize_flag) + fbond = -k[type] * (e - ep); + else + fbond = -k[type] * (r - (1.0 + ep) * r0); + + delvx = v[i1][0] - v[i2][0]; + delvy = v[i1][1] - v[i2][1]; + delvz = v[i1][2] - v[i2][2]; + dot = delx * delvx + dely * delvy + delz * delvz; + fbond -= gamma[type] * dot * rinv; + fbond *= rinv; + + if (smooth_flag) { + smooth = (r - r0) / (r0 * ecrit[type]); + smooth *= smooth; + smooth *= smooth; + smooth *= smooth; + smooth = 1 - smooth; + fbond *= smooth; + } + + if (newton_bond || i1 < nlocal) { + f[i1][0] += delx * fbond; + f[i1][1] += dely * fbond; + f[i1][2] += delz * fbond; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] -= delx * fbond; + f[i2][1] -= dely * fbond; + f[i2][2] -= delz * fbond; + } + + if (evflag) ev_tally(i1, i2, nlocal, newton_bond, 0.0, fbond, delx, dely, delz); + } + + if (hybrid_flag) fix_bond_history->uncompress_history(); +} + +/* ---------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::allocate() +{ + allocated = 1; + const int np1 = atom->nbondtypes + 1; + + memory->create(k, np1, "bond:k"); + memory->create(ecrit, np1, "bond:ecrit"); + memory->create(gamma, np1, "bond:gamma"); + memory->create(eplastic, np1, "bond:eplastic"); + + memory->create(setflag, np1, "bond:setflag"); + for (int i = 1; i < np1; i++) setflag[i] = 0; +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more types +------------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::coeff(int narg, char **arg) +{ + if (narg != 5) + error->all(FLERR, "Incorrect args for bond coefficients"); + if (!allocated) allocate(); + + int ilo, ihi; + utils::bounds(FLERR, arg[0], 1, atom->nbondtypes, ilo, ihi, error); + + double k_one = utils::numeric(FLERR, arg[1], false, lmp); + double ecrit_one = utils::numeric(FLERR, arg[2], false, lmp); + double gamma_one = utils::numeric(FLERR, arg[3], false, lmp); + double eplastic_one = utils::numeric(FLERR, arg[4], false, lmp); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + k[i] = k_one; + ecrit[i] = ecrit_one; + gamma[i] = gamma_one; + eplastic[i] = eplastic_one; + setflag[i] = 1; + count++; + + if (1.0 + ecrit[i] > max_stretch) max_stretch = 1.0 + ecrit[i]; + } + + if (count == 0) error->all(FLERR, "Incorrect args for bond coefficients"); +} + +/* ---------------------------------------------------------------------- + check for correct settings and create fix +------------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::init_style() +{ + BondBPM::init_style(); + + if (comm->ghost_velocity == 0) + error->all(FLERR, "Bond bpm/spring requires ghost atoms store velocity"); +} + +/* ---------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::settings(int narg, char **arg) +{ + BondBPM::settings(narg, arg); + + int iarg; + for (std::size_t i = 0; i < leftover_iarg.size(); i++) { + iarg = leftover_iarg[i]; + if (strcmp(arg[iarg], "smooth") == 0) { + if (iarg + 1 > narg) error->all(FLERR, "Illegal bond bpm command, missing option for smooth"); + smooth_flag = utils::logical(FLERR, arg[iarg + 1], false, lmp); + i += 1; + } else if (strcmp(arg[iarg], "normalize") == 0) { + if (iarg + 1 > narg) + error->all(FLERR, "Illegal bond bpm command, missing option for normalize"); + normalize_flag = utils::logical(FLERR, arg[iarg + 1], false, lmp); + i += 1; + } else { + error->all(FLERR, "Illegal bond bpm command, invalid argument {}", arg[iarg]); + } + } + + if (smooth_flag && !break_flag) + error->all(FLERR, "Illegal bond bpm command, must turn off smoothing with break no option"); +} + +/* ---------------------------------------------------------------------- + proc 0 writes out coeffs to restart file +------------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::write_restart(FILE *fp) +{ + BondBPM::write_restart(fp); + write_restart_settings(fp); + + fwrite(&k[1], sizeof(double), atom->nbondtypes, fp); + fwrite(&ecrit[1], sizeof(double), atom->nbondtypes, fp); + fwrite(&gamma[1], sizeof(double), atom->nbondtypes, fp); + fwrite(&eplastic[1], sizeof(double), atom->nbondtypes, fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads coeffs from restart file, bcasts them +------------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::read_restart(FILE *fp) +{ + BondBPM::read_restart(fp); + read_restart_settings(fp); + allocate(); + + if (comm->me == 0) { + utils::sfread(FLERR, &k[1], sizeof(double), atom->nbondtypes, fp, nullptr, error); + utils::sfread(FLERR, &ecrit[1], sizeof(double), atom->nbondtypes, fp, nullptr, error); + utils::sfread(FLERR, &gamma[1], sizeof(double), atom->nbondtypes, fp, nullptr, error); + utils::sfread(FLERR, &eplastic[1], sizeof(double), atom->nbondtypes, fp, nullptr, error); + } + MPI_Bcast(&k[1], atom->nbondtypes, MPI_DOUBLE, 0, world); + MPI_Bcast(&ecrit[1], atom->nbondtypes, MPI_DOUBLE, 0, world); + MPI_Bcast(&gamma[1], atom->nbondtypes, MPI_DOUBLE, 0, world); + MPI_Bcast(&eplastic[1], atom->nbondtypes, MPI_DOUBLE, 0, world); + + for (int i = 1; i <= atom->nbondtypes; i++) setflag[i] = 1; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file + ------------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::write_restart_settings(FILE *fp) +{ + fwrite(&smooth_flag, sizeof(int), 1, fp); + fwrite(&normalize_flag, sizeof(int), 1, fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts + ------------------------------------------------------------------------- */ + +void BondBPMSpringPlastic::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + utils::sfread(FLERR, &smooth_flag, sizeof(int), 1, fp, nullptr, error); + utils::sfread(FLERR, &normalize_flag, sizeof(int), 1, fp, nullptr, error); + } + MPI_Bcast(&smooth_flag, 1, MPI_INT, 0, world); + MPI_Bcast(&normalize_flag, 1, MPI_INT, 0, world); +} + +/* ---------------------------------------------------------------------- */ + +double BondBPMSpringPlastic::single(int type, double rsq, int i, int j, double &fforce) +{ + if (type <= 0) return 0.0; + + double r0, ep; + for (int n = 0; n < atom->num_bond[i]; n++) { + if (atom->bond_atom[i][n] == atom->tag[j]) { + r0 = fix_bond_history->get_atom_value(i, n, 0); + ep = fix_bond_history->get_atom_value(i, n, 1); + } + } + + double r = sqrt(rsq); + double rinv = 1.0 / r; + double e = (r - r0) / r0; + + if (normalize_flag) + fforce = -k[type] * (e - ep); + else + fforce = -k[type] * (r - (1.0 + ep) * r0); + + double **x = atom->x; + double **v = atom->v; + double delx = x[i][0] - x[j][0]; + double dely = x[i][1] - x[j][1]; + double delz = x[i][2] - x[j][2]; + double delvx = v[i][0] - v[j][0]; + double delvy = v[i][1] - v[j][1]; + double delvz = v[i][2] - v[j][2]; + double dot = delx * delvx + dely * delvy + delz * delvz; + fforce -= gamma[type] * dot * rinv; + fforce *= rinv; + + if (smooth_flag) { + double smooth = (r - r0) / (r0 * ecrit[type]); + smooth *= smooth; + smooth *= smooth; + smooth *= smooth; + smooth = 1 - smooth; + fforce *= smooth; + } + + // set single_extra quantities + + svector[0] = r0; + svector[0] = (1.0 + ep) * r0; + + return 0.0; +} diff --git a/src/BPM/bond_bpm_spring_plastic.h b/src/BPM/bond_bpm_spring_plastic.h new file mode 100644 index 0000000000..0565d5ce01 --- /dev/null +++ b/src/BPM/bond_bpm_spring_plastic.h @@ -0,0 +1,53 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef BOND_CLASS +// clang-format off +BondStyle(bpm/spring/plastic,BondBPMSpringPlastic); +// clang-format on +#else + +#ifndef LMP_BOND_BPM_SPRING_PLASTIC_H +#define LMP_BOND_BPM_SPRING_PLASTIC_H + +#include "bond_bpm.h" + +namespace LAMMPS_NS { + +class BondBPMSpringPlastic : public BondBPM { + public: + BondBPMSpringPlastic(class LAMMPS *); + ~BondBPMSpringPlastic() override; + void compute(int, int) override; + void coeff(int, char **) override; + void init_style() override; + void settings(int, char **) override; + void write_restart(FILE *) override; + void read_restart(FILE *) override; + void write_restart_settings(FILE *) override; + void read_restart_settings(FILE *) override; + double single(int, double, int, int, double &) override; + + protected: + double *k, *eplastic, *ecrit, *gamma; + int smooth_flag, normalize_flag; + + void allocate(); + void store_data(); + double store_bond(int, int, int); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/BPM/compute_nbond_atom.cpp b/src/BPM/compute_nbond_atom.cpp index 31428b1912..4083483faf 100644 --- a/src/BPM/compute_nbond_atom.cpp +++ b/src/BPM/compute_nbond_atom.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "compute_nbond_atom.h" #include "atom.h" diff --git a/src/BPM/fix_nve_bpm_sphere.cpp b/src/BPM/fix_nve_bpm_sphere.cpp index 1766f49c5c..89ea778bbb 100644 --- a/src/BPM/fix_nve_bpm_sphere.cpp +++ b/src/BPM/fix_nve_bpm_sphere.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "fix_nve_bpm_sphere.h" #include "atom.h" diff --git a/src/BPM/fix_update_special_bonds.cpp b/src/BPM/fix_update_special_bonds.cpp index d9a11c7819..3c37769fee 100644 --- a/src/BPM/fix_update_special_bonds.cpp +++ b/src/BPM/fix_update_special_bonds.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "fix_update_special_bonds.h" #include "atom.h" diff --git a/src/BPM/pair_bpm_spring.cpp b/src/BPM/pair_bpm_spring.cpp index d01264a2dc..fbd1645503 100644 --- a/src/BPM/pair_bpm_spring.cpp +++ b/src/BPM/pair_bpm_spring.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "pair_bpm_spring.h" #include "atom.h" @@ -54,7 +58,7 @@ void PairBPMSpring::compute(int eflag, int vflag) { int i, j, ii, jj, inum, jnum, itype, jtype; double xtmp, ytmp, ztmp, delx, dely, delz, dr, evdwl, fpair; - double r, rsq, rinv, factor_lj; + double r, rsq, rinv, fa, factor_lj; int *ilist, *jlist, *numneigh, **firstneigh; double vxtmp, vytmp, vztmp, delvx, delvy, delvz, dot, smooth; @@ -112,8 +116,12 @@ void PairBPMSpring::compute(int eflag, int vflag) dr = r - cut[itype][jtype]; fpair = -k[itype][jtype] * dr; - if (anharmonic_flag) - fpair += -ka[itype][jtype] * dr * dr * dr; + if (eflag) evdwl = -0.5 * fpair * dr; + if (anharmonic_flag) { + fa = -ka[itype][jtype] * dr * dr * dr; + fpair += fa; + if (eflag) evdwl += -0.25 * fa * dr; + } smooth = rsq / cutsq[itype][jtype]; smooth *= smooth; @@ -126,7 +134,7 @@ void PairBPMSpring::compute(int eflag, int vflag) fpair -= gamma[itype][jtype] * dot * smooth * rinv; fpair *= factor_lj * rinv; - if (eflag) evdwl = 0.0; + if (eflag) evdwl *= factor_lj; f[i][0] += delx * fpair; f[i][1] += dely * fpair; @@ -378,8 +386,13 @@ double PairBPMSpring::single(int i, int j, int itype, int jtype, double rsq, dou dr = r - cut[itype][jtype]; fpair = -k[itype][jtype] * dr; - if (anharmonic_flag) - fpair += -ka[itype][jtype] * dr * dr * dr; + double energy = -0.5 * fpair * dr; + + if (anharmonic_flag) { + double fa = -ka[itype][jtype] * dr * dr * dr; + fpair += fa; + energy += -0.25 * fa * dr; + } smooth = rsq / cutsq[itype][jtype]; smooth *= smooth; @@ -394,7 +407,8 @@ double PairBPMSpring::single(int i, int j, int itype, int jtype, double rsq, dou fpair -= gamma[itype][jtype] * dot * rinv * smooth; fpair *= factor_lj; + energy *= factor_lj; fforce = fpair; - return 0.0; + return energy; } diff --git a/src/DPD-BASIC/pair_dpd.cpp b/src/DPD-BASIC/pair_dpd.cpp index b8b3d78327..8fa2b1913c 100644 --- a/src/DPD-BASIC/pair_dpd.cpp +++ b/src/DPD-BASIC/pair_dpd.cpp @@ -74,6 +74,10 @@ void PairDPD::compute(int eflag, int vflag) evdwl = 0.0; ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + double **x = atom->x; double **v = atom->v; double **f = atom->f; @@ -266,10 +270,6 @@ void PairDPD::init_style() error->warning(FLERR, "Pair dpd needs newton pair on for momentum conservation"); neighbor->add_request(this); - - // precompute random force scaling factors - - for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); } /* ---------------------------------------------------------------------- diff --git a/src/DPD-BASIC/pair_dpd_coul_slater_long.cpp b/src/DPD-BASIC/pair_dpd_coul_slater_long.cpp index ca9f601811..4c4a62f157 100644 --- a/src/DPD-BASIC/pair_dpd_coul_slater_long.cpp +++ b/src/DPD-BASIC/pair_dpd_coul_slater_long.cpp @@ -90,6 +90,10 @@ void PairDPDCoulSlaterLong::compute(int eflag, int vflag) evdwl = ecoul = 0.0; ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + double **x = atom->x; double **v = atom->v; double **f = atom->f; @@ -334,11 +338,6 @@ void PairDPDCoulSlaterLong::init_style() neighbor->add_request(this); - // precompute random force scaling factors - - for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); - - // ensure use of KSpace long-range solver, set g_ewald if (force->kspace == nullptr) diff --git a/src/DPD-BASIC/pair_dpd_ext.cpp b/src/DPD-BASIC/pair_dpd_ext.cpp index a9c0779edd..6c10df7419 100644 --- a/src/DPD-BASIC/pair_dpd_ext.cpp +++ b/src/DPD-BASIC/pair_dpd_ext.cpp @@ -81,6 +81,10 @@ void PairDPDExt::compute(int eflag, int vflag) evdwl = 0.0; ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + double **x = atom->x; double **v = atom->v; double **f = atom->f; @@ -325,10 +329,6 @@ void PairDPDExt::init_style() error->warning(FLERR, "Pair dpd needs newton pair on for momentum conservation"); neighbor->add_request(this); - - // precompute random force scaling factors - - for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); } /* ---------------------------------------------------------------------- diff --git a/src/DPD-BASIC/pair_dpd_ext_tstat.cpp b/src/DPD-BASIC/pair_dpd_ext_tstat.cpp index 19fb6d0330..227db0b885 100644 --- a/src/DPD-BASIC/pair_dpd_ext_tstat.cpp +++ b/src/DPD-BASIC/pair_dpd_ext_tstat.cpp @@ -54,6 +54,10 @@ void PairDPDExtTstat::compute(int eflag, int vflag) ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + // adjust sigma if target T is changing if (t_start != t_stop) { diff --git a/src/DPD-BASIC/pair_dpd_tstat.cpp b/src/DPD-BASIC/pair_dpd_tstat.cpp index dd2d79657b..11296f1288 100644 --- a/src/DPD-BASIC/pair_dpd_tstat.cpp +++ b/src/DPD-BASIC/pair_dpd_tstat.cpp @@ -48,6 +48,10 @@ void PairDPDTstat::compute(int eflag, int vflag) ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + // adjust sigma if target T is changing if (t_start != t_stop) { diff --git a/src/EXTRA-COMMAND/region2vmd.cpp b/src/EXTRA-COMMAND/region2vmd.cpp index 3c357b68f6..ade531f964 100644 --- a/src/EXTRA-COMMAND/region2vmd.cpp +++ b/src/EXTRA-COMMAND/region2vmd.cpp @@ -765,85 +765,6 @@ void Region2VMD::write_region(FILE *fp, Region *region) ellipsoid->c); } - } else if (regstyle == "plane") { - const auto plane = dynamic_cast(region); - if (!plane) { - error->one(FLERR, Error::NOLASTLINE, "Region {} is not of style 'plane'", region->id); - } else { - double v1[3], v2[3], v3[3], v4[3], v5[3], v6[3]; - MathExtra::copy3(plane->normal, v1); - MathExtra::norm3(v1); - v2[0] = plane->xp + dx; - v2[1] = plane->yp + dy; - v2[2] = plane->zp + dz; - // determine the largest component of the plane normal and use that to determine the triangle edges - int dim1, dim2, dim3; - if (fabs(v1[0]) > fabs(v1[1])) { // x > y - if (fabs(v1[0]) > fabs(v1[2])) { // x > z => x is largest - dim3 = 0; - dim1 = 1; - dim2 = 2; - } else { // z is largest - dim3 = 2; - dim1 = 0; - dim2 = 1; - } - } else { // x < y - if (fabs(v1[1]) > fabs(v1[2])) { // y > z => y is largest - dim3 = 1; - dim1 = 0; - dim2 = 2; - } else { // z is largest - dim3 = 2; - dim1 = 0; - dim2 = 1; - } - } - - MathExtra::scale3(2.0, domain->boxlo, v3); - v3[dim3] = 0.0; - MathExtra::cross3(v1, v3, v4); - MathExtra::add3(v4, v2, v5); - v3[dim1] = domain->boxhi[dim1]; - v3[dim2] = domain->boxlo[dim2]; - v3[dim3] = 0.0; - MathExtra::scale3(2.0, v3); - MathExtra::cross3(v1, v3, v4); - MathExtra::add3(v4, v2, v6); - utils::print(fp, "draw triangle {{{} {} {}}} {{{} {} {}}} {{{} {} {}}}\n", v2[dim1], v2[dim2], - v2[dim3], v5[dim1], v5[dim2], v5[dim3], v6[dim1], v6[dim2], v6[dim3]); - v3[dim1] = domain->boxlo[dim1]; - v3[dim2] = domain->boxhi[dim2]; - v3[dim3] = 0.0; - MathExtra::scale3(2.0, v3); - MathExtra::cross3(v1, v3, v4); - MathExtra::add3(v4, v2, v6); - utils::print(fp, "draw triangle {{{} {} {}}} {{{} {} {}}} {{{} {} {}}}\n", v2[dim1], v2[dim2], - v2[dim3], v5[dim1], v5[dim2], v5[dim3], v6[dim1], v6[dim2], v6[dim3]); - v3[dim1] = domain->boxhi[dim1]; - v3[dim2] = domain->boxhi[dim2]; - v3[dim3] = 0.0; - MathExtra::scale3(2.0, v3); - MathExtra::cross3(v1, v3, v4); - MathExtra::add3(v4, v2, v5); - v3[dim1] = domain->boxhi[dim1]; - v3[dim2] = domain->boxlo[dim2]; - v3[dim3] = 0.0; - MathExtra::scale3(2.0, v3); - MathExtra::cross3(v1, v3, v4); - MathExtra::add3(v4, v2, v6); - utils::print(fp, "draw triangle {{{} {} {}}} {{{} {} {}}} {{{} {} {}}}\n", v2[dim1], v2[dim2], - v2[dim3], v5[dim1], v5[dim2], v5[dim3], v6[dim1], v6[dim2], v6[dim3]); - v3[dim1] = domain->boxlo[dim1]; - v3[dim2] = domain->boxhi[dim2]; - v3[dim3] = 0.0; - MathExtra::scale3(2.0, v3); - MathExtra::cross3(v1, v3, v4); - MathExtra::add3(v4, v2, v6); - utils::print(fp, "draw triangle {{{} {} {}}} {{{} {} {}}} {{{} {} {}}}\n", v2[dim1], v2[dim2], - v2[dim3], v5[dim1], v5[dim2], v5[dim3], v6[dim1], v6[dim2], v6[dim3]); - } - } else if (regstyle == "prism") { const auto prism = dynamic_cast(region); if (!prism) { diff --git a/src/EXTRA-COMPUTE/compute_hma.cpp b/src/EXTRA-COMPUTE/compute_hma.cpp index 8ddc413477..38677c9176 100644 --- a/src/EXTRA-COMPUTE/compute_hma.cpp +++ b/src/EXTRA-COMPUTE/compute_hma.cpp @@ -75,10 +75,10 @@ using namespace LAMMPS_NS; ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), id_temp(nullptr), deltaR(nullptr) { - if (narg < 4) error->all(FLERR,"Illegal compute hma command"); - if (igroup) error->all(FLERR,"Compute hma must use group all"); + if (narg < 4) utils::missing_cmd_args(FLERR,"compute hma", error); + if (igroup) error->all(FLERR, 1, "Compute hma must use group all"); if (strcmp(arg[3],"NULL") == 0) - error->all(FLERR,"fix ID specifying the set temperature of canonical simulation is required"); + error->all(FLERR, 3, "fix ID specifying the set temperature of canonical simulation is required"); else id_temp = utils::strdup(arg[3]); create_attribute = 1; @@ -139,7 +139,7 @@ ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : // the first time we're called, we'll grab lattice pressure and energy returnAnharmonic = -1; } else { - error->all(FLERR,"Illegal compute hma command"); + error->all(FLERR, iarg, "Unknown compute hma keyword {}", arg[iarg]); } } @@ -172,9 +172,9 @@ ComputeHMA::~ComputeHMA() void ComputeHMA::init() { if (computeCv>-1) { if (force->pair == nullptr) - error->all(FLERR,"No pair style is defined for compute hma cv"); + error->all(FLERR, Error::NOLASTLINE, "No pair style is defined for compute hma cv"); if (force->pair->single_enable == 0) - error->all(FLERR,"Pair style does not support compute hma cv"); + error->all(FLERR, Error::NOLASTLINE, "Pair style does not support compute hma cv"); } neighbor->add_request(this, NeighConst::REQ_OCCASIONAL); @@ -189,15 +189,19 @@ void ComputeHMA::setup() { int dummy=0; Fix *ifix = modify->get_fix_by_id(id_temp); - if (!ifix) error->all(FLERR,"Could not find compute hma temperature fix ID {}", id_temp); + if (!ifix) + error->all(FLERR, Error::NOLASTLINE, "Could not find compute hma temperature fix ID {}", + id_temp); auto temperat = (double *) ifix->extract("t_target",dummy); - if (temperat == nullptr) error->all(FLERR,"Fix ID {} is not a thermostat {}", id_temp); + if (temperat == nullptr) + error->all(FLERR, Error::NOLASTLINE, "Fix ID {} is not a thermostat {}", id_temp); finaltemp = *temperat; // set fix which stores original atom coords fix = dynamic_cast(modify->get_fix_by_id(id_fix)); - if (!fix) error->all(FLERR,"Could not find hma per-atom store fix ID {}", id_fix); + if (!fix) + error->all(FLERR, Error::NOLASTLINE, "Could not find hma per-atom store fix ID {}", id_fix); } /* ---------------------------------------------------------------------- */ diff --git a/src/EXTRA-FIX/fix_numdiff_virial.cpp b/src/EXTRA-FIX/fix_numdiff_virial.cpp index 895c10b581..826d1975c0 100644 --- a/src/EXTRA-FIX/fix_numdiff_virial.cpp +++ b/src/EXTRA-FIX/fix_numdiff_virial.cpp @@ -41,8 +41,8 @@ using namespace FixConst; FixNumDiffVirial::FixNumDiffVirial(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), id_pe(nullptr), pe(nullptr), temp_x(nullptr), temp_f(nullptr) { - if (narg < 5) error->all(FLERR, "Illegal fix numdiff/virial command"); - if (igroup) error->all(FLERR, "Compute numdiff/virial must use group all"); + if (narg < 5) utils::missing_cmd_args(FLERR, "numdiff/virial", error); + if (igroup) error->all(FLERR, 1, "Compute numdiff/virial must use group all"); peratom_freq = nevery; respa_level_support = 1; @@ -121,10 +121,12 @@ void FixNumDiffVirial::init() pe = modify->get_compute_by_id(id_pe); if (!pe) { - error->all(FLERR, "Potential energy compute ID {} for fix {} does not exist", id_pe, style); + error->all(FLERR, Error::NOLASTLINE, "Potential energy compute ID {} for fix {} does not exist", + id_pe, style); } else { if (pe->peflag == 0) - error->all(FLERR, "Compute ID {} for fix {} does not compute potential energy", id_pe, style); + error->all(FLERR, Error::NOLASTLINE, + "Compute ID {} for fix {} does not compute potential energy", id_pe, style); } if (force->pair && force->pair->compute_flag) diff --git a/src/EXTRA-MOLECULE/angle_cosine_delta.cpp b/src/EXTRA-MOLECULE/angle_cosine_delta.cpp index 51a53e1a96..56dd6da88d 100644 --- a/src/EXTRA-MOLECULE/angle_cosine_delta.cpp +++ b/src/EXTRA-MOLECULE/angle_cosine_delta.cpp @@ -89,8 +89,6 @@ void AngleCosineDelta::compute(int eflag, int vflag) s = sqrt(1.0 - c*c); if (s < SMALL) s = SMALL; - s = 1.0/s; - cot = c/s; // force & energy diff --git a/src/EXTRA-PAIR/pair_dispersion_d3.cpp b/src/EXTRA-PAIR/pair_dispersion_d3.cpp index bd630545d1..d66148828c 100644 --- a/src/EXTRA-PAIR/pair_dispersion_d3.cpp +++ b/src/EXTRA-PAIR/pair_dispersion_d3.cpp @@ -29,6 +29,7 @@ #include "memory.h" #include "neigh_list.h" #include "neighbor.h" +#include "update.h" #include #include @@ -58,6 +59,7 @@ static constexpr double autoang = 0.52917725; // atomic units (Bohr) to Angst static constexpr double autoev = 27.21140795; // atomic units (Hartree) to eV #include "d3_parameters.h" + /* ---------------------------------------------------------------------- Constructor (Required) ------------------------------------------------------------------------- */ @@ -75,6 +77,7 @@ PairDispersionD3::PairDispersionD3(LAMMPS *lmp) : one_coeff = 1; single_enable = 0; + dampingCode = 0; s6 = s8 = s18 = rs6 = rs8 = rs18 = a1 = a2 = alpha = alpha6 = alpha8 = 0.0; } @@ -130,12 +133,20 @@ void PairDispersionD3::allocate() void PairDispersionD3::settings(int narg, char **arg) { - if (narg != 4) error->all(FLERR, "Pair_style dispersion/d3 needs 4 arguments"); + if (narg != 4) error->all(FLERR, "Pair style dispersion/d3 needs 4 arguments"); + if (strcmp("metal", update->unit_style) != 0) + error->all(FLERR, Error::NOLASTLINE, "Pair style dispersion/d3 requires metal units"); - damping_type = arg[0]; + std::string damping_type = arg[0]; std::string functional_name = arg[1]; std::transform(damping_type.begin(), damping_type.end(), damping_type.begin(), ::tolower); + std::unordered_map dampingMap = { + {"original", 1}, {"zero", 1}, {"zerom", 2}, {"bj", 3}, {"bjm", 4}}; + if (!dampingMap.count(damping_type)) + error->all(FLERR, Error::NOPOINTER, "Unknown damping type {} for pair style dispersion/d3", + damping_type); + dampingCode = dampingMap[damping_type]; rthr = utils::numeric(FLERR, arg[2], false, lmp); cn_thr = utils::numeric(FLERR, arg[3], false, lmp); @@ -154,7 +165,7 @@ int PairDispersionD3::find_atomic_number(std::string &key) { std::transform(key.begin(), key.end(), key.begin(), ::tolower); if (key.length() == 1) key += " "; - key.resize(2); + if (key.length() > 2) return -1; std::vector element_table = { "h ", "he", "li", "be", "b ", "c ", "n ", "o ", "f ", "ne", "na", "mg", "al", "si", @@ -283,6 +294,8 @@ void PairDispersionD3::coeff(int narg, char **arg) for (int i = 0; i < ntypes; i++) { element = arg[i + 2]; atomic_numbers[i] = find_atomic_number(element); + if (atomic_numbers[i] < 0) + error->all(FLERR, Error::NOLASTLINE, "Element {} not supported", element); } int count = 0; @@ -450,11 +463,6 @@ double *PairDispersionD3::get_dC6(int iat, int jat, double cni, double cnj) void PairDispersionD3::compute(int eflag, int vflag) { - - std::unordered_map dampingMap = { - {"zero", 1}, {"zerom", 2}, {"bj", 3}, {"bjm", 4}}; - int dampingCode = dampingMap[damping_type]; - double evdwl = 0.0; ev_init(eflag, vflag); @@ -518,7 +526,8 @@ void PairDispersionD3::compute(int eflag, int vflag) t6 = t8 = e6 = e8 = evdwl = fpair = fpair1 = fpair2 = 0.0; switch (dampingCode) { - case 1: { // zero + + case 1: { // original double r0 = r / r0ab[type[i]][type[j]]; @@ -539,6 +548,7 @@ void PairDispersionD3::compute(int eflag, int vflag) fpair = fpair1 + fpair2; fpair *= factor_lj; } break; + case 2: { // zerom double r0 = r0ab[type[i]][type[j]]; @@ -564,6 +574,7 @@ void PairDispersionD3::compute(int eflag, int vflag) fpair = fpair1 + fpair2; fpair *= factor_lj; } break; + case 3: { // bj double r0 = sqrt(C8 / C6); @@ -584,6 +595,7 @@ void PairDispersionD3::compute(int eflag, int vflag) fpair = -(tmp6 + tmp8); fpair *= factor_lj; } break; + case 4: { // bjm double r0 = sqrt(C8 / C6); @@ -603,10 +615,15 @@ void PairDispersionD3::compute(int eflag, int vflag) fpair = -(tmp6 + tmp8); fpair *= factor_lj; - } + } break; + + default: { + // this should not happen with the error check in the init_style function + error->all(FLERR, Error::NOLASTLINE, "Damping code {} unknown", dampingCode); + } break; } - if (eflag) { evdwl = -(s6 * e6 + s8 * e8) * factor_lj; } + if (eflag) evdwl = -(s6 * e6 + s8 * e8) * factor_lj; double rest = (s6 * e6 + s8 * e8) / C6; @@ -693,12 +710,6 @@ void PairDispersionD3::compute(int eflag, int vflag) void PairDispersionD3::set_funcpar(std::string &functional_name) { - - std::unordered_map dampingMap = { - {"zero", 1}, {"zerom", 2}, {"bj", 3}, {"bjm", 4}}; - - int dampingCode = dampingMap[damping_type]; - switch (dampingCode) { case 1: { // zero @@ -962,14 +973,10 @@ void PairDispersionD3::set_funcpar(std::string &functional_name) s8 = 1.206; break; default: - error->all(FLERR, "Functional name unknown"); + error->all(FLERR, Error::NOLASTLINE, + "Functional {} not supported with original damping function", functional_name); break; } - //fprintf(stderr,"s6 : %f\n", s6); - //fprintf(stderr,"s8 : %f\n", s8); - //fprintf(stderr,"rs6 : %f\n", rs6); - //fprintf(stderr,"rs8 : %f\n", rs8); - //fprintf(stderr,"alpha : %f\n", alpha); } break; case 2: { // zerom @@ -1024,14 +1031,10 @@ void PairDispersionD3::set_funcpar(std::string &functional_name) rs8 = 0.003160; break; default: - error->all(FLERR, "Functional name unknown"); + error->all(FLERR, Error::NOLASTLINE, + "Functional {} not supported with zerom damping function", functional_name); break; } - //fprintf(stderr,"s6 : %f\n", s6); - //fprintf(stderr,"s8 : %f\n", s8); - //fprintf(stderr,"rs6 : %f\n", rs6); - //fprintf(stderr,"rs8 : %f\n", rs8); - //fprintf(stderr,"alpha : %f\n", alpha); rs8 = rs8 / autoang; } break; @@ -1334,16 +1337,11 @@ void PairDispersionD3::set_funcpar(std::string &functional_name) a2 = 4.5000; break; default: - error->all(FLERR, "Functional name unknown"); + error->all(FLERR, Error::NOLASTLINE, + "Functional {} not supported with bj damping function", functional_name); break; } - //fprintf(stderr,"s6 : %f\n", s6); - //fprintf(stderr,"s8 : %f\n", s8); - //fprintf(stderr,"a1 : %f\n", a1); - //fprintf(stderr,"a2 : %f\n", a2); - //fprintf(stderr,"alpha : %f\n", alpha); - a2 = a2 * autoang; } break; @@ -1400,21 +1398,17 @@ void PairDispersionD3::set_funcpar(std::string &functional_name) a2 = 3.593680; break; default: - error->all(FLERR, "Functional name unknown"); + error->all(FLERR, Error::NOLASTLINE, + "Functional {} not supported with bjm damping function", functional_name); break; } - //fprintf(stderr,"s6 : %f\n", s6); - //fprintf(stderr,"s8 : %f\n", s8); - //fprintf(stderr,"a1 : %f\n", a1); - //fprintf(stderr,"a2 : %f\n", a2); - //fprintf(stderr,"alpha : %f\n", alpha); - a2 = a2 * autoang; } break; default: - error->all(FLERR, "Damping type unknown"); + // this should not happen with the error check in the init_style function + error->all(FLERR, Error::NOLASTLINE, "Damping code {} unknown", dampingCode); break; } } @@ -1436,8 +1430,6 @@ double PairDispersionD3::init_one(int i, int j) void PairDispersionD3::init_style() { if (atom->tag_enable == 0) error->all(FLERR, "Pair style D3 requires atom IDs"); - //if (force->newton_pair == 0) - // error->all(FLERR,"Pair style D3 requires newton pair on"); // need an half neighbor list neighbor->add_request(this); diff --git a/src/EXTRA-PAIR/pair_dispersion_d3.h b/src/EXTRA-PAIR/pair_dispersion_d3.h index 32d1fadec1..c1842a9b98 100644 --- a/src/EXTRA-PAIR/pair_dispersion_d3.h +++ b/src/EXTRA-PAIR/pair_dispersion_d3.h @@ -48,7 +48,7 @@ class PairDispersionD3 : public Pair { double rthr; // R^2 distance to cutoff for D3_calculation double cn_thr; // R^2 distance to cutoff for CN_calculation - std::string damping_type; // damping function type + int dampingCode; double s6, s8, s18, rs6, rs8, rs18; // XC parameters double a1, a2, alpha, alpha6, alpha8; diff --git a/src/GRANULAR/gran_sub_mod.cpp b/src/GRANULAR/gran_sub_mod.cpp index c31fbd7241..99f2ae9e44 100644 --- a/src/GRANULAR/gran_sub_mod.cpp +++ b/src/GRANULAR/gran_sub_mod.cpp @@ -21,11 +21,13 @@ ----------------------------------------------------------------------- */ #include "gran_sub_mod.h" +#include "math_extra.h" #include using namespace LAMMPS_NS; using namespace Granular_NS; +using namespace MathExtra; /* ---------------------------------------------------------------------- Parent class for all types of granular sub models @@ -44,6 +46,10 @@ GranSubMod::GranSubMod(class GranularModel *gm, LAMMPS *lmp) : Pointers(lmp) contact_radius_flag = 0; nsvector = 0; + // Currently only check tangential + rolling classes, which default to 0 + // no conflicts/checks for other modes, can extend in future + allow_synchronization = 1; + nondefault_history_transfer = 0; transfer_history_factor = nullptr; coeffs = nullptr; @@ -130,3 +136,26 @@ double GranSubMod::mix_mean(double val1, double val2) { return 0.5 * (val1 + val2); } + +/* ---------------------------------------------------------------------- + rotate-rescale vector v so it is perpendicular to unit vector n + and has the same magnitude as before + ---------------------------------------------------------------------- */ +void GranSubMod::rotate_rescale_vec(double *v, double *n) +{ + double rsht, shrmag, prjmag, temp_dbl, temp_array[3]; + + rsht = dot3(v, n); + shrmag = len3(v); + + scale3(rsht, n, temp_array); + sub3(v, temp_array, v); + + // also rescale to preserve magnitude + prjmag = len3(v); + if (prjmag > 0) + temp_dbl = shrmag / prjmag; + else + temp_dbl = 0; + scale3(temp_dbl, v); +} diff --git a/src/GRANULAR/gran_sub_mod.h b/src/GRANULAR/gran_sub_mod.h index 857f70cc59..993356bf7b 100644 --- a/src/GRANULAR/gran_sub_mod.h +++ b/src/GRANULAR/gran_sub_mod.h @@ -31,6 +31,7 @@ namespace Granular_NS { virtual void mix_coeffs(double *, double *); virtual void coeffs_to_local(){}; virtual void init(){}; // called after all sub models + coeffs defined + void rotate_rescale_vec(double *hislocal, double *n); void allocate_coeffs(); std::string name; @@ -43,6 +44,7 @@ namespace Granular_NS { int beyond_contact; // If the sub model contact extends beyond overlap int allow_cohesion; // If the sub model works with a cohesive normal force int contact_radius_flag; // If the sub model requires contact radius + int allow_synchronization; // If the sub model works with synchronized verlet GranularModel *gm; diff --git a/src/GRANULAR/gran_sub_mod_damping.cpp b/src/GRANULAR/gran_sub_mod_damping.cpp index 3aa888372c..2fdd7e1f82 100644 --- a/src/GRANULAR/gran_sub_mod_damping.cpp +++ b/src/GRANULAR/gran_sub_mod_damping.cpp @@ -28,7 +28,7 @@ using MathSpecial::cube; using MathSpecial::powint; using MathSpecial::square; -static constexpr double TWOROOTFIVEBYSIX = 1.82574185835055380345; // 2/sqrt(5/6) +static constexpr double TWOROOTFIVEBYSIX = 1.82574185835055380345; // 2sqrt(5/6) static constexpr double ROOTTHREEBYTWO = 1.22474487139158894067; // sqrt(3/2) /* ---------------------------------------------------------------------- diff --git a/src/GRANULAR/gran_sub_mod_rolling.cpp b/src/GRANULAR/gran_sub_mod_rolling.cpp index 88647c3f45..a25cf6b766 100644 --- a/src/GRANULAR/gran_sub_mod_rolling.cpp +++ b/src/GRANULAR/gran_sub_mod_rolling.cpp @@ -30,7 +30,10 @@ static constexpr double EPSILON = 1e-10; Default rolling friction model ------------------------------------------------------------------------- */ -GranSubModRolling::GranSubModRolling(GranularModel *gm, LAMMPS *lmp) : GranSubMod(gm, lmp) {} +GranSubModRolling::GranSubModRolling(GranularModel *gm, LAMMPS *lmp) : GranSubMod(gm, lmp) +{ + allow_synchronization = 0; +} /* ---------------------------------------------------------------------- No model @@ -39,6 +42,7 @@ GranSubModRolling::GranSubModRolling(GranularModel *gm, LAMMPS *lmp) : GranSubMo GranSubModRollingNone::GranSubModRollingNone(GranularModel *gm, LAMMPS *lmp) : GranSubModRolling(gm, lmp) { + allow_synchronization = 1; } /* ---------------------------------------------------------------------- @@ -50,6 +54,7 @@ GranSubModRollingSDS::GranSubModRollingSDS(GranularModel *gm, LAMMPS *lmp) : { num_coeffs = 3; size_history = 3; + allow_synchronization = 1; } /* ---------------------------------------------------------------------- */ @@ -68,7 +73,7 @@ void GranSubModRollingSDS::coeffs_to_local() void GranSubModRollingSDS::calculate_forces() { int rhist0, rhist1, rhist2, frameupdate; - double Frcrit, rolldotn, rollmag, prjmag, magfr, hist_temp[3], scalefac, temp_array[3]; + double Frcrit, rolldotn, rollmag, magfr, hist_temp[3], temp_array[3]; double k_inv, magfr_inv; rhist0 = history_index; @@ -85,22 +90,18 @@ void GranSubModRollingSDS::calculate_forces() rolldotn = dot3(hist_temp, gm->nx); frameupdate = (fabs(rolldotn) * k) > (EPSILON * Frcrit); - if (frameupdate) { // rotate into tangential plane - rollmag = len3(hist_temp); - // projection - scale3(rolldotn, gm->nx, temp_array); - sub3(hist_temp, temp_array, hist_temp); + if (frameupdate) rotate_rescale_vec(hist_temp, gm->nx); - // also rescale to preserve magnitude - prjmag = len3(hist_temp); - if (prjmag > 0) - scalefac = rollmag / prjmag; - else - scalefac = 0; - scale3(scalefac, hist_temp); - } + // update history at half-step scale3(gm->dt, gm->vrl, temp_array); add3(hist_temp, temp_array, hist_temp); + + // rotate into tangential plane at full-step for synchronized_verlet + if (gm->synchronized_verlet == 1) { + rolldotn = dot3(hist_temp, gm->nx_unrotated); + frameupdate = (fabs(rolldotn) * k) > (EPSILON * Frcrit); + if (frameupdate) rotate_rescale_vec(hist_temp, gm->nx_unrotated); + } } scaleadd3(-k, hist_temp, -gamma, gm->vrl, gm->fr); diff --git a/src/GRANULAR/gran_sub_mod_tangential.cpp b/src/GRANULAR/gran_sub_mod_tangential.cpp index f8f39a38f9..bd36f58b26 100644 --- a/src/GRANULAR/gran_sub_mod_tangential.cpp +++ b/src/GRANULAR/gran_sub_mod_tangential.cpp @@ -31,7 +31,10 @@ static constexpr double EPSILON = 1e-10; Default model ------------------------------------------------------------------------- */ -GranSubModTangential::GranSubModTangential(GranularModel *gm, LAMMPS *lmp) : GranSubMod(gm, lmp) {} +GranSubModTangential::GranSubModTangential(GranularModel *gm, LAMMPS *lmp) : GranSubMod(gm, lmp) +{ + allow_synchronization = 0; +} /* ---------------------------------------------------------------------- No model @@ -40,6 +43,7 @@ GranSubModTangential::GranSubModTangential(GranularModel *gm, LAMMPS *lmp) : Gra GranSubModTangentialNone::GranSubModTangentialNone(GranularModel *gm, LAMMPS *lmp) : GranSubModTangential(gm, lmp) { + allow_synchronization = 1; } /* ---------------------------------------------------------------------- @@ -95,6 +99,7 @@ GranSubModTangentialLinearHistory::GranSubModTangentialLinearHistory(GranularMod { num_coeffs = 3; size_history = 3; + allow_synchronization = 1; } /* ---------------------------------------------------------------------- */ @@ -113,7 +118,7 @@ void GranSubModTangentialLinearHistory::coeffs_to_local() void GranSubModTangentialLinearHistory::calculate_forces() { // Note: this is the same as the base Mindlin calculation except k isn't scaled by contact radius - double magfs, magfs_inv, rsht, shrmag, prjmag, temp_dbl, temp_array[3]; + double magfs, magfs_inv, rsht, shrmag, temp_array[3], vtr2[3]; int frame_update = 0; damp = xt * gm->damping_model->get_damp_prefactor(); @@ -127,31 +132,31 @@ void GranSubModTangentialLinearHistory::calculate_forces() rsht = dot3(history, gm->nx); frame_update = (fabs(rsht) * k) > (EPSILON * Fscrit); - if (frame_update) { - shrmag = len3(history); + if (frame_update) rotate_rescale_vec(history, gm->nx); - // projection - scale3(rsht, gm->nx, temp_array); - sub3(history, temp_array, history); - - // also rescale to preserve magnitude - prjmag = len3(history); - if (prjmag > 0) - temp_dbl = shrmag / prjmag; - else - temp_dbl = 0; - scale3(temp_dbl, history); - } - - // update history, tangential force + // update history, tangential force using velocities at half step // see e.g. eq. 18 of Thornton et al, Pow. Tech. 2013, v223,p30-46 scale3(gm->dt, gm->vtr, temp_array); add3(history, temp_array, history); + + if(gm->synchronized_verlet == 1) { + rsht = dot3(history, gm->nx_unrotated); + frame_update = (fabs(rsht) * k) > (EPSILON * Fscrit); + //Second projection to nx (t+\Delta t) + if (frame_update) rotate_rescale_vec(history, gm->nx_unrotated); + } } // tangential forces = history + tangential velocity damping scale3(-k, history, gm->fs); - scale3(damp, gm->vtr, temp_array); + //Rotating vtr for damping term in nx direction + if (frame_update && gm->synchronized_verlet == 1) { + copy3(gm->vtr, vtr2); + rotate_rescale_vec(vtr2, gm->nx_unrotated); + } else { + copy3(gm->vtr, vtr2); + } + scale3(damp,vtr2, temp_array); sub3(gm->fs, temp_array, gm->fs); // rescale frictional displacements and forces if needed @@ -256,6 +261,7 @@ GranSubModTangentialMindlin::GranSubModTangentialMindlin(GranularModel *gm, LAMM mindlin_force = 0; mindlin_rescale = 0; contact_radius_flag = 1; + allow_synchronization = 1; } /* ---------------------------------------------------------------------- */ @@ -302,8 +308,8 @@ void GranSubModTangentialMindlin::mix_coeffs(double *icoeffs, double *jcoeffs) void GranSubModTangentialMindlin::calculate_forces() { - double k_scaled, magfs, magfs_inv, rsht, shrmag, prjmag, temp_dbl; - double temp_array[3]; + double k_scaled, magfs, magfs_inv, rsht, shrmag; + double temp_array[3], vtr2[3]; int frame_update = 0; damp = xt * gm->damping_model->get_damp_prefactor(); @@ -327,19 +333,7 @@ void GranSubModTangentialMindlin::calculate_forces() frame_update = (fabs(rsht) * k_scaled) > (EPSILON * Fscrit); } - if (frame_update) { - shrmag = len3(history); - // projection - scale3(rsht, gm->nx, temp_array); - sub3(history, temp_array, history); - // also rescale to preserve magnitude - prjmag = len3(history); - if (prjmag > 0) - temp_dbl = shrmag / prjmag; - else - temp_dbl = 0; - scale3(temp_dbl, history); - } + if (frame_update) rotate_rescale_vec(history, gm->nx); // update history if (mindlin_force) { @@ -352,10 +346,28 @@ void GranSubModTangentialMindlin::calculate_forces() add3(history, temp_array, history); if (mindlin_rescale) history[3] = gm->contact_radius; + + if (gm->synchronized_verlet == 1) { + // second projection to full step normal + rsht = dot3(history, gm->nx_unrotated); + if (mindlin_force) { + frame_update = fabs(rsht) > (EPSILON * Fscrit); + } else { + frame_update = (fabs(rsht) * k_scaled) > (EPSILON * Fscrit); + } + if (frame_update) rotate_rescale_vec(history, gm->nx_unrotated); + } } // tangential forces = history + tangential velocity damping - scale3(-damp, gm->vtr, gm->fs); + // Rotating vtr for damping term in nx direction + if (frame_update && gm->synchronized_verlet) { + copy3(gm->vtr, vtr2); + rotate_rescale_vec(vtr2, gm->nx_unrotated); + } else { + copy3(gm->vtr, vtr2); + } + scale3(-damp, vtr2, gm->fs); if (!mindlin_force) { scale3(k_scaled, history, temp_array); diff --git a/src/GRANULAR/granular_model.cpp b/src/GRANULAR/granular_model.cpp index cb89cc1bd1..e96debd59e 100644 --- a/src/GRANULAR/granular_model.cpp +++ b/src/GRANULAR/granular_model.cpp @@ -53,6 +53,7 @@ template static GranSubMod *gran_sub_mod_creator(GranularModel *gm, GranularModel::GranularModel(LAMMPS *lmp) : Pointers(lmp) { limit_damping = 0; + synchronized_verlet = 0; beyond_contact = 0; nondefault_history_transfer = 0; classic_model = 0; @@ -281,6 +282,14 @@ void GranularModel::init() if (limit_damping && normal_model->get_cohesive_flag()) error->all(FLERR,"Cannot limit damping with a cohesive normal model, {}", normal_model->name); + if (synchronized_verlet && !tangential_model->allow_synchronization) + error->all(FLERR,"Cannot use synchronized verlet with a non-synchronized tangential model, {}", + tangential_model->name); + + if (synchronized_verlet && !rolling_model->allow_synchronization) + error->all(FLERR,"Cannot use synchronized verlet with a non-synchronized rolling model, {}", + rolling_model->name); + if (nondefault_history_transfer) { transfer_history_factor = new double[size_history]; @@ -430,11 +439,22 @@ void GranularModel::calculate_forces() rinv = 1.0 / r; delta = radsum - r; dR = delta * Reff; - scale3(rinv, dx, nx); // relative translational velocity sub3(vi, vj, vr); + if (synchronized_verlet == 1 && contact_type != WALL){ + //Calculating half step normal for synchronized verlet + double temp1[3], nhalf[3]; + scale3(rinv, dx, nx_unrotated); + scale3(0.5 * dt, vr, temp1); + sub3(dx, temp1, nhalf); + norm3(nhalf); + copy3(nhalf, nx); + } else { + scale3(rinv, dx, nx); + } + // normal component vnnr = dot3(vr, nx); scale3(vnnr, nx, vn); @@ -470,7 +490,7 @@ void GranularModel::calculate_forces() add3(forces, fs, forces); // May need to eventually rethink tris.. - cross3(nx, fs, torquesi); + cross3(nx, fs, torquesi); //h has been rotated to full-step so we can use nx here scale3(-1, torquesi); if (contact_type == PAIR) { @@ -501,7 +521,7 @@ void GranularModel::calculate_forces() rolling_model->calculate_forces(); double torroll[3]; - cross3(nx, fr, torroll); + cross3(nx, fr, torroll); //we can use nx here as fr has been rotated to full-step scale3(Reff, torroll); add3(torquesi, torroll, torquesi); if (contact_type == PAIR) sub3(torquesj, torroll, torquesj); diff --git a/src/GRANULAR/granular_model.h b/src/GRANULAR/granular_model.h index 67df1410d9..fbbf9d7c9c 100644 --- a/src/GRANULAR/granular_model.h +++ b/src/GRANULAR/granular_model.h @@ -71,7 +71,7 @@ class GranularModel : protected Pointers { GranSubMod *sub_models[NSUBMODELS]; // Extra options - int beyond_contact, limit_damping, history_update; + int beyond_contact, limit_damping, history_update, synchronized_verlet; ContactType contact_type; // Particle identifiers @@ -91,7 +91,7 @@ class GranularModel : protected Pointers { double *xi, *xj, *vi, *vj, *omegai, *omegaj; double fs[3], fr[3], ft[3]; - double dx[3], nx[3], r, rsq, rinv, Reff, radsum, delta, dR; + double dx[3], nx[3], nx_unrotated[3], r, rsq, rinv, Reff, radsum, delta, dR; double vr[3], vn[3], vnnr, vt[3], wr[3], vtr[3], vrl[3], relrot[3], vrel; double magtwist; bool touch; diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 05bc911689..56aafe8a2c 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -373,6 +373,9 @@ void PairGranular::coeff(int narg, char **arg) } else if (strcmp(arg[iarg], "limit_damping") == 0) { model->limit_damping = 1; iarg += 1; + } else if (strcmp(arg[iarg], "synchronized_verlet") == 0) { + model->synchronized_verlet = 1; + iarg += 1; } else error->all(FLERR, "Illegal pair_coeff command {}", arg[iarg]); } diff --git a/src/KOKKOS/nbin_kokkos.cpp b/src/KOKKOS/nbin_kokkos.cpp index 79ae9c6632..6a663fb0f0 100644 --- a/src/KOKKOS/nbin_kokkos.cpp +++ b/src/KOKKOS/nbin_kokkos.cpp @@ -109,7 +109,7 @@ void NBinKokkos::bin_atoms() if (h_resize()) { atoms_per_bin += 16; - k_bins = DAT::tdual_int_2d("bins", mbins, atoms_per_bin); + k_bins = DAT::tdual_int_2d("Neighbor::bins", mbins, atoms_per_bin); bins = k_bins.view(); c_bins = bins; } diff --git a/src/OPENMP/angle_cosine_delta_omp.cpp b/src/OPENMP/angle_cosine_delta_omp.cpp index cc8370d053..7fc163d01d 100644 --- a/src/OPENMP/angle_cosine_delta_omp.cpp +++ b/src/OPENMP/angle_cosine_delta_omp.cpp @@ -16,15 +16,16 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "omp_compat.h" #include "angle_cosine_delta_omp.h" -#include + #include "atom.h" #include "comm.h" #include "force.h" #include "neighbor.h" +#include +#include "omp_compat.h" #include "suffix.h" using namespace LAMMPS_NS; @@ -128,8 +129,6 @@ void AngleCosineDeltaOMP::eval(int nfrom, int nto, ThrData * const thr) s = sqrt(1.0 - c*c); if (s < SMALL) s = SMALL; - s = 1.0/s; - cot = c/s; // force & energy diff --git a/src/OPENMP/fix_rigid_small_omp.cpp b/src/OPENMP/fix_rigid_small_omp.cpp index 59fd274f95..3eac85c40a 100644 --- a/src/OPENMP/fix_rigid_small_omp.cpp +++ b/src/OPENMP/fix_rigid_small_omp.cpp @@ -229,7 +229,7 @@ void FixRigidSmallOMP::compute_forces_and_torques() #if defined(_OPENMP) #pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif - for (int ibody = 0; ibody < nbody; ibody++) { + for (int ibody = 0; ibody < nlocal_body; ibody++) { double * _noalias const fcm = body[ibody].fcm; const double mass = body[ibody].mass; fcm[0] += gvec[0]*mass; diff --git a/src/OPENMP/pair_dpd_ext_omp.cpp b/src/OPENMP/pair_dpd_ext_omp.cpp index 9c53984b68..fbcb6ef4b5 100644 --- a/src/OPENMP/pair_dpd_ext_omp.cpp +++ b/src/OPENMP/pair_dpd_ext_omp.cpp @@ -60,6 +60,10 @@ void PairDPDExtOMP::compute(int eflag, int vflag) { ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/OPENMP/pair_dpd_ext_tstat_omp.cpp b/src/OPENMP/pair_dpd_ext_tstat_omp.cpp index 41234dbcc9..bfbdcd4e04 100644 --- a/src/OPENMP/pair_dpd_ext_tstat_omp.cpp +++ b/src/OPENMP/pair_dpd_ext_tstat_omp.cpp @@ -60,6 +60,10 @@ void PairDPDExtTstatOMP::compute(int eflag, int vflag) { ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/OPENMP/pair_dpd_omp.cpp b/src/OPENMP/pair_dpd_omp.cpp index c4226b5f9d..1e85421e2c 100644 --- a/src/OPENMP/pair_dpd_omp.cpp +++ b/src/OPENMP/pair_dpd_omp.cpp @@ -59,6 +59,10 @@ void PairDPDOMP::compute(int eflag, int vflag) { ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/OPENMP/pair_dpd_tstat_omp.cpp b/src/OPENMP/pair_dpd_tstat_omp.cpp index 86ecd86528..e77fcf255e 100644 --- a/src/OPENMP/pair_dpd_tstat_omp.cpp +++ b/src/OPENMP/pair_dpd_tstat_omp.cpp @@ -60,6 +60,10 @@ void PairDPDTstatOMP::compute(int eflag, int vflag) { ev_init(eflag,vflag); + // precompute random force scaling factors + + for (int i = 0; i < 4; ++i) special_sqrt[i] = sqrt(force->special_lj[i]); + const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/REAXFF/reaxff_control.cpp b/src/REAXFF/reaxff_control.cpp index 2d700e1eec..150b3a4c90 100644 --- a/src/REAXFF/reaxff_control.cpp +++ b/src/REAXFF/reaxff_control.cpp @@ -57,8 +57,8 @@ namespace ReaxFF { class control_parser_error : public std::exception { std::string message; public: - explicit control_parser_error(const std::string &msg) { - message = msg; + explicit control_parser_error(const std::string &format, const std::string &keyword) { + message = fmt::format(fmt::runtime(format), keyword); } const char *what() const noexcept override { return message.c_str(); } }; @@ -92,11 +92,11 @@ namespace ReaxFF { auto keyword = values.next_string(); if (!values.has_next()) - throw control_parser_error( - fmt::format("No value(s) for control parameter: {}\n", keyword)); + throw control_parser_error("No value(s) for control parameter: {}\n", keyword); if (inactive_keywords.find(keyword) != inactive_keywords.end()) { - error->warning(FLERR,fmt::format("Ignoring inactive control parameter: {}", keyword)); + error->warning(FLERR, fmt::format(fmt::runtime("Ignoring inactive control parameter: {}"), + keyword)); } else if (keyword == "nbrhood_cutoff") { control->bond_cut = values.next_double(); } else if (keyword == "bond_graph_cutoff") { @@ -114,7 +114,7 @@ namespace ReaxFF { error->warning(FLERR,"Support for writing native trajectories has " "been removed after LAMMPS version 8 April 2021"); } else { - throw control_parser_error(fmt::format("Unknown parameter {} in control file", keyword)); + throw control_parser_error("Unknown parameter {} in control file", keyword); } } } catch (LAMMPS_NS::EOFException &) { diff --git a/src/REPLICA/compute_pressure_alchemy.cpp b/src/REPLICA/compute_pressure_alchemy.cpp index e91860445a..b63b51071e 100644 --- a/src/REPLICA/compute_pressure_alchemy.cpp +++ b/src/REPLICA/compute_pressure_alchemy.cpp @@ -27,7 +27,7 @@ ComputePressureAlchemy::ComputePressureAlchemy(LAMMPS *lmp, int narg, char **arg Compute(lmp, narg, arg), fix(nullptr) { if (narg != 4) error->all(FLERR, "Illegal compute pressure/alchemy command"); - if (igroup) error->all(FLERR, "Compute pressure/alchemy must use group all"); + if (igroup) error->all(FLERR, 1, "Compute pressure/alchemy must use group all"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -38,7 +38,8 @@ ComputePressureAlchemy::ComputePressureAlchemy(LAMMPS *lmp, int narg, char **arg id_fix = arg[3]; if (!modify->get_fix_by_id(id_fix)) - error->all(FLERR, "Could not find compute pressure/alchemy fix ID {} for fix alchemy", id_fix); + error->all(FLERR, 3, "Could not find compute pressure/alchemy fix ID {} for fix alchemy", + id_fix); vector = new double[size_vector]; } @@ -57,11 +58,13 @@ void ComputePressureAlchemy::init() fix = modify->get_fix_by_id(id_fix); if (!fix) - error->all(FLERR, "Could not find compute pressure/alchemy fix ID {} for fix alchemy", id_fix); + error->all(FLERR, Error::NOLASTLINE, + "Could not find compute pressure/alchemy fix ID {} for fix alchemy", id_fix); int dim = 0; void *ptr = fix->extract("pressure", dim); - if (!ptr || (dim != 1)) error->all(FLERR, "Could not extract pressure from fix alchemy"); + if (!ptr || (dim != 1)) + error->all(FLERR, Error::NOLASTLINE, "Could not extract pressure from fix alchemy"); } /* ---------------------------------------------------------------------- @@ -96,7 +99,8 @@ void ComputePressureAlchemy::compute_vector() int dim = 0; double *pressure = (double *) fix->extract("pressure", dim); - if (!pressure || (dim != 1)) error->all(FLERR, "Could not extract pressure from fix alchemy"); + if (!pressure || (dim != 1)) + error->all(FLERR, Error::NOLASTLINE, "Could not extract pressure from fix alchemy"); for (int i = 0; i < 6; i++) vector[i] = pressure[i]; } diff --git a/src/RHEO/compute_rheo_vshift.cpp b/src/RHEO/compute_rheo_vshift.cpp index 248e857fb3..5fbc780e91 100644 --- a/src/RHEO/compute_rheo_vshift.cpp +++ b/src/RHEO/compute_rheo_vshift.cpp @@ -42,8 +42,8 @@ using namespace MathExtra; /* ---------------------------------------------------------------------- */ ComputeRHEOVShift::ComputeRHEOVShift(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), vshift(nullptr), ct(nullptr), wsame(nullptr), cgradt(nullptr), - fix_rheo(nullptr), rho0(nullptr), list(nullptr), compute_interface(nullptr), + Compute(lmp, narg, arg), vshift(nullptr), fix_rheo(nullptr), rho0(nullptr), wsame(nullptr), + ct(nullptr), cgradt(nullptr), shift_type(nullptr), list(nullptr), compute_interface(nullptr), compute_kernel(nullptr), compute_surface(nullptr) { if (narg != 3) error->all(FLERR, "Illegal compute RHEO/VShift command"); @@ -316,8 +316,7 @@ void ComputeRHEOVShift::correct_type_interface() { int i, j, a, ii, jj, jnum, itype, jtype; int fluidi, fluidj; - double xtmp, ytmp, ztmp, rsq, r, rinv; - double w, wp, dr, w0, prefactor; + double xtmp, ytmp, ztmp, rsq, r, w; double imass, jmass, voli, volj, rhoi, rhoj; double dx[3]; int dim = domain->dimension; @@ -327,14 +326,12 @@ void ComputeRHEOVShift::correct_type_interface() int *type = atom->type; int *status = atom->rheo_status; - int *mask = atom->mask; double **x = atom->x; double *rho = atom->rho; double *mass = atom->mass; double *rmass = atom->rmass; int nlocal = atom->nlocal; - int nall = nlocal + atom->nghost; int newton_pair = force->newton_pair; inum = list->inum; diff --git a/src/atom.cpp b/src/atom.cpp index 6faffd105c..bbc00dec75 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -767,7 +767,7 @@ void Atom::init() if (firstgroupname) { firstgroup = group->find(firstgroupname); if (firstgroup < 0) - error->all(FLERR,"Could not find atom_modify first group ID {}", firstgroupname); + error->all(FLERR, Error::NOLASTLINE, "Could not find atom_modify first group ID {}", firstgroupname); } else firstgroup = -1; // init AtomVec @@ -830,21 +830,23 @@ void Atom::modify_params(int narg, char **arg) if (narg == 0) utils::missing_cmd_args(FLERR, "atom_modify", error); int iarg = 0; + int idx; while (iarg < narg) { + idx = iarg ? iarg : Error::ARGZERO; if (strcmp(arg[iarg],"id") == 0) { if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "atom_modify id", error); if (domain->box_exist) - error->all(FLERR,"Atom_modify id command after simulation box is defined"); + error->all(FLERR, idx, "Atom_modify id command after simulation box is defined"); tag_enable = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"map") == 0) { if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "atom_modify map", error); if (domain->box_exist) - error->all(FLERR,"Atom_modify map command after simulation box is defined"); + error->all(FLERR, idx, "Atom_modify map command after simulation box is defined"); if (strcmp(arg[iarg+1],"array") == 0) map_user = MAP_ARRAY; else if (strcmp(arg[iarg+1],"hash") == 0) map_user = MAP_HASH; else if (strcmp(arg[iarg+1],"yes") == 0) map_user = MAP_YES; - else error->all(FLERR,"Illegal atom_modify map command argument {}", arg[iarg+1]); + else error->all(FLERR, iarg + 1, "Illegal atom_modify map command argument {}", arg[iarg+1]); map_style = map_user; iarg += 2; } else if (strcmp(arg[iarg],"first") == 0) { @@ -861,12 +863,12 @@ void Atom::modify_params(int narg, char **arg) if (iarg+3 > narg) utils::missing_cmd_args(FLERR, "atom_modify sort", error); sortfreq = utils::inumeric(FLERR,arg[iarg+1],false,lmp); userbinsize = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (sortfreq < 0) error->all(FLERR,"Illegal atom_modify sort frequency {}", sortfreq); - if (userbinsize < 0.0) error->all(FLERR,"Illegal atom_modify sort bin size {}", userbinsize); + if (sortfreq < 0) error->all(FLERR, iarg + 1, "Illegal atom_modify sort frequency {}", sortfreq); + if (userbinsize < 0.0) error->all(FLERR, iarg + 2, "Illegal atom_modify sort bin size {}", userbinsize); if ((sortfreq >= 0) && firstgroupname) - error->all(FLERR,"Atom_modify sort and first options cannot be used together"); + error->all(FLERR, idx, "Atom_modify sort and first options cannot be used together"); iarg += 3; - } else error->all(FLERR,"Illegal atom_modify command argument: {}", arg[iarg]); + } else error->all(FLERR, idx, "Illegal atom_modify command argument: {}", arg[iarg]); } } diff --git a/src/balance.cpp b/src/balance.cpp index f838eed748..3e45efed49 100644 --- a/src/balance.cpp +++ b/src/balance.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -51,8 +52,6 @@ enum { XYZ, SHIFT, BISECTION }; enum { NONE, UNIFORM, USER }; enum { X, Y, Z }; -// clang-format off - /* ---------------------------------------------------------------------- */ Balance::Balance(LAMMPS *lmp) : Command(lmp) @@ -114,13 +113,13 @@ Balance::~Balance() void Balance::command(int narg, char **arg) { if (domain->box_exist == 0) - error->all(FLERR,"Balance command before simulation box is defined"); + error->all(FLERR, -1, "Balance command before simulation box is defined"); if (comm->me == 0) utils::logmesg(lmp,"Balancing ...\n"); // parse required arguments - if (narg < 2) error->all(FLERR,"Illegal balance command"); + if (narg < 2) utils::missing_cmd_args(FLERR,"balance", error); thresh = utils::numeric(FLERR,arg[0],false,lmp); @@ -132,16 +131,15 @@ void Balance::command(int narg, char **arg) int iarg = 1; while (iarg < narg) { if (strcmp(arg[iarg],"x") == 0) { - if (style != -1 && style != XYZ) - error->all(FLERR,"Illegal balance command"); + if ((style != -1) && (style != XYZ)) + error->all(FLERR, iarg, "Must not combine multiple balancing styles"); style = XYZ; + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"balance x", error); if (strcmp(arg[iarg+1],"uniform") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal balance command"); xflag = UNIFORM; iarg += 2; } else { - if (1 + procgrid[0]-1 > narg) - error->all(FLERR,"Illegal balance command"); + if (iarg + procgrid[0]-1 > narg) utils::missing_cmd_args(FLERR,"balance x", error); xflag = USER; delete[] user_xsplit; user_xsplit = new double[procgrid[0]+1]; @@ -152,16 +150,15 @@ void Balance::command(int narg, char **arg) user_xsplit[procgrid[0]] = 1.0; } } else if (strcmp(arg[iarg],"y") == 0) { - if (style != -1 && style != XYZ) - error->all(FLERR,"Illegal balance command"); + if ((style != -1) && (style != XYZ)) + error->all(FLERR, iarg, "Must not combine multiple balancing styles"); style = XYZ; + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"balance y", error); if (strcmp(arg[iarg+1],"uniform") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal balance command"); yflag = UNIFORM; iarg += 2; } else { - if (1 + procgrid[1]-1 > narg) - error->all(FLERR,"Illegal balance command"); + if (iarg + procgrid[1]-1 > narg) utils::missing_cmd_args(FLERR,"balance y", error); yflag = USER; delete[] user_ysplit; user_ysplit = new double[procgrid[1]+1]; @@ -172,16 +169,15 @@ void Balance::command(int narg, char **arg) user_ysplit[procgrid[1]] = 1.0; } } else if (strcmp(arg[iarg],"z") == 0) { - if (style != -1 && style != XYZ) - error->all(FLERR,"Illegal balance command"); + if ((style != -1) && (style != XYZ)) + error->all(FLERR, iarg, "Must not combine multiple balancing styles"); style = XYZ; + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"balance z", error); if (strcmp(arg[iarg+1],"uniform") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal balance command"); zflag = UNIFORM; iarg += 2; } else { - if (1 + procgrid[2]-1 > narg) - error->all(FLERR,"Illegal balance command"); + if (iarg + procgrid[2]-1 > narg) utils::missing_cmd_args(FLERR,"balance z", error); zflag = USER; delete[] user_zsplit; user_zsplit = new double[procgrid[2]+1]; @@ -193,19 +189,21 @@ void Balance::command(int narg, char **arg) } } else if (strcmp(arg[iarg],"shift") == 0) { - if (style != -1) error->all(FLERR,"Illegal balance command"); + if (style != -1) error->all(FLERR, iarg, "Must not combine multiple balancing styles"); if (iarg+4 > narg) utils::missing_cmd_args(FLERR, "balance shift", error); style = SHIFT; bstr = arg[iarg+1]; - if (bstr.size() > BSTR_SIZE) error->all(FLERR,"Illegal balance shift command"); + if (bstr.size() > BSTR_SIZE) error->all(FLERR, iarg + 1, "Illegal balance shift command"); nitermax = utils::inumeric(FLERR,arg[iarg+2],false,lmp); - if (nitermax <= 0) error->all(FLERR,"Illegal balance command"); + if (nitermax <= 0) + error->all(FLERR,iarg+2,"Illegal balance shift value {}", arg[iarg+2]); stopthresh = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (stopthresh < 1.0) error->all(FLERR,"Illegal balance command"); + if (stopthresh < 1.0) + error->all(FLERR,iarg+3,"Illegal balance stop threshold value {}", arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"rcb") == 0) { - if (style != -1) error->all(FLERR,"Illegal balance command"); + if (style != -1) error->all(FLERR,"Must not combine multiple balancing styles"); style = BISECTION; iarg++; @@ -221,32 +219,32 @@ void Balance::command(int narg, char **arg) if (xflag == USER) for (int i = 1; i <= procgrid[0]; i++) if (user_xsplit[i-1] >= user_xsplit[i]) - error->all(FLERR,"Illegal balance command"); + error->all(FLERR,"Slices for balance x command must be in ascending order"); if (yflag == USER) for (int i = 1; i <= procgrid[1]; i++) if (user_ysplit[i-1] >= user_ysplit[i]) - error->all(FLERR,"Illegal balance command"); + error->all(FLERR,"Slices for balance y command must be in ascending order"); if (zflag == USER) for (int i = 1; i <= procgrid[2]; i++) if (user_zsplit[i-1] >= user_zsplit[i]) - error->all(FLERR,"Illegal balance command"); + error->all(FLERR,"Slices for balance z command must be in ascending order"); } if (style == SHIFT) { const int blen = bstr.size(); for (int i = 0; i < blen; i++) { if (bstr[i] != 'x' && bstr[i] != 'y' && bstr[i] != 'z') - error->all(FLERR,"Balance shift string is invalid"); + error->all(FLERR,"Balance shift string {} is invalid", bstr); if (bstr[i] == 'z' && dimension == 2) - error->all(FLERR,"Balance shift string is invalid"); + error->all(FLERR,"Balance shift string {} is invalid", bstr); for (int j = i+1; j < blen; j++) if (bstr[i] == bstr[j]) - error->all(FLERR,"Balance shift string is invalid"); + error->all(FLERR,"Balance shift string {} is invalid", bstr); } } if (style == BISECTION && comm->style == Comm::BRICK) - error->all(FLERR,"Balance rcb cannot be used with comm_style brick"); + error->all(FLERR, Error::ARGZERO, "Balance rcb cannot be used with comm_style brick"); // process remaining optional args @@ -467,16 +465,16 @@ void Balance::options(int iarg, int narg, char **arg, int sortflag_default) nopt = imb->options(narg-iarg,arg+iarg+2); imbalances[nimbalance++] = imb; } else { - error->all(FLERR,"Unknown (fix) balance weight method: {}", arg[iarg+1]); + error->all(FLERR, iarg + 1, "Unknown (fix) balance weight method: {}", arg[iarg+1]); } iarg += 2+nopt; } else if (strcmp(arg[iarg],"sort") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "balance sort", error); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "(fix) balance sort", error); sortflag = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"out") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal (fix) balance command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"(fix) balance out", error); outflag = 1; outarg = iarg+1; iarg += 2; @@ -485,7 +483,7 @@ void Balance::options(int iarg, int narg, char **arg, int sortflag_default) oldrcb = 1; iarg++; - } else error->all(FLERR,"Illegal (fix) balance command"); + } else error->all(FLERR, iarg, "Unknown (fix) balance keyword {}", arg[iarg]); } // output file @@ -493,8 +491,8 @@ void Balance::options(int iarg, int narg, char **arg, int sortflag_default) if (outflag && comm->me == 0) { fp = fopen(arg[outarg],"w"); if (fp == nullptr) - error->one(FLERR,"Cannot open (fix) balance output file {}: {}", - arg[outarg], utils::getsyserror()); + error->one(FLERR, outarg, "Cannot open (fix) balance output file {}: {}", + arg[outarg], utils::getsyserror()); } } diff --git a/src/compute.cpp b/src/compute.cpp index 06f58e817b..578667d76c 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -41,7 +41,7 @@ Compute::Compute(LAMMPS *lmp, int narg, char **arg) : { instance_me = instance_total++; - if (narg < 3) error->all(FLERR,"Illegal compute command"); + if (narg < 3) utils::missing_cmd_args(FLERR,"compute", error); // compute ID, group, and style // ID must be all alphanumeric chars or underscores diff --git a/src/compute_msd_chunk.cpp b/src/compute_msd_chunk.cpp index d738b835fa..98d08f1fcc 100644 --- a/src/compute_msd_chunk.cpp +++ b/src/compute_msd_chunk.cpp @@ -21,6 +21,7 @@ #include "group.h" #include "memory.h" #include "modify.h" +#include "update.h" using namespace LAMMPS_NS; @@ -30,7 +31,7 @@ ComputeMSDChunk::ComputeMSDChunk(LAMMPS *lmp, int narg, char **arg) : ComputeChunk(lmp, narg, arg), id_fix(nullptr), fix(nullptr), massproc(nullptr), masstotal(nullptr), com(nullptr), comall(nullptr), msd(nullptr) { - if (narg != 4) error->all(FLERR, "Illegal compute msd/chunk command"); + if (narg != 4) error->all(FLERR, "Incorrect number of arguments for compute msd/chunk"); msdnchunk = 0; array_flag = 1; @@ -114,6 +115,8 @@ void ComputeMSDChunk::setup() void ComputeMSDChunk::compute_array() { + invoked_array = update->ntimestep; + int index; double massone; double unwrap[3]; @@ -127,7 +130,7 @@ void ComputeMSDChunk::compute_array() if (firstflag) msdnchunk = nchunk; else if (msdnchunk != nchunk) - error->all(FLERR, "Compute msd/chunk nchunk is not static"); + error->all(FLERR, Error::NOLASTLINE, "Compute msd/chunk nchunk is not static"); // zero local per-chunk values diff --git a/src/compute_pe.cpp b/src/compute_pe.cpp index c430add751..d90a8a5199 100644 --- a/src/compute_pe.cpp +++ b/src/compute_pe.cpp @@ -35,8 +35,8 @@ using namespace LAMMPS_NS; ComputePE::ComputePE(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all(FLERR, "Illegal compute pe command"); - if (igroup) error->all(FLERR, "Compute pe must use group all"); + if (narg < 3) utils::missing_cmd_args(FLERR, "compute pe", error); + if (igroup) error->all(FLERR, 1, "Compute pe must use group all"); scalar_flag = 1; extscalar = 1; @@ -70,7 +70,7 @@ ComputePE::ComputePE(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg else if (strcmp(arg[iarg], "fix") == 0) fixflag = 1; else - error->all(FLERR, "Illegal compute pe command"); + error->all(FLERR, iarg, "Unknown compute pe keyword {}", arg[iarg]); iarg++; } } diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp index 57a884bc3e..91a9cb531d 100644 --- a/src/compute_pressure.cpp +++ b/src/compute_pressure.cpp @@ -40,7 +40,7 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), vptr(nullptr), id_temp(nullptr), pstyle(nullptr) { if (narg < 4) utils::missing_cmd_args(FLERR,"compute pressure", error); - if (igroup) error->all(FLERR,"Compute pressure must use group all"); + if (igroup) error->all(FLERR, 1, "Compute pressure must use group all"); scalar_flag = vector_flag = 1; size_vector = 6; @@ -58,9 +58,9 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : id_temp = utils::strdup(arg[3]); auto icompute = modify->get_compute_by_id(id_temp); if (!icompute) - error->all(FLERR,"Could not find compute pressure temperature ID {}", id_temp); + error->all(FLERR, 3, "Could not find compute pressure temperature ID {}", id_temp); if (!icompute->tempflag) - error->all(FLERR,"Compute pressure temperature ID {} does not compute temperature", id_temp); + error->all(FLERR, 3, "Compute pressure temperature ID {} does not compute temperature", id_temp); } // process optional args diff --git a/src/compute_vacf.cpp b/src/compute_vacf.cpp index 813a28dff6..067ac605b0 100644 --- a/src/compute_vacf.cpp +++ b/src/compute_vacf.cpp @@ -27,7 +27,7 @@ using namespace LAMMPS_NS; ComputeVACF::ComputeVACF(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), id_fix(nullptr) { - if (narg < 3) error->all(FLERR, "Illegal compute vacf command"); + if (narg > 3) error->all(FLERR, 3, "Compute vacf does not accept any arguments"); vector_flag = 1; size_vector = 4; diff --git a/src/compute_vacf_chunk.cpp b/src/compute_vacf_chunk.cpp new file mode 100644 index 0000000000..7e058b4e85 --- /dev/null +++ b/src/compute_vacf_chunk.cpp @@ -0,0 +1,225 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "compute_vacf_chunk.h" + +#include "atom.h" +#include "compute_chunk_atom.h" +#include "error.h" +#include "fix_store_global.h" +#include "group.h" +#include "memory.h" +#include "modify.h" +#include "update.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeVACFChunk::ComputeVACFChunk(LAMMPS *lmp, int narg, char **arg) : + ComputeChunk(lmp, narg, arg), id_fix(nullptr), fix(nullptr), massproc(nullptr), + masstotal(nullptr), vcm(nullptr), vcmall(nullptr), vacf(nullptr) +{ + if (narg != 4) error->all(FLERR, "Incorrect number of arguments for compute vacf/chunk"); + + vacfnchunk = 0; + array_flag = 1; + size_array_cols = 4; + size_array_rows = 0; + size_array_rows_variable = 1; + extarray = 0; + + ComputeVACFChunk::init(); + + // create a new fix STORE style for reference velocities + // id = compute-ID + COMPUTE_STORE, fix group = compute group + // do not know size of array at this point, just allocate 1x1 array + // fix creation must be done now so that a restart run can + // potentially re-populate the fix array (and change it to correct size) + // otherwise size reset and init will be done in setup() + + id_fix = utils::strdup(std::string(id) + "_COMPUTE_STORE"); + fix = dynamic_cast( + modify->add_fix(fmt::format("{} {} STORE/GLOBAL 1 1", id_fix, group->names[igroup]))); +} + +/* ---------------------------------------------------------------------- */ + +ComputeVACFChunk::~ComputeVACFChunk() +{ + // check nfix in case all fixes have already been deleted + + if (modify->nfix) modify->delete_fix(id_fix); + + delete[] id_fix; + memory->destroy(massproc); + memory->destroy(masstotal); + memory->destroy(vcm); + memory->destroy(vcmall); + memory->destroy(vacf); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeVACFChunk::init() +{ + ComputeChunk::init(); + + // set fix which stores reference atom coords + // if firstflag, will be created in setup() + + if (!firstflag) { + fix = dynamic_cast(modify->get_fix_by_id(id_fix)); + if (!fix) error->all(FLERR, "Could not find compute vacf/chunk fix with ID {}", id_fix); + } +} + +/* ---------------------------------------------------------------------- + compute initial VCM for each chunk + only once on timestep compute is defined, when firstflag = 1 +------------------------------------------------------------------------- */ + +void ComputeVACFChunk::setup() +{ + if (!firstflag) return; + compute_array(); + firstflag = 0; + + // if fix->astore is already correct size, restart file set it up + // otherwise reset its size now and initialize to current VCM + + if (fix->nrow == nchunk && fix->ncol == 3) return; + fix->reset_global(nchunk, 3); + + double **vcminit = fix->astore; + for (int i = 0; i < nchunk; i++) { + vcminit[i][0] = vcmall[i][0]; + vcminit[i][1] = vcmall[i][1]; + vcminit[i][2] = vcmall[i][2]; + vacf[i][0] = vacf[i][1] = vacf[i][2] = vacf[i][3] = 1.0; + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputeVACFChunk::compute_array() +{ + invoked_array = update->ntimestep; + + int index; + double massone; + + ComputeChunk::compute_array(); + int *ichunk = cchunk->ichunk; + + // first time call, allocate per-chunk arrays + // thereafter, require nchunk remain the same + + if (firstflag) + vacfnchunk = nchunk; + else if (vacfnchunk != nchunk) + error->all(FLERR, Error::NOLASTLINE, "Compute vacf/chunk nchunk is not static"); + + // zero local per-chunk values + + for (int i = 0; i < nchunk; i++) { + massproc[i] = 0.0; + vcm[i][0] = vcm[i][1] = vcm[i][2] = 0.0; + } + + // compute current VCM for each chunk + + double **v = atom->v; + int *mask = atom->mask; + int *type = atom->type; + double *mass = atom->mass; + double *rmass = atom->rmass; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + index = ichunk[i] - 1; + if (index < 0) continue; + if (rmass) + massone = rmass[i]; + else + massone = mass[type[i]]; + massproc[index] += massone; + vcm[index][0] += v[i][0] * massone; + vcm[index][1] += v[i][1] * massone; + vcm[index][2] += v[i][2] * massone; + } + + MPI_Allreduce(massproc, masstotal, nchunk, MPI_DOUBLE, MPI_SUM, world); + MPI_Allreduce(&vcm[0][0], &vcmall[0][0], 3 * nchunk, MPI_DOUBLE, MPI_SUM, world); + + for (int i = 0; i < nchunk; i++) { + if (masstotal[i] > 0.0) { + vcmall[i][0] /= masstotal[i]; + vcmall[i][1] /= masstotal[i]; + vcmall[i][2] /= masstotal[i]; + } + } + + // VACF is dot product between current and initial VCM + // vcminit is initilialized by setup() when firstflag is set + + if (firstflag) return; + + double vxsq, vysq, vzsq; + double **vcminit = fix->astore; + + for (int i = 0; i < nchunk; i++) { + vxsq = vcmall[i][0] * vcminit[i][0]; + vysq = vcmall[i][1] * vcminit[i][1]; + vzsq = vcmall[i][2] * vcminit[i][2]; + vacf[i][0] = vxsq; + vacf[i][1] = vysq; + vacf[i][2] = vzsq; + vacf[i][3] = vxsq + vysq + vzsq; + } +} + +/* ---------------------------------------------------------------------- + one-time allocate of per-chunk arrays +------------------------------------------------------------------------- */ + +void ComputeVACFChunk::allocate() +{ + ComputeChunk::allocate(); + memory->destroy(massproc); + memory->destroy(masstotal); + memory->destroy(vcm); + memory->destroy(vcmall); + memory->destroy(vacf); + + memory->create(massproc, nchunk, "vacf/chunk:massproc"); + memory->create(masstotal, nchunk, "vacf/chunk:masstotal"); + memory->create(vcm, nchunk, 3, "vacf/chunk:vcm"); + memory->create(vcmall, nchunk, 3, "vacf/chunk:vcmall"); + memory->create(vacf, nchunk, 4, "vacf/chunk:vacf"); + array = vacf; +} + +/* ---------------------------------------------------------------------- + memory usage of local data +------------------------------------------------------------------------- */ + +double ComputeVACFChunk::memory_usage() +{ + double bytes = ComputeChunk::memory_usage(); + bytes += (bigint) nchunk * 2 * sizeof(double); + bytes += (double) nchunk * 2 * 3 * sizeof(double); + bytes += (double) nchunk * 4 * sizeof(double); + return bytes; +} diff --git a/src/compute_vacf_chunk.h b/src/compute_vacf_chunk.h new file mode 100644 index 0000000000..1501960422 --- /dev/null +++ b/src/compute_vacf_chunk.h @@ -0,0 +1,52 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS +// clang-format off +ComputeStyle(vacf/chunk,ComputeVACFChunk); +// clang-format on +#else + +#ifndef LMP_COMPUTE_VACF_CHUNK_H +#define LMP_COMPUTE_VACF_CHUNK_H + +#include "compute_chunk.h" + +namespace LAMMPS_NS { + +class ComputeVACFChunk : public ComputeChunk { + public: + ComputeVACFChunk(class LAMMPS *, int, char **); + ~ComputeVACFChunk() override; + void init() override; + void setup() override; + + void compute_array() override; + + double memory_usage() override; + + protected: + bigint vacfnchunk; + + char *id_fix; + class FixStoreGlobal *fix; + + double *massproc, *masstotal; + double **vcm, **vcmall; + double **vacf; + + void allocate() override; +}; +} // namespace LAMMPS_NS +#endif +#endif diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp index 2a32e96106..912ab01984 100644 --- a/src/fix_balance.cpp +++ b/src/fix_balance.cpp @@ -42,7 +42,7 @@ enum { SHIFT, BISECTION }; FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), balance(nullptr), irregular(nullptr) { - if (narg < 6) error->all(FLERR,"Illegal fix balance command"); + if (narg < 6) utils::missing_cmd_args(FLERR, "fix balance", error); box_change = BOX_CHANGE_DOMAIN; pre_exchange_migrate = 1; @@ -58,7 +58,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : int dimension = domain->dimension; nevery = utils::inumeric(FLERR,arg[3],false,lmp); - if (nevery < 0) error->all(FLERR,"Illegal fix balance command"); + if (nevery < 0) error->all(FLERR, 3, "Illegal fix balance nevery value {}", arg[3]); thresh = utils::numeric(FLERR,arg[4],false,lmp); reportonly = 0; @@ -69,7 +69,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[5],"report") == 0) { lbstyle = SHIFT; reportonly = 1; - } else error->all(FLERR,"Unknown fix balance style {}", arg[5]); + } else error->all(FLERR, 5, "Unknown fix balance style {}", arg[5]); int iarg = 5; if (lbstyle == SHIFT) { @@ -84,11 +84,14 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : } else { if (iarg+4 > narg) utils::missing_cmd_args(FLERR, "fix balance shift", error); bstr = arg[iarg+1]; - if (bstr.size() > Balance::BSTR_SIZE) error->all(FLERR,"Illegal fix balance shift command"); + if (bstr.size() > Balance::BSTR_SIZE) + error->all(FLERR, iarg + 1, "Illegal fix balance shift argument {}", bstr); nitermax = utils::inumeric(FLERR,arg[iarg+2],false,lmp); - if (nitermax <= 0) error->all(FLERR,"Illegal fix balance command"); + if (nitermax <= 0) + error->all(FLERR, iarg + 2, "Illegal fix balance shift niter argument {}", nitermax); stopthresh = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (stopthresh < 1.0) error->all(FLERR,"Illegal fix balance command"); + if (stopthresh < 1.0) + error->all(FLERR, iarg + 3, "Illegal fix balance stop threshold argument {}", stopthresh); iarg += 4; } @@ -102,12 +105,12 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : const int blen = bstr.size(); for (int i = 0; i < blen; i++) { if (bstr[i] != 'x' && bstr[i] != 'y' && bstr[i] != 'z') - error->all(FLERR,"Fix balance shift string is invalid"); + error->all(FLERR,"Fix balance shift string {} is invalid", bstr); if (bstr[i] == 'z' && dimension == 2) - error->all(FLERR,"Fix balance shift string is invalid"); + error->all(FLERR,"Fix balance shift string {} is invalid", bstr); for (int j = i+1; j < blen; j++) if (bstr[i] == bstr[j]) - error->all(FLERR,"Fix balance shift string is invalid"); + error->all(FLERR,"Fix balance shift string {} is invalid", bstr); } } @@ -125,7 +128,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : sortflag = balance->sortflag; if (balance->varflag && nevery == 0) - error->all(FLERR,"Fix balance nevery = 0 cannot be used with weight var"); + error->all(FLERR, 3, "Fix balance nevery = 0 cannot be used with weight var"); // create instance of Irregular class diff --git a/src/fix_bond_history.cpp b/src/fix_bond_history.cpp index 38ea497ebe..0fa03e430e 100644 --- a/src/fix_bond_history.cpp +++ b/src/fix_bond_history.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Joel Clemmer (SNL) +------------------------------------------------------------------------- */ + #include "fix_bond_history.h" #include "atom.h" diff --git a/src/fix_move.cpp b/src/fix_move.cpp index 80e10c4d3d..46c3e12d37 100644 --- a/src/fix_move.cpp +++ b/src/fix_move.cpp @@ -49,9 +49,9 @@ static constexpr double INERTIA = 0.2; // moment of inertia prefactor for ell FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), xvarstr(nullptr), yvarstr(nullptr), zvarstr(nullptr), vxvarstr(nullptr), vyvarstr(nullptr), vzvarstr(nullptr), xoriginal(nullptr), toriginal(nullptr), - qoriginal(nullptr), displace(nullptr), velocity(nullptr) + qoriginal(nullptr), muoriginal(nullptr), displace(nullptr), velocity(nullptr) { - if (narg < 4) error->all(FLERR, "Illegal fix move command"); + if (narg < 4) utils::missing_cmd_args(FLERR, "fix move", error); restart_global = 1; restart_peratom = 1; @@ -69,7 +69,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : int iarg = 0; if (strcmp(arg[3], "linear") == 0) { - if (narg < 7) error->all(FLERR, "Illegal fix move command"); + if (narg < 7) utils::missing_cmd_args(FLERR, "fix move linear", error); iarg = 7; mstyle = LINEAR; if (strcmp(arg[4], "NULL") == 0) @@ -92,7 +92,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : } } else if (strcmp(arg[3], "wiggle") == 0) { - if (narg < 8) error->all(FLERR, "Illegal fix move command"); + if (narg < 8) utils::missing_cmd_args(FLERR, "fix move wiggle", error); iarg = 8; mstyle = WIGGLE; if (strcmp(arg[4], "NULL") == 0) @@ -114,10 +114,10 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : az = utils::numeric(FLERR, arg[6], false, lmp); } period = utils::numeric(FLERR, arg[7], false, lmp); - if (period <= 0.0) error->all(FLERR, "Illegal fix move command"); + if (period <= 0.0) error->all(FLERR, 7, "Illegal fix move wiggle period {}", period); } else if (strcmp(arg[3], "rotate") == 0) { - if (narg < 11) error->all(FLERR, "Illegal fix move command"); + if (narg < 11) utils::missing_cmd_args(FLERR, "fix move rotate", error); iarg = 11; mstyle = ROTATE; point[0] = utils::numeric(FLERR, arg[4], false, lmp); @@ -127,10 +127,10 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : axis[1] = utils::numeric(FLERR, arg[8], false, lmp); axis[2] = utils::numeric(FLERR, arg[9], false, lmp); period = utils::numeric(FLERR, arg[10], false, lmp); - if (period <= 0.0) error->all(FLERR, "Illegal fix move command"); + if (period <= 0.0) error->all(FLERR, 10, "Illegal fix move rotate period {}", period); } else if (strcmp(arg[3], "transrot") == 0) { - if (narg < 11) error->all(FLERR, "Illegal fix move command"); + if (narg < 11) utils::missing_cmd_args(FLERR, "fix move transrot", error); iarg = 14; mstyle = TRANSROT; vxflag = vyflag = vzflag = 1; @@ -144,10 +144,10 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : axis[1] = utils::numeric(FLERR, arg[11], false, lmp); axis[2] = utils::numeric(FLERR, arg[12], false, lmp); period = utils::numeric(FLERR, arg[13], false, lmp); - if (period <= 0.0) error->all(FLERR, "Illegal fix move command"); + if (period <= 0.0) error->all(FLERR, 13, "Illegal fix move rotate period {}", period); } else if (strcmp(arg[3], "variable") == 0) { - if (narg < 10) error->all(FLERR, "Illegal fix move command"); + if (narg < 10) utils::missing_cmd_args(FLERR, "fix move variable", error); iarg = 10; mstyle = VARIABLE; if (strcmp(arg[4], "NULL") == 0) @@ -155,70 +155,83 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : else if (utils::strmatch(arg[4], "^v_")) { xvarstr = utils::strdup(arg[4] + 2); } else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, 4, "Argument must be either NULL or variable reference"); if (strcmp(arg[5], "NULL") == 0) yvarstr = nullptr; else if (utils::strmatch(arg[5], "^v_")) { yvarstr = utils::strdup(arg[5] + 2); } else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, 5, "Argument must be either NULL or variable reference"); if (strcmp(arg[6], "NULL") == 0) zvarstr = nullptr; else if (utils::strmatch(arg[6], "^v_")) { zvarstr = utils::strdup(arg[6] + 2); } else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, 6, "Argument must be either NULL or variable reference"); if (strcmp(arg[7], "NULL") == 0) vxvarstr = nullptr; else if (utils::strmatch(arg[7], "^v_")) { vxvarstr = utils::strdup(arg[7] + 2); } else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, 7, "Argument must be either NULL or variable reference"); if (strcmp(arg[8], "NULL") == 0) vyvarstr = nullptr; else if (utils::strmatch(arg[8], "^v_")) { vyvarstr = utils::strdup(arg[8] + 2); } else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, 8, "Argument must be either NULL or variable reference"); if (strcmp(arg[9], "NULL") == 0) vzvarstr = nullptr; else if (utils::strmatch(arg[9], "^v_")) { vzvarstr = utils::strdup(arg[9] + 2); } else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, 9, "Argument must be either NULL or variable reference"); - } else - error->all(FLERR, "Illegal fix move command"); + } else { + error->all(FLERR, 3, "Unknown fix move mode {}", arg[3]); + } // optional args int scaleflag = 1; + update_mu_flag = 0; while (iarg < narg) { if (strcmp(arg[iarg], "units") == 0) { - if (iarg + 2 > narg) error->all(FLERR, "Illegal fix move command"); + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix move units", error); if (strcmp(arg[iarg + 1], "box") == 0) scaleflag = 0; else if (strcmp(arg[iarg + 1], "lattice") == 0) scaleflag = 1; else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, iarg + 1, "Unknown fix move units setting {}", arg[iarg + 1]); + iarg += 2; + } else if (strcmp(arg[iarg], "update") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix move update", error); + if (strcmp(arg[iarg + 1], "dipole") == 0) { + if ((mstyle != ROTATE) && (mstyle != TRANSROT)) + error->all(FLERR, 3, "Fix move keyword update dipole requires style rotate or transrot"); + if (!atom->mu_flag) + error->all(FLERR, iarg + 1, "Fix move keyword update dipole requires atom attribute mu"); + update_mu_flag = 1; + } else + error->all(FLERR, iarg + 1, "Unkown fix move update argument {}", arg[iarg + 1]); iarg += 2; } else - error->all(FLERR, "Illegal fix move command"); + error->all(FLERR, iarg, "Unknown fix move keyword {}", arg[iarg]); } // error checks and warnings if (domain->dimension == 2) { if (((mstyle == LINEAR) || (mstyle == TRANSROT)) && vzflag && (vz != 0.0)) - error->all(FLERR, "Fix move cannot set linear z motion for 2d problem"); + error->all(FLERR, 3, "Fix move cannot set linear z motion for 2d problem"); if (mstyle == WIGGLE && azflag && az != 0.0) - error->all(FLERR, "Fix move cannot set wiggle z motion for 2d problem"); + error->all(FLERR, 3, "Fix move cannot set wiggle z motion for 2d problem"); if (((mstyle == ROTATE) || (mstyle == TRANSROT)) && (axis[0] != 0.0 || axis[1] != 0.0)) - error->all(FLERR, "Fix move cannot rotate around non z-axis for 2d problem"); + error->all(FLERR, 3, "Fix move cannot rotate around non z-axis for 2d problem"); if (mstyle == VARIABLE && (zvarstr || vzvarstr)) - error->all(FLERR, "Fix move cannot define z or vz variable for 2d problem"); + error->all(FLERR, 3, "Fix move cannot define z or vz variable for 2d problem"); } // setup scaling and apply scaling factors to velocity & amplitude @@ -283,7 +296,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : if (ellipsoid_flag || tri_flag || body_flag || quat_atom_flag) quat_flag = 1; extra_flag = 0; - if (omega_flag || angmom_flag || theta_flag || quat_flag) extra_flag = 1; + if (omega_flag || angmom_flag || theta_flag || quat_flag || update_mu_flag) extra_flag = 1; // perform initial allocation of atom-based array // register with Atom class @@ -304,6 +317,7 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : // xoriginal = initial unwrapped positions of atoms // toriginal = initial theta of lines // qoriginal = initial quat of extended particles + // muoriginal = initial dipole moment of extended particles double **x = atom->x; imageint *image = atom->image; @@ -362,6 +376,18 @@ FixMove::FixMove(LAMMPS *lmp, int narg, char **arg) : } } + if (update_mu_flag) { + double **mu = atom->mu; + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + muoriginal[i][0] = mu[i][0]; + muoriginal[i][1] = mu[i][1]; + muoriginal[i][2] = mu[i][2]; + muoriginal[i][3] = mu[i][3]; + } + } + } + // nrestart = size of per-atom restart data // nrestart = 1 + xorig + torig + qorig @@ -388,6 +414,7 @@ FixMove::~FixMove() memory->destroy(xoriginal); memory->destroy(toriginal); memory->destroy(qoriginal); + memory->destroy(muoriginal); memory->destroy(displace); memory->destroy(velocity); @@ -426,63 +453,83 @@ void FixMove::init() if (mstyle == VARIABLE) { if (xvarstr) { xvar = input->variable->find(xvarstr); - if (xvar < 0) error->all(FLERR, "Variable name for fix move does not exist"); + if (xvar < 0) + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move does not exist", + xvarstr); if (input->variable->equalstyle(xvar)) xvarstyle = EQUAL; else if (input->variable->atomstyle(xvar)) xvarstyle = ATOM; else - error->all(FLERR, "Variable for fix move is invalid style"); + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move is invalid style", + xvarstr); } if (yvarstr) { yvar = input->variable->find(yvarstr); - if (yvar < 0) error->all(FLERR, "Variable name for fix move does not exist"); + if (yvar < 0) + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move does not exist", + yvarstr); + if (input->variable->equalstyle(yvar)) yvarstyle = EQUAL; else if (input->variable->atomstyle(yvar)) yvarstyle = ATOM; else - error->all(FLERR, "Variable for fix move is invalid style"); + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move is invalid style", + yvarstr); } if (zvarstr) { zvar = input->variable->find(zvarstr); - if (zvar < 0) error->all(FLERR, "Variable name for fix move does not exist"); + if (zvar < 0) + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move does not exist", + zvarstr); + if (input->variable->equalstyle(zvar)) zvarstyle = EQUAL; else if (input->variable->atomstyle(zvar)) zvarstyle = ATOM; else - error->all(FLERR, "Variable for fix move is invalid style"); + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move is invalid style", + zvarstr); } if (vxvarstr) { vxvar = input->variable->find(vxvarstr); - if (vxvar < 0) error->all(FLERR, "Variable name for fix move does not exist"); + if (vxvar < 0) + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move does not exist", + vxvarstr); if (input->variable->equalstyle(vxvar)) vxvarstyle = EQUAL; else if (input->variable->atomstyle(vxvar)) vxvarstyle = ATOM; else - error->all(FLERR, "Variable for fix move is invalid style"); + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move is invalid style", + vxvarstr); } if (vyvarstr) { vyvar = input->variable->find(vyvarstr); - if (vyvar < 0) error->all(FLERR, "Variable name for fix move does not exist"); + if (vyvar < 0) + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move does not exist", + vyvarstr); if (input->variable->equalstyle(vyvar)) vyvarstyle = EQUAL; else if (input->variable->atomstyle(vyvar)) vyvarstyle = ATOM; else - error->all(FLERR, "Variable for fix move is invalid style"); + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move is invalid style", + vyvarstr); } if (vzvarstr) { vzvar = input->variable->find(vzvarstr); - if (vzvar < 0) error->all(FLERR, "Variable name for fix move does not exist"); + if (vzvar < 0) + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move does not exist", + vzvarstr); if (input->variable->equalstyle(vzvar)) vzvarstyle = EQUAL; else if (input->variable->atomstyle(vzvar)) vzvarstyle = ATOM; else - error->all(FLERR, "Variable for fix move is invalid style"); + error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix move is invalid style", + vzvarstr); } if (xvarstr && xvarstyle == ATOM) displaceflag = 1; @@ -533,6 +580,7 @@ void FixMove::initial_integrate(int /*vflag*/) double *rmass = atom->rmass; double *mass = atom->mass; double **quat_atom = atom->quat; + double **mu = atom->mu; int *type = atom->type; int *ellipsoid = atom->ellipsoid; int *line = atom->line; @@ -676,6 +724,8 @@ void FixMove::initial_integrate(int /*vflag*/) qrotate[2] = runit[1] * qsine; qrotate[3] = runit[2] * qsine; + double rotmat[3][3], g[3]; // for dipole rotation + for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { xold[0] = x[i][0]; @@ -775,6 +825,15 @@ void FixMove::initial_integrate(int /*vflag*/) } else if (quat_atom_flag) { MathExtra::quatquat(qrotate, qoriginal[i], quat_atom[i]); } + + if (update_mu_flag && mu[i][3] > 0.0) { + MathExtra::quat_to_mat(qrotate, rotmat); + MathExtra::matvec(rotmat, muoriginal[i], g); + mu[i][0] = g[0]; + mu[i][1] = g[1]; + mu[i][2] = g[2]; + // mu[i][3] = sqrt(g[0] * g[0] + g[1] * g[1] + g[2] * g[2]); + } } domain->remap_near(x[i], xold); @@ -809,6 +868,8 @@ void FixMove::initial_integrate(int /*vflag*/) qrotate[2] = runit[1] * qsine; qrotate[3] = runit[2] * qsine; + double rotmat[3][3], g[3]; // for dipole rotation + for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { xold[0] = x[i][0]; @@ -908,6 +969,15 @@ void FixMove::initial_integrate(int /*vflag*/) } else if (quat_atom_flag) { MathExtra::quatquat(qrotate, qoriginal[i], quat_atom[i]); } + + if (update_mu_flag && mu[i][3] > 0.0) { + MathExtra::quat_to_mat(qrotate, rotmat); + MathExtra::matvec(rotmat, muoriginal[i], g); + mu[i][0] = g[0]; + mu[i][1] = g[1]; + mu[i][2] = g[2]; + // mu[i][3] = sqrt(g[0] * g[0] + g[1] * g[1] + g[2] * g[2]); + } } v[i][0] += vx; @@ -1248,6 +1318,7 @@ void FixMove::grow_arrays(int nmax) memory->grow(xoriginal, nmax, 3, "move:xoriginal"); if (theta_flag) memory->grow(toriginal, nmax, "move:toriginal"); if (quat_flag) memory->grow(qoriginal, nmax, 4, "move:qoriginal"); + if (update_mu_flag) memory->grow(muoriginal, nmax, 4, "move:muoriginal"); array_atom = xoriginal; } @@ -1267,6 +1338,12 @@ void FixMove::copy_arrays(int i, int j, int /*delflag*/) qoriginal[j][2] = qoriginal[i][2]; qoriginal[j][3] = qoriginal[i][3]; } + if (update_mu_flag) { + muoriginal[j][0] = muoriginal[i][0]; + muoriginal[j][1] = muoriginal[i][1]; + muoriginal[j][2] = muoriginal[i][2]; + muoriginal[j][3] = muoriginal[i][3]; + } } /* ---------------------------------------------------------------------- @@ -1302,7 +1379,8 @@ void FixMove::set_arrays(int i) // backup particle to time_origin - if (mstyle == VARIABLE) error->all(FLERR, "Cannot add atoms to fix move variable"); + if (mstyle == VARIABLE) + error->all(FLERR, Error::NOLASTLINE, "Cannot add atoms with fix move style variable"); domain->unmap(x[i], image[i], xoriginal[i]); double delta = (update->ntimestep - time_origin) * update->dt; @@ -1461,6 +1539,12 @@ int FixMove::pack_exchange(int i, double *buf) buf[n++] = qoriginal[i][2]; buf[n++] = qoriginal[i][3]; } + if (update_mu_flag) { + buf[n++] = muoriginal[i][0]; + buf[n++] = muoriginal[i][1]; + buf[n++] = muoriginal[i][2]; + buf[n++] = muoriginal[i][3]; + } return n; } @@ -1481,6 +1565,12 @@ int FixMove::unpack_exchange(int nlocal, double *buf) qoriginal[nlocal][2] = buf[n++]; qoriginal[nlocal][3] = buf[n++]; } + if (update_mu_flag) { + muoriginal[nlocal][0] = buf[n++]; + muoriginal[nlocal][1] = buf[n++]; + muoriginal[nlocal][2] = buf[n++]; + muoriginal[nlocal][3] = buf[n++]; + } return n; } @@ -1501,6 +1591,12 @@ int FixMove::pack_restart(int i, double *buf) buf[n++] = qoriginal[i][2]; buf[n++] = qoriginal[i][3]; } + if (update_mu_flag) { + buf[n++] = muoriginal[i][0]; + buf[n++] = muoriginal[i][1]; + buf[n++] = muoriginal[i][2]; + buf[n++] = muoriginal[i][3]; + } // pack buf[0] this way because other fixes unpack it buf[0] = n; return n; @@ -1531,6 +1627,12 @@ void FixMove::unpack_restart(int nlocal, int nth) qoriginal[nlocal][2] = extra[nlocal][m++]; qoriginal[nlocal][3] = extra[nlocal][m++]; } + if (update_mu_flag) { + muoriginal[nlocal][0] = extra[nlocal][m++]; + muoriginal[nlocal][1] = extra[nlocal][m++]; + muoriginal[nlocal][2] = extra[nlocal][m++]; + muoriginal[nlocal][3] = extra[nlocal][m++]; + } } /* ---------------------------------------------------------------------- @@ -1555,5 +1657,5 @@ int FixMove::size_restart(int /*nlocal*/) void FixMove::reset_dt() { - error->all(FLERR, "Resetting timestep size is not allowed with fix move"); + error->all(FLERR, Error::NOLASTLINE, "Resetting timestep size is not allowed with fix move"); } diff --git a/src/fix_move.h b/src/fix_move.h index 244a9d704a..3697964acf 100644 --- a/src/fix_move.h +++ b/src/fix_move.h @@ -62,13 +62,14 @@ class FixMove : public Fix { int xvarstyle, yvarstyle, zvarstyle, vxvarstyle, vyvarstyle, vzvarstyle; int extra_flag, omega_flag, angmom_flag; int radius_flag, ellipsoid_flag, line_flag, tri_flag, body_flag, quat_atom_flag; - int theta_flag, quat_flag; + int theta_flag, quat_flag, update_mu_flag; int nlevels_respa, nrestart; int time_origin; double **xoriginal; // original coords of atoms double *toriginal; // original theta of atoms double **qoriginal; // original quat of atoms + double **muoriginal; // original mu of atoms int displaceflag, velocityflag; int maxatom; double **displace, **velocity; diff --git a/src/fix_nve.cpp b/src/fix_nve.cpp index 58a5677b92..c96454fe92 100644 --- a/src/fix_nve.cpp +++ b/src/fix_nve.cpp @@ -33,7 +33,7 @@ FixNVE::FixNVE(LAMMPS *lmp, int narg, char **arg) : auto plain_style = utils::strip_style_suffix(style, lmp); if (utils::strmatch(plain_style, "^nve$") && narg > 3) - error->all(FLERR, "Unsupported additional arguments for fix {}", style); + error->all(FLERR, 3, "Unsupported additional arguments for fix {}", style); dynamic_group_allow = 1; time_integrate = 1; diff --git a/src/modify.cpp b/src/modify.cpp index 89cc1d0643..9908b96d79 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -262,11 +262,13 @@ void Modify::init() for (i = 0; i < nfix; i++) if (!fix[i]->dynamic_group_allow && group->dynamic[fix[i]->igroup]) - error->all(FLERR, "Fix {} does not allow use with a dynamic group", fix[i]->style); + error->all(FLERR, Error::NOLASTLINE, "Fix {} does not allow use with a dynamic group", + fix[i]->style); for (i = 0; i < ncompute; i++) if (!compute[i]->dynamic_group_allow && group->dynamic[compute[i]->igroup]) - error->all(FLERR, "Compute {} does not allow use with a dynamic group", compute[i]->style); + error->all(FLERR, Error::NOLASTLINE, "Compute {} does not allow use with a dynamic group", + compute[i]->style); // warn if any particle is time integrated more than once @@ -834,13 +836,13 @@ Fix *Modify::add_fix(int narg, char **arg, int trysuffix) for (m = 0; exceptions[m] != nullptr; m++) if (strcmp(arg[2], exceptions[m]) == 0) break; if (exceptions[m] == nullptr) - error->all(FLERR, "Fix {} command before simulation box is defined", arg[2]); + error->all(FLERR, 2, "Fix {} command before simulation box is defined", arg[2]); } // check group ID int igroup = group->find(arg[1]); - if (igroup == -1) error->all(FLERR, "Could not find fix group ID {}", arg[1]); + if (igroup == -1) error->all(FLERR, 1, "Could not find fix group ID {}", arg[1]); // if fix ID exists: // set newflag = 0 so create new fix in same location in fix list @@ -874,7 +876,7 @@ Fix *Modify::add_fix(int narg, char **arg, int trysuffix) if (estyle == fix[ifix]->style) match = 1; } } - if (!match) error->all(FLERR, "Replacing a fix, but new style != old style"); + if (!match) error->all(FLERR, 2, "Replacing a fix, but new style != old style"); if (fix[ifix]->igroup != igroup && comm->me == 0) error->warning(FLERR, "Replacing a fix, but new group != old group"); @@ -921,7 +923,8 @@ Fix *Modify::add_fix(int narg, char **arg, int trysuffix) fix[ifix] = fix_creator(lmp, narg, arg); } - if (fix[ifix] == nullptr) error->all(FLERR, utils::check_packages_for_style("fix", arg[2], lmp)); + if (fix[ifix] == nullptr) + error->all(FLERR, 2, utils::check_packages_for_style("fix", arg[2], lmp)); // increment nfix and update fix_list vector (if new) @@ -1244,7 +1247,8 @@ Compute *Modify::add_compute(int narg, char **arg, int trysuffix) // error check - if (get_compute_by_id(arg[0])) error->all(FLERR, "Reuse of compute ID '{}'", arg[0]); + if (get_compute_by_id(arg[0])) + error->all(FLERR, Error::ARGZERO, "Reuse of compute ID '{}'", arg[0]); // extend Compute list if necessary diff --git a/src/neighbor.cpp b/src/neighbor.cpp index e12713094e..c90eaa752c 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -392,6 +392,13 @@ void Neighbor::init() } cutneighmaxsq = cutneighmax * cutneighmax; + // update cutneighmin based on individual neighbor list requests + + for (i = 0; i < nrequest; ++i) { + if (requests[i]->cut) cutneighmin = MIN(cutneighmin, requests[i]->cutoff + + (requests[i]->occasional ? 0.0 : skin)); + } + // Define cutoffs for multi if (style == Neighbor::MULTI) { int icollection, jcollection; diff --git a/src/region.h b/src/region.h index 19fdec31c7..8a51f404a2 100644 --- a/src/region.h +++ b/src/region.h @@ -47,7 +47,7 @@ class Region : protected Pointers { double delx, dely, delz; // vector from surface pt to particle double radius; // curvature of region at contact point int iwall; // unique id of wall for storing shear history - int varflag; // 1 if wall can be variable-controlled + int varflag = 0; // 1 if wall can be variable-controlled }; Contact *contact; // list of contacts int cmax; // max # of contacts possible with region diff --git a/src/region_plane.cpp b/src/region_plane.cpp index 11d96b8266..597f586d8a 100644 --- a/src/region_plane.cpp +++ b/src/region_plane.cpp @@ -25,9 +25,11 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : - Region(lmp, narg, arg), xstr(nullptr), ystr(nullptr), zstr(nullptr) + Region(lmp, narg, arg), xstr(nullptr), ystr(nullptr), zstr(nullptr), + nxstr(nullptr), nystr(nullptr), nzstr(nullptr) { xvar = yvar = zvar = 0.0; + nxvar = nyvar = nzvar = 0.0; options(narg - 8, &arg[8]); @@ -61,15 +63,34 @@ RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : zstyle = CONSTANT; } + int nxstyle = (utils::strmatch(arg[5], "^v_")) ? 1 : 0; + int nystyle = (utils::strmatch(arg[6], "^v_")) ? 1 : 0; + int nzstyle = (utils::strmatch(arg[7], "^v_")) ? 1 : 0; + + if (!nxstyle && !nystyle && !nzstyle) nstyle = CONSTANT; + if (nxstyle && nystyle && nzstyle) nstyle = VARIABLE; + + if (nstyle == CONSTANT) { + normal[0] = xscale * utils::numeric(FLERR, arg[5], false, lmp); + normal[1] = yscale * utils::numeric(FLERR, arg[6], false, lmp); + normal[2] = zscale * utils::numeric(FLERR, arg[7], false, lmp); + } else if (nstyle == VARIABLE) { + normal[0] = 0.0; + normal[1] = 0.0; + normal[2] = 0.0; + nxstr = utils::strdup(arg[5] + 2); + nystr = utils::strdup(arg[6] + 2); + nzstr = utils::strdup(arg[7] + 2); + varshape = 1; + } else { + error->all(FLERR, "The components of the normal vector should be either all variables or all constants"); + } + if (varshape) { variable_check(); RegPlane::shape_update(); } - normal[0] = xscale * utils::numeric(FLERR, arg[5], false, lmp); - normal[1] = yscale * utils::numeric(FLERR, arg[6], false, lmp); - normal[2] = zscale * utils::numeric(FLERR, arg[7], false, lmp); - // enforce unit normal double rsq = normal[0] * normal[0] + normal[1] * normal[1] + normal[2] * normal[2]; @@ -95,6 +116,9 @@ RegPlane::~RegPlane() delete[] xstr; delete[] ystr; delete[] zstr; + delete[] nxstr; + delete[] nystr; + delete[] nzstr; delete[] contact; } @@ -174,6 +198,20 @@ void RegPlane::shape_update() if (ystyle == VARIABLE) yp = yscale * input->variable->compute_equal(yvar); if (zstyle == VARIABLE) zp = zscale * input->variable->compute_equal(zvar); + + if (nstyle == VARIABLE) { + normal[0] = xscale * input->variable->compute_equal(nxvar); + normal[1] = yscale * input->variable->compute_equal(nyvar); + normal[2] = zscale * input->variable->compute_equal(nzvar); + + // enforce unit normal + double rsq = normal[0] * normal[0] + normal[1] * normal[1] + normal[2] * normal[2]; + + if (rsq == 0.0) error->all(FLERR, "Illegal region plane normal vector: {} {} {}", normal[0], normal[1], normal[2]); + normal[0] /= sqrt(rsq); + normal[1] /= sqrt(rsq); + normal[2] /= sqrt(rsq); + } } /* ---------------------------------------------------------------------- @@ -202,4 +240,21 @@ void RegPlane::variable_check() if (!input->variable->equalstyle(zvar)) error->all(FLERR, "Variable {} for region plane is invalid style", zstr); } + + if (nstyle == VARIABLE) { + nxvar = input->variable->find(nxstr); + if (nxvar < 0) error->all(FLERR, "Variable {} for region plane does not exist", nxstr); + if (!input->variable->equalstyle(nxvar)) + error->all(FLERR, "Variable {} for region plane is invalid style", nxstr); + + nyvar = input->variable->find(nystr); + if (nyvar < 0) error->all(FLERR, "Variable {} for region plane does not exist", nystr); + if (!input->variable->equalstyle(nyvar)) + error->all(FLERR, "Variable {} for region plane is invalid style", nystr); + + nzvar = input->variable->find(nzstr); + if (nzvar < 0) error->all(FLERR, "Variable {} for region plane does not exist", nzstr); + if (!input->variable->equalstyle(nzvar)) + error->all(FLERR, "Variable {} for region plane is invalid style", nzstr); + } } diff --git a/src/region_plane.h b/src/region_plane.h index 0988fda812..118bd88793 100644 --- a/src/region_plane.h +++ b/src/region_plane.h @@ -45,6 +45,10 @@ class RegPlane : public Region { int zstyle, zvar; char *xstr, *ystr, *zstr; + int nstyle; + int nxvar, nyvar, nzvar; + char *nxstr, *nystr, *nzstr; + void variable_check(); }; diff --git a/src/safe_pointers.h b/src/safe_pointers.h index ffc13588c5..6925d58646 100644 --- a/src/safe_pointers.h +++ b/src/safe_pointers.h @@ -17,7 +17,6 @@ // collection of smart pointers for specific purposes #include -#include namespace LAMMPS_NS { @@ -37,7 +36,7 @@ class SafeFilePtr { SafeFilePtr(FILE *_fp) : fp(_fp) {}; SafeFilePtr(const SafeFilePtr &) = delete; - SafeFilePtr(SafeFilePtr &&o) noexcept : fp(std::exchange(o.fp, nullptr)) {} + SafeFilePtr(SafeFilePtr &&o) noexcept : fp(o.fp) { o.fp = nullptr; } SafeFilePtr &operator=(const SafeFilePtr &) = delete; ~SafeFilePtr() diff --git a/src/thermo.cpp b/src/thermo.cpp index 8491dc2719..f6c7ec7c0e 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -88,7 +88,7 @@ static constexpr char YAML[] = "step temp ke pe ebond eangle edihed eimp evdwl e #define FORMAT_INT_YAML_DEFAULT "%d" static constexpr char FORMAT_MULTI_HEADER[] = - "------------ Step {:14} ----- CPU = {:12.7g} (sec) -------------"; + "------------ Step {:14} ----- CPU = {:12.7g} (sec) -------------"; enum { SCALAR, VECTOR, ARRAY }; @@ -136,7 +136,7 @@ Thermo::Thermo(LAMMPS *_lmp, int narg, char **arg) : lineflag = YAMLLINE; } else if (strcmp(style, "custom") == 0) { - if (narg == 1) error->all(FLERR, "Illegal thermo style custom command"); + if (narg == 1) error->all(FLERR, Error::ARGZERO, "Illegal thermo style custom command"); // expand args if any have wildcard character "*" @@ -159,7 +159,7 @@ Thermo::Thermo(LAMMPS *_lmp, int narg, char **arg) : } } else - error->all(FLERR, "Illegal thermo style command"); + error->all(FLERR, Error::ARGZERO, "Illegal thermo style {}", style); index_temp = index_press_scalar = index_press_vector = index_pe = -1; @@ -297,7 +297,9 @@ void Thermo::init() for (int i = 0; i < ncompute; i++) { computes[i] = modify->get_compute_by_id(id_compute[i]); - if (!computes[i]) error->all(FLERR, "Could not find thermo compute with ID {}", id_compute[i]); + if (!computes[i]) + error->all(FLERR, Error::NOLASTLINE, "Could not find thermo compute with ID {}", + id_compute[i]); } // find current ptr for each Fix ID @@ -305,17 +307,20 @@ void Thermo::init() for (int i = 0; i < nfix; i++) { fixes[i] = modify->get_fix_by_id(id_fix[i]); - if (!fixes[i]) error->all(FLERR, "Could not find thermo fix ID {}", id_fix[i]); + if (!fixes[i]) + error->all(FLERR, Error::NOLASTLINE, "Could not find thermo fix ID {}", id_fix[i]); if (output->thermo_every % fixes[i]->global_freq) - error->all(FLERR, "Thermo and fix {} not computed at compatible times", id_fix[i]); + error->all(FLERR, Error::NOLASTLINE, "Thermo and fix {} not computed at compatible times", + id_fix[i]); } // find current ptr for each Variable ID for (int i = 0; i < nvariable; i++) { variables[i] = input->variable->find(id_variable[i]); - if (variables[i] < 0) error->all(FLERR, "Could not find thermo variable {}", id_variable[i]); + if (variables[i] < 0) + error->all(FLERR, Error::NOLASTLINE, "Could not find thermo variable {}", id_variable[i]); } // set ptrs to keyword-specific Compute objects @@ -486,7 +491,7 @@ bigint Thermo::lost_check() nlocal[0] = atom->nlocal; nlocal[1] = error->get_numwarn(); MPI_Allreduce(nlocal, ntotal, 2, MPI_LMP_BIGINT, MPI_SUM, world); - if (ntotal[0] < 0) error->all(FLERR, "Too many total atoms"); + if (ntotal[0] < 0) error->all(FLERR, Error::NOLASTLINE, "Too many total atoms"); // print notification, if future warnings will be ignored bigint maxwarn = error->get_maxwarn(); @@ -494,7 +499,8 @@ bigint Thermo::lost_check() warnbefore = 1; if (comm->me == 0) error->message(FLERR, - "WARNING: Too many warnings: {} vs {}. All future warnings will be suppressed", + "WARNING: Too many warnings: {} vs {}. " + "All future warnings will be suppressed", ntotal[1], maxwarn); } error->set_allwarn(MIN(MAXSMALLINT, ntotal[1])); @@ -509,7 +515,7 @@ bigint Thermo::lost_check() // error message if (lostflag == Thermo::ERROR) - error->all(FLERR, "Lost atoms: original {} current {}" + utils::errorurl(8), atom->natoms, ntotal[0]); + error->all(FLERR, Error::NOLASTLINE, "Lost atoms: original {} current {}" + utils::errorurl(8), atom->natoms, ntotal[0]); // warning message @@ -537,16 +543,18 @@ void Thermo::modify_params(int narg, char **arg) while (iarg < narg) { if (strcmp(arg[iarg], "temp") == 0) { if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "thermo_modify temp", error); - if (index_temp < 0) error->all(FLERR, "Thermo style does not use temp"); + if (index_temp < 0) error->all(FLERR, iarg + 1, "Thermo style does not use temp"); delete[] id_compute[index_temp]; id_compute[index_temp] = utils::strdup(arg[iarg + 1]); temperature = modify->get_compute_by_id(arg[iarg + 1]); if (!temperature) - error->all(FLERR, "Could not find thermo_modify temperature compute {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Could not find thermo_modify temperature compute {}", + arg[iarg + 1]); if (temperature->tempflag == 0) - error->all(FLERR, "Thermo_modify compute {} does not compute temperature", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Thermo_modify compute {} does not compute temperature", + arg[iarg + 1]); if (temperature->igroup != 0 && comm->me == 0) error->warning(FLERR, "Temperature for thermo pressure is not for group all"); @@ -557,12 +565,16 @@ void Thermo::modify_params(int narg, char **arg) if (index_press_scalar >= 0) { pcompute = modify->get_compute_by_id(id_compute[index_press_scalar]); if (!pcompute) - error->all(FLERR, "Pressure compute {} for thermo output does not exist", + error->all(FLERR, Error::NOPOINTER, + "Pressure compute {} for thermo output does " + "not exist", id_compute[index_press_scalar]); } else if (index_press_vector >= 0) { pcompute = modify->get_compute_by_id(id_compute[index_press_vector]); if (!pcompute) - error->all(FLERR, "Pressure compute {} for thermo output does not exist", + error->all(FLERR, Error::NOPOINTER, + "Pressure compute {} for thermo output does " + "not exist", id_compute[index_press_vector]); } else pcompute = modify->get_compute_by_id("thermo_press"); @@ -594,10 +606,10 @@ void Thermo::modify_params(int narg, char **arg) iarg += 2; } else if (strcmp(arg[iarg], "triclinic/general") == 0) { - if (iarg + 2 > narg) error->all(FLERR, "Illegal thermo_modify command"); + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "thermo_modify tricinic/general", error); triclinic_general = utils::logical(FLERR, arg[iarg + 1], false, lmp); if (triclinic_general && !domain->triclinic_general) - error->all(FLERR, + error->all(FLERR, iarg, "Thermo_modify triclinic/general cannot be used " "if simulation box is not general triclinic"); iarg += 2; @@ -611,7 +623,7 @@ void Thermo::modify_params(int narg, char **arg) else if (strcmp(arg[iarg + 1], "error") == 0) lostflag = Thermo::ERROR; else - error->all(FLERR, "Unknown thermo_modify lost argument: {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Unknown thermo_modify lost argument: {}", arg[iarg + 1]); iarg += 2; } else if (strcmp(arg[iarg], "lost/bond") == 0) { @@ -623,7 +635,7 @@ void Thermo::modify_params(int narg, char **arg) else if (strcmp(arg[iarg + 1], "error") == 0) lostbond = Thermo::ERROR; else - error->all(FLERR, "Unknown thermo_modify lost/bond argument: {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Unknown thermo_modify lost/bond argument: {}", arg[iarg + 1]); iarg += 2; } else if (strcmp(arg[iarg], "warn") == 0) { @@ -663,7 +675,7 @@ void Thermo::modify_params(int narg, char **arg) else if (strcmp(arg[iarg + 1], "yaml") == 0) lineflag = YAMLLINE; else - error->all(FLERR, "Unknown thermo_modify line argument: {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Unknown thermo_modify line argument: {}", arg[iarg + 1]); iarg += 2; } else if (strcmp(arg[iarg], "colname") == 0) { @@ -686,7 +698,7 @@ void Thermo::modify_params(int narg, char **arg) } } if ((icol < 0) || (icol >= nfield_initial)) - error->all(FLERR, "Invalid thermo_modify colname argument: {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Invalid thermo_modify colname argument: {}", arg[iarg + 1]); keyword_user[icol] = arg[iarg + 2]; iarg += 3; } @@ -713,7 +725,8 @@ void Thermo::modify_params(int narg, char **arg) auto found = format_int_user.find('%'); found = format_int_user.find('d', found); if (found == std::string::npos) - error->all(FLERR, "Thermo_modify int format does not contain a d conversion character"); + error->all(FLERR, iarg + 2, + "Thermo_modify int format does not contain a d conversion character"); format_bigint_user = format_int_user.replace(found, 1, std::string(BIGINT_FORMAT).substr(1)); } else if (strcmp(arg[iarg + 1], "float") == 0) { @@ -729,7 +742,7 @@ void Thermo::modify_params(int narg, char **arg) else icol = i; if (icol < 0 || (icol >= nfield_initial)) - error->all(FLERR, "Invalid thermo_modify format argument: {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Invalid thermo_modify format argument: {}", arg[iarg + 1]); format_column_user[icol] = arg[iarg + 2]; } } else { @@ -746,13 +759,13 @@ void Thermo::modify_params(int narg, char **arg) } } if ((icol < 0) || (icol >= nfield_initial)) - error->all(FLERR, "Invalid thermo_modify format argument: {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Invalid thermo_modify format argument: {}", arg[iarg + 1]); format_column_user[icol] = arg[iarg + 2]; } iarg += 3; } else - error->all(FLERR, "Unknown thermo_modify keyword: {}", arg[iarg]); + error->all(FLERR, iarg, "Unknown thermo_modify keyword: {}", arg[iarg]); } } diff --git a/src/utils.cpp b/src/utils.cpp index 1572f18bff..74c615fd04 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -156,7 +156,7 @@ std::string utils::strcompress(const std::string &text) } // remove trailing blank - if (output.back() == ' ') output.erase(output.size() - 1, 1); + if (!output.empty() && output.back() == ' ') output.erase(output.size() - 1, 1); return output; } @@ -234,9 +234,9 @@ std::string utils::point_to_error(Input *input, int failed) // construct and append error indicator line cmdline += '\n'; cmdline += std::string(indicator, ' '); - cmdline += std::string(strlen(input->arg[failed]) + quoted, '^'); + cmdline += std::string(strlen((failed < 0) ? input->command : input->arg[failed]) + + quoted, '^'); cmdline += '\n'; - } else { cmdline += lastline; cmdline += '\n'; diff --git a/unittest/commands/test_simple_commands.cpp b/unittest/commands/test_simple_commands.cpp index e93c9183f0..66faae2f8b 100644 --- a/unittest/commands/test_simple_commands.cpp +++ b/unittest/commands/test_simple_commands.cpp @@ -415,19 +415,19 @@ TEST_F(SimpleCommandsTest, Plugin) if (!bindir) GTEST_SKIP() << "LAMMPS_PLUGIN_DIR not set"; std::string loadfmt = "plugin load {}/{}plugin.so"; ::testing::internal::CaptureStdout(); - lmp->input->one(fmt::format(loadfmt, bindir, "hello")); + lmp->input->one(fmt::format(fmt::runtime(loadfmt), bindir, "hello")); auto text = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << text; ASSERT_THAT(text, ContainsRegex(".*\n.*Loading plugin: Hello world command.*")); ::testing::internal::CaptureStdout(); - lmp->input->one(fmt::format(loadfmt, bindir, "xxx")); + lmp->input->one(fmt::format(fmt::runtime(loadfmt), bindir, "xxx")); text = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << text; ASSERT_THAT(text, ContainsRegex(".*Open of file .*xxx.* failed.*")); ::testing::internal::CaptureStdout(); - lmp->input->one(fmt::format(loadfmt, bindir, "nve2")); + lmp->input->one(fmt::format(fmt::runtime(loadfmt), bindir, "nve2")); text = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << text; ASSERT_THAT(text, ContainsRegex(".*Loading plugin: NVE2 variant fix style.*")); @@ -438,7 +438,7 @@ TEST_F(SimpleCommandsTest, Plugin) ASSERT_THAT(text, ContainsRegex(".*1: command style plugin hello\n.*2: fix style plugin nve2.*")); ::testing::internal::CaptureStdout(); - lmp->input->one(fmt::format(loadfmt, bindir, "hello")); + lmp->input->one(fmt::format(fmt::runtime(loadfmt), bindir, "hello")); text = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << text; ASSERT_THAT(text, ContainsRegex(".*Ignoring load of command style hello: " diff --git a/unittest/force-styles/tests/angle-cosine_delta.yaml b/unittest/force-styles/tests/angle-cosine_delta.yaml index ed2337e935..0ac97119e7 100644 --- a/unittest/force-styles/tests/angle-cosine_delta.yaml +++ b/unittest/force-styles/tests/angle-cosine_delta.yaml @@ -1,6 +1,7 @@ --- -lammps_version: 17 Feb 2022 -date_generated: Fri Mar 18 22:17:51 2022 +lammps_version: 4 Feb 2025 +tags: generated +date_generated: Fri Feb 21 16:17:55 2025 epsilon: 5e-13 skip_tests: numdiff prerequisites: ! | @@ -20,68 +21,68 @@ extract: ! "" natoms: 29 init_energy: 20.65098133017812 init_stress: ! |2- - 4.0957903125808471e+01 -2.2499632589286236e+01 -1.8458270536522217e+01 3.4849378298981264e+01 -4.9327943096381759e+00 -2.6124108916945294e+00 + 4.4473180621356008e+01 -4.3463840015691233e+01 -1.0093406056647736e+00 4.5637584879601796e+01 -1.3907393586961433e+01 -4.2824939510892590e-01 init_forces: ! |2 - 1 1.6023996455832325e+01 2.4226311046592137e+00 -1.8589204266697958e+01 - 2 -9.3711866901463381e-02 -7.5876216223294790e-01 -6.1013759002633705e-01 - 3 -6.0380408211033587e-01 2.6993032298913775e+01 2.7951913775716850e+01 - 4 -4.3564633502451269e+00 -1.0062417183984081e+01 2.1642186242701338e+00 - 5 -1.5386439746171822e+01 -2.3440313238754023e+01 -1.0067874149174445e+01 - 6 9.6873286040901903e+00 6.5740743013867231e-02 -2.6313308270088624e+00 - 7 -4.1923658452230708e+00 3.7873664481235689e+00 -9.2297211491112741e-01 - 8 -4.1328674241018124e+00 -1.3752082356191019e+01 9.4169257319147519e+00 - 9 -5.2849046978682424e+00 5.1551127779597277e+00 -6.0440022931290430e-02 - 10 8.5785584536205555e+00 1.9092658049053345e+01 -1.3500832217122007e+01 - 11 -8.2548956740792931e+00 -3.8384442674446007e+00 4.3703985032254611e+00 - 12 -2.2390516462227508e+00 -2.4339015686808576e+00 -5.7125783103934751e+00 - 13 7.0748633959583906e-01 1.7495942830019229e+00 8.1749690284178111e-01 - 14 5.0293855034635815e+00 -4.3347315249911471e+00 -2.2794877131015205e+00 - 15 4.2836129602031709e+00 -2.6803643297135835e+00 7.8342386854077670e+00 - 16 -1.6475295059196460e+00 4.5975354658004379e+00 4.3681254253354895e-01 - 17 1.8816655220378973e+00 -2.5626545385335930e+00 1.3828524454567255e+00 - 18 1.6064693296025290e-01 1.6787555240920624e+00 -6.8129331975320220e+00 - 19 -1.9670041679005905e+00 -2.4504879220906162e+00 2.9176882347102016e+00 - 20 1.8063572349403376e+00 7.7173239799855375e-01 3.8952449628218204e+00 - 21 2.3714039975200247e+00 2.9686059791249759e+00 -8.8717809550958702e+00 - 22 -4.2227815913112092e+00 -2.8790902397071427e+00 3.1362978814995639e+00 - 23 1.8513775937911845e+00 -8.9515739417833418e-02 5.7354830735963063e+00 - 24 -1.4568411370574479e+00 5.6628278324597936e+00 -3.3714304805753512e+00 - 25 -1.1685952378028448e+00 -3.9152363566022288e+00 6.4031275969729240e-01 - 26 2.6254363748602927e+00 -1.7475914758575648e+00 2.7311177208780588e+00 - 27 -6.3244441950917718e-01 5.1918732409438757e+00 -1.7685243510997146e+00 - 28 -1.3828773692511866e+00 -3.1042973063575481e+00 7.2112563744890223e-02 - 29 2.0153217887603638e+00 -2.0875759345863276e+00 1.6964117873548243e+00 -run_energy: 20.572797398210106 + 1 2.3703974495881418e+01 3.8584484587903516e+00 -1.5929138796293980e+01 + 2 -5.5592010971213179e-01 -4.5011497307751007e+00 -3.6194749630118039e+00 + 3 -2.8457465117799385e+00 2.6325352833001663e+01 2.5623331548006441e+01 + 4 -7.9894054979056088e+00 -1.2258360452072225e+01 6.4168233111021600e+00 + 5 -2.2204738294831444e+01 -2.3698109015673438e+01 -1.1480776479805904e+01 + 6 2.3347569650102201e+01 -4.7137825565345990e+00 -1.6078168111448818e+01 + 7 -8.0686673030183851e+00 7.1975893900877121e+00 -1.7579980765823877e+00 + 8 -3.1824458002558198e+00 -1.2503128164663320e+01 4.0602708742130751e+01 + 9 -7.7323033517797342e+00 8.0399091320421157e+00 -2.0951400051039776e-01 + 10 4.9524658729988271e+00 2.0621211528107622e+01 -3.2638235652308239e+01 + 11 -1.0127717019112277e+01 -3.1783095109070576e+00 4.4288595135259623e+00 + 12 -5.4777124732518541e+00 -5.3066394246038655e+00 -4.8409352484994574e+00 + 13 1.4412505843466221e+00 3.6458164082141984e+00 -5.3031504624386550e-02 + 14 7.6148261062259106e+00 -4.7428356370992075e+00 -3.3084707170534466e+00 + 15 6.1963584357832016e+00 -3.1286786554578465e+00 9.2319462456089330e+00 + 16 1.9503516089515505e-01 5.3411834252929946e+00 3.0732566957386886e+00 + 17 7.3317605541385511e-01 -9.9851802775000564e-01 5.3881749402587964e-01 + 18 7.8915981928254553e-02 8.2466959163160869e-01 -3.3467760833494964e+00 + 19 -9.6626846530114285e-01 -1.2037743703637904e+00 1.4332812196273430e+00 + 20 8.8735248337288830e-01 3.7910477873218174e-01 1.9134948637221534e+00 + 21 1.7083446765076102e+00 2.1385652661420855e+00 -6.3911757682915322e+00 + 22 -3.0420655692218990e+00 -2.0740786847506296e+00 2.2593694686375940e+00 + 23 1.3337208927142887e+00 -6.4486581391455855e-02 4.1318062996539382e+00 + 24 -6.5262931439741845e-01 2.5368088200155672e+00 -1.5103186662621493e+00 + 25 -5.2350217841582225e-01 -1.7539304417736190e+00 2.8684450674231776e-01 + 26 1.1761314928132407e+00 -7.8287837824194817e-01 1.2234741595198315e+00 + 27 -1.4360109768190377e-01 1.1788525179864244e+00 -4.0155629532187376e-01 + 28 -3.1399234787785879e-01 -7.0485324397341742e-01 1.6373681213693980e-02 + 29 4.5759344555976256e-01 -4.7399927401300701e-01 3.8518261410817978e-01 +run_energy: 20.563089678525095 run_stress: ! |2- - 4.0414601145881797e+01 -2.2259720000355955e+01 -1.8154881145525852e+01 3.4356097430708779e+01 -5.1760682620031364e+00 -3.0219001073831251e+00 + 4.3757504913648717e+01 -4.3136475705003690e+01 -6.2102920864502398e-01 4.4978336549538170e+01 -1.4195605982625462e+01 -9.5958875069195426e-01 run_forces: ! |2 - 1 1.5854493147994468e+01 2.5625041903632799e+00 -1.8403707584219106e+01 - 2 -1.0778147157154638e-01 -8.7954374413252623e-01 -7.1033263283976922e-01 - 3 -3.5903740231368531e-01 2.6747382244473858e+01 2.7776094765308645e+01 - 4 -4.3667455132582980e+00 -9.9043336720965058e+00 2.2554137013679947e+00 - 5 -1.5435306686274892e+01 -2.3368620551346410e+01 -1.0071205010683158e+01 - 6 9.7004722937707939e+00 2.8185574443369887e-02 -2.6469111215932326e+00 - 7 -4.2051376166149819e+00 3.8059875922956321e+00 -9.2948254913796591e-01 - 8 -4.0811558306056437e+00 -1.3725195219352738e+01 9.4305267102762365e+00 - 9 -5.3018040121457650e+00 5.1712375236873847e+00 -5.5170438746634645e-02 - 10 8.5884631851414728e+00 1.8977169595422669e+01 -1.3503733846157115e+01 - 11 -8.2489793835708181e+00 -3.8307795657532537e+00 4.3670355271621792e+00 - 12 -2.2854196014066837e+00 -2.5730964210485521e+00 -5.5327026624884477e+00 - 13 6.8857552776933151e-01 1.7099649678302227e+00 8.4476951940005041e-01 - 14 5.0388676050555423e+00 -4.1380632752237698e+00 -2.2619786920581912e+00 - 15 4.2713089863647395e+00 -2.6164691252678471e+00 7.6327855841331855e+00 - 16 -1.6264161996020632e+00 4.5902884407035716e+00 4.2906258286847709e-01 - 17 1.8756029712680284e+00 -2.5566185549983906e+00 1.3795361474068475e+00 - 18 1.5949074618033343e-01 1.6020315457790089e+00 -6.4757984092122420e+00 - 19 -1.8652368265982364e+00 -2.3286173150011749e+00 2.7801057275919980e+00 - 20 1.7057460804179030e+00 7.2658576922216600e-01 3.6956926816202440e+00 - 21 2.3015994659382928e+00 2.8609989652412211e+00 -8.6002184142674114e+00 - 22 -4.0843967543541595e+00 -2.7748751066344699e+00 3.0465239349836377e+00 - 23 1.7827972884158667e+00 -8.6123858606751036e-02 5.5536944792837737e+00 - 24 -1.4105671680157181e+00 5.4757757163248080e+00 -3.2567653472769562e+00 - 25 -1.1213719131694626e+00 -3.7848791001392499e+00 6.1939772997237075e-01 - 26 2.5319390811851807e+00 -1.6908966161855581e+00 2.6373676173045855e+00 - 27 -6.3028932344593613e-01 5.1333019072249222e+00 -1.7384473964198608e+00 - 28 -1.3620336377103808e+00 -3.0692701554272155e+00 6.6735136389115879e-02 - 29 1.9923229611563169e+00 -2.0640317517977067e+00 1.6717122600307448e+00 + 1 2.3451032879726370e+01 4.0617257197173897e+00 -1.5621894955519736e+01 + 2 -5.7421401726330101e-01 -4.6835780748393674e+00 -3.7823299076024632e+00 + 3 -2.4306027199459486e+00 2.6072519970009257e+01 2.5364241217921947e+01 + 4 -8.0249953558852880e+00 -1.2074108242088608e+01 6.5482299702187063e+00 + 5 -2.2289140460440823e+01 -2.3631032649621293e+01 -1.1494387406884398e+01 + 6 2.3354057831390289e+01 -4.7586966738793901e+00 -1.6119827865958250e+01 + 7 -8.0844064733133774e+00 7.2149529473510370e+00 -1.7660273021312418e+00 + 8 -3.1478296151921232e+00 -1.2498537099228518e+01 4.0622223121616166e+01 + 9 -7.7511017876278920e+00 8.0605427659852786e+00 -2.0241485109620189e-01 + 10 4.9915744598623162e+00 2.0482598351331305e+01 -3.2624972375682837e+01 + 11 -1.0123311005215982e+01 -3.1688924167926276e+00 4.4252676678697700e+00 + 12 -5.5513668937759473e+00 -5.4355045396603447e+00 -4.6167965020560917e+00 + 13 1.4059367926919679e+00 3.5728783709008667e+00 2.5935291038754471e-03 + 14 7.6143970879681024e+00 -4.5037794326053131e+00 -3.2831360392059907e+00 + 15 6.2058701073495151e+00 -3.0406636127154227e+00 8.9669093364259496e+00 + 16 2.2902239968198557e-01 5.3178918884056445e+00 3.0490139755759853e+00 + 17 7.2507676999013526e-01 -9.8831727226989585e-01 5.3330838740480679e-01 + 18 7.1127024594080268e-02 7.1445956198119154e-01 -2.8880230496978854e+00 + 19 -8.3188306575710236e-01 -1.0385320257838888e+00 1.2398389619370178e+00 + 20 7.6075604116302209e-01 3.2407246380269727e-01 1.6481840877608676e+00 + 21 1.6140194966539338e+00 2.0063050011497334e+00 -6.0309928490009383e+00 + 22 -2.8643056040092603e+00 -1.9459468475255317e+00 2.1363729514270524e+00 + 23 1.2502861073553264e+00 -6.0358153624201771e-02 3.8946198975738859e+00 + 24 -5.8408404963238691e-01 2.2673919964618818e+00 -1.3485518584960339e+00 + 25 -4.6437462735412272e-01 -1.5672547533259689e+00 2.5645620543256875e-01 + 26 1.0484586769865096e+00 -7.0013724313591297e-01 1.0920956530634651e+00 + 27 -1.3425430939812166e-01 1.0934202317724093e+00 -3.7029815332428351e-01 + 28 -2.9014265041938359e-01 -6.5377692091134065e-01 1.4204173363709049e-02 + 29 4.2439695981750525e-01 -4.3964331086106867e-01 3.5609397996057446e-01 ... diff --git a/unittest/force-styles/tests/bond-class2.yaml b/unittest/force-styles/tests/bond-class2.yaml index 8ee724e5e4..9c316397a6 100644 --- a/unittest/force-styles/tests/bond-class2.yaml +++ b/unittest/force-styles/tests/bond-class2.yaml @@ -1,7 +1,7 @@ --- lammps_version: 17 Feb 2022 date_generated: Fri Mar 18 22:17:50 2022 -epsilon: 4e-13 +epsilon: 5e-13 skip_tests: prerequisites: ! | atom full diff --git a/unittest/utils/test_fmtlib.cpp b/unittest/utils/test_fmtlib.cpp index b78dbc0680..ed31803f6a 100644 --- a/unittest/utils/test_fmtlib.cpp +++ b/unittest/utils/test_fmtlib.cpp @@ -24,30 +24,30 @@ using ::testing::Eq; TEST(FmtLib, insert_string) { - const char val[] = "word"; - auto text = fmt::format("word {}", val); + constexpr char val[] = "word"; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word word")); } TEST(FmtLib, insert_int) { - const int val = 333; - auto text = fmt::format("word {}", val); + constexpr int val = 333; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word 333")); } TEST(FmtLib, insert_neg_int) { - const int val = -333; - auto text = fmt::format("word {}", val); + constexpr int val = -333; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word -333")); } TEST(FmtLib, insert_bigint) { #if defined(LAMMPS_BIGBIG) || defined(LAMMPS_SMALLBIG) - const bigint val = 9945234592L; - auto text = fmt::format("word {}", val); + constexpr bigint val = 9945234592L; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word 9945234592")); #else GTEST_SKIP(); @@ -57,8 +57,8 @@ TEST(FmtLib, insert_bigint) TEST(FmtLib, insert_neg_bigint) { #if defined(LAMMPS_BIGBIG) || defined(LAMMPS_SMALLBIG) - const bigint val = -9945234592L; - auto text = fmt::format("word {}", val); + constexpr bigint val = -9945234592L; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word -9945234592")); #else GTEST_SKIP(); @@ -68,8 +68,8 @@ TEST(FmtLib, insert_neg_bigint) TEST(FmtLib, insert_tagint) { #if defined(LAMMPS_BIGBIG) - const tagint val = 9945234592L; - auto text = fmt::format("word {}", val); + constexpr tagint val = 9945234592L; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word 9945234592")); #else GTEST_SKIP(); @@ -79,8 +79,8 @@ TEST(FmtLib, insert_tagint) TEST(FmtLib, insert_neg_tagint) { #if defined(LAMMPS_BIGBIG) - const tagint val = -9945234592L; - auto text = fmt::format("word {}", val); + constexpr tagint val = -9945234592L; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word -9945234592")); #else GTEST_SKIP(); @@ -90,8 +90,8 @@ TEST(FmtLib, insert_neg_tagint) TEST(FmtLib, insert_imageint) { #if defined(LAMMPS_BIGBIG) - const imageint val = 9945234592L; - auto text = fmt::format("word {}", val); + constexpr imageint val = 9945234592L; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word 9945234592")); #else GTEST_SKIP(); @@ -101,8 +101,8 @@ TEST(FmtLib, insert_imageint) TEST(FmtLib, insert_neg_imageint) { #if defined(LAMMPS_BIGBIG) - const imageint val = -9945234592L; - auto text = fmt::format("word {}", val); + constexpr imageint val = -9945234592L; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word -9945234592")); #else GTEST_SKIP(); @@ -111,26 +111,38 @@ TEST(FmtLib, insert_neg_imageint) TEST(FmtLib, insert_double) { - const double val = 1.5; - auto text = fmt::format("word {}", val); + constexpr double val = 1.5; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word 1.5")); } TEST(FmtLib, insert_neg_double) { - const double val = -1.5; - auto text = fmt::format("word {}", val); + constexpr double val = -1.5; + auto text = fmt::format("word {}", val); ASSERT_THAT(text, Eq("word -1.5")); } TEST(FmtLib, int_for_double) { const double val = -1.5; - ASSERT_THROW(auto text = fmt::format("word {:d}", val), std::exception); + ASSERT_THROW(auto text = fmt::format(fmt::runtime("word {:d}"), val), std::exception); } TEST(FmtLib, double_for_int) { const int val = 15; - ASSERT_THROW(auto text = fmt::format("word {:g}", val), std::exception); + ASSERT_THROW(auto text = fmt::format(fmt::runtime("word {:g}"), val), std::exception); +} + +TEST(FmtLib, double_for_string) +{ + ASSERT_THROW(auto text = fmt::format(fmt::runtime("word {:g}"), "I am not a number"), + std::exception); +} + +TEST(FmtLib, int_for_string) +{ + ASSERT_THROW(auto text = fmt::format(fmt::runtime("word {:d}"), "I am not a number"), + std::exception); }