Updated examples and docs, and added basic brownian dynamics integrator (no rotational degrees of freedom).

This commit is contained in:
Sam Cameron
2020-12-20 17:38:32 +00:00
parent 05ecf86134
commit 129210c7a0
17 changed files with 1268 additions and 99 deletions

View File

@ -39,6 +39,7 @@ OPT.
* :doc:`ave/time <fix_ave_time>`
* :doc:`aveforce <fix_aveforce>`
* :doc:`balance <fix_balance>`
* :doc:`brownian <fix_brownian>`
* :doc:`brownian/asphere <fix_brownian_asphere>`
* :doc:`brownian/sphere <fix_brownian_sphere>`
* :doc:`bocs <fix_bocs>`

View File

@ -182,8 +182,9 @@ accelerated styles exist.
* :doc:`ave/time <fix_ave_time>` - compute/output global time-averaged quantities
* :doc:`aveforce <fix_aveforce>` - add an averaged force to each atom
* :doc:`balance <fix_balance>` - perform dynamic load-balancing
* :doc:`brownian/asphere <fix_brownian_asphere>` - overdamped translational and rotational brownian for ellipsoids
* :doc:`brownian/sphere <fix_brownian_sphere>` - overdamped translational and rotational brownian for spheres
* :doc:`brownian <fix_brownian>` - overdamped translational brownian motion
* :doc:`brownian/asphere <fix_brownian_asphere>` - overdamped translational and rotational brownian motion for ellipsoids
* :doc:`brownian/sphere <fix_brownian_sphere>` - overdamped translational and rotational brownian motion for spheres
* :doc:`bocs <fix_bocs>` - NPT style time integration with pressure correction
* :doc:`bond/break <fix_bond_break>` - break bonds on the fly
* :doc:`bond/create <fix_bond_create>` - create bonds on the fly

151
doc/src/fix_brownian.rst Normal file
View File

@ -0,0 +1,151 @@
.. index:: fix brownian
fix brownian command
====================
Syntax
""""""
.. parsed-literal::
fix ID group-ID brownian gamma_t diff_t seed keyword args
* ID, group-ID are documented in :doc:`fix <fix>` command
* brownian/sphere = style name of this fix command
* gamma_t = translational friction coefficient
* diff_t = translational diffusion coefficient
* zero or more keyword/value pairs may be appended
* keyword = *rng*
.. parsed-literal::
*rng* value = *uniform* or *gaussian* or *none*
*uniform* = use uniform random number generator
*gaussian* = use gaussian random number generator
*none* = turn off noise
Examples
""""""""
.. code-block:: LAMMPS
fix 1 all brownian 1.0 3.0 1294019
fix 1 all brownian 1.0 3.0 19581092 rng none
fix 1 all brownian 1.0 3.0 19581092 rng uniform
fix 1 all brownian 1.0 3.0 19581092 rng gaussian
Description
"""""""""""
Perform Brownian Dynamics integration to update position and velocity
of atoms in the group each timestep. Brownian Dynamics uses Newton's laws of
motion in the limit that inertial forces are negligible compared to
viscous forces. The stochastic equation of motion is
.. math::
dr = \frac{F}{\gamma_t}dt+\sqrt{2D_t}dW_t, \\
where :math:`dW_t` is a Wiener processes (see e.g. :ref:`(Gardiner) <GardinerC1>`).
.. note::
This integrator is designed for generic non-equilibrium
simulations with additive noise. There are two important cases which
(conceptually) reduce the number of free parameters in this fix.
(a) In equilibrium simulations
(where fluctuation dissipation theorems are obeyed), one can define
the thermal energy :math:`k_bT=D_t\gamma_t`.
---------
.. note::
Temperature computation using the :doc:`compute temp <compute_temp>`
will not correctly compute temperature of these overdamped dynamics
since we are explicitly neglecting inertial effects.
See e.g. chapter 6 of :ref:`(Doi) <Doi1>` for more details on this.
Temperature is instead defined in terms of the note above (for
equilibrium systems).
---------
.. note::
The diffusion coefficient :math:`D_t` is measured
in units of (length*length)/time, where time and length
are in the units specified on the :doc:`units <units>` page.
Similarly, :math:`\gamma_t` is measured in
units of mass/time.
---------
If the *rng* keyword is used with the *uniform* value, then the noise
is generated from a uniform distribution (see
:ref:`(Dunweg) <Dunweg6>` for why this works). This is the same method
of noise generation as used in :doc:`fix_langevin <fix_langevin>`.
If the *rng* keyword is used with the *gaussian* value, then the noise
is generated from a gaussian distribution. Typically this added
complexity is unnecessary, and one should be fine using the *uniform*
value for reasons argued in :ref:`(Dunweg) <Dunweg6>`.
If the *rng* keyword is used with the *none* value, then the noise
terms are set to zero.
----------
.. include:: accel_styles.rst
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`.
No global or per-atom quantities are stored
by this fix for access by various :doc:`output commands <Howto_output>`.
The :doc:`fix_modify <fix_modify>` *virial* option is supported by this
fix to add the contribution due to the added forces on atoms to the
system's virial as part of :doc:`thermodynamic output <thermo_style>`.
The default is *virial no*.
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
This fix is part of the USER-BROWNIAN package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>`
doc page for more info.
Related commands
""""""""""""""""
:doc:`fix langevin <fix_langevin>`, :doc:`fix nve/sphere <fix_nve_sphere>`,
:doc:`fix brownian/sphere <fix_brownian_sphere>`,
:doc:`fix brownian/asphere <fix_brownian_asphere>`
Default
"""""""
The default for *rng* is *uniform*.
----------
.. _GardinerC1:
**(Gardiner)** Gardiner, A Handbook for the Natural and Social Sciences 4th Ed. (2009).
.. _Doi1:
**(Doi)** Doi, Soft Matter Physics (2013).
.. _Dunweg6:
**(Dunweg)** Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).

View File

@ -54,8 +54,8 @@ viscous forces. The stochastic equations of motion are
d\Omega = \frac{T}{\gamma_r}dt + \sqrt{2D_r}dW_r,
where :math:`d\Omega` is an infinitesimal rotation vector (see e.g.
Chapter 4 of :ref:`(Goldstein) <GoldsteinCM1>`), :math:`dW_t` and
:math:`dW_r` are Wiener processes (see e.g. :ref:`(Gardiner) <GardinerC1>`).
Chapter 4 of :ref:`(Goldstein) <GoldsteinCM2>`), :math:`dW_t` and
:math:`dW_r` are Wiener processes (see e.g. :ref:`(Gardiner) <GardinerC3>`).
The quaternions :math:`q` of the ellipsoid are updated each timestep from
the angular velocity vector.
@ -66,13 +66,13 @@ values of :math:`\gamma_t`, :math:`\gamma_r`, :math:`D_t`,
If the *rng* keyword is used with the *uniform* value, then the noise
is generated from a uniform distribution (see
:ref:`(Dunweg) <Dunweg7>` for why this works). This is the same method
:ref:`(Dunweg) <Dunweg8>` for why this works). This is the same method
of noise generation as used in :doc:`fix_langevin <fix_langevin>`.
If the *rng* keyword is used with the *gaussian* value, then the noise
is generated from a gaussian distribution. Typically this added
complexity is unnecessary, and one should be fine using the *uniform*
value for reasons argued in :ref:`(Dunweg) <Dunweg7>`.
value for reasons argued in :ref:`(Dunweg) <Dunweg8>`.
If the *rng* keyword is used with the *none* value, then the noise
terms are set to zero.
@ -114,7 +114,7 @@ as atoms which have a definite orientation as defined by the
Optionally, they can also store a dipole moment as defined by the
:doc:`atom_style dipole <atom_style>` command.
This fix is part of the USER-MISC package. It is only enabled if
This fix is part of the USER-BROWNIAN package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>`
doc page for more info.
@ -124,8 +124,9 @@ be point particles.
Related commands
""""""""""""""""
:doc:`fix brownian/sphere <fix_brownian_sphere>`, :doc:`fix langevin <fix_langevin>`,
:doc:`fix nve/asphere <fix_nve_asphere>`, :doc:`atom style <atom_style>`
:doc:`fix brownian <fix_brownian>`, :doc:`fix brownian/sphere <fix_brownian_sphere>`,
:doc:`fix propel/self <fix_propel_self>`, :doc:`fix langevin <fix_langevin>`,
:doc:`fix nve/asphere <fix_nve_asphere>`
Default
"""""""
@ -134,15 +135,15 @@ The default for *rng* is *uniform*.
----------
.. _GoldsteinCM1:
.. _GoldsteinCM2:
**(Goldstein)** Goldstein, Poole, and Safko, Classical Mechanics, 3rd Ed. (2001).
.. _GardinerC1:
.. _GardinerC3:
**(Gardiner)** Gardiner, A Handbook for the Natural and Social Sciences 4th Ed. (2009).
.. _Dunweg7:
.. _Dunweg8:
**(Dunweg)** Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).

View File

@ -53,8 +53,8 @@ viscous forces. The stochastic equations of motion are
d\Omega = \frac{T}{\gamma_r}dt + \sqrt{2D_r}dW_r,
where :math:`d\Omega` is an infinitesimal rotation vector (see e.g.
Chapter 4 of :ref:`(Goldstein) <GoldsteinCM>`), :math:`dW_t` and
:math:`dW_r` are Wiener processes (see e.g. :ref:`(Gardiner) <GardinerC>`).
Chapter 4 of :ref:`(Goldstein) <GoldsteinCM1>`), :math:`dW_t` and
:math:`dW_r` are Wiener processes (see e.g. :ref:`(Gardiner) <GardinerC2>`).
The dipole vectors :math:`e_i` are updated using the rotation matrix
.. math::
@ -85,35 +85,31 @@ section 7.4).
---------
.. note::
Temperature computation using the :doc:`compute temp <compute_temp>`
will not correctly compute temperature of these overdamped dynamics
since we are explicitly neglecting inertial effects.
See e.g. chapter 6 of :ref:`(Doi) <Doi1>` for more details on this.
Temperature is instead defined in terms of the note above (for
equilibrium systems).
See note on the unphysical result of using :doc:`compute temp <compute_temp>`
with this fix in :doc:`fix brownian <fix_brownian>`.
---------
.. note::
The diffusion coefficient :math:`D_t` is measured
in units of (length*length)/time and the diffusion coefficient
:math:`D_r` is measured in units of 1/time, where time and length
are in the units specified on the :doc:`units <units>` page. Similarly,
:math:`\gamma_t` and :math:`\gamma_r` are measured in
The diffusion coefficient :math:`D_t` and the translational
drag coefficient :math:`\gamma_t` are discussed in
:doc:`fix brownian <fix_brownian>`. The diffusion coefficient
:math:`D_r` is measured in units of 1/time, where time is in the
units specified on the :doc:`units <units>` page. Similarly,
and :math:`\gamma_r` is measured in
units of mass/time and (mass*length*length)/(time).
---------
If the *rng* keyword is used with the *uniform* value, then the noise
is generated from a uniform distribution (see
:ref:`(Dunweg) <Dunweg6>` for why this works). This is the same method
:ref:`(Dunweg) <Dunweg7>` for why this works). This is the same method
of noise generation as used in :doc:`fix_langevin <fix_langevin>`.
If the *rng* keyword is used with the *gaussian* value, then the noise
is generated from a gaussian distribution. Typically this added
complexity is unnecessary, and one should be fine using the *uniform*
value for reasons argued in :ref:`(Dunweg) <Dunweg6>`.
value for reasons argued in :ref:`(Dunweg) <Dunweg7>`.
If the *rng* keyword is used with the *none* value, then the noise
terms are set to zero.
@ -151,7 +147,7 @@ as defined by the :doc:`atom_style sphere <atom_style>` command.
If the *dipole* keyword is used, they must also store a dipole moment
as defined by the :doc:`atom_style dipole <atom_style>` command.
This fix is part of the USER-MISC package. It is only enabled if
This fix is part of the USER-BROWNIAN package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>`
doc page for more info.
@ -159,8 +155,9 @@ doc page for more info.
Related commands
""""""""""""""""
:doc:`fix brownian <fix_brownian>`, :doc:`fix brownian/asphere <fix_brownian_asphere>`,
:doc:`fix propel/self <fix_propel_self>`,
:doc:`fix langevin <fix_langevin>`, :doc:`fix nve/sphere <fix_nve_sphere>`,
:doc:`atom style <atom_style>`
Default
"""""""
@ -169,11 +166,11 @@ The default for *rng* is *uniform*.
----------
.. _GoldsteinCM:
.. _GoldsteinCM1:
**(Goldstein)** Goldstein, Poole, and Safko, Classical Mechanics, 3rd Ed. (2001).
.. _GardinerC:
.. _GardinerC2:
**(Gardiner)** Gardiner, A Handbook for the Natural and Social Sciences 4th Ed. (2009).
@ -182,11 +179,7 @@ The default for *rng* is *uniform*.
**(Callegari)** Callegari and Volpe, *Numerical Simulations of Active Brownian
Particles*, Flowing Matter, 211-238 (2019).
.. _Doi1:
**(Doi)** Doi, Soft Matter Physics (2013).
.. _Dunweg6:
.. _Dunweg7:
**(Dunweg)** Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).

View File

@ -21,10 +21,9 @@ Syntax
*dipole* value = none = apply force along dipole direction
*velocity* value = none = apply force along velocity direction
*quat* values = direction vector *sx* and *sy* and *sz*
*sx* = x component of force direction in ellipsoid frame
*sy* = y component of force direction in ellipsoid frame
*sz* = z component of force direction in ellipsoid frame
*sx* = x component of force direction in ellipsoid frame
*sy* = y component of force direction in ellipsoid frame
*sz* = z component of force direction in ellipsoid frame
Examples

View File

@ -0,0 +1,64 @@
# 2d overdamped brownian dynamics with self-propulsion
# force in direction of velocity.
variable gamma_t equal 1.0
variable D_t equal 1.0
variable seed equal 1974019
variable fp equal 4.0
variable params string ${gamma_t}_${D_t}_${fp}
log log_${params}_2d.lammps.log
units lj
dimension 2
newton off
lattice sq 0.4
region box block -16 16 -16 16 -0.2 0.2
create_box 1 box
create_atoms 1 box
mass * 1.0
velocity all create 1.0 1 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 1 check yes
pair_style none
fix step all brownian ${gamma_t} ${D_t} ${seed}
fix vel all propel/self ${fp} velocity
fix 2 all enforce2d
fix_modify vel virial yes
compute press all pressure NULL virial
thermo_style custom step temp epair c_press
#equilibration
timestep 0.0000000001
thermo 50001
run 50000
reset_timestep 0
#initialisation for the main run
# MSD
compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
timestep 0.00001
thermo 1000
# main run
run 120000

View File

@ -0,0 +1,248 @@
units lj
dimension 2
newton off
lattice sq 0.4
Lattice spacing in x,y,z = 1.5811388 1.5811388 1.5811388
region box block -16 16 -16 16 -0.2 0.2
create_box 1 box
Created orthogonal box = (-25.298221 -25.298221 -0.31622777) to (25.298221 25.298221 0.31622777)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 1024 atoms
create_atoms CPU = 0.001 seconds
mass * 1.0
velocity all create 1.0 1 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 1 check yes
pair_style none
#compute d all property/atom mux muy muz
fix step all brownian ${gamma_t} ${D_t} ${seed}
fix step all brownian 1 ${D_t} ${seed}
fix step all brownian 1 1 ${seed}
fix step all brownian 1 1 1974019
fix vel all propel/self ${fp} velocity
fix vel all propel/self 4 velocity
fix 2 all enforce2d
fix_modify vel virial yes
compute press all pressure NULL virial
thermo_style custom step temp epair c_press
#equilibration
timestep 0.0000000001
thermo 50001
run 50000
WARNING: No pairwise cutoff or binsize set. Atom sorting therefore disabled. (src/atom.cpp:2118)
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
Per MPI rank memory allocation (min/avg/max) = 2.289 | 2.289 | 2.289 Mbytes
Step Temp E_pair c_press
0 1 0 -0.18336111
50000 1.9663098e+10 0 -0.75033044
Loop time of 2.45902 on 1 procs for 50000 steps with 1024 atoms
Performance: 0.176 tau/day, 20333.276 timesteps/s
100.0% 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 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.0078395 | 0.0078395 | 0.0078395 | 0.0 | 0.32
Output | 2.2947e-05 | 2.2947e-05 | 2.2947e-05 | 0.0 | 0.00
Modify | 2.332 | 2.332 | 2.332 | 0.0 | 94.83
Other | | 0.1192 | | | 4.85
Nlocal: 1024.00 ave 1024 max 1024 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 65.0000 ave 65 max 65 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0.0000000
Neighbor list builds = 0
Dangerous builds = 0
reset_timestep 0
#initialisation for the main run
# MSD
compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
timestep 0.00001
thermo 1000
# main run
run 120000
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
Per MPI rank memory allocation (min/avg/max) = 2.664 | 2.664 | 2.664 Mbytes
Step Temp E_pair c_msd[1] c_msd[2] c_msd[3] c_msd[4] c_press
0 1.9663098e+10 0 0 0 0 0 -0.75033044
1000 199346.07 0 0.01933096 0.020555579 0 0.039886539 -0.45701943
2000 198310 0 0.040165459 0.041283119 0 0.081448577 0.34264096
3000 204115.93 0 0.057654441 0.060411193 0 0.11806563 -0.41710363
4000 196903.18 0 0.075874071 0.08470884 0 0.16058291 -0.18627889
5000 201382.13 0 0.097484871 0.1049401 0 0.20242497 -0.12876225
6000 195317.96 0 0.11872475 0.12469358 0 0.24341834 -0.3084651
7000 192139.34 0 0.14148561 0.14363452 0 0.28512013 0.0032867364
8000 201737.84 0 0.16055109 0.16405717 0 0.32460826 0.36435453
9000 199390.58 0 0.17897382 0.18795928 0 0.3669331 0.025659298
10000 207807.41 0 0.19680417 0.20733821 0 0.40414239 -0.35368379
11000 201936.29 0 0.21666426 0.22702132 0 0.44368558 0.044253449
12000 196863.68 0 0.2394452 0.24672678 0 0.48617198 0.059027892
13000 199368.34 0 0.26647368 0.2700584 0 0.53653208 0.27090461
14000 201246.39 0 0.28799289 0.29823282 0 0.58622571 0.59883778
15000 195355.47 0 0.29975278 0.32348787 0 0.62324065 -0.70763643
16000 198372.41 0 0.32191014 0.34434864 0 0.66625878 -0.36543908
17000 193442.08 0 0.33927003 0.36811239 0 0.70738242 0.28541473
18000 197441 0 0.36067818 0.38982011 0 0.75049829 -0.45670227
19000 208769.5 0 0.37965583 0.41015661 0 0.78981244 -0.47803396
20000 198311.2 0 0.3968078 0.42701175 0 0.82381955 -0.18642397
21000 201365.22 0 0.4151043 0.44909345 0 0.86419775 0.86839756
22000 198253.24 0 0.4396583 0.46388261 0 0.90354091 -0.19592545
23000 204598.51 0 0.45382292 0.49253671 0 0.94635963 -0.24169987
24000 211421.88 0 0.46086338 0.51831304 0 0.97917642 0.49751915
25000 198690.71 0 0.47110913 0.53640271 0 1.0075118 -0.24475563
26000 203981.49 0 0.49265476 0.55310571 0 1.0457605 0.20237224
27000 201128.99 0 0.52865208 0.57516064 0 1.1038127 -0.40826104
28000 198529.77 0 0.54479087 0.59876678 0 1.1435576 0.41576857
29000 205024.27 0 0.56195744 0.61217109 0 1.1741285 -0.79146635
30000 201565.62 0 0.58276132 0.63743585 0 1.2201972 -0.065832917
31000 197893.43 0 0.61132665 0.66126375 0 1.2725904 0.47907079
32000 201395.11 0 0.61904956 0.67520462 0 1.2942542 -0.7408472
33000 202064.22 0 0.64760511 0.69087605 0 1.3384812 -0.14601514
34000 191227.75 0 0.65698736 0.73857849 0 1.3955659 0.2177548
35000 199474.65 0 0.66491543 0.76604575 0 1.4309612 -0.64627039
36000 195252.77 0 0.67565581 0.79911139 0 1.4747672 0.0293298
37000 198167.14 0 0.68899202 0.81268008 0 1.5016721 -0.0055245918
38000 202995.35 0 0.70224976 0.82436547 0 1.5266152 -0.2826768
39000 197129.03 0 0.71270072 0.8579444 0 1.5706451 0.063623666
40000 199153.69 0 0.73777312 0.88820969 0 1.6259828 -0.26740551
41000 205347.31 0 0.75613153 0.9006214 0 1.6567529 0.82415354
42000 199423.73 0 0.76864739 0.92457092 0 1.6932183 -0.16636304
43000 198052 0 0.79841199 0.93832523 0 1.7367372 -0.016241224
44000 205205.39 0 0.81727188 0.96823569 0 1.7855076 -0.10405924
45000 199116.46 0 0.83208052 0.99352694 0 1.8256075 0.040835286
46000 198759.48 0 0.84291542 1.0038949 0 1.8468104 0.46109436
47000 189676.9 0 0.86430719 1.0131299 0 1.8774371 -0.67947102
48000 199801.4 0 0.90662572 1.0286589 0 1.9352846 -0.5293946
49000 199730.89 0 0.93530132 1.0568273 0 1.9921286 -0.27562311
50000 203272.56 0 0.96366375 1.0790026 0 2.0426664 -0.10629234
51000 196992.09 0 0.97818106 1.1030549 0 2.0812359 0.31719382
52000 204063.62 0 1.0068773 1.1239506 0 2.130828 -7.1998264e-05
53000 204349.41 0 1.0277098 1.1546477 0 2.1823575 0.16897786
54000 203207.3 0 1.0415673 1.1881409 0 2.2297082 -0.25033492
55000 194841.07 0 1.0600954 1.2179033 0 2.2779987 0.0062433629
56000 198601.58 0 1.071562 1.2363958 0 2.3079578 -0.13124124
57000 196654.6 0 1.0997086 1.2486573 0 2.3483659 -0.46425912
58000 197781.48 0 1.112526 1.2706195 0 2.3831455 0.26007922
59000 199853.9 0 1.1295132 1.2978402 0 2.4273533 -0.030877018
60000 201698.14 0 1.1690892 1.3228782 0 2.4919675 -0.23190043
61000 199260.52 0 1.1870513 1.3431945 0 2.5302458 -0.040373885
62000 196909.15 0 1.2007194 1.3683525 0 2.5690719 0.21318495
63000 203927.79 0 1.2442809 1.3964232 0 2.6407041 0.10156282
64000 205322.27 0 1.2721207 1.4159422 0 2.6880629 0.33393307
65000 199142.6 0 1.2989685 1.4330729 0 2.7320414 -0.65644005
66000 205023.06 0 1.2948208 1.4255094 0 2.7203302 0.22290721
67000 209750.01 0 1.3127511 1.4369628 0 2.7497139 -0.40241279
68000 200205.19 0 1.3355277 1.4541568 0 2.7896846 0.6665415
69000 198653.01 0 1.3500764 1.4962697 0 2.8463461 -0.28396983
70000 207485.71 0 1.3825583 1.5095552 0 2.8921135 0.34774599
71000 203918.68 0 1.4090995 1.5246756 0 2.9337751 0.071958672
72000 199038.47 0 1.4246969 1.5612784 0 2.9859753 -0.42129173
73000 197380.7 0 1.445835 1.6025372 0 3.0483722 -0.099854135
74000 205006.49 0 1.4703253 1.606784 0 3.0771093 0.137244
75000 196040.42 0 1.4897388 1.6297195 0 3.1194583 -0.46715263
76000 200022.09 0 1.5178017 1.6560075 0 3.1738092 -0.21504553
77000 200766.4 0 1.5184584 1.6673791 0 3.1858374 0.54447858
78000 199636.76 0 1.5344452 1.6845098 0 3.2189549 0.021903761
79000 204188.86 0 1.5567356 1.7205197 0 3.2772553 0.15356898
80000 199862.31 0 1.5669731 1.7265239 0 3.2934969 -0.26342032
81000 198557.57 0 1.5735674 1.7468943 0 3.3204617 0.22068216
82000 203675.4 0 1.5898596 1.7646027 0 3.3544624 0.51221445
83000 203412.56 0 1.6066548 1.7813624 0 3.3880172 0.33512263
84000 200896.36 0 1.6112635 1.812552 0 3.4238154 1.1657793
85000 198987.17 0 1.652135 1.8336748 0 3.4858098 -0.20419704
86000 203027.04 0 1.6728041 1.864244 0 3.5370481 0.61746313
87000 203913.8 0 1.6783324 1.8762967 0 3.554629 0.28428076
88000 205061.23 0 1.6781682 1.879458 0 3.5576262 0.089285353
89000 198210.89 0 1.7017682 1.9029345 0 3.6047027 -0.23977904
90000 196170.91 0 1.7291253 1.9258436 0 3.6549689 0.15806438
91000 202846.79 0 1.7592339 1.9431644 0 3.7023983 0.17723099
92000 198976.91 0 1.762318 1.9742003 0 3.7365183 0.25668658
93000 194578.12 0 1.7880716 2.0009816 0 3.7890532 0.20231476
94000 200319.82 0 1.7854494 2.020855 0 3.8063044 0.14729427
95000 202430.33 0 1.7925005 2.0480213 0 3.8405218 -0.28291245
96000 200145.58 0 1.8113602 2.0621043 0 3.8734644 0.05547277
97000 194617.53 0 1.8286924 2.0729365 0 3.9016289 -0.59829377
98000 200829.37 0 1.8485835 2.077731 0 3.9263145 0.78242718
99000 198197.55 0 1.8537119 2.0873455 0 3.9410573 -0.52970118
100000 204149.63 0 1.8897394 2.0942927 0 3.9840321 0.58118967
101000 198654.59 0 1.9126448 2.1380708 0 4.0507156 -0.61766977
102000 201198.05 0 1.9433521 2.143049 0 4.0864011 0.15570108
103000 200383.43 0 1.9669578 2.1361518 0 4.1031095 -0.10556532
104000 204363.26 0 1.9827272 2.1564095 0 4.1391367 -0.060748593
105000 198267.87 0 1.9904164 2.1804141 0 4.1708305 0.40995747
106000 202082.12 0 1.993709 2.1925288 0 4.1862378 -0.52458386
107000 200209.49 0 2.015427 2.219161 0 4.234588 -0.67350679
108000 203112.58 0 2.0467303 2.2405372 0 4.2872675 0.25033168
109000 203844.13 0 2.056314 2.2623929 0 4.3187068 0.3384149
110000 201740.33 0 2.0706519 2.285547 0 4.3561989 0.35582365
111000 202493.05 0 2.0725826 2.308685 0 4.3812676 -0.26487212
112000 205404.09 0 2.0969613 2.3252767 0 4.422238 0.58346057
113000 201223.54 0 2.0876103 2.3316941 0 4.4193044 0.37747414
114000 208649.11 0 2.1095116 2.3488008 0 4.4583124 0.068129648
115000 202708.5 0 2.1233837 2.3701129 0 4.4934966 -0.23734073
116000 202482.42 0 2.1221907 2.4262516 0 4.5484424 -0.087142119
117000 200384.65 0 2.1487723 2.4619437 0 4.6107161 -0.13673271
118000 196885.36 0 2.158057 2.4818335 0 4.6398905 0.31912412
119000 194064.42 0 2.1821315 2.5032336 0 4.6853651 0.17615749
120000 195203.09 0 2.1939678 2.539838 0 4.7338058 0.5106086
Loop time of 6.05038 on 1 procs for 120000 steps with 1024 atoms
Performance: 17136.102 tau/day, 19833.451 timesteps/s
100.0% 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 | 0 | 0 | 0.0 | 0.00
Neigh | 0.00031301 | 0.00031301 | 0.00031301 | 0.0 | 0.01
Comm | 0.0072472 | 0.0072472 | 0.0072472 | 0.0 | 0.12
Output | 0.0036492 | 0.0036492 | 0.0036492 | 0.0 | 0.06
Modify | 5.7173 | 5.7173 | 5.7173 | 0.0 | 94.50
Other | | 0.3218 | | | 5.32
Nlocal: 1024.00 ave 1024 max 1024 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0.0000000
Neighbor list builds = 154
Dangerous builds = 0
Total wall time: 0:00:08

View File

@ -1,2 +1,2 @@
The input file in2d.bd demonstrates how to run a 2d simulation
The input file in3d.brownian demonstrates how to run a 3d simulation
of ellipsoidal particles undergoing overdamped brownian motion.

View File

@ -1,10 +1,14 @@
# 3d overdamped brownian dynamics
# 3d overdamped brownian dynamics for ellipsoids
# with dipole moment also being updated
# choose variables to obey thermal equilibrium
# (fluctuation dissipation theorem) and no-slip
# boundary condition
variable rng string gaussian
variable gamma_t equal 4.0
variable gamma_r equal 1.0
variable D_t equal 7.0
variable D_r equal 13.0
variable gamma_t equal 1.0
variable gamma_r equal 0.33
variable D_t equal 1.0
variable D_r equal 3.0
variable seed equal 1974019
variable params string ${rng}_${gamma_t}_${gamma_r}_${D_t}_${D_r}
@ -27,16 +31,11 @@ set type * shape 1 1 1
set type * quat/random ${seed}
velocity all create 1.0 1 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 1 check yes
pair_style none
fix 1 all brownian/asphere ${gamma_t} ${gamma_r} ${D_t} ${D_r} ${seed} rng ${rng} dipole
fix 1 all brownian/asphere ${gamma_t} ${gamma_r} ${D_t} ${D_r} &
${seed} rng ${rng} dipole
compute press all pressure NULL virial
@ -50,8 +49,6 @@ run 50000
reset_timestep 0
#initialisation for the main run
# MSD
compute msd all msd
@ -59,11 +56,6 @@ compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
# write trajectory and thermo in a log-scale frequency
#dump 1 all custom 1000 dump_${params}_3d.lammpstrj id type &
# x y xu yu mux muy muz fx fy fz
#dump_modify 1 first yes sort id
timestep 0.00001
thermo 10000

View File

@ -0,0 +1,141 @@
units lj
atom_style hybrid dipole sphere ellipsoid
WARNING: Atom_style hybrid defines both pertype and peratom masses - both must be set, only peratom masses will be used (src/atom_vec_hybrid.cpp:157)
WARNING: Peratom rmass is in multiple sub-styles - must be used consistently (src/atom_vec_hybrid.cpp:219)
dimension 3
newton off
lattice sc 0.4
Lattice spacing in x,y,z = 1.3572088 1.3572088 1.3572088
region box block -4 4 -4 4 -4 4
create_box 1 box
Created orthogonal box = (-5.4288352 -5.4288352 -5.4288352) to (5.4288352 5.4288352 5.4288352)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 512 atoms
create_atoms CPU = 0.002 seconds
mass * 1.0
set type * dipole/random ${seed} 1.0
set type * dipole/random 1974019 1.0
Setting atom values ...
512 settings made for dipole/random
set type * shape 1 1 1
Setting atom values ...
512 settings made for shape
set type * quat/random ${seed}
set type * quat/random 1974019
Setting atom values ...
512 settings made for quat/random
velocity all create 1.0 1 loop geom
pair_style none
fix 1 all brownian/asphere ${gamma_t} ${gamma_r} ${D_t} ${D_r} ${seed} rng ${rng} dipole
fix 1 all brownian/asphere 1 ${gamma_r} ${D_t} ${D_r} ${seed} rng ${rng} dipole
fix 1 all brownian/asphere 1 0.33 ${D_t} ${D_r} ${seed} rng ${rng} dipole
fix 1 all brownian/asphere 1 0.33 1 ${D_r} ${seed} rng ${rng} dipole
fix 1 all brownian/asphere 1 0.33 1 3 ${seed} rng ${rng} dipole
fix 1 all brownian/asphere 1 0.33 1 3 1974019 rng ${rng} dipole
fix 1 all brownian/asphere 1 0.33 1 3 1974019 rng gaussian dipole
compute press all pressure NULL virial
thermo_style custom step temp epair c_press
#equilibration
timestep 0.0000000001
thermo 50000
run 50000
WARNING: No pairwise cutoff or binsize set. Atom sorting therefore disabled. (src/atom.cpp:2118)
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
Per MPI rank memory allocation (min/avg/max) = 5.379 | 5.379 | 5.379 Mbytes
Step Temp E_pair c_press
0 1 0 0
50000 1.9891104e+10 0 0
Loop time of 5.53749 on 1 procs for 50000 steps with 512 atoms
Performance: 0.078 tau/day, 9029.362 timesteps/s
100.0% 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 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.11711 | 0.11711 | 0.11711 | 0.0 | 2.11
Output | 2.034e-05 | 2.034e-05 | 2.034e-05 | 0.0 | 0.00
Modify | 5.3401 | 5.3401 | 5.3401 | 0.0 | 96.44
Other | | 0.08027 | | | 1.45
Nlocal: 512.000 ave 512 max 512 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 217.000 ave 217 max 217 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0.0000000
Neighbor list builds = 0
Dangerous builds = 0
reset_timestep 0
# MSD
compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
timestep 0.00001
thermo 10000
# main run
run 120000
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
Per MPI rank memory allocation (min/avg/max) = 5.754 | 5.754 | 5.754 Mbytes
Step Temp E_pair c_msd[1] c_msd[2] c_msd[3] c_msd[4] c_press
0 1.9891104e+10 0 0 0 0 0 0
10000 201972.17 0 0.19918647 0.20079752 0.20495007 0.60493407 0
20000 197255.49 0 0.40800225 0.37910274 0.38545643 1.1725614 0
30000 195533.67 0 0.60991554 0.5898132 0.56621596 1.7659447 0
40000 192777.99 0 0.7761198 0.86101776 0.76531344 2.402451 0
50000 195241.43 0 1.0053256 1.0477568 0.96681401 3.0198964 0
60000 201887.49 0 1.2298892 1.1979933 1.1950141 3.6228965 0
70000 200187.14 0 1.4407329 1.356743 1.3992739 4.1967498 0
80000 202737.24 0 1.6305637 1.5663775 1.5724692 4.7694104 0
90000 185530.51 0 1.7937597 1.7795995 1.7222809 5.2956401 0
100000 204405.47 0 2.0149709 1.9738573 1.9423625 5.9311907 0
110000 194892.4 0 2.1974948 2.1560014 2.1453303 6.4988264 0
120000 198462.51 0 2.3761388 2.334739 2.287964 6.9988418 0
Loop time of 13.0463 on 1 procs for 120000 steps with 512 atoms
Performance: 7947.110 tau/day, 9198.044 timesteps/s
100.0% 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 | 0 | 0 | 0.0 | 0.00
Neigh | 0.0011789 | 0.0011789 | 0.0011789 | 0.0 | 0.01
Comm | 0.030109 | 0.030109 | 0.030109 | 0.0 | 0.23
Output | 0.00030614 | 0.00030614 | 0.00030614 | 0.0 | 0.00
Modify | 12.834 | 12.834 | 12.834 | 0.0 | 98.38
Other | | 0.1803 | | | 1.38
Nlocal: 512.000 ave 512 max 512 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0.0000000
Neighbor list builds = 1748
Dangerous builds = 0
Total wall time: 0:00:18

View File

@ -1,4 +1,5 @@
# 2d overdamped brownian dynamics
# 2d overdamped brownian dynamics of a sphere
# with dipole also being updated
variable rng string gaussian
variable gamma_t equal 4.0
@ -26,19 +27,10 @@ mass * 1.0
set type * dipole/random ${seed} 1.0
velocity all create 1.0 1 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 1 check yes
pair_style none
#compute d all property/atom mux muy muz
fix 1 all brownian/sphere ${gamma_t} ${gamma_r} ${D_t} ${D_r} ${seed} rng ${rng} dipole
fix 1 all brownian/sphere ${gamma_t} ${gamma_r} ${D_t} &
${D_r} ${seed} rng ${rng} dipole
fix 2 all enforce2d
compute press all pressure NULL virial
@ -51,9 +43,6 @@ thermo 50001
run 50000
reset_timestep 0
#initialisation for the main run
# MSD
compute msd all msd
@ -61,12 +50,6 @@ compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
# write trajectory and thermo in a log-scale frequency
# uncomment next three lines for dump output
#dump 1 all custom 2000 dump_${params}_2d.lammpstrj id type &
# x y xu yu mux muy muz fx fy fz
#dump_modify 1 first yes sort id
timestep 0.00001
thermo 1000

View File

@ -1,4 +1,6 @@
# 3d overdamped brownian dynamics
# 3d overdamped brownian dynamics of sphere, with
# virial contribution (i.e. ideal gas pressure)
# included
variable rng string uniform
@ -16,7 +18,6 @@ log log_${params}_3d.lammps.log
units lj
atom_style sphere
dimension 3
newton off
lattice sc 0.4
@ -26,14 +27,11 @@ create_atoms 1 box
#mass * 1.0
velocity all create 1.0 1 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 1 check yes
pair_style none
fix 1 all brownian/sphere ${gamma_t} ${gamma_r} ${D_t} ${D_r} ${seed} rng ${rng}
fix 1 all brownian/sphere ${gamma_t} ${gamma_r} ${D_t} &
${D_r} ${seed} rng ${rng}
fix_modify 1 virial yes
compute press all pressure NULL virial
@ -46,22 +44,12 @@ thermo 50001
run 50000
reset_timestep 0
#initialisation for the main run
# MSD
compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
# write trajectory and thermo in a log-scale frequency
# uncomment the next three lines for dump file
#dump 1 all custom 10000 dump_${params}_3d.lammpstrj id type &
# x y xu yu fx fy fz
#dump_modify 1 first yes sort id
timestep 0.00001
thermo 1000

View File

@ -0,0 +1,65 @@
# 3d overdamped brownian dynamics
variable gamma_t equal 1.0
variable D_t equal 1.0
variable seed equal 1974019
variable params string ${gamma_t}_${D_t}
log log_${params}.lammps.log
units lj
dimension 3
newton off
lattice sc 0.4
region box block -8 8 -8 8 -8 8
create_box 1 box
create_atoms 1 box
mass * 1.0
velocity all create 1.0 1 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 1 check yes
pair_style none
# simple overdamped brownian dynamics time-stepper
fix step all brownian ${gamma_t} ${D_t} ${seed}
# turn on the virial contribution from the noise
# (this is the ideal gas pressure, but it is really noisy
# for small systems)
fix_modify step virial yes
compute press all pressure NULL virial
thermo_style custom step temp epair c_press
#equilibration
timestep 0.0000000001
thermo 50001
run 50000
reset_timestep 0
#initialisation for the main run
# MSD
compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
timestep 0.00001
thermo 1000
# main run
run 120000

View File

@ -0,0 +1,246 @@
units lj
dimension 3
newton off
lattice sc 0.4
Lattice spacing in x,y,z = 1.3572088 1.3572088 1.3572088
region box block -8 8 -8 8 -8 8
create_box 1 box
Created orthogonal box = (-10.857670 -10.857670 -10.857670) to (10.857670 10.857670 10.857670)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 4096 atoms
create_atoms CPU = 0.002 seconds
mass * 1.0
velocity all create 1.0 1 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 1 check yes
pair_style none
# simple overdamped brownian dynamics time-stepper
fix step all brownian ${gamma_t} ${D_t} ${seed}
fix step all brownian 1 ${D_t} ${seed}
fix step all brownian 1 1 ${seed}
fix step all brownian 1 1 1974019
# turn on the virial contribution from the noise
# (this is the ideal gas pressure, but it is really noisy
# for small systems)
fix_modify step virial yes
compute press all pressure NULL virial
thermo_style custom step temp epair c_press
#equilibration
timestep 0.0000000001
thermo 50001
run 50000
WARNING: No pairwise cutoff or binsize set. Atom sorting therefore disabled. (src/atom.cpp:2118)
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
Per MPI rank memory allocation (min/avg/max) = 2.319 | 2.319 | 2.319 Mbytes
Step Temp E_pair c_press
0 1 0 1500.0667
50000 2.0204192e+10 0 809.28898
Loop time of 8.36695 on 1 procs for 50000 steps with 4096 atoms
Performance: 0.052 tau/day, 5975.895 timesteps/s
100.0% 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 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.081773 | 0.081773 | 0.081773 | 0.0 | 0.98
Output | 3.0396e-05 | 3.0396e-05 | 3.0396e-05 | 0.0 | 0.00
Modify | 7.8039 | 7.8039 | 7.8039 | 0.0 | 93.27
Other | | 0.4812 | | | 5.75
Nlocal: 4096.00 ave 4096 max 4096 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 817.000 ave 817 max 817 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0.0000000
Neighbor list builds = 0
Dangerous builds = 0
reset_timestep 0
#initialisation for the main run
# MSD
compute msd all msd
thermo_style custom step temp epair c_msd[*] c_press
timestep 0.00001
thermo 1000
# main run
run 120000
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
Per MPI rank memory allocation (min/avg/max) = 2.694 | 2.694 | 2.694 Mbytes
Step Temp E_pair c_msd[1] c_msd[2] c_msd[3] c_msd[4] c_press
0 2.0204192e+10 0 0 0 0 0 3.053092
1000 199589.87 0 0.020515986 0.019445659 0.020084014 0.060045658 -10.855191
2000 202255.37 0 0.039423387 0.039839097 0.041243768 0.12050625 -7.8484884
3000 197932.37 0 0.058057959 0.060232381 0.061205106 0.17949545 14.441358
4000 201354.42 0 0.08020915 0.080140903 0.081351793 0.24170185 -2.7088264
5000 201599.34 0 0.10065125 0.099423954 0.10004367 0.30011888 10.000367
6000 198355.3 0 0.12039302 0.12228165 0.12136204 0.36403671 -7.7331104
7000 201842.08 0 0.13901495 0.14401324 0.14070032 0.42372851 1.049759
8000 200224.96 0 0.16063188 0.16389028 0.16409878 0.48862093 14.748306
9000 198468.62 0 0.18050666 0.18555949 0.18441359 0.55047975 -7.2751841
10000 197958.21 0 0.20229316 0.20438608 0.20471694 0.61139618 -8.8169492
11000 200852.8 0 0.22244961 0.22388152 0.22417791 0.67050904 -0.56323783
12000 200135.84 0 0.24070342 0.23964066 0.24829459 0.72863867 -20.246433
13000 199160.33 0 0.26021951 0.2581362 0.27210493 0.79046065 6.2400743
14000 200016.58 0 0.28005738 0.27429833 0.29107673 0.84543244 9.8390268
15000 200805.25 0 0.30110658 0.29756813 0.31002936 0.90870407 -9.7474978
16000 201221.83 0 0.31982855 0.31758368 0.33140494 0.96881716 -11.937757
17000 199690.18 0 0.33896659 0.33908504 0.35143307 1.0294847 -11.627541
18000 197165.97 0 0.35589324 0.3605585 0.37062404 1.0870758 17.045279
19000 202921.66 0 0.36968243 0.3825335 0.38579438 1.1380103 -3.2942099
20000 200415.26 0 0.39189833 0.39811842 0.40650662 1.1965234 -0.55679809
21000 198882.79 0 0.41394816 0.42495341 0.42660986 1.2655114 0.26572202
22000 199352.13 0 0.43200564 0.44555233 0.44842807 1.325986 5.9839474
23000 200565.11 0 0.45248704 0.46736174 0.4633773 1.3832261 0.51141727
24000 197632.73 0 0.47648878 0.49070755 0.48561349 1.4528098 11.301781
25000 203284.74 0 0.50103025 0.5117464 0.50162451 1.5144012 4.0966379
26000 200458.42 0 0.52111051 0.53245594 0.52193205 1.5754985 -9.2090189
27000 197553.02 0 0.54097922 0.553215 0.5440757 1.6382699 -6.0708365
28000 200874.32 0 0.55707209 0.57015852 0.56334199 1.6905726 -17.349073
29000 199494.43 0 0.57734934 0.59276209 0.58014344 1.7502549 -7.0407471
30000 199898.09 0 0.60161157 0.6156313 0.60516078 1.8224036 -1.3770813
31000 200867.7 0 0.62383361 0.64008503 0.6272796 1.8911982 -8.3200079
32000 198811.59 0 0.64361889 0.66089102 0.64987533 1.9543852 -0.21133799
33000 198224.12 0 0.66695348 0.67669734 0.67749939 2.0211502 0.87075722
34000 202553.2 0 0.69470773 0.69930784 0.69600623 2.0900218 1.7428524
35000 199227.86 0 0.71973625 0.72255845 0.71991572 2.1622104 2.4381317
36000 200719.05 0 0.73772312 0.74086704 0.74438632 2.2229765 -8.8184183
37000 198054.45 0 0.75901548 0.76107029 0.76677002 2.2868558 9.0699905
38000 198496.92 0 0.77679013 0.78067416 0.78055585 2.3380201 -8.8374756
39000 199224.19 0 0.79689891 0.8074183 0.79624042 2.4005576 -2.3099574
40000 199514.11 0 0.81493522 0.8271518 0.81729253 2.4593796 8.5411105
41000 199926.55 0 0.82918834 0.84950171 0.83531381 2.5140039 -6.8276624
42000 201659.21 0 0.84991161 0.87416096 0.86612093 2.5901935 -11.006396
43000 201502.51 0 0.87967597 0.89570393 0.88920119 2.6645811 9.4305203
44000 194956.27 0 0.9022655 0.91604833 0.90539218 2.723706 1.7636771
45000 201853.02 0 0.92302957 0.93661741 0.93225051 2.7918975 9.6483674
46000 200572.92 0 0.94062662 0.94933155 0.94953376 2.8394919 1.0882497
47000 202008.49 0 0.95397524 0.97655157 0.96534559 2.8958724 -7.9450141
48000 199748.89 0 0.97441115 0.99687233 0.98429144 2.9555749 5.0525854
49000 203008.7 0 0.99757948 1.0095536 0.99836015 3.0054932 28.410878
50000 198810.18 0 1.0182591 1.0287254 1.0110652 3.0580497 22.596989
51000 201716 0 1.0414747 1.0448379 1.0361279 3.1224404 -0.3397634
52000 200682.63 0 1.0640391 1.0597767 1.0596255 3.1834413 8.9163814
53000 201068.23 0 1.0804112 1.0740541 1.077586 3.2320513 8.9631815
54000 203379.33 0 1.0965663 1.0832317 1.0981473 3.2779453 -7.8020084
55000 197117.81 0 1.1145489 1.1008769 1.1259188 3.3413446 13.723633
56000 201100.37 0 1.1420502 1.1311309 1.1425839 3.415765 10.39045
57000 199911.61 0 1.1641357 1.1461183 1.1598876 3.4701416 -1.5384143
58000 202180.4 0 1.1787793 1.1703422 1.1794284 3.5285498 4.9552552
59000 202359.35 0 1.2017068 1.1846051 1.1912556 3.5775675 14.774737
60000 196182.35 0 1.2297664 1.2087508 1.2116928 3.65021 12.484104
61000 201858.45 0 1.2505094 1.2255583 1.2330327 3.7091004 3.6962199
62000 198313.02 0 1.2756755 1.2437434 1.2514738 3.7708927 -6.5600779
63000 198423.1 0 1.2998594 1.262369 1.2656961 3.8279245 3.1919497
64000 202601.56 0 1.3177969 1.2812961 1.2841642 3.8832572 7.1735962
65000 201270.73 0 1.3353533 1.3006911 1.306668 3.9427124 3.7612957
66000 199480.32 0 1.3502663 1.3165416 1.3300249 3.9968327 -8.0484056
67000 202829.47 0 1.3628924 1.3369328 1.339246 4.0390712 -2.962791
68000 200269.53 0 1.3901352 1.3600404 1.3528283 4.1030039 29.395886
69000 201514.31 0 1.4135333 1.3834796 1.3719116 4.1689245 9.5358653
70000 198898.14 0 1.4323413 1.4056025 1.4015088 4.2394526 13.713608
71000 198446.83 0 1.4424061 1.4229225 1.4231698 4.2884984 9.5266069
72000 199550.94 0 1.4730822 1.4438093 1.4436864 4.360578 5.4060926
73000 201536.57 0 1.4860349 1.4557531 1.4673417 4.4091297 2.7527606
74000 201688.68 0 1.5078921 1.4770318 1.4889958 4.4739197 -2.5507167
75000 203168.01 0 1.5264946 1.4942757 1.5095341 4.5303045 13.955087
76000 198782.86 0 1.5363851 1.5145529 1.5306446 4.5815826 1.6748995
77000 199306.04 0 1.55336 1.5308045 1.5501462 4.6343107 1.4463705
78000 199420.52 0 1.5679804 1.5445387 1.5765555 4.6890745 -15.926362
79000 198711.33 0 1.5818761 1.5651424 1.5966885 4.743707 -23.662716
80000 202734.35 0 1.6045976 1.5878467 1.6155179 4.8079623 1.4177771
81000 199953.12 0 1.6266918 1.6125491 1.6370893 4.8763302 14.40188
82000 201254.27 0 1.6418366 1.6362867 1.6497081 4.9278313 -4.3503
83000 200442.35 0 1.6671772 1.6544269 1.6638838 4.9854878 -5.5569751
84000 201442.09 0 1.6772029 1.6819435 1.6824211 5.0415676 -17.634517
85000 202012.75 0 1.7026782 1.7059915 1.7079961 5.1166659 8.8311485
86000 198613.4 0 1.725679 1.7251262 1.7235885 5.1743936 10.070509
87000 198650.79 0 1.748013 1.7447674 1.7397963 5.2325767 7.3326989
88000 199753.54 0 1.7793864 1.7677848 1.7548586 5.3020298 -3.8460869
89000 200851.56 0 1.7992856 1.7843281 1.7671516 5.3507653 10.274664
90000 202029.24 0 1.8178051 1.8010651 1.7886511 5.4075213 1.1705818
91000 200963.98 0 1.8425785 1.8123748 1.8079693 5.4629226 -8.0390883
92000 200443.4 0 1.8743616 1.8355736 1.8340515 5.5439867 -12.186363
93000 197974.1 0 1.8911764 1.8440063 1.8442582 5.579441 10.189145
94000 201285.41 0 1.9040394 1.8567044 1.8663386 5.6270824 7.8537148
95000 198472.81 0 1.9268236 1.8638624 1.8855767 5.6762627 11.556616
96000 198171.93 0 1.9378011 1.8811168 1.9024245 5.7213424 -7.3493903
97000 200055.5 0 1.9539002 1.9031647 1.9221125 5.7791774 -7.2823252
98000 200350.77 0 1.973424 1.9255707 1.9393139 5.8383087 2.3526328
99000 198923.17 0 1.9946733 1.9416292 1.9616759 5.8979785 -8.6362233
100000 196205.31 0 2.015688 1.967164 1.9801696 5.9630216 1.5261152
101000 198842.45 0 2.0402634 1.9858628 1.9939889 6.0201151 6.8070808
102000 199060.56 0 2.0583018 2.0040652 2.0225396 6.0849067 5.4626963
103000 204892.64 0 2.0788003 2.0245826 2.0405395 6.1439224 -19.988675
104000 198709.07 0 2.0990457 2.0519007 2.0571079 6.2080544 -21.365135
105000 198916.99 0 2.1089408 2.0758832 2.0899796 6.2748037 4.3696238
106000 202191.68 0 2.1172909 2.0923523 2.1208274 6.3304706 8.2072292
107000 202428.89 0 2.1387532 2.114944 2.1418816 6.3955788 4.1099611
108000 197690.67 0 2.1620575 2.136726 2.1703555 6.469139 5.7183695
109000 200098.73 0 2.1814376 2.1464455 2.1828177 6.5107008 7.4366333
110000 197901.18 0 2.1955124 2.1764141 2.1994286 6.5713551 -6.4288954
111000 199478.54 0 2.2167884 2.1900638 2.2140739 6.6209261 22.379137
112000 198391.65 0 2.249996 2.2100316 2.2309406 6.6909682 -20.040892
113000 200542.42 0 2.2634106 2.2313768 2.2610988 6.7558862 0.2953844
114000 202117.15 0 2.28441 2.2517036 2.2787302 6.8148438 16.75177
115000 200004.06 0 2.2957226 2.2730837 2.2901883 6.8589947 -4.3125612
116000 200648.11 0 2.3184059 2.2934521 2.3257075 6.9375656 5.7210624
117000 198600.57 0 2.3413891 2.3102468 2.3511234 7.0027593 -2.9987639
118000 199817.34 0 2.3732051 2.3347741 2.3601752 7.0681544 -3.3658539
119000 200556.96 0 2.3873448 2.3595646 2.3774937 7.1244031 20.860601
120000 200997.81 0 2.4097258 2.3736031 2.3871081 7.170437 -5.3623487
Loop time of 20.5037 on 1 procs for 120000 steps with 4096 atoms
Performance: 5056.640 tau/day, 5852.593 timesteps/s
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0.0012425 | 0.0012425 | 0.0012425 | 0.0 | 0.01
Comm | 0.015074 | 0.015074 | 0.015074 | 0.0 | 0.07
Output | 0.006156 | 0.006156 | 0.006156 | 0.0 | 0.03
Modify | 19.243 | 19.243 | 19.243 | 0.0 | 93.85
Other | | 1.238 | | | 6.04
Nlocal: 4096.00 ave 4096 max 4096 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0.0000000
Neighbor list builds = 205
Dangerous builds = 0
Total wall time: 0:00:28

View File

@ -0,0 +1,217 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Originally modified from USER-CGDNA/fix_nve_dotc_langevin.cpp.
Contributing author: Sam Cameron (University of Bristol)
------------------------------------------------------------------------- */
#include "fix_brownian.h"
#include <cmath>
#include <cstring>
#include "math_extra.h"
#include "atom.h"
#include "force.h"
#include "update.h"
#include "comm.h"
#include "domain.h"
#include "random_mars.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */
FixBrownian::FixBrownian(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg)
{
virial_flag = 1;
time_integrate = 1;
if (narg != 6 && narg != 8)
error->all(FLERR,"Illegal fix brownian command.");
gamma_t = utils::numeric(FLERR,arg[3],false,lmp);
if (gamma_t <= 0.0)
error->all(FLERR,"Fix brownian viscous drag "
"coefficient must be > 0.");
diff_t = utils::numeric(FLERR,arg[4],false,lmp);
if (diff_t <= 0.0)
error->all(FLERR,"Fix brownian diffusion "
"coefficient must be > 0.");
seed = utils::inumeric(FLERR,arg[5],false,lmp);
if (seed <= 0) error->all(FLERR,"Fix brownian seed must be > 0.");
noise_flag = 1;
gaussian_noise_flag = 0;
if (narg == 8) {
if (strcmp(arg[6],"rng") == 0) {
if (strcmp(arg[7],"uniform") == 0) {
noise_flag = 1;
} else if (strcmp(arg[7],"gaussian") == 0) {
noise_flag = 1;
gaussian_noise_flag = 1;
} else if (strcmp(arg[7],"none") == 0) {
noise_flag = 0;
} else {
error->all(FLERR,"Illegal fix brownian command.");
}
} else {
error->all(FLERR,"Illegal fix brownian command.");
}
}
// initialize Marsaglia RNG with processor-unique seed
random = new RanMars(lmp,seed + comm->me);
}
/* ---------------------------------------------------------------------- */
int FixBrownian::setmask()
{
int mask = 0;
mask |= INITIAL_INTEGRATE;
mask |= POST_FORCE;
return mask;
}
/* ---------------------------------------------------------------------- */
FixBrownian::~FixBrownian()
{
delete random;
}
/* ---------------------------------------------------------------------- */
void FixBrownian::init()
{
g1 = force->ftm2v/gamma_t;
if (noise_flag == 0) {
g2 = 0;
rng_func = &RanMars::zero_rng;
} else if (gaussian_noise_flag == 1) {
g2 = gamma_t*sqrt(2 * diff_t)/force->ftm2v;
rng_func = &RanMars::gaussian;
} else {
g2 = gamma_t*sqrt( 24 * diff_t)/force->ftm2v;
rng_func = &RanMars::uniform_middle;
}
dt = update->dt;
sqrtdt = sqrt(dt);
}
void FixBrownian::setup(int vflag)
{
post_force(vflag);
}
/* ---------------------------------------------------------------------- */
void FixBrownian::initial_integrate(int /* vflag */)
{
double **x = atom->x;
double **v = atom->v;
double **f = atom->f;
int *mask = atom->mask;
int nlocal = atom->nlocal;
double dx,dy,dz;
if (igroup == atom->firstgroup) nlocal = atom->nfirst;
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
dx = dt * g1 * f[i][0];
x[i][0] += dx;
v[i][0] = dx/dt;
dy = dt * g1 * f[i][1];
x[i][1] += dy;
v[i][1] = dy/dt;
dz = dt * g1 * f[i][2];
x[i][2] += dz;
v[i][2] = dz/dt;
}
}
return;
}
/* ----------------------------------------------------------------------
apply random force, stolen from MISC/fix_efield.cpp
------------------------------------------------------------------------- */
void FixBrownian::post_force(int vflag)
{
double **f = atom->f;
double **x = atom->x;
int *mask = atom->mask;
imageint *image = atom->image;
int nlocal = atom->nlocal;
// virial setup
if (vflag) v_setup(vflag);
else evflag = 0;
double fx,fy,fz;
double v[6];
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
fx = g2 * (random->*rng_func)()/sqrtdt;
fy = g2 * (random->*rng_func)()/sqrtdt;
fz = g2 * (random->*rng_func)()/sqrtdt;
f[i][0] += fx;
f[i][1] += fy;
f[i][2] += fz;
if (evflag) {
v[0] = fx*x[i][0];
v[1] = fy*x[i][1];
v[2] = fz*x[i][2];
v[3] = fx*x[i][1];
v[4] = fx*x[i][2];
v[5] = fy*x[i][2];
v_tally(i, v);
}
}
}
void FixBrownian::reset_dt()
{
dt = update->dt;
sqrtdt = sqrt(dt);
}

View File

@ -0,0 +1,79 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef FIX_CLASS
FixStyle(brownian,FixBrownian)
#else
#ifndef LMP_FIX_BROWNIAN_H
#define LMP_FIX_BROWNIAN_H
#include "fix.h"
namespace LAMMPS_NS {
class FixBrownian : public Fix {
public:
FixBrownian(class LAMMPS *, int, char **);
virtual ~FixBrownian();
void init();
void initial_integrate(int);
void setup(int);
void post_force(int);
int setmask();
void reset_dt();
private:
int seed; // RNG seed
double dt, sqrtdt; // time step interval and its sqrt
double gamma_t; // translational damping param
double diff_t; // translational diffusion coeff
double g1,g2; // prefactors in time stepping
int noise_flag; // 0/1 for noise off/on
int gaussian_noise_flag; // 0/1 for uniform/gaussian noise
protected:
class RanMars *random;
typedef double (RanMars::*rng_member)();
rng_member rng_func; // placeholder for RNG function
};
}
#endif
#endif
/* ERROR/WARNING messages:
E: Illegal fix brownian command.
Wrong number/type of input arguments.
E: Fix brownian viscous drag coefficient must be > 0.
Self-explanatory.
E: Fix brownian diffusion coefficient must be > 0.
Self-explanatory.
E: Fix brownian seed must be > 0.
Self-explanatory.
*/