Merge branch 'master' into user-cgdna

This commit is contained in:
Oliver Henrich
2018-05-07 18:19:24 +01:00
79 changed files with 8561 additions and 935 deletions

36
.github/CODEOWNERS vendored
View File

@ -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

View File

@ -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

View File

@ -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:]

View File

@ -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
View 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).

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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},

View 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.

View 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

File diff suppressed because it is too large Load Diff

View 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

View 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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 \

View File

@ -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;
} }

View File

@ -2,4 +2,4 @@
/filelink /filelink
/liblink /liblink
/includelink /includelink
/LATTE-master /LATTE-*

View 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
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)
{ {

View File

@ -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;
} }
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------

View File

@ -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;

View File

@ -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) {

View File

@ -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

View File

@ -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)'

View File

@ -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();

View File

@ -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;

View File

@ -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
View 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.

View 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);
}

View 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

File diff suppressed because it is too large Load Diff

302
src/USER-BOCS/fix_bocs.h Normal file
View 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.
*/

View File

@ -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;

View File

@ -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];

View File

@ -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;

View File

@ -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];

View File

@ -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;

View File

@ -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];

View File

@ -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];

View File

@ -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";

View File

@ -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>;

View File

@ -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

View File

@ -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

View File

@ -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) {

View File

@ -255,5 +255,5 @@ static inline double fdiv_zero(const double n, const double d) {
return n / d; return n / d;
} }
}; }
#endif #endif

View File

@ -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";
;
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */

View File

@ -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");
} }

View File

@ -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;
} }
} }

View File

@ -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;

View File

@ -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] +

View File

@ -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);
@ -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;
} }
} }

View File

@ -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();

View File

@ -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++)

View File

@ -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;
} }
} }

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------

View File

@ -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;

View File

@ -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;

View File

@ -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:

View File

@ -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");

View File

@ -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;

View File

@ -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;

View File

@ -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
} }

View File

@ -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) {

View File

@ -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++)