Merge branch 'master' into user-cgdna
This commit is contained in:
36
.github/CODEOWNERS
vendored
36
.github/CODEOWNERS
vendored
@ -9,13 +9,37 @@ lib/kokkos/* @stanmoore1
|
|||||||
lib/molfile/* @akohlmey
|
lib/molfile/* @akohlmey
|
||||||
lib/qmmm/* @akohlmey
|
lib/qmmm/* @akohlmey
|
||||||
lib/vtk/* @rbberger
|
lib/vtk/* @rbberger
|
||||||
|
lib/kim/* @ellio167
|
||||||
|
|
||||||
# packages
|
# whole packages
|
||||||
src/KOKKOS @stanmoore1
|
src/COMPRESS/* @akohlmey
|
||||||
src/USER-CGSDK @akohlmey
|
src/GPU/* @ndtrung81
|
||||||
src/USER-COLVARS @giacomofiorin
|
src/KOKKOS/* @stanmoore1
|
||||||
src/USER-OMP @akohlmey
|
src/KIM/* @ellio167
|
||||||
src/USER-QMMM @akohlmey
|
src/USER-CGDNA/* @ohenrich
|
||||||
|
src/USER-CGSDK/* @akohlmey
|
||||||
|
src/USER-COLVARS/* @giacomofiorin
|
||||||
|
src/USER-DPD/* @timattox
|
||||||
|
src/USER-INTEL/* @wmbrownintel
|
||||||
|
src/USER-MANIFOLD/* @Pakketeretet2
|
||||||
|
src/USER-MEAMC/* @martok
|
||||||
|
src/USER-MOFFF/* @hheenen
|
||||||
|
src/USER-MOLFILE/* @akohlmey
|
||||||
|
src/USER-NETCDF/* @pastewka
|
||||||
|
src/USER-PHONON/* @lingtikong
|
||||||
|
src/USER-OMP/* @akohlmey
|
||||||
|
src/USER-QMMM/* @akohlmey
|
||||||
|
src/USER-REAXC/* @hasanmetin
|
||||||
|
src/USER-TALLY/* @akohlmey
|
||||||
|
src/USER-UEF/* @danicholson
|
||||||
|
src/USER-VTK/* @rbberger
|
||||||
|
|
||||||
|
# individual files in packages
|
||||||
|
src/GPU/pair_vashishta_gpu.* @andeplane
|
||||||
|
src/KOKKOS/pair_vashishta_kokkos.* @andeplane
|
||||||
|
src/MANYBODY/pair_vashishta_table.* @andeplane
|
||||||
|
src/USER-MISC/fix_bond_react.* @jrgissing
|
||||||
|
src/USER-MISC/*_grem.* @dstelter92
|
||||||
|
|
||||||
# tools
|
# tools
|
||||||
tools/msi2lmp/* @akohlmey
|
tools/msi2lmp/* @akohlmey
|
||||||
|
|||||||
@ -101,7 +101,7 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GRANU
|
|||||||
KSPACE MANYBODY MC MEAM MISC MOLECULE PERI QEQ
|
KSPACE MANYBODY MC MEAM MISC MOLECULE PERI QEQ
|
||||||
REAX REPLICA RIGID SHOCK SNAP SRD)
|
REAX REPLICA RIGID SHOCK SNAP SRD)
|
||||||
set(OTHER_PACKAGES KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE
|
set(OTHER_PACKAGES KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE
|
||||||
USER-ATC USER-AWPMD USER-CGDNA USER-MESO
|
USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESO
|
||||||
USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF
|
USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF
|
||||||
USER-FEP USER-H5MD USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC
|
USER-FEP USER-H5MD USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC
|
||||||
USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-QTB USER-REAXC USER-SMD
|
USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-QTB USER-REAXC USER-SMD
|
||||||
|
|||||||
@ -122,6 +122,7 @@ Package, Description, Doc page, Example, Library
|
|||||||
Package, Description, Doc page, Example, Library
|
Package, Description, Doc page, Example, Library
|
||||||
"USER-ATC"_#USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
|
"USER-ATC"_#USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
|
||||||
"USER-AWPMD"_#USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
|
"USER-AWPMD"_#USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
|
||||||
|
"USER-BOCS"_#USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, -
|
||||||
"USER-CGDNA"_#USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
|
"USER-CGDNA"_#USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
|
||||||
"USER-CGSDK"_#USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
|
"USER-CGSDK"_#USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
|
||||||
"USER-COLVARS"_#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
|
"USER-COLVARS"_#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
|
||||||
@ -1625,6 +1626,43 @@ examples/USER/awpmd :ul
|
|||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
|
USER-BOCS package :link(USER-BOCS),h4
|
||||||
|
|
||||||
|
[Contents:]
|
||||||
|
|
||||||
|
This package provides "fix bocs"_fix_bocs.html, a modified version
|
||||||
|
of "fix npt"_fix_nh.html which includes the pressure correction to
|
||||||
|
the barostat as outlined in:
|
||||||
|
|
||||||
|
N. J. H. Dunn and W. G. Noid, "Bottom-up coarse-grained models that
|
||||||
|
accurately describe the structure, pressure, and compressibility of
|
||||||
|
molecular liquids," J. Chem. Phys. 143, 243148 (2015).
|
||||||
|
|
||||||
|
[Authors:] Nicholas J. H. Dunn and Michael R. DeLyser (The Pennsylvania State University)
|
||||||
|
|
||||||
|
[Install or un-install:]
|
||||||
|
|
||||||
|
make yes-user-bocs
|
||||||
|
make machine :pre
|
||||||
|
|
||||||
|
make no-user-bocs
|
||||||
|
make machine :pre
|
||||||
|
|
||||||
|
[Supporting info:]
|
||||||
|
|
||||||
|
The USER-BOCS user package for LAMMPS is part of the BOCS software package:
|
||||||
|
"https://github.com/noid-group/BOCS"_https://github.com/noid-group/BOCS
|
||||||
|
|
||||||
|
See the following reference for information about the entire package:
|
||||||
|
|
||||||
|
Dunn, NJH; Lebold, KM; DeLyser, MR; Rudzinski, JF; Noid, WG.
|
||||||
|
"BOCS: Bottom-Up Open-Source Coarse-Graining Software."
|
||||||
|
J. Phys. Chem. B. 122, 13, 3363-3377 (2018).
|
||||||
|
|
||||||
|
Example inputs are in the examples/USER/bocs folder.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
USER-CGDNA package :link(USER-CGDNA),h4
|
USER-CGDNA package :link(USER-CGDNA),h4
|
||||||
|
|
||||||
[Contents:]
|
[Contents:]
|
||||||
|
|||||||
@ -10,19 +10,29 @@ compute ackland/atom command :h3
|
|||||||
|
|
||||||
[Syntax:]
|
[Syntax:]
|
||||||
|
|
||||||
compute ID group-ID ackland/atom :pre
|
compute ID group-ID ackland/atom keyword/value :pre
|
||||||
|
|
||||||
ID, group-ID are documented in "compute"_compute.html command
|
ID, group-ID are documented in "compute"_compute.html command :ulb,l
|
||||||
ackland/atom = style name of this compute command :ul
|
ackland/atom = style name of this compute command :l
|
||||||
|
|
||||||
|
zero or more keyword/value pairs may be appended :l
|
||||||
|
keyword = {legacy} :l
|
||||||
|
{legacy} yes/no = use ({yes}) or do not use ({no}) legacy ackland algorithm implementation :pre
|
||||||
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|
||||||
compute 1 all ackland/atom :pre
|
compute 1 all ackland/atom
|
||||||
|
compute 1 all ackland/atom legacy yes :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
Defines a computation that calculates the local lattice structure
|
Defines a computation that calculates the local lattice structure
|
||||||
according to the formulation given in "(Ackland)"_#Ackland.
|
according to the formulation given in "(Ackland)"_#Ackland.
|
||||||
|
Historically, LAMMPS had two, slightly different implementations of
|
||||||
|
the algorithm from the paper. With the {legacy} keyword, it is
|
||||||
|
possible to switch between the pre-2015 ({legacy yes}) and post-2015
|
||||||
|
implemention ({legacy no}). The post-2015 variant is the default.
|
||||||
|
|
||||||
In contrast to the "centro-symmetry
|
In contrast to the "centro-symmetry
|
||||||
parameter"_compute_centro_atom.html this method is stable against
|
parameter"_compute_centro_atom.html this method is stable against
|
||||||
@ -66,7 +76,8 @@ integers defined above.
|
|||||||
|
|
||||||
"compute centro/atom"_compute_centro_atom.html
|
"compute centro/atom"_compute_centro_atom.html
|
||||||
|
|
||||||
[Default:] none
|
[Default:]
|
||||||
|
The keyword {legacy} defaults to {no}.
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
|
|||||||
112
doc/src/fix_bocs.txt
Normal file
112
doc/src/fix_bocs.txt
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
<"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||||
|
|
||||||
|
:link(lws,http://lammps.sandia.gov)
|
||||||
|
:link(ld,Manual.html)
|
||||||
|
:link(lc,Section_commands.html#comm)
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
fix bocs command :h3
|
||||||
|
|
||||||
|
[Syntax:]
|
||||||
|
|
||||||
|
fix ID group-ID bocs keyword values ... :pre
|
||||||
|
|
||||||
|
keyword = {temp} or {cgiso} or {analytic} or {linear_spline} or {cubic_spline}
|
||||||
|
{temp} values = Tstart Tstop Tdamp
|
||||||
|
{cgiso} values = Pstart Pstop Pdamp
|
||||||
|
{basis set}
|
||||||
|
{analytic} values = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N
|
||||||
|
{linear_spline} values = input_filename
|
||||||
|
{cubic_spline} values = input_filename :pre
|
||||||
|
:ule
|
||||||
|
|
||||||
|
[Examples:]
|
||||||
|
|
||||||
|
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20 :pre
|
||||||
|
|
||||||
|
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 cubic_spline input_Fv.dat :pre
|
||||||
|
|
||||||
|
thermo_modify press 1_press :pre
|
||||||
|
|
||||||
|
|
||||||
|
[Description:]
|
||||||
|
|
||||||
|
These commands incorporate a pressure correction as described by
|
||||||
|
Dunn and Noid in "(Dunn1)"_#bocs-Dunn1 to the standard MTTK
|
||||||
|
barostat by Martyna et. al. in "(Martyna)"_#bocs-Martyna .
|
||||||
|
The first half of the command mimics a standard fix npt command:
|
||||||
|
|
||||||
|
fix 1 all bocs temp Tstart Tstop Tcoupl cgiso Pstart Pstop Pdamp :pre
|
||||||
|
|
||||||
|
The two differences are replacing {npt} with {bocs}, and replacing
|
||||||
|
{iso}/{aniso}/{etc} with {cgiso}.
|
||||||
|
The rest of the command details what form you would like to use for
|
||||||
|
the pressure correction equation. The choices are: {analytic}, {linear_spline},
|
||||||
|
or {cubic_spline}.
|
||||||
|
|
||||||
|
With either spline method, the only argument that needs to follow it
|
||||||
|
is the name of a file that contains the desired pressure correction
|
||||||
|
as a function of volume. The file should be formatted so each line has:
|
||||||
|
|
||||||
|
Volume_i, PressureCorrection_i :pre
|
||||||
|
|
||||||
|
Note both the COMMA and the SPACE separating the volume's
|
||||||
|
value and its corresponding pressure correction. The volumes in the file
|
||||||
|
should be uniformly spaced. Both the volumes and the pressure corrections
|
||||||
|
should be provided in the proper units, e.g. if you are using {units real},
|
||||||
|
the volumes should all be in cubic angstroms, and the pressure corrections
|
||||||
|
should all be in atomspheres. Furthermore, the table should start/end at a
|
||||||
|
volume considerably smaller/larger than you expect your system to sample
|
||||||
|
during the simulation. If the system ever reaches a volume outside of the
|
||||||
|
range provided, the simulation will stop.
|
||||||
|
|
||||||
|
With the {analytic} option, the arguments are as follows:
|
||||||
|
|
||||||
|
... analytic V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N :pre
|
||||||
|
|
||||||
|
Note that {V_avg} and {Coeff_i} should all be in the proper units, e.g. if you
|
||||||
|
are using {units real}, {V_avg} should be in cubic angstroms, and the
|
||||||
|
coefficients should all be in atmospheres * cubic angstroms.
|
||||||
|
|
||||||
|
[Restrictions:]
|
||||||
|
|
||||||
|
As this is computing a (modified) pressure, group-ID should be {all}.
|
||||||
|
|
||||||
|
The pressure correction has only been tested for use with an isotropic
|
||||||
|
pressure coupling in 3 dimensions.
|
||||||
|
|
||||||
|
By default, LAMMPS will still report the normal value for the pressure
|
||||||
|
if the pressure is printed via a {thermo} command, or if the pressures
|
||||||
|
are written to a file every so often. In order to have LAMMPS report the
|
||||||
|
modified pressure, you must include the {thermo_modify} command given in
|
||||||
|
the examples. For the last argument in the command, you should put
|
||||||
|
XXXX_press, where XXXX is the ID given to the fix bocs command (in the
|
||||||
|
example, the ID of the fix bocs command is 1 ).
|
||||||
|
|
||||||
|
This fix is part of the USER-BOCS package. It is only enabled if
|
||||||
|
LAMMPS was built with that package. See the "Making
|
||||||
|
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||||
|
|
||||||
|
[Related:]
|
||||||
|
|
||||||
|
For more details about the pressure correction and the entire BOCS software
|
||||||
|
package, visit the "BOCS package on github"_bocsgithub and read the release
|
||||||
|
paper by Dunn et. al. "(Dunn2)"_#bocs-Dunn2 .
|
||||||
|
|
||||||
|
|
||||||
|
:link(bocsgithub,https://github.com/noid-group/BOCS)
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
:link(bocs-Dunn1)
|
||||||
|
[(Dunn1)] Dunn and Noid, J Chem Phys, 143, 243148 (2015).
|
||||||
|
|
||||||
|
:link(bocs-Martyna)
|
||||||
|
[(Martyna)] Martyna, Tobias, and Klein, J Chem Phys, 101, 4177 (1994).
|
||||||
|
|
||||||
|
:link(bocs-Dunn2)
|
||||||
|
[(Dunn2)] Dunn, Lebold, DeLyser, Rudzinski, and Noid, J. Phys. Chem. B, 122, 3363 (2018).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -11,9 +11,9 @@ fix bond/react command :h3
|
|||||||
[Syntax:]
|
[Syntax:]
|
||||||
|
|
||||||
fix ID group-ID bond/react common_keyword values ...
|
fix ID group-ID bond/react common_keyword values ...
|
||||||
react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
||||||
react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
||||||
react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
||||||
... :pre
|
... :pre
|
||||||
|
|
||||||
ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l
|
ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l
|
||||||
@ -24,12 +24,13 @@ common_keyword = {stabilization}
|
|||||||
{stabilization} values = group-ID xmax
|
{stabilization} values = group-ID xmax
|
||||||
group-ID = user-assigned ID of an internally-created dynamic group that excludes reacting atoms, and can be used by a subsequent time integration fix such as nvt, npt, or nve (cannot be 'all')
|
group-ID = user-assigned ID of an internally-created dynamic group that excludes reacting atoms, and can be used by a subsequent time integration fix such as nvt, npt, or nve (cannot be 'all')
|
||||||
{xmax} value = distance
|
{xmax} value = distance
|
||||||
distance = xmax value that is used by an internally created "nve/limit"_nve_limit.html integrator
|
distance = xmax value that is used by an internally created "nve/limit"_fix_nve_limit.html integrator
|
||||||
react = mandatory argument indicating new reaction specification
|
react = mandatory argument indicating new reaction specification
|
||||||
react-ID = user-assigned name for the reaction
|
react-ID = user-assigned name for the reaction
|
||||||
react-group-ID = only atoms in this group are available for the reaction
|
react-group-ID = only atoms in this group are available for the reaction
|
||||||
Nevery = attempt reaction every this many steps :l
|
Nevery = attempt reaction every this many steps :l
|
||||||
Rmin = bonding pair atoms separated by less than Rmin can initiate reaction (distance units) :l
|
Rmin = bonding pair atoms must be separated by more than Rmin to initiate reaction (distance units) :l
|
||||||
|
Rmax = bonding pair atoms must be separated by less than Rmax to initiate reaction (distance units) :l
|
||||||
template-ID(pre-reacted) = ID of a molecule template containing pre-reaction topology :l
|
template-ID(pre-reacted) = ID of a molecule template containing pre-reaction topology :l
|
||||||
template-ID(post-reacted) = ID of a molecule template containing post-reaction topology :l
|
template-ID(post-reacted) = ID of a molecule template containing post-reaction topology :l
|
||||||
map_file = name of file specifying corresponding atomIDs in the pre- and post-reacted templates :l
|
map_file = name of file specifying corresponding atomIDs in the pre- and post-reacted templates :l
|
||||||
@ -46,15 +47,15 @@ react = mandatory argument indicating new reaction specification
|
|||||||
|
|
||||||
molecule mol1 pre_reacted_topology.txt
|
molecule mol1 pre_reacted_topology.txt
|
||||||
molecule mol2 post_reacted_topology.txt
|
molecule mol2 post_reacted_topology.txt
|
||||||
fix 5 all bond/react stabilization no react myrxn1 all 1 3.25 mol1 mol2 map_file.txt
|
fix 5 all bond/react stabilization no react myrxn1 all 1 0 3.25 mol1 mol2 map_file.txt
|
||||||
|
|
||||||
molecule mol1 pre_reacted_rxn1.txt
|
molecule mol1 pre_reacted_rxn1.txt
|
||||||
molecule mol2 post_reacted_rxn1.txt
|
molecule mol2 post_reacted_rxn1.txt
|
||||||
molecule mol3 pre_reacted_rxn2.txt
|
molecule mol3 pre_reacted_rxn2.txt
|
||||||
molecule mol4 post_reacted_rxn2.txt
|
molecule mol4 post_reacted_rxn2.txt
|
||||||
fix 5 all bond/react stabilization yes nvt_grp .03 &
|
fix 5 all bond/react stabilization yes nvt_grp .03 &
|
||||||
react myrxn1 all 1 3.25 mol1 mol2 map_file_rxn1.txt prob 0.50 12345 &
|
react myrxn1 all 1 0 3.25 mol1 mol2 map_file_rxn1.txt prob 0.50 12345 &
|
||||||
react myrxn2 all 1 2.75 mol3 mol4 map_file_rxn2.txt prob 0.25 12345
|
react myrxn2 all 1 0 2.75 mol3 mol4 map_file_rxn2.txt prob 0.25 12345
|
||||||
fix 6 nvt_grp nvt temp 300 300 100 # system-wide thermostat must be defined after bond/react :pre
|
fix 6 nvt_grp nvt temp 300 300 100 # system-wide thermostat must be defined after bond/react :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
@ -101,9 +102,14 @@ The group-ID set using the {stabilization} keyword should be a
|
|||||||
previously unused group-ID. The fix bond/react command creates a
|
previously unused group-ID. The fix bond/react command creates a
|
||||||
"dynamic group"_group.html of this name that excludes reacting atoms.
|
"dynamic group"_group.html of this name that excludes reacting atoms.
|
||||||
This dynamic group-ID should then be used by a subsequent system-wide
|
This dynamic group-ID should then be used by a subsequent system-wide
|
||||||
time integrator, as shown in the second example above. It is necessary
|
time integrator, as shown in the second example above. It is currently
|
||||||
to place the time integration command after the fix bond/react command
|
necessary to place the time integration command after the fix
|
||||||
due to the internal dynamic grouping performed by fix bond/react.
|
bond/react command due to the internal dynamic grouping performed by
|
||||||
|
fix bond/react.
|
||||||
|
|
||||||
|
NOTE: The internally created group currently applies to all atoms in
|
||||||
|
the system, i.e. you should generally not have a separate thermostat
|
||||||
|
which acts on the 'all' group.
|
||||||
|
|
||||||
The following comments pertain to each 'react' argument:
|
The following comments pertain to each 'react' argument:
|
||||||
|
|
||||||
@ -118,21 +124,20 @@ modified to match the post-reaction template.
|
|||||||
|
|
||||||
A bonding atom pair will be identified if several conditions are met.
|
A bonding atom pair will be identified if several conditions are met.
|
||||||
First, a pair of atoms within the specified react-group-ID of type
|
First, a pair of atoms within the specified react-group-ID of type
|
||||||
typei and typej must be within a distance Rmin of each other. The atom
|
typei and typej must separated by a distance between Rmin and Rmax. It
|
||||||
types typei and typej are specified in the pre- and post-reaction
|
is possible that multiple bonding atom pairs are identified: if the
|
||||||
templates. The distance calculation uses the pair neighbor list,
|
bonding atoms in the pre-reacted template are not 1-2, 1-3, or 1-4
|
||||||
therefore bonded neighbor exclusions may prevent a reaction between
|
neighbors, the closest bonding atom partner is set as its bonding
|
||||||
1st, 2nd or 3rd bonded neighbor atoms. If multiple bonding atom pairs
|
partner; otherwise, the farthest potential partner is chosen. Then, if
|
||||||
are identified for an atom, the closest bonding atom partner is set as
|
both an atomi and atomj have each other as their nearest bonding
|
||||||
its "nearest" bonding partner. Then, if both an atomi and atomj have
|
partners, these two atoms are identified as the bonding atom pair of
|
||||||
each other as their nearest bonding partners, these two atoms are
|
the reaction site. Once this unique bonding atom pair is identified
|
||||||
identified as the bonding atom pair of the reaction site. Once this
|
for each reaction, there could two or more reactions that involve a
|
||||||
unique bonding atom pair is identified for each reaction, there could
|
given atom on the same timestep. If this is the case, only one such
|
||||||
two or more reactions that involve a given atom on the same timestep.
|
reaction is permitted to occur. This reaction is chosen randomly from
|
||||||
If this is the case, only one such reaction is permitted to occur.
|
all potential reactions. This capability allows e.g. for different
|
||||||
This reaction is chosen randomly from all potential reactions. This
|
reaction pathways to proceed from identical reaction sites with
|
||||||
capability allows e.g. for different reaction pathways to proceed from
|
user-specified probabilities.
|
||||||
identical reaction sites with user-specified probabilities.
|
|
||||||
|
|
||||||
The pre-reacted molecule template is specified by a molecule command.
|
The pre-reacted molecule template is specified by a molecule command.
|
||||||
This molecule template file contains a sample reaction site and its
|
This molecule template file contains a sample reaction site and its
|
||||||
@ -262,9 +267,11 @@ angles, dihedrals or impropers are supported.
|
|||||||
A few capabilities to note: 1) You may specify as many 'react'
|
A few capabilities to note: 1) You may specify as many 'react'
|
||||||
arguments as desired. For example, you could break down a complicated
|
arguments as desired. For example, you could break down a complicated
|
||||||
reaction mechanism into several reaction steps, each defined by its
|
reaction mechanism into several reaction steps, each defined by its
|
||||||
own 'react' argument. 2) While typically a bond is formed between the
|
own 'react' argument. 2) While typically a bond is formed or removed
|
||||||
bonding atom pairs specified in the pre-reacted molecule template,
|
between the bonding atom pairs specified in the pre-reacted molecule
|
||||||
this is not required.
|
template, this is not required. 3) By reversing the order of the pre-
|
||||||
|
and post- reacted molecule templates in another 'react' argument, you
|
||||||
|
can allow for the possibility of one or more reverse reactions.
|
||||||
|
|
||||||
The optional keywords deal with the probability of a given reaction
|
The optional keywords deal with the probability of a given reaction
|
||||||
occurring as well as the stable equilibration of each reaction site as
|
occurring as well as the stable equilibration of each reaction site as
|
||||||
@ -300,14 +307,14 @@ reaction:
|
|||||||
fix 1 bond_react_MASTER_group temp/rescale 1 300 300 10 1
|
fix 1 bond_react_MASTER_group temp/rescale 1 300 300 10 1
|
||||||
|
|
||||||
NOTE: This command must be added after the fix bond/react command, and
|
NOTE: This command must be added after the fix bond/react command, and
|
||||||
will apply to all reaction steps.
|
will apply to all reactions.
|
||||||
|
|
||||||
Computationally, each timestep this fix operates, it loops over
|
Computationally, each timestep this fix operates, it loops over
|
||||||
neighbor lists and computes distances between pairs of atoms in the
|
neighbor lists (for bond-forming reactions) and computes distances
|
||||||
list. It also communicates between neighboring processors to
|
between pairs of atoms in the list. It also communicates between
|
||||||
coordinate which bonds are created. All of these operations increase
|
neighboring processors to coordinate which bonds are created and/or
|
||||||
the cost of a timestep. Thus you should be cautious about invoking
|
removed. All of these operations increase the cost of a timestep. Thus
|
||||||
this fix too frequently.
|
you should be cautious about invoking this fix too frequently.
|
||||||
|
|
||||||
You can dump out snapshots of the current bond topology via the dump
|
You can dump out snapshots of the current bond topology via the dump
|
||||||
local command.
|
local command.
|
||||||
|
|||||||
@ -154,7 +154,7 @@ Note: The temperature thermostating the core-Drude particle pairs
|
|||||||
should be chosen low enough, so as to mimic as closely as possible the
|
should be chosen low enough, so as to mimic as closely as possible the
|
||||||
self-consistent minimization. It must however be high enough, so that
|
self-consistent minimization. It must however be high enough, so that
|
||||||
the dipoles can follow the local electric field exerted by the
|
the dipoles can follow the local electric field exerted by the
|
||||||
neighbouring atoms. The optimal value probably depends on the
|
neighboring atoms. The optimal value probably depends on the
|
||||||
temperature of the centers of mass and on the mass of the Drude
|
temperature of the centers of mass and on the mass of the Drude
|
||||||
particles.
|
particles.
|
||||||
|
|
||||||
|
|||||||
@ -24,10 +24,12 @@ keyword = {bond} or {angle} or {dihedral} :l
|
|||||||
atom1,atom2,atom3 = IDs of 3 atoms in angle, atom2 = middle atom
|
atom1,atom2,atom3 = IDs of 3 atoms in angle, atom2 = middle atom
|
||||||
Kstart,Kstop = restraint coefficients at start/end of run (energy units)
|
Kstart,Kstop = restraint coefficients at start/end of run (energy units)
|
||||||
theta0 = equilibrium angle theta (degrees)
|
theta0 = equilibrium angle theta (degrees)
|
||||||
{dihedral} args = atom1 atom2 atom3 atom4 Kstart Kstop phi0
|
{dihedral} args = atom1 atom2 atom3 atom4 Kstart Kstop phi0 keyword/value
|
||||||
atom1,atom2,atom3,atom4 = IDs of 4 atoms in dihedral in linear order
|
atom1,atom2,atom3,atom4 = IDs of 4 atoms in dihedral in linear order
|
||||||
Kstart,Kstop = restraint coefficients at start/end of run (energy units)
|
Kstart,Kstop = restraint coefficients at start/end of run (energy units)
|
||||||
phi0 = equilibrium dihedral angle phi (degrees) :pre
|
phi0 = equilibrium dihedral angle phi (degrees)
|
||||||
|
keyword/value = optional keyword value pairs. supported keyword/value pairs:
|
||||||
|
{mult} n = dihedral multiplicity n (integer >= 0, default = 1) :pre
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
@ -155,11 +157,13 @@ associated with the restraint is
|
|||||||
with the following coefficients:
|
with the following coefficients:
|
||||||
|
|
||||||
K (energy)
|
K (energy)
|
||||||
n = 1
|
n (multiplicity, >= 0)
|
||||||
d (degrees) = phi0 + 180 :ul
|
d (degrees) = phi0 + 180 :ul
|
||||||
|
|
||||||
K and phi0 are specified with the fix. Note that the value of n is
|
K and phi0 are specified with the fix. Note that the value of the
|
||||||
hard-wired to 1. Also note that the energy will be a minimum when the
|
dihedral multiplicity {n} is set by default to 1. You can use the
|
||||||
|
optional {mult} keyword to set it to a different positive integer.
|
||||||
|
Also note that the energy will be a minimum when the
|
||||||
current dihedral angle phi is equal to phi0.
|
current dihedral angle phi is equal to phi0.
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|||||||
@ -20,6 +20,7 @@ Fixes :h1
|
|||||||
fix_ave_time
|
fix_ave_time
|
||||||
fix_aveforce
|
fix_aveforce
|
||||||
fix_balance
|
fix_balance
|
||||||
|
fix_bocs
|
||||||
fix_bond_break
|
fix_bond_break
|
||||||
fix_bond_create
|
fix_bond_create
|
||||||
fix_bond_swap
|
fix_bond_swap
|
||||||
|
|||||||
@ -135,6 +135,7 @@ fix_ave_histo.html
|
|||||||
fix_ave_time.html
|
fix_ave_time.html
|
||||||
fix_aveforce.html
|
fix_aveforce.html
|
||||||
fix_balance.html
|
fix_balance.html
|
||||||
|
fix_bocs.html
|
||||||
fix_bond_break.html
|
fix_bond_break.html
|
||||||
fix_bond_create.html
|
fix_bond_create.html
|
||||||
fix_bond_react.html
|
fix_bond_react.html
|
||||||
|
|||||||
@ -38,7 +38,7 @@ This shift is achieved by the last term in the equation for {Vij} above.
|
|||||||
This potential is intended for interactions between two layers of graphene.
|
This potential is intended for interactions between two layers of graphene.
|
||||||
Therefore, to avoid interaction between layers in multi-layered materials,
|
Therefore, to avoid interaction between layers in multi-layered materials,
|
||||||
each layer should have a separate atom type and interactions should only
|
each layer should have a separate atom type and interactions should only
|
||||||
be computed between atom types of neighbouring layers.
|
be computed between atom types of neighboring layers.
|
||||||
|
|
||||||
The parameter file (e.g. CC.KC), is intended for use with metal
|
The parameter file (e.g. CC.KC), is intended for use with metal
|
||||||
"units"_units.html, with energies in meV. An additional parameter, {S},
|
"units"_units.html, with energies in meV. An additional parameter, {S},
|
||||||
|
|||||||
6
examples/USER/bocs/README
Normal file
6
examples/USER/bocs/README
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
This folder contains the files to run a NPT simulation of 1 site CG methanol
|
||||||
|
while employing a correction to the barostat.
|
||||||
|
The pair force was computed via the Multi-Scale Coarse-Graining method.
|
||||||
|
The resulting model was then iteratively pressure matched.
|
||||||
|
The model accurately reproduces both structural (RDF) and thermodynamic
|
||||||
|
(Pressure-Volume EoS) properties of the underlying OPLS-AA model of methanol.
|
||||||
69
examples/USER/bocs/in.methanol
Normal file
69
examples/USER/bocs/in.methanol
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
units real
|
||||||
|
dimension 3
|
||||||
|
boundary p p p
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
newton on
|
||||||
|
timestep 1.0
|
||||||
|
|
||||||
|
read_data methanol.data
|
||||||
|
|
||||||
|
velocity all create 300.0 16802 dist gaussian
|
||||||
|
|
||||||
|
pair_style table spline 15000
|
||||||
|
|
||||||
|
pair_coeff 1 1 lammps_nb_MET-MET.table nb_METMET 12.0
|
||||||
|
|
||||||
|
neigh_modify delay 0 every 1 check yes one 10000
|
||||||
|
neighbor 12.0 bin
|
||||||
|
|
||||||
|
thermo 500
|
||||||
|
thermo_style custom step temp pe etotal press vol
|
||||||
|
|
||||||
|
variable STEP equal step
|
||||||
|
variable TEMP equal temp
|
||||||
|
## volume from cubic angstroms to cubic nm
|
||||||
|
variable VOL equal vol/1000.0
|
||||||
|
## pressure from atm to bar
|
||||||
|
variable PRESS equal press*1.01325
|
||||||
|
variable PXX equal pxx*1.01325
|
||||||
|
variable PYY equal pyy*1.01325
|
||||||
|
variable PZZ equal pzz*1.01325
|
||||||
|
variable PXY equal pxy*1.01325
|
||||||
|
variable PXZ equal pxz*1.01325
|
||||||
|
variable PYZ equal pyz*1.01325
|
||||||
|
## energy from kcal/mol to kJ/mol
|
||||||
|
variable KE equal ke*4.184
|
||||||
|
variable PE equal pe*4.184
|
||||||
|
variable UVDW equal evdwl*4.184
|
||||||
|
|
||||||
|
|
||||||
|
##### SPECIAL COMMANDS FOR FIX_BOCS #####
|
||||||
|
# ID group-ID style_name thermostat T_init T_end T_couple barostat P_start P_end P_couple pmatch_basis avg_vol N_sites N_coeffs coeff1 coeff2
|
||||||
|
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20
|
||||||
|
|
||||||
|
# Report the modified pressure
|
||||||
|
thermo_modify press 1_press
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Uncomment to save some data from simulation to files
|
||||||
|
#fix print_temp all print 500 "${STEP} ${TEMP}" file temp.dat screen no
|
||||||
|
#fix print_vol all print 500 "${STEP} ${VOL}" file vol.dat screen no
|
||||||
|
#fix print_press all print 500 "${STEP} ${PRESS}" file press.dat screen no
|
||||||
|
#fix print_ke all print 500 "${STEP} ${KE}" file kinetic_E.dat screen no
|
||||||
|
#fix print_pe all print 500 "${STEP} ${PE}" file potential_E.dat screen no
|
||||||
|
#fix print_ve all print 500 "${STEP} ${UVDW}" file vdw_E.dat screen no
|
||||||
|
#fix print_press_tens all print 500 "${STEP} ${PXX} ${PYY} ${PZZ} ${PXY} ${PXZ} ${PYZ}" file press_tens.dat screen no
|
||||||
|
#fix print_PV_eos all print 500 "${VOL} ${PRESS}" file pv_eos.dat screen no
|
||||||
|
|
||||||
|
## Prints a configuration to dump.txt every 500 steps
|
||||||
|
#dump 1 all custom 500 dump.txt id type x y z fx fy fz
|
||||||
|
|
||||||
|
# Write restart files to continue simulations
|
||||||
|
#restart 10000 state1.restart state2.restart
|
||||||
|
|
||||||
|
## Run for this many steps
|
||||||
|
run_style verlet
|
||||||
|
run 10000
|
||||||
|
|
||||||
2505
examples/USER/bocs/lammps_nb_MET-MET.table
Normal file
2505
examples/USER/bocs/lammps_nb_MET-MET.table
Normal file
File diff suppressed because it is too large
Load Diff
143
examples/USER/bocs/log.20Apr18.methanol.g++.1
Normal file
143
examples/USER/bocs/log.20Apr18.methanol.g++.1
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
LAMMPS (20 Apr 2018)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
units real
|
||||||
|
dimension 3
|
||||||
|
boundary p p p
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
newton on
|
||||||
|
timestep 1.0
|
||||||
|
|
||||||
|
read_data methanol.data
|
||||||
|
orthogonal box = (0 0 0) to (40.4635 40.4635 40.4635)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
968 atoms
|
||||||
|
|
||||||
|
velocity all create 300.0 16802 dist gaussian
|
||||||
|
|
||||||
|
pair_style table spline 15000
|
||||||
|
|
||||||
|
pair_coeff 1 1 lammps_nb_MET-MET.table nb_METMET 12.0
|
||||||
|
WARNING: 78 of 2500 force values in table are inconsistent with -dE/dr.
|
||||||
|
Should only be flagged at inflection points (../pair_table.cpp:481)
|
||||||
|
|
||||||
|
neigh_modify delay 0 every 1 check yes one 10000
|
||||||
|
neighbor 12.0 bin
|
||||||
|
|
||||||
|
thermo 500
|
||||||
|
thermo_style custom step temp pe etotal press vol
|
||||||
|
|
||||||
|
variable STEP equal step
|
||||||
|
variable TEMP equal temp
|
||||||
|
## volume from cubic angstroms to cubic nm
|
||||||
|
variable VOL equal vol/1000.0
|
||||||
|
## pressure from atm to bar
|
||||||
|
variable PRESS equal press*1.01325
|
||||||
|
variable PXX equal pxx*1.01325
|
||||||
|
variable PYY equal pyy*1.01325
|
||||||
|
variable PZZ equal pzz*1.01325
|
||||||
|
variable PXY equal pxy*1.01325
|
||||||
|
variable PXZ equal pxz*1.01325
|
||||||
|
variable PYZ equal pyz*1.01325
|
||||||
|
## energy from kcal/mol to kJ/mol
|
||||||
|
variable KE equal ke*4.184
|
||||||
|
variable PE equal pe*4.184
|
||||||
|
variable UVDW equal evdwl*4.184
|
||||||
|
|
||||||
|
|
||||||
|
##### SPECIAL COMMANDS FOR FIX_BOCS #####
|
||||||
|
# ID group-ID style_name thermostat T_init T_end T_couple barostat P_start P_end P_couple pmatch_basis avg_vol N_sites N_coeffs coeff1 coeff2
|
||||||
|
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20
|
||||||
|
|
||||||
|
# Report the modified pressure
|
||||||
|
thermo_modify press 1_press
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Uncomment to save some data from simulation to files
|
||||||
|
#fix print_temp all print 500 "${STEP} ${TEMP}" file temp.dat screen no
|
||||||
|
#fix print_vol all print 500 "${STEP} ${VOL}" file vol.dat screen no
|
||||||
|
#fix print_press all print 500 "${STEP} ${PRESS}" file press.dat screen no
|
||||||
|
#fix print_ke all print 500 "${STEP} ${KE}" file kinetic_E.dat screen no
|
||||||
|
#fix print_pe all print 500 "${STEP} ${PE}" file potential_E.dat screen no
|
||||||
|
#fix print_ve all print 500 "${STEP} ${UVDW}" file vdw_E.dat screen no
|
||||||
|
#fix print_press_tens all print 500 "${STEP} ${PXX} ${PYY} ${PZZ} ${PXY} ${PXZ} ${PYZ}" file press_tens.dat screen no
|
||||||
|
#fix print_PV_eos all print 500 "${VOL} ${PRESS}" file pv_eos.dat screen no
|
||||||
|
|
||||||
|
## Prints a configuration to dump.txt every 500 steps
|
||||||
|
#dump 1 all custom 500 dump.txt id type x y z fx fy fz
|
||||||
|
|
||||||
|
# Write restart files to continue simulations
|
||||||
|
#restart 10000 state1.restart state2.restart
|
||||||
|
|
||||||
|
## Run for this many steps
|
||||||
|
run_style verlet
|
||||||
|
run 10000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 10000, page size: 100000
|
||||||
|
master list distance cutoff = 24
|
||||||
|
ghost atom cutoff = 24
|
||||||
|
binsize = 12, bins = 4 4 4
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair table, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 4.691 | 4.691 | 4.691 Mbytes
|
||||||
|
Step Temp PotEng TotEng Press Volume
|
||||||
|
0 300 1061.5961 1926.3291 107.006 66250.679
|
||||||
|
500 314.54728 1034.1091 1940.7738 194.42689 65660.282
|
||||||
|
1000 301.41603 1030.7027 1899.5173 -91.966709 66262.543
|
||||||
|
1500 298.8308 1014.8276 1876.1905 -80.178606 67053.605
|
||||||
|
2000 294.78476 1046.8207 1896.521 50.592942 66316.735
|
||||||
|
2500 301.18564 1033.9214 1902.0719 40.48255 66607.667
|
||||||
|
3000 301.06632 1022.0381 1889.8447 47.582344 66341.947
|
||||||
|
3500 297.98361 989.80983 1848.7307 -204.69879 67462.078
|
||||||
|
4000 299.03493 1034.6571 1896.6083 89.188888 66457.385
|
||||||
|
4500 306.03351 985.4121 1867.5363 -51.102407 67519.446
|
||||||
|
5000 305.6903 1013.8613 1894.9963 -141.13704 67240.467
|
||||||
|
5500 292.23444 1029.5558 1871.905 20.764579 66683.876
|
||||||
|
6000 287.87735 1017.7325 1847.5226 -35.288049 66630.031
|
||||||
|
6500 305.26461 960.08118 1839.9891 -352.42596 67612.317
|
||||||
|
7000 300.34449 1055.0664 1920.7923 22.04027 66187.27
|
||||||
|
7500 305.48612 1038.6651 1919.2115 17.807254 66324.168
|
||||||
|
8000 316.03232 1034.6809 1945.6262 27.482857 66502.198
|
||||||
|
8500 294.28636 1038.8213 1887.085 -72.840559 66851.661
|
||||||
|
9000 316.69029 1065.7481 1978.5899 245.61677 65678.385
|
||||||
|
9500 297.46127 1034.5547 1891.97 54.23428 66892.627
|
||||||
|
10000 301.24799 1036.5432 1904.8735 7.7134029 66150.506
|
||||||
|
Loop time of 34.426 on 1 procs for 10000 steps with 968 atoms
|
||||||
|
|
||||||
|
Performance: 25.097 ns/day, 0.956 hours/ns, 290.478 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 | 33.324 | 33.324 | 33.324 | 0.0 | 96.80
|
||||||
|
Neigh | 0.12198 | 0.12198 | 0.12198 | 0.0 | 0.35
|
||||||
|
Comm | 0.42865 | 0.42865 | 0.42865 | 0.0 | 1.25
|
||||||
|
Output | 0.00059938 | 0.00059938 | 0.00059938 | 0.0 | 0.00
|
||||||
|
Modify | 0.42553 | 0.42553 | 0.42553 | 0.0 | 1.24
|
||||||
|
Other | | 0.1252 | | | 0.36
|
||||||
|
|
||||||
|
Nlocal: 968 ave 968 max 968 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 9112 ave 9112 max 9112 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 404392 ave 404392 max 404392 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 404392
|
||||||
|
Ave neighs/atom = 417.76
|
||||||
|
Neighbor list builds = 13
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
|
||||||
|
Please see the log.cite file for references relevant to this simulation
|
||||||
|
|
||||||
|
Total wall time: 0:00:34
|
||||||
143
examples/USER/bocs/log.20Apr18.methanol.g++.4
Normal file
143
examples/USER/bocs/log.20Apr18.methanol.g++.4
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
LAMMPS (20 Apr 2018)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
units real
|
||||||
|
dimension 3
|
||||||
|
boundary p p p
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
newton on
|
||||||
|
timestep 1.0
|
||||||
|
|
||||||
|
read_data methanol.data
|
||||||
|
orthogonal box = (0 0 0) to (40.4635 40.4635 40.4635)
|
||||||
|
1 by 2 by 2 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
968 atoms
|
||||||
|
|
||||||
|
velocity all create 300.0 16802 dist gaussian
|
||||||
|
|
||||||
|
pair_style table spline 15000
|
||||||
|
|
||||||
|
pair_coeff 1 1 lammps_nb_MET-MET.table nb_METMET 12.0
|
||||||
|
WARNING: 78 of 2500 force values in table are inconsistent with -dE/dr.
|
||||||
|
Should only be flagged at inflection points (../pair_table.cpp:481)
|
||||||
|
|
||||||
|
neigh_modify delay 0 every 1 check yes one 10000
|
||||||
|
neighbor 12.0 bin
|
||||||
|
|
||||||
|
thermo 500
|
||||||
|
thermo_style custom step temp pe etotal press vol
|
||||||
|
|
||||||
|
variable STEP equal step
|
||||||
|
variable TEMP equal temp
|
||||||
|
## volume from cubic angstroms to cubic nm
|
||||||
|
variable VOL equal vol/1000.0
|
||||||
|
## pressure from atm to bar
|
||||||
|
variable PRESS equal press*1.01325
|
||||||
|
variable PXX equal pxx*1.01325
|
||||||
|
variable PYY equal pyy*1.01325
|
||||||
|
variable PZZ equal pzz*1.01325
|
||||||
|
variable PXY equal pxy*1.01325
|
||||||
|
variable PXZ equal pxz*1.01325
|
||||||
|
variable PYZ equal pyz*1.01325
|
||||||
|
## energy from kcal/mol to kJ/mol
|
||||||
|
variable KE equal ke*4.184
|
||||||
|
variable PE equal pe*4.184
|
||||||
|
variable UVDW equal evdwl*4.184
|
||||||
|
|
||||||
|
|
||||||
|
##### SPECIAL COMMANDS FOR FIX_BOCS #####
|
||||||
|
# ID group-ID style_name thermostat T_init T_end T_couple barostat P_start P_end P_couple pmatch_basis avg_vol N_sites N_coeffs coeff1 coeff2
|
||||||
|
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20
|
||||||
|
|
||||||
|
# Report the modified pressure
|
||||||
|
thermo_modify press 1_press
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Uncomment to save some data from simulation to files
|
||||||
|
#fix print_temp all print 500 "${STEP} ${TEMP}" file temp.dat screen no
|
||||||
|
#fix print_vol all print 500 "${STEP} ${VOL}" file vol.dat screen no
|
||||||
|
#fix print_press all print 500 "${STEP} ${PRESS}" file press.dat screen no
|
||||||
|
#fix print_ke all print 500 "${STEP} ${KE}" file kinetic_E.dat screen no
|
||||||
|
#fix print_pe all print 500 "${STEP} ${PE}" file potential_E.dat screen no
|
||||||
|
#fix print_ve all print 500 "${STEP} ${UVDW}" file vdw_E.dat screen no
|
||||||
|
#fix print_press_tens all print 500 "${STEP} ${PXX} ${PYY} ${PZZ} ${PXY} ${PXZ} ${PYZ}" file press_tens.dat screen no
|
||||||
|
#fix print_PV_eos all print 500 "${VOL} ${PRESS}" file pv_eos.dat screen no
|
||||||
|
|
||||||
|
## Prints a configuration to dump.txt every 500 steps
|
||||||
|
#dump 1 all custom 500 dump.txt id type x y z fx fy fz
|
||||||
|
|
||||||
|
# Write restart files to continue simulations
|
||||||
|
#restart 10000 state1.restart state2.restart
|
||||||
|
|
||||||
|
## Run for this many steps
|
||||||
|
run_style verlet
|
||||||
|
run 10000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 10000, page size: 100000
|
||||||
|
master list distance cutoff = 24
|
||||||
|
ghost atom cutoff = 24
|
||||||
|
binsize = 12, bins = 4 4 4
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair table, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 3.37 | 3.37 | 3.371 Mbytes
|
||||||
|
Step Temp PotEng TotEng Press Volume
|
||||||
|
0 300 1061.5961 1926.3291 107.006 66250.679
|
||||||
|
500 314.54728 1034.1091 1940.7738 194.42689 65660.282
|
||||||
|
1000 301.41603 1030.7027 1899.5173 -91.966709 66262.543
|
||||||
|
1500 298.8308 1014.8276 1876.1905 -80.178606 67053.605
|
||||||
|
2000 294.78476 1046.8207 1896.521 50.592942 66316.735
|
||||||
|
2500 301.18564 1033.9214 1902.0719 40.482557 66607.667
|
||||||
|
3000 301.06631 1022.0381 1889.8447 47.582403 66341.947
|
||||||
|
3500 297.98353 989.81011 1848.7308 -204.69823 67462.076
|
||||||
|
4000 299.03465 1034.6603 1896.6108 89.196235 66457.338
|
||||||
|
4500 306.04532 985.37017 1867.5285 -51.094929 67519.735
|
||||||
|
5000 304.72903 1014.9543 1893.3184 -127.04402 67238.517
|
||||||
|
5500 292.52622 1025.6599 1868.8502 -19.753932 66716.551
|
||||||
|
6000 296.82719 1031.5184 1887.1059 -1.2609328 66368.611
|
||||||
|
6500 298.63312 1018.4299 1879.2229 -24.75835 66524.898
|
||||||
|
7000 303.25389 1005.9283 1880.0404 -96.273504 67349.674
|
||||||
|
7500 292.45089 1068.2863 1911.2595 103.23295 65778.08
|
||||||
|
8000 301.22765 1040.6294 1908.9011 -0.83635353 66831.038
|
||||||
|
8500 300.19765 1047.5856 1912.8883 -31.582343 66316.305
|
||||||
|
9000 295.1108 1023.8234 1874.4635 -88.165532 67192.344
|
||||||
|
9500 302.1087 1003.6348 1874.4459 -18.707065 66369.361
|
||||||
|
10000 296.3083 1004.126 1858.2178 -28.293045 66862.576
|
||||||
|
Loop time of 28.8053 on 4 procs for 10000 steps with 968 atoms
|
||||||
|
|
||||||
|
Performance: 29.994 ns/day, 0.800 hours/ns, 347.159 timesteps/s
|
||||||
|
95.2% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 19.929 | 21.765 | 23.391 | 27.8 | 75.56
|
||||||
|
Neigh | 0.067397 | 0.071231 | 0.077313 | 1.5 | 0.25
|
||||||
|
Comm | 3.9226 | 5.5183 | 7.3214 | 53.7 | 19.16
|
||||||
|
Output | 0.00069928 | 0.0016099 | 0.0043275 | 3.9 | 0.01
|
||||||
|
Modify | 1.0874 | 1.1376 | 1.1888 | 4.2 | 3.95
|
||||||
|
Other | | 0.3112 | | | 1.08
|
||||||
|
|
||||||
|
Nlocal: 242 ave 244 max 239 min
|
||||||
|
Histogram: 1 0 0 0 0 0 1 0 1 1
|
||||||
|
Nghost: 5718.5 ave 5736 max 5702 min
|
||||||
|
Histogram: 1 0 0 0 1 1 0 0 0 1
|
||||||
|
Neighs: 100703 ave 108064 max 93454 min
|
||||||
|
Histogram: 1 0 0 1 0 0 1 0 0 1
|
||||||
|
|
||||||
|
Total # of neighbors = 402813
|
||||||
|
Ave neighs/atom = 416.129
|
||||||
|
Neighbor list builds = 14
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
|
||||||
|
Please see the log.cite file for references relevant to this simulation
|
||||||
|
|
||||||
|
Total wall time: 0:00:28
|
||||||
991
examples/USER/bocs/methanol.data
Normal file
991
examples/USER/bocs/methanol.data
Normal file
@ -0,0 +1,991 @@
|
|||||||
|
LAMMPS Description
|
||||||
|
|
||||||
|
968 atoms
|
||||||
|
0 bonds
|
||||||
|
0 angles
|
||||||
|
0 dihedrals
|
||||||
|
0 impropers
|
||||||
|
|
||||||
|
1 atom types
|
||||||
|
0 bond types
|
||||||
|
0 angle types
|
||||||
|
0 dihedral types
|
||||||
|
|
||||||
|
0 40.4635 xlo xhi
|
||||||
|
0 40.4635 ylo yhi
|
||||||
|
0 40.4635 zlo zhi
|
||||||
|
|
||||||
|
Masses
|
||||||
|
|
||||||
|
1 32.0424
|
||||||
|
|
||||||
|
Atoms
|
||||||
|
|
||||||
|
1 1 36.39 8.05 27.55
|
||||||
|
2 1 18.38 15.72 26.03
|
||||||
|
3 1 3.52 1.77 23.57
|
||||||
|
4 1 31.09 11.38 12.17
|
||||||
|
5 1 13.3 34.8 2.89
|
||||||
|
6 1 1.72 38.55 10.36
|
||||||
|
7 1 38.6 23.16 6.19
|
||||||
|
8 1 0.74 33.21 0.17
|
||||||
|
9 1 26.97 9.53 11.24
|
||||||
|
10 1 31.68 12.19 17.04
|
||||||
|
11 1 15.19 9.06 0.2
|
||||||
|
12 1 34.39 20.63 35.71
|
||||||
|
13 1 21.79 4.93 6.49
|
||||||
|
14 1 28.08 33.01 24.51
|
||||||
|
15 1 37.03 20.52 32.9
|
||||||
|
16 1 32.69 20 30.11
|
||||||
|
17 1 23.77 38.59 18.79
|
||||||
|
18 1 16.01 2.31 20.15
|
||||||
|
19 1 5.65 15.5 28.5
|
||||||
|
20 1 8.35 17.35 20.48
|
||||||
|
21 1 31.24 24.68 27.4
|
||||||
|
22 1 29.41 16.64 19.79
|
||||||
|
23 1 37.42 31.93 26.68
|
||||||
|
24 1 18.76 39.06 30.68
|
||||||
|
25 1 22.97 35 20.81
|
||||||
|
26 1 39.47 18.28 29.6
|
||||||
|
27 1 34.37 19.4 0.17
|
||||||
|
28 1 5.94 9.53 10.95
|
||||||
|
29 1 11.45 38.44 14.64
|
||||||
|
30 1 39.57 11.04 1.57
|
||||||
|
31 1 25.91 20.97 12.79
|
||||||
|
32 1 36.3 22.1 1.68
|
||||||
|
33 1 21.87 22.49 3.43
|
||||||
|
34 1 5.77 18.66 3.97
|
||||||
|
35 1 7 7.59 18.42
|
||||||
|
36 1 39.76 27.63 17.98
|
||||||
|
37 1 10.26 23.18 5.11
|
||||||
|
38 1 23.23 21.37 17.38
|
||||||
|
39 1 7.47 37.37 5.57
|
||||||
|
40 1 0.73 21.6 14.78
|
||||||
|
41 1 2.27 30.22 14.93
|
||||||
|
42 1 7.39 28.22 14.88
|
||||||
|
43 1 27.48 1.11 25.02
|
||||||
|
44 1 8.37 13.19 14.64
|
||||||
|
45 1 7.11 33.57 0.65
|
||||||
|
46 1 34.19 35.11 3.17
|
||||||
|
47 1 7.52 3.2 20.33
|
||||||
|
48 1 1.02 17.69 37.85
|
||||||
|
49 1 8.59 6.21 10.26
|
||||||
|
50 1 2.89 16.81 30.02
|
||||||
|
51 1 27.05 9.07 32.8
|
||||||
|
52 1 12.32 14.79 21.11
|
||||||
|
53 1 26.63 22.69 16.75
|
||||||
|
54 1 31.6 2.79 20.45
|
||||||
|
55 1 35.11 0.74 12.16
|
||||||
|
56 1 29.71 31.23 37.63
|
||||||
|
57 1 38.22 19.02 18.12
|
||||||
|
58 1 10.95 17.4 0.39
|
||||||
|
59 1 1.65 19.87 6.67
|
||||||
|
60 1 5.15 1.94 14.61
|
||||||
|
61 1 8.2 31.43 15.72
|
||||||
|
62 1 0.55 20.85 2.45
|
||||||
|
63 1 15.27 31.74 0.33
|
||||||
|
64 1 17.9 9.84 23.87
|
||||||
|
65 1 1.46 8.39 19.24
|
||||||
|
66 1 37.79 25.11 12.24
|
||||||
|
67 1 14.11 27.19 30.7
|
||||||
|
68 1 29.39 24.12 38.92
|
||||||
|
69 1 39.15 20.32 39.86
|
||||||
|
70 1 11.79 11.38 30.6
|
||||||
|
71 1 29.87 30.18 32.5
|
||||||
|
72 1 11.06 37.8 30.18
|
||||||
|
73 1 20.11 4.59 35.57
|
||||||
|
74 1 37.19 27.23 1.44
|
||||||
|
75 1 18.83 26.13 35.26
|
||||||
|
76 1 29.27 7.86 36.75
|
||||||
|
77 1 34.83 29.59 37.82
|
||||||
|
78 1 22.16 34.68 25.27
|
||||||
|
79 1 5.95 14.65 25.55
|
||||||
|
80 1 -0.04 3.48 29.91
|
||||||
|
81 1 14.69 6.75 38.06
|
||||||
|
82 1 16.8 23.69 3.14
|
||||||
|
83 1 14.52 38.72 21.61
|
||||||
|
84 1 37.36 15.13 27.98
|
||||||
|
85 1 29.79 17.03 27.55
|
||||||
|
86 1 21.01 0.39 0.9
|
||||||
|
87 1 35.3 6.45 14.41
|
||||||
|
88 1 13.74 34.69 10.01
|
||||||
|
89 1 13.83 7.92 31.88
|
||||||
|
90 1 26.88 37.81 22.36
|
||||||
|
91 1 31.76 7.34 10.03
|
||||||
|
92 1 11.98 37.49 19.61
|
||||||
|
93 1 29.19 31.74 20.69
|
||||||
|
94 1 39.15 10.97 21.06
|
||||||
|
95 1 1.47 5 22.21
|
||||||
|
96 1 -0.1 1.33 16.26
|
||||||
|
97 1 34.74 34.78 30.66
|
||||||
|
98 1 22.09 26.78 2.27
|
||||||
|
99 1 36.58 34.8 16.19
|
||||||
|
100 1 19.09 24.88 15.75
|
||||||
|
101 1 2.21 31.42 38.32
|
||||||
|
102 1 28.02 8.18 29.77
|
||||||
|
103 1 15.99 16.78 17.61
|
||||||
|
104 1 32.43 12.2 35.3
|
||||||
|
105 1 26.54 38.8 30.88
|
||||||
|
106 1 35.58 22.23 18.31
|
||||||
|
107 1 28.3 30.81 2.96
|
||||||
|
108 1 8.95 32.9 9.02
|
||||||
|
109 1 28.51 30.02 29.39
|
||||||
|
110 1 13 5.35 34.26
|
||||||
|
111 1 37.9 36.79 1.37
|
||||||
|
112 1 12.78 1.99 40.66
|
||||||
|
113 1 21.19 34.55 17.45
|
||||||
|
114 1 10.5 20 5.07
|
||||||
|
115 1 16.19 21.64 18.49
|
||||||
|
116 1 14.62 26.41 19.88
|
||||||
|
117 1 27.97 2.89 28.03
|
||||||
|
118 1 29.44 14.35 39.04
|
||||||
|
119 1 2.29 24.16 33.8
|
||||||
|
120 1 39.22 15.81 32.02
|
||||||
|
121 1 7.31 19.66 18.18
|
||||||
|
122 1 27.67 7.98 15.53
|
||||||
|
123 1 31.23 4.04 33
|
||||||
|
124 1 29.52 39.44 28.71
|
||||||
|
125 1 30.86 20.28 15.84
|
||||||
|
126 1 32.25 7.44 19.79
|
||||||
|
127 1 34.68 15.68 1.18
|
||||||
|
128 1 16.58 27.98 27.97
|
||||||
|
129 1 32.27 24.24 15.82
|
||||||
|
130 1 3.86 6.57 39.8
|
||||||
|
131 1 9.1 2.88 13.12
|
||||||
|
132 1 17.84 27.8 11.79
|
||||||
|
133 1 4.77 10.88 6.75
|
||||||
|
134 1 16.58 24.21 24.5
|
||||||
|
135 1 10.17 19.31 38.32
|
||||||
|
136 1 6.27 7.81 36.44
|
||||||
|
137 1 34.76 37.89 29.76
|
||||||
|
138 1 40.99 38.22 35.21
|
||||||
|
139 1 25.04 21.79 36.88
|
||||||
|
140 1 4.78 15.35 16.44
|
||||||
|
141 1 19.24 5.77 40.18
|
||||||
|
142 1 13.59 11.27 37.14
|
||||||
|
143 1 1.61 23.83 39.61
|
||||||
|
144 1 6.02 33.07 3.77
|
||||||
|
145 1 0.85 7.4 35.42
|
||||||
|
146 1 6.47 40.34 4.65
|
||||||
|
147 1 16.45 36.52 15.44
|
||||||
|
148 1 19.58 9.5 1.64
|
||||||
|
149 1 1.36 1.72 35.53
|
||||||
|
150 1 11.74 5.48 4.98
|
||||||
|
151 1 25.45 40.36 15.44
|
||||||
|
152 1 19.09 0.74 36.18
|
||||||
|
153 1 31.78 37.98 1.84
|
||||||
|
154 1 23.26 18.47 38.56
|
||||||
|
155 1 7.29 22.87 25.86
|
||||||
|
156 1 2.36 7.83 8.78
|
||||||
|
157 1 39.61 25.94 21.12
|
||||||
|
158 1 7.78 18.97 25.29
|
||||||
|
159 1 36.56 19.61 26.7
|
||||||
|
160 1 4.64 12.06 19.9
|
||||||
|
161 1 21.05 33.08 0.87
|
||||||
|
162 1 33.93 22.87 39.71
|
||||||
|
163 1 33.62 29.48 20.83
|
||||||
|
164 1 0.64 18.79 9.52
|
||||||
|
165 1 27.53 16.7 22.51
|
||||||
|
166 1 17.66 9.84 14.61
|
||||||
|
167 1 31.23 22.44 24.98
|
||||||
|
168 1 39.3 34.88 11.03
|
||||||
|
169 1 24.01 10.56 0.09
|
||||||
|
170 1 15.81 33.44 18.52
|
||||||
|
171 1 19.92 30.61 19.25
|
||||||
|
172 1 16.49 3.95 38.28
|
||||||
|
173 1 18.6 38.87 24.98
|
||||||
|
174 1 33.04 25.55 8.57
|
||||||
|
175 1 16.9 35.09 22.94
|
||||||
|
176 1 15.18 6.74 2.33
|
||||||
|
177 1 40.54 12.58 31.65
|
||||||
|
178 1 21.21 37.62 14.35
|
||||||
|
179 1 33.52 38.19 14.89
|
||||||
|
180 1 22.06 12.49 29.81
|
||||||
|
181 1 19.49 29.03 2.52
|
||||||
|
182 1 26.97 18.55 38.45
|
||||||
|
183 1 24.1 11.86 17.22
|
||||||
|
184 1 12.02 0.55 10.39
|
||||||
|
185 1 3.8 35.94 19.94
|
||||||
|
186 1 8.31 14.31 37.4
|
||||||
|
187 1 29.03 8.28 22.92
|
||||||
|
188 1 18.92 0.22 27.87
|
||||||
|
189 1 26.79 24.9 24.62
|
||||||
|
190 1 36.59 18.86 21.13
|
||||||
|
191 1 33.06 13.58 30.17
|
||||||
|
192 1 32.37 2.02 39.69
|
||||||
|
193 1 22.65 25.97 32.59
|
||||||
|
194 1 21.81 38.04 33.85
|
||||||
|
195 1 36.82 37.68 19.22
|
||||||
|
196 1 32.48 31.43 33.66
|
||||||
|
197 1 8.75 36.66 20.34
|
||||||
|
198 1 14.88 15.11 28.76
|
||||||
|
199 1 22.83 28.55 29.5
|
||||||
|
200 1 2.98 12.06 2.88
|
||||||
|
201 1 3.01 37 6.91
|
||||||
|
202 1 14.79 16.69 3.66
|
||||||
|
203 1 12.62 38.28 0.97
|
||||||
|
204 1 40.07 21.27 25.25
|
||||||
|
205 1 34.58 6.14 39.48
|
||||||
|
206 1 11.51 30.52 33.53
|
||||||
|
207 1 32.22 9.28 30.52
|
||||||
|
208 1 0.7 4.01 38.87
|
||||||
|
209 1 32.66 39.86 36.84
|
||||||
|
210 1 27.34 34.57 21.76
|
||||||
|
211 1 13.7 23.12 8.34
|
||||||
|
212 1 28 9.71 6.29
|
||||||
|
213 1 31.69 26.39 38.19
|
||||||
|
214 1 2.04 20.93 36.95
|
||||||
|
215 1 30.31 26.61 12.31
|
||||||
|
216 1 25.37 20.63 9.4
|
||||||
|
217 1 16.29 5.62 14.04
|
||||||
|
218 1 1.36 1.95 4.97
|
||||||
|
219 1 38.75 26.8 5.62
|
||||||
|
220 1 40.28 29.89 12.27
|
||||||
|
221 1 0.52 31.22 7.58
|
||||||
|
222 1 15.64 21.64 14.71
|
||||||
|
223 1 10.11 28.8 9.67
|
||||||
|
224 1 19.03 37.3 38.87
|
||||||
|
225 1 12.07 6.46 19.25
|
||||||
|
226 1 36.22 21.11 15.02
|
||||||
|
227 1 12.49 15.69 7.21
|
||||||
|
228 1 25.2 30.8 19.71
|
||||||
|
229 1 8.24 35.22 23.02
|
||||||
|
230 1 9.94 4.1 1.86
|
||||||
|
231 1 4.31 19.07 26.23
|
||||||
|
232 1 22.03 19.99 14.19
|
||||||
|
233 1 30.84 5.24 2.75
|
||||||
|
234 1 35.51 30.52 32.3
|
||||||
|
235 1 3.88 20.41 39.48
|
||||||
|
236 1 30.86 0.39 31.56
|
||||||
|
237 1 25.91 27.12 39.04
|
||||||
|
238 1 33.39 5.37 4.51
|
||||||
|
239 1 20.58 28.33 37.53
|
||||||
|
240 1 11.83 21.81 39.11
|
||||||
|
241 1 39.94 5.2 5.73
|
||||||
|
242 1 29.89 33.21 15.44
|
||||||
|
243 1 23.42 15.38 30.98
|
||||||
|
244 1 28.66 11.56 16.13
|
||||||
|
245 1 16.74 20.43 21.72
|
||||||
|
246 1 9.31 0.26 22.42
|
||||||
|
247 1 4.38 37.78 14.12
|
||||||
|
248 1 13.86 4.65 16.99
|
||||||
|
249 1 6.72 27.43 8.14
|
||||||
|
250 1 33.45 18.74 19.98
|
||||||
|
251 1 17.34 14.55 35.57
|
||||||
|
252 1 14.21 37.39 28.76
|
||||||
|
253 1 26.29 29.06 22.26
|
||||||
|
254 1 36.52 26.18 15.62
|
||||||
|
255 1 17.6 8.81 10.14
|
||||||
|
256 1 21.95 25.19 17.69
|
||||||
|
257 1 17.4 7.46 18.59
|
||||||
|
258 1 6.15 29.7 35.99
|
||||||
|
259 1 9.73 37.39 24.96
|
||||||
|
260 1 28.58 28.21 36.19
|
||||||
|
261 1 8.24 13.72 32.2
|
||||||
|
262 1 13.25 34.6 22.71
|
||||||
|
263 1 38.58 7.98 10.3
|
||||||
|
264 1 18.29 29.75 23.51
|
||||||
|
265 1 3.74 13.22 31.05
|
||||||
|
266 1 30.78 0.7 24.57
|
||||||
|
267 1 24.5 12.94 10.81
|
||||||
|
268 1 33.88 26.44 1.96
|
||||||
|
269 1 29.92 22.6 9.59
|
||||||
|
270 1 15.87 21.94 33.44
|
||||||
|
271 1 23.63 8.41 10.95
|
||||||
|
272 1 26.53 0.01 7.58
|
||||||
|
273 1 33.88 8.73 2.52
|
||||||
|
274 1 39.74 31.46 36.87
|
||||||
|
275 1 13.28 39.54 37
|
||||||
|
276 1 24.74 35.41 32.14
|
||||||
|
277 1 17.3 34.32 6.85
|
||||||
|
278 1 24.43 13.36 5.63
|
||||||
|
279 1 31.23 17.12 7.11
|
||||||
|
280 1 15.58 37.85 34.06
|
||||||
|
281 1 25.93 38.17 3.13
|
||||||
|
282 1 31.84 34.34 39.67
|
||||||
|
283 1 14.41 17.74 14.43
|
||||||
|
284 1 9.4 1.78 29.53
|
||||||
|
285 1 8.29 29.61 6.81
|
||||||
|
286 1 7.13 17.36 -0.19
|
||||||
|
287 1 38.04 19.52 11.25
|
||||||
|
288 1 34.87 32.77 38.75
|
||||||
|
289 1 27.18 22.49 5.69
|
||||||
|
290 1 29.69 27.11 20.29
|
||||||
|
291 1 25.23 2.22 39.75
|
||||||
|
292 1 35.8 17.1 36.09
|
||||||
|
293 1 20.53 17.67 35.47
|
||||||
|
294 1 23.41 31.36 2.24
|
||||||
|
295 1 25.17 20.09 29.2
|
||||||
|
296 1 0.32 9.28 39.74
|
||||||
|
297 1 22.49 18.77 29.89
|
||||||
|
298 1 38.64 0.85 39.43
|
||||||
|
299 1 18.55 5.87 9.15
|
||||||
|
300 1 35.21 28.69 25.76
|
||||||
|
301 1 39.24 15.68 6.36
|
||||||
|
302 1 5.91 13.29 3.92
|
||||||
|
303 1 0.5 21.25 21.62
|
||||||
|
304 1 34.39 9.43 18.59
|
||||||
|
305 1 22.7 1.03 8.79
|
||||||
|
306 1 40.15 16.25 24.87
|
||||||
|
307 1 16.52 13.69 10.25
|
||||||
|
308 1 6.88 36.77 39.57
|
||||||
|
309 1 11.95 37.1 7.59
|
||||||
|
310 1 19.49 26.66 9.76
|
||||||
|
311 1 36.34 29.89 29.31
|
||||||
|
312 1 18.76 35.75 12.72
|
||||||
|
313 1 23.15 38.68 4.96
|
||||||
|
314 1 10.78 17.11 34.38
|
||||||
|
315 1 13.58 14.89 0.34
|
||||||
|
316 1 4.73 33.88 32.41
|
||||||
|
317 1 12.68 29.51 17.07
|
||||||
|
318 1 9.45 27 4.98
|
||||||
|
319 1 29.02 19.27 6.45
|
||||||
|
320 1 19.09 36.35 19.84
|
||||||
|
321 1 23.13 6.75 19.78
|
||||||
|
322 1 8.02 34.1 26.95
|
||||||
|
323 1 26.03 14.18 1.57
|
||||||
|
324 1 15.01 34.16 28.32
|
||||||
|
325 1 28.71 36.53 15.08
|
||||||
|
326 1 9.64 13.94 24.05
|
||||||
|
327 1 1.24 36.96 30.41
|
||||||
|
328 1 15.44 31.39 4.77
|
||||||
|
329 1 25.72 14.42 38.01
|
||||||
|
330 1 7.35 31.84 12.61
|
||||||
|
331 1 32.33 16.79 3.07
|
||||||
|
332 1 15.86 0.39 8.39
|
||||||
|
333 1 27.69 7.32 25.74
|
||||||
|
334 1 27.77 1.17 4.96
|
||||||
|
335 1 29.38 26.68 23.48
|
||||||
|
336 1 14.95 3.41 2.13
|
||||||
|
337 1 2.45 38.8 17.54
|
||||||
|
338 1 9.18 27.58 31.12
|
||||||
|
339 1 36.62 15.23 23.66
|
||||||
|
340 1 12.23 30.74 10.85
|
||||||
|
341 1 12.87 0.23 24.05
|
||||||
|
342 1 33.85 35.75 19.95
|
||||||
|
343 1 36.36 30.35 13.94
|
||||||
|
344 1 38.11 8.15 5.49
|
||||||
|
345 1 15.58 1.29 29.89
|
||||||
|
346 1 25.95 30.47 39.19
|
||||||
|
347 1 27.69 15.5 13.37
|
||||||
|
348 1 25.48 13.7 25.29
|
||||||
|
349 1 0.72 39.53 4.41
|
||||||
|
350 1 8.75 15.21 5.79
|
||||||
|
351 1 10.49 26.46 27.25
|
||||||
|
352 1 16.9 20.08 26.58
|
||||||
|
353 1 3.95 4.33 20.25
|
||||||
|
354 1 18.03 7.66 31.87
|
||||||
|
355 1 21.35 2.88 17.26
|
||||||
|
356 1 32.92 22.68 6.56
|
||||||
|
357 1 21.72 4.62 12.02
|
||||||
|
358 1 37.6 6.04 25.2
|
||||||
|
359 1 22.22 23.78 7.36
|
||||||
|
360 1 12.53 19.53 10.6
|
||||||
|
361 1 17.87 26.05 19.32
|
||||||
|
362 1 20.94 30.75 31.23
|
||||||
|
363 1 22.33 11.87 35.79
|
||||||
|
364 1 28.54 6.88 10.52
|
||||||
|
365 1 29.58 26.13 8.56
|
||||||
|
366 1 19.06 24.2 21.73
|
||||||
|
367 1 25.05 38.41 26.91
|
||||||
|
368 1 18.66 40.35 4.69
|
||||||
|
369 1 11.87 6.75 12.72
|
||||||
|
370 1 17.99 11.82 37.79
|
||||||
|
371 1 8.97 24.7 0.61
|
||||||
|
372 1 26.89 1.52 31.33
|
||||||
|
373 1 6.88 22.51 14.06
|
||||||
|
374 1 29.51 3.87 13.35
|
||||||
|
375 1 0.95 14.53 10
|
||||||
|
376 1 26.43 31.54 11.63
|
||||||
|
377 1 6.1 35.16 11.28
|
||||||
|
378 1 10.2 15.91 28.7
|
||||||
|
379 1 13.24 25.67 24.3
|
||||||
|
380 1 34.5 3.91 20.22
|
||||||
|
381 1 22.48 2.17 5.2
|
||||||
|
382 1 24.26 16.15 11.3
|
||||||
|
383 1 20.63 32.57 27.3
|
||||||
|
384 1 39.95 6.81 1.05
|
||||||
|
385 1 24.38 34.78 38.27
|
||||||
|
386 1 4.63 23.56 0.55
|
||||||
|
387 1 33.5 8.38 36.97
|
||||||
|
388 1 5.76 27.14 12.06
|
||||||
|
389 1 37.45 26.58 32.25
|
||||||
|
390 1 2.8 8.96 32.35
|
||||||
|
391 1 5.29 39.84 30.1
|
||||||
|
392 1 29.2 26.49 31.18
|
||||||
|
393 1 33.91 27.39 12.89
|
||||||
|
394 1 3.37 14.19 39.34
|
||||||
|
395 1 30.68 28.7 27
|
||||||
|
396 1 2.59 18.45 19.38
|
||||||
|
397 1 13.55 0.75 27.35
|
||||||
|
398 1 3.82 20.12 16.1
|
||||||
|
399 1 37.72 0.72 34.29
|
||||||
|
400 1 23.85 3.32 19.46
|
||||||
|
401 1 4.78 0.67 38.23
|
||||||
|
402 1 22.78 23.26 38.6
|
||||||
|
403 1 11.56 39.29 4.23
|
||||||
|
404 1 21.38 32.45 5.39
|
||||||
|
405 1 8.32 19.42 9.52
|
||||||
|
406 1 28.43 31.07 17.8
|
||||||
|
407 1 11.02 5.75 39.84
|
||||||
|
408 1 27.36 36.71 7.62
|
||||||
|
409 1 34.22 16.74 27.88
|
||||||
|
410 1 3.22 22.01 27.42
|
||||||
|
411 1 29.2 15.76 32.33
|
||||||
|
412 1 25.29 23.44 2.2
|
||||||
|
413 1 10.8 32.43 39.96
|
||||||
|
414 1 32.2 1.41 4.44
|
||||||
|
415 1 32.94 15.59 37.21
|
||||||
|
416 1 6.8 8.08 0.84
|
||||||
|
417 1 10.42 9.91 37.73
|
||||||
|
418 1 1.18 31.39 3.93
|
||||||
|
419 1 10.1 36.38 38.57
|
||||||
|
420 1 32.89 26.96 35.07
|
||||||
|
421 1 28.12 11.93 25.96
|
||||||
|
422 1 4.9 29.15 -0.25
|
||||||
|
423 1 2.21 27.99 3.72
|
||||||
|
424 1 11.33 3.94 25.55
|
||||||
|
425 1 3.3 30.26 10.78
|
||||||
|
426 1 11.57 27.26 19.31
|
||||||
|
427 1 21.79 32.67 13.3
|
||||||
|
428 1 4.96 26.53 33.78
|
||||||
|
429 1 33.41 32.87 18.46
|
||||||
|
430 1 13.92 30.37 20.3
|
||||||
|
431 1 16.91 3.5 11.57
|
||||||
|
432 1 -0.06 4.42 34.05
|
||||||
|
433 1 7.04 24.33 16.85
|
||||||
|
434 1 28.66 11.93 19.73
|
||||||
|
435 1 30.21 1.75 36.36
|
||||||
|
436 1 3.91 6.2 6.26
|
||||||
|
437 1 7.01 25.6 27.34
|
||||||
|
438 1 34 1.06 18.12
|
||||||
|
439 1 29.14 8.5 3.09
|
||||||
|
440 1 40.13 23.52 16.94
|
||||||
|
441 1 21.69 22.38 26.78
|
||||||
|
442 1 18.44 32.85 39.84
|
||||||
|
443 1 38.87 1.99 27.63
|
||||||
|
444 1 10.47 12.02 33.68
|
||||||
|
445 1 9.65 19.94 21.88
|
||||||
|
446 1 25.04 8.12 27.89
|
||||||
|
447 1 12.18 16.78 31.09
|
||||||
|
448 1 38.31 8.2 30.6
|
||||||
|
449 1 0.11 5.21 18.12
|
||||||
|
450 1 23.48 7.88 38.7
|
||||||
|
451 1 7.9 11.99 7.04
|
||||||
|
452 1 2.09 34.5 8.64
|
||||||
|
453 1 19 18.3 0.42
|
||||||
|
454 1 37.94 18.06 15.21
|
||||||
|
455 1 25.05 33.33 29.55
|
||||||
|
456 1 33.74 37.88 34.54
|
||||||
|
457 1 36.07 29.5 17.47
|
||||||
|
458 1 27.7 13.54 10.46
|
||||||
|
459 1 27.18 23.18 21.06
|
||||||
|
460 1 17.49 2.04 23.22
|
||||||
|
461 1 23.84 26.31 36.76
|
||||||
|
462 1 31.08 32.24 24.92
|
||||||
|
463 1 17.7 28.73 16.66
|
||||||
|
464 1 1.59 15.5 18.04
|
||||||
|
465 1 33.49 18.99 8.75
|
||||||
|
466 1 1.19 8.43 28.01
|
||||||
|
467 1 5.43 20.26 22.25
|
||||||
|
468 1 23.3 5.31 15.05
|
||||||
|
469 1 27.09 4.47 21.96
|
||||||
|
470 1 26.61 27.48 28.83
|
||||||
|
471 1 13 3.18 13.4
|
||||||
|
472 1 36.09 34.56 10.58
|
||||||
|
473 1 19.09 15.33 7.48
|
||||||
|
474 1 12.94 18.16 22.07
|
||||||
|
475 1 38.8 16.16 36.73
|
||||||
|
476 1 16.73 39.94 -0.46
|
||||||
|
477 1 3.64 12.56 9.42
|
||||||
|
478 1 27.64 3.31 18.29
|
||||||
|
479 1 15.58 12.36 4.52
|
||||||
|
480 1 15.37 11.18 18.19
|
||||||
|
481 1 37.52 11.23 14.94
|
||||||
|
482 1 37.16 2.3 10.01
|
||||||
|
483 1 36.19 9.86 21.99
|
||||||
|
484 1 36.38 21.09 4.76
|
||||||
|
485 1 38.15 12.94 25.35
|
||||||
|
486 1 15.1 29.65 24.64
|
||||||
|
487 1 16.54 29.12 38.85
|
||||||
|
488 1 33.86 11.39 14.4
|
||||||
|
489 1 27.99 18.55 9.87
|
||||||
|
490 1 0.66 1.26 8.28
|
||||||
|
491 1 29.89 33.84 29.75
|
||||||
|
492 1 6.64 33.3 6.74
|
||||||
|
493 1 31.47 0.39 11.25
|
||||||
|
494 1 8.76 15.96 10.74
|
||||||
|
495 1 39.6 15.8 21.04
|
||||||
|
496 1 22.38 28.55 19.85
|
||||||
|
497 1 25.87 6.23 5.4
|
||||||
|
498 1 36.24 26.67 38.61
|
||||||
|
499 1 23.05 8.79 7.01
|
||||||
|
500 1 32.05 4.16 8.87
|
||||||
|
501 1 35.3 13.36 38.03
|
||||||
|
502 1 39.91 25.91 36.45
|
||||||
|
503 1 32.17 17.27 31.82
|
||||||
|
504 1 29.99 21.54 20.57
|
||||||
|
505 1 9.39 0.57 34.17
|
||||||
|
506 1 22.12 17.22 13.03
|
||||||
|
507 1 15.23 16.27 24.39
|
||||||
|
508 1 26.32 25.89 13.26
|
||||||
|
509 1 39.25 3.46 1.34
|
||||||
|
510 1 32.56 10.28 7.96
|
||||||
|
511 1 25.76 14.8 34.79
|
||||||
|
512 1 32.12 5.38 36.94
|
||||||
|
513 1 17.74 15.37 14.87
|
||||||
|
514 1 21.93 3.26 25.26
|
||||||
|
515 1 24.05 0.48 36.27
|
||||||
|
516 1 8.2 19.02 33.92
|
||||||
|
517 1 33.07 25.88 24.79
|
||||||
|
518 1 12.54 0.52 32.8
|
||||||
|
519 1 18.5 6.34 23.21
|
||||||
|
520 1 35.93 10.26 34.79
|
||||||
|
521 1 19.33 11.86 6.94
|
||||||
|
522 1 1.63 5.31 25.43
|
||||||
|
523 1 30.62 36.78 30.77
|
||||||
|
524 1 12.25 26.79 13.74
|
||||||
|
525 1 21 1.47 13.99
|
||||||
|
526 1 22.24 29.36 34.11
|
||||||
|
527 1 29.05 1.74 0.24
|
||||||
|
528 1 19.34 25.14 39.77
|
||||||
|
529 1 12.9 25.42 35.42
|
||||||
|
530 1 4.1 20.69 33.31
|
||||||
|
531 1 35.38 5.64 9.17
|
||||||
|
532 1 5.01 34.03 23.36
|
||||||
|
533 1 15.7 10.01 7.1
|
||||||
|
534 1 25.95 19.48 24.73
|
||||||
|
535 1 11.15 4.16 21.43
|
||||||
|
536 1 1.47 3.23 13.72
|
||||||
|
537 1 26.54 36.76 17.48
|
||||||
|
538 1 7.65 30.6 27.73
|
||||||
|
539 1 18.59 3.05 3.32
|
||||||
|
540 1 6.92 36.14 15.67
|
||||||
|
541 1 12.72 36.21 32.72
|
||||||
|
542 1 16.33 26.24 14.35
|
||||||
|
543 1 21.66 12.61 26.18
|
||||||
|
544 1 15.72 32.37 10.71
|
||||||
|
545 1 27.57 15.75 4.97
|
||||||
|
546 1 20.18 39.13 18.44
|
||||||
|
547 1 18.77 17.09 4.74
|
||||||
|
548 1 12.75 14.08 17.89
|
||||||
|
549 1 10.71 37.26 35.13
|
||||||
|
550 1 20.88 32.12 9.94
|
||||||
|
551 1 8.69 0.06 9.54
|
||||||
|
552 1 1.58 12.61 26.42
|
||||||
|
553 1 10.29 22.73 13.14
|
||||||
|
554 1 23.31 25.7 4.97
|
||||||
|
555 1 36.7 30.78 5.26
|
||||||
|
556 1 5.6 28.71 23.76
|
||||||
|
557 1 13.04 7.91 15.46
|
||||||
|
558 1 40.24 33.53 34.5
|
||||||
|
559 1 39.7 18.36 34.25
|
||||||
|
560 1 23.52 22.84 21.14
|
||||||
|
561 1 32.82 27.9 5.02
|
||||||
|
562 1 1.52 33.77 27.04
|
||||||
|
563 1 31.48 18.68 13.1
|
||||||
|
564 1 34 24.07 34.55
|
||||||
|
565 1 34.72 25.03 30.45
|
||||||
|
566 1 18.92 5.7 16.54
|
||||||
|
567 1 15.26 40.2 16.97
|
||||||
|
568 1 24.55 16.8 26.26
|
||||||
|
569 1 17.59 18.03 31.75
|
||||||
|
570 1 12.08 27.38 38.42
|
||||||
|
571 1 31.42 21.91 35.27
|
||||||
|
572 1 9.68 6.93 36.96
|
||||||
|
573 1 22.93 15.19 2.53
|
||||||
|
574 1 11.83 24.38 2.24
|
||||||
|
575 1 16.02 12.44 31.42
|
||||||
|
576 1 20.24 10.7 20.15
|
||||||
|
577 1 37.38 17.37 40.63
|
||||||
|
578 1 3.74 17.41 22.49
|
||||||
|
579 1 23.21 9.86 23.99
|
||||||
|
580 1 2.49 36.56 38
|
||||||
|
581 1 20.51 1.54 22.62
|
||||||
|
582 1 8.23 33.44 33.15
|
||||||
|
583 1 30.93 8.12 14.85
|
||||||
|
584 1 36.35 3.92 37.65
|
||||||
|
585 1 5.57 10.63 28.64
|
||||||
|
586 1 30.24 22.84 4.6
|
||||||
|
587 1 3.24 15.97 7.43
|
||||||
|
588 1 22.64 0.7 27.09
|
||||||
|
589 1 1.64 40.37 27.74
|
||||||
|
590 1 30.53 35.28 3.5
|
||||||
|
591 1 25.55 4.7 2.53
|
||||||
|
592 1 22.04 29.56 12.29
|
||||||
|
593 1 3.42 8.76 2.28
|
||||||
|
594 1 16.37 37.65 7.87
|
||||||
|
595 1 20.65 12.75 2.9
|
||||||
|
596 1 8.07 20.49 2.6
|
||||||
|
597 1 20.04 24.72 28.2
|
||||||
|
598 1 29.75 0.33 16.1
|
||||||
|
599 1 31.36 33.09 8.02
|
||||||
|
600 1 8.6 10.56 2.65
|
||||||
|
601 1 20.55 33.93 33.71
|
||||||
|
602 1 23.11 -0.42 31.7
|
||||||
|
603 1 27.07 6.69 18.5
|
||||||
|
604 1 15.65 23.71 11.8
|
||||||
|
605 1 23.88 24.17 30.1
|
||||||
|
606 1 0.79 32.46 16.99
|
||||||
|
607 1 25.96 20.19 2.43
|
||||||
|
608 1 35.16 12.33 4.73
|
||||||
|
609 1 16.53 17.12 10.45
|
||||||
|
610 1 19.74 35.94 8.62
|
||||||
|
611 1 -0.24 28.29 28.3
|
||||||
|
612 1 33.15 4.39 12.64
|
||||||
|
613 1 24.27 18.59 33.59
|
||||||
|
614 1 0.3 9.61 23.54
|
||||||
|
615 1 5.52 10.89 34.71
|
||||||
|
616 1 9.85 26.26 34.42
|
||||||
|
617 1 25.54 37.74 39.13
|
||||||
|
618 1 4.11 29.65 5.81
|
||||||
|
619 1 30.86 22.72 31.07
|
||||||
|
620 1 39.54 34.54 23.24
|
||||||
|
621 1 15.03 9.34 12.11
|
||||||
|
622 1 21.93 38.49 9.53
|
||||||
|
623 1 18.21 19.2 16.65
|
||||||
|
624 1 38.71 32.83 14.49
|
||||||
|
625 1 37.74 36.38 31.43
|
||||||
|
626 1 7.57 2.2 1.07
|
||||||
|
627 1 12.27 10.05 1.53
|
||||||
|
628 1 18.32 19.55 12.51
|
||||||
|
629 1 12.49 24.81 16.57
|
||||||
|
630 1 35.07 31.62 22.85
|
||||||
|
631 1 4.91 19.68 30.45
|
||||||
|
632 1 11.36 2.92 36.19
|
||||||
|
633 1 26.76 35.53 1.29
|
||||||
|
634 1 1.13 14.55 14.77
|
||||||
|
635 1 8.2 25.14 37.83
|
||||||
|
636 1 -0.5 0.85 23.08
|
||||||
|
637 1 17.95 18.01 37.61
|
||||||
|
638 1 2.44 37.75 0.71
|
||||||
|
639 1 3.77 23.41 17.91
|
||||||
|
640 1 3.34 14.41 35.96
|
||||||
|
641 1 14.89 31.42 31.76
|
||||||
|
642 1 15.72 22.91 30.66
|
||||||
|
643 1 37.42 3.13 5.51
|
||||||
|
644 1 1.51 38.14 20.78
|
||||||
|
645 1 12.55 18.16 25.81
|
||||||
|
646 1 18.98 15.88 29.21
|
||||||
|
647 1 17.33 32.04 27.87
|
||||||
|
648 1 31.21 37.38 22.84
|
||||||
|
649 1 11.88 32.4 31
|
||||||
|
650 1 25.1 2.19 12.69
|
||||||
|
651 1 38.85 39.1 27.87
|
||||||
|
652 1 5.9 16.14 33.34
|
||||||
|
653 1 6.3 17.5 36.46
|
||||||
|
654 1 2.28 25.02 12.53
|
||||||
|
655 1 19.33 25.49 6.78
|
||||||
|
656 1 8.57 37.22 8.4
|
||||||
|
657 1 22 38.61 24.14
|
||||||
|
658 1 35.63 3.23 2.15
|
||||||
|
659 1 37.35 22.64 9.99
|
||||||
|
660 1 25.46 28.22 33.18
|
||||||
|
661 1 13.99 4.21 9.07
|
||||||
|
662 1 9.04 40.64 37.59
|
||||||
|
663 1 17.46 6.49 27.93
|
||||||
|
664 1 1.42 6.14 30.2
|
||||||
|
665 1 25.82 28.28 10.33
|
||||||
|
666 1 30.71 30.2 -0.02
|
||||||
|
667 1 8.05 29.32 0.62
|
||||||
|
668 1 6.49 3.17 6.65
|
||||||
|
669 1 7.77 39.88 26.03
|
||||||
|
670 1 28.53 12.14 30.96
|
||||||
|
671 1 6.25 12.64 39.55
|
||||||
|
672 1 3.78 7.96 25.83
|
||||||
|
673 1 28.69 29.58 6.61
|
||||||
|
674 1 5.32 18.55 8.6
|
||||||
|
675 1 5.3 11.44 14.19
|
||||||
|
676 1 39 12.03 36.99
|
||||||
|
677 1 11.08 32.51 19.12
|
||||||
|
678 1 38.48 1.03 20.34
|
||||||
|
679 1 38.47 11.31 10.12
|
||||||
|
680 1 3.65 20.3 11.99
|
||||||
|
681 1 27.18 11.39 3.4
|
||||||
|
682 1 29.61 20.72 38.86
|
||||||
|
683 1 31.88 4.82 24.75
|
||||||
|
684 1 14.52 36.61 25.66
|
||||||
|
685 1 21.68 19.96 24.58
|
||||||
|
686 1 1.2 13.59 23.16
|
||||||
|
687 1 37.71 5.97 35.28
|
||||||
|
688 1 19.81 22.04 37.54
|
||||||
|
689 1 40.67 27.07 10.14
|
||||||
|
690 1 38.57 13.96 13.75
|
||||||
|
691 1 18.15 17.19 21.63
|
||||||
|
692 1 3.76 27.51 30.32
|
||||||
|
693 1 11.39 25.09 7.96
|
||||||
|
694 1 28.95 22.02 13.33
|
||||||
|
695 1 31.72 35.46 35.33
|
||||||
|
696 1 15.17 6.03 23.94
|
||||||
|
697 1 9.63 9.42 22.18
|
||||||
|
698 1 27.76 4.1 38.61
|
||||||
|
699 1 27.37 37.46 11.07
|
||||||
|
700 1 35.69 15.24 6.39
|
||||||
|
701 1 21.92 33.09 36.84
|
||||||
|
702 1 4.79 15.51 13.28
|
||||||
|
703 1 9.31 26.44 22.8
|
||||||
|
704 1 30.14 38.31 6.98
|
||||||
|
705 1 4.33 6.66 13.77
|
||||||
|
706 1 3.66 27.15 37.83
|
||||||
|
707 1 0.44 24.06 29.62
|
||||||
|
708 1 35.4 9.59 9.8
|
||||||
|
709 1 33.77 39.44 21.41
|
||||||
|
710 1 29.2 18.74 24.38
|
||||||
|
711 1 34.14 30 7.36
|
||||||
|
712 1 16.02 4.37 6.43
|
||||||
|
713 1 35.75 39.41 40.58
|
||||||
|
714 1 15.32 11.84 23.24
|
||||||
|
715 1 32.52 24.39 20.97
|
||||||
|
716 1 11.45 2.9 7.16
|
||||||
|
717 1 7.07 34.28 36.04
|
||||||
|
718 1 11.41 8.83 7.57
|
||||||
|
719 1 29.29 27.79 16.55
|
||||||
|
720 1 2.41 9.16 16.14
|
||||||
|
721 1 13.14 38.07 12.01
|
||||||
|
722 1 37.45 14.26 18.3
|
||||||
|
723 1 34.64 18.37 16.65
|
||||||
|
724 1 29.26 34.28 33.46
|
||||||
|
725 1 13.67 19.83 3.04
|
||||||
|
726 1 19.64 2.6 32.95
|
||||||
|
727 1 23.61 23.55 11.34
|
||||||
|
728 1 6.87 22.5 36.5
|
||||||
|
729 1 36.78 28.34 22.96
|
||||||
|
730 1 11.3 13.98 9.84
|
||||||
|
731 1 20.82 19.73 9.16
|
||||||
|
732 1 12.65 12.61 6.16
|
||||||
|
733 1 9.25 7.81 25.28
|
||||||
|
734 1 25.4 29.36 5.84
|
||||||
|
735 1 17.86 9.06 4.45
|
||||||
|
736 1 35.84 40.51 26.06
|
||||||
|
737 1 26.97 21.28 31.59
|
||||||
|
738 1 39.94 38.14 24.86
|
||||||
|
739 1 3.16 17.07 2.49
|
||||||
|
740 1 14.08 15.4 36.99
|
||||||
|
741 1 26.1 13.88 29.68
|
||||||
|
742 1 26.36 20 20.56
|
||||||
|
743 1 12.02 6.35 27.65
|
||||||
|
744 1 11.21 19.14 15.27
|
||||||
|
745 1 35.86 22.93 26.81
|
||||||
|
746 1 32.26 12.62 2.68
|
||||||
|
747 1 29.36 4.91 6.86
|
||||||
|
748 1 20.14 7.97 29.32
|
||||||
|
749 1 25.53 11.2 36.18
|
||||||
|
750 1 30.36 14.25 24.79
|
||||||
|
751 1 29.84 38.37 39.29
|
||||||
|
752 1 15.79 36.4 4.26
|
||||||
|
753 1 32.59 14.17 10.29
|
||||||
|
754 1 13.89 34.54 15.42
|
||||||
|
755 1 12.13 33.62 7.27
|
||||||
|
756 1 25.86 23.81 33.97
|
||||||
|
757 1 18.4 31.27 34.96
|
||||||
|
758 1 6.58 40.49 17.57
|
||||||
|
759 1 5.64 39.86 23.05
|
||||||
|
760 1 25.32 33 16.24
|
||||||
|
761 1 0.98 10.99 12.21
|
||||||
|
762 1 32.86 23.75 12.41
|
||||||
|
763 1 32.91 1.3 26.94
|
||||||
|
764 1 9.46 8.66 31.47
|
||||||
|
765 1 17.49 15.53 1.82
|
||||||
|
766 1 8.17 18.16 15.3
|
||||||
|
767 1 4.84 30.63 26.32
|
||||||
|
768 1 6.75 37.1 30.8
|
||||||
|
769 1 7.16 5.72 15.74
|
||||||
|
770 1 20.09 17.82 19.18
|
||||||
|
771 1 1.02 27.99 32.54
|
||||||
|
772 1 21.44 1.28 38.4
|
||||||
|
773 1 21.06 14.62 37.08
|
||||||
|
774 1 27.82 18.99 15.96
|
||||||
|
775 1 33.51 21.46 22.82
|
||||||
|
776 1 8.29 2.79 17.09
|
||||||
|
777 1 18.14 11.41 28.62
|
||||||
|
778 1 17.94 28.54 32.73
|
||||||
|
779 1 36.1 9.54 40.1
|
||||||
|
780 1 36.55 2.62 22.97
|
||||||
|
781 1 27.29 10.41 39.35
|
||||||
|
782 1 22.04 37.76 2.02
|
||||||
|
783 1 23.01 30.08 16.58
|
||||||
|
784 1 6.34 15.31 21.61
|
||||||
|
785 1 7.3 22.39 7.74
|
||||||
|
786 1 38 5.77 21.04
|
||||||
|
787 1 32.93 12.85 26.58
|
||||||
|
788 1 22.43 15.36 16.72
|
||||||
|
789 1 18.54 2.38 8.35
|
||||||
|
790 1 0.62 31.88 23.84
|
||||||
|
791 1 39.56 30.3 21.7
|
||||||
|
792 1 7.56 11.78 25.2
|
||||||
|
793 1 16.05 3.98 26.72
|
||||||
|
794 1 24.33 36.16 13.16
|
||||||
|
795 1 26.38 31.24 35.77
|
||||||
|
796 1 14.94 26.46 -0.44
|
||||||
|
797 1 3.53 28 19.79
|
||||||
|
798 1 11.94 32.27 25.88
|
||||||
|
799 1 34.59 15.06 19.23
|
||||||
|
800 1 3.51 10.62 24.22
|
||||||
|
801 1 13.18 21.59 35.52
|
||||||
|
802 1 19.95 13.15 16.23
|
||||||
|
803 1 24.48 9.63 19.58
|
||||||
|
804 1 37.7 34.42 19.19
|
||||||
|
805 1 22.84 19.59 5.52
|
||||||
|
806 1 34.62 36.75 12.26
|
||||||
|
807 1 10.33 21.85 25.15
|
||||||
|
808 1 21.51 29.7 7.23
|
||||||
|
809 1 34.05 3 30.58
|
||||||
|
810 1 12.43 29.67 5.59
|
||||||
|
811 1 18.94 21.82 29.31
|
||||||
|
812 1 39.21 17.7 4
|
||||||
|
813 1 7.04 2.97 37.09
|
||||||
|
814 1 30.87 10.8 22.09
|
||||||
|
815 1 33.54 7.16 23.15
|
||||||
|
816 1 32.82 32.27 11.47
|
||||||
|
817 1 21.8 14.54 21.61
|
||||||
|
818 1 38.83 6.69 13.68
|
||||||
|
819 1 30.37 39.05 18.66
|
||||||
|
820 1 31.21 15.08 13.79
|
||||||
|
821 1 1.07 11.97 35.04
|
||||||
|
822 1 26.02 35.8 35.47
|
||||||
|
823 1 27.64 33.32 8.04
|
||||||
|
824 1 39.57 36.88 4.39
|
||||||
|
825 1 14.48 30.97 36.87
|
||||||
|
826 1 36.86 27.04 8.96
|
||||||
|
827 1 34.73 26.27 19.55
|
||||||
|
828 1 29.24 29.12 10.86
|
||||||
|
829 1 8.35 39.9 13.92
|
||||||
|
830 1 5.43 5.1 31.85
|
||||||
|
831 1 18.36 22.31 5.89
|
||||||
|
832 1 2.46 27.35 16.36
|
||||||
|
833 1 21.76 37.05 27.45
|
||||||
|
834 1 29.32 17.11 2.28
|
||||||
|
835 1 3.58 21.98 3.09
|
||||||
|
836 1 10.61 9.17 10.69
|
||||||
|
837 1 25.15 17.54 6.05
|
||||||
|
838 1 3.4 22.81 7.03
|
||||||
|
839 1 16.12 23.66 38.29
|
||||||
|
840 1 8.67 4.79 31.8
|
||||||
|
841 1 27.82 0.02 20.45
|
||||||
|
842 1 4.46 2.44 29.46
|
||||||
|
843 1 39.11 22.69 36.33
|
||||||
|
844 1 4.26 2.45 34.43
|
||||||
|
845 1 13.47 3.5 30.9
|
||||||
|
846 1 26.92 22.55 26.54
|
||||||
|
847 1 5.66 30.07 30.65
|
||||||
|
848 1 31.58 35.68 25.46
|
||||||
|
849 1 31.23 5.65 27.78
|
||||||
|
850 1 8.76 19.49 28.61
|
||||||
|
851 1 24.13 8.02 2.3
|
||||||
|
852 1 8.27 6.8 4.93
|
||||||
|
853 1 15.31 34.36 37.63
|
||||||
|
854 1 3.96 35.82 26.97
|
||||||
|
855 1 24.95 4.01 29.96
|
||||||
|
856 1 26.54 25.95 19.15
|
||||||
|
857 1 17.76 29.23 5.35
|
||||||
|
858 1 16.95 21.79 0.78
|
||||||
|
859 1 17.52 39.02 13.01
|
||||||
|
860 1 20.5 22.86 10.41
|
||||||
|
861 1 27.67 27.07 2.78
|
||||||
|
862 1 37.1 31.02 2.03
|
||||||
|
863 1 37.17 2.24 16.34
|
||||||
|
864 1 24.51 34.69 10.28
|
||||||
|
865 1 17.38 13.41 21.4
|
||||||
|
866 1 38 9.37 17.94
|
||||||
|
867 1 35.67 25.27 5.3
|
||||||
|
868 1 22.66 4.47 0.97
|
||||||
|
869 1 20.06 28.17 27.42
|
||||||
|
870 1 27.33 2.38 9.79
|
||||||
|
871 1 36.4 10.73 31.42
|
||||||
|
872 1 0.53 9.45 6.96
|
||||||
|
873 1 12.89 9.03 25.13
|
||||||
|
874 1 37.5 23.54 21.33
|
||||||
|
875 1 7.19 28.87 19.11
|
||||||
|
876 1 21.45 32.81 22.71
|
||||||
|
877 1 8.76 8.3 13.51
|
||||||
|
878 1 10.24 31.46 3.73
|
||||||
|
879 1 15.93 9.7 35.82
|
||||||
|
880 1 14.92 19.46 39.91
|
||||||
|
881 1 13.02 22.03 27.3
|
||||||
|
882 1 34.57 1.59 34.73
|
||||||
|
883 1 0.5 21.04 30.77
|
||||||
|
884 1 24.84 32.67 4.97
|
||||||
|
885 1 30.96 4.24 17.34
|
||||||
|
886 1 23.63 8.84 32.7
|
||||||
|
887 1 6.84 3.83 26.13
|
||||||
|
888 1 31.57 9.23 27.06
|
||||||
|
889 1 14.99 35.15 0.07
|
||||||
|
890 1 36.29 40.01 8.22
|
||||||
|
891 1 18 36.86 35.66
|
||||||
|
892 1 11.5 29.22 0.37
|
||||||
|
893 1 35.18 36.03 24.88
|
||||||
|
894 1 14.49 9.41 27.73
|
||||||
|
895 1 10.12 12.91 0.99
|
||||||
|
896 1 11.91 29.4 27.3
|
||||||
|
897 1 25.51 28.68 14.56
|
||||||
|
898 1 29.32 12.95 35.59
|
||||||
|
899 1 2.96 0.59 0.53
|
||||||
|
900 1 5.47 5.35 9.88
|
||||||
|
901 1 8.93 39.33 1.78
|
||||||
|
902 1 39.68 38.49 12.33
|
||||||
|
903 1 3.78 1.24 11.85
|
||||||
|
904 1 29.54 33.76 11.99
|
||||||
|
905 1 7.48 6.16 28.8
|
||||||
|
906 1 10.83 33.63 36.96
|
||||||
|
907 1 22.03 19.06 21.39
|
||||||
|
908 1 31.68 31 3.71
|
||||||
|
909 1 35.32 0.3 30.88
|
||||||
|
910 1 9.93 35.42 14.85
|
||||||
|
911 1 21.01 10.66 12.97
|
||||||
|
912 1 22.54 21.62 33.81
|
||||||
|
913 1 12.48 12.46 25.15
|
||||||
|
914 1 0.64 27.93 39.01
|
||||||
|
915 1 13.88 27.29 3.8
|
||||||
|
916 1 13.03 20.93 19.25
|
||||||
|
917 1 5.7 37.48 34.09
|
||||||
|
918 1 2.27 35.08 14.29
|
||||||
|
919 1 21.75 26.44 13.48
|
||||||
|
920 1 10.66 11.35 17.49
|
||||||
|
921 1 36.67 34.72 27.69
|
||||||
|
922 1 8.23 22.8 33.36
|
||||||
|
923 1 4.79 4.05 3.48
|
||||||
|
924 1 35.61 35 35.21
|
||||||
|
925 1 31.38 37.67 10.06
|
||||||
|
926 1 26.44 35.58 27.52
|
||||||
|
927 1 25.53 4.47 8.03
|
||||||
|
928 1 38.81 33.08 31.55
|
||||||
|
929 1 29.62 39.68 34.32
|
||||||
|
930 1 0.76 3.88 10.61
|
||||||
|
931 1 24.06 30.13 24.84
|
||||||
|
932 1 18.77 8.38 37.02
|
||||||
|
933 1 2.81 24.14 24.45
|
||||||
|
934 1 11.33 1.25 19.69
|
||||||
|
935 1 1.61 26.53 6.48
|
||||||
|
936 1 9.52 29.81 35.98
|
||||||
|
937 1 7.83 31.75 20.77
|
||||||
|
938 1 9.67 23.93 20.57
|
||||||
|
939 1 33.96 16.95 24.79
|
||||||
|
940 1 37.55 37.31 37.17
|
||||||
|
941 1 6.2 24.19 31.13
|
||||||
|
942 1 17.79 4.35 30.56
|
||||||
|
943 1 13.51 20.25 30.45
|
||||||
|
944 1 14.76 12.48 13.13
|
||||||
|
945 1 32.56 27.52 30.41
|
||||||
|
946 1 35.81 40.1 4.85
|
||||||
|
947 1 39.01 25.43 27.07
|
||||||
|
948 1 22.8 5.53 32.22
|
||||||
|
949 1 2.35 39.55 32.5
|
||||||
|
950 1 3.31 31.51 34.19
|
||||||
|
951 1 40.63 37.01 15.9
|
||||||
|
952 1 18.43 35.86 30.77
|
||||||
|
953 1 37.01 39.18 15.57
|
||||||
|
954 1 6.74 6.26 21.64
|
||||||
|
955 1 5.22 24.94 22.53
|
||||||
|
956 1 25.2 11.08 13.98
|
||||||
|
957 1 14.66 -0.14 5
|
||||||
|
958 1 14.96 8.38 20.32
|
||||||
|
959 1 1.89 23.03 10.1
|
||||||
|
960 1 33.01 11.23 39.32
|
||||||
|
961 1 32.68 6.79 32.04
|
||||||
|
962 1 6.25 25.81 3.82
|
||||||
|
963 1 18.37 31.97 14.57
|
||||||
|
964 1 9.74 30.21 22.71
|
||||||
|
965 1 3.09 1.52 19.38
|
||||||
|
966 1 33.98 37.34 5.63
|
||||||
|
967 1 32.19 28.35 15.8
|
||||||
|
968 1 24.4 15.49 19.39
|
||||||
@ -32,8 +32,8 @@ thermo 50
|
|||||||
# dump 1 all xyz 100 test_vis.xyz
|
# dump 1 all xyz 100 test_vis.xyz
|
||||||
|
|
||||||
fix myrxns all bond/react stabilization yes statted_grp .03 &
|
fix myrxns all bond/react stabilization yes statted_grp .03 &
|
||||||
react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map &
|
react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map &
|
||||||
react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
|
react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
|
||||||
|
|
||||||
# stable at 800K
|
# stable at 800K
|
||||||
fix 1 statted_grp nvt temp 800 800 100
|
fix 1 statted_grp nvt temp 800 800 100
|
||||||
|
|||||||
@ -84,7 +84,9 @@ thermo 50
|
|||||||
|
|
||||||
# dump 1 all xyz 100 test_vis.xyz
|
# dump 1 all xyz 100 test_vis.xyz
|
||||||
|
|
||||||
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
|
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
|
||||||
|
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
|
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
dynamic group statted_grp defined
|
dynamic group statted_grp defined
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
@ -132,39 +134,42 @@ Per MPI rank memory allocation (min/avg/max) = 209.1 | 209.1 | 209.1 Mbytes
|
|||||||
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
||||||
0 800 3666.3948 0.80366765 0 0
|
0 800 3666.3948 0.80366765 0 0
|
||||||
50 673.95238 -9670.9169 0.80366765 31 0
|
50 673.95238 -9670.9169 0.80366765 31 0
|
||||||
100 693.69241 -4696.4359 0.80366765 57 22
|
100 697.22819 -4624.0512 0.80366765 57 22
|
||||||
150 715.44689 -14740.892 0.80366765 77 50
|
150 723.60507 -17175.571 0.80366765 76 48
|
||||||
200 721.16898 -1411.95 0.80366765 84 66
|
200 736.71277 -12961.963 0.80366765 84 64
|
||||||
Loop time of 107.389 on 1 procs for 200 steps with 35200 atoms
|
Loop time of 102.825 on 1 procs for 200 steps with 35200 atoms
|
||||||
|
|
||||||
Performance: 0.161 ns/day, 149.151 hours/ns, 1.862 timesteps/s
|
Performance: 0.168 ns/day, 142.812 hours/ns, 1.945 timesteps/s
|
||||||
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 27.191 | 27.191 | 27.191 | 0.0 | 25.32
|
Pair | 27.193 | 27.193 | 27.193 | 0.0 | 26.45
|
||||||
Bond | 11.46 | 11.46 | 11.46 | 0.0 | 10.67
|
Bond | 11.324 | 11.324 | 11.324 | 0.0 | 11.01
|
||||||
Kspace | 4.2507 | 4.2507 | 4.2507 | 0.0 | 3.96
|
Kspace | 4.1878 | 4.1878 | 4.1878 | 0.0 | 4.07
|
||||||
Neigh | 55.544 | 55.544 | 55.544 | 0.0 | 51.72
|
Neigh | 54.724 | 54.724 | 54.724 | 0.0 | 53.22
|
||||||
Comm | 0.41715 | 0.41715 | 0.41715 | 0.0 | 0.39
|
Comm | 0.40662 | 0.40662 | 0.40662 | 0.0 | 0.40
|
||||||
Output | 0.0011044 | 0.0011044 | 0.0011044 | 0.0 | 0.00
|
Output | 0.0011101 | 0.0011101 | 0.0011101 | 0.0 | 0.00
|
||||||
Modify | 8.4756 | 8.4756 | 8.4756 | 0.0 | 7.89
|
Modify | 4.9422 | 4.9422 | 4.9422 | 0.0 | 4.81
|
||||||
Other | | 0.04897 | | | 0.05
|
Other | | 0.04545 | | | 0.04
|
||||||
|
|
||||||
Nlocal: 35200 ave 35200 max 35200 min
|
Nlocal: 35200 ave 35200 max 35200 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
Nghost: 38406 ave 38406 max 38406 min
|
Nghost: 38403 ave 38403 max 38403 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
Neighs: 6.92787e+06 ave 6.92787e+06 max 6.92787e+06 min
|
Neighs: 6.9281e+06 ave 6.9281e+06 max 6.9281e+06 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
Total # of neighbors = 6927872
|
Total # of neighbors = 6928101
|
||||||
Ave neighs/atom = 196.815
|
Ave neighs/atom = 196.821
|
||||||
Ave special neighs/atom = 9.83489
|
Ave special neighs/atom = 9.83727
|
||||||
Neighbor list builds = 200
|
Neighbor list builds = 200
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
|
|
||||||
# write_restart restart_longrun
|
# write_restart restart_longrun
|
||||||
# write_data restart_longrun.data
|
# write_data restart_longrun.data
|
||||||
Total wall time: 0:01:48
|
|
||||||
|
Please see the log.cite file for references relevant to this simulation
|
||||||
|
|
||||||
|
Total wall time: 0:01:43
|
||||||
|
|||||||
@ -84,7 +84,9 @@ thermo 50
|
|||||||
|
|
||||||
# dump 1 all xyz 100 test_vis.xyz
|
# dump 1 all xyz 100 test_vis.xyz
|
||||||
|
|
||||||
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
|
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
|
||||||
|
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
|
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
dynamic group statted_grp defined
|
dynamic group statted_grp defined
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
@ -132,39 +134,42 @@ Per MPI rank memory allocation (min/avg/max) = 81.11 | 81.13 | 81.15 Mbytes
|
|||||||
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
||||||
0 800 3666.3948 0.80366765 0 0
|
0 800 3666.3948 0.80366765 0 0
|
||||||
50 673.95238 -9670.9169 0.80366765 31 0
|
50 673.95238 -9670.9169 0.80366765 31 0
|
||||||
100 693.69241 -4696.4359 0.80366765 57 22
|
100 697.22819 -4624.0512 0.80366765 57 22
|
||||||
150 715.43654 -14742.205 0.80366765 77 50
|
150 724.40407 -17166.729 0.80366765 76 49
|
||||||
200 721.1906 -1411.4303 0.80366765 84 66
|
200 737.28582 -12968.224 0.80366765 84 65
|
||||||
Loop time of 56.2311 on 4 procs for 200 steps with 35200 atoms
|
Loop time of 51.171 on 4 procs for 200 steps with 35200 atoms
|
||||||
|
|
||||||
Performance: 0.307 ns/day, 78.099 hours/ns, 3.557 timesteps/s
|
Performance: 0.338 ns/day, 71.071 hours/ns, 3.908 timesteps/s
|
||||||
99.1% CPU use with 4 MPI tasks x 1 OpenMP threads
|
98.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 13.86 | 14.034 | 14.406 | 5.8 | 24.96
|
Pair | 12.926 | 13.247 | 13.493 | 6.7 | 25.89
|
||||||
Bond | 5.5592 | 5.5952 | 5.6492 | 1.4 | 9.95
|
Bond | 5.2132 | 5.2733 | 5.3367 | 1.9 | 10.31
|
||||||
Kspace | 2.3969 | 2.7523 | 2.9203 | 12.5 | 4.89
|
Kspace | 2.3601 | 2.6534 | 3.0067 | 16.0 | 5.19
|
||||||
Neigh | 27.265 | 27.268 | 27.271 | 0.0 | 48.49
|
Neigh | 25.93 | 25.934 | 25.937 | 0.1 | 50.68
|
||||||
Comm | 0.75523 | 0.77355 | 0.79381 | 1.7 | 1.38
|
Comm | 0.73273 | 0.75464 | 0.78505 | 2.3 | 1.47
|
||||||
Output | 0.00051904 | 0.0007363 | 0.0013669 | 0.0 | 0.00
|
Output | 0.00045228 | 0.00067407 | 0.0013323 | 0.0 | 0.00
|
||||||
Modify | 5.7629 | 5.7634 | 5.7641 | 0.0 | 10.25
|
Modify | 3.2682 | 3.2686 | 3.2692 | 0.0 | 6.39
|
||||||
Other | | 0.04441 | | | 0.08
|
Other | | 0.03995 | | | 0.08
|
||||||
|
|
||||||
Nlocal: 8800 ave 8912 max 8666 min
|
Nlocal: 8800 ave 8913 max 8652 min
|
||||||
Histogram: 1 0 0 1 0 0 0 0 1 1
|
Histogram: 1 0 0 0 1 0 0 0 1 1
|
||||||
Nghost: 18358.8 ave 18432 max 18189 min
|
Nghost: 18366 ave 18461 max 18190 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 1 2
|
Histogram: 1 0 0 0 0 0 0 1 1 1
|
||||||
Neighs: 1.73197e+06 ave 1.77209e+06 max 1.68475e+06 min
|
Neighs: 1.73203e+06 ave 1.77261e+06 max 1.68165e+06 min
|
||||||
Histogram: 1 0 1 0 0 0 0 0 0 2
|
Histogram: 1 0 1 0 0 0 0 0 0 2
|
||||||
|
|
||||||
Total # of neighbors = 6927873
|
Total # of neighbors = 6928132
|
||||||
Ave neighs/atom = 196.815
|
Ave neighs/atom = 196.822
|
||||||
Ave special neighs/atom = 9.83489
|
Ave special neighs/atom = 9.83608
|
||||||
Neighbor list builds = 200
|
Neighbor list builds = 200
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
|
|
||||||
# write_restart restart_longrun
|
# write_restart restart_longrun
|
||||||
# write_data restart_longrun.data
|
# write_data restart_longrun.data
|
||||||
Total wall time: 0:00:57
|
|
||||||
|
Please see the log.cite file for references relevant to this simulation
|
||||||
|
|
||||||
|
Total wall time: 0:00:52
|
||||||
|
|||||||
@ -33,8 +33,8 @@ thermo 50
|
|||||||
# dump 1 all xyz 1 test_vis.xyz
|
# dump 1 all xyz 1 test_vis.xyz
|
||||||
|
|
||||||
fix myrxns all bond/react stabilization yes statted_grp .03 &
|
fix myrxns all bond/react stabilization yes statted_grp .03 &
|
||||||
react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map &
|
react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map &
|
||||||
react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
|
react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
|
||||||
|
|
||||||
fix 1 statted_grp nvt temp 300 300 100
|
fix 1 statted_grp nvt temp 300 300 100
|
||||||
|
|
||||||
|
|||||||
@ -85,7 +85,9 @@ thermo 50
|
|||||||
|
|
||||||
# dump 1 all xyz 1 test_vis.xyz
|
# dump 1 all xyz 1 test_vis.xyz
|
||||||
|
|
||||||
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
|
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
|
||||||
|
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
|
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
dynamic group statted_grp defined
|
dynamic group statted_grp defined
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
@ -131,235 +133,238 @@ Per MPI rank memory allocation (min/avg/max) = 33.34 | 33.34 | 33.34 Mbytes
|
|||||||
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
||||||
0 300 346.78165 0.0034851739 0 0
|
0 300 346.78165 0.0034851739 0 0
|
||||||
50 296.70408 -51.30066 0.0034851739 1 0
|
50 296.70408 -51.30066 0.0034851739 1 0
|
||||||
100 275.26011 39.120329 0.0034851739 1 1
|
100 274.25324 46.715512 0.0034851739 1 1
|
||||||
150 438.68516 35.257539 0.0034851739 1 1
|
150 471.61579 31.321598 0.0034851739 1 1
|
||||||
200 394.48971 15.444537 0.0034851739 1 1
|
200 362.87766 42.061118 0.0034851739 1 1
|
||||||
250 356.00369 50.185792 0.0034851739 1 1
|
250 367.58058 65.303109 0.0034851739 1 1
|
||||||
300 301.25816 -26.891497 0.0034851739 1 1
|
300 372.38236 -52.421725 0.0034851739 1 1
|
||||||
350 279.17264 12.694513 0.0034851739 1 1
|
350 297.69957 17.869945 0.0034851739 1 1
|
||||||
400 248.71641 10.684558 0.0034851739 1 1
|
400 258.30433 49.19156 0.0034851739 1 1
|
||||||
450 240.30602 12.963034 0.0034851739 1 1
|
450 253.34384 -5.8162637 0.0034851739 1 1
|
||||||
500 252.71279 0.91620356 0.0034851739 1 1
|
500 269.96465 -43.337517 0.0034851739 1 1
|
||||||
550 300.56824 18.541436 0.0034851739 1 1
|
550 303.23718 10.180246 0.0034851739 1 1
|
||||||
600 306.46441 -1.9736081 0.0034851739 1 1
|
600 329.59579 -48.97461 0.0034851739 1 1
|
||||||
650 336.4537 21.474831 0.0034851739 1 1
|
650 350.42568 50.983183 0.0034851739 1 1
|
||||||
700 323.46217 8.486376 0.0034851739 1 1
|
700 342.03272 35.43465 0.0034851739 1 1
|
||||||
750 271.87146 5.9615231 0.0034851739 1 1
|
750 269.23405 -41.873166 0.0034851739 1 1
|
||||||
800 268.43041 36.676068 0.0034851739 1 1
|
800 245.15025 13.953092 0.0034851739 1 1
|
||||||
850 269.02683 7.6295416 0.0034851739 1 1
|
850 257.85421 -3.1492141 0.0034851739 1 1
|
||||||
900 282.03605 -1.4688833 0.0034851739 1 1
|
900 316.15644 7.7798301 0.0034851739 1 1
|
||||||
950 243.69136 -22.771489 0.0034851739 1 1
|
950 299.9124 -15.77014 0.0034851739 1 1
|
||||||
1000 285.01348 17.925748 0.0034851739 1 1
|
1000 302.89968 -17.049693 0.0034851739 1 1
|
||||||
1050 383.47985 0.70536985 0.0034851739 1 1
|
1050 308.91651 71.84632 0.0034851739 1 1
|
||||||
1100 368.97167 -4.3046933 0.0034851739 1 1
|
1100 348.43932 -18.742012 0.0034851739 1 1
|
||||||
1150 373.64459 6.3491837 0.0034851739 1 1
|
1150 309.03036 50.536311 0.0034851739 1 1
|
||||||
1200 332.90575 -36.501095 0.0034851739 1 1
|
1200 318.9761 -16.905746 0.0034851739 1 1
|
||||||
1250 314.04078 -13.382767 0.0034851739 1 1
|
1250 320.42806 -0.057975092 0.0034851739 1 1
|
||||||
1300 305.84166 4.7713641 0.0034851739 1 1
|
1300 289.7824 18.200772 0.0034851739 1 1
|
||||||
1350 286.22145 37.621803 0.0034851739 1 1
|
1350 284.79836 -9.1978427 0.0034851739 1 1
|
||||||
1400 265.52855 23.621002 0.0034851739 1 1
|
1400 325.43292 42.082833 0.0034851739 1 1
|
||||||
1450 281.807 -31.266828 0.0034851739 1 1
|
1450 261.5041 -37.823325 0.0034851739 1 1
|
||||||
1500 275.33855 33.495565 0.0034851739 1 1
|
1500 298.88723 -5.1647385 0.0034851739 1 1
|
||||||
1550 273.04973 -22.913871 0.0034851739 1 1
|
1550 291.37403 -7.7764201 0.0034851739 1 1
|
||||||
1600 308.18478 -17.98151 0.0034851739 1 1
|
1600 293.83475 22.2458 0.0034851739 1 1
|
||||||
1650 333.27664 28.987529 0.0034851739 1 1
|
1650 293.80611 24.202512 0.0034851739 1 1
|
||||||
1700 296.16091 -1.1440455 0.0034851739 1 1
|
1700 291.70205 -23.397884 0.0034851739 1 1
|
||||||
1750 365.75611 34.574845 0.0034851739 1 1
|
1750 292.32437 -10.671214 0.0034851739 1 1
|
||||||
1800 292.83503 -33.199654 0.0034851739 1 1
|
1800 302.01367 -11.671025 0.0034851739 1 1
|
||||||
1850 261.50282 42.608703 0.0034851739 1 1
|
1850 322.1651 24.438331 0.0034851739 1 1
|
||||||
1900 315.14188 -31.058803 0.0034851739 1 1
|
1900 310.45076 45.343592 0.0034851739 1 1
|
||||||
1950 335.12895 12.40597 0.0034851739 1 1
|
1950 325.91745 -19.847809 0.0034851739 1 1
|
||||||
2000 278.08586 -5.3178633 0.0034851739 1 1
|
2000 276.89662 63.387098 0.0034851739 1 1
|
||||||
2050 283.23847 -3.3974302 0.0034851739 1 1
|
2050 311.33783 -24.683247 0.0034851739 1 1
|
||||||
2100 281.38904 0.70263324 0.0034851739 1 1
|
2100 346.2336 -27.526891 0.0034851739 1 1
|
||||||
2150 302.23197 23.372316 0.0034851739 1 1
|
2150 345.30604 -15.722411 0.0034851739 1 1
|
||||||
2200 337.49259 -4.8716803 0.0034851739 1 1
|
2200 346.7718 -17.857633 0.0034851739 1 1
|
||||||
2250 409.64134 -12.043721 0.0034851739 1 1
|
2250 304.28676 -1.9965581 0.0034851739 1 1
|
||||||
2300 309.21764 -21.824645 0.0034851739 1 1
|
2300 322.56372 -31.786868 0.0034851739 1 1
|
||||||
2350 290.97879 18.690281 0.0034851739 1 1
|
2350 282.64326 6.1982735 0.0034851739 1 1
|
||||||
2400 341.816 -16.967741 0.0034851739 1 1
|
2400 286.65759 -63.207781 0.0034851739 1 1
|
||||||
2450 310.28034 27.375518 0.0034851739 1 1
|
2450 257.05528 32.931491 0.0034851739 1 1
|
||||||
2500 248.89429 17.061192 0.0034851739 1 1
|
2500 283.64386 26.912373 0.0034851739 1 1
|
||||||
2550 273.10927 0.10481657 0.0034851739 1 1
|
2550 299.54005 27.277039 0.0034851739 1 1
|
||||||
2600 289.56101 -9.7239939 0.0034851739 1 1
|
2600 283.92503 14.660972 0.0034851739 1 1
|
||||||
2650 298.99719 -33.140576 0.0034851739 1 1
|
2650 321.93453 -18.977358 0.0034851739 1 1
|
||||||
2700 326.05198 -24.509827 0.0034851739 1 1
|
2700 376.7189 31.826935 0.0034851739 1 1
|
||||||
2750 319.20612 24.305526 0.0034851739 1 1
|
2750 372.20075 -32.821697 0.0034851739 1 1
|
||||||
2800 304.8715 -15.076941 0.0034851739 1 1
|
2800 361.40604 83.035183 0.0034851739 1 1
|
||||||
2850 374.38923 2.0874883 0.0034851739 1 1
|
2850 332.27269 -23.927452 0.0034851739 1 1
|
||||||
2900 354.01554 -20.595102 0.0034851739 1 1
|
2900 331.14638 -0.12328446 0.0034851739 1 1
|
||||||
2950 289.89296 48.39731 0.0034851739 1 1
|
2950 303.67489 -24.078857 0.0034851739 1 1
|
||||||
3000 312.10013 -8.5105997 0.0034851739 1 1
|
3000 311.40462 21.563537 0.0034851739 1 1
|
||||||
3050 296.97004 -31.008446 0.0034851739 1 1
|
3050 284.72849 -23.849667 0.0034851739 1 1
|
||||||
3100 251.72228 35.710197 0.0034851739 1 1
|
3100 303.48477 39.347763 0.0034851739 1 1
|
||||||
3150 315.35895 -43.331536 0.0034851739 1 1
|
3150 264.2739 -0.22299879 0.0034851739 1 1
|
||||||
3200 334.67773 13.331058 0.0034851739 1 1
|
3200 300.03351 31.545323 0.0034851739 1 1
|
||||||
3250 308.1669 37.236121 0.0034851739 1 1
|
3250 288.56663 5.7225228 0.0034851739 1 1
|
||||||
3300 329.47601 30.798598 0.0034851739 1 1
|
3300 200.13238 -31.239655 0.0034851739 1 1
|
||||||
3350 299.40055 2.0785585 0.0034851739 1 1
|
3350 231.32512 16.631728 0.0034851739 1 1
|
||||||
3400 272.41031 32.744922 0.0034851739 1 1
|
3400 260.57402 2.1717992 0.0034851739 1 1
|
||||||
3450 279.34594 -26.181793 0.0034851739 1 1
|
3450 301.47128 -42.210623 0.0034851739 1 1
|
||||||
3500 288.89969 8.935052 0.0034851739 1 1
|
3500 321.77414 40.074365 0.0034851739 1 1
|
||||||
3550 253.4967 9.7244709 0.0034851739 1 1
|
3550 353.21858 28.387783 0.0034851739 1 1
|
||||||
3600 294.83266 19.33305 0.0034851739 1 1
|
3600 331.45989 -57.800858 0.0034851739 1 1
|
||||||
3650 290.23794 -5.4939069 0.0034851739 1 1
|
3650 303.88123 44.86596 0.0034851739 1 1
|
||||||
3700 332.5222 -29.834229 0.0034851739 1 1
|
3700 329.73833 -0.80615652 0.0034851739 1 1
|
||||||
3750 364.63024 20.706191 0.0034851739 1 1
|
3750 297.55588 -0.49626039 0.0034851739 1 1
|
||||||
3800 295.3842 -6.9434004 0.0034851739 1 1
|
3800 286.38794 -10.010003 0.0034851739 1 1
|
||||||
3850 346.84424 37.796066 0.0034851739 1 1
|
3850 290.17417 -43.51187 0.0034851739 1 1
|
||||||
3900 265.67286 -0.31628068 0.0034851739 1 1
|
3900 247.88933 51.23735 0.0034851739 1 1
|
||||||
3950 260.455 -2.2571902 0.0034851739 1 1
|
3950 332.31324 -18.194985 0.0034851739 1 1
|
||||||
4000 259.82636 -2.2286205 0.0034851739 1 1
|
4000 325.56802 18.402825 0.0034851739 1 1
|
||||||
4050 257.79848 24.520293 0.0034851739 1 1
|
4050 338.37593 36.430977 0.0034851739 1 1
|
||||||
4100 295.58626 -0.42318936 0.0034851739 1 1
|
4100 370.95478 39.290285 0.0034851739 1 1
|
||||||
4150 265.81353 -49.092436 0.0034851739 1 1
|
4150 348.47859 -7.0779678 0.0034851739 1 1
|
||||||
4200 302.10333 51.715259 0.0034851739 1 1
|
4200 241.30632 -33.371788 0.0034851739 1 1
|
||||||
4250 258.98448 -4.8516655 0.0034851739 1 1
|
4250 242.17258 -9.986197 0.0034851739 1 1
|
||||||
4300 327.83401 33.717282 0.0034851739 1 1
|
4300 300.85311 -7.9244294 0.0034851739 1 1
|
||||||
4350 311.59571 23.580382 0.0034851739 1 1
|
4350 273.15684 -21.257283 0.0034851739 1 1
|
||||||
4400 300.64237 -31.866661 0.0034851739 1 1
|
4400 305.77463 -5.8720722 0.0034851739 1 1
|
||||||
4450 294.15643 -0.11927421 0.0034851739 1 1
|
4450 314.97697 45.0373 0.0034851739 1 1
|
||||||
4500 299.83605 -17.560873 0.0034851739 1 1
|
4500 310.77723 16.958773 0.0034851739 1 1
|
||||||
4550 326.83265 32.818482 0.0034851739 1 1
|
4550 302.1742 12.156862 0.0034851739 1 1
|
||||||
4600 260.39068 -8.0567902 0.0034851739 1 1
|
4600 319.74799 6.84889 0.0034851739 1 1
|
||||||
4650 247.93553 19.462991 0.0034851739 1 1
|
4650 270.86805 -13.767905 0.0034851739 1 1
|
||||||
4700 214.22252 -34.118303 0.0034851739 1 1
|
4700 249.81731 -31.197487 0.0034851739 1 1
|
||||||
4750 203.15329 27.356205 0.0034851739 1 1
|
4750 285.86481 -9.8916364 0.0034851739 1 1
|
||||||
4800 257.761 -10.407989 0.0034851739 1 1
|
4800 233.98321 7.1338571 0.0034851739 1 1
|
||||||
4850 307.1923 11.71101 0.0034851739 1 1
|
4850 302.60551 49.262889 0.0034851739 1 1
|
||||||
4900 319.00942 4.7808306 0.0034851739 1 1
|
4900 316.55056 34.663247 0.0034851739 1 1
|
||||||
4950 282.23989 24.996151 0.0034851739 1 1
|
4950 357.32741 11.583006 0.0034851739 1 1
|
||||||
5000 311.53284 -3.0012665 0.0034851739 1 1
|
5000 400.21045 -8.1781061 0.0034851739 1 1
|
||||||
5050 317.58212 32.567832 0.0034851739 1 1
|
5050 390.01845 -20.490275 0.0034851739 1 1
|
||||||
5100 267.51501 -47.695087 0.0034851739 1 1
|
5100 378.84247 -41.328757 0.0034851739 1 1
|
||||||
5150 260.19048 29.046388 0.0034851739 1 1
|
5150 324.02038 -15.023862 0.0034851739 1 1
|
||||||
5200 239.83552 -5.4890385 0.0034851739 1 1
|
5200 262.08429 10.937354 0.0034851739 1 1
|
||||||
5250 234.8852 -18.172633 0.0034851739 1 1
|
5250 255.75508 16.381455 0.0034851739 1 1
|
||||||
5300 236.43277 -39.06212 0.0034851739 1 1
|
5300 277.84989 40.68232 0.0034851739 1 1
|
||||||
5350 280.90079 -2.6932923 0.0034851739 1 1
|
5350 302.92832 9.1989494 0.0034851739 1 1
|
||||||
5400 316.65266 23.071362 0.0034851739 1 1
|
5400 283.7196 -1.6584671 0.0034851739 1 1
|
||||||
5450 345.63226 19.573323 0.0034851739 1 1
|
5450 300.71266 -4.7030295 0.0034851739 1 1
|
||||||
5500 384.57334 41.507217 0.0034851739 1 1
|
5500 343.5499 -0.30550044 0.0034851739 1 1
|
||||||
5550 317.14278 9.6992897 0.0034851739 1 1
|
5550 369.51271 21.691649 0.0034851739 1 1
|
||||||
5600 279.93243 -12.076895 0.0034851739 1 1
|
5600 372.69789 -38.67994 0.0034851739 1 1
|
||||||
5650 268.06471 1.6196401 0.0034851739 1 1
|
5650 327.41266 11.352137 0.0034851739 1 1
|
||||||
5700 271.85714 -40.378455 0.0034851739 1 1
|
5700 278.98614 -23.827304 0.0034851739 1 1
|
||||||
5750 313.88363 10.722639 0.0034851739 1 1
|
5750 308.30054 -20.756187 0.0034851739 1 1
|
||||||
5800 281.54495 31.914889 0.0034851739 1 1
|
5800 341.45594 28.058441 0.0034851739 1 1
|
||||||
5850 293.34821 -8.3154922 0.0034851739 1 1
|
5850 322.97844 -10.731921 0.0034851739 1 1
|
||||||
5900 249.25216 -17.307353 0.0034851739 1 1
|
5900 304.53591 32.825279 0.0034851739 1 1
|
||||||
5950 268.18639 -4.7222512 0.0034851739 1 1
|
5950 287.1752 -36.780091 0.0034851739 1 1
|
||||||
6000 302.99398 -52.615528 0.0034851739 1 1
|
6000 296.52681 18.781896 0.0034851739 1 1
|
||||||
6050 314.57931 34.51318 0.0034851739 1 1
|
6050 314.25442 15.992829 0.0034851739 1 1
|
||||||
6100 345.70348 30.334721 0.0034851739 1 1
|
6100 313.86576 3.4342714 0.0034851739 1 1
|
||||||
6150 316.59329 31.862519 0.0034851739 1 1
|
6150 325.64196 32.392039 0.0034851739 1 1
|
||||||
6200 317.85346 -32.235221 0.0034851739 1 1
|
6200 367.42931 -27.160706 0.0034851739 1 1
|
||||||
6250 282.97676 0.2936745 0.0034851739 1 1
|
6250 369.30798 39.020934 0.0034851739 1 1
|
||||||
6300 267.91814 19.265567 0.0034851739 1 1
|
6300 328.92285 -23.175157 0.0034851739 1 1
|
||||||
6350 226.20967 -13.093547 0.0034851739 1 1
|
6350 305.63077 4.9024453 0.0034851739 1 1
|
||||||
6400 307.73316 17.439598 0.0034851739 1 1
|
6400 241.70341 -13.676629 0.0034851739 1 1
|
||||||
6450 292.16253 -23.275163 0.0034851739 1 1
|
6450 265.66717 2.40612 0.0034851739 1 1
|
||||||
6500 335.05939 26.936463 0.0034851739 1 1
|
6500 249.36037 13.420255 0.0034851739 1 1
|
||||||
6550 380.73546 19.532416 0.0034851739 1 1
|
6550 294.53814 10.853462 0.0034851739 1 1
|
||||||
6600 373.0103 30.879532 0.0034851739 1 1
|
6600 308.2025 18.995308 0.0034851739 1 1
|
||||||
6650 335.37975 -2.1762828 0.0034851739 1 1
|
6650 305.43797 -49.56785 0.0034851739 1 1
|
||||||
6700 298.94272 -10.578587 0.0034851739 1 1
|
6700 320.27344 11.336281 0.0034851739 1 1
|
||||||
6750 255.11531 -50.576215 0.0034851739 1 1
|
6750 321.78666 -23.463899 0.0034851739 1 1
|
||||||
6800 222.87459 3.0499548 0.0034851739 1 1
|
6800 303.40388 7.6224553 0.0034851739 1 1
|
||||||
6850 268.57213 -43.675945 0.0034851739 1 1
|
6850 297.18966 51.52256 0.0034851739 1 1
|
||||||
6900 260.3024 4.7483005 0.0034851739 1 1
|
6900 284.18909 -8.4947203 0.0034851739 1 1
|
||||||
6950 289.15855 31.62106 0.0034851739 1 1
|
6950 331.03663 13.233655 0.0034851739 1 1
|
||||||
7000 289.11874 21.635533 0.0034851739 1 1
|
7000 311.37928 -43.265479 0.0034851739 1 1
|
||||||
7050 361.08776 22.445996 0.0034851739 1 1
|
7050 286.81661 -14.174683 0.0034851739 1 1
|
||||||
7100 368.95003 4.8383881 0.0034851739 1 1
|
7100 302.84119 12.048954 0.0034851739 1 1
|
||||||
7150 331.47448 -36.200495 0.0034851739 1 1
|
7150 297.19357 -43.111968 0.0034851739 1 1
|
||||||
7200 304.7251 13.982693 0.0034851739 1 1
|
7200 332.47359 26.048249 0.0034851739 1 1
|
||||||
7250 284.09747 0.53758275 0.0034851739 1 1
|
7250 262.70677 41.176242 0.0034851739 1 1
|
||||||
7300 269.17023 -41.571482 0.0034851739 1 1
|
7300 250.61405 -23.413982 0.0034851739 1 1
|
||||||
7350 222.07071 25.564662 0.0034851739 1 1
|
7350 296.91117 35.88133 0.0034851739 1 1
|
||||||
7400 304.09598 15.482955 0.0034851739 1 1
|
7400 245.09229 -13.447194 0.0034851739 1 1
|
||||||
7450 298.78752 -7.4335841 0.0034851739 1 1
|
7450 272.28131 -23.322585 0.0034851739 1 1
|
||||||
7500 328.78697 14.666097 0.0034851739 1 1
|
7500 209.04985 13.871239 0.0034851739 1 1
|
||||||
7550 347.07038 -37.165295 0.0034851739 1 1
|
7550 255.00955 4.9325621 0.0034851739 1 1
|
||||||
7600 362.85673 20.52268 0.0034851739 1 1
|
7600 312.30937 -37.368274 0.0034851739 1 1
|
||||||
7650 347.15141 2.3383775 0.0034851739 1 1
|
7650 305.65903 55.245496 0.0034851739 1 1
|
||||||
7700 262.10132 33.898374 0.0034851739 1 1
|
7700 325.09504 -18.347711 0.0034851739 1 1
|
||||||
7750 275.84724 -33.534813 0.0034851739 1 1
|
7750 363.28282 -22.479686 0.0034851739 1 1
|
||||||
7800 281.14075 -18.284372 0.0034851739 1 1
|
7800 350.17429 26.849547 0.0034851739 1 1
|
||||||
7850 264.83337 -30.580199 0.0034851739 1 1
|
7850 271.70853 -17.764575 0.0034851739 1 1
|
||||||
7900 257.35275 -35.080567 0.0034851739 1 1
|
7900 272.66484 -11.701967 0.0034851739 1 1
|
||||||
7950 286.32446 26.594779 0.0034851739 1 1
|
7950 298.60202 -12.765675 0.0034851739 1 1
|
||||||
8000 248.36889 15.605894 0.0034851739 1 1
|
8000 274.58852 49.641532 0.0034851739 1 1
|
||||||
8050 292.55015 28.811985 0.0034851739 1 1
|
8050 304.72347 -0.55414183 0.0034851739 1 1
|
||||||
8100 312.47888 0.83990451 0.0034851739 1 1
|
8100 328.30757 -39.861301 0.0034851739 1 1
|
||||||
8150 285.58532 -15.258185 0.0034851739 1 1
|
8150 406.67601 2.8999409 0.0034851739 1 1
|
||||||
8200 292.22819 -38.233195 0.0034851739 1 1
|
8200 332.20083 -51.217399 0.0034851739 1 1
|
||||||
8250 321.6208 -19.052143 0.0034851739 1 1
|
8250 354.50609 53.128769 0.0034851739 1 1
|
||||||
8300 319.41332 54.97437 0.0034851739 1 1
|
8300 337.2758 20.68562 0.0034851739 1 1
|
||||||
8350 307.95647 32.009591 0.0034851739 1 1
|
8350 361.89708 -54.185869 0.0034851739 1 1
|
||||||
8400 345.58105 8.8535539 0.0034851739 1 1
|
8400 305.63496 24.058529 0.0034851739 1 1
|
||||||
8450 357.75168 12.416896 0.0034851739 1 1
|
8450 303.27461 4.304683 0.0034851739 1 1
|
||||||
8500 370.049 4.3288665 0.0034851739 1 1
|
8500 253.53694 -10.909021 0.0034851739 1 1
|
||||||
8550 360.62882 12.618614 0.0034851739 1 1
|
8550 277.03017 23.241479 0.0034851739 1 1
|
||||||
8600 290.10834 -4.8081765 0.0034851739 1 1
|
8600 291.41844 -22.240665 0.0034851739 1 1
|
||||||
8650 297.7575 -5.1976816 0.0034851739 1 1
|
8650 307.85368 31.919587 0.0034851739 1 1
|
||||||
8700 286.57505 -31.469549 0.0034851739 1 1
|
8700 309.19724 0.53529642 0.0034851739 1 1
|
||||||
8750 307.77059 19.338001 0.0034851739 1 1
|
8750 354.6583 11.565515 0.0034851739 1 1
|
||||||
8800 231.68316 12.159459 0.0034851739 1 1
|
8800 329.78598 19.5996 0.0034851739 1 1
|
||||||
8850 329.13623 -8.7262592 0.0034851739 1 1
|
8850 240.79198 21.803515 0.0034851739 1 1
|
||||||
8900 286.40715 10.326025 0.0034851739 1 1
|
8900 318.40749 -59.816923 0.0034851739 1 1
|
||||||
8950 339.43101 2.7809618 0.0034851739 1 1
|
8950 308.47211 -57.808635 0.0034851739 1 1
|
||||||
9000 402.53799 19.481869 0.0034851739 1 1
|
9000 271.51207 50.943482 0.0034851739 1 1
|
||||||
9050 349.56449 -4.8450179 0.0034851739 1 1
|
9050 249.4005 6.7529187 0.0034851739 1 1
|
||||||
9100 307.64739 16.889327 0.0034851739 1 1
|
9100 221.8772 47.196092 0.0034851739 1 1
|
||||||
9150 276.54451 -34.808372 0.0034851739 1 1
|
9150 297.9351 4.0058184 0.0034851739 1 1
|
||||||
9200 233.18668 4.9409791 0.0034851739 1 1
|
9200 274.85051 -24.774393 0.0034851739 1 1
|
||||||
9250 266.48384 -19.850366 0.0034851739 1 1
|
9250 336.04757 5.3799028 0.0034851739 1 1
|
||||||
9300 289.14808 13.520201 0.0034851739 1 1
|
9300 380.44956 -22.389381 0.0034851739 1 1
|
||||||
9350 295.08335 17.156468 0.0034851739 1 1
|
9350 336.9824 23.050616 0.0034851739 1 1
|
||||||
9400 338.08757 -31.112278 0.0034851739 1 1
|
9400 304.46425 32.530218 0.0034851739 1 1
|
||||||
9450 336.64739 -25.697747 0.0034851739 1 1
|
9450 317.55591 -22.265425 0.0034851739 1 1
|
||||||
9500 338.10622 1.9241797 0.0034851739 1 1
|
9500 323.70901 -7.0159787 0.0034851739 1 1
|
||||||
9550 294.82158 -12.043972 0.0034851739 1 1
|
9550 316.07308 28.062131 0.0034851739 1 1
|
||||||
9600 268.9836 12.235553 0.0034851739 1 1
|
9600 262.74608 -0.78519192 0.0034851739 1 1
|
||||||
9650 279.6269 28.710734 0.0034851739 1 1
|
9650 271.55045 -21.430123 0.0034851739 1 1
|
||||||
9700 279.88562 -10.865604 0.0034851739 1 1
|
9700 239.6022 14.483637 0.0034851739 1 1
|
||||||
9750 287.56565 12.975819 0.0034851739 1 1
|
9750 338.1437 -0.72765302 0.0034851739 1 1
|
||||||
9800 278.39949 4.2088595 0.0034851739 1 1
|
9800 334.50189 19.495144 0.0034851739 1 1
|
||||||
9850 307.61259 9.341169 0.0034851739 1 1
|
9850 354.87554 19.272719 0.0034851739 1 1
|
||||||
9900 317.53581 2.3948493 0.0034851739 1 1
|
9900 334.02141 -22.393457 0.0034851739 1 1
|
||||||
9950 332.52938 -14.809185 0.0034851739 1 1
|
9950 293.63651 19.178873 0.0034851739 1 1
|
||||||
10000 401.93365 -7.637581 0.0034851739 1 1
|
10000 319.81736 21.904414 0.0034851739 1 1
|
||||||
Loop time of 1.94139 on 1 procs for 10000 steps with 44 atoms
|
Loop time of 1.84987 on 1 procs for 10000 steps with 44 atoms
|
||||||
|
|
||||||
Performance: 445.042 ns/day, 0.054 hours/ns, 5150.945 timesteps/s
|
Performance: 467.059 ns/day, 0.051 hours/ns, 5405.774 timesteps/s
|
||||||
99.3% CPU use with 1 MPI tasks x 1 OpenMP threads
|
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 0.26479 | 0.26479 | 0.26479 | 0.0 | 13.64
|
Pair | 0.26152 | 0.26152 | 0.26152 | 0.0 | 14.14
|
||||||
Bond | 0.76875 | 0.76875 | 0.76875 | 0.0 | 39.60
|
Bond | 0.74069 | 0.74069 | 0.74069 | 0.0 | 40.04
|
||||||
Kspace | 0.32111 | 0.32111 | 0.32111 | 0.0 | 16.54
|
Kspace | 0.30505 | 0.30505 | 0.30505 | 0.0 | 16.49
|
||||||
Neigh | 0.41333 | 0.41333 | 0.41333 | 0.0 | 21.29
|
Neigh | 0.39991 | 0.39991 | 0.39991 | 0.0 | 21.62
|
||||||
Comm | 0.025956 | 0.025956 | 0.025956 | 0.0 | 1.34
|
Comm | 0.02261 | 0.02261 | 0.02261 | 0.0 | 1.22
|
||||||
Output | 0.0043445 | 0.0043445 | 0.0043445 | 0.0 | 0.22
|
Output | 0.0034585 | 0.0034585 | 0.0034585 | 0.0 | 0.19
|
||||||
Modify | 0.12526 | 0.12526 | 0.12526 | 0.0 | 6.45
|
Modify | 0.099979 | 0.099979 | 0.099979 | 0.0 | 5.40
|
||||||
Other | | 0.01786 | | | 0.92
|
Other | | 0.01666 | | | 0.90
|
||||||
|
|
||||||
Nlocal: 44 ave 44 max 44 min
|
Nlocal: 44 ave 44 max 44 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
Nghost: 62 ave 62 max 62 min
|
Nghost: 44 ave 44 max 44 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
Neighs: 812 ave 812 max 812 min
|
Neighs: 823 ave 823 max 823 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
Total # of neighbors = 812
|
Total # of neighbors = 823
|
||||||
Ave neighs/atom = 18.4545
|
Ave neighs/atom = 18.7045
|
||||||
Ave special neighs/atom = 9.77273
|
Ave special neighs/atom = 9.77273
|
||||||
Neighbor list builds = 10000
|
Neighbor list builds = 10000
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
|
|
||||||
# write_restart restart_longrun
|
# write_restart restart_longrun
|
||||||
# write_data restart_longrun.data
|
# write_data restart_longrun.data
|
||||||
|
|
||||||
|
Please see the log.cite file for references relevant to this simulation
|
||||||
|
|
||||||
Total wall time: 0:00:01
|
Total wall time: 0:00:01
|
||||||
|
|||||||
@ -85,7 +85,9 @@ thermo 50
|
|||||||
|
|
||||||
# dump 1 all xyz 1 test_vis.xyz
|
# dump 1 all xyz 1 test_vis.xyz
|
||||||
|
|
||||||
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map
|
fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map
|
||||||
|
WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
|
WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489)
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
dynamic group statted_grp defined
|
dynamic group statted_grp defined
|
||||||
dynamic group bond_react_MASTER_group defined
|
dynamic group bond_react_MASTER_group defined
|
||||||
@ -131,235 +133,238 @@ Per MPI rank memory allocation (min/avg/max) = 33.34 | 33.69 | 34.37 Mbytes
|
|||||||
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
Step Temp Press Density f_myrxns[1] f_myrxns[2]
|
||||||
0 300 346.78165 0.0034851739 0 0
|
0 300 346.78165 0.0034851739 0 0
|
||||||
50 296.70408 -51.30066 0.0034851739 1 0
|
50 296.70408 -51.30066 0.0034851739 1 0
|
||||||
100 275.26011 39.120329 0.0034851739 1 1
|
100 274.25324 46.715512 0.0034851739 1 1
|
||||||
150 438.68516 35.257539 0.0034851739 1 1
|
150 471.61579 31.321598 0.0034851739 1 1
|
||||||
200 394.48971 15.444537 0.0034851739 1 1
|
200 362.87766 42.061118 0.0034851739 1 1
|
||||||
250 356.00369 50.185792 0.0034851739 1 1
|
250 367.58058 65.303109 0.0034851739 1 1
|
||||||
300 301.25816 -26.891497 0.0034851739 1 1
|
300 372.38236 -52.421725 0.0034851739 1 1
|
||||||
350 279.17264 12.694513 0.0034851739 1 1
|
350 297.69957 17.869945 0.0034851739 1 1
|
||||||
400 248.71641 10.684558 0.0034851739 1 1
|
400 258.30433 49.19156 0.0034851739 1 1
|
||||||
450 240.30602 12.963034 0.0034851739 1 1
|
450 253.34384 -5.8162637 0.0034851739 1 1
|
||||||
500 252.71279 0.91620356 0.0034851739 1 1
|
500 269.96465 -43.337517 0.0034851739 1 1
|
||||||
550 300.56824 18.541436 0.0034851739 1 1
|
550 303.23718 10.180246 0.0034851739 1 1
|
||||||
600 306.46441 -1.9736081 0.0034851739 1 1
|
600 329.59579 -48.97461 0.0034851739 1 1
|
||||||
650 336.4537 21.474831 0.0034851739 1 1
|
650 350.42568 50.983183 0.0034851739 1 1
|
||||||
700 323.46217 8.486376 0.0034851739 1 1
|
700 342.03272 35.43465 0.0034851739 1 1
|
||||||
750 271.87146 5.9615231 0.0034851739 1 1
|
750 269.23405 -41.873166 0.0034851739 1 1
|
||||||
800 268.43041 36.676068 0.0034851739 1 1
|
800 245.15025 13.953092 0.0034851739 1 1
|
||||||
850 269.02683 7.6295416 0.0034851739 1 1
|
850 257.85421 -3.1492141 0.0034851739 1 1
|
||||||
900 282.03605 -1.4688833 0.0034851739 1 1
|
900 316.15644 7.7798301 0.0034851739 1 1
|
||||||
950 243.69136 -22.771489 0.0034851739 1 1
|
950 299.9124 -15.77014 0.0034851739 1 1
|
||||||
1000 285.01348 17.925748 0.0034851739 1 1
|
1000 302.89968 -17.049693 0.0034851739 1 1
|
||||||
1050 383.47985 0.70536985 0.0034851739 1 1
|
1050 308.91651 71.84632 0.0034851739 1 1
|
||||||
1100 368.97167 -4.3046933 0.0034851739 1 1
|
1100 348.43932 -18.742012 0.0034851739 1 1
|
||||||
1150 373.64459 6.3491837 0.0034851739 1 1
|
1150 309.03036 50.536311 0.0034851739 1 1
|
||||||
1200 332.90575 -36.501095 0.0034851739 1 1
|
1200 318.9761 -16.905746 0.0034851739 1 1
|
||||||
1250 314.04078 -13.382767 0.0034851739 1 1
|
1250 320.42806 -0.057975092 0.0034851739 1 1
|
||||||
1300 305.84166 4.7713641 0.0034851739 1 1
|
1300 289.7824 18.200772 0.0034851739 1 1
|
||||||
1350 286.22145 37.621803 0.0034851739 1 1
|
1350 284.79836 -9.1978427 0.0034851739 1 1
|
||||||
1400 265.52855 23.621002 0.0034851739 1 1
|
1400 325.43292 42.082833 0.0034851739 1 1
|
||||||
1450 281.807 -31.266828 0.0034851739 1 1
|
1450 261.5041 -37.823325 0.0034851739 1 1
|
||||||
1500 275.33855 33.495565 0.0034851739 1 1
|
1500 298.88723 -5.1647385 0.0034851739 1 1
|
||||||
1550 273.04973 -22.913871 0.0034851739 1 1
|
1550 291.37403 -7.7764201 0.0034851739 1 1
|
||||||
1600 308.18478 -17.98151 0.0034851739 1 1
|
1600 293.83475 22.2458 0.0034851739 1 1
|
||||||
1650 333.27664 28.987529 0.0034851739 1 1
|
1650 293.80611 24.202512 0.0034851739 1 1
|
||||||
1700 296.16091 -1.1440455 0.0034851739 1 1
|
1700 291.70205 -23.397884 0.0034851739 1 1
|
||||||
1750 365.75611 34.574845 0.0034851739 1 1
|
1750 292.32437 -10.671214 0.0034851739 1 1
|
||||||
1800 292.83503 -33.199654 0.0034851739 1 1
|
1800 302.01367 -11.671025 0.0034851739 1 1
|
||||||
1850 261.50282 42.608703 0.0034851739 1 1
|
1850 322.1651 24.438331 0.0034851739 1 1
|
||||||
1900 315.14188 -31.058803 0.0034851739 1 1
|
1900 310.45076 45.343592 0.0034851739 1 1
|
||||||
1950 335.12895 12.40597 0.0034851739 1 1
|
1950 325.91745 -19.847809 0.0034851739 1 1
|
||||||
2000 278.08586 -5.3178633 0.0034851739 1 1
|
2000 276.89662 63.387098 0.0034851739 1 1
|
||||||
2050 283.23847 -3.3974302 0.0034851739 1 1
|
2050 311.33783 -24.683247 0.0034851739 1 1
|
||||||
2100 281.38904 0.70263324 0.0034851739 1 1
|
2100 346.2336 -27.526891 0.0034851739 1 1
|
||||||
2150 302.23197 23.372316 0.0034851739 1 1
|
2150 345.30604 -15.722411 0.0034851739 1 1
|
||||||
2200 337.49259 -4.8716803 0.0034851739 1 1
|
2200 346.7718 -17.857633 0.0034851739 1 1
|
||||||
2250 409.64134 -12.043721 0.0034851739 1 1
|
2250 304.28676 -1.9965581 0.0034851739 1 1
|
||||||
2300 309.21764 -21.824645 0.0034851739 1 1
|
2300 322.56372 -31.786868 0.0034851739 1 1
|
||||||
2350 290.97879 18.690281 0.0034851739 1 1
|
2350 282.64326 6.1982735 0.0034851739 1 1
|
||||||
2400 341.816 -16.967741 0.0034851739 1 1
|
2400 286.65759 -63.207781 0.0034851739 1 1
|
||||||
2450 310.28034 27.375518 0.0034851739 1 1
|
2450 257.05528 32.931491 0.0034851739 1 1
|
||||||
2500 248.89429 17.061192 0.0034851739 1 1
|
2500 283.64386 26.912373 0.0034851739 1 1
|
||||||
2550 273.10927 0.1048166 0.0034851739 1 1
|
2550 299.54005 27.277039 0.0034851739 1 1
|
||||||
2600 289.56101 -9.7239939 0.0034851739 1 1
|
2600 283.92503 14.660972 0.0034851739 1 1
|
||||||
2650 298.99719 -33.140576 0.0034851739 1 1
|
2650 321.93453 -18.977358 0.0034851739 1 1
|
||||||
2700 326.05198 -24.509827 0.0034851739 1 1
|
2700 376.7189 31.826935 0.0034851739 1 1
|
||||||
2750 319.20612 24.305526 0.0034851739 1 1
|
2750 372.20075 -32.821697 0.0034851739 1 1
|
||||||
2800 304.8715 -15.076941 0.0034851739 1 1
|
2800 361.40604 83.035183 0.0034851739 1 1
|
||||||
2850 374.38923 2.0874883 0.0034851739 1 1
|
2850 332.27269 -23.927452 0.0034851739 1 1
|
||||||
2900 354.01554 -20.595102 0.0034851739 1 1
|
2900 331.14638 -0.12328446 0.0034851739 1 1
|
||||||
2950 289.89296 48.39731 0.0034851739 1 1
|
2950 303.67489 -24.078857 0.0034851739 1 1
|
||||||
3000 312.10013 -8.5105996 0.0034851739 1 1
|
3000 311.40462 21.563537 0.0034851739 1 1
|
||||||
3050 296.97004 -31.008446 0.0034851739 1 1
|
3050 284.72849 -23.849667 0.0034851739 1 1
|
||||||
3100 251.72228 35.710197 0.0034851739 1 1
|
3100 303.48477 39.347763 0.0034851739 1 1
|
||||||
3150 315.35895 -43.331536 0.0034851739 1 1
|
3150 264.2739 -0.22299878 0.0034851739 1 1
|
||||||
3200 334.67773 13.331058 0.0034851739 1 1
|
3200 300.03351 31.545323 0.0034851739 1 1
|
||||||
3250 308.1669 37.236121 0.0034851739 1 1
|
3250 288.56663 5.7225229 0.0034851739 1 1
|
||||||
3300 329.47601 30.798598 0.0034851739 1 1
|
3300 200.13238 -31.239655 0.0034851739 1 1
|
||||||
3350 299.40055 2.0785585 0.0034851739 1 1
|
3350 231.32512 16.631728 0.0034851739 1 1
|
||||||
3400 272.41031 32.744921 0.0034851739 1 1
|
3400 260.57402 2.1717992 0.0034851739 1 1
|
||||||
3450 279.34594 -26.181793 0.0034851739 1 1
|
3450 301.47128 -42.210623 0.0034851739 1 1
|
||||||
3500 288.89969 8.935052 0.0034851739 1 1
|
3500 321.77414 40.074365 0.0034851739 1 1
|
||||||
3550 253.4967 9.724471 0.0034851739 1 1
|
3550 353.21858 28.387783 0.0034851739 1 1
|
||||||
3600 294.83266 19.33305 0.0034851739 1 1
|
3600 331.45989 -57.800858 0.0034851739 1 1
|
||||||
3650 290.23794 -5.493907 0.0034851739 1 1
|
3650 303.88123 44.86596 0.0034851739 1 1
|
||||||
3700 332.5222 -29.83423 0.0034851739 1 1
|
3700 329.73833 -0.8061567 0.0034851739 1 1
|
||||||
3750 364.63024 20.706191 0.0034851739 1 1
|
3750 297.55588 -0.49626022 0.0034851739 1 1
|
||||||
3800 295.3842 -6.9434003 0.0034851739 1 1
|
3800 286.38794 -10.010003 0.0034851739 1 1
|
||||||
3850 346.84424 37.796066 0.0034851739 1 1
|
3850 290.17417 -43.51187 0.0034851739 1 1
|
||||||
3900 265.67286 -0.3162804 0.0034851739 1 1
|
3900 247.88933 51.23735 0.0034851739 1 1
|
||||||
3950 260.455 -2.2571901 0.0034851739 1 1
|
3950 332.31324 -18.194985 0.0034851739 1 1
|
||||||
4000 259.82636 -2.2286207 0.0034851739 1 1
|
4000 325.56802 18.402825 0.0034851739 1 1
|
||||||
4050 257.79848 24.520293 0.0034851739 1 1
|
4050 338.37594 36.430977 0.0034851739 1 1
|
||||||
4100 295.58626 -0.42318895 0.0034851739 1 1
|
4100 370.95478 39.290285 0.0034851739 1 1
|
||||||
4150 265.81352 -49.092436 0.0034851739 1 1
|
4150 348.47859 -7.0779683 0.0034851739 1 1
|
||||||
4200 302.10333 51.715258 0.0034851739 1 1
|
4200 241.30632 -33.371789 0.0034851739 1 1
|
||||||
4250 258.98448 -4.8516657 0.0034851739 1 1
|
4250 242.17258 -9.9861962 0.0034851739 1 1
|
||||||
4300 327.83401 33.717283 0.0034851739 1 1
|
4300 300.85311 -7.924429 0.0034851739 1 1
|
||||||
4350 311.59571 23.580382 0.0034851739 1 1
|
4350 273.15684 -21.257282 0.0034851739 1 1
|
||||||
4400 300.64237 -31.866661 0.0034851739 1 1
|
4400 305.77464 -5.8720712 0.0034851739 1 1
|
||||||
4450 294.15642 -0.11927262 0.0034851739 1 1
|
4450 314.97697 45.037299 0.0034851739 1 1
|
||||||
4500 299.83605 -17.560872 0.0034851739 1 1
|
4500 310.77723 16.958771 0.0034851739 1 1
|
||||||
4550 326.83265 32.818481 0.0034851739 1 1
|
4550 302.17421 12.156862 0.0034851739 1 1
|
||||||
4600 260.39068 -8.0567907 0.0034851739 1 1
|
4600 319.74799 6.8488914 0.0034851739 1 1
|
||||||
4650 247.93553 19.462991 0.0034851739 1 1
|
4650 270.86805 -13.767907 0.0034851739 1 1
|
||||||
4700 214.22252 -34.118304 0.0034851739 1 1
|
4700 249.81731 -31.197484 0.0034851739 1 1
|
||||||
4750 203.15329 27.356204 0.0034851739 1 1
|
4750 285.86481 -9.8916332 0.0034851739 1 1
|
||||||
4800 257.761 -10.407986 0.0034851739 1 1
|
4800 233.98321 7.1338518 0.0034851739 1 1
|
||||||
4850 307.1923 11.711008 0.0034851739 1 1
|
4850 302.60551 49.262886 0.0034851739 1 1
|
||||||
4900 319.00942 4.7808342 0.0034851739 1 1
|
4900 316.55055 34.663238 0.0034851739 1 1
|
||||||
4950 282.2399 24.996151 0.0034851739 1 1
|
4950 357.32741 11.583013 0.0034851739 1 1
|
||||||
5000 311.53284 -3.0012669 0.0034851739 1 1
|
5000 400.21044 -8.1780861 0.0034851739 1 1
|
||||||
5050 317.58213 32.56782 0.0034851739 1 1
|
5050 390.01845 -20.490268 0.0034851739 1 1
|
||||||
5100 267.51502 -47.695103 0.0034851739 1 1
|
5100 378.84249 -41.328772 0.0034851739 1 1
|
||||||
5150 260.19047 29.046394 0.0034851739 1 1
|
5150 324.02039 -15.023852 0.0034851739 1 1
|
||||||
5200 239.8355 -5.4890372 0.0034851739 1 1
|
5200 262.08427 10.937367 0.0034851739 1 1
|
||||||
5250 234.88522 -18.172649 0.0034851739 1 1
|
5250 255.75506 16.381495 0.0034851739 1 1
|
||||||
5300 236.43278 -39.062111 0.0034851739 1 1
|
5300 277.84991 40.682283 0.0034851739 1 1
|
||||||
5350 280.90083 -2.6932604 0.0034851739 1 1
|
5350 302.92834 9.1989644 0.0034851739 1 1
|
||||||
5400 316.65269 23.071363 0.0034851739 1 1
|
5400 283.71964 -1.6583895 0.0034851739 1 1
|
||||||
5450 345.6322 19.573305 0.0034851739 1 1
|
5450 300.71261 -4.703054 0.0034851739 1 1
|
||||||
5500 384.57334 41.50729 0.0034851739 1 1
|
5500 343.54987 -0.30546396 0.0034851739 1 1
|
||||||
5550 317.14286 9.6992981 0.0034851739 1 1
|
5550 369.51272 21.691639 0.0034851739 1 1
|
||||||
5600 279.93246 -12.076859 0.0034851739 1 1
|
5600 372.69786 -38.679919 0.0034851739 1 1
|
||||||
5650 268.06471 1.6196502 0.0034851739 1 1
|
5650 327.41256 11.352201 0.0034851739 1 1
|
||||||
5700 271.85714 -40.378489 0.0034851739 1 1
|
5700 278.9861 -23.82728 0.0034851739 1 1
|
||||||
5750 313.88361 10.722652 0.0034851739 1 1
|
5750 308.30037 -20.756238 0.0034851739 1 1
|
||||||
5800 281.54499 31.914883 0.0034851739 1 1
|
5800 341.4559 28.058314 0.0034851739 1 1
|
||||||
5850 293.34819 -8.3155887 0.0034851739 1 1
|
5850 322.9786 -10.731862 0.0034851739 1 1
|
||||||
5900 249.25215 -17.307228 0.0034851739 1 1
|
5900 304.53598 32.825105 0.0034851739 1 1
|
||||||
5950 268.18645 -4.7223601 0.0034851739 1 1
|
5950 287.17515 -36.780057 0.0034851739 1 1
|
||||||
6000 302.99402 -52.615432 0.0034851739 1 1
|
6000 296.52688 18.782156 0.0034851739 1 1
|
||||||
6050 314.57946 34.513152 0.0034851739 1 1
|
6050 314.25411 15.99272 0.0034851739 1 1
|
||||||
6100 345.70342 30.33474 0.0034851739 1 1
|
6100 313.86572 3.4344108 0.0034851739 1 1
|
||||||
6150 316.59329 31.862566 0.0034851739 1 1
|
6150 325.64197 32.39212 0.0034851739 1 1
|
||||||
6200 317.85341 -32.23511 0.0034851739 1 1
|
6200 367.4298 -27.161154 0.0034851739 1 1
|
||||||
6250 282.97674 0.29367434 0.0034851739 1 1
|
6250 369.30937 39.020881 0.0034851739 1 1
|
||||||
6300 267.91823 19.265617 0.0034851739 1 1
|
6300 328.92245 -23.175612 0.0034851739 1 1
|
||||||
6350 226.2098 -13.093573 0.0034851739 1 1
|
6350 305.6293 4.9011587 0.0034851739 1 1
|
||||||
6400 307.73307 17.439662 0.0034851739 1 1
|
6400 241.70456 -13.675247 0.0034851739 1 1
|
||||||
6450 292.16311 -23.275251 0.0034851739 1 1
|
6450 265.66574 2.4049735 0.0034851739 1 1
|
||||||
6500 335.05972 26.936588 0.0034851739 1 1
|
6500 249.3592 13.420453 0.0034851739 1 1
|
||||||
6550 380.7351 19.532324 0.0034851739 1 1
|
6550 294.5367 10.856753 0.0034851739 1 1
|
||||||
6600 373.01041 30.879146 0.0034851739 1 1
|
6600 308.20246 18.992923 0.0034851739 1 1
|
||||||
6650 335.37897 -2.1766711 0.0034851739 1 1
|
6650 305.43756 -49.57151 0.0034851739 1 1
|
||||||
6700 298.94275 -10.578361 0.0034851739 1 1
|
6700 320.27395 11.339101 0.0034851739 1 1
|
||||||
6750 255.11449 -50.575851 0.0034851739 1 1
|
6750 321.7875 -23.463361 0.0034851739 1 1
|
||||||
6800 222.87598 3.0488985 0.0034851739 1 1
|
6800 303.40316 7.6256997 0.0034851739 1 1
|
||||||
6850 268.57268 -43.676136 0.0034851739 1 1
|
6850 297.18652 51.52186 0.0034851739 1 1
|
||||||
6900 260.30442 4.7484508 0.0034851739 1 1
|
6900 284.19084 -8.496294 0.0034851739 1 1
|
||||||
6950 289.15739 31.622589 0.0034851739 1 1
|
6950 331.04173 13.227745 0.0034851739 1 1
|
||||||
7000 289.11733 21.636361 0.0034851739 1 1
|
7000 311.38027 -43.26105 0.0034851739 1 1
|
||||||
7050 361.08905 22.442487 0.0034851739 1 1
|
7050 286.82046 -14.171194 0.0034851739 1 1
|
||||||
7100 368.95006 4.8393179 0.0034851739 1 1
|
7100 302.81691 12.058085 0.0034851739 1 1
|
||||||
7150 331.47878 -36.202032 0.0034851739 1 1
|
7150 297.18018 -43.110658 0.0034851739 1 1
|
||||||
7200 304.72518 13.982604 0.0034851739 1 1
|
7200 332.46131 26.051496 0.0034851739 1 1
|
||||||
7250 284.0996 0.53900966 0.0034851739 1 1
|
7250 262.72288 41.161451 0.0034851739 1 1
|
||||||
7300 269.17156 -41.572215 0.0034851739 1 1
|
7300 250.62739 -23.440907 0.0034851739 1 1
|
||||||
7350 222.06563 25.56579 0.0034851739 1 1
|
7350 296.92141 35.869216 0.0034851739 1 1
|
||||||
7400 304.09479 15.48238 0.0034851739 1 1
|
7400 245.06807 -13.467896 0.0034851739 1 1
|
||||||
7450 298.79046 -7.4369454 0.0034851739 1 1
|
7450 272.2659 -23.292836 0.0034851739 1 1
|
||||||
7500 328.78217 14.672853 0.0034851739 1 1
|
7500 209.05776 13.888665 0.0034851739 1 1
|
||||||
7550 347.06589 -37.168123 0.0034851739 1 1
|
7550 255.03716 4.9662624 0.0034851739 1 1
|
||||||
7600 362.84157 20.514912 0.0034851739 1 1
|
7600 312.26011 -37.350427 0.0034851739 1 1
|
||||||
7650 347.15916 2.3477485 0.0034851739 1 1
|
7650 305.5823 55.208039 0.0034851739 1 1
|
||||||
7700 262.09822 33.901831 0.0034851739 1 1
|
7700 325.13382 -18.370791 0.0034851739 1 1
|
||||||
7750 275.85921 -33.536059 0.0034851739 1 1
|
7750 363.24898 -22.473126 0.0034851739 1 1
|
||||||
7800 281.16159 -18.288414 0.0034851739 1 1
|
7800 350.19254 26.792307 0.0034851739 1 1
|
||||||
7850 264.83553 -30.566284 0.0034851739 1 1
|
7850 271.76418 -17.843445 0.0034851739 1 1
|
||||||
7900 257.35224 -35.087067 0.0034851739 1 1
|
7900 272.70301 -11.709349 0.0034851739 1 1
|
||||||
7950 286.30756 26.586163 0.0034851739 1 1
|
7950 298.5993 -12.736235 0.0034851739 1 1
|
||||||
8000 248.38175 15.601961 0.0034851739 1 1
|
8000 274.52611 49.657345 0.0034851739 1 1
|
||||||
8050 292.59171 28.784541 0.0034851739 1 1
|
8050 304.73711 -0.52485689 0.0034851739 1 1
|
||||||
8100 312.52852 0.87995053 0.0034851739 1 1
|
8100 328.29239 -39.901891 0.0034851739 1 1
|
||||||
8150 285.62346 -15.337252 0.0034851739 1 1
|
8150 406.52096 2.8669076 0.0034851739 1 1
|
||||||
8200 292.24175 -38.192576 0.0034851739 1 1
|
8200 332.17309 -51.168754 0.0034851739 1 1
|
||||||
8250 321.61618 -19.030398 0.0034851739 1 1
|
8250 354.68419 53.003157 0.0034851739 1 1
|
||||||
8300 319.42189 55.078305 0.0034851739 1 1
|
8300 337.28934 20.766408 0.0034851739 1 1
|
||||||
8350 308.00357 32.050518 0.0034851739 1 1
|
8350 361.81133 -54.159227 0.0034851739 1 1
|
||||||
8400 345.68186 8.7983733 0.0034851739 1 1
|
8400 305.59597 24.011667 0.0034851739 1 1
|
||||||
8450 358.00849 12.434592 0.0034851739 1 1
|
8450 303.25823 4.423341 0.0034851739 1 1
|
||||||
8500 370.14359 4.2184721 0.0034851739 1 1
|
8500 253.50747 -11.026949 0.0034851739 1 1
|
||||||
8550 360.6511 12.580836 0.0034851739 1 1
|
8550 277.13504 23.204625 0.0034851739 1 1
|
||||||
8600 290.04938 -4.8422589 0.0034851739 1 1
|
8600 291.40211 -22.253861 0.0034851739 1 1
|
||||||
8650 297.95745 -5.3185591 0.0034851739 1 1
|
8650 307.93765 32.14162 0.0034851739 1 1
|
||||||
8700 286.54284 -31.490479 0.0034851739 1 1
|
8700 309.1529 0.36279434 0.0034851739 1 1
|
||||||
8750 308.08791 19.24417 0.0034851739 1 1
|
8750 355.10326 11.677219 0.0034851739 1 1
|
||||||
8800 231.72534 12.262217 0.0034851739 1 1
|
8800 330.21328 19.235269 0.0034851739 1 1
|
||||||
8850 329.2349 -8.9133933 0.0034851739 1 1
|
8850 241.29109 21.707386 0.0034851739 1 1
|
||||||
8900 287.64023 10.525164 0.0034851739 1 1
|
8900 319.15363 -60.010115 0.0034851739 1 1
|
||||||
8950 341.08296 2.80127 0.0034851739 1 1
|
8950 308.88552 -57.637014 0.0034851739 1 1
|
||||||
9000 403.71266 17.88418 0.0034851739 1 1
|
9000 272.22373 51.15837 0.0034851739 1 1
|
||||||
9050 348.95132 -4.5813611 0.0034851739 1 1
|
9050 248.84947 7.3390565 0.0034851739 1 1
|
||||||
9100 307.98322 16.707575 0.0034851739 1 1
|
9100 221.91564 48.387079 0.0034851739 1 1
|
||||||
9150 276.75719 -35.563923 0.0034851739 1 1
|
9150 298.03506 2.9058639 0.0034851739 1 1
|
||||||
9200 230.15547 3.8091656 0.0034851739 1 1
|
9200 274.25114 -24.597819 0.0034851739 1 1
|
||||||
9250 264.64479 -20.97438 0.0034851739 1 1
|
9250 334.08373 5.1079577 0.0034851739 1 1
|
||||||
9300 285.70467 13.881735 0.0034851739 1 1
|
9300 383.07285 -23.274763 0.0034851739 1 1
|
||||||
9350 297.515 13.599319 0.0034851739 1 1
|
9350 335.00581 20.94212 0.0034851739 1 1
|
||||||
9400 341.45203 -28.494544 0.0034851739 1 1
|
9400 309.23862 34.074744 0.0034851739 1 1
|
||||||
9450 319.29703 -27.907344 0.0034851739 1 1
|
9450 312.62262 -28.468057 0.0034851739 1 1
|
||||||
9500 332.50473 4.9891138 0.0034851739 1 1
|
9500 324.54274 2.851136 0.0034851739 1 1
|
||||||
9550 293.10499 -8.3244772 0.0034851739 1 1
|
9550 313.32781 22.468182 0.0034851739 1 1
|
||||||
9600 255.31174 2.2568315 0.0034851739 1 1
|
9600 269.04372 4.064934 0.0034851739 1 1
|
||||||
9650 250.01932 5.7005159 0.0034851739 1 1
|
9650 270.98476 -21.520127 0.0034851739 1 1
|
||||||
9700 278.37409 -8.5970424 0.0034851739 1 1
|
9700 236.8736 16.250728 0.0034851739 1 1
|
||||||
9750 294.86737 17.686447 0.0034851739 1 1
|
9750 333.94686 1.6864148 0.0034851739 1 1
|
||||||
9800 277.07345 -2.0856886 0.0034851739 1 1
|
9800 330.91875 12.150018 0.0034851739 1 1
|
||||||
9850 295.54707 2.8365471 0.0034851739 1 1
|
9850 343.8603 25.338853 0.0034851739 1 1
|
||||||
9900 311.51074 29.885116 0.0034851739 1 1
|
9900 330.93364 -28.292992 0.0034851739 1 1
|
||||||
9950 296.01363 12.206068 0.0034851739 1 1
|
9950 291.25518 25.795948 0.0034851739 1 1
|
||||||
10000 341.35187 -3.0045464 0.0034851739 1 1
|
10000 319.25565 25.323846 0.0034851739 1 1
|
||||||
Loop time of 3.64332 on 4 procs for 10000 steps with 44 atoms
|
Loop time of 3.55353 on 4 procs for 10000 steps with 44 atoms
|
||||||
|
|
||||||
Performance: 237.146 ns/day, 0.101 hours/ns, 2744.751 timesteps/s
|
Performance: 243.139 ns/day, 0.099 hours/ns, 2814.105 timesteps/s
|
||||||
94.5% CPU use with 4 MPI tasks x 1 OpenMP threads
|
93.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 0.0029962 | 0.10426 | 0.34564 | 43.9 | 2.86
|
Pair | 0.0030422 | 0.10454 | 0.35211 | 44.8 | 2.94
|
||||||
Bond | 0.005929 | 0.29803 | 0.95305 | 71.2 | 8.18
|
Bond | 0.0063896 | 0.29222 | 0.94356 | 71.3 | 8.22
|
||||||
Kspace | 0.83969 | 1.5992 | 1.9344 | 35.6 | 43.89
|
Kspace | 0.88508 | 1.6486 | 1.979 | 35.1 | 46.39
|
||||||
Neigh | 0.65468 | 0.66443 | 0.67431 | 0.9 | 18.24
|
Neigh | 0.61154 | 0.62212 | 0.63307 | 1.0 | 17.51
|
||||||
Comm | 0.1727 | 0.23754 | 0.2745 | 8.0 | 6.52
|
Comm | 0.18944 | 0.24549 | 0.29196 | 7.9 | 6.91
|
||||||
Output | 0.0048738 | 0.010774 | 0.028434 | 9.8 | 0.30
|
Output | 0.0050066 | 0.011804 | 0.032134 | 10.8 | 0.33
|
||||||
Modify | 0.62478 | 0.70376 | 0.779 | 6.5 | 19.32
|
Modify | 0.52282 | 0.60522 | 0.69588 | 7.9 | 17.03
|
||||||
Other | | 0.02531 | | | 0.69
|
Other | | 0.02359 | | | 0.66
|
||||||
|
|
||||||
Nlocal: 11 ave 40 max 0 min
|
Nlocal: 11 ave 44 max 0 min
|
||||||
Histogram: 2 1 0 0 0 0 0 0 0 1
|
Histogram: 3 0 0 0 0 0 0 0 0 1
|
||||||
Nghost: 36 ave 47 max 7 min
|
Nghost: 33 ave 44 max 0 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 3
|
Histogram: 1 0 0 0 0 0 0 0 0 3
|
||||||
Neighs: 203 ave 809 max 0 min
|
Neighs: 205.75 ave 823 max 0 min
|
||||||
Histogram: 3 0 0 0 0 0 0 0 0 1
|
Histogram: 3 0 0 0 0 0 0 0 0 1
|
||||||
|
|
||||||
Total # of neighbors = 812
|
Total # of neighbors = 823
|
||||||
Ave neighs/atom = 18.4545
|
Ave neighs/atom = 18.7045
|
||||||
Ave special neighs/atom = 9.77273
|
Ave special neighs/atom = 9.77273
|
||||||
Neighbor list builds = 10000
|
Neighbor list builds = 10000
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
|
|
||||||
# write_restart restart_longrun
|
# write_restart restart_longrun
|
||||||
# write_data restart_longrun.data
|
# write_data restart_longrun.data
|
||||||
|
|
||||||
|
Please see the log.cite file for references relevant to this simulation
|
||||||
|
|
||||||
Total wall time: 0:00:03
|
Total wall time: 0:00:03
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
$(COLVARS_OBJ_DIR)colvaratoms.o: colvaratoms.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvaratoms.o: colvaratoms.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h \
|
colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \
|
||||||
colvarparse.h colvaratoms.h colvardeps.h
|
colvarparse.h colvaratoms.h colvardeps.h
|
||||||
$(COLVARS_OBJ_DIR)colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvar.h \
|
colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvar.h \
|
||||||
colvarparse.h colvardeps.h lepton/include/Lepton.h \
|
colvarparse.h colvardeps.h lepton/include/Lepton.h \
|
||||||
lepton/include/lepton/CompiledExpression.h \
|
lepton/include/lepton/CompiledExpression.h \
|
||||||
lepton/include/lepton/ExpressionTreeNode.h \
|
lepton/include/lepton/ExpressionTreeNode.h \
|
||||||
@ -29,7 +29,7 @@ $(COLVARS_OBJ_DIR)colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h \
|
|||||||
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
||||||
colvarbias_alb.h
|
colvarbias_alb.h
|
||||||
$(COLVARS_OBJ_DIR)colvarbias.o: colvarbias.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvarbias.o: colvarbias.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvarbias.h \
|
colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvarbias.h \
|
||||||
colvar.h colvarparse.h colvardeps.h lepton/include/Lepton.h \
|
colvar.h colvarparse.h colvardeps.h lepton/include/Lepton.h \
|
||||||
lepton/include/lepton/CompiledExpression.h \
|
lepton/include/lepton/CompiledExpression.h \
|
||||||
lepton/include/lepton/ExpressionTreeNode.h \
|
lepton/include/lepton/ExpressionTreeNode.h \
|
||||||
@ -42,8 +42,8 @@ $(COLVARS_OBJ_DIR)colvarbias.o: colvarbias.cpp colvarmodule.h \
|
|||||||
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
||||||
colvargrid.h
|
colvargrid.h
|
||||||
$(COLVARS_OBJ_DIR)colvarbias_histogram.o: colvarbias_histogram.cpp \
|
$(COLVARS_OBJ_DIR)colvarbias_histogram.o: colvarbias_histogram.cpp \
|
||||||
colvarmodule.h colvars_version.h colvarproxy.h colvarvalue.h \
|
colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \
|
||||||
colvartypes.h colvar.h colvarparse.h colvardeps.h \
|
colvarvalue.h colvar.h colvarparse.h colvardeps.h \
|
||||||
lepton/include/Lepton.h lepton/include/lepton/CompiledExpression.h \
|
lepton/include/Lepton.h lepton/include/lepton/CompiledExpression.h \
|
||||||
lepton/include/lepton/ExpressionTreeNode.h \
|
lepton/include/lepton/ExpressionTreeNode.h \
|
||||||
lepton/include/lepton/windowsIncludes.h \
|
lepton/include/lepton/windowsIncludes.h \
|
||||||
@ -55,7 +55,7 @@ $(COLVARS_OBJ_DIR)colvarbias_histogram.o: colvarbias_histogram.cpp \
|
|||||||
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
||||||
colvarbias_histogram.h colvarbias.h colvargrid.h
|
colvarbias_histogram.h colvarbias.h colvargrid.h
|
||||||
$(COLVARS_OBJ_DIR)colvarbias_meta.o: colvarbias_meta.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvarbias_meta.o: colvarbias_meta.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvar.h \
|
colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvar.h \
|
||||||
colvarparse.h colvardeps.h lepton/include/Lepton.h \
|
colvarparse.h colvardeps.h lepton/include/Lepton.h \
|
||||||
lepton/include/lepton/CompiledExpression.h \
|
lepton/include/lepton/CompiledExpression.h \
|
||||||
lepton/include/lepton/ExpressionTreeNode.h \
|
lepton/include/lepton/ExpressionTreeNode.h \
|
||||||
@ -68,8 +68,8 @@ $(COLVARS_OBJ_DIR)colvarbias_meta.o: colvarbias_meta.cpp colvarmodule.h \
|
|||||||
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
||||||
colvarbias_meta.h colvarbias.h colvargrid.h
|
colvarbias_meta.h colvarbias.h colvargrid.h
|
||||||
$(COLVARS_OBJ_DIR)colvarbias_restraint.o: colvarbias_restraint.cpp \
|
$(COLVARS_OBJ_DIR)colvarbias_restraint.o: colvarbias_restraint.cpp \
|
||||||
colvarmodule.h colvars_version.h colvarproxy.h colvarvalue.h \
|
colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \
|
||||||
colvartypes.h colvarbias_restraint.h colvarbias.h colvar.h colvarparse.h \
|
colvarvalue.h colvarbias_restraint.h colvarbias.h colvar.h colvarparse.h \
|
||||||
colvardeps.h lepton/include/Lepton.h \
|
colvardeps.h lepton/include/Lepton.h \
|
||||||
lepton/include/lepton/CompiledExpression.h \
|
lepton/include/lepton/CompiledExpression.h \
|
||||||
lepton/include/lepton/ExpressionTreeNode.h \
|
lepton/include/lepton/ExpressionTreeNode.h \
|
||||||
@ -171,7 +171,7 @@ $(COLVARS_OBJ_DIR)colvar.o: colvar.cpp colvarmodule.h colvars_version.h \
|
|||||||
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \
|
||||||
colvarcomp.h colvaratoms.h colvarproxy.h colvarscript.h colvarbias.h
|
colvarcomp.h colvaratoms.h colvarproxy.h colvarscript.h colvarbias.h
|
||||||
$(COLVARS_OBJ_DIR)colvardeps.o: colvardeps.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvardeps.o: colvardeps.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvardeps.h \
|
colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvardeps.h \
|
||||||
colvarparse.h
|
colvarparse.h
|
||||||
$(COLVARS_OBJ_DIR)colvargrid.o: colvargrid.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvargrid.o: colvargrid.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarvalue.h colvartypes.h colvarparse.h colvar.h \
|
colvars_version.h colvarvalue.h colvartypes.h colvarparse.h colvar.h \
|
||||||
@ -204,7 +204,7 @@ $(COLVARS_OBJ_DIR)colvarmodule.o: colvarmodule.cpp colvarmodule.h \
|
|||||||
$(COLVARS_OBJ_DIR)colvarparse.o: colvarparse.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvarparse.o: colvarparse.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarvalue.h colvartypes.h colvarparse.h
|
colvars_version.h colvarvalue.h colvartypes.h colvarparse.h
|
||||||
$(COLVARS_OBJ_DIR)colvarproxy.o: colvarproxy.cpp colvarmodule.h \
|
$(COLVARS_OBJ_DIR)colvarproxy.o: colvarproxy.cpp colvarmodule.h \
|
||||||
colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h \
|
colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \
|
||||||
colvarscript.h colvarbias.h colvar.h colvarparse.h colvardeps.h \
|
colvarscript.h colvarbias.h colvar.h colvarparse.h colvardeps.h \
|
||||||
lepton/include/Lepton.h lepton/include/lepton/CompiledExpression.h \
|
lepton/include/Lepton.h lepton/include/lepton/CompiledExpression.h \
|
||||||
lepton/include/lepton/ExpressionTreeNode.h \
|
lepton/include/lepton/ExpressionTreeNode.h \
|
||||||
|
|||||||
@ -77,6 +77,8 @@ int colvar::cvc::init(std::string const &conf)
|
|||||||
|
|
||||||
if (cvm::debug())
|
if (cvm::debug())
|
||||||
cvm::log("Done initializing cvc base object.\n");
|
cvm::log("Done initializing cvc base object.\n");
|
||||||
|
|
||||||
|
return error_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
lib/latte/.gitignore
vendored
2
lib/latte/.gitignore
vendored
@ -2,4 +2,4 @@
|
|||||||
/filelink
|
/filelink
|
||||||
/liblink
|
/liblink
|
||||||
/includelink
|
/includelink
|
||||||
/LATTE-master
|
/LATTE-*
|
||||||
|
|||||||
8
lib/vtk/Makefile.lammps.fedora28_vtk7
Normal file
8
lib/vtk/Makefile.lammps.fedora28_vtk7
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Settings that the LAMMPS build will import when this package library is used
|
||||||
|
|
||||||
|
# settings for VTK 7.1.1 on Fedora 28. This seems to work with Fedora versions going back to at least 23 and VTK version 6.x.
|
||||||
|
# You need to install vtk-devel and all its dependencies using "dnf install vtk-devel"
|
||||||
|
vtk_SYSINC = -I/usr/include/vtk
|
||||||
|
vtk_SYSLIB = -lvtkCommonCore -lvtkIOCore -lvtkCommonDataModel -lvtkIOXML -lvtkIOLegacy -lvtkIOParallelXML
|
||||||
|
vtk_SYSPATH = -L/usr/lib64/vtk
|
||||||
|
|
||||||
2
src/.gitignore
vendored
2
src/.gitignore
vendored
@ -734,6 +734,8 @@
|
|||||||
/pair_hbond_dreiding_morse.h
|
/pair_hbond_dreiding_morse.h
|
||||||
/pair_ilp_graphene_hbn.cpp
|
/pair_ilp_graphene_hbn.cpp
|
||||||
/pair_ilp_graphene_hbn.h
|
/pair_ilp_graphene_hbn.h
|
||||||
|
/pair_kim.cpp
|
||||||
|
/pair_kim.h
|
||||||
/pair_kolmogorov_crespi_full.cpp
|
/pair_kolmogorov_crespi_full.cpp
|
||||||
/pair_kolmogorov_crespi_full.h
|
/pair_kolmogorov_crespi_full.h
|
||||||
/pair_kolmogorov_crespi_z.cpp
|
/pair_kolmogorov_crespi_z.cpp
|
||||||
|
|||||||
@ -134,6 +134,7 @@ fi
|
|||||||
if (test $1 = "USER-MISC") then
|
if (test $1 = "USER-MISC") then
|
||||||
depend GPU
|
depend GPU
|
||||||
depend USER-OMP
|
depend USER-OMP
|
||||||
|
depend USER-INTEL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (test $1 = "USER-REAXC") then
|
if (test $1 = "USER-REAXC") then
|
||||||
|
|||||||
@ -61,13 +61,13 @@ namespace GPU_EXTRA {
|
|||||||
else
|
else
|
||||||
error->all(FLERR,"Unknown error in GPU library");
|
error->all(FLERR,"Unknown error in GPU library");
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
inline void gpu_ready(LAMMPS_NS::Modify *modify, LAMMPS_NS::Error *error) {
|
inline void gpu_ready(LAMMPS_NS::Modify *modify, LAMMPS_NS::Error *error) {
|
||||||
int ifix = modify->find_fix("package_gpu");
|
int ifix = modify->find_fix("package_gpu");
|
||||||
if (ifix < 0)
|
if (ifix < 0)
|
||||||
error->all(FLERR,"The package gpu command is required for gpu styles");
|
error->all(FLERR,"The package gpu command is required for gpu styles");
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1264,15 +1264,15 @@ void *PairKIM::extract(const char *str, int &dim)
|
|||||||
int ier;
|
int ier;
|
||||||
int dummyint;
|
int dummyint;
|
||||||
int isIndexed = 0;
|
int isIndexed = 0;
|
||||||
int maxLine = 1024;
|
const int MAXLINE = 1024;
|
||||||
int rank;
|
int rank;
|
||||||
int validParam = 0;
|
int validParam = 0;
|
||||||
int numParams;
|
int numParams;
|
||||||
int *speciesIndex = new int[maxLine];
|
int *speciesIndex = new int[MAXLINE];
|
||||||
char *paramStr = new char[maxLine];
|
char *paramStr = new char[MAXLINE];
|
||||||
char *paramName;
|
char *paramName;
|
||||||
char *indexStr;
|
char *indexStr;
|
||||||
char message[maxLine];
|
char message[MAXLINE];
|
||||||
int offset;
|
int offset;
|
||||||
double* paramPtr;
|
double* paramPtr;
|
||||||
|
|
||||||
@ -1354,7 +1354,7 @@ void *PairKIM::extract(const char *str, int &dim)
|
|||||||
}
|
}
|
||||||
kim_error(__LINE__,"get_rank",kimerror);
|
kim_error(__LINE__,"get_rank",kimerror);
|
||||||
|
|
||||||
int *shape = new int[maxLine];
|
int *shape = new int[MAXLINE];
|
||||||
dummyint = (*pkim).get_shape(paramName, shape, &kimerror);
|
dummyint = (*pkim).get_shape(paramName, shape, &kimerror);
|
||||||
if (kimerror == KIM_STATUS_FAIL)
|
if (kimerror == KIM_STATUS_FAIL)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -2261,7 +2261,7 @@ void MSM::restriction(int n)
|
|||||||
double ***qgrid2 = qgrid[n+1];
|
double ***qgrid2 = qgrid[n+1];
|
||||||
|
|
||||||
int k = 0;
|
int k = 0;
|
||||||
int index[p+2];
|
int *index = new int[p+2];
|
||||||
for (int nu=-p; nu<=p; nu++) {
|
for (int nu=-p; nu<=p; nu++) {
|
||||||
if (nu%2 == 0 && nu != 0) continue;
|
if (nu%2 == 0 && nu != 0) continue;
|
||||||
phi1d[0][k] = compute_phi(nu*delxinv[n+1]/delxinv[n]);
|
phi1d[0][k] = compute_phi(nu*delxinv[n+1]/delxinv[n]);
|
||||||
@ -2317,7 +2317,7 @@ void MSM::restriction(int n)
|
|||||||
}
|
}
|
||||||
qgrid2[kp][jp][ip] += q2sum;
|
qgrid2[kp][jp][ip] += q2sum;
|
||||||
}
|
}
|
||||||
|
delete[] index;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -2348,7 +2348,7 @@ void MSM::prolongation(int n)
|
|||||||
double ***v5grid2 = v5grid[n+1];
|
double ***v5grid2 = v5grid[n+1];
|
||||||
|
|
||||||
int k = 0;
|
int k = 0;
|
||||||
int index[p+2];
|
int *index = new int[p+2];
|
||||||
for (int nu=-p; nu<=p; nu++) {
|
for (int nu=-p; nu<=p; nu++) {
|
||||||
if (nu%2 == 0 && nu != 0) continue;
|
if (nu%2 == 0 && nu != 0) continue;
|
||||||
phi1d[0][k] = compute_phi(nu*delxinv[n+1]/delxinv[n]);
|
phi1d[0][k] = compute_phi(nu*delxinv[n+1]/delxinv[n]);
|
||||||
@ -2420,7 +2420,7 @@ void MSM::prolongation(int n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
delete[] index;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
|
|||||||
@ -310,10 +310,10 @@ double PairComb3::init_one(int i, int j)
|
|||||||
|
|
||||||
void PairComb3::read_lib()
|
void PairComb3::read_lib()
|
||||||
{
|
{
|
||||||
unsigned int maxlib = 1024;
|
const unsigned int MAXLIB = 1024;
|
||||||
int i,j,k,l,nwords,m;
|
int i,j,k,l,nwords,m;
|
||||||
int ii,jj,kk,ll,mm,iii;
|
int ii,jj,kk,ll,mm,iii;
|
||||||
char s[maxlib];
|
char s[MAXLIB];
|
||||||
char **words = new char*[80];
|
char **words = new char*[80];
|
||||||
|
|
||||||
// open libraray file on proc 0
|
// open libraray file on proc 0
|
||||||
@ -327,8 +327,8 @@ void PairComb3::read_lib()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// read and store at the same time
|
// read and store at the same time
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -339,7 +339,7 @@ void PairComb3::read_lib()
|
|||||||
ccutoff[4] = atof(words[4]);
|
ccutoff[4] = atof(words[4]);
|
||||||
ccutoff[5] = atof(words[5]);
|
ccutoff[5] = atof(words[5]);
|
||||||
|
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -351,7 +351,7 @@ void PairComb3::read_lib()
|
|||||||
ch_a[5] = atof(words[5]);
|
ch_a[5] = atof(words[5]);
|
||||||
ch_a[6] = atof(words[6]);
|
ch_a[6] = atof(words[6]);
|
||||||
|
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -359,7 +359,7 @@ void PairComb3::read_lib()
|
|||||||
nsplrad = atoi(words[1]);
|
nsplrad = atoi(words[1]);
|
||||||
nspltor = atoi(words[2]);
|
nspltor = atoi(words[2]);
|
||||||
|
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -367,7 +367,7 @@ void PairComb3::read_lib()
|
|||||||
maxy = atoi(words[1]);
|
maxy = atoi(words[1]);
|
||||||
maxz = atoi(words[2]);
|
maxz = atoi(words[2]);
|
||||||
|
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -376,7 +376,7 @@ void PairComb3::read_lib()
|
|||||||
maxconj = atoi(words[2]);
|
maxconj = atoi(words[2]);
|
||||||
|
|
||||||
for (l=0; l<nsplpcn; l++) {
|
for (l=0; l<nsplpcn; l++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -385,14 +385,14 @@ void PairComb3::read_lib()
|
|||||||
dvmaxxcn[l] = atof(words[3]);
|
dvmaxxcn[l] = atof(words[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
ntab = atoi(words[0]);
|
ntab = atoi(words[0]);
|
||||||
|
|
||||||
for (i=0; i<ntab+1; i++){
|
for (i=0; i<ntab+1; i++){
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -405,7 +405,7 @@ void PairComb3::read_lib()
|
|||||||
for (i=0; i<maxx+1; i++)
|
for (i=0; i<maxx+1; i++)
|
||||||
for (j=0; j<maxy+1; j++)
|
for (j=0; j<maxy+1; j++)
|
||||||
for (k=0; k<maxz+1; k++) {
|
for (k=0; k<maxz+1; k++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -423,7 +423,7 @@ void PairComb3::read_lib()
|
|||||||
for (i=0; i<maxx; i++)
|
for (i=0; i<maxx; i++)
|
||||||
for (j=0; j<maxy; j++)
|
for (j=0; j<maxy; j++)
|
||||||
for (k=0; k<maxz; k++) {
|
for (k=0; k<maxz; k++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -432,7 +432,7 @@ void PairComb3::read_lib()
|
|||||||
jj = atoi(words[2]);
|
jj = atoi(words[2]);
|
||||||
kk = atoi(words[3]);
|
kk = atoi(words[3]);
|
||||||
for(iii=0; iii<2; iii++) {
|
for(iii=0; iii<2; iii++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -447,7 +447,7 @@ void PairComb3::read_lib()
|
|||||||
for (i=0; i<maxxc+1; i++)
|
for (i=0; i<maxxc+1; i++)
|
||||||
for (j=0; j<maxyc+1; j++)
|
for (j=0; j<maxyc+1; j++)
|
||||||
for (k=0; k<maxconj; k++) {
|
for (k=0; k<maxconj; k++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -465,7 +465,7 @@ void PairComb3::read_lib()
|
|||||||
for (i=0; i<maxxc; i++)
|
for (i=0; i<maxxc; i++)
|
||||||
for (j=0; j<maxyc; j++)
|
for (j=0; j<maxyc; j++)
|
||||||
for (k=0; k<maxconj-1; k++) {
|
for (k=0; k<maxconj-1; k++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -474,7 +474,7 @@ void PairComb3::read_lib()
|
|||||||
jj = atoi(words[2]);
|
jj = atoi(words[2]);
|
||||||
kk = atoi(words[3])-1;
|
kk = atoi(words[3])-1;
|
||||||
for (iii=0; iii<2; iii++) {
|
for (iii=0; iii<2; iii++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -489,7 +489,7 @@ void PairComb3::read_lib()
|
|||||||
for (i=0; i<maxxc+1; i++)
|
for (i=0; i<maxxc+1; i++)
|
||||||
for (j=0; j<maxyc+1; j++)
|
for (j=0; j<maxyc+1; j++)
|
||||||
for (k=0; k<maxconj; k++) {
|
for (k=0; k<maxconj; k++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -507,7 +507,7 @@ void PairComb3::read_lib()
|
|||||||
for (i=0; i<maxxc; i++)
|
for (i=0; i<maxxc; i++)
|
||||||
for (j=0; j<maxyc; j++)
|
for (j=0; j<maxyc; j++)
|
||||||
for (k=0; k<maxconj-1; k++) {
|
for (k=0; k<maxconj-1; k++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
@ -516,7 +516,7 @@ void PairComb3::read_lib()
|
|||||||
jj = atoi(words[2]);
|
jj = atoi(words[2]);
|
||||||
kk = atoi(words[3])-1;
|
kk = atoi(words[3])-1;
|
||||||
for(iii=0; iii<2; iii++) {
|
for(iii=0; iii<2; iii++) {
|
||||||
fgets(s,maxlib,fp);
|
fgets(s,MAXLIB,fp);
|
||||||
nwords = 0;
|
nwords = 0;
|
||||||
words[nwords++] = strtok(s," \t\n\r\f");
|
words[nwords++] = strtok(s," \t\n\r\f");
|
||||||
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue;
|
||||||
|
|||||||
@ -1349,7 +1349,7 @@ void FixGCMC::attempt_molecule_insertion()
|
|||||||
MathExtra::quat_to_mat(quat,rotmat);
|
MathExtra::quat_to_mat(quat,rotmat);
|
||||||
|
|
||||||
double insertion_energy = 0.0;
|
double insertion_energy = 0.0;
|
||||||
bool procflag[natoms_per_molecule];
|
bool *procflag = new bool[natoms_per_molecule];
|
||||||
|
|
||||||
for (int i = 0; i < natoms_per_molecule; i++) {
|
for (int i = 0; i < natoms_per_molecule; i++) {
|
||||||
MathExtra::matvec(rotmat,onemols[imol]->x[i],molcoords[i]);
|
MathExtra::matvec(rotmat,onemols[imol]->x[i],molcoords[i]);
|
||||||
@ -1472,6 +1472,7 @@ void FixGCMC::attempt_molecule_insertion()
|
|||||||
update_gas_atoms_list();
|
update_gas_atoms_list();
|
||||||
ninsertion_successes += 1.0;
|
ninsertion_successes += 1.0;
|
||||||
}
|
}
|
||||||
|
delete[] procflag;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -1934,7 +1935,7 @@ void FixGCMC::attempt_molecule_deletion_full()
|
|||||||
grow_molecule_arrays(nmolq);
|
grow_molecule_arrays(nmolq);
|
||||||
|
|
||||||
int m = 0;
|
int m = 0;
|
||||||
int tmpmask[atom->nlocal];
|
int *tmpmask = new int[atom->nlocal];
|
||||||
for (int i = 0; i < atom->nlocal; i++) {
|
for (int i = 0; i < atom->nlocal; i++) {
|
||||||
if (atom->molecule[i] == deletion_molecule) {
|
if (atom->molecule[i] == deletion_molecule) {
|
||||||
tmpmask[i] = atom->mask[i];
|
tmpmask[i] = atom->mask[i];
|
||||||
@ -1982,6 +1983,7 @@ void FixGCMC::attempt_molecule_deletion_full()
|
|||||||
if (force->kspace) force->kspace->qsum_qsq();
|
if (force->kspace) force->kspace->qsum_qsq();
|
||||||
}
|
}
|
||||||
update_gas_atoms_list();
|
update_gas_atoms_list();
|
||||||
|
delete[] tmpmask;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -2426,9 +2428,9 @@ void FixGCMC::update_gas_atoms_list()
|
|||||||
for (int i = 0; i < nlocal; i++) maxmol = MAX(maxmol,molecule[i]);
|
for (int i = 0; i < nlocal; i++) maxmol = MAX(maxmol,molecule[i]);
|
||||||
tagint maxmol_all;
|
tagint maxmol_all;
|
||||||
MPI_Allreduce(&maxmol,&maxmol_all,1,MPI_LMP_TAGINT,MPI_MAX,world);
|
MPI_Allreduce(&maxmol,&maxmol_all,1,MPI_LMP_TAGINT,MPI_MAX,world);
|
||||||
double comx[maxmol_all];
|
double *comx = new double[maxmol_all];
|
||||||
double comy[maxmol_all];
|
double *comy = new double[maxmol_all];
|
||||||
double comz[maxmol_all];
|
double *comz = new double[maxmol_all];
|
||||||
for (int imolecule = 0; imolecule < maxmol_all; imolecule++) {
|
for (int imolecule = 0; imolecule < maxmol_all; imolecule++) {
|
||||||
for (int i = 0; i < nlocal; i++) {
|
for (int i = 0; i < nlocal; i++) {
|
||||||
if (molecule[i] == imolecule) {
|
if (molecule[i] == imolecule) {
|
||||||
@ -2458,7 +2460,9 @@ void FixGCMC::update_gas_atoms_list()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
delete[] comx;
|
||||||
|
delete[] comy;
|
||||||
|
delete[] comz;
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < nlocal; i++) {
|
for (int i = 0; i < nlocal; i++) {
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
|
|||||||
@ -21,6 +21,7 @@
|
|||||||
#include "fix_mscg.h"
|
#include "fix_mscg.h"
|
||||||
#include "mscg.h"
|
#include "mscg.h"
|
||||||
#include "atom.h"
|
#include "atom.h"
|
||||||
|
#include "comm.h"
|
||||||
#include "domain.h"
|
#include "domain.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "force.h"
|
#include "force.h"
|
||||||
@ -284,11 +285,9 @@ void FixMSCG::end_of_step()
|
|||||||
if (domain->triclinic == 1)
|
if (domain->triclinic == 1)
|
||||||
error->all(FLERR,"Fix mscg does not yet support triclinic geometries");
|
error->all(FLERR,"Fix mscg does not yet support triclinic geometries");
|
||||||
|
|
||||||
int natoms = atom->natoms;
|
|
||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
tagint *tag = atom->tag;
|
tagint *tag = atom->tag;
|
||||||
double **x = atom->x;
|
double **x = atom->x;
|
||||||
double *prd_half = domain->prd_half;
|
|
||||||
int i,ii,j;
|
int i,ii,j;
|
||||||
|
|
||||||
// trajectory information
|
// trajectory information
|
||||||
|
|||||||
@ -57,10 +57,10 @@ PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \
|
|||||||
molecule mpiio mscg opt peri poems \
|
molecule mpiio mscg opt peri poems \
|
||||||
python qeq reax replica rigid shock snap srd voronoi
|
python qeq reax replica rigid shock snap srd voronoi
|
||||||
|
|
||||||
PACKUSER = user-atc user-awpmd user-cgdna user-cgsdk user-colvars \
|
PACKUSER = user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars \
|
||||||
user-diffraction user-dpd user-drude user-eff user-fep user-h5md \
|
user-diffraction user-dpd user-drude user-eff user-fep user-h5md \
|
||||||
user-intel user-lb user-manifold user-meamc user-meso \
|
user-intel user-lb user-manifold user-meamc user-meso \
|
||||||
user-mgpt user-misc user-molfile \
|
user-mgpt user-misc user-mofff user-molfile \
|
||||||
user-netcdf user-omp user-phonon user-qmmm user-qtb \
|
user-netcdf user-omp user-phonon user-qmmm user-qtb \
|
||||||
user-quip user-reaxc user-smd user-smtbq user-sph user-tally \
|
user-quip user-reaxc user-smd user-smtbq user-sph user-tally \
|
||||||
user-uef user-vtk
|
user-uef user-vtk
|
||||||
@ -267,7 +267,7 @@ package:
|
|||||||
@echo 'make yes-all install all pgks in src dir'
|
@echo 'make yes-all install all pgks in src dir'
|
||||||
@echo 'make no-all remove all pkgs from src dir'
|
@echo 'make no-all remove all pkgs from src dir'
|
||||||
@echo 'make yes-standard (yes-std) install all standard pkgs'
|
@echo 'make yes-standard (yes-std) install all standard pkgs'
|
||||||
@echo 'make no-standard (no-srd) remove all standard pkgs'
|
@echo 'make no-standard (no-std) remove all standard pkgs'
|
||||||
@echo 'make yes-user install all user pkgs'
|
@echo 'make yes-user install all user pkgs'
|
||||||
@echo 'make no-user remove all user pkgs'
|
@echo 'make no-user remove all user pkgs'
|
||||||
@echo 'make yes-lib install all pkgs with libs (included or ext)'
|
@echo 'make yes-lib install all pkgs with libs (included or ext)'
|
||||||
|
|||||||
@ -47,7 +47,7 @@ FixPythonMove::FixPythonMove(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
PyGILState_STATE gstate = PyGILState_Ensure();
|
PyGILState_STATE gstate = PyGILState_Ensure();
|
||||||
|
|
||||||
// add current directory to PYTHONPATH
|
// add current directory to PYTHONPATH
|
||||||
PyObject * py_path = PySys_GetObject("path");
|
PyObject * py_path = PySys_GetObject((char *)"path");
|
||||||
PyList_Append(py_path, PY_STRING_FROM_STRING("."));
|
PyList_Append(py_path, PY_STRING_FROM_STRING("."));
|
||||||
|
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ void FixPythonMove::init()
|
|||||||
{
|
{
|
||||||
PyGILState_STATE gstate = PyGILState_Ensure();
|
PyGILState_STATE gstate = PyGILState_Ensure();
|
||||||
PyObject *py_move_obj = (PyObject *) py_move;
|
PyObject *py_move_obj = (PyObject *) py_move;
|
||||||
PyObject *py_init = PyObject_GetAttrString(py_move_obj,"init");
|
PyObject *py_init = PyObject_GetAttrString(py_move_obj,(char *)"init");
|
||||||
if (!py_init) {
|
if (!py_init) {
|
||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
|
|||||||
@ -303,7 +303,7 @@ void NEB::run()
|
|||||||
update->minimize->setup();
|
update->minimize->setup();
|
||||||
|
|
||||||
if (me_universe == 0) {
|
if (me_universe == 0) {
|
||||||
if (uscreen)
|
if (uscreen) {
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
fprintf(uscreen,"Step MaxReplicaForce MaxAtomForce "
|
fprintf(uscreen,"Step MaxReplicaForce MaxAtomForce "
|
||||||
"GradV0 GradV1 GradVc EBF EBR RDT "
|
"GradV0 GradV1 GradVc EBF EBR RDT "
|
||||||
@ -317,7 +317,8 @@ void NEB::run()
|
|||||||
"EBF EBR RDT "
|
"EBF EBR RDT "
|
||||||
"RD1 PE1 RD2 PE2 ... RDN PEN\n");
|
"RD1 PE1 RD2 PE2 ... RDN PEN\n");
|
||||||
}
|
}
|
||||||
if (ulogfile)
|
}
|
||||||
|
if (ulogfile) {
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
fprintf(ulogfile,"Step MaxReplicaForce MaxAtomForce "
|
fprintf(ulogfile,"Step MaxReplicaForce MaxAtomForce "
|
||||||
"GradV0 GradV1 GradVc EBF EBR RDT "
|
"GradV0 GradV1 GradVc EBF EBR RDT "
|
||||||
@ -332,6 +333,7 @@ void NEB::run()
|
|||||||
"RD1 PE1 RD2 PE2 ... RDN PEN\n");
|
"RD1 PE1 RD2 PE2 ... RDN PEN\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
print_status();
|
print_status();
|
||||||
|
|
||||||
// perform climbing NEB for n2steps or until replicas converge
|
// perform climbing NEB for n2steps or until replicas converge
|
||||||
@ -588,7 +590,7 @@ void NEB::print_status()
|
|||||||
MPI_Allgather(&fnorminf,1,MPI_DOUBLE,&fmaxatomInRepl[0],1,MPI_DOUBLE,roots);
|
MPI_Allgather(&fnorminf,1,MPI_DOUBLE,&fmaxatomInRepl[0],1,MPI_DOUBLE,roots);
|
||||||
}
|
}
|
||||||
|
|
||||||
double one[numall];
|
double one[7];
|
||||||
one[0] = fneb->veng;
|
one[0] = fneb->veng;
|
||||||
one[1] = fneb->plen;
|
one[1] = fneb->plen;
|
||||||
one[2] = fneb->nlen;
|
one[2] = fneb->nlen;
|
||||||
|
|||||||
@ -2342,7 +2342,7 @@ void FixRigid::write_restart_file(char *file)
|
|||||||
sprintf(outfile,"%s.rigid",file);
|
sprintf(outfile,"%s.rigid",file);
|
||||||
FILE *fp = fopen(outfile,"w");
|
FILE *fp = fopen(outfile,"w");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
char str[128];
|
char str[192];
|
||||||
sprintf(str,"Cannot open fix rigid restart file %s",outfile);
|
sprintf(str,"Cannot open fix rigid restart file %s",outfile);
|
||||||
error->one(FLERR,str);
|
error->one(FLERR,str);
|
||||||
}
|
}
|
||||||
|
|||||||
19
src/USER-BOCS/README
Normal file
19
src/USER-BOCS/README
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
This user package implements the pressure correction to the barostat as
|
||||||
|
outlined in:
|
||||||
|
|
||||||
|
N. J. H. Dunn and W. G. Noid, "Bottom-up coarse-grained models that
|
||||||
|
accurately describe the structure, pressure, and compressibility of
|
||||||
|
molecular liquids," J. Chem. Phys. 143, 243148 (2015).
|
||||||
|
|
||||||
|
doi: 10.1063/1.4937383
|
||||||
|
|
||||||
|
The USER-BOCS user package for LAMMPS is part of the BOCS software package:
|
||||||
|
https://github.com/noid-group/BOCS
|
||||||
|
|
||||||
|
See the following reference for information about the entire package:
|
||||||
|
|
||||||
|
Dunn, NJH; Lebold, KM; DeLyser, MR; Rudzinski, JF; Noid, WG.
|
||||||
|
"BOCS: Bottom-Up Open-Source Coarse-Graining Software."
|
||||||
|
J. Phys. Chem. B. 122, 13, 3363-3377 (2018).
|
||||||
|
|
||||||
|
Example inputs are in the examples/USER/bocs folder.
|
||||||
444
src/USER-BOCS/compute_pressure_bocs.cpp
Normal file
444
src/USER-BOCS/compute_pressure_bocs.cpp
Normal file
@ -0,0 +1,444 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
http://lammps.sandia.gov, Sandia National Laboratories
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov
|
||||||
|
|
||||||
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
certain rights in this software. This software is distributed under
|
||||||
|
the GNU General Public License.
|
||||||
|
|
||||||
|
See the README file in the top-level LAMMPS directory.
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
USER-BOCS written by: Nicholas J. H. Dunn and Michael R. DeLyser
|
||||||
|
from The Pennsylvania State University
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#include <mpi.h>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include "compute_pressure_bocs.h"
|
||||||
|
#include "atom.h"
|
||||||
|
#include "update.h"
|
||||||
|
#include "domain.h"
|
||||||
|
#include "modify.h"
|
||||||
|
#include "fix.h"
|
||||||
|
#include "force.h"
|
||||||
|
#include "pair.h"
|
||||||
|
#include "bond.h"
|
||||||
|
#include "angle.h"
|
||||||
|
#include "dihedral.h"
|
||||||
|
#include "improper.h"
|
||||||
|
#include "kspace.h"
|
||||||
|
#include "error.h"
|
||||||
|
|
||||||
|
|
||||||
|
using namespace LAMMPS_NS;
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) :
|
||||||
|
Compute(lmp, narg, arg),
|
||||||
|
vptr(NULL), id_temp(NULL)
|
||||||
|
{
|
||||||
|
if (narg < 4) error->all(FLERR,"Illegal compute pressure/bocs command");
|
||||||
|
if (igroup) error->all(FLERR,"Compute pressure/bocs must use group all");
|
||||||
|
|
||||||
|
scalar_flag = vector_flag = 1;
|
||||||
|
size_vector = 6;
|
||||||
|
extscalar = 0;
|
||||||
|
extvector = 0;
|
||||||
|
pressflag = 1;
|
||||||
|
timeflag = 1;
|
||||||
|
|
||||||
|
p_match_flag = 0;
|
||||||
|
phi_coeff = NULL;
|
||||||
|
|
||||||
|
// store temperature ID used by pressure computation
|
||||||
|
// insure it is valid for temperature computation
|
||||||
|
|
||||||
|
if (strcmp(arg[3],"NULL") == 0) id_temp = NULL;
|
||||||
|
else {
|
||||||
|
int n = strlen(arg[3]) + 1;
|
||||||
|
id_temp = new char[n];
|
||||||
|
strcpy(id_temp,arg[3]);
|
||||||
|
|
||||||
|
int icompute = modify->find_compute(id_temp);
|
||||||
|
if (icompute < 0)
|
||||||
|
error->all(FLERR,"Could not find compute pressure/bocs temperature ID");
|
||||||
|
if (modify->compute[icompute]->tempflag == 0)
|
||||||
|
error->all(FLERR,"Compute pressure/bocs temperature ID does not "
|
||||||
|
"compute temperature");
|
||||||
|
}
|
||||||
|
|
||||||
|
// process optional args
|
||||||
|
|
||||||
|
if (narg == 4) {
|
||||||
|
keflag = 1;
|
||||||
|
pairflag = 1;
|
||||||
|
bondflag = angleflag = dihedralflag = improperflag = 1;
|
||||||
|
kspaceflag = fixflag = 1;
|
||||||
|
} else {
|
||||||
|
keflag = 0;
|
||||||
|
pairflag = 0;
|
||||||
|
bondflag = angleflag = dihedralflag = improperflag = 0;
|
||||||
|
kspaceflag = fixflag = 0;
|
||||||
|
int iarg = 4;
|
||||||
|
while (iarg < narg) {
|
||||||
|
if (strcmp(arg[iarg],"ke") == 0) keflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1;
|
||||||
|
else if (strcmp(arg[iarg],"virial") == 0) {
|
||||||
|
pairflag = 1;
|
||||||
|
bondflag = angleflag = dihedralflag = improperflag = 1;
|
||||||
|
kspaceflag = fixflag = 1;
|
||||||
|
} else error->all(FLERR,"Illegal compute pressure/bocs command");
|
||||||
|
iarg++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// error check
|
||||||
|
|
||||||
|
if (keflag && id_temp == NULL)
|
||||||
|
error->all(FLERR,"Compute pressure/bocs requires temperature ID "
|
||||||
|
"to include kinetic energy");
|
||||||
|
|
||||||
|
vector = new double[6];
|
||||||
|
nvirial = 0;
|
||||||
|
vptr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ComputePressureBocs::~ComputePressureBocs()
|
||||||
|
{
|
||||||
|
delete [] id_temp;
|
||||||
|
delete [] vector;
|
||||||
|
delete [] vptr;
|
||||||
|
if (phi_coeff) free(phi_coeff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputePressureBocs::init()
|
||||||
|
{
|
||||||
|
boltz = force->boltz;
|
||||||
|
nktv2p = force->nktv2p;
|
||||||
|
dimension = domain->dimension;
|
||||||
|
|
||||||
|
// set temperature compute, must be done in init()
|
||||||
|
// fixes could have changed or compute_modify could have changed it
|
||||||
|
|
||||||
|
if (keflag) {
|
||||||
|
int icompute = modify->find_compute(id_temp);
|
||||||
|
if (icompute < 0)
|
||||||
|
error->all(FLERR,"Could not find compute pressure/bocs temperature ID");
|
||||||
|
temperature = modify->compute[icompute];
|
||||||
|
}
|
||||||
|
|
||||||
|
// detect contributions to virial
|
||||||
|
// vptr points to all virial[6] contributions
|
||||||
|
|
||||||
|
delete [] vptr;
|
||||||
|
nvirial = 0;
|
||||||
|
vptr = NULL;
|
||||||
|
|
||||||
|
if (pairflag && force->pair) nvirial++;
|
||||||
|
if (bondflag && atom->molecular && force->bond) nvirial++;
|
||||||
|
if (angleflag && atom->molecular && force->angle) nvirial++;
|
||||||
|
if (dihedralflag && atom->molecular && force->dihedral) nvirial++;
|
||||||
|
if (improperflag && atom->molecular && force->improper) nvirial++;
|
||||||
|
if (fixflag)
|
||||||
|
for (int i = 0; i < modify->nfix; i++)
|
||||||
|
if (modify->fix[i]->virial_flag) nvirial++;
|
||||||
|
|
||||||
|
if (nvirial) {
|
||||||
|
vptr = new double*[nvirial];
|
||||||
|
nvirial = 0;
|
||||||
|
if (pairflag && force->pair) vptr[nvirial++] = force->pair->virial;
|
||||||
|
if (bondflag && force->bond) vptr[nvirial++] = force->bond->virial;
|
||||||
|
if (angleflag && force->angle) vptr[nvirial++] = force->angle->virial;
|
||||||
|
if (dihedralflag && force->dihedral)
|
||||||
|
vptr[nvirial++] = force->dihedral->virial;
|
||||||
|
if (improperflag && force->improper)
|
||||||
|
vptr[nvirial++] = force->improper->virial;
|
||||||
|
if (fixflag)
|
||||||
|
for (int i = 0; i < modify->nfix; i++)
|
||||||
|
if (modify->fix[i]->virial_flag)
|
||||||
|
vptr[nvirial++] = modify->fix[i]->virial;
|
||||||
|
}
|
||||||
|
|
||||||
|
// flag Kspace contribution separately, since not summed across procs
|
||||||
|
|
||||||
|
if (kspaceflag && force->kspace) kspace_virial = force->kspace->virial;
|
||||||
|
else kspace_virial = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Extra functions added for BOCS */
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Compute the pressure correction for the analytical basis set
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
double ComputePressureBocs::get_cg_p_corr(int N_basis, double *phi_coeff,
|
||||||
|
int N_mol, double vavg, double vCG)
|
||||||
|
{
|
||||||
|
double correction = 0.0;
|
||||||
|
for (int i = 1; i <= N_basis; ++i)
|
||||||
|
{
|
||||||
|
correction -= phi_coeff[i-1] * ( N_mol * i / vavg ) *
|
||||||
|
pow( ( 1 / vavg ) * ( vCG - vavg ),i-1);
|
||||||
|
}
|
||||||
|
return correction;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Find the relevant index position if using a spline basis set
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
double ComputePressureBocs::find_index(double * grid, double value)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
double spacing = fabs(grid[1]-grid[0]);
|
||||||
|
int gridsize = spline_length;
|
||||||
|
for (i = 0; i < (gridsize-1); ++i)
|
||||||
|
{
|
||||||
|
if (value >= grid[i] && value <= grid[i+1]) { return i; }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value >= grid[i] && value <= (grid[i] + spacing)) { return i; }
|
||||||
|
|
||||||
|
for (int i = 0; i < gridsize; ++i)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "grid %d: %f\n",i,grid[i]);
|
||||||
|
}
|
||||||
|
char * errmsg = (char *) calloc(100,sizeof(char));
|
||||||
|
sprintf(errmsg,"Value %f does not fall within spline grid.\n",value);
|
||||||
|
error->all(FLERR,errmsg);
|
||||||
|
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Compute the pressure correction for a spline basis set
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
double ComputePressureBocs::get_cg_p_corr(double ** grid, int basis_type,
|
||||||
|
double vCG)
|
||||||
|
{
|
||||||
|
int i = find_index(grid[0],vCG);
|
||||||
|
double correction, deltax = vCG - grid[0][i];
|
||||||
|
|
||||||
|
if (basis_type == 1)
|
||||||
|
{
|
||||||
|
correction = grid[1][i] + (deltax) *
|
||||||
|
( grid[1][i+1] - grid[1][i] ) / ( grid[0][i+1] - grid[0][i] );
|
||||||
|
}
|
||||||
|
else if (basis_type == 2)
|
||||||
|
{
|
||||||
|
correction = 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");
|
||||||
|
}
|
||||||
|
return correction;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
send cg info from fix_bocs to compute_pressure_bocs for the analytical
|
||||||
|
basis set
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
void ComputePressureBocs::send_cg_info(int basis_type, int sent_N_basis,
|
||||||
|
double *sent_phi_coeff, int sent_N_mol, double sent_vavg)
|
||||||
|
{
|
||||||
|
if (basis_type == 0) { p_basis_type = 0; }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error->all(FLERR,"Incorrect basis type passed to ComputePressureBocs\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
p_match_flag = 1;
|
||||||
|
|
||||||
|
N_basis = sent_N_basis;
|
||||||
|
if (phi_coeff) free(phi_coeff);
|
||||||
|
phi_coeff = ((double *) calloc(N_basis, sizeof(double)) );
|
||||||
|
for (int i=0; i<N_basis; i++) { phi_coeff[i] = sent_phi_coeff[i]; }
|
||||||
|
|
||||||
|
N_mol = sent_N_mol;
|
||||||
|
vavg = sent_vavg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
send cg info from fix_bocs to compute_pressure_bocs for a spline basis
|
||||||
|
set
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
void ComputePressureBocs::send_cg_info(int basis_type,
|
||||||
|
double ** in_splines, int gridsize)
|
||||||
|
{
|
||||||
|
if (basis_type == 1) { p_basis_type = 1; }
|
||||||
|
else if (basis_type == 2) { p_basis_type = 2; }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error->all(FLERR,"Incorrect basis type passed to ComputePressureBocs\n");
|
||||||
|
}
|
||||||
|
splines = in_splines;
|
||||||
|
spline_length = gridsize;
|
||||||
|
p_match_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* End of new functions for BOCS */
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
compute total pressure, averaged over Pxx, Pyy, Pzz
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
double ComputePressureBocs::compute_scalar()
|
||||||
|
{
|
||||||
|
invoked_scalar = update->ntimestep;
|
||||||
|
if (update->vflag_global != invoked_scalar)
|
||||||
|
error->all(FLERR,"Virial was not tallied on needed timestep");
|
||||||
|
|
||||||
|
// invoke temperature if it hasn't been already
|
||||||
|
|
||||||
|
double t;
|
||||||
|
double volume, correction = 0;
|
||||||
|
if (keflag) {
|
||||||
|
if (temperature->invoked_scalar != update->ntimestep)
|
||||||
|
t = temperature->compute_scalar();
|
||||||
|
else t = temperature->scalar;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dimension == 3) {
|
||||||
|
inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
|
||||||
|
volume = (domain->xprd * domain->yprd * domain->zprd);
|
||||||
|
|
||||||
|
/* MRD NJD if block */
|
||||||
|
if ( p_basis_type == 0 )
|
||||||
|
{
|
||||||
|
correction = get_cg_p_corr(N_basis,phi_coeff,N_mol,vavg,volume);
|
||||||
|
}
|
||||||
|
else if ( p_basis_type == 1 || p_basis_type == 2 )
|
||||||
|
{
|
||||||
|
correction = get_cg_p_corr(splines, p_basis_type, volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
virial_compute(3,3);
|
||||||
|
if (keflag)
|
||||||
|
scalar = (temperature->dof * boltz * t +
|
||||||
|
virial[0] + virial[1] + virial[2]) / 3.0 *
|
||||||
|
inv_volume * nktv2p + (correction);
|
||||||
|
else
|
||||||
|
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");
|
||||||
|
exit(1);
|
||||||
|
} // The rest of this can probably be deleted.
|
||||||
|
inv_volume = 1.0 / (domain->xprd * domain->yprd);
|
||||||
|
virial_compute(2,2);
|
||||||
|
if (keflag)
|
||||||
|
scalar = (temperature->dof * boltz * t +
|
||||||
|
virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
|
||||||
|
else
|
||||||
|
scalar = (virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
|
||||||
|
}
|
||||||
|
|
||||||
|
return scalar;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
compute pressure tensor
|
||||||
|
assume KE tensor has already been computed
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputePressureBocs::compute_vector()
|
||||||
|
{
|
||||||
|
invoked_vector = update->ntimestep;
|
||||||
|
if (update->vflag_global != invoked_vector)
|
||||||
|
error->all(FLERR,"Virial was not tallied on needed timestep");
|
||||||
|
|
||||||
|
if (force->kspace && kspace_virial && force->kspace->scalar_pressure_flag)
|
||||||
|
error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' for "
|
||||||
|
"tensor components with kspace_style msm");
|
||||||
|
|
||||||
|
// invoke temperature if it hasn't been already
|
||||||
|
|
||||||
|
double *ke_tensor;
|
||||||
|
if (keflag) {
|
||||||
|
if (temperature->invoked_vector != update->ntimestep)
|
||||||
|
temperature->compute_vector();
|
||||||
|
ke_tensor = temperature->vector;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dimension == 3) {
|
||||||
|
inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
|
||||||
|
virial_compute(6,3);
|
||||||
|
if (keflag) {
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
vector[i] = (ke_tensor[i] + virial[i]) * inv_volume * nktv2p;
|
||||||
|
} else
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
vector[i] = virial[i] * inv_volume * nktv2p;
|
||||||
|
} else {
|
||||||
|
inv_volume = 1.0 / (domain->xprd * domain->yprd);
|
||||||
|
virial_compute(4,2);
|
||||||
|
if (keflag) {
|
||||||
|
vector[0] = (ke_tensor[0] + virial[0]) * inv_volume * nktv2p;
|
||||||
|
vector[1] = (ke_tensor[1] + virial[1]) * inv_volume * nktv2p;
|
||||||
|
vector[3] = (ke_tensor[3] + virial[3]) * inv_volume * nktv2p;
|
||||||
|
vector[2] = vector[4] = vector[5] = 0.0;
|
||||||
|
} else {
|
||||||
|
vector[0] = virial[0] * inv_volume * nktv2p;
|
||||||
|
vector[1] = virial[1] * inv_volume * nktv2p;
|
||||||
|
vector[3] = virial[3] * inv_volume * nktv2p;
|
||||||
|
vector[2] = vector[4] = vector[5] = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputePressureBocs::virial_compute(int n, int ndiag)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
double v[6],*vcomponent;
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++) v[i] = 0.0;
|
||||||
|
|
||||||
|
// sum contributions to virial from forces and fixes
|
||||||
|
|
||||||
|
for (j = 0; j < nvirial; j++) {
|
||||||
|
vcomponent = vptr[j];
|
||||||
|
for (i = 0; i < n; i++) v[i] += vcomponent[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// sum virial across procs
|
||||||
|
|
||||||
|
MPI_Allreduce(v,virial,n,MPI_DOUBLE,MPI_SUM,world);
|
||||||
|
|
||||||
|
// KSpace virial contribution is already summed across procs
|
||||||
|
|
||||||
|
if (kspace_virial)
|
||||||
|
for (i = 0; i < n; i++) virial[i] += kspace_virial[i];
|
||||||
|
|
||||||
|
// LJ long-range tail correction, only if pair contributions are included
|
||||||
|
|
||||||
|
if (force->pair && pairflag && force->pair->tail_flag)
|
||||||
|
for (i = 0; i < ndiag; i++) virial[i] += force->pair->ptail * inv_volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputePressureBocs::reset_extra_compute_fix(const char *id_new)
|
||||||
|
{
|
||||||
|
delete [] id_temp;
|
||||||
|
int n = strlen(id_new) + 1;
|
||||||
|
id_temp = new char[n];
|
||||||
|
strcpy(id_temp,id_new);
|
||||||
|
}
|
||||||
114
src/USER-BOCS/compute_pressure_bocs.h
Normal file
114
src/USER-BOCS/compute_pressure_bocs.h
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
/* -*- c++ -*- ----------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
http://lammps.sandia.gov, Sandia National Laboratories
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov
|
||||||
|
|
||||||
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
certain rights in this software. This software is distributed under
|
||||||
|
the GNU General Public License.
|
||||||
|
|
||||||
|
See the README file in the top-level LAMMPS directory.
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
USER-BOCS written by: Nicholas J. H. Dunn and Michael R. DeLyser
|
||||||
|
from The Pennsylvania State University
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifdef COMPUTE_CLASS
|
||||||
|
|
||||||
|
ComputeStyle(PRESSURE/BOCS,ComputePressureBocs)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef LMP_COMPUTE_PRESSURE_BOCS_H
|
||||||
|
#define LMP_COMPUTE_PRESSURE_BOCS_H
|
||||||
|
|
||||||
|
#include "compute.h"
|
||||||
|
|
||||||
|
namespace LAMMPS_NS {
|
||||||
|
// ComputePressure -> ComputePressureBocs MRD NJD
|
||||||
|
class ComputePressureBocs : public Compute {
|
||||||
|
public:
|
||||||
|
ComputePressureBocs(class LAMMPS *, int, char **);
|
||||||
|
virtual ~ComputePressureBocs();
|
||||||
|
virtual void init();
|
||||||
|
virtual double compute_scalar();
|
||||||
|
virtual void compute_vector();
|
||||||
|
void reset_extra_compute_fix(const char *);
|
||||||
|
|
||||||
|
double compute_cg_scalar();
|
||||||
|
double get_cg_p_corr(int, double *, int, double, double);
|
||||||
|
double get_cg_fluct(double, double);
|
||||||
|
void send_cg_info(int, int, double*, int, double);
|
||||||
|
void send_cg_info(int, double **, int);
|
||||||
|
double get_cg_p_corr(double **, int, double);
|
||||||
|
double find_index(double* , double);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
double boltz,nktv2p,inv_volume;
|
||||||
|
int nvirial,dimension;
|
||||||
|
double **vptr;
|
||||||
|
double *kspace_virial;
|
||||||
|
Compute *temperature;
|
||||||
|
char *id_temp;
|
||||||
|
double virial[6];
|
||||||
|
int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag;
|
||||||
|
int fixflag,kspaceflag;
|
||||||
|
|
||||||
|
// NJD MRD
|
||||||
|
int p_basis_type;
|
||||||
|
int p_match_flag;
|
||||||
|
double vavg;
|
||||||
|
int N_mol;
|
||||||
|
int N_basis;
|
||||||
|
double *phi_coeff;
|
||||||
|
double ** splines;
|
||||||
|
int spline_length;
|
||||||
|
|
||||||
|
void virial_compute(int, int);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ERROR/WARNING messages:
|
||||||
|
|
||||||
|
E: Illegal ... command
|
||||||
|
|
||||||
|
Self-explanatory. Check the input script syntax and compare to the
|
||||||
|
documentation for the command. You can use -echo screen as a
|
||||||
|
command-line option when running LAMMPS to see the offending line.
|
||||||
|
|
||||||
|
E: Compute pressure must use group all
|
||||||
|
|
||||||
|
Virial contributions computed by potentials (pair, bond, etc) are
|
||||||
|
computed on all atoms.
|
||||||
|
|
||||||
|
E: Could not find compute pressure temperature ID
|
||||||
|
|
||||||
|
The compute ID for calculating temperature does not exist.
|
||||||
|
|
||||||
|
E: Compute pressure temperature ID does not compute temperature
|
||||||
|
|
||||||
|
The compute ID assigned to a pressure computation must compute
|
||||||
|
temperature.
|
||||||
|
|
||||||
|
E: Compute pressure requires temperature ID to include kinetic energy
|
||||||
|
|
||||||
|
The keflag cannot be used unless a temperature compute is provided.
|
||||||
|
|
||||||
|
E: Virial was not tallied on needed timestep
|
||||||
|
|
||||||
|
You are using a thermo keyword that requires potentials to
|
||||||
|
have tallied the virial, but they didn't on this timestep. See the
|
||||||
|
variable doc page for ideas on how to make this work.
|
||||||
|
|
||||||
|
E: Must use 'kspace_modify pressure/scalar no' for tensor components with kspace_style msm
|
||||||
|
|
||||||
|
Otherwise MSM will compute only a scalar pressure. See the kspace_modify
|
||||||
|
command for details on this setting.
|
||||||
|
|
||||||
|
*/
|
||||||
2431
src/USER-BOCS/fix_bocs.cpp
Normal file
2431
src/USER-BOCS/fix_bocs.cpp
Normal file
File diff suppressed because it is too large
Load Diff
302
src/USER-BOCS/fix_bocs.h
Normal file
302
src/USER-BOCS/fix_bocs.h
Normal file
@ -0,0 +1,302 @@
|
|||||||
|
/* -*- c++ -*- ----------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
http://lammps.sandia.gov, Sandia National Laboratories
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov
|
||||||
|
|
||||||
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
certain rights in this software. This software is distributed under
|
||||||
|
the GNU General Public License.
|
||||||
|
|
||||||
|
See the README file in the top-level LAMMPS directory.
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
USER-BOCS written by: Nicholas J. H. Dunn and Michael R. DeLyser
|
||||||
|
from The Pennsylvania State University
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FIX_CLASS
|
||||||
|
|
||||||
|
FixStyle(bocs,FixBocs)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#ifndef LMP_FIX_BOCS_H
|
||||||
|
#define LMP_FIX_BOCS_H
|
||||||
|
|
||||||
|
#include "fix.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace LAMMPS_NS {
|
||||||
|
|
||||||
|
class FixBocs : public Fix {
|
||||||
|
public:
|
||||||
|
FixBocs(class LAMMPS *, int, char **); // MRD NJD
|
||||||
|
virtual ~FixBocs(); // MRD NJD
|
||||||
|
int setmask();
|
||||||
|
virtual void init();
|
||||||
|
virtual void setup(int);
|
||||||
|
virtual void initial_integrate(int);
|
||||||
|
virtual void final_integrate();
|
||||||
|
void initial_integrate_respa(int, int, int);
|
||||||
|
void final_integrate_respa(int, int);
|
||||||
|
virtual void pre_exchange();
|
||||||
|
double compute_scalar();
|
||||||
|
virtual double compute_vector(int);
|
||||||
|
void write_restart(FILE *);
|
||||||
|
virtual int pack_restart_data(double *); // pack restart data
|
||||||
|
virtual void restart(char *);
|
||||||
|
int modify_param(int, char **);
|
||||||
|
void reset_target(double);
|
||||||
|
void reset_dt();
|
||||||
|
virtual void *extract(const char*,int &);
|
||||||
|
double memory_usage();
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int dimension,which;
|
||||||
|
double dtv,dtf,dthalf,dt4,dt8,dto;
|
||||||
|
double boltz,nktv2p,tdof;
|
||||||
|
double vol0; // reference volume
|
||||||
|
double t0; // reference temperature
|
||||||
|
// used for barostat mass
|
||||||
|
double t_start,t_stop;
|
||||||
|
double t_current,t_target,ke_target;
|
||||||
|
double t_freq;
|
||||||
|
|
||||||
|
int tstat_flag; // 1 if control T
|
||||||
|
int pstat_flag; // 1 if control P
|
||||||
|
|
||||||
|
int pstyle,pcouple,allremap;
|
||||||
|
int p_flag[6]; // 1 if control P on this dim, 0 if not
|
||||||
|
double p_start[6],p_stop[6];
|
||||||
|
double p_freq[6],p_target[6];
|
||||||
|
double omega[6],omega_dot[6];
|
||||||
|
double omega_mass[6];
|
||||||
|
double p_current[6];
|
||||||
|
double drag,tdrag_factor; // drag factor on particle thermostat
|
||||||
|
double pdrag_factor; // drag factor on barostat
|
||||||
|
int kspace_flag; // 1 if KSpace invoked, 0 if not
|
||||||
|
int nrigid; // number of rigid fixes
|
||||||
|
int dilate_group_bit; // mask for dilation group
|
||||||
|
int *rfix; // indices of rigid fixes
|
||||||
|
char *id_dilate; // group name to dilate
|
||||||
|
class Irregular *irregular; // for migrating atoms after box flips
|
||||||
|
|
||||||
|
// MRD NJD
|
||||||
|
int p_basis_type;
|
||||||
|
int p_match_flag;
|
||||||
|
double vavg;
|
||||||
|
int N_mol;
|
||||||
|
int N_p_match;
|
||||||
|
double *p_match_coeffs;
|
||||||
|
double ** splines;
|
||||||
|
int spline_length;
|
||||||
|
|
||||||
|
|
||||||
|
int nlevels_respa;
|
||||||
|
double *step_respa;
|
||||||
|
|
||||||
|
char *id_temp,*id_press;
|
||||||
|
class Compute *temperature,*pressure;
|
||||||
|
int tcomputeflag,pcomputeflag; // 1 = compute was created by fix
|
||||||
|
// 0 = created externally
|
||||||
|
|
||||||
|
double *eta,*eta_dot; // chain thermostat for particles
|
||||||
|
double *eta_dotdot;
|
||||||
|
double *eta_mass;
|
||||||
|
int mtchain; // length of chain
|
||||||
|
int mtchain_default_flag; // 1 = mtchain is default
|
||||||
|
|
||||||
|
double *etap; // chain thermostat for barostat
|
||||||
|
double *etap_dot;
|
||||||
|
double *etap_dotdot;
|
||||||
|
double *etap_mass;
|
||||||
|
int mpchain; // length of chain
|
||||||
|
|
||||||
|
int mtk_flag; // 0 if using Hoover barostat
|
||||||
|
int pdim; // number of barostatted dims
|
||||||
|
double p_freq_max; // maximum barostat frequency
|
||||||
|
|
||||||
|
double p_hydro; // hydrostatic target pressure
|
||||||
|
|
||||||
|
int nc_tchain,nc_pchain;
|
||||||
|
double factor_eta;
|
||||||
|
double sigma[6]; // scaled target stress
|
||||||
|
double fdev[6]; // deviatoric force on barostat
|
||||||
|
int deviatoric_flag; // 0 if target stress tensor is hydrostatic
|
||||||
|
double h0_inv[6]; // h_inv of reference (zero strain) box
|
||||||
|
int nreset_h0; // interval for resetting h0
|
||||||
|
|
||||||
|
double mtk_term1,mtk_term2; // Martyna-Tobias-Klein corrections
|
||||||
|
|
||||||
|
int eta_mass_flag; // 1 if eta_mass updated, 0 if not.
|
||||||
|
int omega_mass_flag; // 1 if omega_mass updated, 0 if not.
|
||||||
|
int etap_mass_flag; // 1 if etap_mass updated, 0 if not.
|
||||||
|
int dipole_flag; // 1 if dipole is updated, 0 if not.
|
||||||
|
int dlm_flag; // 1 if using the DLM rotational integrator, 0 if not
|
||||||
|
|
||||||
|
int scaleyz; // 1 if yz scaled with lz
|
||||||
|
int scalexz; // 1 if xz scaled with lz
|
||||||
|
int scalexy; // 1 if xy scaled with ly
|
||||||
|
int flipflag; // 1 if box flips are invoked as needed
|
||||||
|
|
||||||
|
int pre_exchange_flag; // set if pre_exchange needed for box flips
|
||||||
|
|
||||||
|
double fixedpoint[3]; // location of dilation fixed-point
|
||||||
|
|
||||||
|
void couple();
|
||||||
|
virtual void remap();
|
||||||
|
void nhc_temp_integrate();
|
||||||
|
void nhc_press_integrate();
|
||||||
|
|
||||||
|
int read_F_table(char *, int);
|
||||||
|
void build_cubic_splines(double **);
|
||||||
|
|
||||||
|
virtual void nve_x(); // may be overwritten by child classes
|
||||||
|
virtual void nve_v();
|
||||||
|
virtual void nh_v_press();
|
||||||
|
virtual void nh_v_temp();
|
||||||
|
virtual void compute_temp_target();
|
||||||
|
virtual int size_restart_global();
|
||||||
|
|
||||||
|
void compute_sigma();
|
||||||
|
void compute_deviatoric();
|
||||||
|
double compute_strain_energy();
|
||||||
|
void compute_press_target();
|
||||||
|
void nh_omega_dot();
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ERROR/WARNING messages:
|
||||||
|
|
||||||
|
E: Illegal ... command
|
||||||
|
|
||||||
|
Self-explanatory. Check the input script syntax and compare to the
|
||||||
|
documentation for the command. You can use -echo screen as a
|
||||||
|
command-line option when running LAMMPS to see the offending line.
|
||||||
|
|
||||||
|
E: Target temperature for fix bocs cannot be 0.0
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Invalid fix bocs command for a 2d simulation
|
||||||
|
|
||||||
|
Cannot control z dimension in a 2d model.
|
||||||
|
|
||||||
|
E: Fix bocs dilate group ID does not exist
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Invalid fix bocs command pressure settings
|
||||||
|
|
||||||
|
If multiple dimensions are coupled, those dimensions must be
|
||||||
|
specified.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs on a non-periodic dimension
|
||||||
|
|
||||||
|
When specifying a diagonal pressure component, the dimension must be
|
||||||
|
periodic.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs on a 2nd non-periodic dimension
|
||||||
|
|
||||||
|
When specifying an off-diagonal pressure component, the 2nd of the two
|
||||||
|
dimensions must be periodic. E.g. if the xy component is specified,
|
||||||
|
then the y dimension must be periodic.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs with yz scaling when z is non-periodic dimension
|
||||||
|
|
||||||
|
The 2nd dimension in the barostatted tilt factor must be periodic.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs with xz scaling when z is non-periodic dimension
|
||||||
|
|
||||||
|
The 2nd dimension in the barostatted tilt factor must be periodic.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs with xy scaling when y is non-periodic dimension
|
||||||
|
|
||||||
|
The 2nd dimension in the barostatted tilt factor must be periodic.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs with both yz dynamics and yz scaling
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs with both xz dynamics and xz scaling
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Cannot use fix bocs with both xy dynamics and xy scaling
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Can not specify Pxy/Pxz/Pyz in fix bocs with non-triclinic box
|
||||||
|
|
||||||
|
Only triclinic boxes can be used with off-diagonal pressure components.
|
||||||
|
See the region prism command for details.
|
||||||
|
|
||||||
|
E: Invalid fix bocs pressure settings
|
||||||
|
|
||||||
|
Settings for coupled dimensions must be the same.
|
||||||
|
|
||||||
|
E: Using update dipole flag requires atom style sphere
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Using update dipole flag requires atom attribute mu
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: The dlm flag must be used with update dipole
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Fix bocs damping parameters must be > 0.0
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Cannot use fix npt and fix deform on same component of stress tensor
|
||||||
|
|
||||||
|
This would be changing the same box dimension twice.
|
||||||
|
|
||||||
|
E: Temperature ID for fix bocs does not exist
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Pressure ID for fix bocs does not exist
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Fix bocs has tilted box too far in one step - periodic cell is too far from equilibrium state
|
||||||
|
|
||||||
|
Self-explanatory. The change in the box tilt is too extreme
|
||||||
|
on a short timescale.
|
||||||
|
|
||||||
|
E: Could not find fix_modify temperature ID
|
||||||
|
|
||||||
|
The compute ID for computing temperature does not exist.
|
||||||
|
|
||||||
|
E: Fix_modify temperature ID does not compute temperature
|
||||||
|
|
||||||
|
The compute ID assigned to the fix must compute temperature.
|
||||||
|
|
||||||
|
W: Temperature for fix modify is not for group all
|
||||||
|
|
||||||
|
The temperature compute is being used with a pressure calculation
|
||||||
|
which does operate on group all, so this may be inconsistent.
|
||||||
|
|
||||||
|
E: Pressure ID for fix modify does not exist
|
||||||
|
|
||||||
|
Self-explanatory.
|
||||||
|
|
||||||
|
E: Could not find fix_modify pressure ID
|
||||||
|
|
||||||
|
The compute ID for computing pressure does not exist.
|
||||||
|
|
||||||
|
E: Fix_modify pressure ID does not compute pressure
|
||||||
|
|
||||||
|
The compute ID assigned to the fix must compute pressure.
|
||||||
|
|
||||||
|
*/
|
||||||
@ -242,7 +242,7 @@ void BondOxdnaFene::coeff(int narg, char **arg)
|
|||||||
void BondOxdnaFene::init_style()
|
void BondOxdnaFene::init_style()
|
||||||
{
|
{
|
||||||
/* special bonds have to be lj = 0 1 1 and coul = 1 1 1 to exclude
|
/* special bonds have to be lj = 0 1 1 and coul = 1 1 1 to exclude
|
||||||
the ss excluded volume interaction between nearest neighbours */
|
the ss excluded volume interaction between nearest neighbors */
|
||||||
|
|
||||||
force->special_lj[1] = 0.0;
|
force->special_lj[1] = 0.0;
|
||||||
force->special_lj[2] = 1.0;
|
force->special_lj[2] = 1.0;
|
||||||
|
|||||||
@ -157,7 +157,7 @@ void PairOxdna2Coaxstk::compute(int eflag, int vflag)
|
|||||||
numneigh = list->numneigh;
|
numneigh = list->numneigh;
|
||||||
firstneigh = list->firstneigh;
|
firstneigh = list->firstneigh;
|
||||||
|
|
||||||
// loop over pair interaction neighbours of my atoms
|
// loop over pair interaction neighbors of my atoms
|
||||||
|
|
||||||
for (ia = 0; ia < anum; ia++) {
|
for (ia = 0; ia < anum; ia++) {
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ void PairOxdna2Coaxstk::compute(int eflag, int vflag)
|
|||||||
for (ib = 0; ib < bnum; ib++) {
|
for (ib = 0; ib < bnum; ib++) {
|
||||||
|
|
||||||
b = blist[ib];
|
b = blist[ib];
|
||||||
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours
|
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors
|
||||||
b &= NEIGHMASK;
|
b &= NEIGHMASK;
|
||||||
|
|
||||||
btype = type[b];
|
btype = type[b];
|
||||||
|
|||||||
@ -122,7 +122,7 @@ void PairOxdna2Dh::compute(int eflag, int vflag)
|
|||||||
numneigh = list->numneigh;
|
numneigh = list->numneigh;
|
||||||
firstneigh = list->firstneigh;
|
firstneigh = list->firstneigh;
|
||||||
|
|
||||||
// loop over pair interaction neighbours of my atoms
|
// loop over pair interaction neighbors of my atoms
|
||||||
|
|
||||||
for (ia = 0; ia < anum; ia++) {
|
for (ia = 0; ia < anum; ia++) {
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ void PairOxdna2Dh::compute(int eflag, int vflag)
|
|||||||
for (ib = 0; ib < bnum; ib++) {
|
for (ib = 0; ib < bnum; ib++) {
|
||||||
|
|
||||||
b = blist[ib];
|
b = blist[ib];
|
||||||
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours
|
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors
|
||||||
b &= NEIGHMASK;
|
b &= NEIGHMASK;
|
||||||
btype = type[b];
|
btype = type[b];
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ void PairOxdna2Dh::compute(int eflag, int vflag)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// knock out nearest-neighbour interaction between adjacent backbone sites
|
// knock out nearest-neighbor interaction between adjacent backbone sites
|
||||||
fpair *= factor_lj;
|
fpair *= factor_lj;
|
||||||
evdwl *= factor_lj;
|
evdwl *= factor_lj;
|
||||||
|
|
||||||
|
|||||||
@ -163,7 +163,7 @@ void PairOxdnaCoaxstk::compute(int eflag, int vflag)
|
|||||||
numneigh = list->numneigh;
|
numneigh = list->numneigh;
|
||||||
firstneigh = list->firstneigh;
|
firstneigh = list->firstneigh;
|
||||||
|
|
||||||
// loop over pair interaction neighbours of my atoms
|
// loop over pair interaction neighbors of my atoms
|
||||||
|
|
||||||
for (ia = 0; ia < anum; ia++) {
|
for (ia = 0; ia < anum; ia++) {
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ void PairOxdnaCoaxstk::compute(int eflag, int vflag)
|
|||||||
for (ib = 0; ib < bnum; ib++) {
|
for (ib = 0; ib < bnum; ib++) {
|
||||||
|
|
||||||
b = blist[ib];
|
b = blist[ib];
|
||||||
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours
|
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors
|
||||||
b &= NEIGHMASK;
|
b &= NEIGHMASK;
|
||||||
|
|
||||||
btype = type[b];
|
btype = type[b];
|
||||||
|
|||||||
@ -152,7 +152,7 @@ void PairOxdnaExcv::compute(int eflag, int vflag)
|
|||||||
numneigh = list->numneigh;
|
numneigh = list->numneigh;
|
||||||
firstneigh = list->firstneigh;
|
firstneigh = list->firstneigh;
|
||||||
|
|
||||||
// loop over pair interaction neighbours of my atoms
|
// loop over pair interaction neighbors of my atoms
|
||||||
|
|
||||||
for (ia = 0; ia < anum; ia++) {
|
for (ia = 0; ia < anum; ia++) {
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ void PairOxdnaExcv::compute(int eflag, int vflag)
|
|||||||
for (ib = 0; ib < bnum; ib++) {
|
for (ib = 0; ib < bnum; ib++) {
|
||||||
|
|
||||||
b = blist[ib];
|
b = blist[ib];
|
||||||
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours
|
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors
|
||||||
b &= NEIGHMASK;
|
b &= NEIGHMASK;
|
||||||
|
|
||||||
btype = type[b];
|
btype = type[b];
|
||||||
@ -222,7 +222,7 @@ void PairOxdnaExcv::compute(int eflag, int vflag)
|
|||||||
evdwl = F3(rsq_ss,cutsq_ss_ast[atype][btype],cut_ss_c[atype][btype],lj1_ss[atype][btype],
|
evdwl = F3(rsq_ss,cutsq_ss_ast[atype][btype],cut_ss_c[atype][btype],lj1_ss[atype][btype],
|
||||||
lj2_ss[atype][btype],epsilon_ss[atype][btype],b_ss[atype][btype],fpair);
|
lj2_ss[atype][btype],epsilon_ss[atype][btype],b_ss[atype][btype],fpair);
|
||||||
|
|
||||||
// knock out nearest-neighbour interaction between ss
|
// knock out nearest-neighbor interaction between ss
|
||||||
fpair *= factor_lj;
|
fpair *= factor_lj;
|
||||||
evdwl *= factor_lj;
|
evdwl *= factor_lj;
|
||||||
|
|
||||||
|
|||||||
@ -168,7 +168,7 @@ void PairOxdnaHbond::compute(int eflag, int vflag)
|
|||||||
numneigh = list->numneigh;
|
numneigh = list->numneigh;
|
||||||
firstneigh = list->firstneigh;
|
firstneigh = list->firstneigh;
|
||||||
|
|
||||||
// loop over pair interaction neighbours of my atoms
|
// loop over pair interaction neighbors of my atoms
|
||||||
|
|
||||||
for (ia = 0; ia < anum; ia++) {
|
for (ia = 0; ia < anum; ia++) {
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ void PairOxdnaHbond::compute(int eflag, int vflag)
|
|||||||
for (ib = 0; ib < bnum; ib++) {
|
for (ib = 0; ib < bnum; ib++) {
|
||||||
|
|
||||||
b = blist[ib];
|
b = blist[ib];
|
||||||
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours
|
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors
|
||||||
b &= NEIGHMASK;
|
b &= NEIGHMASK;
|
||||||
|
|
||||||
btype = type[b];
|
btype = type[b];
|
||||||
|
|||||||
@ -160,7 +160,7 @@ void PairOxdnaXstk::compute(int eflag, int vflag)
|
|||||||
numneigh = list->numneigh;
|
numneigh = list->numneigh;
|
||||||
firstneigh = list->firstneigh;
|
firstneigh = list->firstneigh;
|
||||||
|
|
||||||
// loop over pair interaction neighbours of my atoms
|
// loop over pair interaction neighbors of my atoms
|
||||||
|
|
||||||
for (ia = 0; ia < anum; ia++) {
|
for (ia = 0; ia < anum; ia++) {
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ void PairOxdnaXstk::compute(int eflag, int vflag)
|
|||||||
for (ib = 0; ib < bnum; ib++) {
|
for (ib = 0; ib < bnum; ib++) {
|
||||||
|
|
||||||
b = blist[ib];
|
b = blist[ib];
|
||||||
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours
|
factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors
|
||||||
b &= NEIGHMASK;
|
b &= NEIGHMASK;
|
||||||
|
|
||||||
btype = type[b];
|
btype = type[b];
|
||||||
|
|||||||
@ -260,6 +260,7 @@ void FixRX::post_constructor()
|
|||||||
error->all(FLERR,"fix rx cannot be combined with fix property/atom");
|
error->all(FLERR,"fix rx cannot be combined with fix property/atom");
|
||||||
|
|
||||||
char **tmpspecies = new char*[maxspecies];
|
char **tmpspecies = new char*[maxspecies];
|
||||||
|
int tmpmaxstrlen = 0;
|
||||||
for(int jj=0; jj < maxspecies; jj++)
|
for(int jj=0; jj < maxspecies; jj++)
|
||||||
tmpspecies[jj] = NULL;
|
tmpspecies[jj] = NULL;
|
||||||
|
|
||||||
@ -320,6 +321,7 @@ void FixRX::post_constructor()
|
|||||||
error->all(FLERR,"Exceeded the maximum number of species permitted in fix rx.");
|
error->all(FLERR,"Exceeded the maximum number of species permitted in fix rx.");
|
||||||
tmpspecies[nUniqueSpecies] = new char[strlen(word)+1];
|
tmpspecies[nUniqueSpecies] = new char[strlen(word)+1];
|
||||||
strcpy(tmpspecies[nUniqueSpecies],word);
|
strcpy(tmpspecies[nUniqueSpecies],word);
|
||||||
|
tmpmaxstrlen = MAX(tmpmaxstrlen,strlen(word));
|
||||||
nUniqueSpecies++;
|
nUniqueSpecies++;
|
||||||
}
|
}
|
||||||
word = strtok(NULL, " \t\n\r\f");
|
word = strtok(NULL, " \t\n\r\f");
|
||||||
@ -354,9 +356,9 @@ void FixRX::post_constructor()
|
|||||||
newarg2[0] = id_fix_species_old;
|
newarg2[0] = id_fix_species_old;
|
||||||
newarg2[1] = group->names[igroup];
|
newarg2[1] = group->names[igroup];
|
||||||
newarg2[2] = (char *) "property/atom";
|
newarg2[2] = (char *) "property/atom";
|
||||||
|
char *str1 = new char[tmpmaxstrlen+3];
|
||||||
|
char *str2 = new char[tmpmaxstrlen+6];
|
||||||
for(int ii=0; ii<nspecies; ii++){
|
for(int ii=0; ii<nspecies; ii++){
|
||||||
char str1[2+strlen(tmpspecies[ii])+1];
|
|
||||||
char str2[2+strlen(tmpspecies[ii])+4];
|
|
||||||
strcpy(str1,"d_");
|
strcpy(str1,"d_");
|
||||||
strcpy(str2,"d_");
|
strcpy(str2,"d_");
|
||||||
strncat(str1,tmpspecies[ii],strlen(tmpspecies[ii]));
|
strncat(str1,tmpspecies[ii],strlen(tmpspecies[ii]));
|
||||||
@ -367,6 +369,8 @@ void FixRX::post_constructor()
|
|||||||
strcpy(newarg[ii+3],str1);
|
strcpy(newarg[ii+3],str1);
|
||||||
strcpy(newarg2[ii+3],str2);
|
strcpy(newarg2[ii+3],str2);
|
||||||
}
|
}
|
||||||
|
delete[] str1;
|
||||||
|
delete[] str2;
|
||||||
newarg[nspecies+3] = (char *) "ghost";
|
newarg[nspecies+3] = (char *) "ghost";
|
||||||
newarg[nspecies+4] = (char *) "yes";
|
newarg[nspecies+4] = (char *) "yes";
|
||||||
newarg2[nspecies+3] = (char *) "ghost";
|
newarg2[nspecies+3] = (char *) "ghost";
|
||||||
|
|||||||
@ -75,7 +75,7 @@ void FixDrudeTransform<inverse>::setup(int) {
|
|||||||
|
|
||||||
if (!rmass) {
|
if (!rmass) {
|
||||||
if (!mcoeff) mcoeff = new double[ntypes+1];
|
if (!mcoeff) mcoeff = new double[ntypes+1];
|
||||||
double mcoeff_loc[ntypes+1];
|
double *mcoeff_loc = new double[ntypes+1];
|
||||||
for (int itype=0; itype<=ntypes; itype++) mcoeff_loc[itype] = 2.; // an impossible value: mcoeff is at most 1.
|
for (int itype=0; itype<=ntypes; itype++) mcoeff_loc[itype] = 2.; // an impossible value: mcoeff is at most 1.
|
||||||
for (int i=0; i<nlocal; i++) {
|
for (int i=0; i<nlocal; i++) {
|
||||||
if (drudetype[type[i]] == DRUDE_TYPE) {
|
if (drudetype[type[i]] == DRUDE_TYPE) {
|
||||||
@ -95,6 +95,7 @@ void FixDrudeTransform<inverse>::setup(int) {
|
|||||||
// mcoeff is 2 for non polarizable
|
// mcoeff is 2 for non polarizable
|
||||||
// 0 < mcoeff < 1 for drude
|
// 0 < mcoeff < 1 for drude
|
||||||
// mcoeff < 0 for core
|
// mcoeff < 0 for core
|
||||||
|
delete[] mcoeff_loc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,6 +314,6 @@ void FixDrudeTransform<inverse>::unpack_forward_comm(int n, int first, double *b
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
template class FixDrudeTransform<false>;
|
template class LAMMPS_NS::FixDrudeTransform<false>;
|
||||||
template class FixDrudeTransform<true>;
|
template class LAMMPS_NS::FixDrudeTransform<true>;
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,8 @@ for file in *_intel.h; do
|
|||||||
action $file $dep
|
action $file $dep
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# step 2: handle cases and tasks not handled in step 1.
|
||||||
|
|
||||||
action intel_preprocess.h
|
action intel_preprocess.h
|
||||||
action intel_buffers.h
|
action intel_buffers.h
|
||||||
action intel_buffers.cpp
|
action intel_buffers.cpp
|
||||||
@ -50,8 +52,6 @@ action intel_simd.h
|
|||||||
action intel_intrinsics.h pair_tersoff_intel.cpp
|
action intel_intrinsics.h pair_tersoff_intel.cpp
|
||||||
action intel_intrinsics_airebo.h pair_airebo_intel.cpp
|
action intel_intrinsics_airebo.h pair_airebo_intel.cpp
|
||||||
|
|
||||||
# step 2: handle cases and tasks not handled in step 1.
|
|
||||||
|
|
||||||
if (test $mode = 1) then
|
if (test $mode = 1) then
|
||||||
|
|
||||||
if (test -e ../Makefile.package) then
|
if (test -e ../Makefile.package) then
|
||||||
|
|||||||
@ -185,13 +185,6 @@ void DihedralOPLSIntel::eval(const int vflag,
|
|||||||
const flt_t vb3y = x[i4].y - x[i3].y;
|
const flt_t vb3y = x[i4].y - x[i3].y;
|
||||||
const flt_t vb3z = x[i4].z - x[i3].z;
|
const flt_t vb3z = x[i4].z - x[i3].z;
|
||||||
|
|
||||||
// 1-4
|
|
||||||
|
|
||||||
const flt_t delx = x[i1].x - x[i4].x;
|
|
||||||
const flt_t dely = x[i1].y - x[i4].y;
|
|
||||||
const flt_t delz = x[i1].z - x[i4].z;
|
|
||||||
|
|
||||||
|
|
||||||
// c0 calculation
|
// c0 calculation
|
||||||
// 1st and 2nd angle
|
// 1st and 2nd angle
|
||||||
|
|
||||||
|
|||||||
@ -102,8 +102,8 @@ void FixLbMomentum::end_of_step()
|
|||||||
double masslb,masslbloc;
|
double masslb,masslbloc;
|
||||||
double momentumlbloc[3],momentumlb[3];
|
double momentumlbloc[3],momentumlb[3];
|
||||||
double vcmtotal[3];
|
double vcmtotal[3];
|
||||||
int numvel = fix_lb_fluid->numvel;
|
const int numvel = fix_lb_fluid->numvel;
|
||||||
double etacov[numvel];
|
double etacov[19]; // = double etacov[numvel]; i.e. 15 or 19
|
||||||
double rho;
|
double rho;
|
||||||
|
|
||||||
if (linear) {
|
if (linear) {
|
||||||
|
|||||||
@ -255,5 +255,5 @@ static inline double fdiv_zero(const double n, const double d) {
|
|||||||
return n / d;
|
return n / d;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -59,7 +59,6 @@ static const char cite_pair_edpd[] =
|
|||||||
" volume = {51},\n"
|
" volume = {51},\n"
|
||||||
" pages = {11038--11040}\n"
|
" pages = {11038--11040}\n"
|
||||||
"}\n\n";
|
"}\n\n";
|
||||||
;
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|||||||
@ -280,7 +280,9 @@ void PairTDPD::coeff(int narg, char **arg)
|
|||||||
double power_one = force->numeric(FLERR,arg[4]);
|
double power_one = force->numeric(FLERR,arg[4]);
|
||||||
double cut_one = force->numeric(FLERR,arg[5]);
|
double cut_one = force->numeric(FLERR,arg[5]);
|
||||||
double cutcc_one = force->numeric(FLERR,arg[6]);
|
double cutcc_one = force->numeric(FLERR,arg[6]);
|
||||||
double kappa_one[cc_species],epsilon_one[cc_species],powercc_one[cc_species];
|
double *kappa_one = new double[cc_species];
|
||||||
|
double *epsilon_one = new double[cc_species];
|
||||||
|
double *powercc_one = new double[cc_species];
|
||||||
for(int k=0; k<cc_species; k++) {
|
for(int k=0; k<cc_species; k++) {
|
||||||
kappa_one[k] = force->numeric(FLERR,arg[7+3*k]);
|
kappa_one[k] = force->numeric(FLERR,arg[7+3*k]);
|
||||||
epsilon_one[k] = force->numeric(FLERR,arg[8+3*k]);
|
epsilon_one[k] = force->numeric(FLERR,arg[8+3*k]);
|
||||||
@ -304,6 +306,9 @@ void PairTDPD::coeff(int narg, char **arg)
|
|||||||
setflag[i][j] = 1;
|
setflag[i][j] = 1;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
delete[] kappa_one;
|
||||||
|
delete[] epsilon_one;
|
||||||
|
delete[] powercc_one;
|
||||||
|
|
||||||
if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
|
if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
Contributing author: G. Ziegenhain, gerolf@ziegenhain.com
|
Contributing author: G. Ziegenhain, gerolf@ziegenhain.com
|
||||||
Copyright (C) 2007
|
Copyright (C) 2007
|
||||||
|
Updated algorithm by: Brian Barnes, brian.c.barnes11.civ@mail.mil
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
@ -40,7 +41,8 @@ enum{UNKNOWN,BCC,FCC,HCP,ICO};
|
|||||||
ComputeAcklandAtom::ComputeAcklandAtom(LAMMPS *lmp, int narg, char **arg) :
|
ComputeAcklandAtom::ComputeAcklandAtom(LAMMPS *lmp, int narg, char **arg) :
|
||||||
Compute(lmp, narg, arg)
|
Compute(lmp, narg, arg)
|
||||||
{
|
{
|
||||||
if (narg != 3) error->all(FLERR,"Illegal compute ackland/atom command");
|
if ((narg < 3) || (narg > 5))
|
||||||
|
error->all(FLERR,"Illegal compute ackland/atom command");
|
||||||
|
|
||||||
peratom_flag = 1;
|
peratom_flag = 1;
|
||||||
size_peratom_cols = 0;
|
size_peratom_cols = 0;
|
||||||
@ -48,10 +50,26 @@ ComputeAcklandAtom::ComputeAcklandAtom(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
nmax = 0;
|
nmax = 0;
|
||||||
structure = NULL;
|
structure = NULL;
|
||||||
maxneigh = 0;
|
maxneigh = 0;
|
||||||
|
legacy = 0;
|
||||||
distsq = NULL;
|
distsq = NULL;
|
||||||
nearest = NULL;
|
nearest = NULL;
|
||||||
nearest_n0 = NULL;
|
nearest_n0 = NULL;
|
||||||
nearest_n1 = NULL;
|
nearest_n1 = NULL;
|
||||||
|
|
||||||
|
int iarg = 3;
|
||||||
|
while (narg > iarg) {
|
||||||
|
if (strcmp("legacy",arg[iarg]) == 0) {
|
||||||
|
++iarg;
|
||||||
|
if (iarg >= narg)
|
||||||
|
error->all(FLERR,"Invalid compute ackland/atom command");
|
||||||
|
if (strcmp("yes",arg[iarg]) == 0)
|
||||||
|
legacy = 1;
|
||||||
|
else if (strcmp("no",arg[iarg]) == 0)
|
||||||
|
legacy = 0;
|
||||||
|
else error->all(FLERR,"Invalid compute ackland/atom command");
|
||||||
|
}
|
||||||
|
++iarg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
@ -231,6 +249,53 @@ void ComputeAcklandAtom::compute_peratom()
|
|||||||
else chi[7]++;
|
else chi[7]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (legacy) {
|
||||||
|
|
||||||
|
// This is the original implementation by Gerolf Ziegenhain
|
||||||
|
// Deviations from the different lattice structures
|
||||||
|
|
||||||
|
double delta_bcc = 0.35*chi[4]/(double)(chi[5]+chi[6]-chi[4]);
|
||||||
|
double delta_cp = fabs(1.-(double)chi[6]/24.);
|
||||||
|
double delta_fcc = 0.61*(fabs((double)(chi[0]+chi[1]-6.))+
|
||||||
|
(double)chi[2])/6.0;
|
||||||
|
double delta_hcp = (fabs((double)chi[0]-3.)+
|
||||||
|
fabs((double)chi[0]+(double)chi[1]+
|
||||||
|
(double)chi[2]+(double)chi[3]-9.0))/12.0;
|
||||||
|
|
||||||
|
// Identification of the local structure according to the reference
|
||||||
|
|
||||||
|
if (chi[0] == 7) { delta_bcc = 0.; }
|
||||||
|
else if (chi[0] == 6) { delta_fcc = 0.; }
|
||||||
|
else if (chi[0] <= 3) { delta_hcp = 0.; }
|
||||||
|
|
||||||
|
if (chi[7] > 0.)
|
||||||
|
structure[i] = UNKNOWN;
|
||||||
|
else
|
||||||
|
if (chi[4] < 3.)
|
||||||
|
{
|
||||||
|
if (n1 > 13 || n1 < 11)
|
||||||
|
structure[i] = UNKNOWN;
|
||||||
|
else
|
||||||
|
structure[i] = ICO;
|
||||||
|
} else
|
||||||
|
if (delta_bcc <= delta_cp)
|
||||||
|
{
|
||||||
|
if (n1 < 11)
|
||||||
|
structure[i] = UNKNOWN;
|
||||||
|
else
|
||||||
|
structure[i] = BCC;
|
||||||
|
} else
|
||||||
|
if (n1 > 12 || n1 < 11)
|
||||||
|
structure[i] = UNKNOWN;
|
||||||
|
else
|
||||||
|
if (delta_fcc < delta_hcp)
|
||||||
|
structure[i] = FCC;
|
||||||
|
else
|
||||||
|
structure[i] = HCP;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// This is the updated implementation by Brian Barnes
|
||||||
|
|
||||||
if (chi[7] > 0 || n0 < 11) structure[i] = UNKNOWN;
|
if (chi[7] > 0 || n0 < 11) structure[i] = UNKNOWN;
|
||||||
else if (chi[0] == 7) structure[i] = BCC;
|
else if (chi[0] == 7) structure[i] = BCC;
|
||||||
@ -252,8 +317,11 @@ void ComputeAcklandAtom::compute_peratom()
|
|||||||
double delta_fcc = 0.61*(fabs((double)(chi[0]+chi[1]-6))
|
double delta_fcc = 0.61*(fabs((double)(chi[0]+chi[1]-6))
|
||||||
+(double)chi[2])/6.0;
|
+(double)chi[2])/6.0;
|
||||||
|
|
||||||
double delta_hcp = (fabs((double)chi[0]-3.)+fabs((double)chi[0]
|
double delta_hcp = (fabs((double)chi[0]-3.)
|
||||||
+(double)chi[1]+(double)chi[2]+(double)chi[3]
|
+fabs((double)chi[0]
|
||||||
|
+(double)chi[1]
|
||||||
|
+(double)chi[2]
|
||||||
|
+(double)chi[3]
|
||||||
-9.0))/12.0;
|
-9.0))/12.0;
|
||||||
|
|
||||||
// Identification of the local structure according to the reference
|
// Identification of the local structure according to the reference
|
||||||
@ -276,6 +344,7 @@ void ComputeAcklandAtom::compute_peratom()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else structure[i] = 0.0;
|
} else structure[i] = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ class ComputeAcklandAtom : public Compute {
|
|||||||
double memory_usage();
|
double memory_usage();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int nmax,maxneigh;
|
int nmax,maxneigh,legacy;
|
||||||
double *distsq;
|
double *distsq;
|
||||||
int *nearest, *nearest_n0, *nearest_n1;
|
int *nearest, *nearest_n0, *nearest_n1;
|
||||||
double *structure;
|
double *structure;
|
||||||
|
|||||||
@ -204,8 +204,11 @@ void ComputeBasalAtom::compute_peratom()
|
|||||||
double bond_angle;
|
double bond_angle;
|
||||||
double norm_j, norm_k;
|
double norm_j, norm_k;
|
||||||
chi[0] = chi[1] = chi[2] = chi[3] = chi[4] = chi[5] = chi[6] = chi[7] = 0;
|
chi[0] = chi[1] = chi[2] = chi[3] = chi[4] = chi[5] = chi[6] = chi[7] = 0;
|
||||||
double x_ij, y_ij, z_ij, x_ik, y_ik, z_ik,x3[n0],y3[n0],z3[n0],
|
double x_ij, y_ij, z_ij, x_ik, y_ik, z_ik, xmean5, ymean5, zmean5,
|
||||||
xmean5, ymean5, zmean5, xmean6, ymean6, zmean6, xmean7, ymean7, zmean7;
|
xmean6, ymean6, zmean6, xmean7, ymean7, zmean7;
|
||||||
|
double *x3 = new double[n0];
|
||||||
|
double *y3 = new double[n0];
|
||||||
|
double *z3 = new double[n0];
|
||||||
for (j = 0; j < n0; j++) {
|
for (j = 0; j < n0; j++) {
|
||||||
x_ij = x[i][0]-x[nearest_n0[j]][0];
|
x_ij = x[i][0]-x[nearest_n0[j]][0];
|
||||||
y_ij = x[i][1]-x[nearest_n0[j]][1];
|
y_ij = x[i][1]-x[nearest_n0[j]][1];
|
||||||
@ -411,9 +414,12 @@ void ComputeBasalAtom::compute_peratom()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
//if there are less than two ~180 degree bond angles, the algorithm returns null
|
//if there are less than two ~180 degree bond angles, the algorithm returns null
|
||||||
else BPV[i][0] = BPV[i][1] = BPV[i][2] = 0.0;
|
} else BPV[i][0] = BPV[i][1] = BPV[i][2] = 0.0;
|
||||||
|
|
||||||
|
delete[] x3;
|
||||||
|
delete[] y3;
|
||||||
|
delete[] z3;
|
||||||
|
|
||||||
//normalize BPV:
|
//normalize BPV:
|
||||||
double Mag = sqrt(BPV[i][0]*BPV[i][0] +
|
double Mag = sqrt(BPV[i][0]*BPV[i][0] +
|
||||||
|
|||||||
@ -43,6 +43,17 @@ Contributing Author: Jacob Gissinger (jacob.gissinger@colorado.edu)
|
|||||||
using namespace LAMMPS_NS;
|
using namespace LAMMPS_NS;
|
||||||
using namespace FixConst;
|
using namespace FixConst;
|
||||||
|
|
||||||
|
static const char cite_fix_bond_react[] =
|
||||||
|
"fix bond/react:\n\n"
|
||||||
|
"@Article{Gissinger17,\n"
|
||||||
|
" author = {J. R. Gissinger, B. D. Jensen, K. E. Wise},\n"
|
||||||
|
" title = {Modeling chemical reactions in classical molecular dynamics simulations},\n"
|
||||||
|
" journal = {Polymer},\n"
|
||||||
|
" year = 2017,\n"
|
||||||
|
" volume = 128,\n"
|
||||||
|
" pages = {211--217}\n"
|
||||||
|
"}\n\n";
|
||||||
|
|
||||||
#define BIG 1.0e20
|
#define BIG 1.0e20
|
||||||
#define DELTA 16
|
#define DELTA 16
|
||||||
#define MAXLINE 256
|
#define MAXLINE 256
|
||||||
@ -62,6 +73,8 @@ enum{ACCEPT,REJECT,PROCEED,CONTINUE,GUESSFAIL,RESTORE};
|
|||||||
FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
||||||
Fix(lmp, narg, arg)
|
Fix(lmp, narg, arg)
|
||||||
{
|
{
|
||||||
|
if (lmp->citeme) lmp->citeme->add(cite_fix_bond_react);
|
||||||
|
|
||||||
fix1 = NULL;
|
fix1 = NULL;
|
||||||
fix2 = NULL;
|
fix2 = NULL;
|
||||||
|
|
||||||
@ -71,7 +84,6 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
MPI_Comm_size(world,&nprocs);
|
MPI_Comm_size(world,&nprocs);
|
||||||
|
|
||||||
attempted_rxn = 0;
|
attempted_rxn = 0;
|
||||||
ghostcheck_flag = 0;
|
|
||||||
force_reneighbor = 1;
|
force_reneighbor = 1;
|
||||||
next_reneighbor = -1;
|
next_reneighbor = -1;
|
||||||
vector_flag = 1;
|
vector_flag = 1;
|
||||||
@ -127,7 +139,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
// this looks excessive
|
// this looks excessive
|
||||||
// the price of vectorization (all reactions in one command)?
|
// the price of vectorization (all reactions in one command)?
|
||||||
memory->create(nevery,nreacts,"bond/react:nevery");
|
memory->create(nevery,nreacts,"bond/react:nevery");
|
||||||
memory->create(cutsq,nreacts,"bond/react:cutsq");
|
memory->create(cutsq,nreacts,2,"bond/react:cutsq");
|
||||||
memory->create(unreacted_mol,nreacts,"bond/react:unreacted_mol");
|
memory->create(unreacted_mol,nreacts,"bond/react:unreacted_mol");
|
||||||
memory->create(reacted_mol,nreacts,"bond/react:reacted_mol");
|
memory->create(reacted_mol,nreacts,"bond/react:reacted_mol");
|
||||||
memory->create(fraction,nreacts,"bond/react:fraction");
|
memory->create(fraction,nreacts,"bond/react:fraction");
|
||||||
@ -138,6 +150,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
memory->create(jatomtype,nreacts,"bond/react:jatomtype");
|
memory->create(jatomtype,nreacts,"bond/react:jatomtype");
|
||||||
memory->create(ibonding,nreacts,"bond/react:ibonding");
|
memory->create(ibonding,nreacts,"bond/react:ibonding");
|
||||||
memory->create(jbonding,nreacts,"bond/react:jbonding");
|
memory->create(jbonding,nreacts,"bond/react:jbonding");
|
||||||
|
memory->create(closeneigh,nreacts,"bond/react:closeneigh");
|
||||||
memory->create(groupbits,nreacts,"bond/react:groupbits");
|
memory->create(groupbits,nreacts,"bond/react:groupbits");
|
||||||
memory->create(reaction_count,nreacts,"bond/react:reaction_count");
|
memory->create(reaction_count,nreacts,"bond/react:reaction_count");
|
||||||
memory->create(local_rxn_count,nreacts,"bond/react:local_rxn_count");
|
memory->create(local_rxn_count,nreacts,"bond/react:local_rxn_count");
|
||||||
@ -176,7 +189,11 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
double cutoff = force->numeric(FLERR,arg[iarg++]);
|
double cutoff = force->numeric(FLERR,arg[iarg++]);
|
||||||
if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command 0.5");
|
if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command 0.5");
|
||||||
cutsq[rxn] = cutoff*cutoff;
|
cutsq[rxn][0] = cutoff*cutoff;
|
||||||
|
|
||||||
|
cutoff = force->numeric(FLERR,arg[iarg++]);
|
||||||
|
if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command 0.55");
|
||||||
|
cutsq[rxn][1] = cutoff*cutoff;
|
||||||
|
|
||||||
unreacted_mol[rxn] = atom->find_molecule(arg[iarg++]);
|
unreacted_mol[rxn] = atom->find_molecule(arg[iarg++]);
|
||||||
if (unreacted_mol[rxn] == -1) error->all(FLERR,"Unreacted molecule template ID for "
|
if (unreacted_mol[rxn] == -1) error->all(FLERR,"Unreacted molecule template ID for "
|
||||||
@ -241,6 +258,23 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
if (atom->molecular != 1)
|
if (atom->molecular != 1)
|
||||||
error->all(FLERR,"Cannot use fix bond/react with non-molecular systems");
|
error->all(FLERR,"Cannot use fix bond/react with non-molecular systems");
|
||||||
|
|
||||||
|
// check if bonding atoms are 1-2, 1-3, or 1-4 bonded neighbors
|
||||||
|
// if so, we don't need non-bonded neighbor list
|
||||||
|
for (int myrxn = 0; myrxn < nreacts; myrxn++) {
|
||||||
|
closeneigh[myrxn] = -1; // indicates will search non-bonded neighbors
|
||||||
|
onemol = atom->molecules[unreacted_mol[myrxn]];
|
||||||
|
for (int k = 0; k < onemol->nspecial[ibonding[myrxn]-1][2]; k++) {
|
||||||
|
if (onemol->special[ibonding[myrxn]-1][k] == jbonding[myrxn]) {
|
||||||
|
closeneigh[myrxn] = 2; // index for 1-4 neighbor
|
||||||
|
if (k < onemol->nspecial[ibonding[myrxn]-1][1])
|
||||||
|
closeneigh[myrxn] = 1; // index for 1-3 neighbor
|
||||||
|
if (k < onemol->nspecial[ibonding[myrxn]-1][0])
|
||||||
|
closeneigh[myrxn] = 0; // index for 1-2 neighbor
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// initialize Marsaglia RNG with processor-unique seed
|
// initialize Marsaglia RNG with processor-unique seed
|
||||||
|
|
||||||
random = new class RanMars*[nreacts];
|
random = new class RanMars*[nreacts];
|
||||||
@ -259,6 +293,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
nmax = 0;
|
nmax = 0;
|
||||||
partner = finalpartner = NULL;
|
partner = finalpartner = NULL;
|
||||||
distsq = NULL;
|
distsq = NULL;
|
||||||
|
probability = NULL;
|
||||||
maxcreate = 0;
|
maxcreate = 0;
|
||||||
created = NULL;
|
created = NULL;
|
||||||
local_ncreate = NULL;
|
local_ncreate = NULL;
|
||||||
@ -302,6 +337,7 @@ FixBondReact::~FixBondReact()
|
|||||||
memory->destroy(local_ncreate);
|
memory->destroy(local_ncreate);
|
||||||
memory->destroy(ncreate);
|
memory->destroy(ncreate);
|
||||||
memory->destroy(distsq);
|
memory->destroy(distsq);
|
||||||
|
memory->destroy(probability);
|
||||||
memory->destroy(created);
|
memory->destroy(created);
|
||||||
memory->destroy(edge);
|
memory->destroy(edge);
|
||||||
memory->destroy(equivalences);
|
memory->destroy(equivalences);
|
||||||
@ -320,6 +356,7 @@ FixBondReact::~FixBondReact()
|
|||||||
memory->destroy(jatomtype);
|
memory->destroy(jatomtype);
|
||||||
memory->destroy(ibonding);
|
memory->destroy(ibonding);
|
||||||
memory->destroy(jbonding);
|
memory->destroy(jbonding);
|
||||||
|
memory->destroy(closeneigh);
|
||||||
memory->destroy(groupbits);
|
memory->destroy(groupbits);
|
||||||
memory->destroy(reaction_count);
|
memory->destroy(reaction_count);
|
||||||
memory->destroy(local_rxn_count);
|
memory->destroy(local_rxn_count);
|
||||||
@ -372,7 +409,7 @@ it will have the name 'i_limit_tags' and will be intitialized to 0 (not in group
|
|||||||
|
|
||||||
void FixBondReact::post_constructor()
|
void FixBondReact::post_constructor()
|
||||||
{
|
{
|
||||||
//let's add the limit_tags per-atom property fix
|
// let's add the limit_tags per-atom property fix
|
||||||
int len = strlen("per_atom_props") + 1;
|
int len = strlen("per_atom_props") + 1;
|
||||||
id_fix2 = new char[len];
|
id_fix2 = new char[len];
|
||||||
strcpy(id_fix2,"per_atom_props");
|
strcpy(id_fix2,"per_atom_props");
|
||||||
@ -521,7 +558,7 @@ void FixBondReact::init()
|
|||||||
|
|
||||||
// check cutoff for iatomtype,jatomtype
|
// check cutoff for iatomtype,jatomtype
|
||||||
for (int i = 0; i < nreacts; i++) {
|
for (int i = 0; i < nreacts; i++) {
|
||||||
if (force->pair == NULL || cutsq[i] > force->pair->cutsq[iatomtype[i]][jatomtype[i]])
|
if (force->pair == NULL || cutsq[i][1] > force->pair->cutsq[iatomtype[i]][jatomtype[i]])
|
||||||
error->all(FLERR,"Fix bond/react cutoff is longer than pairwise cutoff");
|
error->all(FLERR,"Fix bond/react cutoff is longer than pairwise cutoff");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -548,10 +585,6 @@ void FixBondReact::init_list(int id, NeighList *ptr)
|
|||||||
|
|
||||||
void FixBondReact::post_integrate()
|
void FixBondReact::post_integrate()
|
||||||
{
|
{
|
||||||
int inum,jnum,itype,jtype,possible;
|
|
||||||
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
|
|
||||||
int *ilist,*jlist,*numneigh,**firstneigh;
|
|
||||||
|
|
||||||
// check if any reactions could occur on this timestep
|
// check if any reactions could occur on this timestep
|
||||||
int nevery_check = 1;
|
int nevery_check = 1;
|
||||||
for (int i = 0; i < nreacts; i++) {
|
for (int i = 0; i < nreacts; i++) {
|
||||||
@ -578,7 +611,6 @@ void FixBondReact::post_integrate()
|
|||||||
comm->forward_comm();
|
comm->forward_comm();
|
||||||
|
|
||||||
// resize bond partner list and initialize it
|
// resize bond partner list and initialize it
|
||||||
// probability array overlays distsq array
|
|
||||||
// needs to be atom->nmax in length
|
// needs to be atom->nmax in length
|
||||||
|
|
||||||
if (atom->nmax > nmax) {
|
if (atom->nmax > nmax) {
|
||||||
@ -587,13 +619,14 @@ void FixBondReact::post_integrate()
|
|||||||
memory->destroy(distsq);
|
memory->destroy(distsq);
|
||||||
memory->destroy(local_ncreate);
|
memory->destroy(local_ncreate);
|
||||||
memory->destroy(ncreate);
|
memory->destroy(ncreate);
|
||||||
|
memory->destroy(probability);
|
||||||
nmax = atom->nmax;
|
nmax = atom->nmax;
|
||||||
memory->create(partner,nmax,"bond/react:partner");
|
memory->create(partner,nmax,"bond/react:partner");
|
||||||
memory->create(finalpartner,nmax,"bond/react:finalpartner");
|
memory->create(finalpartner,nmax,"bond/react:finalpartner");
|
||||||
memory->create(distsq,nmax,"bond/react:distsq");
|
memory->create(distsq,nmax,2,"bond/react:distsq");
|
||||||
memory->create(local_ncreate,nreacts,"bond/react:local_ncreate");
|
memory->create(local_ncreate,nreacts,"bond/react:local_ncreate");
|
||||||
memory->create(ncreate,nreacts,"bond/react:ncreate");
|
memory->create(ncreate,nreacts,"bond/react:ncreate");
|
||||||
probability = distsq;
|
memory->create(probability,nmax,"bond/react:probability");
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset create counts
|
// reset create counts
|
||||||
@ -605,129 +638,28 @@ void FixBondReact::post_integrate()
|
|||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
int nall = atom->nlocal + atom->nghost;
|
int nall = atom->nlocal + atom->nghost;
|
||||||
|
|
||||||
// NOTE: this might be faster if we remembered neighbor distances from
|
|
||||||
// previous timestep and used those --JG
|
|
||||||
|
|
||||||
// loop over neighbors of my atoms
|
// loop over neighbors of my atoms
|
||||||
// each atom sets one closest eligible partner atom ID to bond with
|
// each atom sets one closest eligible partner atom ID to bond with
|
||||||
|
|
||||||
double **x = atom->x;
|
|
||||||
tagint *tag = atom->tag;
|
tagint *tag = atom->tag;
|
||||||
int **nspecial = atom->nspecial;
|
|
||||||
tagint **special = atom->special;
|
|
||||||
int *mask = atom->mask;
|
|
||||||
int *type = atom->type;
|
int *type = atom->type;
|
||||||
|
|
||||||
neighbor->build_one(list,1);
|
neighbor->build_one(list,1);
|
||||||
inum = list->inum;
|
|
||||||
ilist = list->ilist;
|
|
||||||
numneigh = list->numneigh;
|
|
||||||
firstneigh = list->firstneigh;
|
|
||||||
|
|
||||||
// per-atom property indicating if in bond/react master group
|
int j;
|
||||||
int flag;
|
|
||||||
int index1 = atom->find_custom("limit_tags",flag);
|
|
||||||
int *i_limit_tags = atom->ivector[index1];
|
|
||||||
|
|
||||||
int i,j;
|
for (rxnID = 0; rxnID < nreacts; rxnID++) {
|
||||||
|
|
||||||
for (int myrxn = 0; myrxn < nreacts; myrxn++) {
|
|
||||||
|
|
||||||
for (int ii = 0; ii < nall; ii++) {
|
for (int ii = 0; ii < nall; ii++) {
|
||||||
partner[ii] = 0;
|
partner[ii] = 0;
|
||||||
finalpartner[ii] = 0;
|
finalpartner[ii] = 0;
|
||||||
distsq[ii] = BIG;
|
distsq[ii][0] = 0.0;
|
||||||
|
distsq[ii][1] = BIG;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int ii = 0; ii < inum; ii++) { // inum vs nlocal
|
// fork between far and close_partner here
|
||||||
i = ilist[ii];
|
if (closeneigh[rxnID] < 0) far_partner();
|
||||||
if (!(mask[i] & groupbits[myrxn])) continue;
|
else close_partner();
|
||||||
if (i_limit_tags[i] != 0) continue;
|
|
||||||
itype = type[i];
|
|
||||||
xtmp = x[i][0];
|
|
||||||
ytmp = x[i][1];
|
|
||||||
ztmp = x[i][2];
|
|
||||||
jlist = firstneigh[i];
|
|
||||||
jnum = numneigh[i];
|
|
||||||
|
|
||||||
for (int jj = 0; jj < jnum; jj++) {
|
|
||||||
j = jlist[jj];
|
|
||||||
j &= NEIGHMASK;
|
|
||||||
|
|
||||||
if (!(mask[j] & groupbits[myrxn])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i_limit_tags[j] != 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
jtype = type[j];
|
|
||||||
possible = 0;
|
|
||||||
|
|
||||||
if (itype == iatomtype[myrxn] && jtype == jatomtype[myrxn]) {
|
|
||||||
possible = 1;
|
|
||||||
} else if (itype == jatomtype[myrxn] && jtype == iatomtype[myrxn]) {
|
|
||||||
possible = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (possible == 0) continue;
|
|
||||||
|
|
||||||
for (int k = 0; k < nspecial[i][0]; k++)
|
|
||||||
if (special[i][k] == tag[j]) possible = 0;
|
|
||||||
if (!possible) continue;
|
|
||||||
|
|
||||||
// NOTE(for below): certain neighbor list settings prevent 3-cycles anyway!
|
|
||||||
// e.g., in my examples, must use kspace command to include 1-3 neighbors for consideration here
|
|
||||||
|
|
||||||
// do not allow a three-membered ring to be created (by the new bond)
|
|
||||||
// check 1-3 neighbors of atom I
|
|
||||||
for (int k = nspecial[i][0]; k < nspecial[i][1]; k++)
|
|
||||||
if (special[i][k] == tag[j]) possible = 0;
|
|
||||||
if (possible == 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// do not allow a four-membered ring to be created (by the new bond)
|
|
||||||
// check 1-4 neighbors of atom I -> probably make an option
|
|
||||||
|
|
||||||
/*
|
|
||||||
for (k = nspecial[i][1]; k < nspecial[i][2]; k++)
|
|
||||||
if (special[i][k] == tag[j]) {
|
|
||||||
possible = 0;
|
|
||||||
}
|
|
||||||
if (possible == 0) continue;
|
|
||||||
*/
|
|
||||||
|
|
||||||
// do not allow 5 membered rings -> probably make this an option
|
|
||||||
|
|
||||||
/*
|
|
||||||
for (k = nspecial[i][1]; k < nspecial[i][2]; k++) {
|
|
||||||
for (m = nspecial[atom->map(special[i][k])][1]; m < nspecial[atom->map(special[i][k])][2]; m++) {
|
|
||||||
if (special[atom->map(special[i][k])][m] == tag[j]) possible = 0;
|
|
||||||
/ }
|
|
||||||
}
|
|
||||||
if (possible == 0) continue;
|
|
||||||
*/
|
|
||||||
|
|
||||||
delx = xtmp - x[j][0];
|
|
||||||
dely = ytmp - x[j][1];
|
|
||||||
delz = ztmp - x[j][2];
|
|
||||||
rsq = delx*delx + dely*dely + delz*delz;
|
|
||||||
|
|
||||||
if (rsq >= cutsq[myrxn]) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (rsq < distsq[i]) {
|
|
||||||
partner[i] = tag[j];
|
|
||||||
distsq[i] = rsq;
|
|
||||||
}
|
|
||||||
if (rsq < distsq[j]) {
|
|
||||||
partner[j] = tag[i];
|
|
||||||
distsq[j] = rsq;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// reverse comm of distsq and partner
|
// reverse comm of distsq and partner
|
||||||
// not needed if newton_pair off since I,J pair was seen by both procs
|
// not needed if newton_pair off since I,J pair was seen by both procs
|
||||||
@ -739,9 +671,9 @@ void FixBondReact::post_integrate()
|
|||||||
// for prob check, generate random value for each atom with a bond partner
|
// for prob check, generate random value for each atom with a bond partner
|
||||||
// forward comm of partner and random value, so ghosts have it
|
// forward comm of partner and random value, so ghosts have it
|
||||||
|
|
||||||
if (fraction[myrxn] < 1.0) {
|
if (fraction[rxnID] < 1.0) {
|
||||||
for (int i = 0; i < nlocal; i++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (partner[i]) probability[i] = random[myrxn]->uniform();
|
if (partner[i]) probability[i] = random[rxnID]->uniform();
|
||||||
}
|
}
|
||||||
|
|
||||||
commflag = 2;
|
commflag = 2;
|
||||||
@ -764,11 +696,11 @@ void FixBondReact::post_integrate()
|
|||||||
|
|
||||||
// apply probability constraint using RN for atom with smallest ID
|
// apply probability constraint using RN for atom with smallest ID
|
||||||
|
|
||||||
if (fraction[myrxn] < 1.0) {
|
if (fraction[rxnID] < 1.0) {
|
||||||
if (tag[i] < tag[j]) {
|
if (tag[i] < tag[j]) {
|
||||||
if (probability[i] >= fraction[myrxn]) continue;
|
if (probability[i] >= fraction[rxnID]) continue;
|
||||||
} else {
|
} else {
|
||||||
if (probability[j] >= fraction[myrxn]) continue;
|
if (probability[j] >= fraction[rxnID]) continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -780,31 +712,17 @@ void FixBondReact::post_integrate()
|
|||||||
if (tag[i] < tag[j]) temp_ncreate++;
|
if (tag[i] < tag[j]) temp_ncreate++;
|
||||||
}
|
}
|
||||||
|
|
||||||
local_ncreate[myrxn] = temp_ncreate;
|
local_ncreate[rxnID] = temp_ncreate;
|
||||||
// break loop if no even eligible bonding atoms were found (on any proc)
|
// break loop if no even eligible bonding atoms were found (on any proc)
|
||||||
int some_chance;
|
int some_chance;
|
||||||
MPI_Allreduce(&temp_ncreate,&some_chance,1,MPI_INT,MPI_SUM,world);
|
MPI_Allreduce(&temp_ncreate,&some_chance,1,MPI_INT,MPI_SUM,world);
|
||||||
if (!some_chance) {
|
if (!some_chance) continue;
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// communicate final partner
|
// communicate final partner
|
||||||
|
|
||||||
commflag = 3;
|
commflag = 3;
|
||||||
comm->forward_comm_fix(this);
|
comm->forward_comm_fix(this);
|
||||||
|
|
||||||
//obsolete comment block
|
|
||||||
/*
|
|
||||||
// I think this also simplifies for bond/react.
|
|
||||||
// but currently unsure how to adapt it - JG
|
|
||||||
// create list of created bonds that influence my owned atoms
|
|
||||||
// even if between owned-ghost or ghost-ghost atoms
|
|
||||||
// finalpartner is now set for owned and ghost atoms so loop over nall
|
|
||||||
// OK if duplicates in created list due to ghosts duplicating owned atoms
|
|
||||||
// check J < 0 to insure a created bond to unknown atom is included
|
|
||||||
// i.e. a bond partner outside of skin length
|
|
||||||
*/
|
|
||||||
|
|
||||||
// add instance to 'created' only if this processor
|
// add instance to 'created' only if this processor
|
||||||
// owns the atoms with smaller global ID
|
// owns the atoms with smaller global ID
|
||||||
// NOTE: we no longer care about ghost-ghost instances as bond/create did
|
// NOTE: we no longer care about ghost-ghost instances as bond/create did
|
||||||
@ -816,21 +734,21 @@ void FixBondReact::post_integrate()
|
|||||||
j = atom->map(finalpartner[i]);
|
j = atom->map(finalpartner[i]);
|
||||||
// if (j < 0 || tag[i] < tag[j]) {
|
// if (j < 0 || tag[i] < tag[j]) {
|
||||||
if (tag[i] < tag[j]) { //atom->map(std::min(tag[i],tag[j])) <= nlocal &&
|
if (tag[i] < tag[j]) { //atom->map(std::min(tag[i],tag[j])) <= nlocal &&
|
||||||
if (ncreate[myrxn] == maxcreate) {
|
if (ncreate[rxnID] == maxcreate) {
|
||||||
maxcreate += DELTA;
|
maxcreate += DELTA;
|
||||||
// third column of 'created': bond/react integer ID
|
// third column of 'created': bond/react integer ID
|
||||||
memory->grow(created,maxcreate,2,nreacts,"bond/react:created");
|
memory->grow(created,maxcreate,2,nreacts,"bond/react:created");
|
||||||
}
|
}
|
||||||
// to ensure types remain in same order
|
// to ensure types remain in same order
|
||||||
// unnecessary now taken from reaction map file
|
// unnecessary now taken from reaction map file
|
||||||
if (iatomtype[myrxn] == type[i]) {
|
if (iatomtype[rxnID] == type[i]) {
|
||||||
created[ncreate[myrxn]][0][myrxn] = tag[i];
|
created[ncreate[rxnID]][0][rxnID] = tag[i];
|
||||||
created[ncreate[myrxn]][1][myrxn] = finalpartner[i];
|
created[ncreate[rxnID]][1][rxnID] = finalpartner[i];
|
||||||
} else {
|
} else {
|
||||||
created[ncreate[myrxn]][0][myrxn] = finalpartner[i];
|
created[ncreate[rxnID]][0][rxnID] = finalpartner[i];
|
||||||
created[ncreate[myrxn]][1][myrxn] = tag[i];
|
created[ncreate[rxnID]][1][rxnID] = tag[i];
|
||||||
}
|
}
|
||||||
ncreate[myrxn]++;
|
ncreate[rxnID]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unlimit_bond(); //free atoms that have been relaxed
|
unlimit_bond(); //free atoms that have been relaxed
|
||||||
@ -854,7 +772,152 @@ void FixBondReact::post_integrate()
|
|||||||
superimpose_algorithm();
|
superimpose_algorithm();
|
||||||
// free atoms that have been limited after reacting
|
// free atoms that have been limited after reacting
|
||||||
unlimit_bond();
|
unlimit_bond();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Search non-bonded neighbor lists if bonding atoms are not in special list
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixBondReact::far_partner()
|
||||||
|
{
|
||||||
|
int inum,jnum,itype,jtype,possible;
|
||||||
|
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
|
||||||
|
int *ilist,*jlist,*numneigh,**firstneigh;
|
||||||
|
|
||||||
|
// loop over neighbors of my atoms
|
||||||
|
// each atom sets one closest eligible partner atom ID to bond with
|
||||||
|
|
||||||
|
double **x = atom->x;
|
||||||
|
tagint *tag = atom->tag;
|
||||||
|
int **nspecial = atom->nspecial;
|
||||||
|
tagint **special = atom->special;
|
||||||
|
int *mask = atom->mask;
|
||||||
|
int *type = atom->type;
|
||||||
|
|
||||||
|
inum = list->inum;
|
||||||
|
ilist = list->ilist;
|
||||||
|
numneigh = list->numneigh;
|
||||||
|
firstneigh = list->firstneigh;
|
||||||
|
|
||||||
|
// per-atom property indicating if in bond/react master group
|
||||||
|
int flag;
|
||||||
|
int index1 = atom->find_custom("limit_tags",flag);
|
||||||
|
int *i_limit_tags = atom->ivector[index1];
|
||||||
|
|
||||||
|
int i,j;
|
||||||
|
|
||||||
|
for (int ii = 0; ii < inum; ii++) {
|
||||||
|
i = ilist[ii];
|
||||||
|
if (!(mask[i] & groupbits[rxnID])) continue;
|
||||||
|
if (i_limit_tags[i] != 0) continue;
|
||||||
|
itype = type[i];
|
||||||
|
xtmp = x[i][0];
|
||||||
|
ytmp = x[i][1];
|
||||||
|
ztmp = x[i][2];
|
||||||
|
jlist = firstneigh[i];
|
||||||
|
jnum = numneigh[i];
|
||||||
|
|
||||||
|
for (int jj = 0; jj < jnum; jj++) {
|
||||||
|
j = jlist[jj];
|
||||||
|
j &= NEIGHMASK;
|
||||||
|
|
||||||
|
if (!(mask[j] & groupbits[rxnID])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i_limit_tags[j] != 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
jtype = type[j];
|
||||||
|
possible = 0;
|
||||||
|
|
||||||
|
if (itype == iatomtype[rxnID] && jtype == jatomtype[rxnID]) {
|
||||||
|
possible = 1;
|
||||||
|
} else if (itype == jatomtype[rxnID] && jtype == iatomtype[rxnID]) {
|
||||||
|
possible = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (possible == 0) continue;
|
||||||
|
|
||||||
|
// do not allow bonding atoms within special list
|
||||||
|
for (int k = 0; k < nspecial[i][2]; k++)
|
||||||
|
if (special[i][k] == tag[j]) possible = 0;
|
||||||
|
if (!possible) continue;
|
||||||
|
|
||||||
|
delx = xtmp - x[j][0];
|
||||||
|
dely = ytmp - x[j][1];
|
||||||
|
delz = ztmp - x[j][2];
|
||||||
|
rsq = delx*delx + dely*dely + delz*delz;
|
||||||
|
|
||||||
|
if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (rsq < distsq[i][1]) {
|
||||||
|
partner[i] = tag[j];
|
||||||
|
distsq[i][1] = rsq;
|
||||||
|
}
|
||||||
|
if (rsq < distsq[j][1]) {
|
||||||
|
partner[j] = tag[i];
|
||||||
|
distsq[j][1] = rsq;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Slightly simpler to find bonding partner when a close neighbor
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixBondReact::close_partner()
|
||||||
|
{
|
||||||
|
int n,i1,i2,itype,jtype;
|
||||||
|
double delx,dely,delz,rsq;
|
||||||
|
|
||||||
|
double **x = atom->x;
|
||||||
|
tagint *tag = atom->tag;
|
||||||
|
int *type = atom->type;
|
||||||
|
int *mask = atom->mask;
|
||||||
|
int **nspecial = atom->nspecial;
|
||||||
|
tagint **special = atom->special;
|
||||||
|
|
||||||
|
// per-atom property indicating if in bond/react master group
|
||||||
|
int flag;
|
||||||
|
int index1 = atom->find_custom("limit_tags",flag);
|
||||||
|
int *i_limit_tags = atom->ivector[index1];
|
||||||
|
|
||||||
|
// loop over special list
|
||||||
|
for (int ii = 0; ii < atom->nlocal; ii++) {
|
||||||
|
itype = type[ii];
|
||||||
|
n = 0;
|
||||||
|
if (closeneigh[rxnID] != 0)
|
||||||
|
n = nspecial[ii][closeneigh[rxnID]-1];
|
||||||
|
for (; n < nspecial[ii][closeneigh[rxnID]]; n++) {
|
||||||
|
i1 = ii;
|
||||||
|
i2 = atom->map(special[ii][n]);
|
||||||
|
jtype = type[i2];
|
||||||
|
if (!(mask[i1] & groupbits[rxnID])) continue;
|
||||||
|
if (!(mask[i2] & groupbits[rxnID])) continue;
|
||||||
|
if (i_limit_tags[i1] != 0) continue;
|
||||||
|
if (i_limit_tags[i2] != 0) continue;
|
||||||
|
if (itype != iatomtype[rxnID] || jtype != jatomtype[rxnID]) continue;
|
||||||
|
|
||||||
|
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;
|
||||||
|
if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) continue;
|
||||||
|
|
||||||
|
if (rsq > distsq[i1][0]) {
|
||||||
|
partner[i1] = tag[i2];
|
||||||
|
distsq[i1][0] = rsq;
|
||||||
|
}
|
||||||
|
if (rsq > distsq[i2][0]) {
|
||||||
|
partner[i2] = tag[i1];
|
||||||
|
distsq[i2][0] = rsq;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -1076,8 +1139,8 @@ void FixBondReact::make_a_guess()
|
|||||||
if (assigned_count == nfirst_neighs) status = GUESSFAIL;
|
if (assigned_count == nfirst_neighs) status = GUESSFAIL;
|
||||||
|
|
||||||
// check if all neigh atom types are the same between simulation and unreacted mol
|
// check if all neigh atom types are the same between simulation and unreacted mol
|
||||||
int mol_ntypes[atom->ntypes];
|
int *mol_ntypes = new int[atom->ntypes];
|
||||||
int lcl_ntypes[atom->ntypes];
|
int *lcl_ntypes = new int[atom->ntypes];
|
||||||
|
|
||||||
for (int i = 0; i < atom->ntypes; i++) {
|
for (int i = 0; i < atom->ntypes; i++) {
|
||||||
mol_ntypes[i] = 0;
|
mol_ntypes[i] = 0;
|
||||||
@ -1096,6 +1159,9 @@ void FixBondReact::make_a_guess()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete [] mol_ntypes;
|
||||||
|
delete [] lcl_ntypes;
|
||||||
|
|
||||||
// okay everything seems to be in order. let's assign some ID pairs!!!
|
// okay everything seems to be in order. let's assign some ID pairs!!!
|
||||||
neighbor_loop();
|
neighbor_loop();
|
||||||
}
|
}
|
||||||
@ -1384,7 +1450,7 @@ void FixBondReact::find_landlocked_atoms(int myrxn)
|
|||||||
// if no edge atoms (small reacting molecule), all atoms are landlocked
|
// if no edge atoms (small reacting molecule), all atoms are landlocked
|
||||||
// we can delete all current topology of landlocked atoms and replace
|
// we can delete all current topology of landlocked atoms and replace
|
||||||
|
|
||||||
// alwasy remove edge atoms from landlocked list
|
// always remove edge atoms from landlocked list
|
||||||
for (int i = 0; i < twomol->natoms; i++) {
|
for (int i = 0; i < twomol->natoms; i++) {
|
||||||
if (edge[equivalences[i][1][myrxn]-1][myrxn] == 1) landlocked_atoms[i][myrxn] = 0;
|
if (edge[equivalences[i][1][myrxn]-1][myrxn] == 1) landlocked_atoms[i][myrxn] = 0;
|
||||||
else landlocked_atoms[i][myrxn] = 1;
|
else landlocked_atoms[i][myrxn] = 1;
|
||||||
@ -1395,7 +1461,6 @@ void FixBondReact::find_landlocked_atoms(int myrxn)
|
|||||||
if ((force->dihedral && twomol->dihedralflag) ||
|
if ((force->dihedral && twomol->dihedralflag) ||
|
||||||
(force->improper && twomol->improperflag)) nspecial_limit = 1;
|
(force->improper && twomol->improperflag)) nspecial_limit = 1;
|
||||||
|
|
||||||
|
|
||||||
if (nspecial_limit != -1) {
|
if (nspecial_limit != -1) {
|
||||||
for (int i = 0; i < twomol->natoms; i++) {
|
for (int i = 0; i < twomol->natoms; i++) {
|
||||||
for (int j = 0; j < twomol->nspecial[i][nspecial_limit]; j++) {
|
for (int j = 0; j < twomol->nspecial[i][nspecial_limit]; j++) {
|
||||||
@ -1410,11 +1475,21 @@ void FixBondReact::find_landlocked_atoms(int myrxn)
|
|||||||
|
|
||||||
// bad molecule templates check
|
// bad molecule templates check
|
||||||
// if atoms change types, but aren't landlocked, that's bad
|
// if atoms change types, but aren't landlocked, that's bad
|
||||||
|
|
||||||
for (int i = 0; i < twomol->natoms; i++) {
|
for (int i = 0; i < twomol->natoms; i++) {
|
||||||
if (twomol->type[i] != onemol->type[equivalences[i][1][myrxn]-1] && landlocked_atoms[i][myrxn] == 0)
|
if (twomol->type[i] != onemol->type[equivalences[i][1][myrxn]-1] && landlocked_atoms[i][myrxn] == 0)
|
||||||
error->one(FLERR,"Atom affected by reaction too close to template edge");
|
error->one(FLERR,"Atom affected by reaction too close to template edge");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// also, if atoms change number of bonds, but aren't landlocked, that could be bad
|
||||||
|
if (me == 0)
|
||||||
|
for (int i = 0; i < twomol->natoms; i++) {
|
||||||
|
if (twomol->nspecial[i][0] != onemol->nspecial[equivalences[i][1][myrxn]-1][0] && landlocked_atoms[i][myrxn] == 0) {
|
||||||
|
char str[128];
|
||||||
|
sprintf(str,"An atom in 'react #%d' changes bond connectivity but not atom type",myrxn+1);
|
||||||
|
error->warning(FLERR,str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -1438,7 +1513,8 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
|||||||
dedup_size = global_megasize;
|
dedup_size = global_megasize;
|
||||||
}
|
}
|
||||||
|
|
||||||
tagint dedup_glove[max_natoms+1][dedup_size];
|
tagint **dedup_glove;
|
||||||
|
memory->create(dedup_glove,max_natoms+1,dedup_size,"bond/react:dedup_glove");
|
||||||
|
|
||||||
if (dedup_mode == 0) {
|
if (dedup_mode == 0) {
|
||||||
for (int i = 0; i < dedup_size; i++) {
|
for (int i = 0; i < dedup_size; i++) {
|
||||||
@ -1456,8 +1532,8 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
|||||||
|
|
||||||
// dedup_mask is size dedup_size and filters reactions that have been deleted
|
// dedup_mask is size dedup_size and filters reactions that have been deleted
|
||||||
// a value of 1 means this reaction instance has been deleted
|
// a value of 1 means this reaction instance has been deleted
|
||||||
int dedup_mask[dedup_size];
|
int *dedup_mask = new int[dedup_size];
|
||||||
int dup_list[dedup_size];
|
int *dup_list = new int[dedup_size];
|
||||||
|
|
||||||
for (int i = 0; i < dedup_size; i++) {
|
for (int i = 0; i < dedup_size; i++) {
|
||||||
dedup_mask[i] = 0;
|
dedup_mask[i] = 0;
|
||||||
@ -1467,14 +1543,12 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
|||||||
// let's randomly mix up our reaction instances first
|
// let's randomly mix up our reaction instances first
|
||||||
// then we can feel okay about ignoring ones we've already deleted (or accepted)
|
// then we can feel okay about ignoring ones we've already deleted (or accepted)
|
||||||
// based off std::shuffle
|
// based off std::shuffle
|
||||||
// will produce same 'random' sequences on different processors.
|
int *temp_rxn = new int[max_natoms+1];
|
||||||
// not really an issue, as reaction lists are independent
|
|
||||||
for (int i = dedup_size-1; i > 0; --i) { //dedup_size
|
for (int i = dedup_size-1; i > 0; --i) { //dedup_size
|
||||||
//choose random entry to swap current one with
|
// choose random entry to swap current one with
|
||||||
int k = rand() % (i+1);
|
int k = floor(random[0]->uniform()*(i+1));
|
||||||
|
|
||||||
// swap entries
|
// swap entries
|
||||||
int temp_rxn[max_natoms+1];
|
|
||||||
for (int j = 0; j < max_natoms+1; j++)
|
for (int j = 0; j < max_natoms+1; j++)
|
||||||
temp_rxn[j] = dedup_glove[j][i];
|
temp_rxn[j] = dedup_glove[j][i];
|
||||||
|
|
||||||
@ -1483,6 +1557,7 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
|||||||
dedup_glove[j][k] = temp_rxn[j];
|
dedup_glove[j][k] = temp_rxn[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
delete [] temp_rxn;
|
||||||
|
|
||||||
for (int i = 0; i < dedup_size; i++) {
|
for (int i = 0; i < dedup_size; i++) {
|
||||||
if (dedup_mask[i] == 0) {
|
if (dedup_mask[i] == 0) {
|
||||||
@ -1557,6 +1632,10 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
|||||||
}
|
}
|
||||||
global_megasize = new_global_megasize;
|
global_megasize = new_global_megasize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory->destroy(dedup_glove);
|
||||||
|
delete [] dedup_mask;
|
||||||
|
delete [] dup_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -1743,9 +1822,6 @@ void FixBondReact::ghost_glovecast()
|
|||||||
for (int j = 0; j < global_megasize; j++)
|
for (int j = 0; j < global_megasize; j++)
|
||||||
global_mega_glove[i][j] = 0;
|
global_mega_glove[i][j] = 0;
|
||||||
|
|
||||||
|
|
||||||
ghostcheck_flag = 1;
|
|
||||||
|
|
||||||
if (ghostly_num_mega > 0) {
|
if (ghostly_num_mega > 0) {
|
||||||
for (int i = 0; i < max_natoms+1; i++) {
|
for (int i = 0; i < max_natoms+1; i++) {
|
||||||
for (int j = 0; j < ghostly_num_mega; j++) {
|
for (int j = 0; j < ghostly_num_mega; j++) {
|
||||||
@ -1806,7 +1882,8 @@ void FixBondReact::update_everything()
|
|||||||
// add check for local atoms as well
|
// add check for local atoms as well
|
||||||
|
|
||||||
int update_num_mega;
|
int update_num_mega;
|
||||||
tagint update_mega_glove[max_natoms+1][MAX(local_num_mega,global_megasize)];
|
tagint **update_mega_glove;
|
||||||
|
memory->create(update_mega_glove,max_natoms+1,MAX(local_num_mega,global_megasize),"bond/react:update_mega_glove");
|
||||||
|
|
||||||
for (int pass = 0; pass < 2; pass++) {
|
for (int pass = 0; pass < 2; pass++) {
|
||||||
|
|
||||||
@ -2217,6 +2294,9 @@ void FixBondReact::update_everything()
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory->destroy(update_mega_glove);
|
||||||
|
|
||||||
// something to think about: this could done much more concisely if
|
// something to think about: this could done much more concisely if
|
||||||
// all atom-level info (bond,angles, etc...) were kinda inherited from a common data struct --JG
|
// all atom-level info (bond,angles, etc...) were kinda inherited from a common data struct --JG
|
||||||
|
|
||||||
@ -2522,7 +2602,10 @@ int FixBondReact::pack_reverse_comm(int n, int first, double *buf)
|
|||||||
|
|
||||||
for (i = first; i < last; i++) {
|
for (i = first; i < last; i++) {
|
||||||
buf[m++] = ubuf(partner[i]).d;
|
buf[m++] = ubuf(partner[i]).d;
|
||||||
buf[m++] = distsq[i];
|
if (closeneigh[rxnID] < 0)
|
||||||
|
buf[m++] = distsq[i][1];
|
||||||
|
else
|
||||||
|
buf[m++] = distsq[i][0];
|
||||||
}
|
}
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
@ -2538,9 +2621,15 @@ void FixBondReact::unpack_reverse_comm(int n, int *list, double *buf)
|
|||||||
if (commflag != 1) {
|
if (commflag != 1) {
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
j = list[i];
|
j = list[i];
|
||||||
if (buf[m+1] < distsq[j]) {
|
if (closeneigh[rxnID] < 0)
|
||||||
|
if (buf[m+1] < distsq[j][1]) {
|
||||||
partner[j] = (tagint) ubuf(buf[m++]).i;
|
partner[j] = (tagint) ubuf(buf[m++]).i;
|
||||||
distsq[j] = buf[m++];
|
distsq[j][1] = buf[m++];
|
||||||
|
} else m += 2;
|
||||||
|
else
|
||||||
|
if (buf[m+1] > distsq[j][0]) {
|
||||||
|
partner[j] = (tagint) ubuf(buf[m++]).i;
|
||||||
|
distsq[j][0] = buf[m++];
|
||||||
} else m += 2;
|
} else m += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,7 @@ class FixBondReact : public Fix {
|
|||||||
FILE *fp;
|
FILE *fp;
|
||||||
int *iatomtype,*jatomtype;
|
int *iatomtype,*jatomtype;
|
||||||
int *seed;
|
int *seed;
|
||||||
double *cutsq,*fraction;
|
double **cutsq,*fraction;
|
||||||
tagint lastcheck;
|
tagint lastcheck;
|
||||||
int stabilization_flag;
|
int stabilization_flag;
|
||||||
int *stabilize_steps_flag;
|
int *stabilize_steps_flag;
|
||||||
@ -66,7 +66,7 @@ class FixBondReact : public Fix {
|
|||||||
int nmax; // max num local atoms
|
int nmax; // max num local atoms
|
||||||
int max_natoms; // max natoms in a molecule template
|
int max_natoms; // max natoms in a molecule template
|
||||||
tagint *partner,*finalpartner;
|
tagint *partner,*finalpartner;
|
||||||
double *distsq,*probability;
|
double **distsq,*probability;
|
||||||
int *ncreate;
|
int *ncreate;
|
||||||
int maxcreate;
|
int maxcreate;
|
||||||
int allncreate;
|
int allncreate;
|
||||||
@ -96,10 +96,9 @@ class FixBondReact : public Fix {
|
|||||||
void superimpose_algorithm(); // main function of the superimpose algorithm
|
void superimpose_algorithm(); // main function of the superimpose algorithm
|
||||||
|
|
||||||
int *ibonding,*jbonding;
|
int *ibonding,*jbonding;
|
||||||
|
int *closeneigh; // indicates if bonding atoms of a rxn are 1-2, 1-3, or 1-4 neighbors
|
||||||
int nedge,nequivalent; // number of edge, equivalent atoms in mapping file
|
int nedge,nequivalent; // number of edge, equivalent atoms in mapping file
|
||||||
int attempted_rxn; // there was an attempt!
|
int attempted_rxn; // there was an attempt!
|
||||||
int ghostcheck_flag; // idicates whether a reaction instances contains a nonlocal atom
|
|
||||||
int this_rxn_count; // num of local reaction occurrences
|
|
||||||
int *local_rxn_count;
|
int *local_rxn_count;
|
||||||
int *ghostly_rxn_count;
|
int *ghostly_rxn_count;
|
||||||
int avail_guesses; // num of restore points available
|
int avail_guesses; // num of restore points available
|
||||||
@ -143,6 +142,8 @@ class FixBondReact : public Fix {
|
|||||||
void skip_lines(int, char *);
|
void skip_lines(int, char *);
|
||||||
int parse(char *, char **, int);
|
int parse(char *, char **, int);
|
||||||
|
|
||||||
|
void far_partner();
|
||||||
|
void close_partner();
|
||||||
void find_landlocked_atoms(int);
|
void find_landlocked_atoms(int);
|
||||||
void glove_ghostcheck();
|
void glove_ghostcheck();
|
||||||
void ghost_glovecast();
|
void ghost_glovecast();
|
||||||
|
|||||||
@ -1527,7 +1527,10 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
|
|||||||
|
|
||||||
//derivative:
|
//derivative:
|
||||||
//dn1dx:
|
//dn1dx:
|
||||||
double sum1[3][3*N];
|
|
||||||
|
double **sum1;
|
||||||
|
memory->create(sum1,3,3*N,"filter_corotate:sum1");
|
||||||
|
|
||||||
for (int i=0; i<3; i++)
|
for (int i=0; i<3; i++)
|
||||||
for (int j=0; j<3*N; j++)
|
for (int j=0; j<3*N; j++)
|
||||||
sum1[i][j] = 0;
|
sum1[i][j] = 0;
|
||||||
@ -1564,10 +1567,12 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
|
|||||||
dn1dx[i][j] = norm1*sum;
|
dn1dx[i][j] = norm1*sum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
memory->destroy(sum1);
|
||||||
|
|
||||||
//dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
|
//dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
|
||||||
|
|
||||||
double sum2[3][3*N];
|
double **sum2;
|
||||||
|
memory->create(sum2,3,3*N,"filter_corotate:sum2");
|
||||||
for (int i=0; i<3; i++)
|
for (int i=0; i<3; i++)
|
||||||
for (int j=0; j<3*N; j++)
|
for (int j=0; j<3*N; j++)
|
||||||
sum2[i][j] = 0;
|
sum2[i][j] = 0;
|
||||||
@ -1618,7 +1623,8 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
|
|||||||
//dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
|
//dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
|
||||||
//sum3 = (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
|
//sum3 = (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
|
||||||
|
|
||||||
double sum3[3][3*N];
|
double **sum3;
|
||||||
|
memory->create(sum3,3,3*N,"filter_corotate:sum3");
|
||||||
for (int i=0; i<3; i++)
|
for (int i=0; i<3; i++)
|
||||||
for (int j=0; j<3*N; j++) {
|
for (int j=0; j<3*N; j++) {
|
||||||
double sum = 0;
|
double sum = 0;
|
||||||
@ -1627,6 +1633,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
|
|||||||
sum3[i][j] = sum;
|
sum3[i][j] = sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory->destroy(sum2);
|
||||||
//dn2dx = norm2 * I3mn2n2T * sum3
|
//dn2dx = norm2 * I3mn2n2T * sum3
|
||||||
for (int i=0; i<3; i++)
|
for (int i=0; i<3; i++)
|
||||||
for (int j=0; j<3*N; j++) {
|
for (int j=0; j<3*N; j++) {
|
||||||
@ -1636,6 +1643,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
|
|||||||
dn2dx[i][j] = norm2*sum;
|
dn2dx[i][j] = norm2*sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory->destroy(sum3);
|
||||||
//dn3dx = norm3 * I3mn3n3T * cross
|
//dn3dx = norm3 * I3mn3n3T * cross
|
||||||
double I3mn3n3T[3][3]; //(I_3 - n3n3T)
|
double I3mn3n3T[3][3]; //(I_3 - n3n3T)
|
||||||
for (int i=0; i<3; i++) {
|
for (int i=0; i<3; i++) {
|
||||||
@ -1644,7 +1652,8 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
|
|||||||
I3mn3n3T[i][i] += 1.0;
|
I3mn3n3T[i][i] += 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
double cross[3][3*N];
|
double **cross;
|
||||||
|
memory->create(cross,3,3*N,"filter_corotate:cross");
|
||||||
|
|
||||||
for (int j=0; j<3*N; j++) {
|
for (int j=0; j<3*N; j++) {
|
||||||
cross[0][j] = dn1dx[1][j]*n2[2] -dn1dx[2][j]*n2[1] +
|
cross[0][j] = dn1dx[1][j]*n2[2] -dn1dx[2][j]*n2[1] +
|
||||||
@ -1663,6 +1672,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
|
|||||||
dn3dx[i][j] = norm3*sum;
|
dn3dx[i][j] = norm3*sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory->destroy(cross);
|
||||||
for (int l=0; l<N; l++)
|
for (int l=0; l<N; l++)
|
||||||
for (int i=0; i<3; i++)
|
for (int i=0; i<3; i++)
|
||||||
for (int j=0; j<3*N; j++)
|
for (int j=0; j<3*N; j++)
|
||||||
|
|||||||
@ -44,6 +44,7 @@ using namespace FixConst;
|
|||||||
|
|
||||||
enum{NOBIAS,BIAS};
|
enum{NOBIAS,BIAS};
|
||||||
enum{CONSTANT,EQUAL,ATOM};
|
enum{CONSTANT,EQUAL,ATOM};
|
||||||
|
|
||||||
//#define GLE_DEBUG 1
|
//#define GLE_DEBUG 1
|
||||||
|
|
||||||
#define MAXLINE 1024
|
#define MAXLINE 1024
|
||||||
@ -62,17 +63,16 @@ namespace GLE {
|
|||||||
//"stabilized" cholesky decomposition. does a LDL^t decomposition, then sets to zero the negative diagonal elements and gets MM^t
|
//"stabilized" cholesky decomposition. does a LDL^t decomposition, then sets to zero the negative diagonal elements and gets MM^t
|
||||||
void StabCholesky(int n, const double* MMt, double* M)
|
void StabCholesky(int n, const double* MMt, double* M)
|
||||||
{
|
{
|
||||||
double L[n*n], D[n];
|
double *L = new double[n*n];
|
||||||
|
double *D = new double[n];
|
||||||
|
|
||||||
int i,j,k;
|
int i,j,k;
|
||||||
for(i=0; i<n; ++i) D[i]=0.;
|
for (i=0; i<n; ++i) D[i]=0.0;
|
||||||
for(i=0; i<n*n; ++i) L[i]=0.;
|
for (i=0; i<n*n; ++i) L[i]=0.0;
|
||||||
|
|
||||||
for(i=0; i<n; ++i)
|
for (i=0; i<n; ++i) {
|
||||||
{
|
L[midx(n,i,i)]=1.0;
|
||||||
L[midx(n,i,i)]=1.;
|
for (j=0; j<i; j++) {
|
||||||
for (j=0; j<i; j++)
|
|
||||||
{
|
|
||||||
L[midx(n,i,j)]=MMt[midx(n,i,j)];
|
L[midx(n,i,j)]=MMt[midx(n,i,j)];
|
||||||
for (k=0; k<j; ++k) L[midx(n,i,j)]-=L[midx(n,i,k)]*L[midx(n,j,k)]*D[k];
|
for (k=0; k<j; ++k) L[midx(n,i,j)]-=L[midx(n,i,k)]*L[midx(n,j,k)]*D[k];
|
||||||
if (D[j]!=0.) L[midx(n,i,j)]/=D[j];
|
if (D[j]!=0.) L[midx(n,i,j)]/=D[j];
|
||||||
@ -82,15 +82,18 @@ void StabCholesky(int n, const double* MMt, double* M)
|
|||||||
for (k=0; k<i; ++k) D[i]-=L[midx(n,i,k)]*L[midx(n,i,k)]*D[k];
|
for (k=0; k<i; ++k) D[i]-=L[midx(n,i,k)]*L[midx(n,i,k)]*D[k];
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=0; i<n; ++i)
|
for (i=0; i<n; ++i) {
|
||||||
{
|
|
||||||
#ifdef GLE_DEBUG
|
#ifdef GLE_DEBUG
|
||||||
if (D[i]<0) fprintf(stderr,"GLE Cholesky: Negative diagonal term %le, has been set to zero.\n", D[i]);
|
if (D[i]<0) fprintf(stderr,"GLE Cholesky: Negative diagonal term %le, has been set to zero.\n", D[i]);
|
||||||
#endif
|
#endif
|
||||||
D[i]=(D[i]>0.?sqrt(D[i]):0.);
|
D[i]=(D[i]>0.0) ? sqrt(D[i]):0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=0; i<n; ++i) for (j=0; j<n; j++) M[midx(n,i,j)]=L[midx(n,i,j)]*D[j];
|
for (i=0; i<n; ++i)
|
||||||
|
for (j=0; j<n; j++) M[midx(n,i,j)]=L[midx(n,i,j)]*D[j];
|
||||||
|
|
||||||
|
delete[] D;
|
||||||
|
delete[] L;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyMult(int n, int m, int r, const double* A, const double* B, double* C, double cf=0.0)
|
void MyMult(int n, int m, int r, const double* A, const double* B, double* C, double cf=0.0)
|
||||||
@ -162,7 +165,9 @@ void MyPrint(int n, const double* A)
|
|||||||
//matrix exponential by scaling and squaring.
|
//matrix exponential by scaling and squaring.
|
||||||
void MatrixExp(int n, const double* M, double* EM, int j=8, int k=8)
|
void MatrixExp(int n, const double* M, double* EM, int j=8, int k=8)
|
||||||
{
|
{
|
||||||
double tc[j+1], SM[n*n], TMP[n*n];
|
double *tc = new double[j+1];
|
||||||
|
double *SM = new double[n*n];
|
||||||
|
double *TMP = new double[n*n];
|
||||||
double onetotwok=pow(0.5,1.0*k);
|
double onetotwok=pow(0.5,1.0*k);
|
||||||
|
|
||||||
|
|
||||||
@ -174,14 +179,18 @@ void MatrixExp(int n, const double* M, double* EM, int j=8, int k=8)
|
|||||||
for (int i=0; i<n; ++i) EM[midx(n,i,i)]=tc[j];
|
for (int i=0; i<n; ++i) EM[midx(n,i,i)]=tc[j];
|
||||||
|
|
||||||
//taylor exp of scaled matrix
|
//taylor exp of scaled matrix
|
||||||
for (int p=j-1; p>=0; p--)
|
for (int p=j-1; p>=0; p--) {
|
||||||
{
|
|
||||||
MyMult(n, n, n, SM, EM, TMP); for (int i=0; i<n*n; ++i) EM[i]=TMP[i];
|
MyMult(n, n, n, SM, EM, TMP); for (int i=0; i<n*n; ++i) EM[i]=TMP[i];
|
||||||
for (int i=0; i<n; ++i) EM[midx(n,i,i)]+=tc[p];
|
for (int i=0; i<n; ++i) EM[midx(n,i,i)]+=tc[p];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int p=0; p<k; p++)
|
for (int p=0; p<k; p++) {
|
||||||
{ MyMult(n, n, n, EM, EM, TMP); for (int i=0; i<n*n; ++i) EM[i]=TMP[i]; }
|
MyMult(n, n, n, EM, EM, TMP);
|
||||||
|
for (int i=0; i<n*n; ++i) EM[i]=TMP[i];
|
||||||
|
}
|
||||||
|
delete[] tc;
|
||||||
|
delete[] SM;
|
||||||
|
delete[] TMP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -428,7 +428,7 @@ void FixIPI::final_integrate()
|
|||||||
|
|
||||||
int nat=bsize/3;
|
int nat=bsize/3;
|
||||||
double **f= atom->f;
|
double **f= atom->f;
|
||||||
double lbuf[bsize];
|
double *lbuf = new double[bsize];
|
||||||
|
|
||||||
// reassembles the force vector from the local arrays
|
// reassembles the force vector from the local arrays
|
||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
@ -440,6 +440,7 @@ void FixIPI::final_integrate()
|
|||||||
lbuf[3*(atom->tag[i]-1)+2]=f[i][2]*forceconv;
|
lbuf[3*(atom->tag[i]-1)+2]=f[i][2]*forceconv;
|
||||||
}
|
}
|
||||||
MPI_Allreduce(lbuf,buffer,bsize,MPI_DOUBLE,MPI_SUM,world);
|
MPI_Allreduce(lbuf,buffer,bsize,MPI_DOUBLE,MPI_SUM,world);
|
||||||
|
delete[] lbuf;
|
||||||
|
|
||||||
for (int i = 0; i < 9; ++i) vir[i]=0.0;
|
for (int i = 0; i < 9; ++i) vir[i]=0.0;
|
||||||
|
|
||||||
|
|||||||
@ -539,7 +539,7 @@ double PairLJSFDipoleSF::single(int i, int j, int itype, int jtype, double rsq,
|
|||||||
double &fforce)
|
double &fforce)
|
||||||
{
|
{
|
||||||
double r2inv,r6inv;
|
double r2inv,r6inv;
|
||||||
double pdotp,pidotr,pjdotr,pre1,delx,dely,delz;
|
double pdotp,pidotr,pjdotr,delx,dely,delz;
|
||||||
double rinv, r3inv,r5inv, rcutlj2inv, rcutcoul2inv,rcutlj6inv;
|
double rinv, r3inv,r5inv, rcutlj2inv, rcutcoul2inv,rcutlj6inv;
|
||||||
double qtmp,xtmp,ytmp,ztmp,bfac,pqfac,qpfac, ecoul, evdwl;
|
double qtmp,xtmp,ytmp,ztmp,bfac,pqfac,qpfac, ecoul, evdwl;
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,16 @@ action () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# USER-PHONON uses the parallel FFT wrapper used in PPPM,
|
||||||
|
# so we must require the KSPACE package to be installed.
|
||||||
|
|
||||||
|
if (test $1 = 1) then
|
||||||
|
if (test ! -e ../fft3d_wrap.h) then
|
||||||
|
echo "Must install KSPACE package with USER-PHONON"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# list of files with optional dependcies
|
# list of files with optional dependcies
|
||||||
|
|
||||||
action fix_phonon.cpp fft3d_wrap.h
|
action fix_phonon.cpp fft3d_wrap.h
|
||||||
|
|||||||
@ -668,7 +668,8 @@ void FixPhonon::postprocess( )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// to get Phi = KT.G^-1; normalization of FFTW data is done here
|
// to get Phi = KT.G^-1; normalization of FFTW data is done here
|
||||||
double boltz = force->boltz, kbtsqrt[sysdim], TempAve = 0.;
|
double boltz = force->boltz, TempAve = 0.;
|
||||||
|
double *kbtsqrt = new double[sysdim];
|
||||||
double TempFac = inv_neval * inv_nTemp;
|
double TempFac = inv_neval * inv_nTemp;
|
||||||
double NormFac = TempFac * double(ntotal);
|
double NormFac = TempFac * double(ntotal);
|
||||||
|
|
||||||
@ -692,7 +693,7 @@ void FixPhonon::postprocess( )
|
|||||||
MPI_Gatherv(Phi_q[0],mynq*fft_dim2*2,MPI_DOUBLE,Phi_all[0],recvcnts,displs,MPI_DOUBLE,0,world);
|
MPI_Gatherv(Phi_q[0],mynq*fft_dim2*2,MPI_DOUBLE,Phi_all[0],recvcnts,displs,MPI_DOUBLE,0,world);
|
||||||
|
|
||||||
// to collect all basis info and averaged it on root
|
// to collect all basis info and averaged it on root
|
||||||
double basis_root[fft_dim];
|
double *basis_root = new double[fft_dim];
|
||||||
if (fft_dim > sysdim) MPI_Reduce(&basis[1][0], &basis_root[sysdim], fft_dim-sysdim, MPI_DOUBLE, MPI_SUM, 0, world);
|
if (fft_dim > sysdim) MPI_Reduce(&basis[1][0], &basis_root[sysdim], fft_dim-sysdim, MPI_DOUBLE, MPI_SUM, 0, world);
|
||||||
|
|
||||||
if (me == 0){ // output dynamic matrix by root
|
if (me == 0){ // output dynamic matrix by root
|
||||||
@ -772,7 +773,8 @@ void FixPhonon::postprocess( )
|
|||||||
}
|
}
|
||||||
fflush(flog);
|
fflush(flog);
|
||||||
}
|
}
|
||||||
|
delete[] kbtsqrt;
|
||||||
|
delete[] basis_root;
|
||||||
} // end of postprocess
|
} // end of postprocess
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
|
|||||||
@ -303,7 +303,7 @@ void PairQUIP::init_style()
|
|||||||
if (force->newton_pair != 1)
|
if (force->newton_pair != 1)
|
||||||
error->all(FLERR,"Pair style quip requires newton pair on");
|
error->all(FLERR,"Pair style quip requires newton pair on");
|
||||||
|
|
||||||
// Initialise neighbour list
|
// Initialise neighbor list
|
||||||
int irequest_full = neighbor->request(this);
|
int irequest_full = neighbor->request(this);
|
||||||
neighbor->requests[irequest_full]->id = 1;
|
neighbor->requests[irequest_full]->id = 1;
|
||||||
neighbor->requests[irequest_full]->half = 0;
|
neighbor->requests[irequest_full]->half = 0;
|
||||||
|
|||||||
@ -48,7 +48,7 @@ class FixSMDIntegrateUlsph : public Fix {
|
|||||||
private:
|
private:
|
||||||
class NeighList *list;
|
class NeighList *list;
|
||||||
protected:
|
protected:
|
||||||
double dtv,dtf, vlimit, vlimitsq;;
|
double dtv,dtf, vlimit, vlimitsq;
|
||||||
int mass_require;
|
int mass_require;
|
||||||
bool xsphFlag;
|
bool xsphFlag;
|
||||||
bool adjust_radius_flag;
|
bool adjust_radius_flag;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ namespace LAMMPS_NS {
|
|||||||
// forward declaration
|
// forward declaration
|
||||||
namespace UEF_utils {
|
namespace UEF_utils {
|
||||||
class UEFBox;
|
class UEFBox;
|
||||||
};
|
}
|
||||||
|
|
||||||
class FixNHUef : public FixNH {
|
class FixNHUef : public FixNH {
|
||||||
public:
|
public:
|
||||||
|
|||||||
@ -323,9 +323,13 @@ void CreateBonds::single_bond()
|
|||||||
|
|
||||||
// check that 2 atoms exist
|
// check that 2 atoms exist
|
||||||
|
|
||||||
|
const int nlocal = atom->nlocal;
|
||||||
|
const int idx1 = atom->map(batom1);
|
||||||
|
const int idx2 = atom->map(batom2);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (atom->map(batom1) >= 0) count++;
|
if ((idx1 >= 0) && (idx1 < nlocal)) count++;
|
||||||
if (atom->map(batom2) >= 0) count++;
|
if ((idx2 >= 0) && (idx2 < nlocal)) count++;
|
||||||
|
|
||||||
int allcount;
|
int allcount;
|
||||||
MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world);
|
MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world);
|
||||||
@ -338,7 +342,7 @@ void CreateBonds::single_bond()
|
|||||||
int **bond_type = atom->bond_type;
|
int **bond_type = atom->bond_type;
|
||||||
tagint **bond_atom = atom->bond_atom;
|
tagint **bond_atom = atom->bond_atom;
|
||||||
|
|
||||||
if ((m = atom->map(batom1)) >= 0) {
|
if ((m = idx1) >= 0) {
|
||||||
if (num_bond[m] == atom->bond_per_atom)
|
if (num_bond[m] == atom->bond_per_atom)
|
||||||
error->one(FLERR,"New bond exceeded bonds per atom in create_bonds");
|
error->one(FLERR,"New bond exceeded bonds per atom in create_bonds");
|
||||||
bond_type[m][num_bond[m]] = btype;
|
bond_type[m][num_bond[m]] = btype;
|
||||||
@ -349,7 +353,7 @@ void CreateBonds::single_bond()
|
|||||||
|
|
||||||
if (force->newton_bond) return;
|
if (force->newton_bond) return;
|
||||||
|
|
||||||
if ((m = atom->map(batom2)) >= 0) {
|
if ((m = idx2) >= 0) {
|
||||||
if (num_bond[m] == atom->bond_per_atom)
|
if (num_bond[m] == atom->bond_per_atom)
|
||||||
error->one(FLERR,"New bond exceeded bonds per atom in create_bonds");
|
error->one(FLERR,"New bond exceeded bonds per atom in create_bonds");
|
||||||
bond_type[m][num_bond[m]] = btype;
|
bond_type[m][num_bond[m]] = btype;
|
||||||
@ -366,10 +370,15 @@ void CreateBonds::single_angle()
|
|||||||
|
|
||||||
// check that 3 atoms exist
|
// check that 3 atoms exist
|
||||||
|
|
||||||
|
const int nlocal = atom->nlocal;
|
||||||
|
const int idx1 = atom->map(aatom1);
|
||||||
|
const int idx2 = atom->map(aatom2);
|
||||||
|
const int idx3 = atom->map(aatom3);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (atom->map(aatom1) >= 0) count++;
|
if ((idx1 >= 0) && (idx1 < nlocal)) count++;
|
||||||
if (atom->map(aatom2) >= 0) count++;
|
if ((idx2 >= 0) && (idx2 < nlocal)) count++;
|
||||||
if (atom->map(aatom3) >= 0) count++;
|
if ((idx3 >= 0) && (idx3 < nlocal)) count++;
|
||||||
|
|
||||||
int allcount;
|
int allcount;
|
||||||
MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world);
|
MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world);
|
||||||
@ -384,7 +393,7 @@ void CreateBonds::single_angle()
|
|||||||
tagint **angle_atom2 = atom->angle_atom2;
|
tagint **angle_atom2 = atom->angle_atom2;
|
||||||
tagint **angle_atom3 = atom->angle_atom3;
|
tagint **angle_atom3 = atom->angle_atom3;
|
||||||
|
|
||||||
if ((m = atom->map(aatom2)) >= 0) {
|
if ((m = idx2) >= 0) {
|
||||||
if (num_angle[m] == atom->angle_per_atom)
|
if (num_angle[m] == atom->angle_per_atom)
|
||||||
error->one(FLERR,"New angle exceeded angles per atom in create_bonds");
|
error->one(FLERR,"New angle exceeded angles per atom in create_bonds");
|
||||||
angle_type[m][num_angle[m]] = atype;
|
angle_type[m][num_angle[m]] = atype;
|
||||||
@ -397,7 +406,7 @@ void CreateBonds::single_angle()
|
|||||||
|
|
||||||
if (force->newton_bond) return;
|
if (force->newton_bond) return;
|
||||||
|
|
||||||
if ((m = atom->map(aatom1)) >= 0) {
|
if ((m = idx1) >= 0) {
|
||||||
if (num_angle[m] == atom->angle_per_atom)
|
if (num_angle[m] == atom->angle_per_atom)
|
||||||
error->one(FLERR,"New angle exceeded angles per atom in create_bonds");
|
error->one(FLERR,"New angle exceeded angles per atom in create_bonds");
|
||||||
angle_type[m][num_angle[m]] = atype;
|
angle_type[m][num_angle[m]] = atype;
|
||||||
@ -407,7 +416,7 @@ void CreateBonds::single_angle()
|
|||||||
num_angle[m]++;
|
num_angle[m]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m = atom->map(aatom3)) >= 0) {
|
if ((m = idx3) >= 0) {
|
||||||
if (num_angle[m] == atom->angle_per_atom)
|
if (num_angle[m] == atom->angle_per_atom)
|
||||||
error->one(FLERR,"New angle exceeded angles per atom in create_bonds");
|
error->one(FLERR,"New angle exceeded angles per atom in create_bonds");
|
||||||
angle_type[m][num_angle[m]] = atype;
|
angle_type[m][num_angle[m]] = atype;
|
||||||
@ -426,11 +435,17 @@ void CreateBonds::single_dihedral()
|
|||||||
|
|
||||||
// check that 4 atoms exist
|
// check that 4 atoms exist
|
||||||
|
|
||||||
|
const int nlocal = atom->nlocal;
|
||||||
|
const int idx1 = atom->map(datom1);
|
||||||
|
const int idx2 = atom->map(datom2);
|
||||||
|
const int idx3 = atom->map(datom3);
|
||||||
|
const int idx4 = atom->map(datom4);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (atom->map(datom1) >= 0) count++;
|
if ((idx1 >= 0) && (idx1 < nlocal)) count++;
|
||||||
if (atom->map(datom2) >= 0) count++;
|
if ((idx2 >= 0) && (idx2 < nlocal)) count++;
|
||||||
if (atom->map(datom3) >= 0) count++;
|
if ((idx3 >= 0) && (idx3 < nlocal)) count++;
|
||||||
if (atom->map(datom4) >= 0) count++;
|
if ((idx4 >= 0) && (idx4 < nlocal)) count++;
|
||||||
|
|
||||||
int allcount;
|
int allcount;
|
||||||
MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world);
|
MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world);
|
||||||
@ -446,7 +461,7 @@ void CreateBonds::single_dihedral()
|
|||||||
tagint **dihedral_atom3 = atom->dihedral_atom3;
|
tagint **dihedral_atom3 = atom->dihedral_atom3;
|
||||||
tagint **dihedral_atom4 = atom->dihedral_atom4;
|
tagint **dihedral_atom4 = atom->dihedral_atom4;
|
||||||
|
|
||||||
if ((m = atom->map(datom2)) >= 0) {
|
if ((m = idx2) >= 0) {
|
||||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||||
error->one(FLERR,
|
error->one(FLERR,
|
||||||
"New dihedral exceeded dihedrals per atom in create_bonds");
|
"New dihedral exceeded dihedrals per atom in create_bonds");
|
||||||
@ -461,7 +476,7 @@ void CreateBonds::single_dihedral()
|
|||||||
|
|
||||||
if (force->newton_bond) return;
|
if (force->newton_bond) return;
|
||||||
|
|
||||||
if ((m = atom->map(datom1)) >= 0) {
|
if ((m = idx1) >= 0) {
|
||||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||||
error->one(FLERR,
|
error->one(FLERR,
|
||||||
"New dihedral exceeded dihedrals per atom in create_bonds");
|
"New dihedral exceeded dihedrals per atom in create_bonds");
|
||||||
@ -473,7 +488,7 @@ void CreateBonds::single_dihedral()
|
|||||||
num_dihedral[m]++;
|
num_dihedral[m]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m = atom->map(datom3)) >= 0) {
|
if ((m = idx3) >= 0) {
|
||||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||||
error->one(FLERR,
|
error->one(FLERR,
|
||||||
"New dihedral exceeded dihedrals per atom in create_bonds");
|
"New dihedral exceeded dihedrals per atom in create_bonds");
|
||||||
@ -485,7 +500,7 @@ void CreateBonds::single_dihedral()
|
|||||||
num_dihedral[m]++;
|
num_dihedral[m]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m = atom->map(datom4)) >= 0) {
|
if ((m = idx4) >= 0) {
|
||||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||||
error->one(FLERR,
|
error->one(FLERR,
|
||||||
"New dihedral exceeded dihedrals per atom in create_bonds");
|
"New dihedral exceeded dihedrals per atom in create_bonds");
|
||||||
|
|||||||
@ -45,7 +45,7 @@ enum{BOND,ANGLE,DIHEDRAL};
|
|||||||
|
|
||||||
FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) :
|
FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) :
|
||||||
Fix(lmp, narg, arg),
|
Fix(lmp, narg, arg),
|
||||||
rstyle(NULL), ids(NULL), kstart(NULL), kstop(NULL), target(NULL),
|
rstyle(NULL), mult(NULL), ids(NULL), kstart(NULL), kstop(NULL), target(NULL),
|
||||||
cos_target(NULL), sin_target(NULL)
|
cos_target(NULL), sin_target(NULL)
|
||||||
{
|
{
|
||||||
if (narg < 4) error->all(FLERR,"Illegal fix restrain command");
|
if (narg < 4) error->all(FLERR,"Illegal fix restrain command");
|
||||||
@ -65,6 +65,7 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
if (nrestrain == maxrestrain) {
|
if (nrestrain == maxrestrain) {
|
||||||
maxrestrain += DELTA;
|
maxrestrain += DELTA;
|
||||||
memory->grow(rstyle,maxrestrain,"restrain:rstyle");
|
memory->grow(rstyle,maxrestrain,"restrain:rstyle");
|
||||||
|
memory->grow(mult,maxrestrain,"restrain:mult");
|
||||||
memory->grow(ids,maxrestrain,4,"restrain:ids");
|
memory->grow(ids,maxrestrain,4,"restrain:ids");
|
||||||
memory->grow(kstart,maxrestrain,"restrain:kstart");
|
memory->grow(kstart,maxrestrain,"restrain:kstart");
|
||||||
memory->grow(kstop,maxrestrain,"restrain:kstop");
|
memory->grow(kstop,maxrestrain,"restrain:kstop");
|
||||||
@ -96,6 +97,7 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
} else if (strcmp(arg[iarg],"dihedral") == 0) {
|
} else if (strcmp(arg[iarg],"dihedral") == 0) {
|
||||||
if (iarg+8 > narg) error->all(FLERR,"Illegal fix restrain command");
|
if (iarg+8 > narg) error->all(FLERR,"Illegal fix restrain command");
|
||||||
rstyle[nrestrain] = DIHEDRAL;
|
rstyle[nrestrain] = DIHEDRAL;
|
||||||
|
mult[nrestrain] = 1;
|
||||||
ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]);
|
ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]);
|
||||||
ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]);
|
ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]);
|
||||||
ids[nrestrain][2] = force->inumeric(FLERR,arg[iarg+3]);
|
ids[nrestrain][2] = force->inumeric(FLERR,arg[iarg+3]);
|
||||||
@ -107,6 +109,13 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
cos_target[nrestrain] = cos(target[nrestrain]);
|
cos_target[nrestrain] = cos(target[nrestrain]);
|
||||||
sin_target[nrestrain] = sin(target[nrestrain]);
|
sin_target[nrestrain] = sin(target[nrestrain]);
|
||||||
iarg += 8;
|
iarg += 8;
|
||||||
|
if ((iarg < narg) && (strcmp("mult",arg[iarg]) == 0)) {
|
||||||
|
if (iarg+1 > narg) error->all(FLERR,"Illegal fix restrain command");
|
||||||
|
mult[nrestrain] = force->inumeric(FLERR,arg[iarg+1]);
|
||||||
|
if (mult[nrestrain] < 0)
|
||||||
|
error->all(FLERR,"Illegal fix restrain command");
|
||||||
|
iarg += 2;
|
||||||
|
}
|
||||||
} else error->all(FLERR,"Illegal fix restrain command");
|
} else error->all(FLERR,"Illegal fix restrain command");
|
||||||
|
|
||||||
nrestrain++;
|
nrestrain++;
|
||||||
@ -123,6 +132,7 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
FixRestrain::~FixRestrain()
|
FixRestrain::~FixRestrain()
|
||||||
{
|
{
|
||||||
memory->destroy(rstyle);
|
memory->destroy(rstyle);
|
||||||
|
memory->destroy(mult);
|
||||||
memory->destroy(ids);
|
memory->destroy(ids);
|
||||||
memory->destroy(kstart);
|
memory->destroy(kstart);
|
||||||
memory->destroy(kstop);
|
memory->destroy(kstop);
|
||||||
@ -410,7 +420,7 @@ void FixRestrain::restrain_angle(int m)
|
|||||||
|
|
||||||
void FixRestrain::restrain_dihedral(int m)
|
void FixRestrain::restrain_dihedral(int m)
|
||||||
{
|
{
|
||||||
int i1,i2,i3,i4,i,mult;
|
int i1,i2,i3,i4,i;
|
||||||
double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm;
|
double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm;
|
||||||
double f1[3],f2[3],f3[3],f4[3];
|
double f1[3],f2[3],f3[3],f4[3];
|
||||||
double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv;
|
double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv;
|
||||||
@ -534,11 +544,10 @@ void FixRestrain::restrain_dihedral(int m)
|
|||||||
if (c > 1.0) c = 1.0;
|
if (c > 1.0) c = 1.0;
|
||||||
if (c < -1.0) c = -1.0;
|
if (c < -1.0) c = -1.0;
|
||||||
|
|
||||||
mult = 1; // multiplicity
|
|
||||||
p = 1.0;
|
p = 1.0;
|
||||||
df1 = 0.0;
|
df1 = 0.0;
|
||||||
|
|
||||||
for (i = 0; i < mult; i++) {
|
for (i = 0; i < mult[m]; i++) {
|
||||||
ddf1 = p*c - df1*s;
|
ddf1 = p*c - df1*s;
|
||||||
df1 = p*s + df1*c;
|
df1 = p*s + df1*c;
|
||||||
p = ddf1;
|
p = ddf1;
|
||||||
@ -546,7 +555,7 @@ void FixRestrain::restrain_dihedral(int m)
|
|||||||
|
|
||||||
p = p*cos_target[m] + df1*sin_target[m];
|
p = p*cos_target[m] + df1*sin_target[m];
|
||||||
df1 = df1*cos_target[m] - ddf1*sin_target[m];
|
df1 = df1*cos_target[m] - ddf1*sin_target[m];
|
||||||
df1 *= -mult;
|
df1 *= -mult[m];
|
||||||
p += 1.0;
|
p += 1.0;
|
||||||
|
|
||||||
energy += k * p;
|
energy += k * p;
|
||||||
|
|||||||
@ -41,6 +41,7 @@ class FixRestrain : public Fix {
|
|||||||
int ilevel_respa;
|
int ilevel_respa;
|
||||||
int nrestrain,maxrestrain;
|
int nrestrain,maxrestrain;
|
||||||
int *rstyle;
|
int *rstyle;
|
||||||
|
int *mult;
|
||||||
int **ids;
|
int **ids;
|
||||||
double *kstart,*kstop,*target;
|
double *kstart,*kstop,*target;
|
||||||
double *cos_target,*sin_target;
|
double *cos_target,*sin_target;
|
||||||
|
|||||||
@ -1065,7 +1065,7 @@ void Image::write_PNG(FILE *fp)
|
|||||||
png_set_text(png_ptr,info_ptr,text_ptr,1);
|
png_set_text(png_ptr,info_ptr,text_ptr,1);
|
||||||
png_write_info(png_ptr,info_ptr);
|
png_write_info(png_ptr,info_ptr);
|
||||||
|
|
||||||
png_bytep row_pointers[height];
|
png_bytep *row_pointers = new png_bytep[height];
|
||||||
for (int i=0; i < height; ++i)
|
for (int i=0; i < height; ++i)
|
||||||
row_pointers[i] = (png_bytep) &writeBuffer[(height-i-1)*3*width];
|
row_pointers[i] = (png_bytep) &writeBuffer[(height-i-1)*3*width];
|
||||||
|
|
||||||
@ -1073,6 +1073,7 @@ void Image::write_PNG(FILE *fp)
|
|||||||
png_write_end(png_ptr, info_ptr);
|
png_write_end(png_ptr, info_ptr);
|
||||||
|
|
||||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||||
|
delete[] row_pointers;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -933,7 +933,7 @@ void lammps_gather_atoms_concat(void *ptr, char *name,
|
|||||||
|
|
||||||
BEGIN_CAPTURE
|
BEGIN_CAPTURE
|
||||||
{
|
{
|
||||||
int i,j,offset;
|
int i,offset;
|
||||||
|
|
||||||
// error if tags are not defined
|
// error if tags are not defined
|
||||||
// NOTE: test that name = image or ids is not a 64-bit int in code?
|
// NOTE: test that name = image or ids is not a 64-bit int in code?
|
||||||
@ -975,7 +975,6 @@ void lammps_gather_atoms_concat(void *ptr, char *name,
|
|||||||
lmp->memory->create(copy,count*natoms,"lib/gather:copy");
|
lmp->memory->create(copy,count*natoms,"lib/gather:copy");
|
||||||
for (i = 0; i < count*natoms; i++) copy[i] = 0;
|
for (i = 0; i < count*natoms; i++) copy[i] = 0;
|
||||||
|
|
||||||
tagint *tag = lmp->atom->tag;
|
|
||||||
int nlocal = lmp->atom->nlocal;
|
int nlocal = lmp->atom->nlocal;
|
||||||
|
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
@ -1117,7 +1116,6 @@ void lammps_gather_atoms_subset(void *ptr, char *name,
|
|||||||
lmp->memory->create(copy,count*ndata,"lib/gather:copy");
|
lmp->memory->create(copy,count*ndata,"lib/gather:copy");
|
||||||
for (i = 0; i < count*ndata; i++) copy[i] = 0;
|
for (i = 0; i < count*ndata; i++) copy[i] = 0;
|
||||||
|
|
||||||
tagint *tag = lmp->atom->tag;
|
|
||||||
int nlocal = lmp->atom->nlocal;
|
int nlocal = lmp->atom->nlocal;
|
||||||
|
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
@ -1163,7 +1161,6 @@ void lammps_gather_atoms_subset(void *ptr, char *name,
|
|||||||
lmp->memory->create(copy,count*ndata,"lib/gather:copy");
|
lmp->memory->create(copy,count*ndata,"lib/gather:copy");
|
||||||
for (i = 0; i < count*ndata; i++) copy[i] = 0.0;
|
for (i = 0; i < count*ndata; i++) copy[i] = 0.0;
|
||||||
|
|
||||||
tagint *tag = lmp->atom->tag;
|
|
||||||
int nlocal = lmp->atom->nlocal;
|
int nlocal = lmp->atom->nlocal;
|
||||||
|
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
|
|||||||
@ -1111,7 +1111,7 @@ void Molecule::special_generate()
|
|||||||
{
|
{
|
||||||
int newton_bond = force->newton_bond;
|
int newton_bond = force->newton_bond;
|
||||||
tagint atom1,atom2;
|
tagint atom1,atom2;
|
||||||
int count[natoms];
|
int *count = new int[natoms];
|
||||||
|
|
||||||
// temporary array for special atoms
|
// temporary array for special atoms
|
||||||
|
|
||||||
@ -1197,6 +1197,7 @@ void Molecule::special_generate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
delete[] count;
|
||||||
|
|
||||||
maxspecial = 0;
|
maxspecial = 0;
|
||||||
for (int i = 0; i < natoms; i++)
|
for (int i = 0; i < natoms; i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user