Merge pull request #10 from lammps/master

rebase
This commit is contained in:
Jacob Gissinger 2018-05-05 14:22:23 -06:00 committed by GitHub
commit 2d321a602c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1373 changed files with 10965 additions and 3802 deletions

View File

@ -684,6 +684,7 @@ package"_Section_start.html#start_3.
"addtorque"_fix_addtorque.html,
"atc"_fix_atc.html,
"ave/correlate/long"_fix_ave_correlate_long.html,
"bond/react"_fix_bond_react.html,
"colvars"_fix_colvars.html,
"dpd/energy (k)"_fix_dpd_energy.html,
"drude"_fix_drude.html,

View File

@ -15,7 +15,7 @@ compute ID group-ID displace/atom :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
displace/atom = style name of this compute command :l
zero or more keyword/arg pairs may be appended :l
keyword = {refresh} :
keyword = {refresh} :l
{replace} arg = name of per-atom variable :pre
:ule

View File

@ -161,9 +161,9 @@ function.
The keyword {bzeroflag} determines whether or not {B0}, the bispectrum
components of an atom with no neighbors, are subtracted from
the calculated bispectrum components. This optional keyword is only
available for compute {sna/atom}, as {snad/atom} and {snav/atom}
are unaffected by the removal of constant terms.
the calculated bispectrum components. This optional keyword
normally only affects compute {sna/atom}. However, when
{quadraticflag} is on, it also affects {snad/atom} and {snav/atom}.
The keyword {quadraticflag} determines whether or not the
quadratic analogs to the bispectrum quantities are generated.
@ -230,13 +230,18 @@ are 30, 90, and 180, respectively. With {quadratic} value=1,
the numbers of columns are 930, 2790, and 5580, respectively.
If the {quadratic} keyword value is set to 1, then additional
columns are appended to each per-atom array, corresponding to
columns are generated, corresponding to
the products of all distinct pairs of bispectrum components. If the
number of bispectrum components is {K}, then the number of distinct pairs
is {K}({K}+1)/2. These are output in subblocks of {K}({K}+1)/2 columns, using the same
ordering of sub-blocks as was used for the bispectrum
components. Within each sub-block, the ordering is upper-triangular,
(1,1),(1,2)...(1,{K}),(2,1)...({K}-1,{K}-1),({K}-1,{K}),({K},{K})
is {K}({K}+1)/2.
For compute {sna/atom} these columns are appended to existing {K} columns.
The ordering of quadratic terms is upper-triangular,
(1,1),(1,2)...(1,{K}),(2,1)...({K}-1,{K}-1),({K}-1,{K}),({K},{K}).
For computes {snad/atom} and {snav/atom} each set of {K}({K}+1)/2
additional columns is inserted directly after each of sub-block
of linear terms i.e. linear and quadratic terms are contiguous.
So the nesting order from inside to outside is bispectrum component,
linear then quadratic, vector/tensor component, type.
These values can be accessed by any command that uses per-atom values
from a compute as input. See "Section

356
doc/src/fix_bond_react.txt Normal file
View File

@ -0,0 +1,356 @@
"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 bond/react command :h3
[Syntax:]
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 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 ...
... :pre
ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l
bond/react = style name of this fix command :l
zero or more common keyword/value pairs may be appended directly after 'bond/react' :l
these apply to all reaction specifications (below) :l
common_keyword = {stabilization}
{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')
{xmax} value = distance
distance = xmax value that is used by an internally created "nve/limit"_nve_limit.html integrator
react = mandatory argument indicating new reaction specification
react-ID = user-assigned name for the reaction
react-group-ID = only atoms in this group are available for the reaction
Nevery = attempt reaction every this many steps :l
Rmin = bonding pair atoms separated by less than Rmin can initiate reaction (distance units) :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
map_file = name of file specifying corresponding atomIDs in the pre- and post-reacted templates :l
zero or more individual keyword/value pairs may be appended to each react argument :l
individual_keyword = {prob} or {stabilize_steps} :l
{prob} values = fraction seed
fraction = initiate reaction with this probability if otherwise eligible
seed = random number seed (positive integer)
{stabilize_steps} value = timesteps
timesteps = number of timesteps to apply internally created nve/limit.html :pre
:ule
[Examples:]
molecule mol1 pre_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
molecule mol1 pre_reacted_rxn1.txt
molecule mol2 post_reacted_rxn1.txt
molecule mol3 pre_reacted_rxn2.txt
molecule mol4 post_reacted_rxn2.txt
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 myrxn2 all 1 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
[Description:]
Initiate complex covalent bonding (topology) changes. These topology
changes will be referred to as "reactions" throughout this
documentation. Topology changes are defined in pre- and post-reaction
molecule templates and can include creation and deletion of bonds,
angles, dihedrals, impropers, bond-types, angle-types, dihedral-types,
atom-types, or atomic charges.
Fix bond/react does not use quantum mechanical (eg. fix qmmm) or
pairwise bond-order potential (eg. Tersoff or AIREBO) methods to
determine bonding changes a priori. Rather, it uses a distance-based
probabilistic criteria to effect predetermined topology changes in
simulations using standard force fields.
This fix was created to facilitate the dynamic creation of polymeric,
amorphous or highly-crosslinked systems. A suggested workflow for
using this fix is: 1) identify a reaction to be simulated 2) build a
molecule template of the reaction site before the reaction has
occurred 3) build a molecule template of the reaction site after the
reaction has occurred 4) create a map that relates the
template-atom-IDs of each atom between pre- and post-reaction molecule
templates 5) fill a simulation box with molecules and run a simulation
with fix/bond react.
Only one 'fix bond/react' command can be used at a time. Multiple
reactions can be simultaneously applied by specifying multiple 'react'
arguments to a single 'fix bond/react' command. This syntax is
necessary because the 'common keywords' are applied to all reactions.
The {stabilization} keyword enables reaction site stabilization.
Reaction site stabilization is performed by including reacting atoms
in an internally created fix "nve/limit"_fix_nve_limit.html time
integrator for a set number of timesteps given by the
{stabilize_steps} keyword. While reacting atoms are being time
integrated by the internal nve/limit, they are prevented from being
involved in any new reactions. The {xmax} value keyword should
typically be set to the maximum distance that non-reacting atoms move
during the simulation.
The group-ID set using the {stabilization} keyword should be a
previously unused group-ID. The fix bond/react command creates a
"dynamic group"_group.html of this name that excludes reacting atoms.
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
to place the time integration command after the fix bond/react command
due to the internal dynamic grouping performed by fix bond/react.
The following comments pertain to each 'react' argument:
A check for possible new reaction sites is performed every Nevery
timesteps.
Two conditions must be met for a reaction to occur. First a bonding
atom pair must be identified. Second, the topology surrounding the
bonding atom pair must match the topology of the pre-reaction
template. If both these conditions are met, the reaction site is
modified to match the post-reaction template.
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
typei and typej must be within a distance Rmin of each other. The atom
types typei and typej are specified in the pre- and post-reaction
templates. The distance calculation uses the pair neighbor list,
therefore bonded neighbor exclusions may prevent a reaction between
1st, 2nd or 3rd bonded neighbor atoms. If multiple bonding atom pairs
are identified for an atom, the closest bonding atom partner is set as
its "nearest" bonding partner. Then, if both an atomi and atomj have
each other as their nearest bonding partners, these two atoms are
identified as the bonding atom pair of the reaction site. Once this
unique bonding atom pair is identified for each reaction, there could
two or more reactions that involve a given atom on the same timestep.
If this is the case, only one such reaction is permitted to occur.
This reaction is chosen randomly from all potential reactions. This
capability allows e.g. for different reaction pathways to proceed from
identical reaction sites with user-specified probabilities.
The pre-reacted molecule template is specified by a molecule command.
This molecule template file contains a sample reaction site and its
surrounding topology. As described below, the bonding atom pairs of
the pre-reacted template are specified by atom ID in the map file. The
pre-reacted molecule template should contain as few atoms as possible
while still completely describing the topology of all atoms affected
by the reaction. For example, if the force field contains dihedrals,
the pre-reacted template should contain any atom within three bonds of
reacting atoms.
Some atoms in the pre-reacted template that are not reacting may have
missing topology with respect to the simulation. For example, the
pre-reacted template may contain an atom that would connect to the
rest of a long polymer chain. These are referred to as edge atoms, and
are also specified in the map file.
Note that some care must be taken when a building a molecule template
for a given simulation. All atom types in the pre-reacted template
must be the same as those of a potential reaction site in the
simulation. A detailed discussion of matching molecule template atom
types with the simulation is provided on the "molecule"_molecule.html
command page.
The post-reacted molecule template contains a sample of the reaction
site and its surrounding topology after the reaction has occurred. It
must contain the same number of atoms as the pre-reacted template. A
one-to-one correspondence between the atom IDs in the pre- and
post-reacted templates is specified in the map file as described
below. Note that during a reaction, an atom, bond, etc. type may
change to one that was previously not present in the simulation. These
new types must also be defined during the setup of a given simulation.
A discussion of correctly handling this is also provided on the
"molecule"_molecule.html command page.
The map file is a text document with the following format:
Format of the map file
A map file has a header and a body. The header appears first. The
first line of the header is always skipped; it typically contains a
description of the file. Lines can have a trailing comment starting
with '#' that is ignored. If the line is blank (only whitespace after
comment is deleted), it is skipped. If the line contains a header
keyword, the corresponding value(s) is read from the line. If it
doesn't contain a header keyword, the line begins the body of the
file.
The header contains one mandatory keyword and one optional keyword.
The mandatory keyword is 'equivalences' and the optional keyword is
'edgeIDs.' These specify the number of atoms in the pre- and
post-reacted templates and the number of edge atoms in pre-reacted
template, respectively.
The body contains two mandatory sections and one optional section. The
first section begins with the keyword 'BondingIDs' and lists the atom
IDs of the bonding atom pair in the pre-reacted molecule template. The
second mandatory section begins with the keyword 'Equivalences' and
lists a one-to-one correspondence between atom IDs of the pre- and
post-reacted templates. The optional section begins with the keyword
'EdgeIDs' and list the atom IDs of edge atoms in the pre-reacted
molecule template.
Format of the header of the map file
These are the recognized header keywords. Header lines can come in any
order. The value(s) are read from the beginning of the line. Thus the
keyword 'equivalences' should be in a line like "25 equivalences."
equivalences = # of atoms in the pre- and post-reacted molecule
templates edgeIDs = # of edge atoms in the pre-reacted molecule template :pre
The edgeIDs keyword is optional.
Format of the body of the map file
These are the section keywords for the body of the file.
BondingIDs, EdgeIDs = list of atom IDs of bonding and edge atoms in
the pre-reacted molecule template
Equivalences = a two column list where the first column is an atom ID
of the pre-reacted molecule template, and the second column is the
corresponding atom ID of the post-reacted molecule template
The bondingIDs section will always contain two atom IDs, corresponding
to the bonding atom pairs of the pre-reacted map file. The
Equivalences section will contain as many rows as there are atoms in
the pre- and post-reacted molecule templates. The edgeIDs section is
optional, but would contain an atom ID for each edge atom in the
pre-reacted molecule template.
A sample map file is given below:
:line
# This is a map file :pre
2 edgeIDs
7 equivalences :pre
BondingIDs :pre
3 5 :pre
EdgeIDs :pre
1 7 :pre
Equivalences :pre
1 1
2 2
3 3
4 4
5 5
6 6
7 7 :pre
:line
Once a reaction site has been successfully identified, data structures
within LAMMPS that store bond topology are updated to reflect the
post-reacted molecule template. All force fields with fixed bonds,
angles, dihedrals or impropers are supported.
A few capabilities to note: 1) You may specify as many 'react'
arguments as desired. For example, you could break down a complicated
reaction mechanism into several reaction steps, each defined by its
own 'react' argument. 2) While typically a bond is formed between the
bonding atom pairs specified in the pre-reacted molecule template,
this is not required.
The optional keywords deal with the probability of a given reaction
occurring as well as the stable equilibration of each reaction site as
it occurs.
The {prob} keyword can affect whether an eligible reaction actually
occurs. The fraction setting must be a value between 0.0 and 1.0. A
uniform random number between 0.0 and 1.0 is generated and the
eligible reaction only occurs if the random number is less than the
fraction.
The {stabilize_steps} keyword allows for the specification of how many
timesteps a reaction site is stabilized before being returned to the
overall system thermostat.
In order to produce the most physical behavior, this 'reaction site
equilibration time' should be tuned to be as small as possible while
retaining stability for a given system or reaction step. After a
limited number of case studies, this number has been set to a default
of 60 timesteps. Ideally, it should be individually tuned for each fix
reaction step. Note that in some situations, decreasing rather than
increasing this parameter will result in an increase in stability.
A few other considerations:
It may be beneficial to ensure reacting atoms are at a certain
temperature before being released to the overall thermostat. For this,
you can use the internally-created dynamic group named
"bond_react_MASTER_group." For example, adding the following command
would thermostat the group of all atoms currently involved in a
reaction:
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
will apply to all reaction steps.
Computationally, each timestep this fix operates, it loops over
neighbor lists and computes distances between pairs of atoms in the
list. It also communicates between neighboring processors to
coordinate which bonds are created. All of these operations increase
the cost of a timestep. Thus you should be cautious about invoking
this fix too frequently.
You can dump out snapshots of the current bond topology via the dump
local command.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes one statistic for each 'react' argument that it
stores in a global vector, of length 'number of react arguments', that
can be accessed by various "output
commands"_Section_howto.html#howto_15. The vector values calculated by
this fix are "intensive".
These is 1 quantity for each react argument:
(1) cumulative # of reactions occurred :ul
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix is part of the USER-MISC 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 commands:]
"fix bond/create"_fix_bond_create.html, "fix
bond/break"_fix_bond_break.html, "fix bond/swap"_fix_bond_swap.html,
"dump local"_dump.html, "special_bonds"_special_bonds.html
[Default:]
The option defaults are stabilization = no, stabilize_steps = 60
:line
:link(Gissinger) [(Gissinger)] Gissinger, Jensen and Wise, Polymer,
128, 211 (2017).

View File

@ -34,6 +34,8 @@ written to {filename} on timesteps that are multiples of {Nevery},
including timestep 0. For time-averaged chemical species analysis,
please see the "fix reaxc/c/species"_fix_reaxc_species.html command.
The specified group-ID is ignored by this fix.
The format of the output file should be reasonably self-explanatory.
The meaning of the column header abbreviations is as follows:

View File

@ -23,6 +23,7 @@ Fixes :h1
fix_bond_break
fix_bond_create
fix_bond_swap
fix_bond_react
fix_box_relax
fix_cmap
fix_colvars

View File

@ -137,6 +137,7 @@ fix_aveforce.html
fix_balance.html
fix_bond_break.html
fix_bond_create.html
fix_bond_react.html
fix_bond_swap.html
fix_box_relax.html
fix_cmap.html

View File

@ -0,0 +1,52 @@
# 35,000 atom nylon melt example
units real
boundary p p p
atom_style full
kspace_style pppm 1.0e-4
pair_style lj/class2/coul/long 8.5
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
read_data large_nylon_melt.data.gz
velocity all create 800.0 4928459 dist gaussian
molecule mol1 rxn1_stp1_unreacted.data_template
molecule mol2 rxn1_stp1_reacted.data_template
molecule mol3 rxn1_stp2_unreacted.data_template
molecule mol4 rxn1_stp2_reacted.data_template
thermo 50
# 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
# stable at 800K
fix 1 statted_grp nvt temp 800 800 100
# in order to customize behavior of reacting atoms,
# you can use the internally created 'bond_react_MASTER_group', like so:
# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1
thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts
# restart 100 restart1 restart2
run 200
# write_restart restart_longrun
# write_data restart_longrun.data

View File

@ -0,0 +1,170 @@
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
# 35,000 atom nylon melt example
units real
boundary p p p
atom_style full
kspace_style pppm 1.0e-4
pair_style lj/class2/coul/long 8.5
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
read_data large_nylon_melt.data.gz
orthogonal box = (-2.68344 -2.06791 -2.21988) to (73.4552 73.2448 73.4065)
1 by 1 by 1 MPI processor grid
reading atoms ...
35200 atoms
reading velocities ...
35200 velocities
scanning bonds ...
9 = max bonds/atom
scanning angles ...
21 = max angles/atom
scanning dihedrals ...
31 = max dihedrals/atom
scanning impropers ...
29 = max impropers/atom
reading bonds ...
33600 bonds
reading angles ...
59200 angles
reading dihedrals ...
80000 dihedrals
reading impropers ...
35200 impropers
4 = max # of 1-2 neighbors
6 = max # of 1-3 neighbors
12 = max # of 1-4 neighbors
41 = max # of special neighbors
velocity all create 800.0 4928459 dist gaussian
molecule mol1 rxn1_stp1_unreacted.data_template
Read molecule mol1:
18 atoms with max type 8
16 bonds with max type 12
25 angles with max type 24
23 dihedrals with max type 33
14 impropers with max type 9
molecule mol2 rxn1_stp1_reacted.data_template
Read molecule mol2:
18 atoms with max type 9
17 bonds with max type 11
31 angles with max type 23
39 dihedrals with max type 30
20 impropers with max type 1
molecule mol3 rxn1_stp2_unreacted.data_template
Read molecule mol3:
15 atoms with max type 9
14 bonds with max type 11
25 angles with max type 23
30 dihedrals with max type 30
16 impropers with max type 1
molecule mol4 rxn1_stp2_reacted.data_template
Read molecule mol4:
15 atoms with max type 11
13 bonds with max type 13
19 angles with max type 25
16 dihedrals with max type 29
10 impropers with max type 11
thermo 50
# 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
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
# stable at 800K
fix 1 statted_grp nvt temp 800 800 100
# in order to customize behavior of reacting atoms,
# you can use the internally created 'bond_react_MASTER_group', like so:
# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1
thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts
# restart 100 restart1 restart2
run 200
PPPM initialization ...
using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.20765
grid = 18 18 18
stencil order = 5
estimated absolute RMS force accuracy = 0.0333156
estimated relative force accuracy = 0.000100329
using double precision FFTs
3d grid and FFT values/proc = 12167 5832
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 15 15 15
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
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]
0 800 3666.3948 0.80366765 0 0
50 673.95238 -9670.9169 0.80366765 31 0
100 693.69241 -4696.4359 0.80366765 57 22
150 715.44689 -14740.892 0.80366765 77 50
200 721.16898 -1411.95 0.80366765 84 66
Loop time of 107.389 on 1 procs for 200 steps with 35200 atoms
Performance: 0.161 ns/day, 149.151 hours/ns, 1.862 timesteps/s
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 27.191 | 27.191 | 27.191 | 0.0 | 25.32
Bond | 11.46 | 11.46 | 11.46 | 0.0 | 10.67
Kspace | 4.2507 | 4.2507 | 4.2507 | 0.0 | 3.96
Neigh | 55.544 | 55.544 | 55.544 | 0.0 | 51.72
Comm | 0.41715 | 0.41715 | 0.41715 | 0.0 | 0.39
Output | 0.0011044 | 0.0011044 | 0.0011044 | 0.0 | 0.00
Modify | 8.4756 | 8.4756 | 8.4756 | 0.0 | 7.89
Other | | 0.04897 | | | 0.05
Nlocal: 35200 ave 35200 max 35200 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 38406 ave 38406 max 38406 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 6.92787e+06 ave 6.92787e+06 max 6.92787e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 6927872
Ave neighs/atom = 196.815
Ave special neighs/atom = 9.83489
Neighbor list builds = 200
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Total wall time: 0:01:48

View File

@ -0,0 +1,170 @@
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
# 35,000 atom nylon melt example
units real
boundary p p p
atom_style full
kspace_style pppm 1.0e-4
pair_style lj/class2/coul/long 8.5
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
read_data large_nylon_melt.data.gz
orthogonal box = (-2.68344 -2.06791 -2.21988) to (73.4552 73.2448 73.4065)
2 by 1 by 2 MPI processor grid
reading atoms ...
35200 atoms
reading velocities ...
35200 velocities
scanning bonds ...
9 = max bonds/atom
scanning angles ...
21 = max angles/atom
scanning dihedrals ...
31 = max dihedrals/atom
scanning impropers ...
29 = max impropers/atom
reading bonds ...
33600 bonds
reading angles ...
59200 angles
reading dihedrals ...
80000 dihedrals
reading impropers ...
35200 impropers
4 = max # of 1-2 neighbors
6 = max # of 1-3 neighbors
12 = max # of 1-4 neighbors
41 = max # of special neighbors
velocity all create 800.0 4928459 dist gaussian
molecule mol1 rxn1_stp1_unreacted.data_template
Read molecule mol1:
18 atoms with max type 8
16 bonds with max type 12
25 angles with max type 24
23 dihedrals with max type 33
14 impropers with max type 9
molecule mol2 rxn1_stp1_reacted.data_template
Read molecule mol2:
18 atoms with max type 9
17 bonds with max type 11
31 angles with max type 23
39 dihedrals with max type 30
20 impropers with max type 1
molecule mol3 rxn1_stp2_unreacted.data_template
Read molecule mol3:
15 atoms with max type 9
14 bonds with max type 11
25 angles with max type 23
30 dihedrals with max type 30
16 impropers with max type 1
molecule mol4 rxn1_stp2_reacted.data_template
Read molecule mol4:
15 atoms with max type 11
13 bonds with max type 13
19 angles with max type 25
16 dihedrals with max type 29
10 impropers with max type 11
thermo 50
# 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
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
# stable at 800K
fix 1 statted_grp nvt temp 800 800 100
# in order to customize behavior of reacting atoms,
# you can use the internally created 'bond_react_MASTER_group', like so:
# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1
thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts
# restart 100 restart1 restart2
run 200
PPPM initialization ...
using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.20765
grid = 18 18 18
stencil order = 5
estimated absolute RMS force accuracy = 0.0333156
estimated relative force accuracy = 0.000100329
using double precision FFTs
3d grid and FFT values/proc = 4508 1620
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 15 15 15
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
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]
0 800 3666.3948 0.80366765 0 0
50 673.95238 -9670.9169 0.80366765 31 0
100 693.69241 -4696.4359 0.80366765 57 22
150 715.43654 -14742.205 0.80366765 77 50
200 721.1906 -1411.4303 0.80366765 84 66
Loop time of 56.2311 on 4 procs for 200 steps with 35200 atoms
Performance: 0.307 ns/day, 78.099 hours/ns, 3.557 timesteps/s
99.1% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 13.86 | 14.034 | 14.406 | 5.8 | 24.96
Bond | 5.5592 | 5.5952 | 5.6492 | 1.4 | 9.95
Kspace | 2.3969 | 2.7523 | 2.9203 | 12.5 | 4.89
Neigh | 27.265 | 27.268 | 27.271 | 0.0 | 48.49
Comm | 0.75523 | 0.77355 | 0.79381 | 1.7 | 1.38
Output | 0.00051904 | 0.0007363 | 0.0013669 | 0.0 | 0.00
Modify | 5.7629 | 5.7634 | 5.7641 | 0.0 | 10.25
Other | | 0.04441 | | | 0.08
Nlocal: 8800 ave 8912 max 8666 min
Histogram: 1 0 0 1 0 0 0 0 1 1
Nghost: 18358.8 ave 18432 max 18189 min
Histogram: 1 0 0 0 0 0 0 0 1 2
Neighs: 1.73197e+06 ave 1.77209e+06 max 1.68475e+06 min
Histogram: 1 0 1 0 0 0 0 0 0 2
Total # of neighbors = 6927873
Ave neighs/atom = 196.815
Ave special neighs/atom = 9.83489
Neighbor list builds = 200
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Total wall time: 0:00:57

View File

@ -0,0 +1,35 @@
this is a nominal superimpose file
2 edgeIDs
18 equivalences
BondingIDs
10
1
EdgeIDs
16
8
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18

View File

@ -0,0 +1,189 @@
this is a molecule template for: initial nylon crosslink, post-reacting
18 atoms
17 bonds
31 angles
39 dihedrals
20 impropers
Types
1 9
2 1
3 1
4 4
5 4
6 3
7 3
8 1
9 1
10 5
11 8
12 6
13 3
14 3
15 7
16 1
17 3
18 3
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
16 0.000000
17 0.000000
18 0.000000
Coords
1 -5.522237 -0.752722 1.631158
2 -5.170398 -0.545733 0.178130
3 -6.469695 -0.553072 -0.648889
4 -6.052076 -1.721152 1.744648
5 -6.183059 0.071387 1.971497
6 -4.489340 -1.389197 -0.173156
7 -4.637591 0.453703 0.051252
8 -5.618658 0.138919 4.386107
9 -4.669492 -0.989819 3.943591
10 -4.270194 -0.766405 2.474102
11 -3.348470 -1.875393 2.024289
12 -3.569794 0.564183 2.345995
13 -5.201079 -1.993301 4.044219
14 -3.736682 -0.984819 4.598305
15 -4.255402 1.370923 2.679069
16 -6.136394 -0.339866 -2.136775
17 -6.996331 -1.555519 -0.517408
18 -7.153308 0.284949 -0.289930
Bonds
1 9 1 2
2 10 1 4
3 10 1 5
4 11 1 10
5 1 2 3
6 2 2 6
7 2 2 7
8 1 3 16
9 2 3 17
10 2 3 18
11 1 8 9
12 6 9 10
13 2 9 13
14 2 9 14
15 7 10 11
16 5 10 12
17 8 12 15
Angles
1 14 2 1 4
2 14 2 1 5
3 15 2 1 10
4 16 4 1 5
5 17 4 1 10
6 17 5 1 10
7 18 1 2 3
8 19 1 2 6
9 19 1 2 7
10 1 3 2 6
11 1 3 2 7
12 3 6 2 7
13 2 2 3 16
14 1 2 3 17
15 1 2 3 18
16 1 16 3 17
17 1 16 3 18
18 3 17 3 18
19 12 8 9 10
20 1 8 9 13
21 1 8 9 14
22 13 13 9 10
23 13 14 9 10
24 3 13 9 14
25 10 9 10 11
26 8 9 10 12
27 20 1 10 9
28 21 11 10 12
29 22 1 10 11
30 23 1 10 12
31 11 10 12 15
Dihedrals
1 16 4 1 2 3
2 17 4 1 2 6
3 17 4 1 2 7
4 16 5 1 2 3
5 17 5 1 2 6
6 17 5 1 2 7
7 18 10 1 2 3
8 19 10 1 2 6
9 19 10 1 2 7
10 20 2 1 10 9
11 21 2 1 10 11
12 22 2 1 10 12
13 23 4 1 10 9
14 24 4 1 10 11
15 25 4 1 10 12
16 23 5 1 10 9
17 24 5 1 10 11
18 25 5 1 10 12
19 26 1 2 3 16
20 27 1 2 3 17
21 27 1 2 3 18
22 4 16 3 2 6
23 2 6 2 3 17
24 2 6 2 3 18
25 4 16 3 2 7
26 2 7 2 3 17
27 2 7 2 3 18
28 14 8 9 10 11
29 12 8 9 10 12
30 28 8 9 10 1
31 15 13 9 10 11
32 13 13 9 10 12
33 29 13 9 10 1
34 15 14 9 10 11
35 13 14 9 10 12
36 29 14 9 10 1
37 10 9 10 12 15
38 11 11 10 12 15
39 30 1 10 12 15
Impropers
1 1 2 1 4 5
2 1 2 1 4 10
3 1 2 1 5 10
4 1 4 1 5 10
5 1 1 2 3 6
6 1 1 2 3 7
7 1 1 2 6 7
8 1 3 2 6 7
9 1 2 3 16 17
10 1 2 3 16 18
11 1 2 3 17 18
12 1 16 3 17 18
13 1 8 9 13 10
14 1 8 9 14 10
15 1 8 9 13 14
16 1 13 9 14 10
17 1 9 10 11 12
18 1 1 10 9 11
19 1 1 10 9 12
20 1 1 10 11 12

View File

@ -0,0 +1,160 @@
this is a molecule template for: initial nylon crosslink, pre-reacting
18 atoms
16 bonds
25 angles
23 dihedrals
14 impropers
Types
1 2
2 1
3 1
4 4
5 4
6 3
7 3
8 1
9 1
10 5
11 8
12 6
13 3
14 3
15 7
16 1
17 3
18 3
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
16 0.000000
17 0.000000
18 0.000000
Coords
1 -4.922858 -0.946982 1.146055
2 -5.047195 -0.935267 -0.358173
3 -6.526281 -0.755366 -0.743523
4 -5.282604 0.020447 1.552710
5 -3.860697 -1.095850 1.428305
6 -4.662382 -1.920900 -0.781524
7 -4.433977 -0.072765 -0.784071
8 -5.506279 0.202610 4.825816
9 -4.449177 -0.844592 4.423366
10 -4.103916 -0.749629 2.925195
11 -3.376249 -1.886171 2.245643
12 -4.493235 0.477214 2.137199
13 -4.849053 -1.888877 4.663994
14 -3.491823 -0.662913 5.018510
15 -5.020777 1.189745 2.805427
16 -3.964987 2.900602 -1.551341
17 -4.460694 2.836102 0.668882
18 -4.828494 3.219656 -0.122111
Bonds
1 12 1 2
2 4 1 4
3 4 1 5
4 1 2 3
5 2 2 6
6 2 2 7
7 1 3 16
8 2 3 17
9 2 3 18
10 1 8 9
11 6 9 10
12 2 9 13
13 2 9 14
14 7 10 11
15 5 10 12
16 8 12 15
Angles
1 6 2 1 4
2 6 2 1 5
3 7 4 1 5
4 24 1 2 3
5 5 1 2 6
6 5 1 2 7
7 1 3 2 6
8 1 3 2 7
9 3 6 2 7
10 2 2 3 16
11 1 2 3 17
12 1 2 3 18
13 1 16 3 17
14 1 16 3 18
15 3 17 3 18
16 12 8 9 10
17 1 8 9 13
18 1 8 9 14
19 13 13 9 10
20 13 14 9 10
21 3 13 9 14
22 10 9 10 11
23 8 9 10 12
24 21 11 10 12
25 11 10 12 15
Dihedrals
1 31 4 1 2 3
2 32 4 1 2 6
3 32 4 1 2 7
4 31 5 1 2 3
5 32 5 1 2 6
6 32 5 1 2 7
7 33 1 2 3 16
8 1 1 2 3 17
9 1 1 2 3 18
10 4 16 3 2 6
11 2 6 2 3 17
12 2 6 2 3 18
13 4 16 3 2 7
14 2 7 2 3 17
15 2 7 2 3 18
16 14 8 9 10 11
17 12 8 9 10 12
18 15 13 9 10 11
19 13 13 9 10 12
20 15 14 9 10 11
21 13 14 9 10 12
22 10 9 10 12 15
23 11 11 10 12 15
Impropers
1 1 2 1 4 5
2 9 9 10 11 12
3 1 1 2 3 6
4 1 1 2 3 7
5 1 1 2 6 7
6 1 3 2 6 7
7 1 2 3 16 17
8 1 2 3 16 18
9 1 2 3 17 18
10 1 16 3 17 18
11 1 8 9 13 10
12 1 8 9 14 10
13 1 8 9 13 14
14 1 13 9 14 10

View File

@ -0,0 +1,32 @@
this is a nominal superimpose file
2 edgeIDs
15 equivalences
BondingIDs
4
12
EdgeIDs
8
3
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15

View File

@ -0,0 +1,131 @@
this is a molecule template for: water condensation, post-reacting
15 atoms
13 bonds
19 angles
16 dihedrals
10 impropers
Types
1 9
2 1
3 1
4 10
5 4
6 3
7 3
8 1
9 1
10 5
11 8
12 11
13 3
14 3
15 10
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.410000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 -0.820000
13 0.000000
14 0.000000
15 0.410000
Coords
1 -4.856280 -1.050468 1.432625
2 -5.047195 -0.935267 -0.358173
3 -6.526281 -0.755366 -0.743523
4 -5.282604 0.020447 1.552710
5 -3.860697 -1.095850 1.428305
6 -4.662382 -1.920900 -0.781524
7 -4.433977 -0.072765 -0.784071
8 -5.506279 0.202610 4.825816
9 -4.449177 -0.844592 4.423366
10 -4.103916 -0.749629 2.925195
11 -3.376249 -1.886171 2.245643
12 -4.493235 0.477214 2.137199
13 -4.849053 -1.888877 4.663994
14 -3.491823 -0.662913 5.018510
15 -5.020777 1.189745 2.805427
Bonds
1 9 1 2
2 10 1 5
3 11 1 10
4 1 2 3
5 2 2 6
6 2 2 7
7 13 4 12
8 1 8 9
9 6 9 10
10 2 9 13
11 2 9 14
12 7 10 11
13 13 15 12
Angles
1 14 2 1 5
2 15 2 1 10
3 17 5 1 10
4 18 1 2 3
5 19 1 2 6
6 19 1 2 7
7 1 3 2 6
8 1 3 2 7
9 3 6 2 7
10 12 8 9 10
11 1 8 9 13
12 1 8 9 14
13 13 13 9 10
14 13 14 9 10
15 3 13 9 14
16 10 9 10 11
17 20 1 10 9
18 22 1 10 11
19 25 15 12 4
Dihedrals
1 16 5 1 2 3
2 17 5 1 2 6
3 17 5 1 2 7
4 18 10 1 2 3
5 19 10 1 2 6
6 19 10 1 2 7
7 20 2 1 10 9
8 21 2 1 10 11
9 23 5 1 10 9
10 24 5 1 10 11
11 14 8 9 10 11
12 28 8 9 10 1
13 15 13 9 10 11
14 29 13 9 10 1
15 15 14 9 10 11
16 29 14 9 10 1
Impropers
1 10 2 1 5 10
2 11 1 10 9 11
3 1 1 2 3 6
4 1 1 2 3 7
5 1 1 2 6 7
6 1 3 2 6 7
7 1 8 9 13 10
8 1 8 9 14 10
9 1 8 9 13 14
10 1 13 9 14 10

View File

@ -0,0 +1,158 @@
this is a molecule template for: water condensation, pre-reacting
15 atoms
14 bonds
25 angles
30 dihedrals
16 impropers
Types
1 9
2 1
3 1
4 4
5 4
6 3
7 3
8 1
9 1
10 5
11 8
12 6
13 3
14 3
15 7
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
Coords
1 -4.922858 -0.946982 1.146055
2 -5.047195 -0.935267 -0.358173
3 -6.526281 -0.755366 -0.743523
4 -5.282604 0.020447 1.552710
5 -3.860697 -1.095850 1.428305
6 -4.662382 -1.920900 -0.781524
7 -4.433977 -0.072765 -0.784071
8 -5.506279 0.202610 4.825816
9 -4.449177 -0.844592 4.423366
10 -4.103916 -0.749629 2.925195
11 -3.376249 -1.886171 2.245643
12 -4.493235 0.477214 2.137199
13 -4.849053 -1.888877 4.663994
14 -3.491823 -0.662913 5.018510
15 -5.020777 1.189745 2.805427
Bonds
1 9 1 2
2 10 1 4
3 10 1 5
4 11 1 10
5 1 2 3
6 2 2 6
7 2 2 7
8 1 8 9
9 6 9 10
10 2 9 13
11 2 9 14
12 7 10 11
13 5 10 12
14 8 12 15
Angles
1 14 2 1 4
2 14 2 1 5
3 15 2 1 10
4 16 4 1 5
5 17 4 1 10
6 17 5 1 10
7 18 1 2 3
8 19 1 2 6
9 19 1 2 7
10 1 3 2 6
11 1 3 2 7
12 3 6 2 7
13 12 8 9 10
14 1 8 9 13
15 1 8 9 14
16 13 13 9 10
17 13 14 9 10
18 3 13 9 14
19 10 9 10 11
20 8 9 10 12
21 20 1 10 9
22 21 11 10 12
23 22 1 10 11
24 23 1 10 12
25 11 10 12 15
Dihedrals
1 16 4 1 2 3
2 17 4 1 2 6
3 17 4 1 2 7
4 16 5 1 2 3
5 17 5 1 2 6
6 17 5 1 2 7
7 18 10 1 2 3
8 19 10 1 2 6
9 19 10 1 2 7
10 20 2 1 10 9
11 21 2 1 10 11
12 22 2 1 10 12
13 23 4 1 10 9
14 24 4 1 10 11
15 25 4 1 10 12
16 23 5 1 10 9
17 24 5 1 10 11
18 25 5 1 10 12
19 14 8 9 10 11
20 12 8 9 10 12
21 28 8 9 10 1
22 15 13 9 10 11
23 13 13 9 10 12
24 29 13 9 10 1
25 15 14 9 10 11
26 13 14 9 10 12
27 29 14 9 10 1
28 10 9 10 12 15
29 11 11 10 12 15
30 30 1 10 12 15
Impropers
1 1 2 1 4 5
2 1 2 1 4 10
3 1 2 1 5 10
4 1 4 1 5 10
5 1 1 2 3 6
6 1 1 2 3 7
7 1 1 2 6 7
8 1 3 2 6 7
9 1 8 9 13 10
10 1 8 9 14 10
11 1 8 9 13 14
12 1 13 9 14 10
13 1 9 10 11 12
14 1 1 10 9 11
15 1 1 10 9 12
16 1 1 10 11 12

View File

@ -0,0 +1,50 @@
# two monomer nylon example
# reaction produces a condensed water molecule
units real
boundary p p p
atom_style full
kspace_style pppm 1.0e-4
pair_style lj/class2/coul/long 8.5
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
read_data tiny_nylon.data
velocity all create 300.0 4928459 dist gaussian
molecule mol1 rxn1_stp1_unreacted.data_template
molecule mol2 rxn1_stp1_reacted.data_template
molecule mol3 rxn1_stp2_unreacted.data_template
molecule mol4 rxn1_stp2_reacted.data_template
thermo 50
# 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 1 statted_grp nvt temp 300 300 100
fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1
thermo_style custom step temp press density f_myrxns[1] f_myrxns[2]
# restart 100 restart1 restart2
run 10000
# write_restart restart_longrun
# write_data restart_longrun.data

View File

@ -0,0 +1,365 @@
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
# two monomer nylon example
# reaction produces a condensed water molecule
units real
boundary p p p
atom_style full
kspace_style pppm 1.0e-4
pair_style lj/class2/coul/long 8.5
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
read_data tiny_nylon.data
orthogonal box = (-25 -25 -25) to (25 25 25)
1 by 1 by 1 MPI processor grid
reading atoms ...
44 atoms
reading velocities ...
44 velocities
scanning bonds ...
9 = max bonds/atom
scanning angles ...
21 = max angles/atom
scanning dihedrals ...
29 = max dihedrals/atom
scanning impropers ...
29 = max impropers/atom
reading bonds ...
42 bonds
reading angles ...
74 angles
reading dihedrals ...
100 dihedrals
reading impropers ...
44 impropers
4 = max # of 1-2 neighbors
6 = max # of 1-3 neighbors
12 = max # of 1-4 neighbors
41 = max # of special neighbors
velocity all create 300.0 4928459 dist gaussian
molecule mol1 rxn1_stp1_unreacted.data_template
Read molecule mol1:
18 atoms with max type 8
16 bonds with max type 14
25 angles with max type 28
23 dihedrals with max type 36
14 impropers with max type 11
molecule mol2 rxn1_stp1_reacted.data_template
Read molecule mol2:
18 atoms with max type 9
17 bonds with max type 13
31 angles with max type 27
39 dihedrals with max type 33
20 impropers with max type 1
molecule mol3 rxn1_stp2_unreacted.data_template
Read molecule mol3:
15 atoms with max type 9
14 bonds with max type 13
25 angles with max type 27
30 dihedrals with max type 33
16 impropers with max type 1
molecule mol4 rxn1_stp2_reacted.data_template
Read molecule mol4:
15 atoms with max type 11
13 bonds with max type 15
19 angles with max type 29
16 dihedrals with max type 32
10 impropers with max type 13
thermo 50
# 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
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
fix 1 statted_grp nvt temp 300 300 100
fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1
thermo_style custom step temp press density f_myrxns[1] f_myrxns[2]
# restart 100 restart1 restart2
run 10000
PPPM initialization ...
using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.0534597
grid = 2 2 2
stencil order = 5
estimated absolute RMS force accuracy = 0.0402256
estimated relative force accuracy = 0.000121138
using double precision FFTs
3d grid and FFT values/proc = 343 8
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 10 10 10
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
WARNING: Inconsistent image flags (../domain.cpp:786)
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]
0 300 346.78165 0.0034851739 0 0
50 296.70408 -51.30066 0.0034851739 1 0
100 275.26011 39.120329 0.0034851739 1 1
150 438.68516 35.257539 0.0034851739 1 1
200 394.48971 15.444537 0.0034851739 1 1
250 356.00369 50.185792 0.0034851739 1 1
300 301.25816 -26.891497 0.0034851739 1 1
350 279.17264 12.694513 0.0034851739 1 1
400 248.71641 10.684558 0.0034851739 1 1
450 240.30602 12.963034 0.0034851739 1 1
500 252.71279 0.91620356 0.0034851739 1 1
550 300.56824 18.541436 0.0034851739 1 1
600 306.46441 -1.9736081 0.0034851739 1 1
650 336.4537 21.474831 0.0034851739 1 1
700 323.46217 8.486376 0.0034851739 1 1
750 271.87146 5.9615231 0.0034851739 1 1
800 268.43041 36.676068 0.0034851739 1 1
850 269.02683 7.6295416 0.0034851739 1 1
900 282.03605 -1.4688833 0.0034851739 1 1
950 243.69136 -22.771489 0.0034851739 1 1
1000 285.01348 17.925748 0.0034851739 1 1
1050 383.47985 0.70536985 0.0034851739 1 1
1100 368.97167 -4.3046933 0.0034851739 1 1
1150 373.64459 6.3491837 0.0034851739 1 1
1200 332.90575 -36.501095 0.0034851739 1 1
1250 314.04078 -13.382767 0.0034851739 1 1
1300 305.84166 4.7713641 0.0034851739 1 1
1350 286.22145 37.621803 0.0034851739 1 1
1400 265.52855 23.621002 0.0034851739 1 1
1450 281.807 -31.266828 0.0034851739 1 1
1500 275.33855 33.495565 0.0034851739 1 1
1550 273.04973 -22.913871 0.0034851739 1 1
1600 308.18478 -17.98151 0.0034851739 1 1
1650 333.27664 28.987529 0.0034851739 1 1
1700 296.16091 -1.1440455 0.0034851739 1 1
1750 365.75611 34.574845 0.0034851739 1 1
1800 292.83503 -33.199654 0.0034851739 1 1
1850 261.50282 42.608703 0.0034851739 1 1
1900 315.14188 -31.058803 0.0034851739 1 1
1950 335.12895 12.40597 0.0034851739 1 1
2000 278.08586 -5.3178633 0.0034851739 1 1
2050 283.23847 -3.3974302 0.0034851739 1 1
2100 281.38904 0.70263324 0.0034851739 1 1
2150 302.23197 23.372316 0.0034851739 1 1
2200 337.49259 -4.8716803 0.0034851739 1 1
2250 409.64134 -12.043721 0.0034851739 1 1
2300 309.21764 -21.824645 0.0034851739 1 1
2350 290.97879 18.690281 0.0034851739 1 1
2400 341.816 -16.967741 0.0034851739 1 1
2450 310.28034 27.375518 0.0034851739 1 1
2500 248.89429 17.061192 0.0034851739 1 1
2550 273.10927 0.10481657 0.0034851739 1 1
2600 289.56101 -9.7239939 0.0034851739 1 1
2650 298.99719 -33.140576 0.0034851739 1 1
2700 326.05198 -24.509827 0.0034851739 1 1
2750 319.20612 24.305526 0.0034851739 1 1
2800 304.8715 -15.076941 0.0034851739 1 1
2850 374.38923 2.0874883 0.0034851739 1 1
2900 354.01554 -20.595102 0.0034851739 1 1
2950 289.89296 48.39731 0.0034851739 1 1
3000 312.10013 -8.5105997 0.0034851739 1 1
3050 296.97004 -31.008446 0.0034851739 1 1
3100 251.72228 35.710197 0.0034851739 1 1
3150 315.35895 -43.331536 0.0034851739 1 1
3200 334.67773 13.331058 0.0034851739 1 1
3250 308.1669 37.236121 0.0034851739 1 1
3300 329.47601 30.798598 0.0034851739 1 1
3350 299.40055 2.0785585 0.0034851739 1 1
3400 272.41031 32.744922 0.0034851739 1 1
3450 279.34594 -26.181793 0.0034851739 1 1
3500 288.89969 8.935052 0.0034851739 1 1
3550 253.4967 9.7244709 0.0034851739 1 1
3600 294.83266 19.33305 0.0034851739 1 1
3650 290.23794 -5.4939069 0.0034851739 1 1
3700 332.5222 -29.834229 0.0034851739 1 1
3750 364.63024 20.706191 0.0034851739 1 1
3800 295.3842 -6.9434004 0.0034851739 1 1
3850 346.84424 37.796066 0.0034851739 1 1
3900 265.67286 -0.31628068 0.0034851739 1 1
3950 260.455 -2.2571902 0.0034851739 1 1
4000 259.82636 -2.2286205 0.0034851739 1 1
4050 257.79848 24.520293 0.0034851739 1 1
4100 295.58626 -0.42318936 0.0034851739 1 1
4150 265.81353 -49.092436 0.0034851739 1 1
4200 302.10333 51.715259 0.0034851739 1 1
4250 258.98448 -4.8516655 0.0034851739 1 1
4300 327.83401 33.717282 0.0034851739 1 1
4350 311.59571 23.580382 0.0034851739 1 1
4400 300.64237 -31.866661 0.0034851739 1 1
4450 294.15643 -0.11927421 0.0034851739 1 1
4500 299.83605 -17.560873 0.0034851739 1 1
4550 326.83265 32.818482 0.0034851739 1 1
4600 260.39068 -8.0567902 0.0034851739 1 1
4650 247.93553 19.462991 0.0034851739 1 1
4700 214.22252 -34.118303 0.0034851739 1 1
4750 203.15329 27.356205 0.0034851739 1 1
4800 257.761 -10.407989 0.0034851739 1 1
4850 307.1923 11.71101 0.0034851739 1 1
4900 319.00942 4.7808306 0.0034851739 1 1
4950 282.23989 24.996151 0.0034851739 1 1
5000 311.53284 -3.0012665 0.0034851739 1 1
5050 317.58212 32.567832 0.0034851739 1 1
5100 267.51501 -47.695087 0.0034851739 1 1
5150 260.19048 29.046388 0.0034851739 1 1
5200 239.83552 -5.4890385 0.0034851739 1 1
5250 234.8852 -18.172633 0.0034851739 1 1
5300 236.43277 -39.06212 0.0034851739 1 1
5350 280.90079 -2.6932923 0.0034851739 1 1
5400 316.65266 23.071362 0.0034851739 1 1
5450 345.63226 19.573323 0.0034851739 1 1
5500 384.57334 41.507217 0.0034851739 1 1
5550 317.14278 9.6992897 0.0034851739 1 1
5600 279.93243 -12.076895 0.0034851739 1 1
5650 268.06471 1.6196401 0.0034851739 1 1
5700 271.85714 -40.378455 0.0034851739 1 1
5750 313.88363 10.722639 0.0034851739 1 1
5800 281.54495 31.914889 0.0034851739 1 1
5850 293.34821 -8.3154922 0.0034851739 1 1
5900 249.25216 -17.307353 0.0034851739 1 1
5950 268.18639 -4.7222512 0.0034851739 1 1
6000 302.99398 -52.615528 0.0034851739 1 1
6050 314.57931 34.51318 0.0034851739 1 1
6100 345.70348 30.334721 0.0034851739 1 1
6150 316.59329 31.862519 0.0034851739 1 1
6200 317.85346 -32.235221 0.0034851739 1 1
6250 282.97676 0.2936745 0.0034851739 1 1
6300 267.91814 19.265567 0.0034851739 1 1
6350 226.20967 -13.093547 0.0034851739 1 1
6400 307.73316 17.439598 0.0034851739 1 1
6450 292.16253 -23.275163 0.0034851739 1 1
6500 335.05939 26.936463 0.0034851739 1 1
6550 380.73546 19.532416 0.0034851739 1 1
6600 373.0103 30.879532 0.0034851739 1 1
6650 335.37975 -2.1762828 0.0034851739 1 1
6700 298.94272 -10.578587 0.0034851739 1 1
6750 255.11531 -50.576215 0.0034851739 1 1
6800 222.87459 3.0499548 0.0034851739 1 1
6850 268.57213 -43.675945 0.0034851739 1 1
6900 260.3024 4.7483005 0.0034851739 1 1
6950 289.15855 31.62106 0.0034851739 1 1
7000 289.11874 21.635533 0.0034851739 1 1
7050 361.08776 22.445996 0.0034851739 1 1
7100 368.95003 4.8383881 0.0034851739 1 1
7150 331.47448 -36.200495 0.0034851739 1 1
7200 304.7251 13.982693 0.0034851739 1 1
7250 284.09747 0.53758275 0.0034851739 1 1
7300 269.17023 -41.571482 0.0034851739 1 1
7350 222.07071 25.564662 0.0034851739 1 1
7400 304.09598 15.482955 0.0034851739 1 1
7450 298.78752 -7.4335841 0.0034851739 1 1
7500 328.78697 14.666097 0.0034851739 1 1
7550 347.07038 -37.165295 0.0034851739 1 1
7600 362.85673 20.52268 0.0034851739 1 1
7650 347.15141 2.3383775 0.0034851739 1 1
7700 262.10132 33.898374 0.0034851739 1 1
7750 275.84724 -33.534813 0.0034851739 1 1
7800 281.14075 -18.284372 0.0034851739 1 1
7850 264.83337 -30.580199 0.0034851739 1 1
7900 257.35275 -35.080567 0.0034851739 1 1
7950 286.32446 26.594779 0.0034851739 1 1
8000 248.36889 15.605894 0.0034851739 1 1
8050 292.55015 28.811985 0.0034851739 1 1
8100 312.47888 0.83990451 0.0034851739 1 1
8150 285.58532 -15.258185 0.0034851739 1 1
8200 292.22819 -38.233195 0.0034851739 1 1
8250 321.6208 -19.052143 0.0034851739 1 1
8300 319.41332 54.97437 0.0034851739 1 1
8350 307.95647 32.009591 0.0034851739 1 1
8400 345.58105 8.8535539 0.0034851739 1 1
8450 357.75168 12.416896 0.0034851739 1 1
8500 370.049 4.3288665 0.0034851739 1 1
8550 360.62882 12.618614 0.0034851739 1 1
8600 290.10834 -4.8081765 0.0034851739 1 1
8650 297.7575 -5.1976816 0.0034851739 1 1
8700 286.57505 -31.469549 0.0034851739 1 1
8750 307.77059 19.338001 0.0034851739 1 1
8800 231.68316 12.159459 0.0034851739 1 1
8850 329.13623 -8.7262592 0.0034851739 1 1
8900 286.40715 10.326025 0.0034851739 1 1
8950 339.43101 2.7809618 0.0034851739 1 1
9000 402.53799 19.481869 0.0034851739 1 1
9050 349.56449 -4.8450179 0.0034851739 1 1
9100 307.64739 16.889327 0.0034851739 1 1
9150 276.54451 -34.808372 0.0034851739 1 1
9200 233.18668 4.9409791 0.0034851739 1 1
9250 266.48384 -19.850366 0.0034851739 1 1
9300 289.14808 13.520201 0.0034851739 1 1
9350 295.08335 17.156468 0.0034851739 1 1
9400 338.08757 -31.112278 0.0034851739 1 1
9450 336.64739 -25.697747 0.0034851739 1 1
9500 338.10622 1.9241797 0.0034851739 1 1
9550 294.82158 -12.043972 0.0034851739 1 1
9600 268.9836 12.235553 0.0034851739 1 1
9650 279.6269 28.710734 0.0034851739 1 1
9700 279.88562 -10.865604 0.0034851739 1 1
9750 287.56565 12.975819 0.0034851739 1 1
9800 278.39949 4.2088595 0.0034851739 1 1
9850 307.61259 9.341169 0.0034851739 1 1
9900 317.53581 2.3948493 0.0034851739 1 1
9950 332.52938 -14.809185 0.0034851739 1 1
10000 401.93365 -7.637581 0.0034851739 1 1
Loop time of 1.94139 on 1 procs for 10000 steps with 44 atoms
Performance: 445.042 ns/day, 0.054 hours/ns, 5150.945 timesteps/s
99.3% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.26479 | 0.26479 | 0.26479 | 0.0 | 13.64
Bond | 0.76875 | 0.76875 | 0.76875 | 0.0 | 39.60
Kspace | 0.32111 | 0.32111 | 0.32111 | 0.0 | 16.54
Neigh | 0.41333 | 0.41333 | 0.41333 | 0.0 | 21.29
Comm | 0.025956 | 0.025956 | 0.025956 | 0.0 | 1.34
Output | 0.0043445 | 0.0043445 | 0.0043445 | 0.0 | 0.22
Modify | 0.12526 | 0.12526 | 0.12526 | 0.0 | 6.45
Other | | 0.01786 | | | 0.92
Nlocal: 44 ave 44 max 44 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 62 ave 62 max 62 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 812 ave 812 max 812 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 812
Ave neighs/atom = 18.4545
Ave special neighs/atom = 9.77273
Neighbor list builds = 10000
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Total wall time: 0:00:01

View File

@ -0,0 +1,365 @@
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
# two monomer nylon example
# reaction produces a condensed water molecule
units real
boundary p p p
atom_style full
kspace_style pppm 1.0e-4
pair_style lj/class2/coul/long 8.5
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
read_data tiny_nylon.data
orthogonal box = (-25 -25 -25) to (25 25 25)
1 by 2 by 2 MPI processor grid
reading atoms ...
44 atoms
reading velocities ...
44 velocities
scanning bonds ...
9 = max bonds/atom
scanning angles ...
21 = max angles/atom
scanning dihedrals ...
29 = max dihedrals/atom
scanning impropers ...
29 = max impropers/atom
reading bonds ...
42 bonds
reading angles ...
74 angles
reading dihedrals ...
100 dihedrals
reading impropers ...
44 impropers
4 = max # of 1-2 neighbors
6 = max # of 1-3 neighbors
12 = max # of 1-4 neighbors
41 = max # of special neighbors
velocity all create 300.0 4928459 dist gaussian
molecule mol1 rxn1_stp1_unreacted.data_template
Read molecule mol1:
18 atoms with max type 8
16 bonds with max type 14
25 angles with max type 28
23 dihedrals with max type 36
14 impropers with max type 11
molecule mol2 rxn1_stp1_reacted.data_template
Read molecule mol2:
18 atoms with max type 9
17 bonds with max type 13
31 angles with max type 27
39 dihedrals with max type 33
20 impropers with max type 1
molecule mol3 rxn1_stp2_unreacted.data_template
Read molecule mol3:
15 atoms with max type 9
14 bonds with max type 13
25 angles with max type 27
30 dihedrals with max type 33
16 impropers with max type 1
molecule mol4 rxn1_stp2_reacted.data_template
Read molecule mol4:
15 atoms with max type 11
13 bonds with max type 15
19 angles with max type 29
16 dihedrals with max type 32
10 impropers with max type 13
thermo 50
# 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
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp defined
fix 1 statted_grp nvt temp 300 300 100
fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1
thermo_style custom step temp press density f_myrxns[1] f_myrxns[2]
# restart 100 restart1 restart2
run 10000
PPPM initialization ...
using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.0534597
grid = 2 2 2
stencil order = 5
estimated absolute RMS force accuracy = 0.0402256
estimated relative force accuracy = 0.000121138
using double precision FFTs
3d grid and FFT values/proc = 252 2
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 10 10 10
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
WARNING: Inconsistent image flags (../domain.cpp:786)
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]
0 300 346.78165 0.0034851739 0 0
50 296.70408 -51.30066 0.0034851739 1 0
100 275.26011 39.120329 0.0034851739 1 1
150 438.68516 35.257539 0.0034851739 1 1
200 394.48971 15.444537 0.0034851739 1 1
250 356.00369 50.185792 0.0034851739 1 1
300 301.25816 -26.891497 0.0034851739 1 1
350 279.17264 12.694513 0.0034851739 1 1
400 248.71641 10.684558 0.0034851739 1 1
450 240.30602 12.963034 0.0034851739 1 1
500 252.71279 0.91620356 0.0034851739 1 1
550 300.56824 18.541436 0.0034851739 1 1
600 306.46441 -1.9736081 0.0034851739 1 1
650 336.4537 21.474831 0.0034851739 1 1
700 323.46217 8.486376 0.0034851739 1 1
750 271.87146 5.9615231 0.0034851739 1 1
800 268.43041 36.676068 0.0034851739 1 1
850 269.02683 7.6295416 0.0034851739 1 1
900 282.03605 -1.4688833 0.0034851739 1 1
950 243.69136 -22.771489 0.0034851739 1 1
1000 285.01348 17.925748 0.0034851739 1 1
1050 383.47985 0.70536985 0.0034851739 1 1
1100 368.97167 -4.3046933 0.0034851739 1 1
1150 373.64459 6.3491837 0.0034851739 1 1
1200 332.90575 -36.501095 0.0034851739 1 1
1250 314.04078 -13.382767 0.0034851739 1 1
1300 305.84166 4.7713641 0.0034851739 1 1
1350 286.22145 37.621803 0.0034851739 1 1
1400 265.52855 23.621002 0.0034851739 1 1
1450 281.807 -31.266828 0.0034851739 1 1
1500 275.33855 33.495565 0.0034851739 1 1
1550 273.04973 -22.913871 0.0034851739 1 1
1600 308.18478 -17.98151 0.0034851739 1 1
1650 333.27664 28.987529 0.0034851739 1 1
1700 296.16091 -1.1440455 0.0034851739 1 1
1750 365.75611 34.574845 0.0034851739 1 1
1800 292.83503 -33.199654 0.0034851739 1 1
1850 261.50282 42.608703 0.0034851739 1 1
1900 315.14188 -31.058803 0.0034851739 1 1
1950 335.12895 12.40597 0.0034851739 1 1
2000 278.08586 -5.3178633 0.0034851739 1 1
2050 283.23847 -3.3974302 0.0034851739 1 1
2100 281.38904 0.70263324 0.0034851739 1 1
2150 302.23197 23.372316 0.0034851739 1 1
2200 337.49259 -4.8716803 0.0034851739 1 1
2250 409.64134 -12.043721 0.0034851739 1 1
2300 309.21764 -21.824645 0.0034851739 1 1
2350 290.97879 18.690281 0.0034851739 1 1
2400 341.816 -16.967741 0.0034851739 1 1
2450 310.28034 27.375518 0.0034851739 1 1
2500 248.89429 17.061192 0.0034851739 1 1
2550 273.10927 0.1048166 0.0034851739 1 1
2600 289.56101 -9.7239939 0.0034851739 1 1
2650 298.99719 -33.140576 0.0034851739 1 1
2700 326.05198 -24.509827 0.0034851739 1 1
2750 319.20612 24.305526 0.0034851739 1 1
2800 304.8715 -15.076941 0.0034851739 1 1
2850 374.38923 2.0874883 0.0034851739 1 1
2900 354.01554 -20.595102 0.0034851739 1 1
2950 289.89296 48.39731 0.0034851739 1 1
3000 312.10013 -8.5105996 0.0034851739 1 1
3050 296.97004 -31.008446 0.0034851739 1 1
3100 251.72228 35.710197 0.0034851739 1 1
3150 315.35895 -43.331536 0.0034851739 1 1
3200 334.67773 13.331058 0.0034851739 1 1
3250 308.1669 37.236121 0.0034851739 1 1
3300 329.47601 30.798598 0.0034851739 1 1
3350 299.40055 2.0785585 0.0034851739 1 1
3400 272.41031 32.744921 0.0034851739 1 1
3450 279.34594 -26.181793 0.0034851739 1 1
3500 288.89969 8.935052 0.0034851739 1 1
3550 253.4967 9.724471 0.0034851739 1 1
3600 294.83266 19.33305 0.0034851739 1 1
3650 290.23794 -5.493907 0.0034851739 1 1
3700 332.5222 -29.83423 0.0034851739 1 1
3750 364.63024 20.706191 0.0034851739 1 1
3800 295.3842 -6.9434003 0.0034851739 1 1
3850 346.84424 37.796066 0.0034851739 1 1
3900 265.67286 -0.3162804 0.0034851739 1 1
3950 260.455 -2.2571901 0.0034851739 1 1
4000 259.82636 -2.2286207 0.0034851739 1 1
4050 257.79848 24.520293 0.0034851739 1 1
4100 295.58626 -0.42318895 0.0034851739 1 1
4150 265.81352 -49.092436 0.0034851739 1 1
4200 302.10333 51.715258 0.0034851739 1 1
4250 258.98448 -4.8516657 0.0034851739 1 1
4300 327.83401 33.717283 0.0034851739 1 1
4350 311.59571 23.580382 0.0034851739 1 1
4400 300.64237 -31.866661 0.0034851739 1 1
4450 294.15642 -0.11927262 0.0034851739 1 1
4500 299.83605 -17.560872 0.0034851739 1 1
4550 326.83265 32.818481 0.0034851739 1 1
4600 260.39068 -8.0567907 0.0034851739 1 1
4650 247.93553 19.462991 0.0034851739 1 1
4700 214.22252 -34.118304 0.0034851739 1 1
4750 203.15329 27.356204 0.0034851739 1 1
4800 257.761 -10.407986 0.0034851739 1 1
4850 307.1923 11.711008 0.0034851739 1 1
4900 319.00942 4.7808342 0.0034851739 1 1
4950 282.2399 24.996151 0.0034851739 1 1
5000 311.53284 -3.0012669 0.0034851739 1 1
5050 317.58213 32.56782 0.0034851739 1 1
5100 267.51502 -47.695103 0.0034851739 1 1
5150 260.19047 29.046394 0.0034851739 1 1
5200 239.8355 -5.4890372 0.0034851739 1 1
5250 234.88522 -18.172649 0.0034851739 1 1
5300 236.43278 -39.062111 0.0034851739 1 1
5350 280.90083 -2.6932604 0.0034851739 1 1
5400 316.65269 23.071363 0.0034851739 1 1
5450 345.6322 19.573305 0.0034851739 1 1
5500 384.57334 41.50729 0.0034851739 1 1
5550 317.14286 9.6992981 0.0034851739 1 1
5600 279.93246 -12.076859 0.0034851739 1 1
5650 268.06471 1.6196502 0.0034851739 1 1
5700 271.85714 -40.378489 0.0034851739 1 1
5750 313.88361 10.722652 0.0034851739 1 1
5800 281.54499 31.914883 0.0034851739 1 1
5850 293.34819 -8.3155887 0.0034851739 1 1
5900 249.25215 -17.307228 0.0034851739 1 1
5950 268.18645 -4.7223601 0.0034851739 1 1
6000 302.99402 -52.615432 0.0034851739 1 1
6050 314.57946 34.513152 0.0034851739 1 1
6100 345.70342 30.33474 0.0034851739 1 1
6150 316.59329 31.862566 0.0034851739 1 1
6200 317.85341 -32.23511 0.0034851739 1 1
6250 282.97674 0.29367434 0.0034851739 1 1
6300 267.91823 19.265617 0.0034851739 1 1
6350 226.2098 -13.093573 0.0034851739 1 1
6400 307.73307 17.439662 0.0034851739 1 1
6450 292.16311 -23.275251 0.0034851739 1 1
6500 335.05972 26.936588 0.0034851739 1 1
6550 380.7351 19.532324 0.0034851739 1 1
6600 373.01041 30.879146 0.0034851739 1 1
6650 335.37897 -2.1766711 0.0034851739 1 1
6700 298.94275 -10.578361 0.0034851739 1 1
6750 255.11449 -50.575851 0.0034851739 1 1
6800 222.87598 3.0488985 0.0034851739 1 1
6850 268.57268 -43.676136 0.0034851739 1 1
6900 260.30442 4.7484508 0.0034851739 1 1
6950 289.15739 31.622589 0.0034851739 1 1
7000 289.11733 21.636361 0.0034851739 1 1
7050 361.08905 22.442487 0.0034851739 1 1
7100 368.95006 4.8393179 0.0034851739 1 1
7150 331.47878 -36.202032 0.0034851739 1 1
7200 304.72518 13.982604 0.0034851739 1 1
7250 284.0996 0.53900966 0.0034851739 1 1
7300 269.17156 -41.572215 0.0034851739 1 1
7350 222.06563 25.56579 0.0034851739 1 1
7400 304.09479 15.48238 0.0034851739 1 1
7450 298.79046 -7.4369454 0.0034851739 1 1
7500 328.78217 14.672853 0.0034851739 1 1
7550 347.06589 -37.168123 0.0034851739 1 1
7600 362.84157 20.514912 0.0034851739 1 1
7650 347.15916 2.3477485 0.0034851739 1 1
7700 262.09822 33.901831 0.0034851739 1 1
7750 275.85921 -33.536059 0.0034851739 1 1
7800 281.16159 -18.288414 0.0034851739 1 1
7850 264.83553 -30.566284 0.0034851739 1 1
7900 257.35224 -35.087067 0.0034851739 1 1
7950 286.30756 26.586163 0.0034851739 1 1
8000 248.38175 15.601961 0.0034851739 1 1
8050 292.59171 28.784541 0.0034851739 1 1
8100 312.52852 0.87995053 0.0034851739 1 1
8150 285.62346 -15.337252 0.0034851739 1 1
8200 292.24175 -38.192576 0.0034851739 1 1
8250 321.61618 -19.030398 0.0034851739 1 1
8300 319.42189 55.078305 0.0034851739 1 1
8350 308.00357 32.050518 0.0034851739 1 1
8400 345.68186 8.7983733 0.0034851739 1 1
8450 358.00849 12.434592 0.0034851739 1 1
8500 370.14359 4.2184721 0.0034851739 1 1
8550 360.6511 12.580836 0.0034851739 1 1
8600 290.04938 -4.8422589 0.0034851739 1 1
8650 297.95745 -5.3185591 0.0034851739 1 1
8700 286.54284 -31.490479 0.0034851739 1 1
8750 308.08791 19.24417 0.0034851739 1 1
8800 231.72534 12.262217 0.0034851739 1 1
8850 329.2349 -8.9133933 0.0034851739 1 1
8900 287.64023 10.525164 0.0034851739 1 1
8950 341.08296 2.80127 0.0034851739 1 1
9000 403.71266 17.88418 0.0034851739 1 1
9050 348.95132 -4.5813611 0.0034851739 1 1
9100 307.98322 16.707575 0.0034851739 1 1
9150 276.75719 -35.563923 0.0034851739 1 1
9200 230.15547 3.8091656 0.0034851739 1 1
9250 264.64479 -20.97438 0.0034851739 1 1
9300 285.70467 13.881735 0.0034851739 1 1
9350 297.515 13.599319 0.0034851739 1 1
9400 341.45203 -28.494544 0.0034851739 1 1
9450 319.29703 -27.907344 0.0034851739 1 1
9500 332.50473 4.9891138 0.0034851739 1 1
9550 293.10499 -8.3244772 0.0034851739 1 1
9600 255.31174 2.2568315 0.0034851739 1 1
9650 250.01932 5.7005159 0.0034851739 1 1
9700 278.37409 -8.5970424 0.0034851739 1 1
9750 294.86737 17.686447 0.0034851739 1 1
9800 277.07345 -2.0856886 0.0034851739 1 1
9850 295.54707 2.8365471 0.0034851739 1 1
9900 311.51074 29.885116 0.0034851739 1 1
9950 296.01363 12.206068 0.0034851739 1 1
10000 341.35187 -3.0045464 0.0034851739 1 1
Loop time of 3.64332 on 4 procs for 10000 steps with 44 atoms
Performance: 237.146 ns/day, 0.101 hours/ns, 2744.751 timesteps/s
94.5% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0029962 | 0.10426 | 0.34564 | 43.9 | 2.86
Bond | 0.005929 | 0.29803 | 0.95305 | 71.2 | 8.18
Kspace | 0.83969 | 1.5992 | 1.9344 | 35.6 | 43.89
Neigh | 0.65468 | 0.66443 | 0.67431 | 0.9 | 18.24
Comm | 0.1727 | 0.23754 | 0.2745 | 8.0 | 6.52
Output | 0.0048738 | 0.010774 | 0.028434 | 9.8 | 0.30
Modify | 0.62478 | 0.70376 | 0.779 | 6.5 | 19.32
Other | | 0.02531 | | | 0.69
Nlocal: 11 ave 40 max 0 min
Histogram: 2 1 0 0 0 0 0 0 0 1
Nghost: 36 ave 47 max 7 min
Histogram: 1 0 0 0 0 0 0 0 0 3
Neighs: 203 ave 809 max 0 min
Histogram: 3 0 0 0 0 0 0 0 0 1
Total # of neighbors = 812
Ave neighs/atom = 18.4545
Ave special neighs/atom = 9.77273
Neighbor list builds = 10000
Dangerous builds = 0
# write_restart restart_longrun
# write_data restart_longrun.data
Total wall time: 0:00:03

View File

@ -0,0 +1,35 @@
this is a nominal superimpose file
2 edgeIDs
18 equivalences
BondingIDs
10
1
EdgeIDs
16
8
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18

View File

@ -0,0 +1,189 @@
this is a molecule template for: initial nylon crosslink, post-reacting
18 atoms
17 bonds
31 angles
39 dihedrals
20 impropers
Types
1 9
2 1
3 1
4 8
5 8
6 4
7 4
8 1
9 1
10 2
11 6
12 3
13 4
14 4
15 5
16 1
17 4
18 4
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
16 0.000000
17 0.000000
18 0.000000
Coords
1 -5.522237 -0.752722 1.631158
2 -5.170398 -0.545733 0.178130
3 -6.469695 -0.553072 -0.648889
4 -6.052076 -1.721152 1.744648
5 -6.183059 0.071387 1.971497
6 -4.489340 -1.389197 -0.173156
7 -4.637591 0.453703 0.051252
8 -5.618658 0.138919 4.386107
9 -4.669492 -0.989819 3.943591
10 -4.270194 -0.766405 2.474102
11 -3.348470 -1.875393 2.024289
12 -3.569794 0.564183 2.345995
13 -5.201079 -1.993301 4.044219
14 -3.736682 -0.984819 4.598305
15 -4.255402 1.370923 2.679069
16 -6.136394 -0.339866 -2.136775
17 -6.996331 -1.555519 -0.517408
18 -7.153308 0.284949 -0.289930
Bonds
1 11 1 2
2 12 1 4
3 12 1 5
4 13 1 10
5 2 2 3
6 1 2 6
7 1 2 7
8 2 3 16
9 1 3 17
10 1 3 18
11 2 8 9
12 4 9 10
13 1 9 13
14 1 9 14
15 5 10 11
16 3 10 12
17 6 12 15
Angles
1 17 2 1 4
2 17 2 1 5
3 18 2 1 10
4 19 4 1 5
5 20 4 1 10
6 20 5 1 10
7 21 1 2 3
8 22 1 2 6
9 22 1 2 7
10 2 3 2 6
11 2 3 2 7
12 1 6 2 7
13 3 2 3 16
14 2 2 3 17
15 2 2 3 18
16 2 16 3 17
17 2 16 3 18
18 1 17 3 18
19 8 8 9 10
20 2 8 9 13
21 2 8 9 14
22 23 13 9 10
23 23 14 9 10
24 1 13 9 14
25 6 9 10 11
26 4 9 10 12
27 24 1 10 9
28 25 11 10 12
29 26 1 10 11
30 27 1 10 12
31 7 10 12 15
Dihedrals
1 19 4 1 2 3
2 20 4 1 2 6
3 20 4 1 2 7
4 19 5 1 2 3
5 20 5 1 2 6
6 20 5 1 2 7
7 21 10 1 2 3
8 22 10 1 2 6
9 22 10 1 2 7
10 23 2 1 10 9
11 24 2 1 10 11
12 25 2 1 10 12
13 26 4 1 10 9
14 27 4 1 10 11
15 28 4 1 10 12
16 26 5 1 10 9
17 27 5 1 10 11
18 28 5 1 10 12
19 29 1 2 3 16
20 30 1 2 3 17
21 30 1 2 3 18
22 4 16 3 2 6
23 2 6 2 3 17
24 2 6 2 3 18
25 4 16 3 2 7
26 2 7 2 3 17
27 2 7 2 3 18
28 10 8 9 10 11
29 8 8 9 10 12
30 31 8 9 10 1
31 11 13 9 10 11
32 9 13 9 10 12
33 32 13 9 10 1
34 11 14 9 10 11
35 9 14 9 10 12
36 32 14 9 10 1
37 6 9 10 12 15
38 7 11 10 12 15
39 33 1 10 12 15
Impropers
1 1 2 1 4 5
2 1 2 1 4 10
3 1 2 1 5 10
4 1 4 1 5 10
5 1 1 2 3 6
6 1 1 2 3 7
7 1 1 2 6 7
8 1 3 2 6 7
9 1 2 3 16 17
10 1 2 3 16 18
11 1 2 3 17 18
12 1 16 3 17 18
13 1 8 9 13 10
14 1 8 9 14 10
15 1 8 9 13 14
16 1 13 9 14 10
17 1 9 10 11 12
18 1 1 10 9 11
19 1 1 10 9 12
20 1 1 10 11 12

View File

@ -0,0 +1,160 @@
this is a molecule template for: initial nylon crosslink, pre-reacting
18 atoms
16 bonds
25 angles
23 dihedrals
14 impropers
Types
1 7
2 1
3 1
4 8
5 8
6 4
7 4
8 1
9 1
10 2
11 6
12 3
13 4
14 4
15 5
16 1
17 4
18 4
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
16 0.000000
17 0.000000
18 0.000000
Coords
1 -4.922858 -0.946982 1.146055
2 -5.047195 -0.935267 -0.358173
3 -6.526281 -0.755366 -0.743523
4 -5.282604 0.020447 1.552710
5 -3.860697 -1.095850 1.428305
6 -4.662382 -1.920900 -0.781524
7 -4.433977 -0.072765 -0.784071
8 -5.506279 0.202610 4.825816
9 -4.449177 -0.844592 4.423366
10 -4.103916 -0.749629 2.925195
11 -3.376249 -1.886171 2.245643
12 -4.493235 0.477214 2.137199
13 -4.849053 -1.888877 4.663994
14 -3.491823 -0.662913 5.018510
15 -5.020777 1.189745 2.805427
16 -3.964987 2.900602 -1.551341
17 -4.460694 2.836102 0.668882
18 -4.828494 3.219656 -0.122111
Bonds
1 14 1 2
2 10 1 4
3 10 1 5
4 2 2 3
5 1 2 6
6 1 2 7
7 2 3 16
8 1 3 17
9 1 3 18
10 2 8 9
11 4 9 10
12 1 9 13
13 1 9 14
14 5 10 11
15 3 10 12
16 6 12 15
Angles
1 15 2 1 4
2 15 2 1 5
3 16 4 1 5
4 28 1 2 3
5 14 1 2 6
6 14 1 2 7
7 2 3 2 6
8 2 3 2 7
9 1 6 2 7
10 3 2 3 16
11 2 2 3 17
12 2 2 3 18
13 2 16 3 17
14 2 16 3 18
15 1 17 3 18
16 8 8 9 10
17 2 8 9 13
18 2 8 9 14
19 23 13 9 10
20 23 14 9 10
21 1 13 9 14
22 6 9 10 11
23 4 9 10 12
24 25 11 10 12
25 7 10 12 15
Dihedrals
1 34 4 1 2 3
2 35 4 1 2 6
3 35 4 1 2 7
4 34 5 1 2 3
5 35 5 1 2 6
6 35 5 1 2 7
7 36 1 2 3 16
8 12 1 2 3 17
9 12 1 2 3 18
10 4 16 3 2 6
11 2 6 2 3 17
12 2 6 2 3 18
13 4 16 3 2 7
14 2 7 2 3 17
15 2 7 2 3 18
16 10 8 9 10 11
17 8 8 9 10 12
18 11 13 9 10 11
19 9 13 9 10 12
20 11 14 9 10 11
21 9 14 9 10 12
22 6 9 10 12 15
23 7 11 10 12 15
Impropers
1 6 2 1 4 5
2 11 9 10 11 12
3 1 1 2 3 6
4 1 1 2 3 7
5 1 1 2 6 7
6 1 3 2 6 7
7 1 2 3 16 17
8 1 2 3 16 18
9 1 2 3 17 18
10 1 16 3 17 18
11 1 8 9 13 10
12 1 8 9 14 10
13 1 8 9 13 14
14 1 13 9 14 10

View File

@ -0,0 +1,32 @@
this is a nominal superimpose file
2 edgeIDs
15 equivalences
BondingIDs
4
12
EdgeIDs
8
3
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15

View File

@ -0,0 +1,131 @@
this is a molecule template for: water condensation, post-reacting
15 atoms
13 bonds
19 angles
16 dihedrals
10 impropers
Types
1 9
2 1
3 1
4 10
5 8
6 4
7 4
8 1
9 1
10 2
11 6
12 11
13 4
14 4
15 10
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.410000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 -0.820000
13 0.000000
14 0.000000
15 0.410000
Coords
1 -4.856280 -1.050468 1.432625
2 -5.047195 -0.935267 -0.358173
3 -6.526281 -0.755366 -0.743523
4 -5.282604 0.020447 1.552710
5 -3.860697 -1.095850 1.428305
6 -4.662382 -1.920900 -0.781524
7 -4.433977 -0.072765 -0.784071
8 -5.506279 0.202610 4.825816
9 -4.449177 -0.844592 4.423366
10 -4.103916 -0.749629 2.925195
11 -3.376249 -1.886171 2.245643
12 -4.493235 0.477214 2.137199
13 -4.849053 -1.888877 4.663994
14 -3.491823 -0.662913 5.018510
15 -5.020777 1.189745 2.805427
Bonds
1 11 1 2
2 12 1 5
3 13 1 10
4 2 2 3
5 1 2 6
6 1 2 7
7 15 4 12
8 2 8 9
9 4 9 10
10 1 9 13
11 1 9 14
12 5 10 11
13 15 15 12
Angles
1 17 2 1 5
2 18 2 1 10
3 20 5 1 10
4 21 1 2 3
5 22 1 2 6
6 22 1 2 7
7 2 3 2 6
8 2 3 2 7
9 1 6 2 7
10 8 8 9 10
11 2 8 9 13
12 2 8 9 14
13 23 13 9 10
14 23 14 9 10
15 1 13 9 14
16 6 9 10 11
17 24 1 10 9
18 26 1 10 11
19 29 15 12 4
Dihedrals
1 19 5 1 2 3
2 20 5 1 2 6
3 20 5 1 2 7
4 21 10 1 2 3
5 22 10 1 2 6
6 22 10 1 2 7
7 23 2 1 10 9
8 24 2 1 10 11
9 26 5 1 10 9
10 27 5 1 10 11
11 10 8 9 10 11
12 31 8 9 10 1
13 11 13 9 10 11
14 32 13 9 10 1
15 11 14 9 10 11
16 32 14 9 10 1
Impropers
1 12 2 1 5 10
2 13 1 10 9 11
3 1 1 2 3 6
4 1 1 2 3 7
5 1 1 2 6 7
6 1 3 2 6 7
7 1 8 9 13 10
8 1 8 9 14 10
9 1 8 9 13 14
10 1 13 9 14 10

View File

@ -0,0 +1,158 @@
this is a molecule template for: water condensation, pre-reacting
15 atoms
14 bonds
25 angles
30 dihedrals
16 impropers
Types
1 9
2 1
3 1
4 8
5 8
6 4
7 4
8 1
9 1
10 2
11 6
12 3
13 4
14 4
15 5
Charges
1 -0.300000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.300000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
Coords
1 -4.922858 -0.946982 1.146055
2 -5.047195 -0.935267 -0.358173
3 -6.526281 -0.755366 -0.743523
4 -5.282604 0.020447 1.552710
5 -3.860697 -1.095850 1.428305
6 -4.662382 -1.920900 -0.781524
7 -4.433977 -0.072765 -0.784071
8 -5.506279 0.202610 4.825816
9 -4.449177 -0.844592 4.423366
10 -4.103916 -0.749629 2.925195
11 -3.376249 -1.886171 2.245643
12 -4.493235 0.477214 2.137199
13 -4.849053 -1.888877 4.663994
14 -3.491823 -0.662913 5.018510
15 -5.020777 1.189745 2.805427
Bonds
1 11 1 2
2 12 1 4
3 12 1 5
4 13 1 10
5 2 2 3
6 1 2 6
7 1 2 7
8 2 8 9
9 4 9 10
10 1 9 13
11 1 9 14
12 5 10 11
13 3 10 12
14 6 12 15
Angles
1 17 2 1 4
2 17 2 1 5
3 18 2 1 10
4 19 4 1 5
5 20 4 1 10
6 20 5 1 10
7 21 1 2 3
8 22 1 2 6
9 22 1 2 7
10 2 3 2 6
11 2 3 2 7
12 1 6 2 7
13 8 8 9 10
14 2 8 9 13
15 2 8 9 14
16 23 13 9 10
17 23 14 9 10
18 1 13 9 14
19 6 9 10 11
20 4 9 10 12
21 24 1 10 9
22 25 11 10 12
23 26 1 10 11
24 27 1 10 12
25 7 10 12 15
Dihedrals
1 19 4 1 2 3
2 20 4 1 2 6
3 20 4 1 2 7
4 19 5 1 2 3
5 20 5 1 2 6
6 20 5 1 2 7
7 21 10 1 2 3
8 22 10 1 2 6
9 22 10 1 2 7
10 23 2 1 10 9
11 24 2 1 10 11
12 25 2 1 10 12
13 26 4 1 10 9
14 27 4 1 10 11
15 28 4 1 10 12
16 26 5 1 10 9
17 27 5 1 10 11
18 28 5 1 10 12
19 10 8 9 10 11
20 8 8 9 10 12
21 31 8 9 10 1
22 11 13 9 10 11
23 9 13 9 10 12
24 32 13 9 10 1
25 11 14 9 10 11
26 9 14 9 10 12
27 32 14 9 10 1
28 6 9 10 12 15
29 7 11 10 12 15
30 33 1 10 12 15
Impropers
1 1 2 1 4 5
2 1 2 1 4 10
3 1 2 1 5 10
4 1 4 1 5 10
5 1 1 2 3 6
6 1 1 2 3 7
7 1 1 2 6 7
8 1 3 2 6 7
9 1 8 9 13 10
10 1 8 9 14 10
11 1 8 9 13 14
12 1 13 9 14 10
13 1 9 10 11 12
14 1 1 10 9 11
15 1 1 10 9 12
16 1 1 10 11 12

View File

@ -0,0 +1,795 @@
this is LAMMPS data file containing two nylon monomers
44 atoms
11 atom types
42 bonds
15 bond types
74 angles
29 angle types
100 dihedrals
36 dihedral types
44 impropers
13 improper types
5 extra bond per atom
15 extra angle per atom
15 extra dihedral per atom
25 extra improper per atom
25 extra special per atom
-25 25 xlo xhi
-25 25 ylo yhi
-25 25 zlo zhi
Masses
1 12.0112
2 12.0112
3 15.9994
4 1.00797
5 1.00797
6 15.9994
7 14.0067
8 1.00797
9 14.0067
10 1.00797
11 15.9994
Pair Coeffs # lj/class2/coul/cut
1 0.054 4.01
2 0.12 3.81
3 0.24 3.535
4 0.02 2.7
5 0.013 1.098
6 0.267 3.3
7 0.065 4.07
8 0.013 1.098
9 0.106 4.07
10 0.013 1.098
11 0.26 3.61
Bond Coeffs # class2
1 1.101 345 -691.89 844.6
2 1.53 299.67 -501.77 679.81
3 1.3649 368.731 -832.478 1274.02
4 1.5202 253.707 -423.037 396.9
5 1.202 851.14 -1918.49 2160.77
6 0.965 532.506 -1282.9 2004.77
7 1.53 299.67 -501.77 679.81
8 1.101 345 -691.89 844.6
9 1.457 365.805 -699.637 998.484
10 1.006 466.74 -1073.6 1251.11
11 1.452 327.166 -547.899 526.5
12 1.01 462.75 -1053.63 1545.76
13 1.416 359.159 -558.473 1146.38
14 1.457 365.805 -699.637 998.484
15 0.97 563.28 -1428.22 1902.12
Angle Coeffs # class2
1 107.66 39.641 -12.921 -2.4318
2 110.77 41.453 -10.604 5.129
3 112.67 39.516 -7.443 -9.5583
4 123.145 55.5431 -17.2123 0.1348
5 118.986 98.6813 -22.2485 10.3673
6 123.145 55.5431 -17.2123 0.1348
7 111.254 53.5303 -11.8454 -11.5405
8 108.53 51.9747 -9.4851 -10.9985
9 107.734 40.6099 -28.8121 0
10 110.77 41.453 -10.604 5.129
11 112.67 39.516 -7.443 -9.5583
12 107.66 39.641 -12.921 -2.4318
13 111.91 60.7147 -13.3366 -13.0785
14 110.62 51.3137 -6.7198 -2.6003
15 110.954 50.8652 -4.4522 -10.0298
16 107.067 45.252 -7.5558 -9.512
17 113.868 45.9271 -20.0824 0
18 111.037 31.8958 -6.6942 -6.837
19 116.94 37.5749 -8.6676 0
20 117.961 37.4964 -8.1837 0
21 114.302 42.6589 -10.5464 -9.3243
22 108.937 57.401 2.9374 0
23 107.734 40.6099 -28.8121 0
24 116.926 39.4193 -10.9945 -8.7733
25 118.986 98.6813 -22.2485 10.3673
26 125.542 92.572 -34.48 -11.1871
27 0 0 0 0
28 111.91 60.7147 -13.3366 -13.0785
29 103.7 49.84 -11.6 -8
BondBond Coeffs
1 5.3316 1.101 1.101
2 3.3872 1.53 1.101
3 0 1.53 1.53
4 0 1.5202 1.3649
5 0 1.3649 1.202
6 46.0685 1.5202 1.202
7 0 1.3649 0.965
8 5.4199 1.53 1.5202
9 0.7115 1.5202 1.101
10 3.3872 1.53 1.101
11 0 1.53 1.53
12 5.3316 1.101 1.101
13 4.6217 1.53 1.457
14 12.426 1.457 1.101
15 -6.4168 1.457 1.006
16 -1.8749 1.006 1.006
17 -3.471 1.452 1.01
18 12.1186 1.452 1.416
19 -0.5655 1.01 1.01
20 -4.3126 1.01 1.416
21 3.5446 1.452 1.53
22 15.2994 1.452 1.101
23 0.7115 1.101 1.5202
24 0 1.416 1.5202
25 0 1.202 1.3649
26 138.495 1.416 1.202
27 0 1.416 1.3649
28 4.6217 1.457 1.53
29 -9.5 0.97 0.97
BondAngle Coeffs
1 18.103 18.103 1.101 1.101
2 20.754 11.421 1.53 1.101
3 8.016 8.016 1.53 1.53
4 0 0 1.5202 1.3649
5 0 0 1.3649 1.202
6 34.9982 37.1298 1.5202 1.202
7 0 0 1.3649 0.965
8 18.1678 15.8758 1.53 1.5202
9 12.4632 9.1765 1.5202 1.101
10 20.754 11.421 1.53 1.101
11 8.016 8.016 1.53 1.53
12 18.103 18.103 1.101 1.101
13 6.0876 16.5702 1.53 1.457
14 42.4332 13.4582 1.457 1.101
15 31.8096 20.5799 1.457 1.006
16 28.0322 28.0322 1.006 1.006
17 11.8828 5.9339 1.452 1.01
18 3.7812 14.8633 1.452 1.416
19 19.8125 19.8125 1.01 1.01
20 10.8422 29.5743 1.01 1.416
21 4.6031 -5.479 1.452 1.53
22 34.8907 10.6917 1.452 1.101
23 9.1765 12.4632 1.101 1.5202
24 0 0 1.416 1.5202
25 0 0 1.202 1.3649
26 62.7124 52.4045 1.416 1.202
27 0 0 1.416 1.3649
28 16.5702 6.0876 1.457 1.53
29 22.35 22.35 0.97 0.97
Dihedral Coeffs # class2
1 -0.0228 0 0.028 0 -0.1863 0
2 -0.1432 0 0.0617 0 -0.1083 0
3 0.0972 0 0.0722 0 -0.2581 0
4 0 0 0.0316 0 -0.1681 0
5 0 0 0.0514 0 -0.143 0
6 0 0 0 0 0 0
7 -2.7332 0 2.9646 0 -0.0155 0
8 0 0 0 0 0 0
9 0 0 0 0 0 0
10 0.0442 0 0.0292 0 0.0562 0
11 -0.1804 0 0.0012 0 0.0371 0
12 -0.2428 0 0.4065 0 -0.3079 0
13 -0.1432 0 0.0617 0 -0.1083 0
14 0.1764 0 0.1766 0 -0.5206 0
15 0 0 0.0316 0 -0.1681 0
16 0 0 0.0514 0 -0.143 0
17 -1.1506 0 -0.6344 0 -0.1845 0
18 -0.5187 0 -0.4837 0 -0.1692 0
19 -0.0483 0 -0.0077 0 -0.0014 0
20 -0.0148 0 -0.0791 0 -0.0148 0
21 0.0143 0 -0.0132 0 0.0091 0
22 0.0219 0 -0.026 0 0.0714 0
23 -0.7532 0 2.7392 0 0.0907 0
24 0.8297 0 3.7234 0 -0.0495 0
25 0 0 0 0 0 0
26 0 0 0 0 0 0
27 -1.6938 0 2.7386 0 -0.336 0
28 0 0 0 0 0 0
29 0.0972 0 0.0722 0 -0.2581 0
30 -0.0228 0 0.028 0 -0.1863 0
31 0.1693 0 -0.009 0 -0.0687 0
32 0.1693 0 -0.009 0 -0.0687 0
33 0 0 0 0 0 0
34 -1.1506 0 -0.6344 0 -0.1845 0
35 -0.5187 0 -0.4837 0 -0.1692 0
36 0.1764 0 0.1766 0 -0.5206 0
AngleAngleTorsion Coeffs
1 -5.3624 108.53 110.77
2 -12.564 110.77 110.77
3 -0.3801 112.67 108.53
4 -16.164 112.67 110.77
5 -22.045 112.67 112.67
6 0 0 111.254
7 0 118.985 111.254
8 0 108.53 0
9 0 107.734 0
10 -8.019 108.53 123.145
11 -15.3496 107.734 123.145
12 -15.7572 111.91 110.77
13 -12.564 110.77 110.77
14 -27.3953 112.67 111.91
15 -16.164 112.67 110.77
16 -22.045 112.67 112.67
17 -7.5499 111.91 110.954
18 -10.4258 110.62 110.954
19 -4.6337 113.868 114.302
20 -6.659 113.868 108.937
21 -7.4314 111.037 114.302
22 -8.1335 111.037 108.937
23 -6.5335 111.037 116.926
24 -15.5547 111.037 125.542
25 0 111.037 0
26 -1.3234 117.961 116.926
27 -7.3186 117.961 125.542
28 0 117.961 0
29 -1.0631 114.302 112.67
30 -12.7974 114.302 110.77
31 -5.4514 108.53 116.926
32 -12.2417 107.734 116.926
33 0 0 111.254
34 -7.5499 110.954 111.91
35 -10.4258 110.954 110.62
36 -27.3953 111.91 112.67
EndBondTorsion Coeffs
1 -0.0204 0.3628 -0.4426 -0.0097 -0.0315 -0.0755 1.5202 1.101
2 0.213 0.312 0.0777 0.213 0.312 0.0777 1.101 1.101
3 0.0062 -0.0002 0.0036 0.0055 0.006 -0.0009 1.53 1.5202
4 0.2486 0.2422 -0.0925 0.0814 0.0591 0.2219 1.53 1.101
5 -0.0732 0 0 -0.0732 0 0 1.53 1.53
6 0 0 0 0 0 0 1.5202 0.965
7 0 0 0 0 0 0 1.202 0.965
8 0 0 0 0 0 0 1.53 1.3649
9 0 0 0 0 0 0 1.101 1.3649
10 0.2654 0.0503 0.1046 -0.281 0.0816 -0.1522 1.53 1.202
11 1.2143 0.2831 0.3916 -0.2298 0.0354 0.3853 1.101 1.202
12 0.1022 0.209 0.6433 0.196 0.7056 0.112 1.457 1.101
13 0.213 0.312 0.0777 0.213 0.312 0.0777 1.101 1.101
14 0.1032 0.5896 -0.4836 0.0579 -0.0043 -0.1906 1.53 1.457
15 0.2486 0.2422 -0.0925 0.0814 0.0591 0.2219 1.53 1.101
16 -0.0732 0 0 -0.0732 0 0 1.53 1.53
17 -0.9466 0.9356 -0.5542 0.057 0.0625 0.4112 1.53 1.006
18 -1.1685 0.9266 -0.0993 0.085 0.3061 0.2104 1.101 1.006
19 -0.0992 -0.0727 -0.4139 0.132 0.0015 0.1324 1.01 1.53
20 -0.4894 0.1644 0.3105 -0.8983 0.2826 0.0881 1.01 1.101
21 -0.1245 -0.9369 0.7781 -0.2033 0.0035 0.056 1.416 1.53
22 0.2292 1.1732 -0.058 -0.3667 0.8197 0.1335 1.416 1.101
23 0.2299 -0.1141 -0.1424 0.0933 -0.4631 0.2883 1.452 1.5202
24 0.1598 0.7253 -0.1007 0.1226 -2.1326 0.5581 1.452 1.202
25 0 0 0 0 0 0 1.452 1.3649
26 0.6413 0.1676 0.144 -0.6979 0.5619 0.4212 1.01 1.5202
27 0.1214 0.1936 0.0816 -0.7604 -2.6431 1.2467 1.01 1.202
28 0 0 0 0 0 0 1.01 1.3649
29 -0.0797 -0.0406 0.0255 0.0742 0.0105 0.0518 1.452 1.53
30 0.3022 0.2513 0.4641 -0.0601 -0.3763 -0.1876 1.452 1.101
31 -0.2631 -0.0076 -0.1145 -0.2751 -0.3058 -0.1767 1.53 1.416
32 -0.0268 0.7836 0.0035 0.3552 -0.2685 0.5834 1.101 1.416
33 0 0 0 0 0 0 1.416 0.965
34 0.057 0.0625 0.4112 -0.9466 0.9356 -0.5542 1.006 1.53
35 0.085 0.3061 0.2104 -1.1685 0.9266 -0.0993 1.006 1.101
36 0.0579 -0.0043 -0.1906 0.1032 0.5896 -0.4836 1.457 1.53
MiddleBondTorsion Coeffs
1 -3.5039 1.2458 -0.761 1.53
2 -14.261 -0.5322 -0.4864 1.53
3 -1.5945 0.2267 -0.6911 1.53
4 -14.879 -3.6581 -0.3138 1.53
5 -17.787 -7.1877 0 1.53
6 0 0 0 1.3649
7 0 0 0 1.3649
8 0 0 0 1.5202
9 0 0 0 1.5202
10 0.3388 -0.1096 0.1219 1.5202
11 0.2359 0.9139 0.9594 1.5202
12 -10.4959 -0.7647 -0.0545 1.53
13 -14.261 -0.5322 -0.4864 1.53
14 -15.4174 -7.3055 -1.0749 1.53
15 -14.879 -3.6581 -0.3138 1.53
16 -17.787 -7.1877 0 1.53
17 -2.2208 0.5479 -0.3527 1.457
18 -3.4611 1.6996 -0.6007 1.457
19 -3.5406 -3.3866 0.0352 1.452
20 -1.1752 2.8058 0.8083 1.452
21 -3.9501 -0.4002 -0.6798 1.452
22 -0.6899 -2.2646 1.1579 1.452
23 0 0 0 1.416
24 -8.8301 14.3079 -1.7716 1.416
25 0 0 0 1.416
26 0 0 0 1.416
27 -0.9084 6.1447 -0.4852 1.416
28 0 0 0 1.416
29 -4.2324 -3.3023 -1.3244 1.53
30 -4.1028 -0.5941 -0.047 1.53
31 0 0 0 1.5202
32 0 0 0 1.5202
33 0 0 0 1.3649
34 -2.2208 0.5479 -0.3527 1.457
35 -3.4611 1.6996 -0.6007 1.457
36 -15.4174 -7.3055 -1.0749 1.53
BondBond13 Coeffs
1 0 1.5202 1.101
2 0 1.101 1.101
3 0 1.53 1.5202
4 0 1.53 1.101
5 0 1.53 1.53
6 0 1.5202 0.965
7 0 1.202 0.965
8 0 1.53 1.3649
9 0 1.101 1.3649
10 0 1.53 1.202
11 0 1.101 1.202
12 0 1.457 1.101
13 0 1.101 1.101
14 0 1.53 1.457
15 0 1.53 1.101
16 0 1.53 1.53
17 0 1.53 1.006
18 0 1.101 1.006
19 0 1.01 1.53
20 0 1.01 1.101
21 0 1.416 1.53
22 0 1.416 1.101
23 0 1.452 1.5202
24 0 1.452 1.202
25 0 1.452 1.3649
26 0 1.01 1.5202
27 0 1.01 1.202
28 0 1.01 1.3649
29 0 1.452 1.53
30 0 1.452 1.101
31 0 1.53 1.416
32 0 1.101 1.416
33 0 1.416 0.965
34 0 1.006 1.53
35 0 1.006 1.101
36 0 1.457 1.53
AngleTorsion Coeffs
1 -0.7466 -0.9448 -0.6321 0.0162 1.4211 -1.4092 108.53 110.77
2 -0.8085 0.5569 -0.2466 -0.8085 0.5569 -0.2466 110.77 110.77
3 -0.2607 0.3203 -0.2283 0.0515 -0.0674 -0.0474 112.67 108.53
4 -0.2454 0 -0.1136 0.3113 0.4516 -0.1988 112.67 110.77
5 0.3886 -0.3139 0.1389 0.3886 -0.3139 0.1389 112.67 112.67
6 0 0 0 0 0 0 0 111.254
7 0 0 0 0 0 0 118.985 111.254
8 0 0 0 0 0 0 108.53 0
9 0 0 0 0 0 0 107.734 0
10 0.0885 -1.3703 -0.5452 0.675 0.5965 0.6725 108.53 123.145
11 9.1299 -0.4847 0.3582 -1.4946 0.7308 -0.2083 107.734 123.145
12 -1.1075 0.282 0.8318 0.5111 1.6328 -1.0155 111.91 110.77
13 -0.8085 0.5569 -0.2466 -0.8085 0.5569 -0.2466 110.77 110.77
14 -1.9225 -1.345 0.221 2.0125 0.944 -2.7612 112.67 111.91
15 -0.2454 0 -0.1136 0.3113 0.4516 -0.1988 112.67 110.77
16 0.3886 -0.3139 0.1389 0.3886 -0.3139 0.1389 112.67 112.67
17 -3.343 4.4558 -0.0346 0.2873 -0.8072 -0.096 111.91 110.954
18 -3.9582 2.0063 0.3213 -0.4294 -0.4442 -0.6141 110.62 110.954
19 -0.5807 0.2041 -0.1384 -2.8967 2.7084 -0.0375 113.868 114.302
20 -0.3868 0.2041 0.0445 -3.7022 1.3876 0.2393 113.868 108.937
21 -1.523 1.1296 0.7167 -0.7555 0.0564 1.2177 111.037 114.302
22 0.0372 -0.3418 -0.0775 -1.5157 2.0781 0.5364 111.037 108.937
23 5.916 1.7856 0.4052 4.2133 2.9302 3.2903 111.037 116.926
24 7.4427 2.1505 -0.2206 4.4466 4.0317 1.7129 111.037 125.542
25 0 0 0 0 0 0 111.037 0
26 1.9306 0.2105 0.0557 -2.2134 1.2909 0.9726 117.961 116.926
27 2.3848 0.703 0.1399 -2.6238 0.3606 0.5474 117.961 125.542
28 0 0 0 0 0 0 117.961 0
29 0.2039 0.1602 -0.7946 -0.5501 -1.6982 0.2485 114.302 112.67
30 -1.982 0.2325 -0.3928 -1.2469 1.6933 -1.2081 114.302 110.77
31 2.1802 -0.0335 -1.3816 2.1221 0.5032 -0.0767 108.53 116.926
32 7.095 0.0075 0.691 2.0013 0.5068 0.8406 107.734 116.926
33 0 0 0 0 0 0 0 111.254
34 0.2873 -0.8072 -0.096 -3.343 4.4558 -0.0346 110.954 111.91
35 -0.4294 -0.4442 -0.6141 -3.9582 2.0063 0.3213 110.954 110.62
36 2.0125 0.944 -2.7612 -1.9225 -1.345 0.221 111.91 112.67
Improper Coeffs # class2
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 0
13 24.3329 0
AngleAngle Coeffs
1 0 0 0 0 118.985 123.145
2 0.2738 -0.4825 0.2738 110.77 107.66 110.77
3 -1.3199 -1.3199 0.1184 112.67 110.77 110.77
4 2.0403 -1.8202 1.0827 108.53 107.734 110.77
5 -3.3867 -3.4976 -3.3867 107.734 107.66 107.734
6 0 0 0 110.954 107.067 110.954
7 0.2738 -0.4825 0.2738 110.77 107.66 110.77
8 -1.3199 -1.3199 0.1184 112.67 110.77 110.77
9 -2.5301 0.5381 2.4286 111.91 110.62 110.77
10 2.4321 -3.5496 2.4321 110.62 107.66 110.62
11 0 0 0 123.145 118.985 0
12 0 0 0 113.868 117.961 111.037
13 0 0 0 116.926 123.145 125.542
Atoms # full
1 1 1 0.0000000000000000e+00 12.288168 0.738732 4.374280 0 0 0
2 1 2 2.9999999999999999e-01 13.959928 -0.883144 5.090597 0 0 0
3 1 3 0.0000000000000000e+00 14.411288 -1.994419 5.682160 0 0 0
4 1 4 0.0000000000000000e+00 12.881083 0.872503 3.506176 0 0 0
5 1 4 0.0000000000000000e+00 11.232775 0.801641 3.998777 0 0 0
6 1 5 0.0000000000000000e+00 13.704366 -2.470396 6.130105 0 0 0
7 1 1 0.0000000000000000e+00 12.489752 -0.793693 4.710639 0 0 0
8 1 1 0.0000000000000000e+00 12.455071 1.866388 5.385870 0 0 0
9 1 1 0.0000000000000000e+00 11.248961 1.901849 6.347664 0 0 0
10 1 2 2.9999999999999999e-01 10.005971 2.466710 5.772840 -1 1 0
11 1 6 0.0000000000000000e+00 14.795360 -0.034436 4.807367 0 0 0
12 1 6 0.0000000000000000e+00 9.115239 1.654547 5.617002 -1 0 0
13 1 3 0.0000000000000000e+00 9.745096 3.807654 5.573585 -1 1 0
14 1 4 0.0000000000000000e+00 12.248215 -1.371492 3.808598 0 0 0
15 1 4 0.0000000000000000e+00 11.715755 -1.036825 5.500449 0 0 0
16 1 4 0.0000000000000000e+00 12.559724 2.807687 4.858452 0 1 0
17 1 4 0.0000000000000000e+00 13.299968 1.616570 6.123781 0 0 0
18 1 4 0.0000000000000000e+00 11.650505 2.330454 7.282410 0 1 0
19 1 4 0.0000000000000000e+00 10.888420 0.913219 6.637162 -1 0 0
20 1 5 0.0000000000000000e+00 10.550073 4.294209 5.758192 -1 1 0
21 2 1 0.0000000000000000e+00 5.851425 1.929552 6.038335 0 0 0
22 2 1 0.0000000000000000e+00 6.741509 3.160751 6.233074 0 0 0
23 2 7 -2.9999999999999999e-01 7.957761 3.121780 5.252257 1 0 0
24 2 7 -2.9999999999999999e-01 2.599653 -2.258940 5.985863 0 -1 0
25 2 1 0.0000000000000000e+00 3.834337 -1.907078 5.441528 0 -1 0
26 2 1 0.0000000000000000e+00 4.810793 -1.083699 6.310184 0 -1 0
27 2 4 0.0000000000000000e+00 6.505912 1.182799 5.449104 0 0 0
28 2 4 0.0000000000000000e+00 5.156429 2.256468 5.348423 0 0 0
29 2 4 0.0000000000000000e+00 7.232782 3.178785 7.181911 0 0 0
30 2 4 0.0000000000000000e+00 6.251671 4.103621 6.222913 0 0 0
31 2 8 0.0000000000000000e+00 8.249909 4.070668 4.881297 1 0 0
32 2 8 0.0000000000000000e+00 7.813025 2.623184 4.400744 1 0 0
33 2 8 0.0000000000000000e+00 2.626695 -2.857547 6.817247 0 -1 0
34 2 8 0.0000000000000000e+00 1.955281 -2.684319 5.328460 0 -1 0
35 2 4 0.0000000000000000e+00 3.637708 -1.322842 4.469265 0 -1 0
36 2 4 0.0000000000000000e+00 4.415570 -2.739689 4.997336 0 -1 0
37 2 4 0.0000000000000000e+00 5.710714 -1.010014 5.642798 0 -1 0
38 2 4 0.0000000000000000e+00 5.103831 -1.696423 7.160345 0 -1 0
39 2 1 0.0000000000000000e+00 5.270763 1.286629 7.308822 0 0 0
40 2 4 0.0000000000000000e+00 4.834381 2.168531 7.931687 0 0 1
41 2 4 0.0000000000000000e+00 6.118354 0.786724 7.794709 0 0 1
42 2 1 0.0000000000000000e+00 4.273849 0.167695 6.957862 0 -1 0
43 2 4 0.0000000000000000e+00 3.792544 -0.081782 7.904418 0 -1 1
44 2 4 0.0000000000000000e+00 3.527495 0.674238 6.348869 0 0 0
Velocities
1 -2.4626989626218821e-03 -1.5920230003311222e-03 -3.0621927786115238e-03
2 9.5082416704385837e-03 -6.9903166167507250e-03 1.3702671335945608e-02
3 2.3431518493187576e-03 -2.9261683108242173e-03 1.4269399726982105e-03
4 -1.8184451408256214e-02 3.1103803691687960e-02 -1.3358827768357973e-02
5 2.6084132471017967e-02 -1.0819576493517332e-02 3.0403384454794881e-02
6 -4.7312115958218744e-03 -1.9111462399478338e-02 -3.6793354156497558e-02
7 -7.5068797595949869e-03 6.5661422055962489e-03 1.3226575122695422e-03
8 3.3807881380161281e-03 3.0458732663557089e-03 2.2368826795446284e-03
9 -3.1113905793879316e-03 8.2908867720754773e-03 -1.7561238039496530e-03
10 2.4685206571693056e-03 1.3194776209841030e-03 -2.8041877032800441e-03
11 -3.4945605770565296e-03 3.2323777135621814e-03 1.6223017668450866e-03
12 -6.1153483612847778e-03 -5.1534857074262185e-03 1.7735747357354274e-03
13 2.1384296781859011e-04 -4.5398902942729667e-03 6.1649769894413760e-03
14 2.5004619864373401e-03 -1.5709184283264888e-03 2.0837548254667757e-02
15 6.0547939205643532e-03 -1.2650704436910937e-02 -5.4430753266962190e-03
16 -1.0374605775698001e-02 9.1408658463889240e-03 -1.1306875858287088e-02
17 -1.2736499128987409e-02 -9.1726811852506501e-03 5.1136502685461254e-03
18 7.6741778607048112e-03 1.8629856635459279e-02 -1.1300096447670932e-02
19 -1.8616138775281121e-02 1.0848388547730185e-03 -5.7118433687798576e-03
20 5.4137572241479059e-03 -1.4564578166395727e-02 -1.2618420441909540e-02
21 5.8473521452312256e-03 -4.0595286000332086e-03 -6.2517801580146415e-03
22 3.6402033824753104e-03 -1.4629540504663154e-03 -4.0030712318898046e-03
23 9.0266305019107689e-03 -2.7511425384659687e-03 4.5576402565437142e-03
24 -1.3102302415548614e-02 -4.7286703965305791e-03 -1.8966887841189517e-03
25 7.8621682621103171e-03 -4.2046313540949568e-03 9.6887957374751301e-04
26 -4.7380176438337968e-03 9.6090441940775827e-03 -8.7592431387039336e-03
27 5.4311658811632517e-03 2.0032224663495989e-02 -9.4952076489808503e-03
28 -2.9056381493904374e-03 3.3317109723156875e-03 1.6650350064426677e-02
29 -6.4569944033489122e-03 2.8423983541959541e-03 -2.6066912906505167e-02
30 -2.2173867823429387e-02 1.4628839880961319e-02 -2.3330833961402380e-02
31 9.1925713381983114e-03 -2.5697556639281928e-03 -1.2822203161488303e-02
32 -8.3206975051927905e-03 -2.2538429924858707e-03 7.7620244118580314e-03
33 1.9920685674825727e-02 5.0317764848494097e-03 -2.1106672824976403e-02
34 1.4118463330250982e-02 1.7455545466840316e-02 -1.2482101375598437e-02
35 -6.1116505640437966e-03 1.3353021777303568e-02 -2.5492434283827668e-02
36 9.1001521565859649e-03 5.5737774505222404e-03 1.4573768978939985e-02
37 1.6523593470528035e-03 -2.2107518020000917e-02 2.0311423445130115e-02
38 -1.0346275393471860e-02 1.6055856586351790e-02 5.5489127019262424e-03
39 -3.2054811383248638e-03 1.6779208962376315e-03 2.9390509537535661e-03
40 1.9649219364916443e-02 4.0815776523222859e-03 -9.8422441166041274e-03
41 5.6961697588160361e-04 7.1361132234741477e-04 4.6335764220256257e-03
42 2.2221300208006252e-03 3.6217319632558197e-03 -6.3299398503455151e-03
43 2.5710172734841170e-03 8.0029179814482924e-03 1.9992986928468189e-02
44 -6.0827581822674656e-03 -1.1834273655641976e-02 2.0526923045885208e-02
Bonds
1 1 1 5
2 1 1 4
3 2 1 7
4 2 1 8
5 3 2 3
6 5 2 11
7 6 3 6
8 4 7 2
9 1 7 14
10 1 7 15
11 2 8 9
12 1 8 16
13 1 8 17
14 4 9 10
15 1 9 18
16 1 9 19
17 5 10 12
18 3 10 13
19 6 13 20
20 7 21 22
21 8 21 27
22 8 21 28
23 7 21 39
24 9 22 23
25 8 22 29
26 8 22 30
27 10 23 31
28 10 23 32
29 10 24 33
30 10 24 34
31 9 25 24
32 7 25 26
33 8 25 35
34 8 25 36
35 8 26 37
36 8 26 38
37 7 26 42
38 8 39 40
39 8 39 41
40 7 39 42
41 8 42 43
42 8 42 44
Angles
1 1 5 1 4
2 2 7 1 5
3 2 8 1 5
4 2 7 1 4
5 2 8 1 4
6 3 7 1 8
7 4 7 2 3
8 5 3 2 11
9 6 7 2 11
10 7 2 3 6
11 8 1 7 2
12 2 1 7 14
13 2 1 7 15
14 9 2 7 14
15 9 2 7 15
16 1 14 7 15
17 3 1 8 9
18 2 1 8 16
19 2 1 8 17
20 2 9 8 16
21 2 9 8 17
22 1 16 8 17
23 8 8 9 10
24 2 8 9 18
25 2 8 9 19
26 9 10 9 18
27 9 10 9 19
28 1 18 9 19
29 6 9 10 12
30 4 9 10 13
31 5 13 10 12
32 7 10 13 20
33 10 22 21 27
34 10 22 21 28
35 11 22 21 39
36 12 27 21 28
37 10 39 21 27
38 10 39 21 28
39 13 21 22 23
40 10 21 22 29
41 10 21 22 30
42 14 23 22 29
43 14 23 22 30
44 12 29 22 30
45 15 22 23 31
46 15 22 23 32
47 16 31 23 32
48 15 25 24 33
49 15 25 24 34
50 16 33 24 34
51 13 26 25 24
52 14 24 25 35
53 14 24 25 36
54 10 26 25 35
55 10 26 25 36
56 12 35 25 36
57 10 25 26 37
58 10 25 26 38
59 11 25 26 42
60 12 37 26 38
61 10 42 26 37
62 10 42 26 38
63 10 21 39 40
64 10 21 39 41
65 11 21 39 42
66 12 40 39 41
67 10 42 39 40
68 10 42 39 41
69 11 26 42 39
70 10 26 42 43
71 10 26 42 44
72 10 39 42 43
73 10 39 42 44
74 12 43 42 44
Dihedrals
1 2 5 1 7 14
2 2 5 1 7 15
3 2 4 1 7 14
4 2 4 1 7 15
5 3 8 1 7 2
6 4 8 1 7 14
7 4 8 1 7 15
8 2 5 1 8 16
9 2 5 1 8 17
10 2 4 1 8 16
11 2 4 1 8 17
12 5 7 1 8 9
13 4 7 1 8 16
14 4 7 1 8 17
15 6 7 2 3 6
16 7 11 2 3 6
17 1 2 7 1 5
18 1 2 7 1 4
19 8 1 7 2 3
20 9 14 7 2 3
21 9 15 7 2 3
22 10 1 7 2 11
23 11 14 7 2 11
24 11 15 7 2 11
25 4 9 8 1 5
26 4 9 8 1 4
27 3 1 8 9 10
28 4 1 8 9 18
29 4 1 8 9 19
30 2 16 8 9 18
31 2 16 8 9 19
32 2 17 8 9 18
33 2 17 8 9 19
34 1 10 9 8 16
35 1 10 9 8 17
36 10 8 9 10 12
37 8 8 9 10 13
38 11 18 9 10 12
39 9 18 9 10 13
40 11 19 9 10 12
41 9 19 9 10 13
42 6 9 10 13 20
43 7 12 10 13 20
44 13 27 21 22 29
45 13 27 21 22 30
46 13 28 21 22 29
47 13 28 21 22 30
48 14 39 21 22 23
49 15 39 21 22 29
50 15 39 21 22 30
51 15 22 21 39 40
52 15 22 21 39 41
53 16 22 21 39 42
54 13 27 21 39 40
55 13 27 21 39 41
56 13 28 21 39 40
57 13 28 21 39 41
58 12 23 22 21 27
59 12 23 22 21 28
60 17 21 22 23 31
61 17 21 22 23 32
62 18 29 22 23 31
63 18 29 22 23 32
64 18 30 22 23 31
65 18 30 22 23 32
66 17 26 25 24 33
67 18 35 25 24 33
68 18 36 25 24 33
69 17 26 25 24 34
70 18 35 25 24 34
71 18 36 25 24 34
72 12 24 25 26 37
73 12 24 25 26 38
74 13 35 25 26 37
75 13 35 25 26 38
76 13 36 25 26 37
77 13 36 25 26 38
78 14 42 26 25 24
79 15 42 26 25 35
80 15 42 26 25 36
81 16 25 26 42 39
82 15 25 26 42 43
83 15 25 26 42 44
84 13 37 26 42 43
85 13 37 26 42 44
86 13 38 26 42 43
87 13 38 26 42 44
88 15 42 39 21 27
89 15 42 39 21 28
90 16 21 39 42 26
91 15 21 39 42 43
92 15 21 39 42 44
93 13 40 39 42 43
94 13 40 39 42 44
95 13 41 39 42 43
96 13 41 39 42 44
97 15 39 42 26 37
98 15 39 42 26 38
99 15 26 42 39 40
100 15 26 42 39 41
Impropers
1 2 7 1 4 5
2 2 8 1 4 5
3 3 7 1 8 5
4 3 7 1 8 4
5 1 7 2 3 11
6 4 1 7 2 14
7 4 1 7 2 15
8 2 1 7 14 15
9 5 2 7 14 15
10 3 1 8 9 16
11 3 1 8 9 17
12 2 1 8 16 17
13 2 9 8 16 17
14 4 8 9 10 18
15 4 8 9 10 19
16 2 8 9 18 19
17 5 10 9 18 19
18 1 9 10 13 12
19 7 22 21 27 28
20 8 22 21 39 27
21 8 22 21 39 28
22 7 39 21 28 27
23 9 21 22 23 29
24 9 21 22 23 30
25 7 21 22 29 30
26 10 23 22 29 30
27 6 22 23 31 32
28 6 25 24 33 34
29 9 26 25 24 35
30 9 26 25 24 36
31 10 24 25 35 36
32 7 26 25 35 36
33 7 25 26 37 38
34 8 25 26 42 37
35 8 25 26 42 38
36 7 42 26 38 37
37 7 21 39 40 41
38 8 21 39 42 40
39 8 21 39 42 41
40 7 42 39 41 40
41 8 26 42 39 43
42 8 26 42 39 44
43 7 26 42 43 44
44 7 39 42 43 44

View File

@ -0,0 +1,127 @@
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
# Demonstrate SNAP Ta potential
# Initialize simulation
variable nsteps index 100
variable nrep equal 4
variable a equal 3.160
units metal
# generate the box and atom positions using a BCC lattice
variable nx equal ${nrep}
variable nx equal 4
variable ny equal ${nrep}
variable ny equal 4
variable nz equal ${nrep}
variable nz equal 4
boundary p p p
lattice bcc $a
lattice bcc 3.16
Lattice spacing in x,y,z = 3.16 3.16 3.16
region box block 0 ${nx} 0 ${ny} 0 ${nz}
region box block 0 4 0 ${ny} 0 ${nz}
region box block 0 4 0 4 0 ${nz}
region box block 0 4 0 4 0 4
create_box 1 box
Created orthogonal box = (0 0 0) to (12.64 12.64 12.64)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000223637 secs
mass 1 183.84
# choose potential
include Mo_Chen_PRM2017.snap
# DATE: 2017-09-18 CONTRIBUTOR: Chi Chen <chc273@eng.ucsd.edu> CITATION: C. Chen, Z. Deng, R. Tran, H. Tang, I.-H. Chu, S. P. Ong, "Accurate force field for molybdenum by machine learning large materials data" Physical Review Materials 1, 04 3603 (2017)
# Generated by Materials Virtual Lab
# Definition of SNAP potential.
pair_style snap
pair_coeff * * Mo_Chen_PRM2017.snapcoeff Mo Mo_Chen_PRM2017.snapparam Mo
Reading potential file Mo_Chen_PRM2017.snapcoeff with DATE: 2017-09-18
SNAP Element = Mo, Radius 0.5, Weight 1
Reading potential file Mo_Chen_PRM2017.snapparam with DATE: 2017-09-18
SNAP keyword rcutfac 4.615858
SNAP keyword twojmax 6
# Setup output
thermo 10
thermo_modify norm yes
# Set up NVE run
timestep 0.5e-3
neighbor 1.0 bin
neigh_modify once no every 1 delay 0 check yes
# Run MD
velocity all create 300.0 4928459
fix 1 all nve
run ${nsteps}
run 100
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 5.61586
ghost atom cutoff = 5.61586
binsize = 2.80793, bins = 5 5 5
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair snap, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.507 | 3.507 | 3.507 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -22.405975 0 -22.3675 2575.7657
10 294.77555 -22.405305 0 -22.3675 2756.6894
20 279.53011 -22.40335 0 -22.3675 3285.8272
30 255.52174 -22.40027 0 -22.3675 4122.8933
40 224.7299 -22.396321 0 -22.367499 5204.3499
50 189.67529 -22.391825 0 -22.367499 6449.1308
60 153.18862 -22.387145 0 -22.367499 7765.911
70 118.14998 -22.382652 0 -22.367499 9061.1616
80 87.224916 -22.378685 0 -22.367499 10247.68
90 62.623892 -22.37553 0 -22.367498 11250.067
100 45.9103 -22.373386 0 -22.367498 12011.726
Loop time of 3.3917 on 1 procs for 100 steps with 128 atoms
Performance: 1.274 ns/day, 18.843 hours/ns, 29.484 timesteps/s
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 3.3906 | 3.3906 | 3.3906 | 0.0 | 99.97
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00039721 | 0.00039721 | 0.00039721 | 0.0 | 0.01
Output | 0.00023007 | 0.00023007 | 0.00023007 | 0.0 | 0.01
Modify | 0.00021887 | 0.00021887 | 0.00021887 | 0.0 | 0.01
Other | | 0.0002868 | | | 0.01
Nlocal: 128 ave 128 max 128 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 727 ave 727 max 727 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 7424 ave 7424 max 7424 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 7424
Ave neighs/atom = 58
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,127 @@
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
# Demonstrate SNAP Ta potential
# Initialize simulation
variable nsteps index 100
variable nrep equal 4
variable a equal 3.160
units metal
# generate the box and atom positions using a BCC lattice
variable nx equal ${nrep}
variable nx equal 4
variable ny equal ${nrep}
variable ny equal 4
variable nz equal ${nrep}
variable nz equal 4
boundary p p p
lattice bcc $a
lattice bcc 3.16
Lattice spacing in x,y,z = 3.16 3.16 3.16
region box block 0 ${nx} 0 ${ny} 0 ${nz}
region box block 0 4 0 ${ny} 0 ${nz}
region box block 0 4 0 4 0 ${nz}
region box block 0 4 0 4 0 4
create_box 1 box
Created orthogonal box = (0 0 0) to (12.64 12.64 12.64)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000277281 secs
mass 1 183.84
# choose potential
include Mo_Chen_PRM2017.snap
# DATE: 2017-09-18 CONTRIBUTOR: Chi Chen <chc273@eng.ucsd.edu> CITATION: C. Chen, Z. Deng, R. Tran, H. Tang, I.-H. Chu, S. P. Ong, "Accurate force field for molybdenum by machine learning large materials data" Physical Review Materials 1, 04 3603 (2017)
# Generated by Materials Virtual Lab
# Definition of SNAP potential.
pair_style snap
pair_coeff * * Mo_Chen_PRM2017.snapcoeff Mo Mo_Chen_PRM2017.snapparam Mo
Reading potential file Mo_Chen_PRM2017.snapcoeff with DATE: 2017-09-18
SNAP Element = Mo, Radius 0.5, Weight 1
Reading potential file Mo_Chen_PRM2017.snapparam with DATE: 2017-09-18
SNAP keyword rcutfac 4.615858
SNAP keyword twojmax 6
# Setup output
thermo 10
thermo_modify norm yes
# Set up NVE run
timestep 0.5e-3
neighbor 1.0 bin
neigh_modify once no every 1 delay 0 check yes
# Run MD
velocity all create 300.0 4928459
fix 1 all nve
run ${nsteps}
run 100
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 5.61586
ghost atom cutoff = 5.61586
binsize = 2.80793, bins = 5 5 5
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair snap, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.486 | 3.486 | 3.486 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -22.405975 0 -22.3675 2575.7657
10 294.63153 -22.405286 0 -22.3675 2753.4662
20 278.98535 -22.40328 0 -22.3675 3272.416
30 254.38916 -22.400125 0 -22.3675 4091.8933
40 222.91191 -22.396088 0 -22.367499 5148.5505
50 187.16984 -22.391504 0 -22.367499 6362.2454
60 150.08253 -22.386747 0 -22.367499 7643.2732
70 114.60307 -22.382197 0 -22.367499 8900.2448
80 83.449257 -22.378201 0 -22.367499 10047.619
90 58.862643 -22.375048 0 -22.367498 11012.233
100 42.41931 -22.372939 0 -22.367498 11740.641
Loop time of 1.91636 on 4 procs for 100 steps with 128 atoms
Performance: 2.254 ns/day, 10.646 hours/ns, 52.182 timesteps/s
97.9% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.8147 | 1.8411 | 1.8875 | 2.1 | 96.07
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.022276 | 0.069629 | 0.095057 | 10.7 | 3.63
Output | 0.00032496 | 0.00065821 | 0.0016179 | 0.0 | 0.03
Modify | 0.00019503 | 0.00020915 | 0.00023341 | 0.0 | 0.01
Other | | 0.00481 | | | 0.25
Nlocal: 32 ave 32 max 32 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 431 ave 431 max 431 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 1856 ave 1856 max 1856 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Total # of neighbors = 7424
Ave neighs/atom = 58
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:01

View File

@ -1,4 +1,6 @@
LAMMPS (5 Oct 2016)
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
# Demonstrate SNAP Ta potential
# Initialize simulation
@ -31,12 +33,13 @@ Created orthogonal box = (0 0 0) to (13.264 13.264 13.264)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000328064 secs
mass 1 180.88
# choose potential
include Ta06A_pot.snap
include Ta06A.snap
# DATE: 2014-09-05 CONTRIBUTOR: Aidan Thompson athomps@sandia.gov CITATION: Thompson, Swiler, Trott, Foiles and Tucker, arxiv.org, 1409.3880 (2014)
# Definition of SNAP potential Ta_Cand06A
@ -48,10 +51,9 @@ variable zblz equal 73
# Specify hybrid with SNAP, ZBL
pair_style hybrid/overlay snap zbl ${zblcutinner} ${zblcutouter}
pair_style hybrid/overlay snap zbl 4 ${zblcutouter}
pair_style hybrid/overlay snap zbl 4 4.8
pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap
pair_style hybrid/overlay zbl 4 ${zblcutouter} snap
pair_style hybrid/overlay zbl 4 4.8 snap
pair_coeff 1 1 zbl ${zblz} ${zblz}
pair_coeff 1 1 zbl 73 ${zblz}
pair_coeff 1 1 zbl 73 73
@ -61,10 +63,11 @@ SNAP Element = Ta, Radius 0.5, Weight 1
Reading potential file Ta06A.snapparam with DATE: 2014-09-05
SNAP keyword rcutfac 4.67637
SNAP keyword twojmax 6
SNAP keyword gamma 1
SNAP keyword rfac0 0.99363
SNAP keyword rmin0 0
SNAP keyword diagonalstyle 3
SNAP keyword bzeroflag 0
SNAP keyword quadraticflag 0
# Setup output
@ -85,13 +88,23 @@ fix 1 all nve
run ${nsteps}
run 100
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 5.8
ghost atom cutoff = 5.8
binsize = 2.9 -> bins = 5 5 5
Memory usage per processor = 2.92823 Mbytes
binsize = 2.9, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair zbl, perpetual, half/full from (2)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
(2) pair snap, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.138 | 4.138 | 4.138 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -11.85157 0 -11.813095 2717.1661
10 295.96579 -11.851053 0 -11.813095 2696.1559
@ -104,20 +117,20 @@ Step Temp E_pair E_mol TotEng Press
80 124.04276 -11.829003 0 -11.813094 1537.703
90 97.37622 -11.825582 0 -11.813094 1734.9662
100 75.007873 -11.822714 0 -11.813094 1930.8005
Loop time of 3.43062 on 1 procs for 100 steps with 128 atoms
Loop time of 2.53266 on 1 procs for 100 steps with 128 atoms
Performance: 1.259 ns/day, 19.059 hours/ns, 29.149 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 1.706 ns/day, 14.070 hours/ns, 39.484 timesteps/s
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 3.4295 | 3.4295 | 3.4295 | 0.0 | 99.97
Pair | 2.5313 | 2.5313 | 2.5313 | 0.0 | 99.95
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00043988 | 0.00043988 | 0.00043988 | 0.0 | 0.01
Output | 0.00010014 | 0.00010014 | 0.00010014 | 0.0 | 0.00
Modify | 0.00024533 | 0.00024533 | 0.00024533 | 0.0 | 0.01
Other | | 0.0002978 | | | 0.01
Comm | 0.00051379 | 0.00051379 | 0.00051379 | 0.0 | 0.02
Output | 0.00023317 | 0.00023317 | 0.00023317 | 0.0 | 0.01
Modify | 0.00023675 | 0.00023675 | 0.00023675 | 0.0 | 0.01
Other | | 0.0003583 | | | 0.01
Nlocal: 128 ave 128 max 128 min
Histogram: 1 0 0 0 0 0 0 0 0 0
@ -133,4 +146,4 @@ Ave neighs/atom = 58
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03
Total wall time: 0:00:02

View File

@ -1,4 +1,6 @@
LAMMPS (5 Oct 2016)
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
# Demonstrate SNAP Ta potential
# Initialize simulation
@ -31,12 +33,13 @@ Created orthogonal box = (0 0 0) to (13.264 13.264 13.264)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000288486 secs
mass 1 180.88
# choose potential
include Ta06A_pot.snap
include Ta06A.snap
# DATE: 2014-09-05 CONTRIBUTOR: Aidan Thompson athomps@sandia.gov CITATION: Thompson, Swiler, Trott, Foiles and Tucker, arxiv.org, 1409.3880 (2014)
# Definition of SNAP potential Ta_Cand06A
@ -48,10 +51,9 @@ variable zblz equal 73
# Specify hybrid with SNAP, ZBL
pair_style hybrid/overlay snap zbl ${zblcutinner} ${zblcutouter}
pair_style hybrid/overlay snap zbl 4 ${zblcutouter}
pair_style hybrid/overlay snap zbl 4 4.8
pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap
pair_style hybrid/overlay zbl 4 ${zblcutouter} snap
pair_style hybrid/overlay zbl 4 4.8 snap
pair_coeff 1 1 zbl ${zblz} ${zblz}
pair_coeff 1 1 zbl 73 ${zblz}
pair_coeff 1 1 zbl 73 73
@ -61,10 +63,11 @@ SNAP Element = Ta, Radius 0.5, Weight 1
Reading potential file Ta06A.snapparam with DATE: 2014-09-05
SNAP keyword rcutfac 4.67637
SNAP keyword twojmax 6
SNAP keyword gamma 1
SNAP keyword rfac0 0.99363
SNAP keyword rmin0 0
SNAP keyword diagonalstyle 3
SNAP keyword bzeroflag 0
SNAP keyword quadraticflag 0
# Setup output
@ -85,13 +88,23 @@ fix 1 all nve
run ${nsteps}
run 100
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 5.8
ghost atom cutoff = 5.8
binsize = 2.9 -> bins = 5 5 5
Memory usage per processor = 2.91109 Mbytes
binsize = 2.9, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair zbl, perpetual, half/full from (2)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
(2) pair snap, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.118 | 4.118 | 4.118 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -11.85157 0 -11.813095 2717.1661
10 295.8664 -11.85104 0 -11.813095 2702.935
@ -104,20 +117,20 @@ Step Temp E_pair E_mol TotEng Press
80 121.80051 -11.828715 0 -11.813094 1627.6911
90 95.262635 -11.825311 0 -11.813094 1812.9327
100 73.194645 -11.822481 0 -11.813094 1995.2199
Loop time of 0.89193 on 4 procs for 100 steps with 128 atoms
Loop time of 1.3621 on 4 procs for 100 steps with 128 atoms
Performance: 4.843 ns/day, 4.955 hours/ns, 112.116 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 3.172 ns/day, 7.567 hours/ns, 73.416 timesteps/s
98.7% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.84444 | 0.86772 | 0.88108 | 1.6 | 97.29
Pair | 1.2867 | 1.309 | 1.35 | 2.1 | 96.10
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.009577 | 0.023049 | 0.046417 | 9.8 | 2.58
Output | 0.00024009 | 0.00026137 | 0.00027895 | 0.1 | 0.03
Modify | 8.2493e-05 | 9.352e-05 | 0.00010061 | 0.1 | 0.01
Other | | 0.0008071 | | | 0.09
Comm | 0.0096083 | 0.050652 | 0.072999 | 10.9 | 3.72
Output | 0.00031447 | 0.00060236 | 0.0014303 | 0.0 | 0.04
Modify | 0.00014234 | 0.00016212 | 0.00018811 | 0.0 | 0.01
Other | | 0.001728 | | | 0.13
Nlocal: 32 ave 32 max 32 min
Histogram: 4 0 0 0 0 0 0 0 0 0
@ -133,4 +146,4 @@ Ave neighs/atom = 58
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:00
Total wall time: 0:00:01

View File

@ -1,4 +1,6 @@
LAMMPS (13 Feb 2017)
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
# Demonstrate SNAP Ta potential
# Initialize simulation
@ -31,20 +33,21 @@ Created orthogonal box = (0 0 0) to (12.7212 12.7212 12.7212)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000190258 secs
mass 1 183.84
# choose potential
include W_2940_2017_2.pot.snap
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. to appear in arxiv Feb2017
include W_2940_2017_2.snap
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. "Quantum-Accurate Molecular Dynamics Potential for Tungsten" arXiv:1702.07042 [physics.comp-ph]
#
# Definition of SNAP+ZBL potential.
variable zblcutinner equal 4
variable zblcutouter equal 4.8
variable zblz equal 74
# Specify hybrid with SNAP, ZBL, and long-range Coulomb
# Specify hybrid with SNAP and ZBL
pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap
pair_style hybrid/overlay zbl 4 ${zblcutouter} snap
@ -58,10 +61,11 @@ SNAP Element = W, Radius 0.5, Weight 1
Reading potential file W_2940_2017_2.snapparam with DATE: 2017-02-20
SNAP keyword rcutfac 4.73442
SNAP keyword twojmax 8
SNAP keyword gamma 1
SNAP keyword rfac0 0.99363
SNAP keyword rmin0 0
SNAP keyword diagonalstyle 3
SNAP keyword bzeroflag 0
SNAP keyword quadraticflag 0
#Nomenclature on the snap files are Element_DakotaID_Year_Month
@ -99,7 +103,7 @@ Neighbor list info ...
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Memory usage per processor = 5.14696 Mbytes
Per MPI rank memory allocation (min/avg/max) = 5.15 | 5.15 | 5.15 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -11.028325 0 -10.98985 3010.497
10 293.40666 -11.027479 0 -10.989849 3246.0559
@ -112,20 +116,20 @@ Step Temp E_pair E_mol TotEng Press
80 58.605244 -10.997364 0 -10.989848 11289.914
90 39.754503 -10.994946 0 -10.989848 11824.945
100 32.524085 -10.994019 0 -10.989848 11932.118
Loop time of 11.8271 on 1 procs for 100 steps with 128 atoms
Loop time of 9.69738 on 1 procs for 100 steps with 128 atoms
Performance: 0.365 ns/day, 65.706 hours/ns, 8.455 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 0.445 ns/day, 53.874 hours/ns, 10.312 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 | 11.826 | 11.826 | 11.826 | 0.0 | 99.99
Pair | 9.6961 | 9.6961 | 9.6961 | 0.0 | 99.99
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00044084 | 0.00044084 | 0.00044084 | 0.0 | 0.00
Output | 0.00013232 | 0.00013232 | 0.00013232 | 0.0 | 0.00
Modify | 0.00021887 | 0.00021887 | 0.00021887 | 0.0 | 0.00
Other | | 0.0002718 | | | 0.00
Comm | 0.00044036 | 0.00044036 | 0.00044036 | 0.0 | 0.00
Output | 0.00024843 | 0.00024843 | 0.00024843 | 0.0 | 0.00
Modify | 0.00023937 | 0.00023937 | 0.00023937 | 0.0 | 0.00
Other | | 0.0003347 | | | 0.00
Nlocal: 128 ave 128 max 128 min
Histogram: 1 0 0 0 0 0 0 0 0 0
@ -141,4 +145,4 @@ Ave neighs/atom = 58
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:11
Total wall time: 0:00:09

View File

@ -1,4 +1,6 @@
LAMMPS (13 Feb 2017)
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
# Demonstrate SNAP Ta potential
# Initialize simulation
@ -31,20 +33,21 @@ Created orthogonal box = (0 0 0) to (12.7212 12.7212 12.7212)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000309944 secs
mass 1 183.84
# choose potential
include W_2940_2017_2.pot.snap
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. to appear in arxiv Feb2017
include W_2940_2017_2.snap
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. "Quantum-Accurate Molecular Dynamics Potential for Tungsten" arXiv:1702.07042 [physics.comp-ph]
#
# Definition of SNAP+ZBL potential.
variable zblcutinner equal 4
variable zblcutouter equal 4.8
variable zblz equal 74
# Specify hybrid with SNAP, ZBL, and long-range Coulomb
# Specify hybrid with SNAP and ZBL
pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap
pair_style hybrid/overlay zbl 4 ${zblcutouter} snap
@ -58,10 +61,11 @@ SNAP Element = W, Radius 0.5, Weight 1
Reading potential file W_2940_2017_2.snapparam with DATE: 2017-02-20
SNAP keyword rcutfac 4.73442
SNAP keyword twojmax 8
SNAP keyword gamma 1
SNAP keyword rfac0 0.99363
SNAP keyword rmin0 0
SNAP keyword diagonalstyle 3
SNAP keyword bzeroflag 0
SNAP keyword quadraticflag 0
#Nomenclature on the snap files are Element_DakotaID_Year_Month
@ -99,7 +103,7 @@ Neighbor list info ...
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Memory usage per processor = 5.12833 Mbytes
Per MPI rank memory allocation (min/avg/max) = 5.13 | 5.13 | 5.13 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -11.028325 0 -10.98985 3010.497
10 293.22504 -11.027456 0 -10.989849 3258.275
@ -112,20 +116,20 @@ Step Temp E_pair E_mol TotEng Press
80 56.127265 -10.997046 0 -10.989848 11551.687
90 38.025013 -10.994724 0 -10.989847 12069.936
100 31.768127 -10.993922 0 -10.989847 12145.648
Loop time of 3.03545 on 4 procs for 100 steps with 128 atoms
Loop time of 5.15615 on 4 procs for 100 steps with 128 atoms
Performance: 1.423 ns/day, 16.864 hours/ns, 32.944 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 0.838 ns/day, 28.645 hours/ns, 19.394 timesteps/s
98.9% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.9594 | 2.9866 | 3.0319 | 1.6 | 98.39
Pair | 5.0497 | 5.0762 | 5.092 | 0.8 | 98.45
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.0024238 | 0.047825 | 0.075032 | 12.5 | 1.58
Output | 0.00021601 | 0.00024045 | 0.00027442 | 0.0 | 0.01
Modify | 9.6798e-05 | 0.00011188 | 0.00011802 | 0.0 | 0.00
Other | | 0.000698 | | | 0.02
Comm | 0.060802 | 0.07661 | 0.10305 | 6.1 | 1.49
Output | 0.00040722 | 0.00078458 | 0.0018959 | 0.0 | 0.02
Modify | 0.0002389 | 0.00024962 | 0.00027442 | 0.0 | 0.00
Other | | 0.002315 | | | 0.04
Nlocal: 32 ave 32 max 32 min
Histogram: 4 0 0 0 0 0 0 0 0 0
@ -141,4 +145,4 @@ Ave neighs/atom = 58
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03
Total wall time: 0:00:05

View File

@ -1,4 +1,6 @@
LAMMPS (13 Feb 2017)
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
# Demonstrate SNAP Ta potential
# Initialize simulation
@ -31,6 +33,7 @@ Created orthogonal box = (0 0 0) to (12.7212 12.7212 12.7212)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000431538 secs
mass 1 183.84
mass 2 4.0026
@ -42,15 +45,15 @@ group helium type 2
5 atoms in group helium
# choose potential
include W.SNAP_HePair.pot
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. to appear in arxiv Feb2017, W-He and He-He from Juslin, N. and Wirth, B. D. Journal of Nuclear Materials, 423, (2013) p61-63
include W_2940_2017_2_He_JW2013.snap
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. "Quantum-Accurate Molecular Dynamics Potential for Tungsten" arXiv:1702.07042 [physics.comp-ph]
#
# Definition of SNAP+ZBL+Tabulated potential.
variable zblcutinner equal 4
variable zblcutouter equal 4.8
variable zblz equal 74
# Specify hybrid with SNAP, ZBL, and long-range Coulomb
# Specify hybrid with SNAP and ZBL
pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap table spline 10000 table spline 10000
pair_style hybrid/overlay zbl 4 ${zblcutouter} snap table spline 10000 table spline 10000
@ -64,18 +67,19 @@ SNAP Element = W, Radius 0.5, Weight 1
Reading potential file W_2940_2017_2.snapparam with DATE: 2017-02-20
SNAP keyword rcutfac 4.73442
SNAP keyword twojmax 8
SNAP keyword gamma 1
SNAP keyword rfac0 0.99363
SNAP keyword rmin0 0
SNAP keyword diagonalstyle 3
SNAP keyword bzeroflag 0
SNAP keyword quadraticflag 0
pair_coeff 2 2 table 1 He_He_JW2013.table HeHe
Reading potential file He_He_JW2013.table with DATE: 2017-02-20
WARNING: 1 of 4999 force values in table are inconsistent with -dE/dr.
Should only be flagged at inflection points (../pair_table.cpp:476)
Should only be flagged at inflection points (../pair_table.cpp:481)
pair_coeff 1 2 table 2 W_He_JW2013.table WHe
Reading potential file W_He_JW2013.table with DATE: 2017-02-20
WARNING: 3 of 325 force values in table are inconsistent with -dE/dr.
Should only be flagged at inflection points (../pair_table.cpp:476)
Should only be flagged at inflection points (../pair_table.cpp:481)
#Hybrid/overlay will take all pair styles and add their contributions equally, order of pair_coeff doesnt matter here
#This is not the case for pair_style hybrid ... where only one pair_coeff is read for each type combination, order matters here.
@ -134,7 +138,7 @@ Neighbor list info ...
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Memory usage per processor = 7.6729 Mbytes
Per MPI rank memory allocation (min/avg/max) = 7.676 | 7.676 | 7.676 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -10.438105 0 -10.39963 -5445.2808
10 290.48923 -10.436885 0 -10.399629 -5646.4813
@ -147,20 +151,20 @@ Step Temp E_pair E_mol TotEng Press
80 85.903126 -10.410645 0 -10.399628 857.74986
90 65.223651 -10.407993 0 -10.399628 1494.2746
100 59.833542 -10.407302 0 -10.399628 1938.9164
Loop time of 11.0736 on 1 procs for 100 steps with 128 atoms
Loop time of 8.902 on 1 procs for 100 steps with 128 atoms
Performance: 0.390 ns/day, 61.520 hours/ns, 9.030 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 0.485 ns/day, 49.456 hours/ns, 11.233 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 | 11.072 | 11.072 | 11.072 | 0.0 | 99.99
Neigh | 0.00041604 | 0.00041604 | 0.00041604 | 0.0 | 0.00
Comm | 0.00046253 | 0.00046253 | 0.00046253 | 0.0 | 0.00
Output | 0.0001657 | 0.0001657 | 0.0001657 | 0.0 | 0.00
Modify | 0.0002265 | 0.0002265 | 0.0002265 | 0.0 | 0.00
Other | | 0.0003119 | | | 0.00
Pair | 8.9002 | 8.9002 | 8.9002 | 0.0 | 99.98
Neigh | 0.00043058 | 0.00043058 | 0.00043058 | 0.0 | 0.00
Comm | 0.00045776 | 0.00045776 | 0.00045776 | 0.0 | 0.01
Output | 0.00025344 | 0.00025344 | 0.00025344 | 0.0 | 0.00
Modify | 0.00022483 | 0.00022483 | 0.00022483 | 0.0 | 0.00
Other | | 0.0003953 | | | 0.00
Nlocal: 128 ave 128 max 128 min
Histogram: 1 0 0 0 0 0 0 0 0 0
@ -176,4 +180,4 @@ Ave neighs/atom = 53.5156
Neighbor list builds = 1
Dangerous builds = 0
Total wall time: 0:00:11
Total wall time: 0:00:09

View File

@ -1,4 +1,6 @@
LAMMPS (13 Feb 2017)
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
# Demonstrate SNAP Ta potential
# Initialize simulation
@ -31,6 +33,7 @@ Created orthogonal box = (0 0 0) to (12.7212 12.7212 12.7212)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 128 atoms
Time spent = 0.000274658 secs
mass 1 183.84
mass 2 4.0026
@ -42,15 +45,15 @@ group helium type 2
5 atoms in group helium
# choose potential
include W.SNAP_HePair.pot
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. to appear in arxiv Feb2017, W-He and He-He from Juslin, N. and Wirth, B. D. Journal of Nuclear Materials, 423, (2013) p61-63
include W_2940_2017_2_He_JW2013.snap
# DATE: 2017-02-20 CONTRIBUTOR: Mitchell Wood mitwood@sandia.gov CITATION: Wood, M. A. and Thompson, A. P. "Quantum-Accurate Molecular Dynamics Potential for Tungsten" arXiv:1702.07042 [physics.comp-ph]
#
# Definition of SNAP+ZBL+Tabulated potential.
variable zblcutinner equal 4
variable zblcutouter equal 4.8
variable zblz equal 74
# Specify hybrid with SNAP, ZBL, and long-range Coulomb
# Specify hybrid with SNAP and ZBL
pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap table spline 10000 table spline 10000
pair_style hybrid/overlay zbl 4 ${zblcutouter} snap table spline 10000 table spline 10000
@ -64,18 +67,19 @@ SNAP Element = W, Radius 0.5, Weight 1
Reading potential file W_2940_2017_2.snapparam with DATE: 2017-02-20
SNAP keyword rcutfac 4.73442
SNAP keyword twojmax 8
SNAP keyword gamma 1
SNAP keyword rfac0 0.99363
SNAP keyword rmin0 0
SNAP keyword diagonalstyle 3
SNAP keyword bzeroflag 0
SNAP keyword quadraticflag 0
pair_coeff 2 2 table 1 He_He_JW2013.table HeHe
Reading potential file He_He_JW2013.table with DATE: 2017-02-20
WARNING: 1 of 4999 force values in table are inconsistent with -dE/dr.
Should only be flagged at inflection points (../pair_table.cpp:476)
Should only be flagged at inflection points (../pair_table.cpp:481)
pair_coeff 1 2 table 2 W_He_JW2013.table WHe
Reading potential file W_He_JW2013.table with DATE: 2017-02-20
WARNING: 3 of 325 force values in table are inconsistent with -dE/dr.
Should only be flagged at inflection points (../pair_table.cpp:476)
Should only be flagged at inflection points (../pair_table.cpp:481)
#Hybrid/overlay will take all pair styles and add their contributions equally, order of pair_coeff doesnt matter here
#This is not the case for pair_style hybrid ... where only one pair_coeff is read for each type combination, order matters here.
@ -134,7 +138,7 @@ Neighbor list info ...
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Memory usage per processor = 7.65426 Mbytes
Per MPI rank memory allocation (min/avg/max) = 7.656 | 7.656 | 7.656 Mbytes
Step Temp E_pair E_mol TotEng Press
0 300 -10.438105 0 -10.39963 -5445.2808
10 292.13979 -10.437097 0 -10.39963 -5516.3963
@ -147,20 +151,20 @@ Step Temp E_pair E_mol TotEng Press
80 79.985938 -10.409886 0 -10.399628 2392.1106
90 62.568933 -10.407652 0 -10.399628 3141.7027
100 56.697933 -10.406899 0 -10.399628 3583.9538
Loop time of 2.8757 on 4 procs for 100 steps with 128 atoms
Loop time of 4.82103 on 4 procs for 100 steps with 128 atoms
Performance: 1.502 ns/day, 15.976 hours/ns, 34.774 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 0.896 ns/day, 26.783 hours/ns, 20.742 timesteps/s
99.0% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.7363 | 2.8122 | 2.8636 | 2.9 | 97.79
Pair | 4.4837 | 4.6734 | 4.7605 | 5.2 | 96.94
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.011014 | 0.062439 | 0.13842 | 19.3 | 2.17
Output | 0.00023842 | 0.00025076 | 0.0002861 | 0.0 | 0.01
Modify | 9.2506e-05 | 9.9301e-05 | 0.00010395 | 0.0 | 0.00
Other | | 0.0006654 | | | 0.02
Comm | 0.057389 | 0.14453 | 0.33421 | 29.4 | 3.00
Output | 0.00038719 | 0.00073916 | 0.0017841 | 0.0 | 0.02
Modify | 0.00018716 | 0.00022203 | 0.00026417 | 0.0 | 0.00
Other | | 0.002119 | | | 0.04
Nlocal: 32 ave 32 max 32 min
Histogram: 4 0 0 0 0 0 0 0 0 0
@ -176,4 +180,4 @@ Ave neighs/atom = 53.5156
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:02
Total wall time: 0:00:04

View File

@ -7,6 +7,10 @@
// If you wish to distribute your changes, please submit them to the
// Colvars repository at GitHub.
#include <list>
#include <vector>
#include <algorithm>
#include "colvarmodule.h"
#include "colvarvalue.h"
#include "colvarparse.h"
@ -14,15 +18,6 @@
#include "colvarcomp.h"
#include "colvarscript.h"
// used in build_atom_list()
#include <algorithm>
/// Compare two cvcs using their names
/// Used to sort CVC array in scripted coordinates
bool compare(colvar::cvc *i, colvar::cvc *j) {
return i->name < j->name;
}
colvar::colvar()
@ -34,6 +29,15 @@ colvar::colvar()
}
namespace {
/// Compare two cvcs using their names
/// Used to sort CVC array in scripted coordinates
bool compare(colvar::cvc *i, colvar::cvc *j)
{
return i->name < j->name;
}
}
int colvar::init(std::string const &conf)
{
cvm::log("Initializing a new collective variable.\n");
@ -143,6 +147,9 @@ int colvar::init(std::string const &conf)
x.type(cvc_value);
x_reported.type(cvc_value);
}
set_enabled(f_cv_scalar, (value().type() == colvarvalue::type_scalar));
// If using scripted biases, any colvar may receive bias forces
// and will need its gradient
if (cvm::scripted_forces()) {
@ -198,6 +205,7 @@ int colvar::init(std::string const &conf)
if (is_enabled(f_cv_homogeneous) && cvcs[0]->b_periodic) { // TODO make this a CVC feature
bool b_periodic = true;
period = cvcs[0]->period;
wrap_center = cvcs[0]->wrap_center;
for (i = 1; i < cvcs.size(); i++) {
if (!cvcs[i]->b_periodic || cvcs[i]->period != period) {
b_periodic = false;
@ -211,6 +219,14 @@ int colvar::init(std::string const &conf)
set_enabled(f_cv_periodic, b_periodic);
}
// Allow scripted/custom functions to be defined as periodic
if ( (is_enabled(f_cv_scripted) || is_enabled(f_cv_custom_function)) && is_enabled(f_cv_scalar) ) {
if (get_keyval(conf, "period", period, 0.)) {
set_enabled(f_cv_periodic, true);
get_keyval(conf, "wrapAround", wrap_center, 0.);
}
}
// check that cvcs are compatible
for (i = 0; i < cvcs.size(); i++) {
@ -443,8 +459,6 @@ int colvar::init_grid_parameters(std::string const &conf)
upper_boundary.type(value());
upper_wall.type(value());
set_enabled(f_cv_scalar, (value().type() == colvarvalue::type_scalar));
if (is_enabled(f_cv_scalar)) {
if (get_keyval(conf, "lowerBoundary", lower_boundary, lower_boundary)) {
@ -1503,7 +1517,7 @@ cvm::real colvar::update_forces_energy()
vr += (0.5 * dt) * f_ext / ext_mass;
xr += dt * vr;
xr.apply_constraints();
if (this->is_enabled(f_cv_periodic)) this->wrap(xr);
this->wrap(xr);
}
// Now adding the force on the actual colvar (for those biases that
@ -1714,9 +1728,18 @@ colvarvalue colvar::dist2_rgrad(colvarvalue const &x1,
void colvar::wrap(colvarvalue &x) const
{
if (is_enabled(f_cv_homogeneous)) {
(cvcs[0])->wrap(x);
if ( !is_enabled(f_cv_periodic) ) {
return;
}
if ( is_enabled(f_cv_scripted) || is_enabled(f_cv_custom_function) ) {
// Scripted functions do their own wrapping, as cvcs might not be periodic
cvm::real shift = std::floor((x.real_value - wrap_center) / period + 0.5);
x.real_value -= shift * period;
} else {
cvcs[0]->wrap(x);
}
return;
}
@ -2244,7 +2267,7 @@ void colvar::calc_runave()
runave.type(value().type());
runave.reset();
// first-step operations
// first-step operationsf
if (cvm::debug())
cvm::log("Colvar \""+this->name+

View File

@ -216,6 +216,7 @@ public:
/// Period, if this variable is periodic
cvm::real period;
cvm::real wrap_center;
/// \brief Expand the boundaries of multiples of width, to keep the

View File

@ -7,6 +7,10 @@
// If you wish to distribute your changes, please submit them to the
// Colvars repository at GitHub.
#include <list>
#include <vector>
#include <algorithm>
#include "colvarmodule.h"
#include "colvarproxy.h"
#include "colvarparse.h"
@ -436,7 +440,7 @@ int cvm::atom_group::parse(std::string const &group_conf)
}
bool b_print_atom_ids = false;
get_keyval(group_conf, "printAtomIDs", b_print_atom_ids, false, colvarparse::parse_silent);
get_keyval(group_conf, "printAtomIDs", b_print_atom_ids, false);
// Calculate all required properties (such as total mass)
setup();
@ -715,13 +719,10 @@ int cvm::atom_group::parse_fitting_options(std::string const &group_conf)
"if provided, must be non-zero.\n", INPUT_ERROR);
return COLVARS_ERROR;
}
} else {
// if not, rely on existing atom indices for the group
group_for_fit->create_sorted_ids();
ref_pos.resize(group_for_fit->size());
}
cvm::load_coords(ref_pos_file.c_str(), ref_pos, group_for_fit->sorted_ids,
ref_pos.resize(group_for_fit->size());
cvm::load_coords(ref_pos_file.c_str(), &ref_pos, group_for_fit,
ref_pos_col, ref_pos_col_value);
}
@ -789,33 +790,39 @@ void cvm::atom_group::do_feature_side_effects(int id)
}
int cvm::atom_group::create_sorted_ids(void)
int cvm::atom_group::create_sorted_ids()
{
// Only do the work if the vector is not yet populated
if (sorted_ids.size())
if (sorted_atoms_ids.size())
return COLVARS_OK;
std::list<int> temp_id_list;
for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) {
temp_id_list.push_back(ai->id);
// Sort the internal IDs
std::list<int> sorted_atoms_ids_list;
for (size_t i = 0; i < this->size(); i++) {
sorted_atoms_ids_list.push_back(atoms_ids[i]);
}
temp_id_list.sort();
temp_id_list.unique();
if (temp_id_list.size() != this->size()) {
cvm::error("Error: duplicate atom IDs in atom group? (found " +
cvm::to_str(temp_id_list.size()) +
" unique atom IDs instead of" +
cvm::to_str(this->size()) + ").\n");
return COLVARS_ERROR;
sorted_atoms_ids_list.sort();
sorted_atoms_ids_list.unique();
if (sorted_atoms_ids_list.size() != this->size()) {
return cvm::error("Error: duplicate atom IDs in atom group? (found " +
cvm::to_str(sorted_atoms_ids_list.size()) +
" unique atom IDs instead of " +
cvm::to_str(this->size()) + ").\n", BUG_ERROR);
}
sorted_ids = std::vector<int> (temp_id_list.size());
unsigned int id_i = 0;
std::list<int>::iterator li;
for (li = temp_id_list.begin(); li != temp_id_list.end(); ++li) {
sorted_ids[id_i] = *li;
id_i++;
// Compute map between sorted and unsorted elements
sorted_atoms_ids.resize(this->size());
sorted_atoms_ids_map.resize(this->size());
std::list<int>::iterator lsii = sorted_atoms_ids_list.begin();
size_t ii = 0;
for ( ; ii < this->size(); lsii++, ii++) {
sorted_atoms_ids[ii] = *lsii;
size_t const pos = std::find(atoms_ids.begin(), atoms_ids.end(), *lsii) -
atoms_ids.begin();
sorted_atoms_ids_map[ii] = pos;
}
return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK);
return COLVARS_OK;
}

View File

@ -227,9 +227,16 @@ protected:
/// \brief Array of atom objects
std::vector<cvm::atom> atoms;
/// \brief Array of atom identifiers for the MD program (0-based)
/// \brief Internal atom IDs for host code
std::vector<int> atoms_ids;
/// Sorted list of internal atom IDs (populated on-demand by
/// create_sorted_ids); used to read coordinate files
std::vector<int> sorted_atoms_ids;
/// Map entries of sorted_atoms_ids onto the original positions in the group
std::vector<int> sorted_atoms_ids_map;
/// \brief Dummy atom position
cvm::atom_pos dummy_atom_pos;
@ -273,19 +280,34 @@ public:
return atoms.size();
}
std::string const print_atom_ids() const;
/// \brief If this option is on, this group merely acts as a wrapper
/// for a fixed position; any calls to atoms within or to
/// functions that return disaggregated data will fail
bool b_dummy;
/// Sorted list of zero-based (internal) atom ids
/// (populated on-demand by create_sorted_ids)
std::vector<int> sorted_ids;
/// Internal atom IDs (populated during initialization)
inline std::vector<int> const &ids() const
{
return atoms_ids;
}
/// Allocates and populates the sorted list of atom ids
int create_sorted_ids(void);
std::string const print_atom_ids() const;
/// Allocates and populates sorted_ids and sorted_ids_map
int create_sorted_ids();
/// Sorted internal atom IDs (populated on-demand by create_sorted_ids);
/// used to read coordinate files
inline std::vector<int> const &sorted_ids() const
{
return sorted_atoms_ids;
}
/// Map entries of sorted_atoms_ids onto the original positions in the group
inline std::vector<int> const &sorted_ids_map() const
{
return sorted_atoms_ids_map;
}
/// Detect whether two groups share atoms
/// If yes, returns 1-based number of a common atom; else, returns 0

View File

@ -17,17 +17,17 @@ colvarbias_abf::colvarbias_abf(char const *key)
: colvarbias(key),
b_UI_estimator(false),
b_CZAR_estimator(false),
pabf_freq(0),
system_force(NULL),
gradients(NULL),
pmf(NULL),
samples(NULL),
pmf(NULL),
z_gradients(NULL),
z_samples(NULL),
czar_gradients(NULL),
czar_pmf(NULL),
last_gradients(NULL),
last_samples(NULL),
pabf_freq(0)
last_samples(NULL)
{
}
@ -315,8 +315,6 @@ colvarbias_abf::~colvarbias_abf()
int colvarbias_abf::update()
{
int iter;
if (cvm::debug()) cvm::log("Updating ABF bias " + this->name);
size_t i;
@ -368,7 +366,12 @@ int colvarbias_abf::update()
if ( b_integrate ) {
if ( pabf_freq && cvm::step_relative() % pabf_freq == 0 ) {
cvm::real err;
iter = pmf->integrate(integrate_steps, integrate_tol, err);
int iter = pmf->integrate(integrate_steps, integrate_tol, err);
if ( iter == integrate_steps ) {
cvm::log("Warning: PMF integration did not converge to " + cvm::to_str(integrate_tol)
+ " in " + cvm::to_str(integrate_steps)
+ " steps. Residual error: " + cvm::to_str(err));
}
pmf->set_zero_minimum(); // TODO: do this only when necessary
}
}
@ -485,7 +488,6 @@ int colvarbias_abf::update()
int colvarbias_abf::replica_share() {
int p;
if ( !cvm::replica_enabled() ) {
cvm::error("Error: shared ABF: No replicas.\n");
@ -507,6 +509,7 @@ int colvarbias_abf::replica_share() {
char* msg_data = new char[msg_total];
if (cvm::replica_index() == 0) {
int p;
// Replica 0 collects the delta gradient and count from the others.
for (p = 1; p < cvm::replica_num(); p++) {
// Receive the deltas.

View File

@ -21,6 +21,9 @@ colvar::cvc::cvc()
b_try_scalable(true)
{
init_cvc_requires();
sup_coeff = 1.0;
period = 0.0;
wrap_center = 0.0;
}
@ -30,40 +33,47 @@ colvar::cvc::cvc(std::string const &conf)
b_periodic(false),
b_try_scalable(true)
{
init_cvc_requires();
sup_coeff = 1.0;
period = 0.0;
wrap_center = 0.0;
init(conf);
}
int colvar::cvc::init(std::string const &conf)
{
int error_code = COLVARS_OK;
if (cvm::debug())
cvm::log("Initializing cvc base object.\n");
init_cvc_requires();
if (get_keyval(conf, "name", this->name, std::string(""), parse_silent)) {
get_keyval(conf, "name", this->name, this->name);
if (name.size() > 0) {
// Temporary description until child object is initialized
description = "cvc " + name;
} else {
description = "uninitialized cvc";
}
get_keyval(conf, "componentCoeff", sup_coeff, 1.0);
get_keyval(conf, "componentExp", sup_np, 1);
get_keyval(conf, "componentCoeff", sup_coeff, sup_coeff);
get_keyval(conf, "componentExp", sup_np, sup_np);
get_keyval(conf, "period", period, 0.0);
get_keyval(conf, "wrapAround", wrap_center, 0.0);
get_keyval(conf, "period", period, period);
get_keyval(conf, "wrapAround", wrap_center, wrap_center);
get_keyval_feature((colvarparse *)this, conf, "debugGradients",
get_keyval_feature(dynamic_cast<colvarparse *>(this), conf, "debugGradients",
f_cvc_debug_gradient, false, parse_silent);
{
bool b_no_PBC = false;
get_keyval(conf, "forceNoPBC", b_no_PBC, false);
if (b_no_PBC) {
disable(f_cvc_pbc_minimum_image);
} else {
enable(f_cvc_pbc_minimum_image);
}
// this does not use get_keyval_feature() only for backward compatibility
bool b_no_PBC = !is_enabled(f_cvc_pbc_minimum_image); // Enabled by default
get_keyval(conf, "forceNoPBC", b_no_PBC, b_no_PBC);
if (b_no_PBC) {
disable(f_cvc_pbc_minimum_image);
} else {
enable(f_cvc_pbc_minimum_image);
}
// Attempt scalable calculations when in parallel? (By default yes, if available)
get_keyval(conf, "scalable", b_try_scalable, true);
get_keyval(conf, "scalable", b_try_scalable, b_try_scalable);
if (cvm::debug())
cvm::log("Done initializing cvc base object.\n");

View File

@ -98,12 +98,14 @@ public:
/// \brief Constructor
///
/// At least one constructor which reads a string should be defined
/// for every class inheriting from cvc \param conf Contents
/// of the configuration file pertaining to this \link cvc
/// \endlink
/// Calls the init() function of the class
cvc(std::string const &conf);
/// An init function should be defined for every class inheriting from cvc
/// \param conf Contents of the configuration file pertaining to this \link
/// cvc \endlink
virtual int init(std::string const &conf);
/// \brief Within the constructor, make a group parse its own
/// options from the provided configuration string
/// Returns reference to new group
@ -231,7 +233,7 @@ public:
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
colvarvalue const &x2) const;
/// \brief Wrapp value (for periodic/symmetric cvcs)
/// \brief Wrap value (for periodic/symmetric cvcs)
virtual void wrap(colvarvalue &x) const;
/// \brief Pointers to all atom groups, to let colvars collect info

View File

@ -148,7 +148,7 @@ void colvar::distance_vec::apply_force(colvarvalue const &force)
cvm::real colvar::distance_vec::dist2(colvarvalue const &x1,
colvarvalue const &x2) const
{
return cvm::position_dist2(x1.rvector_value, x2.rvector_value);
return (cvm::position_distance(x1.rvector_value, x2.rvector_value)).norm2();
}
@ -192,7 +192,7 @@ colvar::distance_z::distance_z(std::string const &conf)
// this group is optional
ref2 = parse_group(conf, "ref2", true);
if (ref2 && ref2->size()) {
if ( ref2 ) {
cvm::log("Using axis joining the centers of mass of groups \"ref\" and \"ref2\"");
fixed_axis = false;
if (key_lookup(conf, "axis"))
@ -306,7 +306,7 @@ void colvar::distance_z::apply_force(colvarvalue const &force)
if (!ref1->noforce)
ref1->apply_colvar_force(force.real_value);
if (ref2 && ref2->size() && !ref2->noforce)
if (ref2 && !ref2->noforce)
ref2->apply_colvar_force(force.real_value);
if (!main->noforce)
@ -464,7 +464,7 @@ void colvar::distance_xy::apply_force(colvarvalue const &force)
if (!ref1->noforce)
ref1->apply_colvar_force(force.real_value);
if (ref2 && ref2->size() && !ref2->noforce)
if (ref2 && !ref2->noforce)
ref2->apply_colvar_force(force.real_value);
if (!main->noforce)
@ -979,14 +979,12 @@ colvar::rmsd::rmsd(std::string const &conf)
"if provided, must be non-zero.\n");
return;
}
} else {
// if not, rely on existing atom indices for the group
atoms->create_sorted_ids();
ref_pos.resize(atoms->size());
}
cvm::load_coords(ref_pos_file.c_str(), ref_pos, atoms->sorted_ids,
ref_pos_col, ref_pos_col_value);
ref_pos.resize(atoms->size());
cvm::load_coords(ref_pos_file.c_str(), &ref_pos, atoms,
ref_pos_col, ref_pos_col_value);
}
}
@ -1172,13 +1170,11 @@ colvar::eigenvector::eigenvector(std::string const &conf)
"if provided, must be non-zero.\n");
return;
}
} else {
// if not, use atom indices
atoms->create_sorted_ids();
}
ref_pos.resize(atoms->size());
cvm::load_coords(file_name.c_str(), ref_pos, atoms->sorted_ids, file_col, file_col_value);
cvm::load_coords(file_name.c_str(), &ref_pos, atoms,
file_col, file_col_value);
}
}
@ -1249,13 +1245,11 @@ colvar::eigenvector::eigenvector(std::string const &conf)
cvm::error("Error: vectorColValue, if provided, must be non-zero.\n");
return;
}
} else {
// if not, use atom indices
atoms->create_sorted_ids();
}
eigenvec.resize(atoms->size());
cvm::load_coords(file_name.c_str(), eigenvec, atoms->sorted_ids, file_col, file_col_value);
cvm::load_coords(file_name.c_str(), &eigenvec, atoms,
file_col, file_col_value);
}
}

View File

@ -50,12 +50,11 @@ colvar::orientation::orientation(std::string const &conf)
"if provided, must be non-zero.\n");
return;
}
} else {
// if not, use atom indices
atoms->create_sorted_ids();
}
ref_pos.resize(atoms->size());
cvm::load_coords(file_name.c_str(), ref_pos, atoms->sorted_ids, file_col, file_col_value);
cvm::load_coords(file_name.c_str(), &ref_pos, atoms,
file_col, file_col_value);
}
}

View File

@ -549,7 +549,7 @@ void colvardeps::init_cv_requires() {
f_req_exclude(f_cv_custom_function, f_cv_scripted);
init_feature(f_cv_periodic, "periodic", f_type_static);
f_req_self(f_cv_periodic, f_cv_homogeneous);
f_req_self(f_cv_periodic, f_cv_scalar);
init_feature(f_cv_scalar, "scalar", f_type_static);
init_feature(f_cv_linear, "linear", f_type_static);
init_feature(f_cv_homogeneous, "homogeneous", f_type_static);

View File

@ -329,7 +329,6 @@ void integrate_potential::update_div_local(const std::vector<int> &ix0)
const int linear_index = address(ix0);
int i, j, k;
std::vector<int> ix = ix0;
const cvm::real * g;
if (nd == 2) {
// gradients at grid points surrounding the current scalar grid point
@ -783,7 +782,7 @@ void integrate_potential::atimes(const std::vector<cvm::real> &A, std::vector<cv
/// Inversion of preconditioner matrix (e.g. diagonal of the Laplacian)
void integrate_potential::asolve(const std::vector<cvm::real> &b, std::vector<cvm::real> &x)
{
for (size_t i=0; i<nt; i++) {
for (size_t i=0; i<int(nt); i++) {
x[i] = b[i] * inv_lap_diag[i]; // Jacobi preconditioner - little benefit in tests so far
}
return;
@ -803,7 +802,7 @@ void integrate_potential::nr_linbcg_sym(const std::vector<cvm::real> &b, std::ve
iter=0;
atimes(x,r);
for (j=0;j<nt;j++) {
for (j=0;j<int(nt);j++) {
r[j]=b[j]-r[j];
}
bnrm=l2norm(b);
@ -814,26 +813,26 @@ void integrate_potential::nr_linbcg_sym(const std::vector<cvm::real> &b, std::ve
bkden = 1.0;
while (iter < itmax) {
++iter;
for (bknum=0.0,j=0;j<nt;j++) {
for (bknum=0.0,j=0;j<int(nt);j++) {
bknum += r[j]*r[j]; // precon: z[j]*r[j]
}
if (iter == 1) {
for (j=0;j<nt;j++) {
for (j=0;j<int(nt);j++) {
p[j] = r[j]; // precon: p[j] = z[j]
}
} else {
bk=bknum/bkden;
for (j=0;j<nt;j++) {
for (j=0;j<int(nt);j++) {
p[j] = bk*p[j] + r[j]; // precon: bk*p[j] + z[j]
}
}
bkden = bknum;
atimes(p,z);
for (akden=0.0,j=0;j<nt;j++) {
for (akden=0.0,j=0;j<int(nt);j++) {
akden += z[j]*p[j];
}
ak = bknum/akden;
for (j=0;j<nt;j++) {
for (j=0;j<int(nt);j++) {
x[j] += ak*p[j];
r[j] -= ak*z[j];
}

View File

@ -30,10 +30,10 @@ colvarmodule::colvarmodule(colvarproxy *proxy_in)
depth_s = 0;
cv_traj_os = NULL;
// pointer to the proxy object
if (proxy == NULL) {
proxy = proxy_in;
parse = new colvarparse();
proxy = proxy_in; // Pointer to the proxy object
parse = new colvarparse(); // Parsing object for global options
version_int = proxy->get_version_from_string(COLVARS_VERSION);
} else {
// TODO relax this error to handle multiple molecules in VMD
// once the module is not static anymore
@ -58,22 +58,24 @@ colvarmodule::colvarmodule(colvarproxy *proxy_in)
// "it_restart" will be set by the input state file, if any;
// "it" should be updated by the proxy
colvarmodule::it = colvarmodule::it_restart = 0;
colvarmodule::it_restart_from_state_file = true;
colvarmodule::use_scripted_forces = false;
use_scripted_forces = false;
scripting_after_biases = false;
colvarmodule::b_analysis = false;
b_analysis = false;
colvarmodule::debug_gradients_step_size = 1.0e-07;
colvarmodule::rotation::monitor_crossings = false;
colvarmodule::rotation::crossing_threshold = 1.0e-02;
colvarmodule::cv_traj_freq = 100;
colvarmodule::restart_out_freq = proxy->restart_frequency();
cv_traj_freq = 100;
restart_out_freq = proxy->restart_frequency();
// by default overwrite the existing trajectory file
colvarmodule::cv_traj_append = false;
cv_traj_append = false;
cv_traj_write_labels = true;
}
@ -189,26 +191,27 @@ int colvarmodule::parse_config(std::string &conf)
{
extra_conf.clear();
// parse global options
// Parse global options
if (catch_input_errors(parse_global_params(conf))) {
return get_error();
}
// parse the options for collective variables
// Parse the options for collective variables
if (catch_input_errors(parse_colvars(conf))) {
return get_error();
}
// parse the options for biases
// Parse the options for biases
if (catch_input_errors(parse_biases(conf))) {
return get_error();
}
// done parsing known keywords, check that all keywords found were valid ones
// Done parsing known keywords, check that all keywords found were valid ones
if (catch_input_errors(parse->check_keywords(conf, "colvarmodule"))) {
return get_error();
}
// Parse auto-generated configuration (e.g. for back-compatibility)
if (extra_conf.size()) {
catch_input_errors(parse_global_params(extra_conf));
catch_input_errors(parse_colvars(extra_conf));
@ -222,13 +225,11 @@ int colvarmodule::parse_config(std::string &conf)
cvm::log("Collective variables module (re)initialized.\n");
cvm::log(cvm::line_marker);
// update any necessary proxy data
// Update any necessary proxy data
proxy->setup();
if (cv_traj_os != NULL) {
// configuration might have changed, better redo the labels
write_traj_label(*cv_traj_os);
}
// configuration might have changed, better redo the labels
cv_traj_write_labels = true;
return get_error();
}
@ -279,15 +280,18 @@ int colvarmodule::parse_global_params(std::string const &conf)
parse->get_keyval(conf, "colvarsTrajAppend",
cv_traj_append, cv_traj_append, colvarparse::parse_silent);
parse->get_keyval(conf, "scriptedColvarForces", use_scripted_forces, false);
parse->get_keyval(conf, "scriptedColvarForces",
use_scripted_forces, use_scripted_forces);
parse->get_keyval(conf, "scriptingAfterBiases", scripting_after_biases, true);
parse->get_keyval(conf, "scriptingAfterBiases",
scripting_after_biases, scripting_after_biases);
if (use_scripted_forces && !proxy->force_script_defined) {
cvm::error("User script for scripted colvar forces not found.", INPUT_ERROR);
return cvm::error("User script for scripted colvar forces not found.",
INPUT_ERROR);
}
return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK);
return cvm::get_error();
}
@ -432,13 +436,13 @@ int colvarmodule::parse_biases(std::string const &conf)
}
int colvarmodule::num_variables() const
size_t colvarmodule::num_variables() const
{
return colvars.size();
}
int colvarmodule::num_variables_feature(int feature_id) const
size_t colvarmodule::num_variables_feature(int feature_id) const
{
size_t n = 0;
for (std::vector<colvar *>::const_iterator cvi = colvars.begin();
@ -452,13 +456,13 @@ int colvarmodule::num_variables_feature(int feature_id) const
}
int colvarmodule::num_biases() const
size_t colvarmodule::num_biases() const
{
return biases.size();
}
int colvarmodule::num_biases_feature(int feature_id) const
size_t colvarmodule::num_biases_feature(int feature_id) const
{
size_t n = 0;
for (std::vector<colvarbias *>::const_iterator bi = biases.begin();
@ -472,7 +476,7 @@ int colvarmodule::num_biases_feature(int feature_id) const
}
int colvarmodule::num_biases_type(std::string const &type) const
size_t colvarmodule::num_biases_type(std::string const &type) const
{
size_t n = 0;
for (std::vector<colvarbias *>::const_iterator bi = biases.begin();
@ -971,13 +975,20 @@ int colvarmodule::write_restart_file(std::string const &out_name)
int colvarmodule::write_traj_files()
{
if (cv_traj_os == NULL) {
open_traj_file(cv_traj_name);
if (open_traj_file(cv_traj_name) != COLVARS_OK) {
return cvm::get_error();
} else {
cv_traj_write_labels = true;
}
}
// write labels in the traj file every 1000 lines and at first timestep
if ((cvm::step_absolute() % (cv_traj_freq * 1000)) == 0 || cvm::step_relative() == 0) {
if ((cvm::step_absolute() % (cv_traj_freq * 1000)) == 0 ||
cvm::step_relative() == 0 ||
cv_traj_write_labels) {
write_traj_label(*cv_traj_os);
}
cv_traj_write_labels = false;
if ((cvm::step_absolute() % cv_traj_freq) == 0) {
write_traj(*cv_traj_os);
@ -1064,7 +1075,7 @@ int colvarmodule::reset()
{
parse->init();
cvm::log("Resetting the Collective Variables Module.\n");
cvm::log("Resetting the Collective Variables module.\n");
// Iterate backwards because we are deleting the elements as we go
for (std::vector<colvarbias *>::reverse_iterator bi = biases.rbegin();
@ -1073,6 +1084,7 @@ int colvarmodule::reset()
delete *bi; // the bias destructor updates the biases array
}
biases.clear();
biases_active_.clear();
// Iterate backwards because we are deleting the elements as we go
for (std::vector<colvar *>::reverse_iterator cvi = colvars.rbegin();
@ -1088,7 +1100,7 @@ int colvarmodule::reset()
proxy->reset();
if (cv_traj_os != NULL) {
// Do not close file here, as we might not be done with it yet.
// Do not close traj file here, as we might not be done with it yet.
proxy->flush_output_stream(cv_traj_os);
}
@ -1188,12 +1200,10 @@ std::istream & colvarmodule::read_restart(std::istream &is)
// read global restart information
std::string restart_conf;
if (is >> colvarparse::read_block("configuration", restart_conf)) {
if (it_restart_from_state_file) {
parse->get_keyval(restart_conf, "step",
it_restart, (size_t) 0,
colvarparse::parse_silent);
parse->get_keyval(restart_conf, "step",
it_restart, (size_t) 0,
colvarparse::parse_silent);
it = it_restart;
}
std::string restart_version;
parse->get_keyval(restart_conf, "version",
restart_version, std::string(""),
@ -1688,40 +1698,59 @@ int cvm::read_index_file(char const *filename)
return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK);
}
int cvm::load_atoms(char const *file_name,
cvm::atom_group &atoms,
std::string const &pdb_field,
double const pdb_field_value)
double pdb_field_value)
{
return proxy->load_atoms(file_name, atoms, pdb_field, pdb_field_value);
}
int cvm::load_coords(char const *file_name,
std::vector<cvm::atom_pos> &pos,
const std::vector<int> &indices,
std::string const &pdb_field,
double const pdb_field_value)
{
// Differentiate between PDB and XYZ files
// for XYZ files, use CVM internal parser
// otherwise call proxy function for PDB
std::string const ext(strlen(file_name) > 4 ? (file_name + (strlen(file_name) - 4)) : file_name);
int cvm::load_coords(char const *file_name,
std::vector<cvm::rvector> *pos,
cvm::atom_group *atoms,
std::string const &pdb_field,
double pdb_field_value)
{
int error_code = COLVARS_OK;
std::string const ext(strlen(file_name) > 4 ?
(file_name + (strlen(file_name) - 4)) :
file_name);
atoms->create_sorted_ids();
std::vector<cvm::rvector> sorted_pos(atoms->size(), cvm::rvector(0.0));
// Differentiate between PDB and XYZ files
if (colvarparse::to_lower_cppstr(ext) == std::string(".xyz")) {
if ( pdb_field.size() > 0 ) {
cvm::error("Error: PDB column may not be specified for XYZ coordinate file.\n", INPUT_ERROR);
return COLVARS_ERROR;
if (pdb_field.size() > 0) {
return cvm::error("Error: PDB column may not be specified "
"for XYZ coordinate files.\n", INPUT_ERROR);
}
return cvm::load_coords_xyz(file_name, pos, indices);
// For XYZ files, use internal parser
error_code |= cvm::load_coords_xyz(file_name, &sorted_pos, atoms);
} else {
return proxy->load_coords(file_name, pos, indices, pdb_field, pdb_field_value);
// Otherwise, call proxy function for PDB
error_code |= proxy->load_coords(file_name,
sorted_pos, atoms->sorted_ids(),
pdb_field, pdb_field_value);
}
std::vector<int> const &map = atoms->sorted_ids_map();
for (size_t i = 0; i < atoms->size(); i++) {
(*pos)[map[i]] = sorted_pos[i];
}
return error_code;
}
int cvm::load_coords_xyz(char const *filename,
std::vector<atom_pos> &pos,
const std::vector<int> &indices)
std::vector<rvector> *pos,
cvm::atom_group *atoms)
{
std::ifstream xyz_is(filename);
unsigned int natoms;
@ -1736,12 +1765,12 @@ int cvm::load_coords_xyz(char const *filename,
cvm::getline(xyz_is, line);
cvm::getline(xyz_is, line);
xyz_is.width(255);
std::vector<atom_pos>::iterator pos_i = pos.begin();
std::vector<atom_pos>::iterator pos_i = pos->begin();
if (pos.size() != natoms) { // Use specified indices
if (pos->size() != natoms) { // Use specified indices
int next = 0; // indices are zero-based
std::vector<int>::const_iterator index = indices.begin();
for ( ; pos_i != pos.end() ; pos_i++, index++) {
std::vector<int>::const_iterator index = atoms->sorted_ids().begin();
for ( ; pos_i != pos->end() ; pos_i++, index++) {
while ( next < *index ) {
cvm::getline(xyz_is, line);
@ -1751,7 +1780,7 @@ int cvm::load_coords_xyz(char const *filename,
xyz_is >> (*pos_i)[0] >> (*pos_i)[1] >> (*pos_i)[2];
}
} else { // Use all positions
for ( ; pos_i != pos.end() ; pos_i++) {
for ( ; pos_i != pos->end() ; pos_i++) {
xyz_is >> symbol;
xyz_is >> (*pos_i)[0] >> (*pos_i)[1] >> (*pos_i)[2];
}
@ -1792,17 +1821,13 @@ void cvm::request_total_force()
proxy->request_total_force(true);
}
cvm::rvector cvm::position_distance(atom_pos const &pos1,
atom_pos const &pos2)
cvm::rvector cvm::position_distance(cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2)
{
return proxy->position_distance(pos1, pos2);
}
cvm::real cvm::position_dist2(cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2)
{
return proxy->position_dist2(pos1, pos2);
}
cvm::real cvm::rand_gaussian(void)
{

View File

@ -73,8 +73,17 @@ private:
/// Impossible to initialize the main object without arguments
colvarmodule();
/// Integer representing the version string (allows comparisons)
int version_int;
public:
/// Get the version number (higher = more recent)
int version_number() const
{
return version_int;
}
friend class colvarproxy;
// TODO colvarscript should be unaware of colvarmodule's internals
friend class colvarscript;
@ -158,10 +167,6 @@ public:
return it;
}
/// If true, get it_restart from the state file; if set to false,
/// the MD program is providing it
bool it_restart_from_state_file;
/// \brief Finite difference step size (if there is no dynamics, or
/// if gradients need to be tested independently from the size of
/// dt)
@ -306,19 +311,19 @@ private:
public:
/// Return how many variables are defined
int num_variables() const;
size_t num_variables() const;
/// Return how many variables have this feature enabled
int num_variables_feature(int feature_id) const;
size_t num_variables_feature(int feature_id) const;
/// Return how many biases are defined
int num_biases() const;
size_t num_biases() const;
/// Return how many biases have this feature enabled
int num_biases_feature(int feature_id) const;
size_t num_biases_feature(int feature_id) const;
/// Return how many biases of this type are defined
int num_biases_type(std::string const &type) const;
size_t num_biases_type(std::string const &type) const;
/// Return the names of time-dependent biases with forces enabled (ABF,
/// metadynamics, etc)
@ -479,9 +484,6 @@ public:
/// Print a message to the main log and set global error code
static int error(std::string const &message, int code = COLVARS_ERROR);
/// Print a message to the main log and exit normally
static void exit(std::string const &message);
// Replica exchange commands.
static bool replica_enabled();
static int replica_index();
@ -495,15 +497,6 @@ public:
static rvector position_distance(atom_pos const &pos1,
atom_pos const &pos2);
/// \brief Get the square distance between two positions (with
/// periodic boundary conditions handled transparently)
///
/// Note: in the case of periodic boundary conditions, this provides
/// an analytical square distance (while taking the square of
/// position_distance() would produce leads to a cusp)
static real position_dist2(atom_pos const &pos1,
atom_pos const &pos2);
/// \brief Names of groups from a Gromacs .ndx file to be read at startup
std::list<std::string> index_group_names;
@ -513,29 +506,36 @@ public:
/// \brief Read a Gromacs .ndx file
int read_index_file(char const *filename);
/// \brief Create atoms from a file \param filename name of the file
/// (usually a PDB) \param atoms array of the atoms to be allocated
/// \param pdb_field (optiona) if "filename" is a PDB file, use this
/// field to determine which are the atoms to be set
/// \brief Select atom IDs from a file (usually PDB) \param filename name of
/// the file \param atoms array into which atoms read from "filename" will be
/// appended \param pdb_field (optional) if the file is a PDB and this
/// string is non-empty, select atoms for which this field is non-zero
/// \param pdb_field_value (optional) if non-zero, select only atoms whose
/// pdb_field equals this
static int load_atoms(char const *filename,
atom_group &atoms,
std::string const &pdb_field,
double const pdb_field_value = 0.0);
double pdb_field_value = 0.0);
/// \brief Load the coordinates for a group of atoms from a file
/// (PDB or XYZ)
/// \brief Load coordinates for a group of atoms from a file (PDB or XYZ);
/// if "pos" is already allocated, the number of its elements must match the
/// number of entries in "filename" \param filename name of the file \param
/// pos array of coordinates \param atoms group containing the atoms (used
/// to obtain internal IDs) \param pdb_field (optional) if the file is a PDB
/// and this string is non-empty, select atoms for which this field is
/// non-zero \param pdb_field_value (optional) if non-zero, select only
/// atoms whose pdb_field equals this
static int load_coords(char const *filename,
std::vector<atom_pos> &pos,
const std::vector<int> &indices,
std::vector<rvector> *pos,
atom_group *atoms,
std::string const &pdb_field,
double const pdb_field_value = 0.0);
double pdb_field_value = 0.0);
/// \brief Load the coordinates for a group of atoms from an
/// XYZ file
static int load_coords_xyz(char const *filename,
std::vector<atom_pos> &pos,
const std::vector<int> &indices);
std::vector<rvector> *pos,
atom_group *atoms);
/// Frequency for collective variables trajectory output
static size_t cv_traj_freq;
@ -568,6 +568,9 @@ protected:
/// Appending to the existing trajectory file?
bool cv_traj_append;
/// Write labels at the next iteration
bool cv_traj_write_labels;
private:
/// Counter for the current depth in the object hierarchy (useg e.g. in output)

View File

@ -26,7 +26,10 @@
colvarproxy_system::colvarproxy_system() {}
colvarproxy_system::colvarproxy_system()
{
reset_pbc_lattice();
}
colvarproxy_system::~colvarproxy_system() {}
@ -55,10 +58,73 @@ bool colvarproxy_system::total_forces_same_step() const
}
cvm::real colvarproxy_system::position_dist2(cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2)
inline int round_to_integer(cvm::real x)
{
return (position_distance(pos1, pos2)).norm2();
return std::floor(x+0.5);
}
void colvarproxy_system::update_pbc_lattice()
{
// Periodicity is assumed in all directions
if (boundaries_type == boundaries_unsupported ||
boundaries_type == boundaries_non_periodic) {
cvm::error("Error: setting PBC lattice with unsupported boundaries.\n",
BUG_ERROR);
return;
}
{
cvm::rvector const v = cvm::rvector::outer(unit_cell_y, unit_cell_z);
reciprocal_cell_x = v/(v*unit_cell_x);
}
{
cvm::rvector const v = cvm::rvector::outer(unit_cell_z, unit_cell_x);
reciprocal_cell_y = v/(v*unit_cell_y);
}
{
cvm::rvector const v = cvm::rvector::outer(unit_cell_x, unit_cell_y);
reciprocal_cell_z = v/(v*unit_cell_z);
}
}
void colvarproxy_system::reset_pbc_lattice()
{
unit_cell_x.reset();
unit_cell_y.reset();
unit_cell_z.reset();
reciprocal_cell_x.reset();
reciprocal_cell_y.reset();
reciprocal_cell_z.reset();
}
cvm::rvector colvarproxy_system::position_distance(cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2)
const
{
if (boundaries_type == boundaries_unsupported) {
cvm::error("Error: unsupported boundary conditions.\n", INPUT_ERROR);
}
cvm::rvector diff = (pos2 - pos1);
if (boundaries_type == boundaries_non_periodic) return diff;
cvm::real const x_shift = round_to_integer(reciprocal_cell_x*diff);
cvm::real const y_shift = round_to_integer(reciprocal_cell_y*diff);
cvm::real const z_shift = round_to_integer(reciprocal_cell_z*diff);
diff.x -= x_shift*unit_cell_x.x + y_shift*unit_cell_y.x +
z_shift*unit_cell_z.x;
diff.y -= x_shift*unit_cell_x.y + y_shift*unit_cell_y.y +
z_shift*unit_cell_z.y;
diff.z -= x_shift*unit_cell_x.z + y_shift*unit_cell_y.z +
z_shift*unit_cell_z.z;
return diff;
}
@ -132,7 +198,7 @@ void colvarproxy_atoms::clear_atom(int index)
int colvarproxy_atoms::load_atoms(char const *filename,
cvm::atom_group &atoms,
std::string const &pdb_field,
double const)
double)
{
return cvm::error("Error: loading atom identifiers from a file "
"is currently not implemented.\n",
@ -142,9 +208,9 @@ int colvarproxy_atoms::load_atoms(char const *filename,
int colvarproxy_atoms::load_coords(char const *filename,
std::vector<cvm::atom_pos> &pos,
const std::vector<int> &indices,
std::vector<int> const &sorted_ids,
std::string const &pdb_field,
double const)
double)
{
return cvm::error("Error: loading atomic coordinates from a file "
"is currently not implemented.\n",
@ -661,6 +727,7 @@ int colvarproxy_io::close_output_stream(std::string const &output_name)
for ( ; osi != output_files.end(); osi++, osni++) {
if (*osni == output_name) {
((std::ofstream *) (*osi))->close();
delete *osi;
output_files.erase(osi);
output_stream_names.erase(osni);
return COLVARS_OK;
@ -729,3 +796,13 @@ size_t colvarproxy::restart_frequency()
return 0;
}
int colvarproxy::get_version_from_string(char const *version_string)
{
std::string const v(version_string);
std::istringstream is(v.substr(0, 4) + v.substr(5, 2) + v.substr(8, 2));
int newint;
is >> newint;
return newint;
}

View File

@ -14,6 +14,7 @@
#include <list>
#include "colvarmodule.h"
#include "colvartypes.h"
#include "colvarvalue.h"
@ -29,7 +30,7 @@
/// To interface to a new MD engine, the simplest solution is to derive a new
/// class from \link colvarproxy \endlink. Currently implemented are: \link
/// colvarproxy_lammps, \endlink, \link colvarproxy_namd, \endlink, \link
/// colvarproxy_vmd, \endlink.
/// colvarproxy_vmd \endlink.
// forward declarations
@ -68,14 +69,16 @@ public:
/// \brief Get the PBC-aware distance vector between two positions
virtual cvm::rvector position_distance(cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2) = 0;
cvm::atom_pos const &pos2) const;
/// \brief Get the PBC-aware square distance between two positions;
/// may need to be reimplemented independently from position_distance() for optimization purposes
virtual cvm::real position_dist2(cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2);
/// Recompute PBC reciprocal lattice (assumes XYZ periodicity)
void update_pbc_lattice();
/// Tell the proxy whether total forces are needed (may not always be available)
/// Set the lattice vectors to zero
void reset_pbc_lattice();
/// \brief Tell the proxy whether total forces are needed (they may not
/// always be available)
virtual void request_total_force(bool yesno);
/// Are total forces being used?
@ -83,6 +86,29 @@ public:
/// Are total forces from the current step available?
virtual bool total_forces_same_step() const;
protected:
/// \brief Type of boundary conditions
///
/// Orthogonal and triclinic cells are made available to objects.
/// For any other conditions (mixed periodicity, triclinic cells in LAMMPS)
/// minimum-image distances are computed by the host engine regardless.
enum Boundaries_type {
boundaries_non_periodic,
boundaries_pbc_ortho,
boundaries_pbc_triclinic,
boundaries_unsupported
};
/// Type of boundary conditions
Boundaries_type boundaries_type;
/// Bravais lattice vectors
cvm::rvector unit_cell_x, unit_cell_y, unit_cell_z;
/// Reciprocal lattice vectors
cvm::rvector reciprocal_cell_x, reciprocal_cell_y, reciprocal_cell_z;
};
@ -121,24 +147,30 @@ public:
/// (costly) set the corresponding atoms_ncopies to zero
virtual void clear_atom(int index);
/// \brief Read atom identifiers from a file \param filename name of
/// the file (usually a PDB) \param atoms array to which atoms read
/// from "filename" will be appended \param pdb_field (optiona) if
/// "filename" is a PDB file, use this field to determine which are
/// the atoms to be set
/// \brief Select atom IDs from a file (usually PDB) \param filename name of
/// the file \param atoms array to which atoms read from "filename" will be
/// appended \param pdb_field (optional) if the file is a PDB and this
/// string is non-empty, select atoms for which this field is non-zero
/// \param pdb_field_value (optional) if non-zero, select only atoms whose
/// pdb_field equals this
virtual int load_atoms(char const *filename,
cvm::atom_group &atoms,
std::string const &pdb_field,
double const pdb_field_value = 0.0);
double pdb_field_value = 0.0);
/// \brief Load the coordinates for a group of atoms from a file
/// (usually a PDB); if "pos" is already allocated, the number of its
/// elements must match the number of atoms in "filename"
/// \brief Load a set of coordinates from a file (usually PDB); if "pos" is
/// already allocated, the number of its elements must match the number of
/// entries in "filename" \param filename name of the file \param pos array
/// of coordinates \param sorted_ids array of sorted internal IDs, used to
/// loop through the file only once \param pdb_field (optional) if the file
/// is a PDB and this string is non-empty, select atoms for which this field
/// is non-zero \param pdb_field_value (optional) if non-zero, select only
/// atoms whose pdb_field equals this
virtual int load_coords(char const *filename,
std::vector<cvm::atom_pos> &pos,
const std::vector<int> &indices,
std::vector<int> const &sorted_ids,
std::string const &pdb_field,
double const pdb_field_value = 0.0);
double pdb_field_value = 0.0);
/// Clear atomic data
int reset();
@ -636,6 +668,15 @@ public:
return b_simulation_running;
}
/// Convert a version string "YYYY-MM-DD" into an integer
int get_version_from_string(char const *version_string);
/// Get the version number (higher = more recent)
int version_number() const
{
return version_int;
}
protected:
/// Whether a simulation is running (warn against irrecovarable errors)
@ -644,6 +685,9 @@ protected:
/// Whether the entire module should be deallocated by the host engine
bool b_delete_requested;
/// Integer representing the version string (allows comparisons)
int version_int;
};

View File

@ -1,5 +1,5 @@
#ifndef COLVARS_VERSION
#define COLVARS_VERSION "2018-01-17"
#define COLVARS_VERSION "2018-04-29"
// This file is part of the Collective Variables module (Colvars).
// The original version of Colvars and its updates are located at:
// https://github.com/colvars/colvars

View File

@ -130,7 +130,7 @@ public:
}
}
inline void operator *= (cvm::real const &a)
inline void operator *= (cvm::real a)
{
size_t i;
for (i = 0; i < this->size(); i++) {
@ -138,7 +138,7 @@ public:
}
}
inline void operator /= (cvm::real const &a)
inline void operator /= (cvm::real a)
{
size_t i;
for (i = 0; i < this->size(); i++) {
@ -146,7 +146,8 @@ public:
}
}
inline friend vector1d<T> operator + (vector1d<T> const &v1, vector1d<T> const &v2)
inline friend vector1d<T> operator + (vector1d<T> const &v1,
vector1d<T> const &v2)
{
check_sizes(v1.size(), v2.size());
vector1d<T> result(v1.size());
@ -157,7 +158,8 @@ public:
return result;
}
inline friend vector1d<T> operator - (vector1d<T> const &v1, vector1d<T> const &v2)
inline friend vector1d<T> operator - (vector1d<T> const &v1,
vector1d<T> const &v2)
{
check_sizes(v1.size(), v2.size());
vector1d<T> result(v1.size());
@ -168,7 +170,7 @@ public:
return result;
}
inline friend vector1d<T> operator * (vector1d<T> const &v, cvm::real const &a)
inline friend vector1d<T> operator * (vector1d<T> const &v, cvm::real a)
{
vector1d<T> result(v.size());
size_t i;
@ -178,12 +180,12 @@ public:
return result;
}
inline friend vector1d<T> operator * (cvm::real const &a, vector1d<T> const &v)
inline friend vector1d<T> operator * (cvm::real a, vector1d<T> const &v)
{
return v * a;
}
inline friend vector1d<T> operator / (vector1d<T> const &v, cvm::real const &a)
inline friend vector1d<T> operator / (vector1d<T> const &v, cvm::real a)
{
vector1d<T> result(v.size());
size_t i;
@ -246,7 +248,8 @@ public:
}
/// Assign a vector to a slice of this vector
inline void sliceassign(size_t const i1, size_t const i2, vector1d<T> const &v)
inline void sliceassign(size_t const i1, size_t const i2,
vector1d<T> const &v)
{
if ((i2 < i1) || (i2 >= this->size())) {
cvm::error("Error: trying to slice a vector using incorrect boundaries.\n");
@ -259,12 +262,13 @@ public:
/// Formatted output
inline size_t output_width(size_t const &real_width) const
inline size_t output_width(size_t real_width) const
{
return real_width*(this->size()) + 3*(this->size()-1) + 4;
}
inline friend std::istream & operator >> (std::istream &is, cvm::vector1d<T> &v)
inline friend std::istream & operator >> (std::istream &is,
cvm::vector1d<T> &v)
{
if (v.size() == 0) return is;
size_t const start_pos = is.tellg();
@ -288,7 +292,8 @@ public:
return is;
}
inline friend std::ostream & operator << (std::ostream &os, cvm::vector1d<T> const &v)
inline friend std::ostream & operator << (std::ostream &os,
cvm::vector1d<T> const &v)
{
std::streamsize const w = os.width();
std::streamsize const p = os.precision();
@ -377,6 +382,15 @@ protected:
{
return vector1d<T>(length, data);
}
inline int set(cvm::vector1d<T> const &v) const
{
if (v.size() != length) {
return cvm::error("Error: setting a matrix row from a vector of "
"incompatible size.\n", BUG_ERROR);
}
for (size_t i = 0; i < length; i++) data[i] = v[i];
return COLVARS_OK;
}
};
std::vector<T> data;
@ -515,9 +529,12 @@ public:
{
if ((m1.outer_length != m2.outer_length) ||
(m1.inner_length != m2.inner_length)) {
cvm::error("Error: trying to perform an operation between matrices of different sizes, "+
cvm::to_str(m1.outer_length)+"x"+cvm::to_str(m1.inner_length)+" and "+
cvm::to_str(m2.outer_length)+"x"+cvm::to_str(m2.inner_length)+".\n");
cvm::error("Error: trying to perform an operation between "
"matrices of different sizes, "+
cvm::to_str(m1.outer_length)+"x"+
cvm::to_str(m1.inner_length)+" and "+
cvm::to_str(m2.outer_length)+"x"+
cvm::to_str(m2.inner_length)+".\n");
}
}
@ -539,7 +556,7 @@ public:
}
}
inline void operator *= (cvm::real const &a)
inline void operator *= (cvm::real a)
{
size_t i;
for (i = 0; i < data.size(); i++) {
@ -547,7 +564,7 @@ public:
}
}
inline void operator /= (cvm::real const &a)
inline void operator /= (cvm::real a)
{
size_t i;
for (i = 0; i < data.size(); i++) {
@ -555,7 +572,8 @@ public:
}
}
inline friend matrix2d<T> operator + (matrix2d<T> const &m1, matrix2d<T> const &m2)
inline friend matrix2d<T> operator + (matrix2d<T> const &m1,
matrix2d<T> const &m2)
{
check_sizes(m1, m2);
matrix2d<T> result(m1.outer_length, m1.inner_length);
@ -566,7 +584,8 @@ public:
return result;
}
inline friend matrix2d<T> operator - (matrix2d<T> const &m1, matrix2d<T> const &m2)
inline friend matrix2d<T> operator - (matrix2d<T> const &m1,
matrix2d<T> const &m2)
{
check_sizes(m1, m2);
matrix2d<T> result(m1.outer_length, m1.inner_length);
@ -577,7 +596,7 @@ public:
return result;
}
inline friend matrix2d<T> operator * (matrix2d<T> const &m, cvm::real const &a)
inline friend matrix2d<T> operator * (matrix2d<T> const &m, cvm::real a)
{
matrix2d<T> result(m.outer_length, m.inner_length);
size_t i;
@ -587,12 +606,12 @@ public:
return result;
}
inline friend matrix2d<T> operator * (cvm::real const &a, matrix2d<T> const &m)
inline friend matrix2d<T> operator * (cvm::real a, matrix2d<T> const &m)
{
return m * a;
}
inline friend matrix2d<T> operator / (matrix2d<T> const &m, cvm::real const &a)
inline friend matrix2d<T> operator / (matrix2d<T> const &m, cvm::real a)
{
matrix2d<T> result(m.outer_length, m.inner_length);
size_t i;
@ -602,34 +621,17 @@ public:
return result;
}
/// Matrix multiplication
// inline friend matrix2d<T> const & operator * (matrix2d<T> const &m1, matrix2d<T> const &m2)
// {
// matrix2d<T> result(m1.outer_length, m2.inner_length);
// if (m1.inner_length != m2.outer_length) {
// cvm::error("Error: trying to multiply two matrices of incompatible sizes, "+
// cvm::to_str(m1.outer_length)+"x"+cvm::to_str(m1.inner_length)+" and "+
// cvm::to_str(m2.outer_length)+"x"+cvm::to_str(m2.inner_length)+".\n");
// } else {
// size_t i, j, k;
// for (i = 0; i < m1.outer_length; i++) {
// for (j = 0; j < m2.inner_length; j++) {
// for (k = 0; k < m1.inner_length; k++) {
// result[i][j] += m1[i][k] * m2[k][j];
// }
// }
// }
// }
// return result;
// }
/// vector-matrix multiplication
inline friend vector1d<T> operator * (vector1d<T> const &v, matrix2d<T> const &m)
inline friend vector1d<T> operator * (vector1d<T> const &v,
matrix2d<T> const &m)
{
vector1d<T> result(m.inner_length);
if (m.outer_length != v.size()) {
cvm::error("Error: trying to multiply a vector and a matrix of incompatible sizes, "+
cvm::to_str(v.size()) + " and " + cvm::to_str(m.outer_length)+"x"+cvm::to_str(m.inner_length) + ".\n");
cvm::error("Error: trying to multiply a vector and a matrix "
"of incompatible sizes, "+
cvm::to_str(v.size()) + " and " +
cvm::to_str(m.outer_length)+"x"+cvm::to_str(m.inner_length) +
".\n");
} else {
size_t i, k;
for (i = 0; i < m.inner_length; i++) {
@ -641,25 +643,6 @@ public:
return result;
}
// /// matrix-vector multiplication (unused for now)
// inline friend vector1d<T> const & operator * (matrix2d<T> const &m, vector1d<T> const &v)
// {
// vector1d<T> result(m.outer_length);
// if (m.inner_length != v.size()) {
// cvm::error("Error: trying to multiply a matrix and a vector of incompatible sizes, "+
// cvm::to_str(m.outer_length)+"x"+cvm::to_str(m.inner_length)
// + " and " + cvm::to_str(v.length) + ".\n");
// } else {
// size_t i, k;
// for (i = 0; i < m.outer_length; i++) {
// for (k = 0; k < m.inner_length; k++) {
// result[i] += m[i][k] * v[k];
// }
// }
// }
// return result;
// }
/// Formatted output
friend std::ostream & operator << (std::ostream &os,
matrix2d<T> const &m)
@ -725,49 +708,52 @@ public:
cvm::real x, y, z;
inline rvector()
: x(0.0), y(0.0), z(0.0)
{}
{
reset();
}
inline rvector(cvm::real const &x_i,
cvm::real const &y_i,
cvm::real const &z_i)
: x(x_i), y(y_i), z(z_i)
{}
/// \brief Set all components to zero
inline void reset()
{
set(0.0);
}
inline rvector(cvm::real x_i, cvm::real y_i, cvm::real z_i)
{
set(x_i, y_i, z_i);
}
inline rvector(cvm::vector1d<cvm::real> const &v)
: x(v[0]), y(v[1]), z(v[2])
{}
{
set(v[0], v[1], v[2]);
}
inline rvector(cvm::real t)
: x(t), y(t), z(t)
{}
{
set(t);
}
/// \brief Set all components to a scalar value
inline void set(cvm::real const &value) {
/// \brief Set all components to a scalar
inline void set(cvm::real value)
{
x = y = z = value;
}
/// \brief Assign all components
inline void set(cvm::real const &x_i,
cvm::real const &y_i,
cvm::real const &z_i) {
inline void set(cvm::real x_i, cvm::real y_i, cvm::real z_i)
{
x = x_i;
y = y_i;
z = z_i;
}
/// \brief Set all components to zero
inline void reset() {
x = y = z = 0.0;
}
/// \brief Access cartesian components by index
inline cvm::real & operator [] (int const &i) {
inline cvm::real & operator [] (int i) {
return (i == 0) ? x : (i == 1) ? y : (i == 2) ? z : x;
}
/// \brief Access cartesian components by index
inline cvm::real const & operator [] (int const &i) const {
inline cvm::real operator [] (int i) const {
return (i == 0) ? x : (i == 1) ? y : (i == 2) ? z : x;
}
@ -780,14 +766,6 @@ public:
return result;
}
inline cvm::rvector & operator = (cvm::real const &v)
{
x = v;
y = v;
z = v;
return *this;
}
inline void operator += (cvm::rvector const &v)
{
x += v.x;
@ -802,7 +780,7 @@ public:
z -= v.z;
}
inline void operator *= (cvm::real const &v)
inline void operator *= (cvm::real v)
{
x *= v;
y *= v;
@ -832,13 +810,14 @@ public:
return (n > 0. ? cvm::rvector(x, y, z)/n : cvm::rvector(1., 0., 0.));
}
static inline size_t output_width(size_t const &real_width)
static inline size_t output_width(size_t real_width)
{
return 3*real_width + 10;
}
static inline cvm::rvector outer(cvm::rvector const &v1, cvm::rvector const &v2)
static inline cvm::rvector outer(cvm::rvector const &v1,
cvm::rvector const &v2)
{
return cvm::rvector( v1.y*v2.z - v2.y*v1.z,
-v1.x*v2.z + v2.x*v1.z,
@ -850,41 +829,35 @@ public:
return cvm::rvector(-v.x, -v.y, -v.z);
}
friend inline int operator == (cvm::rvector const &v1, cvm::rvector const &v2)
{
return (v1.x == v2.x) && (v1.y == v2.y) && (v1.z == v2.z);
}
friend inline int operator != (cvm::rvector const &v1, cvm::rvector const &v2)
{
return (v1.x != v2.x) || (v1.y != v2.y) || (v1.z != v2.z);
}
friend inline cvm::rvector operator + (cvm::rvector const &v1, cvm::rvector const &v2)
friend inline cvm::rvector operator + (cvm::rvector const &v1,
cvm::rvector const &v2)
{
return cvm::rvector(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);
}
friend inline cvm::rvector operator - (cvm::rvector const &v1, cvm::rvector const &v2)
friend inline cvm::rvector operator - (cvm::rvector const &v1,
cvm::rvector const &v2)
{
return cvm::rvector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);
}
friend inline cvm::real operator * (cvm::rvector const &v1, cvm::rvector const &v2)
/// Inner (dot) product
friend inline cvm::real operator * (cvm::rvector const &v1,
cvm::rvector const &v2)
{
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
}
friend inline cvm::rvector operator * (cvm::real const &a, cvm::rvector const &v)
friend inline cvm::rvector operator * (cvm::real a, cvm::rvector const &v)
{
return cvm::rvector(a*v.x, a*v.y, a*v.z);
}
friend inline cvm::rvector operator * (cvm::rvector const &v, cvm::real const &a)
friend inline cvm::rvector operator * (cvm::rvector const &v, cvm::real a)
{
return cvm::rvector(a*v.x, a*v.y, a*v.z);
}
friend inline cvm::rvector operator / (cvm::rvector const &v, cvm::real const &a)
friend inline cvm::rvector operator / (cvm::rvector const &v, cvm::real a)
{
return cvm::rvector(v.x/a, v.y/a, v.z/a);
}
@ -946,15 +919,9 @@ public:
{}
/// Constructor component by component
inline rmatrix(cvm::real const &xxi,
cvm::real const &xyi,
cvm::real const &xzi,
cvm::real const &yxi,
cvm::real const &yyi,
cvm::real const &yzi,
cvm::real const &zxi,
cvm::real const &zyi,
cvm::real const &zzi)
inline rmatrix(cvm::real xxi, cvm::real xyi, cvm::real xzi,
cvm::real yxi, cvm::real yyi, cvm::real yzi,
cvm::real zxi, cvm::real zyi, cvm::real zzi)
: cvm::matrix2d<cvm::real>(3, 3)
{
this->xx() = xxi;
@ -983,31 +950,13 @@ public:
inline cvm::rmatrix transpose() const
{
return cvm::rmatrix(this->xx(),
this->yx(),
this->zx(),
this->xy(),
this->yy(),
this->zy(),
this->xz(),
this->yz(),
this->zz());
return cvm::rmatrix(this->xx(), this->yx(), this->zx(),
this->xy(), this->yy(), this->zy(),
this->xz(), this->yz(), this->zz());
}
friend cvm::rvector operator * (cvm::rmatrix const &m, cvm::rvector const &r);
// friend inline cvm::rmatrix const operator * (cvm::rmatrix const &m1, cvm::rmatrix const &m2) {
// return cvm::rmatrix (m1.xx()*m2.xx() + m1.xy()*m2.yx() + m1.xz()*m2.yz(),
// m1.xx()*m2.xy() + m1.xy()*m2.yy() + m1.xz()*m2.zy(),
// m1.xx()*m2.xz() + m1.xy()*m2.yz() + m1.xz()*m2.zz(),
// m1.yx()*m2.xx() + m1.yy()*m2.yx() + m1.yz()*m2.yz(),
// m1.yx()*m2.xy() + m1.yy()*m2.yy() + m1.yz()*m2.yy(),
// m1.yx()*m2.xz() + m1.yy()*m2.yz() + m1.yz()*m2.yz(),
// m1.zx()*m2.xx() + m1.zy()*m2.yx() + m1.zz()*m2.yz(),
// m1.zx()*m2.xy() + m1.zy()*m2.yy() + m1.zz()*m2.yy(),
// m1.zx()*m2.xz() + m1.zy()*m2.yz() + m1.zz()*m2.yz());
// }
};
@ -1031,7 +980,7 @@ public:
cvm::real q0, q1, q2, q3;
/// Constructor from a 3-d vector
inline quaternion(cvm::real const &x, cvm::real const &y, cvm::real const &z)
inline quaternion(cvm::real x, cvm::real y, cvm::real z)
: q0(0.0), q1(x), q2(y), q3(z)
{}
@ -1041,10 +990,10 @@ public:
{}
/// Constructor component by component
inline quaternion(cvm::real const &q0i,
cvm::real const &q1i,
cvm::real const &q2i,
cvm::real const &q3i)
inline quaternion(cvm::real q0i,
cvm::real q1i,
cvm::real q2i,
cvm::real q3i)
: q0(q0i), q1(q1i), q2(q2i), q3(q3i)
{}
@ -1055,9 +1004,9 @@ public:
/// "Constructor" after Euler angles (in radians)
///
/// http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
inline void set_from_euler_angles(cvm::real const &phi_in,
cvm::real const &theta_in,
cvm::real const &psi_in)
inline void set_from_euler_angles(cvm::real phi_in,
cvm::real theta_in,
cvm::real psi_in)
{
q0 = ( (std::cos(phi_in/2.0)) * (std::cos(theta_in/2.0)) * (std::cos(psi_in/2.0)) +
(std::sin(phi_in/2.0)) * (std::sin(theta_in/2.0)) * (std::sin(psi_in/2.0)) );
@ -1079,7 +1028,7 @@ public:
}
/// \brief Set all components to a scalar
inline void set(cvm::real const &value = 0.0)
inline void set(cvm::real value)
{
q0 = q1 = q2 = q3 = value;
}
@ -1087,7 +1036,7 @@ public:
/// \brief Set all components to zero (null quaternion)
inline void reset()
{
q0 = q1 = q2 = q3 = 0.0;
set(0.0);
}
/// \brief Set the q0 component to 1 and the others to 0 (quaternion
@ -1099,7 +1048,7 @@ public:
}
/// Tell the number of characters required to print a quaternion, given that of a real number
static inline size_t output_width(size_t const &real_width)
static inline size_t output_width(size_t real_width)
{
return 4*real_width + 13;
}
@ -1113,7 +1062,7 @@ public:
friend std::istream & operator >> (std::istream &is, cvm::quaternion &q);
/// Access the quaternion as a 4-d array (return a reference)
inline cvm::real & operator [] (int const &i) {
inline cvm::real & operator [] (int i) {
switch (i) {
case 0:
return this->q0;
@ -1130,7 +1079,7 @@ public:
}
/// Access the quaternion as a 4-d array (return a value)
inline cvm::real operator [] (int const &i) const {
inline cvm::real operator [] (int i) const {
switch (i) {
case 0:
return this->q0;
@ -1175,12 +1124,12 @@ public:
return cvm::quaternion(q0, -q1, -q2, -q3);
}
inline void operator *= (cvm::real const &a)
inline void operator *= (cvm::real a)
{
q0 *= a; q1 *= a; q2 *= a; q3 *= a;
}
inline void operator /= (cvm::real const &a)
inline void operator /= (cvm::real a)
{
q0 /= a; q1 /= a; q2 /= a; q3 /= a;
}
@ -1215,19 +1164,22 @@ public:
}
friend inline cvm::quaternion operator + (cvm::quaternion const &h, cvm::quaternion const &q)
friend inline cvm::quaternion operator + (cvm::quaternion const &h,
cvm::quaternion const &q)
{
return cvm::quaternion(h.q0+q.q0, h.q1+q.q1, h.q2+q.q2, h.q3+q.q3);
}
friend inline cvm::quaternion operator - (cvm::quaternion const &h, cvm::quaternion const &q)
friend inline cvm::quaternion operator - (cvm::quaternion const &h,
cvm::quaternion const &q)
{
return cvm::quaternion(h.q0-q.q0, h.q1-q.q1, h.q2-q.q2, h.q3-q.q3);
}
/// \brief Provides the quaternion product. \b NOTE: for the inner
/// product use: \code h.inner (q); \endcode
friend inline cvm::quaternion operator * (cvm::quaternion const &h, cvm::quaternion const &q)
friend inline cvm::quaternion operator * (cvm::quaternion const &h,
cvm::quaternion const &q)
{
return cvm::quaternion(h.q0*q.q0 - h.q1*q.q1 - h.q2*q.q2 - h.q3*q.q3,
h.q0*q.q1 + h.q1*q.q0 + h.q2*q.q3 - h.q3*q.q2,
@ -1235,18 +1187,18 @@ public:
h.q0*q.q3 + h.q3*q.q0 + h.q1*q.q2 - h.q2*q.q1);
}
friend inline cvm::quaternion operator * (cvm::real const &c,
friend inline cvm::quaternion operator * (cvm::real c,
cvm::quaternion const &q)
{
return cvm::quaternion(c*q.q0, c*q.q1, c*q.q2, c*q.q3);
}
friend inline cvm::quaternion operator * (cvm::quaternion const &q,
cvm::real const &c)
cvm::real c)
{
return cvm::quaternion(q.q0*c, q.q1*c, q.q2*c, q.q3*c);
}
friend inline cvm::quaternion operator / (cvm::quaternion const &q,
cvm::real const &c)
cvm::real c)
{
return cvm::quaternion(q.q0/c, q.q1/c, q.q2/c, q.q3/c);
}
@ -1407,7 +1359,7 @@ public:
std::vector< cvm::vector1d<cvm::rvector> > dQ0_1, dQ0_2;
/// Allocate space for the derivatives of the rotation
inline void request_group1_gradients(size_t const &n)
inline void request_group1_gradients(size_t n)
{
dS_1.resize(n, cvm::matrix2d<cvm::rvector>(4, 4));
dL0_1.resize(n, cvm::rvector(0.0, 0.0, 0.0));
@ -1415,7 +1367,7 @@ public:
}
/// Allocate space for the derivatives of the rotation
inline void request_group2_gradients(size_t const &n)
inline void request_group2_gradients(size_t n)
{
dS_2.resize(n, cvm::matrix2d<cvm::rvector>(4, 4));
dL0_2.resize(n, cvm::rvector(0.0, 0.0, 0.0));
@ -1448,7 +1400,7 @@ public:
}
/// Constructor after an axis of rotation and an angle (in radians)
inline rotation(cvm::real const &angle, cvm::rvector const &axis)
inline rotation(cvm::real angle, cvm::rvector const &axis)
: b_debug_gradients(false)
{
cvm::rvector const axis_n = axis.unit();
@ -1500,20 +1452,18 @@ public:
if (q.q0 != 0.0) {
// cvm::real const x = iprod/q.q0;
cvm::real const dspindx =
(180.0/PI) * 2.0 * (1.0 / (1.0 + (iprod*iprod)/(q.q0*q.q0)));
cvm::real const dspindx = (180.0/PI) * 2.0 * (1.0 / (1.0 + (iprod*iprod)/(q.q0*q.q0)));
return
cvm::quaternion( dspindx * (iprod * (-1.0) / (q.q0*q.q0)),
dspindx * ((1.0/q.q0) * axis.x),
dspindx * ((1.0/q.q0) * axis.y),
dspindx * ((1.0/q.q0) * axis.z));
return cvm::quaternion( dspindx * (iprod * (-1.0) / (q.q0*q.q0)),
dspindx * ((1.0/q.q0) * axis.x),
dspindx * ((1.0/q.q0) * axis.y),
dspindx * ((1.0/q.q0) * axis.z));
} else {
// (1/(1+x^2)) ~ (1/x)^2
return
cvm::quaternion((180.0/PI) * 2.0 * ((-1.0)/iprod), 0.0, 0.0, 0.0);
// XX TODO: What if iprod == 0? XX
// The documentation of spinAngle discourages its use when q_vec and
// axis are not close
return cvm::quaternion((180.0/PI) * 2.0 * ((-1.0)/iprod), 0.0, 0.0, 0.0);
}
}

View File

@ -5,7 +5,7 @@
#
# 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
# 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.
@ -37,7 +37,7 @@ def get_ctypes_int(size):
return c_int32
elif size == 8:
return c_int64
return c_int
return c_int
class MPIAbortException(Exception):
def __init__(self, message):
@ -47,7 +47,7 @@ class MPIAbortException(Exception):
return repr(self.message)
class lammps(object):
# detect if Python is using version of mpi4py that can pass a communicator
has_mpi4py = False
@ -71,7 +71,7 @@ class lammps(object):
# if a pointer to a LAMMPS object is handed in,
# all symbols should already be available
try:
if ptr: self.lib = CDLL("",RTLD_GLOBAL)
except:
@ -84,7 +84,7 @@ class lammps(object):
# so that LD_LIBRARY_PATH does not need to be set for regular install
# fall back to loading with a relative path,
# typically requires LD_LIBRARY_PATH to be set appropriately
if not self.lib:
try:
if not name: self.lib = CDLL(join(modpath,"liblammps.so"),RTLD_GLOBAL)
@ -110,15 +110,15 @@ class lammps(object):
self.lib.lammps_gather_atoms.argtypes = \
[c_void_p,c_char_p,c_int,c_int,c_void_p]
self.lib.lammps_gather_atoms.restype = None
self.lib.lammps_gather_atoms_concat.argtypes = \
[c_void_p,c_char_p,c_int,c_int,c_void_p]
self.lib.lammps_gather_atoms_concat.restype = None
self.lib.lammps_gather_atoms_subset.argtypes = \
[c_void_p,c_char_p,c_int,c_int,c_int,POINTER(c_int),c_void_p]
self.lib.lammps_gather_atoms_subset.restype = None
self.lib.lammps_scatter_atoms.argtypes = \
[c_void_p,c_char_p,c_int,c_int,c_void_p]
self.lib.lammps_scatter_atoms.restype = None
@ -137,7 +137,7 @@ class lammps(object):
# just convert it to ctypes ptr and store in self.lmp
if not ptr:
# with mpi4py v2, can pass MPI communicator to LAMMPS
# need to adjust for type of MPI communicator object
# allow for int (like MPICH) or void* (like OpenMPI)
@ -211,7 +211,7 @@ class lammps(object):
self.c_imageint = get_ctypes_int(self.extract_setting("imageint"))
# shut-down LAMMPS instance
def __del__(self):
if self.lmp and self.opened:
self.lib.lammps_close(self.lmp)
@ -230,7 +230,7 @@ class lammps(object):
self.lib.lammps_file(self.lmp,file)
# send a single command
def command(self,cmd):
if cmd: cmd = cmd.encode()
self.lib.lammps_command(self.lmp,cmd)
@ -250,13 +250,13 @@ class lammps(object):
cmds = [x.encode() for x in cmdlist if type(x) is str]
args = (c_char_p * len(cmdlist))(*cmds)
self.lib.lammps_commands_list(self.lmp,len(cmdlist),args)
# send a string of commands
def commands_string(self,multicmd):
if type(multicmd) is str: multicmd = multicmd.encode()
self.lib.lammps_commands_string(self.lmp,c_char_p(multicmd))
# extract lammps type byte sizes
def extract_setting(self, name):
@ -265,7 +265,7 @@ class lammps(object):
return int(self.lib.lammps_extract_setting(self.lmp,name))
# extract global info
def extract_global(self,name,type):
if name: name = name.encode()
if type == 0:
@ -277,7 +277,7 @@ class lammps(object):
return ptr[0]
# extract global info
def extract_box(self):
boxlo = (3*c_double)()
boxhi = (3*c_double)()
@ -286,11 +286,11 @@ class lammps(object):
xz = c_double()
periodicity = (3*c_int)()
box_change = c_int()
self.lib.lammps_extract_box(self.lmp,boxlo,boxhi,
byref(xy),byref(yz),byref(xz),
periodicity,byref(box_change))
boxlo = boxlo[:3]
boxhi = boxhi[:3]
xy = xy.value
@ -298,9 +298,9 @@ class lammps(object):
xz = xz.value
periodicity = periodicity[:3]
box_change = box_change.value
return boxlo,boxhi,xy,yz,xz,periodicity,box_change
# extract per-atom info
# NOTE: need to insure are converting to/from correct Python type
# e.g. for Python list or NumPy or ctypes
@ -318,7 +318,7 @@ class lammps(object):
else: return None
ptr = self.lib.lammps_extract_atom(self.lmp,name)
return ptr
@property
def numpy(self):
if not self._numpy:
@ -371,7 +371,7 @@ class lammps(object):
return self._numpy
# extract compute info
def extract_compute(self,id,style,type):
if id: id = id.encode()
if type == 0:
@ -384,9 +384,14 @@ class lammps(object):
ptr = self.lib.lammps_extract_compute(self.lmp,id,style,type)
return ptr
if type == 2:
self.lib.lammps_extract_compute.restype = POINTER(POINTER(c_double))
ptr = self.lib.lammps_extract_compute(self.lmp,id,style,type)
return ptr
if style == 0:
self.lib.lammps_extract_compute.restype = POINTER(c_int)
ptr = self.lib.lammps_extract_compute(self.lmp,id,style,type)
return ptr[0]
else:
self.lib.lammps_extract_compute.restype = POINTER(POINTER(c_double))
ptr = self.lib.lammps_extract_compute(self.lmp,id,style,type)
return ptr
return None
# extract fix info
@ -466,7 +471,7 @@ class lammps(object):
cboxlo = (3*c_double)(*boxlo)
cboxhi = (3*c_double)(*boxhi)
self.lib.lammps_reset_box(self.lmp,cboxlo,cboxhi,xy,yz,xz)
# return vector of atom properties gathered across procs
# 3 variants to match src/library.cpp
# name = atom property recognized by LAMMPS in atom->extract()
@ -475,7 +480,7 @@ class lammps(object):
# returned data is a 1d vector - doc how it is ordered?
# NOTE: need to insure are converting to/from correct Python type
# e.g. for Python list or NumPy or ctypes
def gather_atoms(self,name,type,count):
if name: name = name.encode()
natoms = self.lib.lammps_get_natoms(self.lmp)
@ -487,7 +492,7 @@ class lammps(object):
self.lib.lammps_gather_atoms(self.lmp,name,type,count,data)
else: return None
return data
def gather_atoms_concat(self,name,type,count):
if name: name = name.encode()
natoms = self.lib.lammps_get_natoms(self.lmp)
@ -519,7 +524,7 @@ class lammps(object):
# assume data is of correct type and length, as created by gather_atoms()
# NOTE: need to insure are converting to/from correct Python type
# e.g. for Python list or NumPy or ctypes
def scatter_atoms(self,name,type,count,data):
if name: name = name.encode()
self.lib.lammps_scatter_atoms(self.lmp,name,type,count,data)

2
src/.gitignore vendored
View File

@ -374,6 +374,8 @@
/fix_bond_break.h
/fix_bond_create.cpp
/fix_bond_create.h
/fix_bond_react.cpp
/fix_bond_react.h
/fix_bond_swap.cpp
/fix_bond_swap.h
/fix_cmap.cpp

View File

@ -16,7 +16,7 @@
------------------------------------------------------------------------- */
#include <mpi.h>
#include <string.h>
#include <cstring>
#include "compute_temp_asphere.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -15,9 +15,9 @@
Contributing author: Mike Brown (SNL)
------------------------------------------------------------------------- */
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include "math_extra.h"
#include "fix_nh_asphere.h"
#include "atom.h"

View File

@ -11,7 +11,7 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <string.h>
#include <cstring>
#include "fix_nph_asphere.h"
#include "modify.h"
#include "error.h"

View File

@ -11,7 +11,7 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <string.h>
#include <cstring>
#include "fix_npt_asphere.h"
#include "modify.h"
#include "error.h"

View File

@ -15,9 +15,9 @@
Contributing author: Mike Brown (SNL)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstring>
#include "fix_nve_asphere.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -11,9 +11,9 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include "fix_nve_asphere_noforce.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -11,9 +11,9 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstring>
#include "fix_nve_line.h"
#include "atom.h"
#include "atom_vec_line.h"

View File

@ -11,9 +11,9 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstring>
#include "fix_nve_tri.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -11,7 +11,7 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <string.h>
#include <cstring>
#include "fix_nvt_asphere.h"
#include "group.h"
#include "modify.h"

View File

@ -15,10 +15,10 @@
Contributing author: Mike Brown (SNL)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_gayberne.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -11,10 +11,10 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_line_lj.h"
#include "atom.h"
#include "atom_vec_line.h"

View File

@ -15,10 +15,10 @@
Contributing author: Mike Brown (SNL)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_resquared.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -11,10 +11,10 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_tri_lj.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -11,7 +11,7 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <stdlib.h>
#include <cstdlib>
#include "body_nparticle.h"
#include "math_extra.h"
#include "atom_vec_body.h"

View File

@ -11,8 +11,8 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include <cmath>
#include <cstring>
#include "compute_body_local.h"
#include "atom.h"
#include "atom_vec_body.h"

View File

@ -17,7 +17,7 @@
------------------------------------------------------------------------- */
#include <mpi.h>
#include <string.h>
#include <cstring>
#include "compute_temp_body.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -16,9 +16,9 @@
based on FixNHAsphere
------------------------------------------------------------------------- */
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include "math_extra.h"
#include "fix_nh_body.h"
#include "atom.h"

View File

@ -15,7 +15,7 @@
Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
------------------------------------------------------------------------- */
#include <string.h>
#include <cstring>
#include "fix_nph_body.h"
#include "modify.h"
#include "error.h"

View File

@ -15,7 +15,7 @@
Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
------------------------------------------------------------------------- */
#include <string.h>
#include <cstring>
#include "fix_npt_body.h"
#include "modify.h"
#include "error.h"

View File

@ -11,9 +11,9 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstring>
#include "fix_nve_body.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -15,7 +15,7 @@
Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
------------------------------------------------------------------------- */
#include <string.h>
#include <cstring>
#include "fix_nvt_body.h"
#include "group.h"
#include "modify.h"

View File

@ -11,10 +11,10 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_body.h"
#include "math_extra.h"
#include "atom.h"

View File

@ -15,9 +15,9 @@
Contributing author: Eric Simon (Cray)
------------------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include "angle_class2.h"
#include "atom.h"
#include "neighbor.h"

View File

@ -20,7 +20,7 @@ AngleStyle(class2,AngleClass2)
#ifndef LMP_ANGLE_CLASS2_H
#define LMP_ANGLE_CLASS2_H
#include <stdio.h>
#include <cstdio>
#include "angle.h"
namespace LAMMPS_NS {

View File

@ -15,8 +15,8 @@
Contributing author: Eric Simon (Cray)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdlib.h>
#include <cmath>
#include <cstdlib>
#include "bond_class2.h"
#include "atom.h"
#include "neighbor.h"

View File

@ -20,7 +20,7 @@ BondStyle(class2,BondClass2)
#ifndef LMP_BOND_CLASS2_H
#define LMP_BOND_CLASS2_H
#include <stdio.h>
#include <cstdio>
#include "bond.h"
namespace LAMMPS_NS {

View File

@ -15,9 +15,9 @@
Contributing author: Eric Simon (Cray)
------------------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include "dihedral_class2.h"
#include "atom.h"
#include "neighbor.h"

View File

@ -20,7 +20,7 @@ DihedralStyle(class2,DihedralClass2)
#ifndef LMP_DIHEDRAL_CLASS2_H
#define LMP_DIHEDRAL_CLASS2_H
#include <stdio.h>
#include <cstdio>
#include "dihedral.h"
namespace LAMMPS_NS {

View File

@ -15,9 +15,9 @@
Contributing author: Eric Simon (Cray)
------------------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include "improper_class2.h"
#include "atom.h"
#include "neighbor.h"

View File

@ -20,7 +20,7 @@ ImproperStyle(class2,ImproperClass2)
#ifndef LMP_IMPROPER_CLASS2_H
#define LMP_IMPROPER_CLASS2_H
#include <stdio.h>
#include <cstdio>
#include "improper.h"
namespace LAMMPS_NS {

View File

@ -11,9 +11,9 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include "pair_lj_class2.h"
#include "atom.h"
#include "comm.h"

View File

@ -11,9 +11,9 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include "pair_lj_class2_coul_cut.h"
#include "atom.h"
#include "comm.h"

View File

@ -11,10 +11,10 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_lj_class2_coul_long.h"
#include "atom.h"
#include "comm.h"

View File

@ -15,8 +15,8 @@
Contributing authors: Jeremy Lechman (SNL)
------------------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include <cmath>
#include <cstring>
#include "fix_wall_colloid.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -15,10 +15,10 @@
Contributing authors: Amit Kumar and Michael Bybee (UIUC)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_brownian.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -16,10 +16,10 @@
Dave Heine (Corning), polydispersity
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_brownian_poly.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -15,10 +15,10 @@
Contributing author: Pieter in 't Veld (SNL)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_colloid.h"
#include "atom.h"
#include "comm.h"

View File

@ -16,10 +16,10 @@
Amit Kumar and Michael Bybee (UIUC)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_lubricate.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -16,10 +16,10 @@
------------------------------------------------------------------------- */
#include <mpi.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_lubricateU.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -18,10 +18,10 @@
------------------------------------------------------------------------- */
#include <mpi.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_lubricateU_poly.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -17,10 +17,10 @@
Dave Heine (Corning), polydispersity
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "pair_lubricate_poly.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -15,8 +15,8 @@
Contributing authors: Randy Schunk (Sandia)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdlib.h>
#include <cmath>
#include <cstdlib>
#include "pair_yukawa_colloid.h"
#include "atom.h"
#include "atom_vec.h"

View File

@ -16,7 +16,7 @@
#include "error.h"
#include "update.h"
#include <string.h>
#include <cstring>
using namespace LAMMPS_NS;

View File

@ -17,7 +17,7 @@
#include "error.h"
#include "update.h"
#include <string.h>
#include <cstring>
using namespace LAMMPS_NS;
#define UNWRAPEXPAND 10.0

View File

@ -16,7 +16,7 @@
#include "error.h"
#include "update.h"
#include <string.h>
#include <cstring>
using namespace LAMMPS_NS;

Some files were not shown because too many files have changed in this diff Show More