Compare commits

...

22 Commits

Author SHA1 Message Date
4da8c1c4e2 patch 11Apr17 2017-04-11 09:00:37 -06:00
49dd9449b8 fix gcmc updates from Aidan, trimming of output for replica commands 2017-04-11 08:35:09 -06:00
76fd936972 Merge pull request #443 from Pakketeretet2/user-manifold-fix-every-keyword
User manifold fix every keyword
2017-04-11 08:27:53 -06:00
06cebb9fb4 Merge pull request #445 from Pakketeretet2/extract_for_bond
Extract for bond
2017-04-11 08:27:31 -06:00
b9d844ca8d Merge pull request #444 from ohenrich/user-cgdna
Minor updates to docu of USER-CGDNA package
2017-04-11 08:25:09 -06:00
ccc9367de7 Merge pull request #442 from akohlmey/small-updates-and-bugfixes
collected small updates and bugfixes
2017-04-11 08:24:32 -06:00
4c4a3fe5d1 Merge pull request #439 from rbberger/python_mixed_use_support
Support mixed Python use by honoring Python GIL
2017-04-11 08:24:06 -06:00
84ea8a79e6 correct link for dispersion parameter how-to and reformat 2017-04-10 20:43:24 -04:00
f19f558220 Removed changed bond_harmonic from wrong position. 2017-04-10 10:06:03 -04:00
1ad7d856fe Added forgotten #include string to bond_harmonic.cpp 2017-04-10 09:57:54 -04:00
d6357420ae propagate global package installation bugfix to explicit package scripts 2017-04-07 15:29:56 -04:00
62b9fa22b8 when computing only rotational temperature, we must not subtract the default n-dim extra DOFs 2017-04-07 15:11:26 -04:00
1725832b6c address issue where uninstalling an empty package will erase all code in src 2017-04-06 11:08:57 -04:00
874944f2ec Made fix adapt support bond harmonic. 2017-04-04 19:37:17 -04:00
497a5d88af Merge branch 'master' into user-cgdna 2017-04-04 20:03:57 +01:00
8993daaa31 Minor update to docu 2017-04-04 19:54:22 +01:00
e190eb15f5 remove debug printf 2017-04-04 17:54:33 +00:00
b6bc33bac6 Merge branch 'user_manifold_fix' into user-manifold-fix-every-keyword 2017-04-04 13:31:22 -04:00
03a6f5237f Made every keyword for user-manifold work as advertised. 2017-04-04 13:30:49 -04:00
28e86917a0 Made fix adapt work with bond_harmonic. 2017-04-04 12:35:26 -04:00
6f1bbd3cec protect fix ave/histo from segfaulting on non-existing computes, fixes or variables 2017-04-03 18:08:15 -04:00
1544b51dcb Support mixed Python use by honoring Python GIL
This enables support to both drive LAMMPS with a Python interpreter and
evaluating Python expressions inside of LAMMPS using that same interpreter.
Previously this has been avoided through an error message because the
binding code did not ensure that the necessary GIL (global interpreter lock)
structures exist (see issue #438).

All code paths which call Python C API functions must first acquire the
GIL through a call PyGILState_Ensure and release it with PyGILState_Release.
2017-03-29 01:49:15 -04:00
70 changed files with 717 additions and 756 deletions

View File

@ -1,7 +1,7 @@
<!-- HTML_ONLY -->
<HEAD>
<TITLE>LAMMPS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="31 Mar 2017 version">
<META NAME="docnumber" CONTENT="11 Apr 2017 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD>
@ -21,7 +21,7 @@
<H1></H1>
LAMMPS Documentation :c,h3
31 Mar 2017 version :c,h4
11 Apr 2017 version :c,h4
Version info: :h4

View File

@ -1155,7 +1155,7 @@ USER-OMP, t = OPT.
"zero"_dihedral_zero.html,
"hybrid"_dihedral_hybrid.html,
"charmm (ko)"_dihedral_charmm.html,
"charmmfsh"_dihedral_charmm.html,
"charmmfsw"_dihedral_charmm.html,
"class2 (ko)"_dihedral_class2.html,
"harmonic (io)"_dihedral_harmonic.html,
"helix (o)"_dihedral_helix.html,

View File

@ -215,7 +215,7 @@ documentation for the formula it computes.
"special_bonds"_special_bonds.html charmm
"special_bonds"_special_bonds.html amber :ul
NOTE: For CHARMM, the newer {charmmfsw} or {charmmfsh} styles were
NOTE: For CHARMM, newer {charmmfsw} or {charmmfsh} styles were
released in March 2017. We recommend they be used instead of the
older {charmm} styles. See discussion of the differences on the "pair
charmm"_pair_charmm.html and "dihedral charmm"_dihedral_charmm.html

View File

@ -1308,8 +1308,8 @@ oxdna/..."_pair_oxdna.html, "pair_style
oxdna2/..."_pair_oxdna2.html, "fix
nve/dotc/langevin"_fix_nve_dotc_langevin.html
Author: Oliver Henrich at the University of Strathclyde, Glasgow, UK and
University of Edinburgh (ohenrich@ph.ed.ac.uk).
Author: Oliver Henrich at the University of Strathclyde, Glasgow
(oliver.henrich at strath.ac.uk, also ohenrich at ph.ed.ac.uk).
Contact him directly if you have any questions.
:line

View File

@ -455,8 +455,7 @@ and related PPPM operations are somewhat insensitive to floating point
truncation errors and thus do not always need to be performed in
double precision. Using the -DFFT_SINGLE setting trades off a little
accuracy for reduced memory use and parallel communication costs for
transposing 3d FFT data. Note that single precision FFTs have only
been tested with the FFTW3, FFTW2, MKL, and KISS FFT options.
transposing 3d FFT data.
Step 7 :h6

View File

@ -46,9 +46,7 @@ for excluded volume interaction {oxdna/excv}, stacking {oxdna/stk}, cross-stacki
and coaxial stacking interaction {oxdna/coaxstk} as well as hydrogen-bonding interaction {oxdna/hbond} (see also documentation of
"pair_style oxdna/excv"_pair_oxdna.html). For the oxDNA2 "(Snodin)"_#oxdna2 bond style the analogous pair styles and an additional Debye-Hueckel pair
style {oxdna2/dh} have to be defined.
The coefficients
in the above example have to be kept fixed and cannot be changed without reparametrizing the entire model.
The coefficients in the above example have to be kept fixed and cannot be changed without reparametrizing the entire model.
Example input and data files for DNA duplexes can be found in examples/USER/cgdna/examples/oxDNA/ and /oxDNA2/.
A simple python setup tool which creates single straight or helical DNA strands,

View File

@ -10,25 +10,25 @@ dihedral_style charmm command :h3
dihedral_style charmm/intel command :h3
dihedral_style charmm/kk command :h3
dihedral_style charmm/omp command :h3
dihedral_style charmmfsh command :h3
dihedral_style charmmfsw command :h3
[Syntax:]
dihedral_style style :pre
style = {charmm} or {charmmfsh} :ul
style = {charmm} or {charmmfsw} :ul
[Examples:]
dihedral_style charmm
dihedral_style charmmfsh
dihedral_style charmmfsw
dihedral_coeff 1 0.2 1 180 1.0
dihedral_coeff 2 1.8 1 0 1.0
dihedral_coeff 1 3.1 2 180 0.5 :pre
[Description:]
The {charmm} and {charmmfsh} dihedral styles use the potential
The {charmm} and {charmmfsw} dihedral styles use the potential
:c,image(Eqs/dihedral_charmm.jpg)
@ -38,10 +38,12 @@ field (see comment on weighting factors below). See
"(Cornell)"_#dihedral-Cornell for a description of the AMBER force
field.
NOTE: The newer {charmmfsh} style was released in March 2017. We
NOTE: The newer {charmmfsw} style was released in March 2017. We
recommend it be used instead of the older {charmm} style when running
a simulation with the CHARMM force field and Coulomb cutoffs, via the
"pair_style lj/charmmfsw/coul/charmmfsh"_pair_charmm.html command.
a simulation with the CHARMM force field, either with long-range
Coulombics or a Coulomb cutoff, via the "pair_style
lj/charmmfsw/coul/long"_pair_charmm.html and "pair_style
lj/charmmfsw/coul/charmmfsh"_pair_charmm.html commands respectively.
Otherwise the older {charmm} style is fine to use. See the discussion
below and more details on the "pair_style charmm"_pair_charmm.html doc
page.
@ -86,17 +88,18 @@ default). Otherwise 1-4 non-bonded interactions in dihedrals will be
computed twice.
For simulations using the CHARMM force field with a Coulomb cutoff,
the difference between the {charmm} and {charmmfsh} styles is in the
the difference between the {charmm} and {charmmfsw} styles is in the
computation of the 1-4 non-bond interactions, though only if the
distance between the two atoms is within the switching region of the
pairwise potential defined by the corresponding CHARMM pair style,
i.e. within the outer cutoff specified for the pair style. The
{charmmfsh} style should only be used when using the "pair_style
lj/charmmfsw/coul/charmmfsh"_pair_charmm.html to make the Coulombic
pairwise calculations consistent. Use the {charmm} style with
long-range Coulombics or the older "pair_style
lj/charmm/coul/charmm"_pair_charmm.html command. See the discussion
on the "CHARMM pair_style"_pair_charmm.html doc page for details.
{charmmfsw} style should only be used when using the corresponding
"pair_style lj/charmmfsw/coul/charmmfsw"_pair_charmm.html or
"pair_style lj/charmmfsw/coul/long"_pair_charmm.html commands. Use
the {charmm} style with the older "pair_style"_pair_charmm.html
commands that have just "charmm" in their style name. See the
discussion on the "CHARMM pair_style"_pair_charmm.html doc page for
details.
Note that for AMBER force fields, which use pair styles with "lj/cut",
the special_bonds 1-4 scaling factor should be set to the AMBER
@ -104,7 +107,7 @@ defaults (1/2 and 5/6) and all the dihedral weighting factors (4th
coeff above) must be set to 0.0. In this case, you can use any pair
style you wish, since the dihedral does not need any Lennard-Jones
parameter information and will not compute any 1-4 non-bonded
interactions. Likewise the {charmm} or {charmmfsh} styles are
interactions. Likewise the {charmm} or {charmmfsw} styles are
identical in this case since no 1-4 non-bonded interactions are
computed.

View File

@ -22,6 +22,11 @@ attribute = {pair} or {kspace} or {atom} :l
pparam = parameter to adapt over time
I,J = type pair(s) to set parameter for
v_name = variable with name that calculates value of pparam
{bond} args = bstyle bparam I v_name
bstyle = bond style name, e.g. harmonic
bparam = parameter to adapt over time
I = type bond to set parameter for
v_name = variable with name that calculates value of bparam
{kspace} arg = v_name
v_name = variable with name that calculates scale factor on K-space terms
{atom} args = aparam v_name
@ -42,7 +47,10 @@ keyword = {scale} or {reset} :l
fix 1 all adapt 1 pair soft a 1 1 v_prefactor
fix 1 all adapt 1 pair soft a 2* 3 v_prefactor
fix 1 all adapt 1 pair lj/cut epsilon * * v_scale1 coul/cut scale 3 3 v_scale2 scale yes reset yes
fix 1 all adapt 10 atom diameter v_size :pre
fix 1 all adapt 10 atom diameter v_size
variable ramp_up equal "ramp(0.01,0.5)"
fix stretch all adapt 1 bond harmonic r0 1 v_ramp_up :pre
[Description:]
@ -192,6 +200,19 @@ fix 1 all adapt 1 pair soft a * * v_prefactor :pre
:line
The {bond} keyword uses the specified variable to change the value of
a bond coefficient over time, very similar to how the {pair} keyword
operates. The only difference is that now a bond coefficient for a
given bond type is adapted.
Currently {bond} does not support bond_style hybrid nor bond_style
hybrid/overlay as bond styles. The only bonds that currently are
working with fix_adapt are
"harmonic"_bond_harmonic.html: k,r0: type bonds :tb(c=3,s=:)
:line
The {kspace} keyword used the specified variable as a scale factor on
the energy, forces, virial calculated by whatever K-Space solver is
defined by the "kspace_style"_kspace_style.html command. If the

View File

@ -290,9 +290,10 @@ to be specified using the {gewald/disp}, {mesh/disp},
{force/disp/real} or {force/disp/kspace} keywords, or
the code will stop with an error message. When this option is set to
{yes}, the error message will not appear and the simulation will start.
For a typical application, using the automatic parameter generation will provide
simulations that are either inaccurate or slow. Using this option is thus not
recommended. For guidelines on how to obtain good parameters, see the "How-To"_Section_howto.html#howto_23 discussion.
For a typical application, using the automatic parameter generation
will provide simulations that are either inaccurate or slow. Using this
option is thus not recommended. For guidelines on how to obtain good
parameters, see the "How-To"_Section_howto.html#howto_24 discussion.
[Restrictions:] none

View File

@ -120,6 +120,9 @@ cutoff (distance units)
cutoff2 (distance units) :ul
The second coefficient, rho, must be greater than zero.
The coefficients A, rho, and C can be written as analytical expressions
of epsilon and sigma, in analogy to the Lennard-Jones potential
"(Khrapak)"_#Khrapak.
The latter 2 coefficients are optional. If not specified, the global
A,C and Coulombic cutoffs are used. If only one cutoff is specified,
@ -127,7 +130,6 @@ it is used as the cutoff for both A,C and Coulombic interactions for
this type pair. If both coefficients are specified, they are used as
the A,C and Coulombic cutoffs for this type pair. You cannot specify
2 cutoffs for style {buck}, since it has no Coulombic terms.
For {buck/coul/long} only the LJ cutoff can be specified since a
Coulombic cutoff cannot be specified for an individual I,J type pair.
All type pairs use the same global Coulombic cutoff specified in the
@ -194,3 +196,6 @@ only enabled if LAMMPS was built with that package. See the
"pair_coeff"_pair_coeff.html, "pair_style born"_pair_born.html
[Default:] none
:link(Khrapak)
[(Khrapak)] Khrapak, Chaudhuri, and Morfill, J Chem Phys, 134, 054120 (2011).

View File

@ -99,9 +99,10 @@ artifacts.
NOTE: The newer {charmmfsw} or {charmmfsh} styles were released in
March 2017. We recommend they be used instead of the older {charmm}
styles. Eventually code from the new styles will propagate into the
related pair styles (e.g. implicit, accelerator, free energy
variants).
styles. This includes the newer "dihedral_style
charmmfsw"_dihedral_charmm.html command. Eventually code from the new
styles will propagate into the related pair styles (e.g. implicit,
accelerator, free energy variants).
The general CHARMM formulas are as follows

View File

@ -9,11 +9,10 @@ boundary p p p
atom_style full
bond_style harmonic
angle_style charmm
dihedral_style charmm
dihedral_style charmmfsw
improper_style harmonic
pair_style lj/charmm/coul/charmm 8 12
#pair_style lj/charmmfsw/coul/charmmfsh 8 12
pair_style lj/charmmfsw/coul/charmmfsh 8 12
pair_modify mix arithmetic
fix cmap all cmap charmm22.cmap

View File

@ -1,201 +0,0 @@
LAMMPS (5 Oct 2016)
# Created by charmm2lammps v1.8.2.6 beta on Thu Mar 3 20:56:57 EST 2016
units real
neigh_modify delay 2 every 1
#newton off
boundary p p p
atom_style full
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/charmm 8 12
#pair_style lj/charmmfsw/coul/charmmfsh 8 12
pair_modify mix arithmetic
fix cmap all cmap charmm22.cmap
Reading potential file charmm22.cmap with DATE: 2016-09-26
fix_modify cmap energy yes
read_data gagg.data fix cmap crossterm CMAP
orthogonal box = (-34.4147 -36.1348 -39.3491) to (45.5853 43.8652 40.6509)
1 by 1 by 1 MPI processor grid
reading atoms ...
34 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
12 = max dihedrals/atom
scanning impropers ...
1 = max impropers/atom
reading bonds ...
33 bonds
reading angles ...
57 angles
reading dihedrals ...
75 dihedrals
reading impropers ...
7 impropers
4 = max # of 1-2 neighbors
7 = max # of 1-3 neighbors
13 = max # of 1-4 neighbors
16 = max # of special neighbors
special_bonds charmm
fix 1 all nve
#fix 1 all nvt temp 300 300 100.0
#fix 2 all shake 1e-9 500 0 m 1.0
velocity all create 0.0 12345678 dist uniform
thermo 1000
thermo_style custom step ecoul evdwl ebond eangle edihed f_cmap eimp
timestep 2.0
run 100000
Neighbor list info ...
1 neighbor list requests
update every 1 steps, delay 2 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 14
ghost atom cutoff = 14
binsize = 7 -> bins = 12 12 12
Memory usage per processor = 14.6355 Mbytes
Step E_coul E_vdwl E_bond E_angle E_dihed f_cmap E_impro
0 26.542777 -0.93822087 1.2470497 4.8441789 4.5432816 -1.473352 0.10453023
1000 28.673005 -0.47724367 0.80029132 3.151679 4.4684446 -2.3928648 0.18604953
2000 27.67955 -1.170342 0.72018905 4.0400131 4.4713764 -2.5490207 0.21834436
3000 29.256656 -0.35856055 0.73303546 3.7411606 4.4710568 -2.8939692 0.37728884
4000 30.097549 -1.1353905 0.79007053 3.0688444 4.4091469 -2.3383587 0.20743631
5000 28.357525 -1.0723742 0.9180297 3.6579424 4.8792664 -2.3185572 0.088366962
6000 29.214175 -0.95299225 0.81926009 3.6805429 4.6742897 -2.9343577 0.26697813
7000 27.018614 -0.52423475 0.72502764 3.8840137 4.7780956 -2.3916009 0.24952584
8000 29.682167 -1.0939711 0.76111486 3.1090116 4.9359719 -2.5662984 0.1411154
9000 27.909695 -0.80905986 0.78952533 4.203187 4.1301204 -2.000402 0.088859259
10000 27.480298 -0.86273377 1.1293962 4.3857421 4.899282 -3.3895621 0.12126215
11000 28.303203 -1.0221152 0.62762348 4.055414 4.5863024 -2.5842816 0.17996907
12000 28.311127 -0.94227367 0.91859012 3.6673926 4.7018632 -3.902715 0.30065704
13000 30.818607 -1.5220116 0.95710386 3.3364371 4.543427 -3.0423067 0.16712905
14000 27.643736 -1.0144117 0.95806952 4.1046912 4.800236 -4.0534389 0.29293405
15000 27.660491 -1.0390086 0.78061056 4.1139174 4.7197202 -2.3670379 0.22126985
16000 27.845157 -0.63654502 0.78007478 3.9365994 4.949418 -3.1470214 0.22335355
17000 28.44772 -1.0255112 0.70402007 4.0573343 4.2887527 -2.2099596 0.048050962
18000 27.128323 -0.96218536 1.1327159 4.3222585 4.326607 -2.2881766 0.13491257
19000 27.337633 -0.78999574 0.80152298 4.2239689 4.7073478 -2.2924164 0.12710292
20000 27.780537 -0.46458072 0.79707671 3.7232618 4.943417 -2.5290628 0.26191223
21000 26.435484 -0.7803224 1.0753217 4.4196051 5.9945933 -2.3340925 0.16448475
22000 28.619429 -1.1623149 0.9401731 3.8508844 5.1636737 -2.5551846 0.25318434
23000 28.399338 -0.79700962 0.85575503 4.488526 4.5975422 -2.5663549 0.13601693
24000 29.645532 -1.158744 0.83180313 3.8193399 4.60319 -2.6847864 0.24260466
25000 28.695339 -1.4802204 0.76583757 3.6786272 4.8959496 -2.3627896 0.080867326
26000 28.149711 -1.029689 0.79383806 3.7885067 4.3345813 -2.1041553 0.14598209
27000 29.580373 -1.0525813 1.0262723 3.7767318 4.6119758 -2.2802386 0.088556038
28000 28.44308 -0.93411225 0.8794395 3.948079 4.780246 -2.1814583 0.14340149
29000 29.335621 -1.6087988 0.71803091 3.7819186 4.6688385 -2.4282242 0.16061111
30000 28.706138 -1.3938241 0.67713818 4.031275 4.4756505 -2.1807056 0.11461356
31000 27.451944 0.010297225 0.65064883 3.6402029 4.3607811 -2.5511516 0.12637237
32000 27.070878 -1.103158 1.1932199 5.1329709 4.5201653 -2.2224479 0.11215427
33000 29.889976 -1.6228316 0.69407996 3.5361991 4.3502767 -1.9847454 0.09089949
34000 28.223151 -0.927208 1.043253 3.4650939 5.1028142 -2.8127219 0.10648823
35000 27.985986 -0.48153861 0.63878449 3.3724641 4.9551679 -2.6565919 0.12123115
36000 28.580688 -1.4500694 1.055762 4.0490064 4.423782 -2.3103578 0.072747638
37000 29.192947 -0.49678176 1.1146731 2.9233947 4.5738603 -2.4376144 0.22874047
38000 26.954594 -0.53812359 0.79230685 4.3356989 5.0284656 -2.3791255 0.0486081
39000 27.567555 -0.57870028 0.73614374 4.191991 4.9209556 -2.6122044 0.08635571
40000 28.494172 -0.79057135 0.79072816 4.1893209 4.4826919 -2.4179635 0.14612898
41000 28.44904 -1.1002948 0.93405654 4.3586358 4.4338415 -2.2950944 0.15705834
42000 28.95725 -1.0297067 1.1632348 4.274711 4.9979487 -2.7611464 0.15944725
43000 28.640394 -0.70938882 0.68100893 3.1844315 5.1817454 -2.2837487 0.14189233
44000 27.997558 -1.0115099 0.59125208 4.0883422 4.6033907 -2.2775964 0.094273258
45000 27.67163 -0.67992747 1.1225552 3.9020703 4.8171056 -2.1952679 0.041418433
46000 28.822607 -0.6687953 0.74160059 3.3193715 4.5546965 -2.3024572 0.047569065
47000 29.20147 -1.4456785 0.79223353 3.8288813 4.5811826 -2.5154936 0.061230141
48000 27.843026 -1.0222301 0.87322137 4.3432743 4.4266307 -2.1414153 0.06802794
49000 28.199573 -1.1887794 1.2781088 4.0779644 4.5881353 -2.319775 0.094803547
50000 28.759212 -1.354416 0.68534569 3.8394841 4.2308134 -2.1281844 0.1395951
51000 27.876455 -1.5705462 0.76557156 4.5335223 4.523708 -2.203702 0.14679803
52000 27.930587 -1.2277489 0.96071516 3.960953 5.1152188 -2.4101451 0.060949521
53000 27.031236 -1.4746477 1.2341141 5.0540975 4.3656865 -2.1288513 0.092725656
54000 28.809394 -1.1162427 0.94350207 3.4013958 4.4755547 -2.3342811 0.18855912
55000 28.948415 -1.1560418 0.6260139 3.5386373 4.5244978 -2.340212 0.17474657
56000 28.048368 -0.95784532 0.76432571 4.1404665 4.4570033 -2.0899628 0.045693628
57000 28.707642 -1.366574 0.9907873 3.729903 4.3131997 -2.2777698 0.065420213
58000 26.361663 -1.0424403 1.0452563 5.0977108 4.7035231 -2.3101244 0.13671642
59000 29.218218 -1.2210564 0.62435875 3.4236327 4.5481681 -2.1575943 0.037984042
60000 27.655546 -1.1053224 0.86323501 3.7641375 4.8946898 -2.2422249 0.077725979
61000 27.252108 -1.3744824 1.1150806 5.0444848 4.4878135 -2.2743829 0.058331257
62000 27.163469 -1.1715781 0.72099321 4.5295501 4.9509918 -2.2993961 0.050401105
63000 29.581575 -1.2238537 0.86303245 3.1194038 5.2218965 -2.5002427 0.055032632
64000 27.897822 -1.1011516 0.74540883 4.2869228 4.3394269 -2.2552393 0.1403321
65000 27.083245 -1.0633392 0.92771724 5.0805224 4.2747962 -2.2388039 0.064196692
66000 29.072723 -1.5514209 0.89798805 4.2600224 4.4261812 -2.3524752 0.15067414
67000 27.308181 -0.72224802 0.97109517 4.5074578 4.4559352 -2.1381121 0.089297603
68000 27.505686 -0.43855431 0.80785812 4.1917251 5.0157721 -2.3382145 0.11105164
69000 29.041681 -0.64735378 0.89874684 3.3891579 4.3753361 -2.2320941 0.14716747
70000 29.735756 -1.7061457 0.9206878 3.5767878 4.3851664 -2.2516304 0.097196062
71000 28.224352 -0.92217702 0.86093586 3.9507157 4.5596589 -2.2173397 0.089116669
72000 29.282336 -1.056142 0.65185725 3.8735742 4.4839333 -2.4314756 0.071909704
73000 26.257283 -0.64273826 0.98300685 5.063943 5.045958 -2.5544375 0.2180275
74000 28.825119 -0.97736616 0.87201848 3.55875 4.3653309 -2.2303567 0.098963875
75000 29.239507 -0.96508809 0.74517323 3.4306236 4.7651921 -2.6077732 0.17883654
76000 27.349841 -0.50990238 1.1183613 4.4252451 4.4097775 -2.4125794 0.18483606
77000 28.130197 -1.4081219 0.94921357 4.2572132 4.5162849 -2.4013797 0.073744606
78000 28.235774 -0.9214321 0.6324981 3.8697686 4.8092154 -2.2272847 0.092108346
79000 26.732846 -0.55949486 1.0989617 5.0088609 4.4930687 -2.277945 0.03855146
80000 28.529208 -0.94244671 0.79407482 3.961106 4.3930011 -2.3127726 0.091124948
81000 29.603852 -1.6116062 1.060847 3.7824932 4.151001 -1.9139868 0.19875986
82000 28.232876 -1.1833011 1.0182713 3.4195758 5.1394333 -2.4632697 0.28501012
83000 29.565482 -1.3479552 0.99056973 3.7851802 4.4781011 -2.7872481 0.2031991
84000 28.780274 -1.3073882 1.0512637 4.004638 4.502282 -2.3789146 0.015656202
85000 27.262312 -1.1305346 1.203524 4.7938623 4.1747105 -2.0952844 0.054240361
86000 28.157348 -1.0662817 0.81163796 3.9912709 4.8320213 -2.255237 0.14698333
87000 28.445543 -1.3365026 0.78156195 4.4767689 4.4457575 -2.5008786 0.13879386
88000 27.656717 -1.1490599 0.87974869 4.4629952 4.7023033 -2.3258145 0.081904139
89000 28.838821 -1.020709 0.85587929 3.7110705 4.4938307 -2.4914483 0.11447952
90000 27.356497 -0.59107077 0.81879666 4.5209332 4.4703836 -2.3806717 0.071307775
91000 27.780445 -0.80564513 0.94752313 3.8468943 4.2924253 -2.1011134 0.1118672
92000 28.555276 -1.3514732 0.80826674 3.9590742 4.5775954 -2.4891232 0.054254978
93000 28.747267 -1.2133243 0.75507246 4.1319789 4.9048611 -2.4913887 0.13045693
94000 27.479343 -0.69973695 0.99696121 3.5966229 4.549025 -2.4155312 0.41745762
95000 27.726945 -1.1905026 1.1120842 4.7433275 4.5386861 -2.7947142 0.33671682
96000 28.021114 -1.0341645 0.6663033 4.2397505 4.6203984 -1.9904034 0.10972565
97000 28.382022 -1.3916008 1.180588 4.0729621 4.6741792 -2.554927 0.13462346
98000 27.895969 -0.7496449 1.3072185 4.2611888 4.3726077 -2.1320701 0.15376665
99000 28.517889 -1.2183957 1.279778 3.957647 4.2638434 -2.2888407 0.042705003
100000 28.109211 -1.2538948 0.83671785 4.3734766 4.544545 -2.3076497 0.042189096
Loop time of 2.84552 on 1 procs for 100000 steps with 34 atoms
Performance: 6072.706 ns/day, 0.004 hours/ns, 35142.973 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.94207 | 0.94207 | 0.94207 | 0.0 | 33.11
Bond | 1.6125 | 1.6125 | 1.6125 | 0.0 | 56.67
Neigh | 0.0073986 | 0.0073986 | 0.0073986 | 0.0 | 0.26
Comm | 0.012739 | 0.012739 | 0.012739 | 0.0 | 0.45
Output | 0.00075531 | 0.00075531 | 0.00075531 | 0.0 | 0.03
Modify | 0.21483 | 0.21483 | 0.21483 | 0.0 | 7.55
Other | | 0.05524 | | | 1.94
Nlocal: 34 ave 34 max 34 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 395 ave 395 max 395 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 395
Ave neighs/atom = 11.6176
Ave special neighs/atom = 9.52941
Neighbor list builds = 237
Dangerous builds = 0
Total wall time: 0:00:02

View File

@ -1,201 +0,0 @@
LAMMPS (5 Oct 2016)
# Created by charmm2lammps v1.8.2.6 beta on Thu Mar 3 20:56:57 EST 2016
units real
neigh_modify delay 2 every 1
#newton off
boundary p p p
atom_style full
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/charmm 8 12
#pair_style lj/charmmfsw/coul/charmmfsh 8 12
pair_modify mix arithmetic
fix cmap all cmap charmm22.cmap
Reading potential file charmm22.cmap with DATE: 2016-09-26
fix_modify cmap energy yes
read_data gagg.data fix cmap crossterm CMAP
orthogonal box = (-34.4147 -36.1348 -39.3491) to (45.5853 43.8652 40.6509)
1 by 2 by 2 MPI processor grid
reading atoms ...
34 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
12 = max dihedrals/atom
scanning impropers ...
1 = max impropers/atom
reading bonds ...
33 bonds
reading angles ...
57 angles
reading dihedrals ...
75 dihedrals
reading impropers ...
7 impropers
4 = max # of 1-2 neighbors
7 = max # of 1-3 neighbors
13 = max # of 1-4 neighbors
16 = max # of special neighbors
special_bonds charmm
fix 1 all nve
#fix 1 all nvt temp 300 300 100.0
#fix 2 all shake 1e-9 500 0 m 1.0
velocity all create 0.0 12345678 dist uniform
thermo 1000
thermo_style custom step ecoul evdwl ebond eangle edihed f_cmap eimp
timestep 2.0
run 100000
Neighbor list info ...
1 neighbor list requests
update every 1 steps, delay 2 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 14
ghost atom cutoff = 14
binsize = 7 -> bins = 12 12 12
Memory usage per processor = 15.9307 Mbytes
Step E_coul E_vdwl E_bond E_angle E_dihed f_cmap E_impro
0 26.542777 -0.93822087 1.2470497 4.8441789 4.5432816 -1.473352 0.10453023
1000 28.673005 -0.47724367 0.80029132 3.151679 4.4684446 -2.3928648 0.18604953
2000 27.67955 -1.170342 0.72018905 4.0400131 4.4713764 -2.5490207 0.21834436
3000 29.256656 -0.35856055 0.73303546 3.7411606 4.4710568 -2.8939692 0.37728884
4000 30.097549 -1.1353905 0.79007053 3.0688444 4.4091469 -2.3383587 0.20743631
5000 28.357525 -1.0723742 0.9180297 3.6579424 4.8792663 -2.3185572 0.088366962
6000 29.214175 -0.95299239 0.81926011 3.6805428 4.6742897 -2.9343578 0.26697816
7000 27.018614 -0.52423469 0.72502751 3.8840141 4.7780958 -2.3916014 0.24952572
8000 29.682494 -1.0940368 0.76113051 3.1089345 4.9357863 -2.5662256 0.14112613
9000 27.853918 -0.7913741 0.79503268 4.2177256 4.146792 -2.00475 0.090585666
10000 27.13754 -0.80551128 1.1325023 4.4718283 5.2460631 -3.4947725 0.11893125
11000 28.277434 -1.4897448 0.90075953 4.1895717 4.3594269 -1.9553119 0.090222212
12000 28.630973 -1.222206 0.67796385 3.3905661 4.9691334 -2.9052721 0.13897658
13000 28.593007 -0.95684026 0.75585196 3.7242568 4.7417932 -2.3893117 0.2074121
14000 26.147115 -0.6026921 0.93591488 5.1292829 4.9821952 -2.2571835 0.11872421
15000 26.29432 -0.82424162 1.048979 4.5569495 5.1189308 -2.9750422 0.16195676
16000 29.189992 -0.80998247 0.74093508 3.8299275 4.4536688 -2.5497538 0.19155639
17000 25.878012 -0.3519646 1.0988924 4.7359591 5.3923098 -2.7211029 0.13405223
18000 27.726135 -0.28229987 0.63072344 4.1777888 4.7237271 -2.2177157 0.15939372
19000 27.153504 -0.66477422 0.77910129 4.2036117 5.113851 -2.3494315 0.094793307
20000 28.044833 -1.2835827 0.88745367 3.9955526 4.5077788 -3.0116467 0.17197859
21000 27.205696 -0.74090037 1.0023251 4.3421733 4.912671 -2.3473271 0.26089356
22000 27.385785 -0.93740972 0.84554838 4.562743 4.883866 -2.2110955 0.11573301
23000 27.05534 -0.95605442 0.96719024 3.9277618 5.0359014 -2.6135949 0.21368061
24000 28.273378 -0.97543103 0.8983443 4.2067985 4.4782971 -2.4230505 0.30311692
25000 27.477789 -0.20383849 0.8380706 3.8037992 4.8312504 -2.5831791 0.093843746
26000 30.344199 -1.9773473 0.92882437 3.7821405 4.5176677 -2.3020968 0.2194307
27000 27.32767 -0.9803839 0.92988865 3.7611603 5.0328211 -2.4647656 0.18213622
28000 27.34208 -1.037938 0.74488346 4.1727342 4.7056812 -2.2718346 0.17741362
29000 27.682777 -0.51006495 0.57074224 4.7332237 4.7080462 -2.0491512 0.2130517
30000 24.925731 0.13670248 0.84976065 4.4143762 6.0677158 -3.5479173 0.28059419
31000 28.623419 -0.90725708 1.0710501 3.6930688 4.6639301 -2.2225373 0.20988139
32000 27.732286 -1.1948367 0.89230134 4.4398373 4.8923907 -3.5849327 0.49167488
33000 28.800772 -1.5319589 0.93455495 4.1634728 4.6107706 -2.3503486 0.22636535
34000 27.374398 -1.0957453 0.89450276 3.9829508 4.991786 -2.3548834 0.15869465
35000 28.38753 -0.89261166 0.90000776 3.536864 4.4293294 -2.4218118 0.10640557
36000 27.713974 0.088038031 0.85190574 3.8969601 4.6256355 -2.7935475 0.34671662
37000 29.13007 -1.378597 0.74412556 3.131538 4.6458653 -2.9373734 0.38035616
38000 28.556573 -1.4055344 1.139984 4.0035753 4.2938358 -2.489329 0.25338326
39000 26.447036 -1.1829705 0.87032438 5.0804461 4.5772023 -2.7346466 0.32165802
40000 27.991454 -0.64295679 0.61020872 4.165871 4.4623087 -2.2244194 0.13826991
41000 29.483296 -1.2400745 0.66926627 3.3473666 4.5766617 -2.3051145 0.12171554
42000 26.948627 -1.2162288 1.1440628 4.3993073 5.1176533 -2.4734485 0.15497709
43000 28.04459 -0.26543193 0.83647367 3.5160747 4.6964397 -2.2805068 0.12618821
44000 28.213608 -1.216128 0.9132792 4.0206483 4.9483599 -2.3387049 0.10132022
45000 28.283506 -1.0390766 0.86113772 4.504509 4.7209088 -2.3043085 0.14588362
46000 27.433853 -0.57912107 0.78448334 4.5998579 5.1181394 -2.6165094 0.18722528
47000 27.552939 -1.1128925 0.80087638 4.3448001 4.8062869 -2.4296883 0.2702479
48000 28.874034 -1.3242519 0.71770727 3.5648565 4.4671824 -2.2608958 0.16115978
49000 29.216186 -1.2210307 0.76937497 3.9260628 4.7550577 -2.7316081 0.085505664
50000 28.065856 -1.1545547 0.86953819 4.4137666 4.732157 -2.4450867 0.23320539
51000 26.308975 -0.99728352 0.90408444 4.2400186 5.6340425 -2.2090554 0.079882158
52000 28.517571 -1.5027398 0.83520278 3.8176552 4.3001251 -2.0731682 0.1665375
53000 28.77579 -1.3564268 0.97253881 3.6866407 4.8532347 -2.5330776 0.17668411
54000 29.135315 -1.0994106 0.67605671 3.6819254 4.3134408 -1.9796929 0.076951331
55000 26.168938 -0.76247492 0.88784685 4.6533473 6.0484793 -2.1334561 0.036876985
56000 27.471775 -0.68648837 1.0576168 4.0354311 4.4767052 -2.2368959 0.24950568
57000 29.787083 -1.4914384 1.0702944 3.5388133 4.5173097 -2.6694464 0.27937092
58000 28.705448 -1.3016617 0.63337853 3.9552713 4.4119825 -1.8774657 0.17540021
59000 29.130155 -0.91647363 0.84384883 3.1076903 4.5346348 -2.3457338 0.16674486
60000 26.874199 -0.81598034 1.3432151 5.1322624 4.9545484 -2.9566615 0.25950486
61000 27.401306 -0.82895856 1.1636949 4.020154 4.5745928 -2.601466 0.18061051
62000 28.930313 -1.5231967 0.85173243 4.3517328 4.4878662 -2.5859205 0.1755493
63000 26.56874 0.026147233 0.60836216 4.4231618 4.4390677 -2.1721849 0.08594237
64000 26.729023 -0.76953985 0.76734633 4.5104288 5.0886456 -2.2118551 0.11339216
65000 28.900471 -1.3901477 0.86194657 4.2774976 4.498325 -2.3672362 0.20668335
66000 26.884253 -0.21198879 0.98509625 4.0843117 4.4344172 -2.3289416 0.23631017
67000 27.210888 -0.84075559 1.0396559 4.7253607 4.4314589 -2.2985702 0.19326507
68000 28.042102 -1.1898715 1.053534 3.8748712 4.4358449 -2.3998723 0.2431659
69000 28.939141 -1.6968936 0.98155912 4.0460838 5.0075204 -2.5547087 0.28645131
70000 27.15577 -0.85202797 1.1469079 4.7645212 4.6133209 -2.3410451 0.086576572
71000 25.507417 -0.27780727 0.95157881 4.8759406 4.853401 -2.9598705 0.41011008
72000 29.804703 -1.4847015 0.96345767 3.6797304 4.3678377 -2.4594626 0.14480206
73000 28.602798 -1.4906143 0.72497266 4.2442974 4.5360598 -2.3621638 0.14385651
74000 28.4928 -0.91319873 1.0377472 3.8033127 4.3991601 -2.4051911 0.095567428
75000 26.38168 -0.70733237 1.1557817 5.697939 4.5935618 -2.4285007 0.058980519
76000 27.16626 -0.83631031 0.84844246 4.7460887 4.5801472 -2.1260014 0.12845946
77000 29.040661 -1.3089499 0.80285084 4.664804 4.5215895 -2.6861939 0.13215598
78000 27.477871 -1.0600977 0.88595045 4.6264017 5.4095605 -2.474411 0.10987174
79000 26.151797 -0.55779685 0.91382436 4.99964 4.9184022 -2.2547241 0.22854038
80000 28.14523 -0.54460026 0.8982411 3.5374555 4.3785673 -2.3196807 0.088567964
81000 29.029941 -1.6467789 0.79042284 3.7269899 4.7407998 -2.3795824 0.1408727
82000 27.920287 -0.72798032 1.0076975 3.4449461 4.5621371 -2.8239074 0.25103454
83000 29.131054 -1.114367 0.76887285 3.459639 4.5163922 -2.607825 0.19991648
84000 28.249768 -0.69944068 1.0510846 4.0436296 4.6430538 -2.4213355 0.077299966
85000 28.06888 -0.62132922 0.91829312 4.1294147 4.3099557 -2.354063 0.15866186
86000 28.664264 -1.1022906 0.87831695 4.5773522 4.6045802 -2.9206875 0.33950063
87000 27.960967 -1.2852756 0.77694253 3.9011301 4.9114139 -3.2374868 0.3068138
88000 27.190678 -1.2803268 1.1545301 4.5769709 5.2404761 -2.3825838 0.10356039
89000 26.792931 -0.44516641 1.0236244 4.2007253 4.7098685 -2.3608551 0.034447062
90000 27.173991 -0.87185611 1.065719 4.1953618 4.6856408 -2.6539232 0.16957757
91000 28.626528 -1.239257 0.89524651 4.7048012 4.6344201 -2.7367901 0.43534143
92000 27.661812 -1.109044 0.92817391 5.0294489 4.3890711 -2.4108669 0.12570139
93000 28.156793 -1.0820907 0.92812693 4.938385 4.4901426 -2.4023366 0.30135781
94000 28.842149 -1.3524969 1.1451109 4.3125908 4.6959035 -2.6747199 0.2254607
95000 27.862247 -1.2119045 1.0218976 4.2614082 4.4931316 -2.6902934 0.16345201
96000 27.084973 -0.93738328 1.3984324 4.5647189 4.4232205 -2.2834097 0.11217888
97000 27.587078 -0.89397255 0.78218462 3.8944421 4.3981479 -2.4205318 0.16570942
98000 27.981746 -1.2380545 0.84847869 4.311441 4.7340377 -2.4270441 0.023565612
99000 27.476625 -0.8569146 0.82550381 4.1656963 4.4064921 -2.4169708 0.160814
100000 26.121325 -0.63610855 1.0803389 4.9257118 4.7073263 -2.4010334 0.066303044
Loop time of 2.693 on 4 procs for 100000 steps with 34 atoms
Performance: 6416.646 ns/day, 0.004 hours/ns, 37133.367 timesteps/s
98.4% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.065478 | 0.2501 | 0.63682 | 45.6 | 9.29
Bond | 0.066944 | 0.44772 | 0.88814 | 53.7 | 16.63
Neigh | 0.0076509 | 0.0077319 | 0.0078275 | 0.1 | 0.29
Comm | 0.57917 | 1.4166 | 1.9823 | 46.9 | 52.60
Output | 0.0033755 | 0.0035856 | 0.0037644 | 0.2 | 0.13
Modify | 0.03866 | 0.1366 | 0.23978 | 24.6 | 5.07
Other | | 0.4306 | | | 15.99
Nlocal: 8.5 ave 15 max 2 min
Histogram: 1 1 0 0 0 0 0 0 1 1
Nghost: 25.5 ave 32 max 19 min
Histogram: 1 1 0 0 0 0 0 0 1 1
Neighs: 98.75 ave 257 max 18 min
Histogram: 1 1 1 0 0 0 0 0 0 1
Total # of neighbors = 395
Ave neighs/atom = 11.6176
Ave special neighs/atom = 9.52941
Neighbor list builds = 294
Dangerous builds = 0
Total wall time: 0:00:02

116
lib/voronoi/Install.py Normal file
View File

@ -0,0 +1,116 @@
#!/usr/bin/env python
# install.py tool to download, unpack, build, and link to the Voro++ library
# used to automate the steps described in the README file in this dir
import sys,os,re,urllib,commands
# help message
help = """
Syntax: install.py -v version -g gdir [gname] -b bdir -l ldir
specify one or more options, order does not matter
gdir,bdir,ldir can be paths relative to lib/latte, full paths, or contain ~
-v = version of Voro++ to download and build
default = voro++-0.4.6 (current as of Jan 2015)
-g = grab (download) from math.lbl.gov/voro++ website
unpack tarfile in gdir to produce version dir (e.g. voro++-0.4.6)
if optional gname specified, rename version dir to gname within gdir
-b = build Voro++, bdir = Voro++ home directory
note that bdir must include the version suffix unless renamed
-l = create 2 softlinks (includelink,liblink)
in lib/voronoi to src dir of ldir = Voro++ home directory
note that ldir must include the version suffix unless renamed
"""
# settings
version = "voro++-0.4.6"
url = "http://math.lbl.gov/voro++/download/dir/%s.tar.gz" % version
# print error message or help
def error(str=None):
if not str: print help
else: print "ERROR",str
sys.exit()
# expand to full path name
# process leading '~' or relative path
def fullpath(path):
return os.path.abspath(os.path.expanduser(path))
# parse args
args = sys.argv[1:]
nargs = len(args)
if nargs == 0: error()
grabflag = 0
buildflag = 0
linkflag = 0
iarg = 0
while iarg < nargs:
if args[iarg] == "-v":
if iarg+2 > nargs: error()
version = args[iarg+1]
iarg += 2
elif args[iarg] == "-g":
if iarg+2 > nargs: error()
grabflag = 1
grabdir = args[iarg+1]
grabname = None
if iarg+2 < nargs and args[iarg+2][0] != '-':
grabname = args[iarg+2]
iarg += 1
iarg += 2
elif args[iarg] == "-b":
if iarg+2 > nargs: error()
buildflag = 1
builddir = args[iarg+1]
iarg += 2
elif args[iarg] == "-l":
if iarg+2 > nargs: error()
linkflag = 1
linkdir = args[iarg+1]
iarg += 2
else: error()
# download and unpack Voro++ tarball
if grabflag:
print "Downloading Voro++ ..."
grabdir = fullpath(grabdir)
if not os.path.isdir(grabdir): error("Grab directory does not exist")
urllib.urlretrieve(url,"%s/%s.tar.gz" % (grabdir,version))
print "Unpacking Voro++ tarball ..."
tardir = "%s/%s" % (grabdir,version)
if os.path.exists(tardir): commands.getoutput("rm -rf %s" % tardir)
cmd = "cd %s; tar zxvf %s.tar.gz" % (grabdir,version)
txt = commands.getoutput(cmd)
print tardir,grabdir,grabname
if grabname: os.rename(tardir,"%s/%s" % (grabdir,grabname))
# build Voro++
if buildflag:
print "Building Voro++ ..."
cmd = "cd %s; make" % builddir
txt = commands.getoutput(cmd)
print txt
# create 2 links in lib/voronoi to Voro++ src dir
if linkflag:
print "Creating links to Voro++ include and lib files"
if os.path.isfile("includelink") or os.path.islink("includelink"):
os.remove("includelink")
if os.path.isfile("liblink") or os.path.islink("liblink"):
os.remove("liblink")
cmd = "ln -s %s/src includelink" % linkdir
commands.getoutput(cmd)
cmd = "ln -s %s/src liblink" % linkdir
commands.getoutput(cmd)

View File

@ -9,8 +9,8 @@ Laboratory.
-----------------
You must perform the following steps yourself, or you can use the
install.py Python script to automate any or all steps of the process.
Type "python install.py" for instructions.
Install.py Python script to automate any or all steps of the process.
Type "python Install.py" for instructions.
1. Download Voro++ at http://math.lbl.gov/voro++/download
either as a tarball or via SVN, and unpack the

View File

@ -1,163 +0,0 @@
#!usr/local/python
# install.py tool to download, unpack, build, and link to the Voro++ library
# used to automate the steps described in the README file in this dir
import sys,os,re,urllib,commands
help = """
Syntax: install.py -d dir -v version -g -b -i installdir -l incdir libdir
specify one or more options, order does not matter
-d = dir to download tarball to, unpack tarball in, perform build in
dir will be created if it doesn't exist (only last level)
default = this dir
-v = version of Voro++ to download and work with
default = voro++-0.4.6 (current as of Jan 2015)
-g = download (grab) tarball from
http://math.lbl.gov/voro++/download/dir/version
-b = build Voro++ by invoking "make" in its home dir
no default
-i = install Voro++ by invoking "make install" in its home dir
installdir arg is optional:
if not specified, installs at PREFIX defined in config.mk file
if specified, will overwrite PREFIX and install there
if PREFIX starts with /usr, will invoke "sudo make install"
-l = create two links to incdir and libdir
incdir and libdir are optional (specify neither or both):
if specified, includelink and liblink are to those two dirs
these are dirs where Voro++ include files and lib file are
if not specified and no install, links are to Voro++ src dir
if not specified and install performed,
links are to include and lib dirs under PREFIX
"""
def error():
print help
sys.exit()
# parse args
args = sys.argv
if len(args) == 1: error()
dir = "."
version = "voro++-0.4.6"
grabflag = 0
buildflag = 0
installflag = 0
linkflag = 0
iarg = 1
while iarg < len(args):
if args[iarg] == "-d":
if iarg+2 > len(args): error()
dir = args[iarg+1]
iarg += 2
elif args[iarg] == "-v":
if iarg+2 > len(args): error()
version = args[iarg+1]
iarg += 2
elif args[iarg] == "-g":
grabflag = 1
iarg += 1
elif args[iarg] == "-b":
buildflag = 1
iarg += 1
elif args[iarg] == "-i":
installflag = 1
if iarg+1 == len(args) or args[iarg+1][0] == '-':
installdir = ""
iarg += 1
else:
if iarg+2 > len(args): error()
installdir = args[iarg+1]
iarg += 2
elif args[iarg] == "-l":
linkflag = 1
if iarg+1 == len(args) or args[iarg+1][0] == '-' or \
iarg+2 == len(args) or args[iarg+2][0] == '-':
includedir = libdir = ""
iarg += 1
else:
if iarg+3 > len(args): error()
includedir = args[iarg+1]
libdir = args[iarg+2]
iarg += 3
else: error()
dir = os.path.abspath(dir)
url = "http://math.lbl.gov/voro++/download/dir/%s.tar.gz" % version
# create dir if does not exist
if not os.path.isdir(dir):
if os.path.isfile(dir):
print "ERROR: Dir already exists as file"
sys.exit()
os.mkdir(dir)
if not os.path.isdir(dir):
print "ERROR: Unable to create dir"
sys.exit()
# download and unpack tarball
if grabflag:
print "Downloading Voro++ tarball ..."
urllib.urlretrieve(url,"%s/%s.tar.gz" % (dir,version))
print "Unpacking Voro++ tarball ..."
cmd = "cd %s; tar zxvf %s.tar.gz" % (dir,version)
txt = commands.getoutput(cmd)
# build Voro++ in its dir
if buildflag:
print "Building Voro++ ..."
cmd = "cd %s/%s; make" % (dir,version)
txt = commands.getoutput(cmd)
print txt
# install Voro++
# if installdir set, overwrite PREFIX var in its config.mk file
# if PREFIX var starts with /usr, invoke sudo make install, else make install
if installflag:
print "Installing Voro++ ..."
if installdir:
txt = open("%s/%s/config.mk" % (dir,version),'r').read()
txt = re.sub("PREFIX=.*?\n","PREFIX=%s\n" % installdir,txt)
open("%s/%s/config.mk" % (dir,version),'w').write(txt)
print "TXT:",txt
txt = open("%s/%s/config.mk" % (dir,version),'r').read()
var = re.findall("PREFIX=.*?\n",txt)
prefix = var[0].split('=')[1].strip()
if prefix.startswith("/usr"):
cmd = "cd %s/%s; sudo make install" % (dir,version)
else:
cmd = "cd %s/%s; make install" % (dir,version)
txt = commands.getoutput(cmd)
print txt
# create links in this dir to Voro++ include and lib files
if linkflag:
print "Creating links to Voro++ include and lib files"
if os.path.isfile("includelink") or os.path.islink("includelink"):
os.remove("includelink")
if os.path.isfile("liblink") or os.path.islink("liblink"):
os.remove("liblink")
if includedir:
cmd = "ln -s %s includelink" % includedir
txt = commands.getoutput(cmd)
cmd = "ln -s %s liblink" % linkdir
txt = commands.getoutput(cmd)
elif not installflag:
cmd = "ln -s %s/%s/src includelink" % (dir,version)
txt = commands.getoutput(cmd)
cmd = "ln -s %s/%s/src liblink" % (dir,version)
txt = commands.getoutput(cmd)
else:
cmd = "ln -s %s/include includelink" % prefix
txt = commands.getoutput(cmd)
cmd = "ln -s %s/lib liblink" % prefix
txt = commands.getoutput(cmd)

View File

@ -73,6 +73,11 @@ ComputeTempAsphere::ComputeTempAsphere(LAMMPS *lmp, int narg, char **arg) :
} else error->all(FLERR,"Illegal compute temp/asphere command");
}
// when computing only the rotational temperature,
// do not remove DOFs for translation as set by default
if (mode == ROTATE) extra_dof = 0;
vector = new double[6];
}

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -33,5 +33,5 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -60,7 +60,7 @@ using namespace MathConst;
// this must be lower than MAXENERGYSIGNAL
// by a large amount, so that it is still
// less than total energy when negative
// energy changes are added to MAXENERGYSIGNAL
// energy contributions are added to MAXENERGYSIGNAL
#define MAXENERGYTEST 1.0e50
@ -701,6 +701,9 @@ void FixGCMC::pre_exchange()
if (full_flag) {
energy_stored = energy_full();
if (overlap_flag && energy_stored > MAXENERGYTEST)
error->warning(FLERR,"Energy of old configuration in "
"fix gcmc is > MAXENERGYTEST.");
if (mode == MOLECULE) {
for (int i = 0; i < ncycles; i++) {
@ -778,6 +781,9 @@ void FixGCMC::attempt_atomic_translation()
if (i >= 0) {
double **x = atom->x;
double energy_before = energy(i,ngcmc_type,-1,x[i]);
if (overlap_flag && energy_before > MAXENERGYTEST)
error->warning(FLERR,"Energy of old configuration in "
"fix gcmc is > MAXENERGYTEST.");
double rsq = 1.1;
double rx,ry,rz;
rx = ry = rz = 0.0;
@ -998,6 +1004,9 @@ void FixGCMC::attempt_molecule_translation()
if (translation_molecule == -1) return;
double energy_before_sum = molecule_energy(translation_molecule);
if (overlap_flag && energy_before_sum > MAXENERGYTEST)
error->warning(FLERR,"Energy of old configuration in "
"fix gcmc is > MAXENERGYTEST.");
double **x = atom->x;
double rx,ry,rz;
@ -1095,6 +1104,9 @@ void FixGCMC::attempt_molecule_rotation()
if (rotation_molecule == -1) return;
double energy_before_sum = molecule_energy(rotation_molecule);
if (overlap_flag && energy_before_sum > MAXENERGYTEST)
error->warning(FLERR,"Energy of old configuration in "
"fix gcmc is > MAXENERGYTEST.");
int nlocal = atom->nlocal;
int *mask = atom->mask;
@ -2170,6 +2182,8 @@ double FixGCMC::molecule_energy(tagint gas_molecule_id)
double FixGCMC::energy_full()
{
int imolecule;
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
comm->exchange();
@ -2185,14 +2199,15 @@ double FixGCMC::energy_full()
// return signal value for energy
if (overlap_flag) {
int overlaptestall;
int overlaptest = 0;
double delx,dely,delz,rsq;
double **x = atom->x;
tagint *molecule = atom->molecule;
int nall = atom->nlocal + atom->nghost;
for (int i = 0; i < atom->nlocal; i++) {
int imolecule = molecule[i];
if (mode == MOLECULE) imolecule = molecule[i];
for (int j = i+1; j < nall; j++) {
if (mode == MOLECULE)
if (imolecule == molecule[j]) continue;
@ -2201,9 +2216,16 @@ double FixGCMC::energy_full()
delz = x[i][2] - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq < overlap_cutoff) return MAXENERGYSIGNAL;
if (rsq < overlap_cutoff) {
overlaptest = 1;
break;
}
}
if (overlaptest) break;
}
MPI_Allreduce(&overlaptest, &overlaptestall, 1,
MPI_INT, MPI_MAX, world);
if (overlaptestall) return MAXENERGYSIGNAL;
}
// clear forces so they don't accumulate over multiple

View File

@ -106,7 +106,7 @@ class FixGCMC : public Fix {
double xlo,xhi,ylo,yhi,zlo,zhi;
double region_xlo,region_xhi,region_ylo,region_yhi,region_zlo,region_zhi;
double region_volume;
double energy_stored;
double energy_stored; // full energy of old/current configuration
double *sublo,*subhi;
int *local_gas_list;
double **cutsq;
@ -214,9 +214,14 @@ W: Fix gcmc using full_energy option
Fix gcmc has automatically turned on the full_energy option since it
is required for systems like the one specified by the user. User input
included one or more of the following: kspace, triclinic, a hybrid
pair style, an eam pair style, or no "single" function for the pair
style.
included one or more of the following: kspace, a hybrid
pair style, an eam pair style, tail correction,
or no "single" function for the pair style.
W: Energy of old configuration in fix gcmc is > MAXENERGYTEST.
This probably means that a pair of atoms are closer than the
overlap cutoff distance for keyword overlap_cutoff.
E: Invalid atom type in fix gcmc command

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -13,6 +13,7 @@
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "bond_harmonic.h"
#include "atom.h"
#include "neighbor.h"
@ -26,7 +27,10 @@ using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
BondHarmonic::BondHarmonic(LAMMPS *lmp) : Bond(lmp) {}
BondHarmonic::BondHarmonic(LAMMPS *lmp) : Bond(lmp)
{
reinitflag = 1;
}
/* ---------------------------------------------------------------------- */
@ -196,3 +200,16 @@ double BondHarmonic::single(int type, double rsq, int i, int j,
if (r > 0.0) fforce = -2.0*rk/r;
return rk*dr;
}
/* ----------------------------------------------------------------------
Return ptr to internal members upon request.
------------------------------------------------------------------------ */
void *BondHarmonic::extract( char *str, int &dim )
{
dim = 1;
if( strcmp(str,"kappa")==0) return (void*) k;
if( strcmp(str,"r0")==0) return (void*) r0;
return NULL;
}

View File

@ -36,6 +36,7 @@ class BondHarmonic : public Bond {
void read_restart(FILE *);
void write_data(FILE *);
double single(int, double, int, int, double &);
virtual void *extract(char *, int &);
protected:
double *k,*r0;

View File

@ -21,7 +21,7 @@
#include <mpi.h>
#include <math.h>
#include <stdlib.h>
#include "dihedral_charmmfsh.h"
#include "dihedral_charmmfsw.h"
#include "atom.h"
#include "comm.h"
#include "neighbor.h"
@ -40,7 +40,7 @@ using namespace MathConst;
/* ---------------------------------------------------------------------- */
DihedralCharmmfsh::DihedralCharmmfsh(LAMMPS *lmp) : Dihedral(lmp)
DihedralCharmmfsw::DihedralCharmmfsw(LAMMPS *lmp) : Dihedral(lmp)
{
weightflag = 0;
writedata = 1;
@ -48,7 +48,7 @@ DihedralCharmmfsh::DihedralCharmmfsh(LAMMPS *lmp) : Dihedral(lmp)
/* ---------------------------------------------------------------------- */
DihedralCharmmfsh::~DihedralCharmmfsh()
DihedralCharmmfsw::~DihedralCharmmfsw()
{
if (allocated && !copymode) {
memory->destroy(setflag);
@ -63,7 +63,7 @@ DihedralCharmmfsh::~DihedralCharmmfsh()
/* ---------------------------------------------------------------------- */
void DihedralCharmmfsh::compute(int eflag, int vflag)
void DihedralCharmmfsw::compute(int eflag, int vflag)
{
int i1,i2,i3,i4,i,m,n,type;
double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm;
@ -322,7 +322,7 @@ void DihedralCharmmfsh::compute(int eflag, int vflag)
/* ---------------------------------------------------------------------- */
void DihedralCharmmfsh::allocate()
void DihedralCharmmfsw::allocate()
{
allocated = 1;
int n = atom->ndihedraltypes;
@ -342,7 +342,7 @@ void DihedralCharmmfsh::allocate()
set coeffs for one type
------------------------------------------------------------------------- */
void DihedralCharmmfsh::coeff(int narg, char **arg)
void DihedralCharmmfsw::coeff(int narg, char **arg)
{
if (narg != 5) error->all(FLERR,"Incorrect args for dihedral coefficients");
if (!allocated) allocate();
@ -384,7 +384,7 @@ void DihedralCharmmfsh::coeff(int narg, char **arg)
error check and initialize all values needed for force computation
------------------------------------------------------------------------- */
void DihedralCharmmfsh::init_style()
void DihedralCharmmfsw::init_style()
{
// insure use of CHARMM pair_style if any weight factors are non-zero
// set local ptrs to LJ 14 arrays setup by Pair
@ -392,14 +392,14 @@ void DihedralCharmmfsh::init_style()
if (weightflag) {
int itmp;
if (force->pair == NULL)
error->all(FLERR,"Dihedral charmmfsh is incompatible with Pair style");
error->all(FLERR,"Dihedral charmmfsw is incompatible with Pair style");
lj14_1 = (double **) force->pair->extract("lj14_1",itmp);
lj14_2 = (double **) force->pair->extract("lj14_2",itmp);
lj14_3 = (double **) force->pair->extract("lj14_3",itmp);
lj14_4 = (double **) force->pair->extract("lj14_4",itmp);
int *ptr = (int *) force->pair->extract("implicit",itmp);
if (!lj14_1 || !lj14_2 || !lj14_3 || !lj14_4 || !ptr)
error->all(FLERR,"Dihedral charmmfsh is incompatible with Pair style");
error->all(FLERR,"Dihedral charmmfsw is incompatible with Pair style");
implicit = *ptr;
}
@ -414,7 +414,7 @@ void DihedralCharmmfsh::init_style()
if (p_cutcoul == NULL || p_cutljinner == NULL ||
p_cutlj == NULL || p_dihedflag == NULL)
error->all(FLERR,"Dihedral charmmfsh is incompatible with Pair style");
error->all(FLERR,"Dihedral charmmfsw is incompatible with Pair style");
dihedflag = *p_dihedflag;
cut_coul14 = *p_cutcoul;
@ -433,7 +433,7 @@ void DihedralCharmmfsh::init_style()
proc 0 writes out coeffs to restart file
------------------------------------------------------------------------- */
void DihedralCharmmfsh::write_restart(FILE *fp)
void DihedralCharmmfsw::write_restart(FILE *fp)
{
fwrite(&k[1],sizeof(double),atom->ndihedraltypes,fp);
fwrite(&multiplicity[1],sizeof(int),atom->ndihedraltypes,fp);
@ -446,7 +446,7 @@ void DihedralCharmmfsh::write_restart(FILE *fp)
proc 0 reads coeffs from restart file, bcasts them
------------------------------------------------------------------------- */
void DihedralCharmmfsh::read_restart(FILE *fp)
void DihedralCharmmfsw::read_restart(FILE *fp)
{
allocate();
@ -474,7 +474,7 @@ void DihedralCharmmfsh::read_restart(FILE *fp)
proc 0 writes to data file
------------------------------------------------------------------------- */
void DihedralCharmmfsh::write_data(FILE *fp)
void DihedralCharmmfsw::write_data(FILE *fp)
{
for (int i = 1; i <= atom->ndihedraltypes; i++)
fprintf(fp,"%d %g %d %d %g\n",i,k[i],multiplicity[i],shift[i],weight[i]);

View File

@ -13,22 +13,22 @@
#ifdef DIHEDRAL_CLASS
DihedralStyle(charmmfsh,DihedralCharmmfsh)
DihedralStyle(charmmfsw,DihedralCharmmfsw)
#else
#ifndef LMP_DIHEDRAL_CHARMMFSH_H
#define LMP_DIHEDRAL_CHARMMFSH_H
#ifndef LMP_DIHEDRAL_CHARMMFSW_H
#define LMP_DIHEDRAL_CHARMMFSW_H
#include <stdio.h>
#include "dihedral.h"
namespace LAMMPS_NS {
class DihedralCharmmfsh : public Dihedral {
class DihedralCharmmfsw : public Dihedral {
public:
DihedralCharmmfsh(class LAMMPS *);
virtual ~DihedralCharmmfsh();
DihedralCharmmfsw(class LAMMPS *);
virtual ~DihedralCharmmfsw();
virtual void compute(int, int);
virtual void coeff(int, char **);
virtual void init_style();
@ -73,9 +73,9 @@ E: Incorrect weight arg for dihedral coefficients
Self-explanatory. Check the input script or data file.
E: Dihedral charmmfsh is incompatible with Pair style
E: Dihedral charmmfsw is incompatible with Pair style
Dihedral style charmmfsh must be used with a pair style charmm
Dihedral style charmmfsw must be used with a pair style charmm
in order for the 1-4 epsilon/sigma parameters to be defined.
*/

View File

@ -36,7 +36,7 @@ touch ../write_restart.cpp
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package to include/exclude LMP_MPIIO setting

View File

@ -25,7 +25,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -43,6 +43,15 @@ endif
# Package variables
# PACKAGE = standard packages
# PACKUSER = user packagse
# PACKLIB = all packages that require an additional lib
# PACKSYS = subset that reqiure a common system library
# PACKINT = subset that require an internal (provided) library
# PACKEXT = subset that require an external (downloaded) library
# PACKLIB = PACKSYS + PACKING + PACKEXT
# PACKSCRIPT = libs under lammps/lib that have an Install.py script
PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \
granular kim kokkos kspace manybody mc meam misc molecule \
mpiio mscg opt peri poems \
@ -55,10 +64,21 @@ PACKUSER = user-atc user-awpmd user-cg-cmm user-cgdna user-colvars \
user-quip user-reaxc user-smd user-smtbq user-sph user-tally \
user-vtk
PACKLIB = compress gpu kim kokkos meam mpiio mscg poems python reax voronoi \
user-atc user-awpmd user-colvars user-h5md user-lb user-molfile \
PACKLIB = compress gpu kim kokkos meam mpiio mscg poems \
python reax voronoi \
user-atc user-awpmd user-colvars user-h5md user-molfile \
user-nc-dump user-qmmm user-quip user-smd user-vtk
PACKSYS = compress mpiio python
PACKINT = gpu kokkos meam poems reax user-atc user-awpmd user-colvars
PACKEXT = kim mscg voronoi \
user-h5md user-molfile user-nc-dump user-qmmm user-quip \
user-smd user-vtk
PACKSCRIPT = voronoi
PACKALL = $(PACKAGE) $(PACKUSER)
PACKAGEUC = $(shell echo $(PACKAGE) | tr a-z A-Z)
@ -66,6 +86,7 @@ PACKUSERUC = $(shell echo $(PACKUSER) | tr a-z A-Z)
YESDIR = $(shell echo $(@:yes-%=%) | tr a-z A-Z)
NODIR = $(shell echo $(@:no-%=%) | tr a-z A-Z)
LIBDIR = $(shell echo $(@:lib-%=%))
# List of all targets
@ -75,9 +96,9 @@ help:
@echo 'make clean-machine delete object files for one machine'
@echo 'make mpi-stubs build dummy MPI library in STUBS'
@echo 'make install-python install LAMMPS wrapper in Python'
@echo 'make tar create lmp_src.tar.gz of src dir and packages'
@echo 'make tar create lmp_src.tar.gz for src dir and packages'
@echo ''
@echo 'make package list available packages'
@echo 'make package list available packages and their dependencies'
@echo 'make package-status (ps) status of all packages'
@echo 'make yes-package install a single pgk in src dir'
@echo 'make no-package remove a single pkg from src dir'
@ -87,11 +108,16 @@ help:
@echo 'make no-standard (no-std) remove all standard pkgs'
@echo 'make yes-user install all user pkgs'
@echo 'make no-user remove all user pkgs'
@echo 'make no-lib remove all pkgs with external libs'
@echo 'make yes-lib install all pkgs with libs (incldued or ext)'
@echo 'make no-lib remove all pkgs with libs (included or ext)'
@echo 'make yes-ext install all pkgs with external libs'
@echo 'make no-ext remove all pkgs with external libs'
@echo ''
@echo 'make package-update (pu) replace src files with updated package files'
@echo 'make package-overwrite replace package files with src files'
@echo 'make package-diff (pd) diff src files against package files'
@echo ''
@echo 'make lib-package download/build/install a package library'
@echo 'make purge purge obsolete copies of source files'
@echo ''
@echo 'make machine build LAMMPS for machine'
@ -221,6 +247,13 @@ package:
@echo ''
@echo 'User-contributed packages:' $(PACKUSER)
@echo ''
@echo 'Packages that need system libraries:' $(PACKSYS)
@echo ''
@echo 'Packages that need provided libraries:' $(PACKINT)
@echo ''
@echo 'Packages that need external libraries:' $(PACKEXT)
@echo ''
@echo 'make package list available packages'
@echo 'make package list available packages'
@echo 'make package-status (ps) status of all packages'
@echo 'make yes-package install a single pgk in src dir'
@ -229,13 +262,18 @@ package:
@echo 'make no-all remove all pkgs from src dir'
@echo 'make yes-standard (yes-std) install all standard pkgs'
@echo 'make no-standard (no-srd) remove all standard pkgs'
@echo ''
@echo 'make yes-user install all user pkgs'
@echo 'make no-user remove all user pkgs'
@echo 'make no-lib remove all pkgs with external libs'
@echo 'make yes-lib install all pkgs with libs (included or ext)'
@echo 'make no-lib remove all pkgs with libs (included or ext)'
@echo 'make yes-ext install all pkgs with external libs'
@echo 'make no-ext remove all pkgs with external libs'
@echo ''
@echo 'make package-update (pu) replace src files with package files'
@echo 'make package-overwrite replace package files with src files'
@echo 'make package-diff (pd) diff src files against package file'
@echo ''
@echo 'make lib-package download/build/install a package library'
yes-all:
@for p in $(PACKALL); do $(MAKE) yes-$$p; done
@ -255,9 +293,18 @@ yes-user:
no-user:
@for p in $(PACKUSER); do $(MAKE) no-$$p; done
yes-lib:
@for p in $(PACKLIB); do $(MAKE) yes-$$p; done
no-lib:
@for p in $(PACKLIB); do $(MAKE) no-$$p; done
yes-ext:
@for p in $(PACKEXT); do $(MAKE) yes-$$p; done
no-ext:
@for p in $(PACKEXT); do $(MAKE) no-$$p; done
yes-%:
@if [ ! -e Makefile.package ]; \
then cp Makefile.package.empty Makefile.package; fi
@ -288,6 +335,16 @@ no-%:
$(SHELL) Depend.sh $(NODIR) 0; \
fi;
# download/build/install a package library
lib-%:
@if [ ! -e ../lib/$(LIBDIR)/Install.py ]; then \
echo "Install script for lib $(@:lib-%=%) does not exist"; \
else \
echo "Installing lib for package $(@:lib-%=%)"; \
cd ../lib/$(LIBDIR); python Install.py $(args); \
fi;
# status = list src files that differ from package files
# update = replace src files with newer package files
# overwrite = overwrite package files with newer src files

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -35,7 +35,7 @@ touch ../variable.cpp
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -37,6 +37,8 @@ Python::Python(LAMMPS *lmp) : Pointers(lmp)
nfunc = 0;
pfuncs = NULL;
external_interpreter = false;
}
/* ---------------------------------------------------------------------- */
@ -44,6 +46,7 @@ Python::Python(LAMMPS *lmp) : Pointers(lmp)
Python::~Python()
{
// clean up
PyGILState_STATE gstate = PyGILState_Ensure();
for (int i = 0; i < nfunc; i++) {
delete [] pfuncs[i].name;
@ -54,7 +57,12 @@ Python::~Python()
// shutdown Python interpreter
if (pyMain) Py_Finalize();
if (pyMain && !external_interpreter) {
Py_Finalize();
}
else {
PyGILState_Release(gstate);
}
memory->sfree(pfuncs);
}
@ -147,27 +155,20 @@ void Python::command(int narg, char **arg)
int ifunc = create_entry(arg[0]);
// one-time initialization of Python interpreter
// Py_SetArgv() enables finding of *.py module files in current dir
// only needed for module load, not for direct file read into __main__
// pymain stores pointer to main module
PyGILState_STATE gstate;
if (pyMain == NULL) {
if (Py_IsInitialized())
error->all(FLERR,"Cannot embed Python when also "
"extending Python with LAMMPS");
external_interpreter = Py_IsInitialized();
Py_Initialize();
//char *arg = (char *) "./lmp";
//PySys_SetArgv(1,&arg);
//PyObject *pName = PyString_FromString("__main__");
//if (!pName) errorX->all(FLERR,"Bad pName");
//PyObject *pModule = PyImport_Import(pName);
//Py_DECREF(pName);
PyEval_InitThreads();
gstate = PyGILState_Ensure();
PyObject *pModule = PyImport_AddModule("__main__");
if (!pModule) error->all(FLERR,"Could not initialize embedded Python");
pyMain = (void *) pModule;
} else {
gstate = PyGILState_Ensure();
}
// send Python code to Python interpreter
@ -177,22 +178,44 @@ void Python::command(int narg, char **arg)
if (pyfile) {
FILE *fp = fopen(pyfile,"r");
if (fp == NULL) error->all(FLERR,"Could not open Python file");
if (fp == NULL) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not open Python file");
}
int err = PyRun_SimpleFile(fp,pyfile);
if (err) error->all(FLERR,"Could not process Python file");
if (err) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not process Python file");
}
fclose(fp);
} else if (herestr) {
int err = PyRun_SimpleString(herestr);
if (err) error->all(FLERR,"Could not process Python string");
if (err) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not process Python string");
}
}
// pFunc = function object for requested function
PyObject *pModule = (PyObject *) pyMain;
PyObject *pFunc = PyObject_GetAttrString(pModule,pfuncs[ifunc].name);
if (!pFunc) error->all(FLERR,"Could not find Python function");
if (!PyCallable_Check(pFunc))
if (!pFunc) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not find Python function");
}
if (!PyCallable_Check(pFunc)) {
PyGILState_Release(gstate);
error->all(FLERR,"Python function is not callable");
}
pfuncs[ifunc].pFunc = (void *) pFunc;
// clean-up input storage
@ -200,12 +223,14 @@ void Python::command(int narg, char **arg)
delete [] istr;
delete [] format;
delete [] pyfile;
PyGILState_Release(gstate);
}
/* ------------------------------------------------------------------ */
void Python::invoke_function(int ifunc, char *result)
{
PyGILState_STATE gstate = PyGILState_Ensure();
PyObject *pValue;
char *str;
@ -215,29 +240,43 @@ void Python::invoke_function(int ifunc, char *result)
int ninput = pfuncs[ifunc].ninput;
PyObject *pArgs = PyTuple_New(ninput);
if (!pArgs) error->all(FLERR,"Could not create Python function arguments");
if (!pArgs) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not create Python function arguments");
}
for (int i = 0; i < ninput; i++) {
int itype = pfuncs[ifunc].itype[i];
if (itype == INT) {
if (pfuncs[ifunc].ivarflag[i]) {
str = input->variable->retrieve(pfuncs[ifunc].svalue[i]);
if (!str)
if (!str) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not evaluate Python function input variable");
}
pValue = PyInt_FromLong(atoi(str));
} else pValue = PyInt_FromLong(pfuncs[ifunc].ivalue[i]);
} else if (itype == DOUBLE) {
if (pfuncs[ifunc].ivarflag[i]) {
str = input->variable->retrieve(pfuncs[ifunc].svalue[i]);
if (!str)
if (!str) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not evaluate Python function input variable");
}
pValue = PyFloat_FromDouble(atof(str));
} else pValue = PyFloat_FromDouble(pfuncs[ifunc].dvalue[i]);
} else if (itype == STRING) {
if (pfuncs[ifunc].ivarflag[i]) {
str = input->variable->retrieve(pfuncs[ifunc].svalue[i]);
if (!str)
if (!str) {
PyGILState_Release(gstate);
error->all(FLERR,"Could not evaluate Python function input variable");
}
pValue = PyString_FromString(str);
} else pValue = PyString_FromString(pfuncs[ifunc].svalue[i]);
} else if (itype == PTR) {
@ -250,7 +289,12 @@ void Python::invoke_function(int ifunc, char *result)
// error check with one() since only some procs may fail
pValue = PyObject_CallObject(pFunc,pArgs);
if (!pValue) error->one(FLERR,"Python function evaluation failed");
if (!pValue) {
PyGILState_Release(gstate);
error->one(FLERR,"Python function evaluation failed");
}
Py_DECREF(pArgs);
// function returned a value
@ -271,6 +315,8 @@ void Python::invoke_function(int ifunc, char *result)
}
Py_DECREF(pValue);
}
PyGILState_Release(gstate);
}
/* ------------------------------------------------------------------ */

View File

@ -21,6 +21,7 @@ namespace LAMMPS_NS {
class Python : protected Pointers {
public:
int python_exists;
bool external_interpreter;
Python(class LAMMPS *);
~Python();

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -84,7 +84,7 @@ void ComputeEventDisplace::init()
}
/* ----------------------------------------------------------------------
return non-zero if an atom has moved > displace_dist since last event
return non-zero if any atom has moved > displace_dist since last event
------------------------------------------------------------------------- */
double ComputeEventDisplace::compute_scalar()
@ -145,6 +145,62 @@ double ComputeEventDisplace::compute_scalar()
return scalar;
}
/* ----------------------------------------------------------------------
return count of atoms that have moved > displace_dist since last event
------------------------------------------------------------------------- */
int ComputeEventDisplace::all_events()
{
invoked_scalar = update->ntimestep;
if (id_event == NULL) return 0.0;
int event = 0;
double **xevent = fix_event->array_atom;
double **x = atom->x;
int *mask = atom->mask;
imageint *image = atom->image;
int nlocal = atom->nlocal;
double *h = domain->h;
double xprd = domain->xprd;
double yprd = domain->yprd;
double zprd = domain->zprd;
int xbox,ybox,zbox;
double dx,dy,dz,rsq;
if (triclinic == 0) {
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
xbox = (image[i] & IMGMASK) - IMGMAX;
ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
zbox = (image[i] >> IMG2BITS) - IMGMAX;
dx = x[i][0] + xbox*xprd - xevent[i][0];
dy = x[i][1] + ybox*yprd - xevent[i][1];
dz = x[i][2] + zbox*zprd - xevent[i][2];
rsq = dx*dx + dy*dy + dz*dz;
if (rsq >= displace_distsq) event++;
}
} else {
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
xbox = (image[i] & IMGMASK) - IMGMAX;
ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
zbox = (image[i] >> IMG2BITS) - IMGMAX;
dx = x[i][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox - xevent[i][0];
dy = x[i][1] + h[1]*ybox + h[3]*zbox - xevent[i][1];
dz = x[i][2] + h[2]*zbox - xevent[i][2];
rsq = dx*dx + dy*dy + dz*dz;
if (rsq >= displace_distsq) event++;
}
}
int allevents;
MPI_Allreduce(&event,&allevents,1,MPI_INT,MPI_SUM,world);
return allevents;
}
/* ---------------------------------------------------------------------- */

View File

@ -30,8 +30,11 @@ class ComputeEventDisplace : public Compute {
~ComputeEventDisplace();
void init();
double compute_scalar();
int all_events();
void reset_extra_compute_fix(const char *);
private:
int triclinic;
double displace_distsq;

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -27,7 +27,7 @@ action () {
}
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -94,6 +94,7 @@ FixNVEManifoldRattle::FixNVEManifoldRattle( LAMMPS *lmp, int &narg, char **arg,
dof_flag = 1;
nevery = 0;
next_output = 0;
dtv = dtf = 0;
tolerance = force->numeric( FLERR, arg[3] );
@ -145,6 +146,11 @@ FixNVEManifoldRattle::FixNVEManifoldRattle( LAMMPS *lmp, int &narg, char **arg,
while( argi < narg ){
if( strcmp(arg[argi], "every") == 0 ){
nevery = force->inumeric(FLERR,arg[argi+1]);
next_output = update->ntimestep + nevery;
if( comm->me == 0 ){
fprintf(screen,"Outputing every %d steps, next is %d\n",
nevery, next_output);
}
argi += 2;
}else if( error_on_unknown_keyword ){
char msg[2048];
@ -220,6 +226,11 @@ void FixNVEManifoldRattle::print_stats( const char *header )
x_iters * inv_tdiff, v_iters * inv_tdiff, stats.dofs_removed);
fprintf(screen,"\n");
}
stats.x_iters_per_atom = 0;
stats.v_iters_per_atom = 0;
stats.x_iters = 0;
stats.v_iters = 0;
}
@ -263,14 +274,6 @@ void FixNVEManifoldRattle::init()
void FixNVEManifoldRattle::update_var_params()
{
if( nevery > 0 ){
stats.x_iters = 0;
stats.v_iters = 0;
stats.natoms = 0;
stats.x_iters_per_atom = 0.0;
stats.v_iters_per_atom = 0.0;
}
double *ptr_params = ptr_m->params;
for( int i = 0; i < nvars; ++i ){
@ -358,7 +361,12 @@ void FixNVEManifoldRattle::final_integrate()
---------------------------------------------------------------------------*/
void FixNVEManifoldRattle::end_of_step()
{
if (nevery && (update->ntimestep == next_output)){
if( comm->me == 0 ){
print_stats( "nve/manifold/rattle" );
next_output += nevery;
}
}
}
/* -----------------------------------------------------------------------------

View File

@ -81,7 +81,7 @@ namespace LAMMPS_NS {
protected:
int nevery;
int nevery, next_output;
double dtv, dtf;
double tolerance;

View File

@ -35,6 +35,6 @@ for file in *.cpp *.h; do
elif (test $file = "pair_cdeam.h") then
action pair_cdeam.h pair_eam_alloy.cpp
else
action $file
test -f ${file} && action $file
fi
done

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -27,7 +27,7 @@ action () {
}
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -27,7 +27,7 @@ action () {
}
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -29,7 +29,7 @@ action () {
# all package files with no dependencies
for file in *.cpp *.h; do
action $file
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info

View File

@ -292,3 +292,14 @@ double Bond::memory_usage()
bytes += comm->nthreads*maxvatom*6 * sizeof(double);
return bytes;
}
/* -----------------------------------------------------------------------
Reset all type-based bond params via init.
-------------------------------------------------------------------------- */
void Bond::reinit()
{
if (!reinitflag)
error->all(FLERR,"Fix adapt interface to this bond style not supported");
init();
}

View File

@ -30,6 +30,8 @@ class Bond : protected Pointers {
double virial[6]; // accumulated virial
double *eatom,**vatom; // accumulated per-atom energy/virial
int reinitflag; // 1 if compatible with fix adapt and alike
// KOKKOS host/device flag and data masks
ExecutionSpace execution_space;
@ -49,6 +51,8 @@ class Bond : protected Pointers {
virtual void write_data(FILE *) {}
virtual double single(int, double, int, int, double &) = 0;
virtual double memory_usage();
virtual void *extract(char *, int &) {return NULL;}
virtual void reinit();
void write_file(int, char**);

View File

@ -67,6 +67,11 @@ ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) :
} else error->all(FLERR,"Illegal compute temp/sphere command");
}
// when computing only the rotational temperature,
// do not remove DOFs for translation as set by default
if (mode == ROTATE) extra_dof = 0;
vector = new double[6];
// error checks

View File

@ -162,6 +162,7 @@ void Finish::end(int flag)
// CPU use on MPI tasks and OpenMP threads
if (timeflag) {
if (lmp->kokkos) {
const char fmt2[] =
"%.1f%% CPU use with %d MPI tasks x %d OpenMP threads\n";
@ -184,6 +185,7 @@ void Finish::end(int flag)
}
}
}
}
// avoid division by zero for very short runs

View File

@ -16,6 +16,7 @@
#include <stdlib.h>
#include "fix_adapt.h"
#include "atom.h"
#include "bond.h"
#include "update.h"
#include "group.h"
#include "modify.h"
@ -35,7 +36,7 @@ using namespace LAMMPS_NS;
using namespace FixConst;
using namespace MathConst;
enum{PAIR,KSPACE,ATOM};
enum{PAIR,KSPACE,ATOM,BOND};
enum{DIAMETER,CHARGE};
/* ---------------------------------------------------------------------- */
@ -68,6 +69,10 @@ nadapt(0), id_fix_diam(NULL), id_fix_chg(NULL), adapt(NULL)
if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command");
nadapt++;
iarg += 3;
} else if (strcmp(arg[iarg],"bond") == 0 ){
if (iarg+5 > narg) error->all(FLERR,"Illegal fix adapt command");
nadapt++;
iarg += 5;
} else break;
}
@ -103,6 +108,25 @@ nadapt(0), id_fix_diam(NULL), id_fix_chg(NULL), adapt(NULL)
} else error->all(FLERR,"Illegal fix adapt command");
nadapt++;
iarg += 6;
} else if (strcmp(arg[iarg],"bond") == 0 ){
if (iarg+5 > narg) error->all(FLERR, "Illegal fix adapt command");
adapt[nadapt].which = BOND;
int n = strlen(arg[iarg+1]) + 1;
adapt[nadapt].bstyle = new char[n];
strcpy(adapt[nadapt].bstyle,arg[iarg+1]);
n = strlen(arg[iarg+2]) + 1;
adapt[nadapt].bparam = new char[n];
adapt[nadapt].bond = NULL;
strcpy(adapt[nadapt].bparam,arg[iarg+2]);
force->bounds(FLERR,arg[iarg+3],atom->ntypes,
adapt[nadapt].ilo,adapt[nadapt].ihi);
if (strstr(arg[iarg+4],"v_") == arg[iarg+4]) {
n = strlen(&arg[iarg+4][2]) + 1;
adapt[nadapt].var = new char[n];
strcpy(adapt[nadapt].var,&arg[iarg+4][2]);
} else error->all(FLERR,"Illegal fix adapt command");
nadapt++;
iarg += 5;
} else if (strcmp(arg[iarg],"kspace") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command");
adapt[nadapt].which = KSPACE;
@ -160,6 +184,13 @@ nadapt(0), id_fix_diam(NULL), id_fix_chg(NULL), adapt(NULL)
for (int m = 0; m < nadapt; m++)
if (adapt[m].which == PAIR)
memory->create(adapt[m].array_orig,n+1,n+1,"adapt:array_orig");
// allocate bond style arrays:
n = atom->nbondtypes;
for (int m = 0; m < nadapt; ++m)
if (adapt[m].which == BOND)
memory->create(adapt[m].vector_orig,n+1,"adapt:vector_orig");
}
/* ---------------------------------------------------------------------- */
@ -172,6 +203,10 @@ FixAdapt::~FixAdapt()
delete [] adapt[m].pstyle;
delete [] adapt[m].pparam;
memory->destroy(adapt[m].array_orig);
} else if (adapt[m].which == BOND) {
delete [] adapt[m].bstyle;
delete [] adapt[m].bparam;
memory->destroy(adapt[m].vector_orig);
}
}
delete [] adapt;
@ -282,6 +317,7 @@ void FixAdapt::init()
// setup and error checks
anypair = 0;
anybond = 0;
for (int m = 0; m < nadapt; m++) {
Adapt *ad = &adapt[m];
@ -350,6 +386,41 @@ void FixAdapt::init()
}
delete [] pstyle;
} else if (ad->which == BOND){
ad->bond = NULL;
anybond = 1;
int n = strlen(ad->bstyle) + 1;
char *bstyle = new char[n];
strcpy(bstyle,ad->bstyle);
if (lmp->suffix_enable) {
int len = 2 + strlen(bstyle) + strlen(lmp->suffix);
char *bsuffix = new char[len];
strcpy(bsuffix,bstyle);
strcat(bsuffix,"/");
strcat(bsuffix,lmp->suffix);
ad->bond = force->bond_match(bsuffix);
delete [] bsuffix;
}
if (ad->bond == NULL) ad->bond = force->bond_match(bstyle);
if (ad->bond == NULL )
error->all(FLERR,"Fix adapt bond style does not exist");
void *ptr = ad->bond->extract(ad->bparam,ad->bdim);
if (ptr == NULL)
error->all(FLERR,"Fix adapt bond style param not supported");
// for bond styles, use a vector
if (ad->bdim == 1) ad->vector = (double *) ptr;
if (strcmp(force->bond_style,"hybrid") == 0 ||
strcmp(force->bond_style,"hybrid_overlay") == 0)
error->all(FLERR,"Fix adapt does not support bond_style hybrid");
delete [] bstyle;
} else if (ad->which == KSPACE) {
if (force->kspace == NULL)
@ -368,7 +439,7 @@ void FixAdapt::init()
}
}
// make copy of original pair array values
// make copy of original pair/bond array values
for (int m = 0; m < nadapt; m++) {
Adapt *ad = &adapt[m];
@ -378,7 +449,12 @@ void FixAdapt::init()
ad->array_orig[i][j] = ad->array[i][j];
} else if (ad->which == PAIR && ad->pdim == 0){
ad->scalar_orig = *ad->scalar;
} else if (ad->which == BOND && ad->bdim == 1){
for (i = ad->ilo; i <= ad->ihi; ++i )
ad->vector_orig[i] = ad->vector[i];
}
}
// fixes that store initial per-atom values
@ -470,6 +546,18 @@ void FixAdapt::change_settings()
ad->array[i][j] = value;
}
// set bond type array values:
} else if (ad->which == BOND) {
if (ad->bdim == 1){
if (scaleflag)
for (i = ad->ilo; i <= ad->ihi; ++i )
ad->vector[i] = value*ad->vector_orig[i];
else
for (i = ad->ilo; i <= ad->ihi; ++i )
ad->vector[i] = value;
}
// set kspace scale factor
} else if (ad->which == KSPACE) {
@ -522,8 +610,10 @@ void FixAdapt::change_settings()
modify->addstep_compute(update->ntimestep + nevery);
// re-initialize pair styles if any PAIR settings were changed
// ditto for bond styles if any BOND setitings were changes
// this resets other coeffs that may depend on changed values,
// and also offset and tail corrections
if (anypair) {
for (int m = 0; m < nadapt; m++) {
Adapt *ad = &adapt[m];
@ -532,6 +622,14 @@ void FixAdapt::change_settings()
}
}
}
if (anybond) {
for (int m = 0; m < nadapt; ++m ) {
Adapt *ad = &adapt[m];
if (ad->which == BOND) {
ad->bond->reinit();
}
}
}
// reset KSpace charges if charges have changed
@ -554,6 +652,12 @@ void FixAdapt::restore_settings()
ad->array[i][j] = ad->array_orig[i][j];
}
} else if (ad->which == BOND) {
if (ad->pdim == 1) {
for (int i = ad->ilo; i <= ad->ihi; i++)
ad->vector[i] = ad->vector_orig[i];
}
} else if (ad->which == KSPACE) {
*kspace_scale = 1.0;
@ -588,6 +692,7 @@ void FixAdapt::restore_settings()
}
if (anypair) force->pair->reinit();
if (anybond) force->bond->reinit();
if (chgflag && force->kspace) force->kspace->qsum_qsq();
}

View File

@ -43,7 +43,7 @@ class FixAdapt : public Fix {
private:
int nadapt,resetflag,scaleflag;
int anypair;
int anypair, anybond;
int nlevels_respa;
char *id_fix_diam,*id_fix_chg;
class FixStore *fix_diam,*fix_chg;
@ -52,12 +52,15 @@ class FixAdapt : public Fix {
int which,ivar;
char *var;
char *pstyle,*pparam;
char *bstyle,*bparam;
int ilo,ihi,jlo,jhi;
int pdim;
int pdim,bdim;
double *scalar,scalar_orig;
double *vector,*vector_orig;
double **array,**array_orig;
int aparam;
class Pair *pair;
class Bond *bond;
};
Adapt *adapt;

View File

@ -205,14 +205,18 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) :
for (int i = 0; i < nvalues; i++) {
if (which[i] == X || which[i] == V || which[i] == F) kindflag = PERATOM;
else if (which[i] == COMPUTE) {
Compute *compute = modify->compute[modify->find_compute(ids[i])];
int c_id = modify->find_compute(ids[i]);
if (c_id < 0) error->all(FLERR,"Fix ave/histo input is invalid compute");
Compute *compute = modify->compute[c_id];
if (compute->scalar_flag || compute->vector_flag || compute->array_flag)
kindflag = GLOBAL;
else if (compute->peratom_flag) kindflag = PERATOM;
else if (compute->local_flag) kindflag = LOCAL;
else error->all(FLERR,"Fix ave/histo input is invalid compute");
} else if (which[i] == FIX) {
Fix *fix = modify->fix[modify->find_fix(ids[i])];
int f_id = modify->find_fix(ids[i]);
if (f_id < 0) error->all(FLERR,"Fix ave/histo input is invalid fix");
Fix *fix = modify->fix[f_id];
if (fix->scalar_flag || fix->vector_flag || fix->array_flag)
kindflag = GLOBAL;
else if (fix->peratom_flag) kindflag = PERATOM;
@ -220,6 +224,7 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) :
else error->all(FLERR,"Fix ave/histo input is invalid fix");
} else if (which[i] == VARIABLE) {
int ivariable = input->variable->find(ids[i]);
if (ivariable < 0) error->all(FLERR,"Fix ave/histo input is invalid variable");
if (input->variable->equalstyle(ivariable)) kindflag = GLOBAL;
else if (input->variable->atomstyle(ivariable)) kindflag = PERATOM;
else error->all(FLERR,"Fix ave/histo input is invalid variable");

View File

@ -23,7 +23,7 @@ class Integrate : protected Pointers {
Integrate(class LAMMPS *, int, char **);
virtual ~Integrate();
virtual void init();
virtual void setup() = 0;
virtual void setup(int flag=1) = 0;
virtual void setup_minimal(int) = 0;
virtual void run(int) = 0;
virtual void cleanup() {}

View File

@ -180,14 +180,16 @@ void Min::init()
setup before run
------------------------------------------------------------------------- */
void Min::setup()
void Min::setup(int flag)
{
if (comm->me == 0 && screen) {
fprintf(screen,"Setting up %s style minimization ...\n",
update->minimize_style);
if (flag) {
fprintf(screen," Unit style : %s\n", update->unit_style);
timer->print_timeout(screen);
}
}
update->setupflag = 1;
// setup extra global dof due to fixes
@ -294,7 +296,7 @@ void Min::setup()
requestor[m]->min_xf_get(m);
modify->setup(vflag);
output->setup();
output->setup(flag);
update->setupflag = 0;
// stats for initial thermo output

View File

@ -31,7 +31,7 @@ class Min : protected Pointers {
Min(class LAMMPS *);
virtual ~Min();
virtual void init();
void setup();
void setup(int flag=1);
void setup_minimal(int);
void run(int);
void cleanup();

View File

@ -652,6 +652,21 @@ void Output::delete_dump(char *id)
ndump--;
}
/* ----------------------------------------------------------------------
find a dump by ID
return index of dump or -1 if not found
------------------------------------------------------------------------- */
int Output::find_dump(const char *id)
{
if (id == NULL) return -1;
int idump;
for (idump = 0; idump < ndump; idump++)
if (strcmp(id,dump[idump]->id) == 0) break;
if (idump == ndump) return -1;
return idump;
}
/* ----------------------------------------------------------------------
set thermo output frequency from input script
------------------------------------------------------------------------- */

View File

@ -76,6 +76,7 @@ class Output : protected Pointers {
void add_dump(int, char **); // add a Dump to Dump list
void modify_dump(int, char **); // modify a Dump
void delete_dump(char *); // delete a Dump from Dump list
int find_dump(const char *); // find a Dump ID
void set_thermo(int, char **); // set thermo output freqquency
void create_thermo(int, char **); // create a thermo style

View File

@ -398,12 +398,14 @@ void Respa::init()
setup before run
------------------------------------------------------------------------- */
void Respa::setup()
void Respa::setup(int flag)
{
if (comm->me == 0 && screen) {
fprintf(screen,"Setting up r-RESPA run ...\n");
if (flag) {
fprintf(screen," Unit style : %s\n", update->unit_style);
fprintf(screen," Current step : " BIGINT_FORMAT "\n", update->ntimestep);
fprintf(screen," Current step : " BIGINT_FORMAT "\n",
update->ntimestep);
fprintf(screen," Time steps :");
for (int ilevel=0; ilevel < nlevels; ++ilevel)
fprintf(screen," %d:%g",ilevel+1, step[ilevel]);
@ -417,6 +419,7 @@ void Respa::setup()
fprintf(screen,"\n");
timer->print_timeout(screen);
}
}
update->setupflag = 1;
@ -482,7 +485,7 @@ void Respa::setup()
sum_flevel_f();
modify->setup(vflag);
output->setup();
output->setup(flag);
update->setupflag = 0;
}

View File

@ -48,7 +48,7 @@ class Respa : public Integrate {
Respa(class LAMMPS *, int, char **);
virtual ~Respa();
virtual void init();
virtual void setup();
virtual void setup(int flag=1);
virtual void setup_minimal(int);
virtual void run(int);
virtual void cleanup();

View File

@ -85,15 +85,18 @@ void Verlet::init()
setup before run
------------------------------------------------------------------------- */
void Verlet::setup()
void Verlet::setup(int flag)
{
if (comm->me == 0 && screen) {
fprintf(screen,"Setting up Verlet run ...\n");
if (flag) {
fprintf(screen," Unit style : %s\n", update->unit_style);
fprintf(screen," Current step : " BIGINT_FORMAT "\n", update->ntimestep);
fprintf(screen," Current step : " BIGINT_FORMAT "\n",
update->ntimestep);
fprintf(screen," Time step : %g\n", update->dt);
timer->print_timeout(screen);
}
}
if (lmp->kokkos)
error->all(FLERR,"KOKKOS package requires run_style verlet/kk");
@ -148,7 +151,7 @@ void Verlet::setup()
if (force->newton) comm->reverse_comm();
modify->setup(vflag);
output->setup();
output->setup(flag);
update->setupflag = 0;
}

View File

@ -29,7 +29,7 @@ class Verlet : public Integrate {
Verlet(class LAMMPS *, int, char **);
virtual ~Verlet() {}
virtual void init();
virtual void setup();
virtual void setup(int flag=1);
virtual void setup_minimal(int);
virtual void run(int);
void cleanup();

View File

@ -1 +1 @@
#define LAMMPS_VERSION "31 Mar 2017"
#define LAMMPS_VERSION "11 Apr 2017"

View File

@ -297,6 +297,9 @@ void WriteRestart::write(char *file)
// communication buffer for my atom info
// max_size = largest buffer needed by any proc
// NOTE: are assuming size_restart() returns 32-bit int
// for a huge one-proc problem, nlocal could be 32-bit
// but nlocal * doubles-peratom could oveflow
int max_size;
int send_size = atom->avec->size_restart();