diff --git a/doc/src/Intro_citing.rst b/doc/src/Intro_citing.rst index 4346e00bc0..a74d3134f3 100644 --- a/doc/src/Intro_citing.rst +++ b/doc/src/Intro_citing.rst @@ -24,13 +24,15 @@ DOI for the LAMMPS code LAMMPS developers use the `Zenodo service at CERN `_ to create digital object identifies (DOI) for stable releases of the LAMMPS code. There are two types of DOIs for the -LAMMPS source code: 1) the canonical DOI for **all** versions of LAMMPS, -which will always point to the latest stable release version is: +LAMMPS source code: the canonical DOI for **all** versions of LAMMPS, +which will always point to the **latest** stable release version is: - `DOI: 10.5281/zenodo.3726416 `_ +- DOI: `10.5281/zenodo.3726416 `_ -In addition there are DOIs for individual stable releases starting with -the `3 March 2020 version, DOI:10.5281/zenodo.3726417 `_ +In addition there are DOIs for individual stable releases. Currently there are: + +- 3 March 2020 version: `DOI:10.5281/zenodo.3726417 `_ +- 29 October 2020 version: `DOI:10.5281/zenodo.4157471 `_ Home page diff --git a/doc/src/pair_atm.rst b/doc/src/pair_atm.rst index c0dfb64c50..0bdfecd517 100644 --- a/doc/src/pair_atm.rst +++ b/doc/src/pair_atm.rst @@ -143,7 +143,7 @@ combinations, else an error will result. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles do not support the :doc:`pair_modify ` +This pair style do not support the :doc:`pair_modify ` mix, shift, table, and tail options. This pair style writes its information to :doc:`binary restart files diff --git a/doc/src/pair_buck_long.rst b/doc/src/pair_buck_long.rst index 1883cee637..0e19873500 100644 --- a/doc/src/pair_buck_long.rst +++ b/doc/src/pair_buck_long.rst @@ -117,7 +117,7 @@ global Coulombic cutoff is allowed. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles does not support mixing. Thus, coefficients for all +This pair style does not support mixing. Thus, coefficients for all I,J pairs must be specified explicitly. This pair style supports the :doc:`pair_modify ` shift diff --git a/doc/src/pair_gayberne.rst b/doc/src/pair_gayberne.rst index 309e949f97..19597b9018 100644 --- a/doc/src/pair_gayberne.rst +++ b/doc/src/pair_gayberne.rst @@ -160,7 +160,7 @@ For atom type pairs I,J and I != J, the epsilon and sigma coefficients and cutoff distance for this pair style can be mixed. The default mix value is *geometric*\ . See the "pair_modify" command for details. -This pair styles supports the :doc:`pair_modify ` shift +This pair style supports the :doc:`pair_modify ` shift option for the energy of the Lennard-Jones portion of the pair interaction, but only for sphere-sphere interactions. There is no shifting performed for ellipsoidal interactions due to the anisotropic diff --git a/doc/src/pair_lcbop.rst b/doc/src/pair_lcbop.rst index fa2d3c0609..c44ad1f8a4 100644 --- a/doc/src/pair_lcbop.rst +++ b/doc/src/pair_lcbop.rst @@ -75,14 +75,15 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" -This pair styles is part of the MANYBODY package. It is only enabled -if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. +This pair style is part of the MANYBODY package. It is only enabled +if LAMMPS was built with that package. +See the :doc:`Build package ` doc page for more info. This pair potential requires the :doc:`newton ` setting to be "on" for pair interactions. -The C.lcbop potential file provided with LAMMPS (see the potentials -directory) is parameterized for metal :doc:`units `. You can use +The ``C.lcbop`` potential file provided with LAMMPS (see the potentials +directory) is parameterized for :doc:`metal units `. You can use the LCBOP potential with any LAMMPS units, but you would need to create your own LCBOP potential file with coefficients listed in the appropriate units if your simulation does not use "metal" units. diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst index 04be107e02..6abe037581 100644 --- a/doc/src/pair_polymorphic.rst +++ b/doc/src/pair_polymorphic.rst @@ -298,7 +298,7 @@ described above. For each of the F functions, nx values are listed. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles does not support the :doc:`pair_modify ` +This pair style does not support the :doc:`pair_modify ` shift, table, and tail options. This pair style does not write their information to :doc:`binary restart diff --git a/doc/src/pair_resquared.rst b/doc/src/pair_resquared.rst index d34588682c..0932730469 100644 --- a/doc/src/pair_resquared.rst +++ b/doc/src/pair_resquared.rst @@ -173,7 +173,7 @@ equation for the Hamaker constant presented here. Mixing of sigma and epsilon followed by calculation of the energy prefactors using the equations above is recommended. -This pair styles supports the :doc:`pair_modify ` shift +This pair style supports the :doc:`pair_modify ` shift option for the energy of the Lennard-Jones portion of the pair interaction, but only for sphere-sphere interactions. There is no shifting performed for ellipsoidal interactions due to the anisotropic diff --git a/doc/src/pair_srp.rst b/doc/src/pair_srp.rst index 620c74d515..59df8be1e2 100644 --- a/doc/src/pair_srp.rst +++ b/doc/src/pair_srp.rst @@ -124,7 +124,7 @@ at the cutoff distance :math:`r_c`. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles does not support mixing. +This pair style does not support mixing. This pair style does not support the :doc:`pair_modify ` shift option for the energy of the pair interaction. Note that as diff --git a/doc/src/read_dump.rst b/doc/src/read_dump.rst index c46c12c951..f9a8c87c86 100644 --- a/doc/src/read_dump.rst +++ b/doc/src/read_dump.rst @@ -370,6 +370,8 @@ needed to generate absolute, unscaled coordinates. Restrictions """""""""""" +The *native* dump file reader does not support binary .bin dump files. + To read gzipped dump files, you must compile LAMMPS with the -DLAMMPS_GZIP option. See the :doc:`Build settings ` doc page for details. diff --git a/doc/src/rerun.rst b/doc/src/rerun.rst index 16b036b449..7d51fba868 100644 --- a/doc/src/rerun.rst +++ b/doc/src/rerun.rst @@ -99,14 +99,15 @@ files do not match the specified output frequency. ---------- If more than one dump file is specified, the dump files are read one -after the other. It is assumed that snapshot timesteps will be in -ascending order. If a snapshot is encountered that is not in -ascending order, it will skip the snapshot until it reads one that is. +after the other in the order specified. It is assumed that snapshot +timesteps will be in ascending order. If a snapshot is encountered that +is not in ascending order, it will skip the snapshot until it reads one +that is. This allows skipping of a duplicate snapshot (same timestep), e.g. that appeared at the end of one file and beginning of the next. However if you specify a series of dump files in an incorrect order (with respect to the timesteps they contain), you may skip large -numbers of snapshots +numbers of snapshots. Note that the dump files specified as part of the *dump* keyword can be parallel files, i.e. written as multiple files either per processor @@ -118,17 +119,24 @@ and write parallel dump files. The *first*\ , *last*\ , *every*\ , *skip* keywords determine which snapshots are read from the dump file(s). Snapshots are skipped until -they have a timestamp >= *Nfirst*\ . When a snapshot with a timestamp > -*Nlast* is encountered, the rerun command finishes. Note below that +they have a timestep >= *Nfirst*\ . When a snapshot with a timestep > +*Nlast* is encountered, the rerun command finishes. Note that the defaults for *first* and *last* are to read all snapshots. If the *every* keyword is set to a value > 0, then only snapshots with -timestamps that are a multiple of *Nevery* are read (the first +timesteps that are a multiple of *Nevery* are read (the first snapshot is always read). If *Nevery* = 0, then this criterion is ignored, i.e. every snapshot is read that meets the other criteria. If the *skip* keyword is used, then after the first snapshot is read, every Nth snapshot is read, where N = *Nskip*\ . E.g. if *Nskip* = 3, then only 1 out of every 3 snapshots is read, assuming the snapshot -timestamp is also consistent with the other criteria. +timestep is also consistent with the other criteria. + +.. note:: + + Not all dump formats contain the timestep and not all dump readers + support reading it. In that case individual snapshots are assigned + consecutive timestep numbers starting at 1. + The *start* and *stop* keywords do not affect which snapshots are read from the dump file(s). Rather, they have the same meaning that they @@ -205,9 +213,8 @@ thermodynamic output or new dump file output. Restrictions """""""""""" -To read gzipped dump files, you must compile LAMMPS with the --DLAMMPS_GZIP option. See the :doc:`Build settings ` -doc page for details. +The *rerun* command is subject to all restrictions of +the :doc:`read_dump ` command. Related commands """""""""""""""" diff --git a/examples/granular/in.pour.drum b/examples/granular/in.pour.drum index 54372cd391..e0a0455f61 100644 --- a/examples/granular/in.pour.drum +++ b/examples/granular/in.pour.drum @@ -2,99 +2,98 @@ # 'turn' cylinder by changing direction of gravity, then rotate it. # This simulates a rotating drum powder characterization experiment. -variable name string rotating_drum_two_types +variable name string rotating_drum_two_types -atom_style sphere -units lj +atom_style sphere +units lj ############################################### # Geometry-related parameters ############################################### -variable boxx equal 30 -variable boxy equal 30 -variable boxz equal 50 +variable boxx equal 30 +variable boxy equal 30 +variable boxz equal 50 -variable drum_rad equal ${boxx}*0.5 -variable drum_height equal 20 +variable drum_rad equal ${boxx}*0.5 +variable drum_height equal 20 -variable xc equal 0.5*${boxx} -variable yc equal 0.5*${boxx} -variable zc equal 0.5*${boxz} +variable xc equal 0.5*${boxx} +variable yc equal 0.5*${boxx} +variable zc equal 0.5*${boxz} ############################################### # Particle-related parameters ############################################### -variable rlo equal 0.25 -variable rhi equal 0.5 -variable dlo equal 2.0*${rlo} -variable dhi equal 2.0*${rhi} +variable rlo equal 0.25 +variable rhi equal 0.5 +variable dlo equal 2.0*${rlo} +variable dhi equal 2.0*${rhi} -variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi} +variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi} -variable dens equal 1.0 +variable dens equal 1.0 variable skin equal 0.4*${rhi} ############# processors * * 1 -region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} -create_box 2 boxreg -change_box all boundary p p f -comm_modify vel yes +region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} +create_box 2 boxreg +change_box all boundary p p f -variable theta equal 0 +pair_style granular +pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji +pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji -region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1 -region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 +variable theta equal 0 -region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz} +region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1 +region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 -fix 0 all balance 100 1.0 shift xy 5 1.1 -fix 1 all nve/sphere -fix grav all gravity 10 vector 0 0 -1 -fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} -fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} +region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz} -comm_modify vel yes +fix 0 all balance 100 1.0 shift xy 5 1.1 +fix 1 all nve/sphere +fix grav all gravity 10 vector 0 0 -1 +fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} +fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} -neighbor ${skin} bin -neigh_modify delay 0 every 1 check yes +comm_modify vel yes -pair_style granular -pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji -pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji +neighbor ${skin} bin +neigh_modify delay 0 every 1 check yes -fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall -fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall +fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall +fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall -thermo_style custom step atoms ke v_theta -thermo_modify lost warn -thermo 100 +thermo_style custom step atoms ke v_theta +thermo_modify lost warn +thermo 100 -timestep 0.001 +timestep 0.001 -#dump 1 all custom 100 ${name}.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z #For removal later -compute 1 all property/atom radius -variable zmax atom z+c_1>0.5*${drum_height} -group delgroup dynamic all var zmax every 10000 +compute 1 all property/atom radius +variable zmax atom z+c_1>0.5*${drum_height} +group delgroup dynamic all var zmax every 10000 -run 2000 +run 2000 #Remove any particles that are above z > 0.5*drum_height -delete_atoms group delgroup +delete_atoms group delgroup #Add top lid -region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 -fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall +region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 +fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall # 'Turn' drum by switching the direction of gravity -unfix grav -unfix ins1 -unfix ins2 -fix grav all gravity 10 vector 0 -1 0 +unfix grav +unfix ins1 +unfix ins2 +fix grav all gravity 10 vector 0 -1 0 -variable theta equal 2*PI*elapsed/20000.0 -run 3000 +variable theta equal 2*PI*elapsed/20000.0 +run 3000 diff --git a/examples/granular/in.pour.flatwall b/examples/granular/in.pour.flatwall index cfa70e2d84..74d7c7370e 100644 --- a/examples/granular/in.pour.flatwall +++ b/examples/granular/in.pour.flatwall @@ -1,67 +1,65 @@ # pour two types of particles (cohesive and non-cohesive) on flat wall -variable name string pour_two_types +variable name string pour_two_types -atom_style sphere -units lj +atom_style sphere +units lj ############################################### # Geometry-related parameters ############################################### -variable boxx equal 20 -variable boxy equal 20 -variable boxz equal 30 +variable boxx equal 20 +variable boxy equal 20 +variable boxz equal 30 -variable xc1 equal 0.3*${boxx} -variable xc2 equal 0.7*${boxx} -variable yc equal 0.5*${boxy} +variable xc1 equal 0.3*${boxx} +variable xc2 equal 0.7*${boxx} +variable yc equal 0.5*${boxy} ############################################### # Particle-related parameters ############################################### -variable rlo equal 0.25 -variable rhi equal 0.5 -variable dlo equal 2.0*${rlo} -variable dhi equal 2.0*${rhi} +variable rlo equal 0.25 +variable rhi equal 0.5 +variable dlo equal 2.0*${rlo} +variable dhi equal 2.0*${rhi} -variable dens equal 1.0 +variable dens equal 1.0 variable skin equal 0.3*${rhi} ############# -processors * * 1 -region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} -create_box 2 boxreg -change_box all boundary p p f +processors * * 1 +region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} +create_box 2 boxreg +change_box all boundary p p f -comm_modify vel yes +pair_style granular +pair_coeff 1 * jkr 1000.0 50.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 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall -region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz} -region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz} +comm_modify vel yes -fix 1 all nve/sphere -fix grav all gravity 10.0 vector 0 0 -1 -fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens} -fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens} +region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz} +region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz} -comm_modify vel yes +fix 1 all nve/sphere +fix grav all gravity 10.0 vector 0 0 -1 +fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens} +fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens} -neighbor ${skin} bin -neigh_modify delay 0 every 1 check yes +neighbor ${skin} bin +neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * jkr 1000.0 50.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 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall +fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL -fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL +thermo_style custom step atoms ke +thermo_modify lost warn +thermo 100 -thermo_style custom step cpu atoms ke -thermo_modify lost warn -thermo 100 +timestep 0.001 -timestep 0.001 +#dump 1 all custom 100 ${name}.dump id type radius mass x y z -#dump 1 all custom 100 ${name}.dump id type radius mass x y z - -run 5000 +run 5000 diff --git a/examples/granular/log.29Mar19.pour.drum.g++.1 b/examples/granular/log.29Oct20.pour.drum.g++.1 similarity index 69% rename from examples/granular/log.29Mar19.pour.drum.g++.1 rename to examples/granular/log.29Oct20.pour.drum.g++.1 index 71232ed8dd..8c4b828488 100644 --- a/examples/granular/log.29Mar19.pour.drum.g++.1 +++ b/examples/granular/log.29Oct20.pour.drum.g++.1 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) into cylinder # 'turn' cylinder by changing direction of gravity, then rotate it. @@ -55,10 +54,14 @@ region boxreg block 0 30 0 ${boxy} 0 ${boxz} region boxreg block 0 30 0 30 0 ${boxz} region boxreg block 0 30 0 30 0 50 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (30 30 50) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (30.000000 30.000000 50.000000) 1 by 1 by 1 MPI processor grid change_box all boundary p p f -comm_modify vel yes +Changing box ... + +pair_style granular +pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji +pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji variable theta equal 0 @@ -104,10 +107,6 @@ neighbor ${skin} bin neighbor 0.2 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji -pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji - fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall @@ -117,8 +116,7 @@ thermo 100 timestep 0.001 -dump 1 all custom 100 ${name}.dump id type radius mass x y z -dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z #For removal later compute 1 all property/atom radius @@ -140,7 +138,7 @@ Neighbor list info ... pair build: half/size/bin/newton stencil: half/bin/3d/newton bin: standard -Per MPI rank memory allocation (min/avg/max) = 13.02 | 13.02 | 13.02 Mbytes +Per MPI rank memory allocation (min/avg/max) = 13.03 | 13.03 | 13.03 Mbytes Step Atoms KinEng v_theta 0 0 -0 0 100 4000 -0 0 @@ -163,32 +161,32 @@ Step Atoms KinEng v_theta 1800 4000 -0 0 1900 4000 -0 0 2000 4000 -0 0 -Loop time of 3.54461 on 1 procs for 2000 steps with 4000 atoms +Loop time of 10.5178 on 1 procs for 2000 steps with 4000 atoms -Performance: 48750.057 tau/day, 564.237 timesteps/s -99.5% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 16429.309 tau/day, 190.154 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.61949 | 0.61949 | 0.61949 | 0.0 | 17.48 -Neigh | 1.2492 | 1.2492 | 1.2492 | 0.0 | 35.24 -Comm | 0.046404 | 0.046404 | 0.046404 | 0.0 | 1.31 -Output | 0.15901 | 0.15901 | 0.15901 | 0.0 | 4.49 -Modify | 1.4165 | 1.4165 | 1.4165 | 0.0 | 39.96 -Other | | 0.05391 | | | 1.52 +Pair | 1.0701 | 1.0701 | 1.0701 | 0.0 | 10.17 +Neigh | 4.2135 | 4.2135 | 4.2135 | 0.0 | 40.06 +Comm | 0.38276 | 0.38276 | 0.38276 | 0.0 | 3.64 +Output | 0.0013647 | 0.0013647 | 0.0013647 | 0.0 | 0.01 +Modify | 4.7076 | 4.7076 | 4.7076 | 0.0 | 44.76 +Other | | 0.1424 | | | 1.35 -Nlocal: 4000 ave 4000 max 4000 min +Nlocal: 4000.00 ave 4000 max 4000 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 166 ave 166 max 166 min +Nghost: 171.000 ave 171 max 171 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 8195 ave 8195 max 8195 min +Neighs: 8093.00 ave 8093 max 8093 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 8195 -Ave neighs/atom = 2.04875 +Total # of neighbors = 8093 +Ave neighs/atom = 2.0232500 Neighbor list builds = 1004 -Dangerous builds = 3 +Dangerous builds = 4 #Remove any particles that are above z > 0.5*drum_height delete_atoms group delgroup @@ -205,67 +203,69 @@ fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindl # 'Turn' drum by switching the direction of gravity unfix grav +unfix ins1 +unfix ins2 fix grav all gravity 10 vector 0 -1 0 variable theta equal 2*PI*elapsed/20000.0 run 3000 -Per MPI rank memory allocation (min/avg/max) = 24.81 | 24.81 | 24.81 Mbytes +Per MPI rank memory allocation (min/avg/max) = 19.37 | 19.37 | 19.37 Mbytes Step Atoms KinEng v_theta - 2000 4000 64.333531 0 - 2100 4000 106.69182 0.031415927 - 2200 4000 121.8461 0.062831853 - 2300 4000 88.767952 0.09424778 - 2400 4000 82.850721 0.12566371 - 2500 4000 91.683284 0.15707963 - 2600 4000 31.56344 0.18849556 - 2700 4000 4.5697672 0.21991149 - 2800 4000 3.9879051 0.25132741 - 2900 4000 4.4394235 0.28274334 - 3000 4000 5.1212931 0.31415927 - 3100 4000 5.8608892 0.34557519 - 3200 4000 6.600714 0.37699112 - 3300 4000 7.3497851 0.40840704 - 3400 4000 8.0490988 0.43982297 - 3500 4000 8.6712396 0.4712389 - 3600 4000 9.1328667 0.50265482 - 3700 4000 9.4683561 0.53407075 - 3800 4000 9.5878145 0.56548668 - 3900 4000 9.387745 0.5969026 - 4000 4000 8.9117631 0.62831853 - 4100 4000 8.2344368 0.65973446 - 4200 4000 7.5335088 0.69115038 - 4300 4000 6.8426179 0.72256631 - 4400 4000 6.0567247 0.75398224 - 4500 4000 5.4166132 0.78539816 - 4600 4000 4.6012409 0.81681409 - 4700 4000 3.8314982 0.84823002 - 4800 4000 3.1916415 0.87964594 - 4900 4000 2.7833964 0.91106187 - 5000 4000 2.5051362 0.9424778 -Loop time of 11.9545 on 1 procs for 3000 steps with 4000 atoms + 2000 4000 65.647582 0 + 2100 4000 105.60001 0.031415927 + 2200 4000 112.27573 0.062831853 + 2300 4000 92.758671 0.09424778 + 2400 4000 88.925835 0.12566371 + 2500 4000 81.369163 0.15707963 + 2600 4000 32.046943 0.18849556 + 2700 4000 4.1926368 0.21991149 + 2800 4000 3.9933453 0.25132741 + 2900 4000 4.5062193 0.28274334 + 3000 4000 5.3409521 0.31415927 + 3100 4000 6.0165991 0.34557519 + 3200 4000 6.606767 0.37699112 + 3300 4000 7.3997751 0.40840704 + 3400 4000 8.1098807 0.43982297 + 3500 4000 8.6552424 0.4712389 + 3600 4000 9.8445204 0.50265482 + 3700 4000 10.098753 0.53407075 + 3800 4000 10.039489 0.56548668 + 3900 4000 9.6376278 0.5969026 + 4000 4000 9.2598836 0.62831853 + 4100 4000 8.7116037 0.65973446 + 4200 4000 8.1274117 0.69115038 + 4300 4000 7.1487627 0.72256631 + 4400 4000 6.2253778 0.75398224 + 4500 4000 5.3061398 0.78539816 + 4600 4000 4.4319316 0.81681409 + 4700 4000 4.205607 0.84823002 + 4800 4000 3.2112987 0.87964594 + 4900 4000 2.6449777 0.91106187 + 5000 4000 2.3475497 0.9424778 +Loop time of 32.4926 on 1 procs for 3000 steps with 4000 atoms -Performance: 21682.142 tau/day, 250.951 timesteps/s -99.7% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 7977.205 tau/day, 92.329 timesteps/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 | 4.8291 | 4.8291 | 4.8291 | 0.0 | 40.40 -Neigh | 2.7489 | 2.7489 | 2.7489 | 0.0 | 22.99 -Comm | 0.071249 | 0.071249 | 0.071249 | 0.0 | 0.60 -Output | 0.20547 | 0.20547 | 0.20547 | 0.0 | 1.72 -Modify | 4.0179 | 4.0179 | 4.0179 | 0.0 | 33.61 -Other | | 0.0819 | | | 0.69 +Pair | 8.0124 | 8.0124 | 8.0124 | 0.0 | 24.66 +Neigh | 10.993 | 10.993 | 10.993 | 0.0 | 33.83 +Comm | 0.86697 | 0.86697 | 0.86697 | 0.0 | 2.67 +Output | 0.0021827 | 0.0021827 | 0.0021827 | 0.0 | 0.01 +Modify | 12.367 | 12.367 | 12.367 | 0.0 | 38.06 +Other | | 0.2515 | | | 0.77 -Nlocal: 4000 ave 4000 max 4000 min +Nlocal: 4000.00 ave 4000 max 4000 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 322 ave 322 max 322 min +Nghost: 318.000 ave 318 max 318 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 14849 ave 14849 max 14849 min +Neighs: 14807.0 ave 14807 max 14807 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 14849 -Ave neighs/atom = 3.71225 -Neighbor list builds = 1290 -Dangerous builds = 672 -Total wall time: 0:00:15 +Total # of neighbors = 14807 +Ave neighs/atom = 3.7017500 +Neighbor list builds = 2189 +Dangerous builds = 1536 +Total wall time: 0:00:43 diff --git a/examples/granular/log.29Mar19.pour.drum.g++.4 b/examples/granular/log.29Oct20.pour.drum.g++.4 similarity index 69% rename from examples/granular/log.29Mar19.pour.drum.g++.4 rename to examples/granular/log.29Oct20.pour.drum.g++.4 index ccd4365a38..e53da50b9b 100644 --- a/examples/granular/log.29Mar19.pour.drum.g++.4 +++ b/examples/granular/log.29Oct20.pour.drum.g++.4 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) into cylinder # 'turn' cylinder by changing direction of gravity, then rotate it. @@ -55,10 +54,14 @@ region boxreg block 0 30 0 ${boxy} 0 ${boxz} region boxreg block 0 30 0 30 0 ${boxz} region boxreg block 0 30 0 30 0 50 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (30 30 50) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (30.000000 30.000000 50.000000) 2 by 2 by 1 MPI processor grid change_box all boundary p p f -comm_modify vel yes +Changing box ... + +pair_style granular +pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji +pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji variable theta equal 0 @@ -104,10 +107,6 @@ neighbor ${skin} bin neighbor 0.2 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji -pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji - fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall @@ -117,8 +116,7 @@ thermo 100 timestep 0.001 -dump 1 all custom 100 ${name}.dump id type radius mass x y z -dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z #For removal later compute 1 all property/atom radius @@ -163,32 +161,32 @@ Step Atoms KinEng v_theta 1800 4000 -0 0 1900 4000 -0 0 2000 4000 -0 0 -Loop time of 2.0709 on 4 procs for 2000 steps with 4000 atoms +Loop time of 3.86825 on 4 procs for 2000 steps with 4000 atoms -Performance: 83442.024 tau/day, 965.764 timesteps/s -97.7% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 44671.398 tau/day, 517.030 timesteps/s +96.7% 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.24679 | 0.26336 | 0.28853 | 3.0 | 12.72 -Neigh | 0.52279 | 0.5332 | 0.53858 | 0.9 | 25.75 -Comm | 0.17418 | 0.20253 | 0.23266 | 4.7 | 9.78 -Output | 0.092897 | 0.093531 | 0.09515 | 0.3 | 4.52 -Modify | 0.88151 | 0.89571 | 0.90582 | 0.9 | 43.25 -Other | | 0.08257 | | | 3.99 +Pair | 0.26114 | 0.27918 | 0.28728 | 2.0 | 7.22 +Neigh | 1.2044 | 1.2414 | 1.3105 | 3.7 | 32.09 +Comm | 0.38592 | 0.47065 | 0.51052 | 7.4 | 12.17 +Output | 0.0007236 | 0.0013456 | 0.0024846 | 1.8 | 0.03 +Modify | 1.6217 | 1.6723 | 1.7801 | 5.0 | 43.23 +Other | | 0.2034 | | | 5.26 -Nlocal: 1000 ave 1001 max 999 min +Nlocal: 1000.00 ave 1012 max 988 min Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 267.75 ave 276 max 262 min -Histogram: 1 0 1 0 1 0 0 0 0 1 -Neighs: 2031.5 ave 2091 max 1958 min -Histogram: 1 0 0 0 1 0 0 1 0 1 +Nghost: 269.250 ave 278 max 256 min +Histogram: 1 0 0 0 0 0 1 1 0 1 +Neighs: 2060.50 ave 2156 max 1921 min +Histogram: 1 0 0 1 0 0 0 0 0 2 -Total # of neighbors = 8126 -Ave neighs/atom = 2.0315 +Total # of neighbors = 8242 +Ave neighs/atom = 2.0605000 Neighbor list builds = 1004 -Dangerous builds = 3 +Dangerous builds = 4 #Remove any particles that are above z > 0.5*drum_height delete_atoms group delgroup @@ -205,67 +203,69 @@ fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindl # 'Turn' drum by switching the direction of gravity unfix grav +unfix ins1 +unfix ins2 fix grav all gravity 10 vector 0 -1 0 variable theta equal 2*PI*elapsed/20000.0 run 3000 -Per MPI rank memory allocation (min/avg/max) = 21.6 | 22.6 | 23.82 Mbytes +Per MPI rank memory allocation (min/avg/max) = 18.55 | 18.55 | 18.55 Mbytes Step Atoms KinEng v_theta - 2000 4000 64.255821 0 - 2100 4000 106.47082 0.031415927 - 2200 4000 121.52634 0.062831853 - 2300 4000 87.748818 0.09424778 - 2400 4000 82.712784 0.12566371 - 2500 4000 90.618713 0.15707963 - 2600 4000 30.096031 0.18849556 - 2700 4000 4.0838611 0.21991149 - 2800 4000 3.7485959 0.25132741 - 2900 4000 4.2159774 0.28274334 - 3000 4000 4.8730048 0.31415927 - 3100 4000 5.6109465 0.34557519 - 3200 4000 6.4290528 0.37699112 - 3300 4000 7.2699677 0.40840704 - 3400 4000 8.0895944 0.43982297 - 3500 4000 8.7222781 0.4712389 - 3600 4000 9.133205 0.50265482 - 3700 4000 9.3404584 0.53407075 - 3800 4000 9.3359844 0.56548668 - 3900 4000 9.0916854 0.5969026 - 4000 4000 8.5596424 0.62831853 - 4100 4000 7.9734883 0.65973446 - 4200 4000 7.2154383 0.69115038 - 4300 4000 6.7039232 0.72256631 - 4400 4000 6.1542738 0.75398224 - 4500 4000 5.4049454 0.78539816 - 4600 4000 4.4603192 0.81681409 - 4700 4000 3.6197985 0.84823002 - 4800 4000 2.9895571 0.87964594 - 4900 4000 2.5314553 0.91106187 - 5000 4000 2.2645533 0.9424778 -Loop time of 6.64209 on 4 procs for 3000 steps with 4000 atoms + 2000 4000 65.819213 0 + 2100 4000 105.02389 0.031415927 + 2200 4000 112.02469 0.062831853 + 2300 4000 92.271262 0.09424778 + 2400 4000 89.369506 0.12566371 + 2500 4000 80.910925 0.15707963 + 2600 4000 31.620722 0.18849556 + 2700 4000 4.3019937 0.21991149 + 2800 4000 3.9913967 0.25132741 + 2900 4000 4.5203726 0.28274334 + 3000 4000 5.484886 0.31415927 + 3100 4000 6.1085958 0.34557519 + 3200 4000 6.7085635 0.37699112 + 3300 4000 7.4787777 0.40840704 + 3400 4000 8.2116413 0.43982297 + 3500 4000 8.7979302 0.4712389 + 3600 4000 9.871649 0.50265482 + 3700 4000 10.012426 0.53407075 + 3800 4000 9.9067754 0.56548668 + 3900 4000 9.725458 0.5969026 + 4000 4000 9.3350056 0.62831853 + 4100 4000 8.8337295 0.65973446 + 4200 4000 8.2712493 0.69115038 + 4300 4000 6.9609934 0.72256631 + 4400 4000 6.0120294 0.75398224 + 4500 4000 5.0490036 0.78539816 + 4600 4000 4.2796544 0.81681409 + 4700 4000 4.1736483 0.84823002 + 4800 4000 3.0860106 0.87964594 + 4900 4000 2.6670909 0.91106187 + 5000 4000 2.2901814 0.9424778 +Loop time of 10.7627 on 4 procs for 3000 steps with 4000 atoms -Performance: 39023.861 tau/day, 451.665 timesteps/s -96.6% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 24083.252 tau/day, 278.741 timesteps/s +97.9% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 1.8376 | 2.126 | 2.3131 | 12.6 | 32.01 -Neigh | 0.97762 | 1.0518 | 1.1337 | 5.4 | 15.84 -Comm | 0.53699 | 0.84265 | 1.2325 | 27.6 | 12.69 -Output | 0.13922 | 0.14159 | 0.14388 | 0.4 | 2.13 -Modify | 1.8815 | 2.1026 | 2.3368 | 11.2 | 31.66 -Other | | 0.3774 | | | 5.68 +Pair | 1.6731 | 2.0701 | 2.3327 | 18.9 | 19.23 +Neigh | 2.7389 | 3.1706 | 3.5146 | 15.7 | 29.46 +Comm | 0.93507 | 1.5441 | 2.1182 | 39.1 | 14.35 +Output | 0.0021682 | 0.0044412 | 0.006026 | 2.2 | 0.04 +Modify | 3.0031 | 3.4223 | 3.9262 | 18.3 | 31.80 +Other | | 0.5511 | | | 5.12 -Nlocal: 1000 ave 1256 max 744 min +Nlocal: 1000.00 ave 1277 max 723 min Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 579.5 ave 789 max 498 min -Histogram: 2 1 0 0 0 0 0 0 0 1 -Neighs: 3696.25 ave 4853 max 2590 min -Histogram: 2 0 0 0 0 0 0 0 1 1 +Nghost: 569.750 ave 809 max 454 min +Histogram: 1 2 0 0 0 0 0 0 0 1 +Neighs: 3690.50 ave 4937 max 2426 min +Histogram: 1 1 0 0 0 0 0 0 0 2 -Total # of neighbors = 14785 -Ave neighs/atom = 3.69625 -Neighbor list builds = 1230 -Dangerous builds = 676 -Total wall time: 0:00:08 +Total # of neighbors = 14762 +Ave neighs/atom = 3.6905000 +Neighbor list builds = 2187 +Dangerous builds = 1610 +Total wall time: 0:00:14 diff --git a/examples/granular/log.29Mar19.pour.flatwall.g++.1 b/examples/granular/log.29Oct20.pour.flatwall.g++.1 similarity index 56% rename from examples/granular/log.29Mar19.pour.flatwall.g++.1 rename to examples/granular/log.29Oct20.pour.flatwall.g++.1 index daab5efce3..00fc8e31a1 100644 --- a/examples/granular/log.29Mar19.pour.flatwall.g++.1 +++ b/examples/granular/log.29Oct20.pour.flatwall.g++.1 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) on flat wall @@ -45,9 +44,14 @@ region boxreg block 0 20 0 ${boxy} 0 ${boxz} region boxreg block 0 20 0 20 0 ${boxz} region boxreg block 0 20 0 20 0 30 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (20 20 30) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (20.000000 20.000000 30.000000) 1 by 1 by 1 MPI processor grid change_box all boundary p p f +Changing box ... + +pair_style granular +pair_coeff 1 * jkr 1000.0 50.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 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall comm_modify vel yes @@ -75,19 +79,13 @@ fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens} fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1 Particle insertion: 562 every 346 steps, 1500 by step 693 -comm_modify vel yes - neighbor ${skin} bin neighbor 0.15 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * jkr 1000.0 50.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 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall - fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL -thermo_style custom step cpu atoms ke +thermo_style custom step atoms ke thermo_modify lost warn thermo 100 @@ -109,26 +107,82 @@ Neighbor list info ... stencil: half/bin/3d/newton bin: standard Per MPI rank memory allocation (min/avg/max) = 12.22 | 12.22 | 12.22 Mbytes -Step CPU Atoms KinEng - 0 0 0 -0 - 100 3.8153191 855 -0 - 200 4.195287 855 -0 - 300 4.5890362 855 -0 - 400 10.636087 1500 -0 - 500 11.306909 1500 -0 - 600 11.968198 1500 -0 - 700 22.631892 2288 -0 - 800 23.711387 2288 -0 - 900 24.754344 2288 -0 - 1000 25.811778 2288 -0 - 1100 35.368869 2845 -0 - 1200 37.149843 2845 -0 - 1300 39.026458 2845 -0 - 1400 41.757583 3000 -0 - 1500 45.155503 3000 -0 - 1600 48.570241 3000 -0 - 1700 52.839322 3000 -0 - 1800 59.772697 3000 -0 - 1900 69.493305 3000 -0 - 2000 114.61886 3000 -0 - 2100 152.89232 3000 -0 +Step Atoms KinEng + 0 0 -0 + 100 926 -0 + 200 926 -0 + 300 926 -0 + 400 1498 -0 + 500 1498 -0 + 600 1498 -0 + 700 2275 -0 + 800 2275 -0 + 900 2275 -0 + 1000 2275 -0 + 1100 2954 -0 + 1200 2954 -0 + 1300 2954 -0 + 1400 3000 -0 + 1500 3000 -0 + 1600 3000 -0 + 1700 3000 -0 + 1800 3000 -0 + 1900 3000 -0 + 2000 3000 -0 + 2100 3000 -0 + 2200 3000 -0 + 2300 3000 -0 + 2400 3000 -0 + 2500 3000 -0 + 2600 3000 -0 + 2700 3000 -0 + 2800 3000 -0 + 2900 3000 -0 + 3000 3000 -0 + 3100 3000 -0 + 3200 3000 -0 + 3300 3000 -0 + 3400 3000 -0 + 3500 3000 -0 + 3600 3000 -0 + 3700 3000 -0 + 3800 3000 -0 + 3900 3000 -0 + 4000 3000 -0 + 4100 3000 -0 + 4200 3000 -0 + 4300 3000 -0 + 4400 3000 -0 + 4500 3000 -0 + 4600 3000 -0 + 4700 3000 -0 + 4800 3000 -0 + 4900 3000 -0 + 5000 3000 -0 +Loop time of 24.3889 on 1 procs for 5000 steps with 3000 atoms + +Performance: 17713.003 tau/day, 205.012 timesteps/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 | 14.362 | 14.362 | 14.362 | 0.0 | 58.89 +Neigh | 3.3483 | 3.3483 | 3.3483 | 0.0 | 13.73 +Comm | 0.42893 | 0.42893 | 0.42893 | 0.0 | 1.76 +Output | 0.0025065 | 0.0025065 | 0.0025065 | 0.0 | 0.01 +Modify | 6.059 | 6.059 | 6.059 | 0.0 | 24.84 +Other | | 0.1876 | | | 0.77 + +Nlocal: 3000.00 ave 3000 max 3000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 462.000 ave 462 max 462 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 17694.0 ave 17694 max 17694 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 17694 +Ave neighs/atom = 5.8980000 +Neighbor list builds = 1133 +Dangerous builds = 0 +Total wall time: 0:00:24 diff --git a/examples/granular/log.29Mar19.pour.flatwall.g++.4 b/examples/granular/log.29Oct20.pour.flatwall.g++.4 similarity index 52% rename from examples/granular/log.29Mar19.pour.flatwall.g++.4 rename to examples/granular/log.29Oct20.pour.flatwall.g++.4 index 62a8b96c05..1688e52b43 100644 --- a/examples/granular/log.29Mar19.pour.flatwall.g++.4 +++ b/examples/granular/log.29Oct20.pour.flatwall.g++.4 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) on flat wall @@ -45,9 +44,14 @@ region boxreg block 0 20 0 ${boxy} 0 ${boxz} region boxreg block 0 20 0 20 0 ${boxz} region boxreg block 0 20 0 20 0 30 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (20 20 30) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (20.000000 20.000000 30.000000) 2 by 2 by 1 MPI processor grid change_box all boundary p p f +Changing box ... + +pair_style granular +pair_coeff 1 * jkr 1000.0 50.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 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall comm_modify vel yes @@ -75,26 +79,19 @@ fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens} fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1 Particle insertion: 562 every 346 steps, 1500 by step 693 -comm_modify vel yes - neighbor ${skin} bin neighbor 0.15 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * jkr 1000.0 50.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 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall - fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL -thermo_style custom step cpu atoms ke +thermo_style custom step atoms ke thermo_modify lost warn thermo 100 timestep 0.001 -dump 1 all custom 100 ${name}.dump id type radius mass x y z -dump 1 all custom 100 pour_two_types.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z run 5000 Neighbor list info ... @@ -110,82 +107,82 @@ Neighbor list info ... stencil: half/bin/3d/newton bin: standard Per MPI rank memory allocation (min/avg/max) = 11.98 | 11.98 | 11.98 Mbytes -Step CPU Atoms KinEng - 0 0 0 -0 - 100 0.11584234 855 -0 - 200 0.12743592 855 -0 - 300 0.13925815 855 -0 - 400 0.35203671 1500 -0 - 500 0.37055922 1500 -0 - 600 0.38671875 1500 -0 - 700 0.71736908 2288 -0 - 800 0.74506783 2288 -0 - 900 0.77112222 2288 -0 - 1000 0.79632139 2288 -0 - 1100 1.0384252 2845 -0 - 1200 1.08093 2845 -0 - 1300 1.1224561 2845 -0 - 1400 1.1811485 3000 -0 - 1500 1.2414908 3000 -0 - 1600 1.3105879 3000 -0 - 1700 1.390928 3000 -0 - 1800 1.4869275 3000 -0 - 1900 1.5958266 3000 -0 - 2000 1.7172487 3000 -0 - 2100 1.851155 3000 -0 - 2200 1.9957182 3000 -0 - 2300 2.1593764 3000 -0 - 2400 2.3433132 3000 -0 - 2500 2.532742 3000 -0 - 2600 2.7376895 3000 -0 - 2700 2.9463468 3000 -0 - 2800 3.1645725 3000 -0 - 2900 3.3879526 3000 -0 - 3000 3.6152103 3000 -0 - 3100 3.8467371 3000 -0 - 3200 4.0787683 3000 -0 - 3300 4.3097105 3000 -0 - 3400 4.5423617 3000 -0 - 3500 4.7773693 3000 -0 - 3600 5.0127218 3000 -0 - 3700 5.2519271 3000 -0 - 3800 5.4951298 3000 -0 - 3900 5.7210469 3000 -0 - 4000 5.9432652 3000 -0 - 4100 6.1687591 3000 -0 - 4200 6.3942792 3000 -0 - 4300 6.6331475 3000 -0 - 4400 6.8632154 3000 -0 - 4500 7.0979366 3000 -0 - 4600 7.3305347 3000 -0 - 4700 7.5670528 3000 -0 - 4800 7.8086057 3000 -0 - 4900 8.0407174 3000 -0 - 5000 8.2765219 3000 -0 -Loop time of 8.27669 on 4 procs for 5000 steps with 3000 atoms +Step Atoms KinEng + 0 0 -0 + 100 926 -0 + 200 926 -0 + 300 926 -0 + 400 1498 -0 + 500 1498 -0 + 600 1498 -0 + 700 2275 -0 + 800 2275 -0 + 900 2275 -0 + 1000 2275 -0 + 1100 2954 -0 + 1200 2954 -0 + 1300 2954 -0 + 1400 3000 -0 + 1500 3000 -0 + 1600 3000 -0 + 1700 3000 -0 + 1800 3000 -0 + 1900 3000 -0 + 2000 3000 -0 + 2100 3000 -0 + 2200 3000 -0 + 2300 3000 -0 + 2400 3000 -0 + 2500 3000 -0 + 2600 3000 -0 + 2700 3000 -0 + 2800 3000 -0 + 2900 3000 -0 + 3000 3000 -0 + 3100 3000 -0 + 3200 3000 -0 + 3300 3000 -0 + 3400 3000 -0 + 3500 3000 -0 + 3600 3000 -0 + 3700 3000 -0 + 3800 3000 -0 + 3900 3000 -0 + 4000 3000 -0 + 4100 3000 -0 + 4200 3000 -0 + 4300 3000 -0 + 4400 3000 -0 + 4500 3000 -0 + 4600 3000 -0 + 4700 3000 -0 + 4800 3000 -0 + 4900 3000 -0 + 5000 3000 -0 +Loop time of 12.1982 on 4 procs for 5000 steps with 3000 atoms -Performance: 52194.788 tau/day, 604.106 timesteps/s -97.7% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 35414.923 tau/day, 409.895 timesteps/s +97.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 | 1.6106 | 3.4073 | 5.4191 | 95.7 | 41.17 -Neigh | 0.51456 | 0.64572 | 0.81542 | 16.6 | 7.80 -Comm | 0.2808 | 2.5222 | 4.4998 | 121.9 | 30.47 -Output | 0.15695 | 0.15919 | 0.16502 | 0.8 | 1.92 -Modify | 1.3517 | 1.4192 | 1.4904 | 4.9 | 17.15 -Other | | 0.123 | | | 1.49 +Pair | 1.7141 | 3.8131 | 6.2143 | 107.3 | 31.26 +Neigh | 0.77648 | 0.96585 | 1.1892 | 18.3 | 7.92 +Comm | 0.7427 | 3.5566 | 5.9731 | 128.4 | 29.16 +Output | 0.0067544 | 0.0086352 | 0.011408 | 1.8 | 0.07 +Modify | 3.3476 | 3.5826 | 3.8235 | 11.5 | 29.37 +Other | | 0.2715 | | | 2.23 -Nlocal: 750 ave 1036 max 482 min -Histogram: 2 0 0 0 0 0 0 0 1 1 -Nghost: 429.75 ave 475 max 386 min +Nlocal: 750.000 ave 1033 max 463 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 435.000 ave 492 max 378 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 4434.50 ave 7028 max 1967 min Histogram: 2 0 0 0 0 0 0 0 0 2 -Neighs: 4051.75 ave 6274 max 2057 min -Histogram: 2 0 0 0 0 0 0 0 1 1 -Total # of neighbors = 16207 -Ave neighs/atom = 5.40233 -Neighbor list builds = 1165 +Total # of neighbors = 17738 +Ave neighs/atom = 5.9126667 +Neighbor list builds = 1139 Dangerous builds = 0 -Total wall time: 0:00:08 +Total wall time: 0:00:12 diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 270234821c..1d2c7c3627 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -1102,15 +1102,8 @@ void PairGranular::init_style() // this is so its order in the fix list is preserved if (use_history && fix_history == nullptr) { - char dnumstr[16]; - sprintf(dnumstr,"%d",size_history); - char **fixarg = new char*[4]; - fixarg[0] = (char *) "NEIGH_HISTORY_GRANULAR"; - fixarg[1] = (char *) "all"; - fixarg[2] = (char *) "NEIGH_HISTORY"; - fixarg[3] = dnumstr; - modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY",4,fixarg,1); - delete [] fixarg; + modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY","NEIGH_HISTORY_GRANULAR" + " all NEIGH_HISTORY " + std::to_string(size_history),1); int ifix = modify->find_fix("NEIGH_HISTORY_GRANULAR"); fix_history = (FixNeighHistory *) modify->fix[ifix]; fix_history->pair = this; @@ -1405,11 +1398,15 @@ double PairGranular::single(int i, int j, int itype, int jtype, int *jlist; double *history,*allhistory; + int nall = atom->nlocal + atom->nghost; + if ((i >= nall) || (j >= nall)) + error->all(FLERR,"Not enough atoms for pair granular single function"); + double *radius = atom->radius; radi = radius[i]; radj = radius[j]; radsum = radi + radj; - Reff = radi*radj/radsum; + Reff = (radsum > 0.0) ? radi*radj/radsum : 0.0; bool touchflag; E = normal_coeffs[itype][jtype][0]; @@ -1536,6 +1533,8 @@ double PairGranular::single(int i, int j, int itype, int jtype, jlist = list->firstneigh[i]; if (use_history) { + if ((fix_history == nullptr) || (fix_history->firstvalue == nullptr)) + error->one(FLERR,"Pair granular single computation needs history"); allhistory = fix_history->firstvalue[i]; for (int jj = 0; jj < jnum; jj++) { neighprev++; diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 68c44b3e26..9ce28438d3 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -2710,11 +2710,15 @@ double FixRigid::compute_scalar() void *FixRigid::extract(const char *str, int &dim) { + dim = 0; + if (strcmp(str,"body") == 0) { + if (!setupflag) return nullptr; dim = 1; return body; } if (strcmp(str,"masstotal") == 0) { + if (!setupflag) return nullptr; dim = 1; return masstotal; } diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index e867e5bb68..1b022f35c4 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -3424,7 +3424,10 @@ int FixRigidSmall::modify_param(int narg, char **arg) void *FixRigidSmall::extract(const char *str, int &dim) { + dim = 0; + if (strcmp(str,"body") == 0) { + if (!setupflag) return nullptr; dim = 1; return atom2body; } @@ -3438,6 +3441,7 @@ void *FixRigidSmall::extract(const char *str, int &dim) // used by granular pair styles, indexed by atom2body if (strcmp(str,"masstotal") == 0) { + if (!setupflag) return nullptr; dim = 1; if (nmax_mass < nmax_body) { diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 3bdeff67af..b4cb4616a7 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -533,8 +533,7 @@ void AtomVecEllipsoid::write_data_bonus(FILE *fp, int n, double *buf, int /*flag this may create or delete entry in bonus data ------------------------------------------------------------------------- */ -void AtomVecEllipsoid:: -set_shape(int i, double shapex, double shapey, double shapez) +void AtomVecEllipsoid::set_shape(int i, double shapex, double shapey, double shapez) { if (ellipsoid[i] < 0) { if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return; diff --git a/src/domain.cpp b/src/domain.cpp index b0a32ce114..1becba5e0b 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -1873,6 +1873,7 @@ void Domain::set_boundary(int narg, char **arg, int flag) else zperiodic = 0; // record if we changed a periodic boundary to a non-periodic one + int pflag=0; if ((periodicity[0] && !xperiodic) || (periodicity[1] && !yperiodic) @@ -1889,23 +1890,27 @@ void Domain::set_boundary(int narg, char **arg, int flag) boundary[1][0] >= 2 || boundary[1][1] >= 2 || boundary[2][0] >= 2 || boundary[2][1] >= 2) nonperiodic = 2; } + + // force non-zero image flags to zero for non-periodic dimensions + // keep track if a change was made, so we can print a warning message + if (pflag) { pflag = 0; for (int i=0; i < atom->nlocal; ++i) { int xbox = (atom->image[i] & IMGMASK) - IMGMAX; int ybox = (atom->image[i] >> IMGBITS & IMGMASK) - IMGMAX; int zbox = (atom->image[i] >> IMG2BITS) - IMGMAX; - if (!xperiodic) { xbox = 0; pflag = 1; } - if (!yperiodic) { ybox = 0; pflag = 1; } - if (!zperiodic) { zbox = 0; pflag = 1; } + if ((!xperiodic) && (xbox != 0)) { xbox = 0; pflag = 1; } + if ((!yperiodic) && (ybox != 0)) { ybox = 0; pflag = 1; } + if ((!zperiodic) && (zbox != 0)) { zbox = 0; pflag = 1; } atom->image[i] = ((imageint) (xbox + IMGMAX) & IMGMASK) | (((imageint) (ybox + IMGMAX) & IMGMASK) << IMGBITS) | (((imageint) (zbox + IMGMAX) & IMGMASK) << IMG2BITS); } int flag_all; - MPI_Allreduce(&flag,&flag_all, 1, MPI_INT, MPI_SUM, world); + MPI_Allreduce(&pflag,&flag_all, 1, MPI_INT, MPI_SUM, world); if ((flag_all > 0) && (comm->me == 0)) - error->warning(FLERR,"Reset image flags for non-periodic boundary"); + error->warning(FLERR,"Resetting image flags for non-periodic dimensions"); } } diff --git a/src/modify.cpp b/src/modify.cpp index a88d6d54cc..2d0c23d125 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -998,6 +998,23 @@ void Modify::replace_fix(const char *replaceID, add_fix(narg,arg,trysuffix); } +/* ---------------------------------------------------------------------- + convenience function to allow replacing a fix from a single string +------------------------------------------------------------------------- */ + +void Modify::replace_fix(const std::string &oldfix, + const std::string &fixcmd, int trysuffix) +{ + auto args = utils::split_words(fixcmd); + char **newarg = new char*[args.size()]; + int i=0; + for (const auto &arg : args) { + newarg[i++] = (char *)arg.c_str(); + } + replace_fix(oldfix.c_str(),args.size(),newarg,trysuffix); + delete[] newarg; +} + /* ---------------------------------------------------------------------- one instance per fix in style_fix.h ------------------------------------------------------------------------- */ diff --git a/src/modify.h b/src/modify.h index ee14baf638..a347e8486d 100644 --- a/src/modify.h +++ b/src/modify.h @@ -101,6 +101,7 @@ class Modify : protected Pointers { void add_fix(int, char **, int trysuffix=1); void add_fix(const std::string &, int trysuffix=1); void replace_fix(const char *, int, char **, int trysuffix=1); + void replace_fix(const std::string &, const std::string &, int trysuffix=1); void modify_fix(int, char **); void delete_fix(const std::string &); void delete_fix(int); diff --git a/src/utils.cpp b/src/utils.cpp index 5ae76ed00d..8bd36a8065 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -862,6 +862,7 @@ std::string utils::get_potential_date(const std::string &path, const std::string reader.ignore_comments = false; char *line = reader.next_line(); + if (line == nullptr) return ""; Tokenizer words(line); while (words.has_next()) { if (words.next() == "DATE:") { @@ -881,6 +882,7 @@ std::string utils::get_potential_units(const std::string &path, const std::strin reader.ignore_comments = false; char *line = reader.next_line(); + if (line == nullptr) return ""; Tokenizer words(line); while (words.has_next()) { if (words.next() == "UNITS:") {