allow for command-line setting of initial temp
This commit is contained in:
@ -4,6 +4,9 @@
|
||||
fix ttm command
|
||||
===============
|
||||
|
||||
fix ttm/grid command
|
||||
===============
|
||||
|
||||
fix ttm/mod command
|
||||
===================
|
||||
|
||||
@ -12,13 +15,13 @@ Syntax
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID ttm seed C_e rho_e kappa_e gamma_p gamma_s v_0 Nx Ny Nz T_infile N T_outfile
|
||||
fix ID group-ID ttm/mod seed init_file Nx Ny Nz T_infile N T_outfile
|
||||
fix ID group-ID ttm seed C_e rho_e kappa_e gamma_p gamma_s v_0 Nx Ny Nz keyword value ...
|
||||
fix ID group-ID ttm/mod seed init_file Nx Ny Nz keyword value ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* style = *ttm* or *ttm_mod*
|
||||
* style = *ttm* or *ttm/grid* or *ttm/mod*
|
||||
* seed = random number seed to use for white noise (positive integer)
|
||||
* remaining arguments for fix ttm:
|
||||
* remaining arguments for fix ttm or fix ttm/grid
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -31,9 +34,6 @@ Syntax
|
||||
Nx = number of thermal solve grid points in the x-direction (positive integer)
|
||||
Ny = number of thermal solve grid points in the y-direction (positive integer)
|
||||
Nz = number of thermal solve grid points in the z-direction (positive integer)
|
||||
T_infile = filename to read initial electronic temperature from
|
||||
N = dump TTM temperatures every this many timesteps, 0 = no dump
|
||||
T_outfile = filename to write TTM temperatures to (only needed if N > 0)
|
||||
|
||||
* remaining arguments for fix ttm/mod:
|
||||
|
||||
@ -43,18 +43,29 @@ Syntax
|
||||
Nx = number of thermal solve grid points in the x-direction (positive integer)
|
||||
Ny = number of thermal solve grid points in the y-direction (positive integer)
|
||||
Nz = number of thermal solve grid points in the z-direction (positive integer)
|
||||
T_infile = filename to read initial electronic temperature from
|
||||
N = dump TTM temperatures every this many timesteps, 0 = no dump
|
||||
T_outfile = filename to write TTM temperatures to (only needed if N > 0)
|
||||
|
||||
* zero or more keyword/value(s) pairs may be appended
|
||||
* keyword = *set* or *infile" or *outfile"
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*set* value = Tinit
|
||||
Tinit = initial electronic temperature at all grid points (temperature units)
|
||||
*infile* value = file.in with grid values for electronic temperatures
|
||||
*outfile* values = Nout file.out
|
||||
Nout = dump grid temperatures every this many timesteps
|
||||
file.out = filename to write grid temperatures to
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 2 all ttm 699489 1.0 1.0 10 0.1 0.0 2.0 1 12 1 initialTs 1000 T.out
|
||||
fix 2 all ttm 123456 1.0 1.0 1.0 1.0 1.0 5.0 5 5 5 Te.in 1 Te.out
|
||||
fix 2 all ttm/mod 34277 parameters.txt 5 5 5 T_init 10 T_out
|
||||
fix 2 all ttm 699489 1.0 1.0 10 0.1 0.0 2.0 1 12 1 infile initial outfile 1000 T.out
|
||||
fix 3 all ttm/grid 123456 1.0 1.0 1.0 1.0 1.0 5.0 5 5 5 infile Te.in
|
||||
fix 4 all ttm/mod 34277 parameters.txt 5 5 5 infile T_init outfile 10 T_out
|
||||
|
||||
Example input scripts using these commands can be found in examples/ttm.
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
@ -62,36 +73,48 @@ Description
|
||||
Use a two-temperature model (TTM) to represent heat transfer through
|
||||
and between electronic and atomic subsystems. LAMMPS models the
|
||||
atomic subsystem as usual with a molecular dynamics model and the
|
||||
classical force field specified by the user, but the electronic
|
||||
subsystem is modeled as a continuum, or a background "gas", on a
|
||||
regular grid. Energy can be transferred spatially within the grid
|
||||
representing the electrons. Energy can also be transferred between
|
||||
the electronic and the atomic subsystems. The algorithm underlying
|
||||
this fix was derived by D. M. Duffy and A. M. Rutherford and is
|
||||
discussed in two J Physics: Condensed Matter papers: :ref:`(Duffy) <Duffy>`
|
||||
and :ref:`(Rutherford) <Rutherford>`. They used this algorithm in cascade
|
||||
simulations where a primary knock-on atom (PKA) was initialized with a
|
||||
high velocity to simulate a radiation event.
|
||||
classical force field specified by the user. The electronic subsystem
|
||||
is modeled as a continuum, or a background "gas", on a regular grid
|
||||
which overlays the simulation domain. Energy can be transferred
|
||||
spatially within the grid representing the electrons. Energy can also
|
||||
be transferred between the electronic and atomic subsystems. The
|
||||
algorithm underlying this fix was derived by D. M. Duffy
|
||||
and A. M. Rutherford and is discussed in two J Physics: Condensed
|
||||
Matter papers: :ref:`(Duffy) <Duffy>` and :ref:`(Rutherford)
|
||||
<Rutherford>`. They used this algorithm in cascade simulations where
|
||||
a primary knock-on atom (PKA) was initialized with a high velocity to
|
||||
simulate a radiation event.
|
||||
|
||||
The description in this sub-section applies to both fix ttm and fix
|
||||
ttm/mod. Fix ttm/mod adds options to account for external heat
|
||||
sources (e.g. at a surface) and for specifying parameters that allow
|
||||
the electronic heat capacity to depend strongly on electronic
|
||||
temperature. It is more expensive computationally than fix ttm
|
||||
because it treats the thermal diffusion equation as non-linear. More
|
||||
details on fix ttm/mod are given below.
|
||||
The description in this sub-section applies to all 3 of the fixes: fix
|
||||
ttm, fix ttm/grid, and fix ttm/mod.
|
||||
|
||||
Fix ttm/grid distributes the regular grid across processors consistent
|
||||
with the subdomains of atoms owned by each processor, but is otherwise
|
||||
identical to fix ttm. Note that fix ttm stores a copy of the grid on
|
||||
each processor, which is fine when the overall grid is reasonably
|
||||
small. For very large grids you should use fix ttt/grid instead.
|
||||
|
||||
Fix ttm/mod adds options to account for external heat sources (e.g. at
|
||||
a surface) and for specifying parameters that allow the electronic
|
||||
heat capacity to depend strongly on electronic temperature. It is
|
||||
more expensive computationally than fix ttm because it treats the
|
||||
thermal diffusion equation as non-linear. More details on fix ttm/mod
|
||||
are given below.
|
||||
|
||||
Heat transfer between the electronic and atomic subsystems is carried
|
||||
out via an inhomogeneous Langevin thermostat. This thermostat differs
|
||||
from the regular Langevin thermostat (:doc:`fix langevin <fix_langevin>`) in three important ways. First, the
|
||||
Langevin thermostat is applied uniformly to all atoms in the
|
||||
out via an inhomogeneous Langevin thermostat. Only atoms in the fix
|
||||
group contribute to and are affected by this heat transfer.
|
||||
|
||||
This thermostatting differs from the regular Langevin thermostat
|
||||
(:doc:`fix langevin <fix_langevin>`) in three important ways. First,
|
||||
the Langevin thermostat is applied uniformly to all atoms in the
|
||||
user-specified group for a single target temperature, whereas the TTM
|
||||
fix applies Langevin thermostatting locally to atoms within the
|
||||
fixes apply Langevin thermostatting locally to atoms within the
|
||||
volumes represented by the user-specified grid points with a target
|
||||
temperature specific to that grid point. Second, the Langevin
|
||||
thermostat couples the temperature of the atoms to an infinite heat
|
||||
reservoir, whereas the heat reservoir for fix TTM is finite and
|
||||
represents the local electrons. Third, the TTM fix allows users to
|
||||
reservoir, whereas the heat reservoir for the TTM fixes is finite and
|
||||
represents the local electrons. Third, the TTM fixes allow users to
|
||||
specify not just one friction coefficient, but rather two independent
|
||||
friction coefficients: one for the electron-ion interactions
|
||||
(*gamma_p*), and one for electron stopping (*gamma_s*).
|
||||
@ -123,26 +146,54 @@ as that in equation 6 of :ref:`(Duffy) <Duffy>`, with the exception that the
|
||||
electronic density is explicitly represented, rather than being part
|
||||
of the specific heat parameter.
|
||||
|
||||
Currently, fix ttm assumes that none of the user-supplied parameters
|
||||
will vary with temperature. Note that :ref:`(Duffy) <Duffy>` used a tanh()
|
||||
functional form for the temperature dependence of the electronic
|
||||
specific heat, but ignored temperature dependencies of any of the
|
||||
other parameters. See more discussion below for fix ttm/mod.
|
||||
Currently, the TTM fixes assume that none of the user-supplied
|
||||
parameters will vary with temperature. Note that :ref:`(Duffy)
|
||||
<Duffy>` used a tanh() functional form for the temperature dependence
|
||||
of the electronic specific heat, but ignored temperature dependencies
|
||||
of any of the other parameters. See more discussion below for fix
|
||||
ttm/mod.
|
||||
|
||||
These fixes require use of periodic boundary conditions and a 3D
|
||||
simulation. Periodic boundary conditions are also used in the heat
|
||||
equation solve for the electronic subsystem. This varies from the
|
||||
approach of :ref:`(Rutherford) <Rutherford>` where the atomic subsystem was
|
||||
..note::
|
||||
|
||||
These fixes do not perform time integration of the atoms in the fix
|
||||
group, they only rescale their velocities. Thus a time integration
|
||||
fix such as :doc:`fix nve <fix_nve>` should be used in conjunction
|
||||
with these fixes. These fixes should not normally be used on atoms
|
||||
that have their temperature controlled by another thermostatting
|
||||
fix, e.g. :doc:`fix nvt <fix_nh>` or :doc:`fix langevin
|
||||
<fix_langevin>`.
|
||||
|
||||
..note::
|
||||
|
||||
These fixes require use of an orthogonal 3d simulation box with
|
||||
periodic boundary conditions in all dimensions. They also require
|
||||
that the size and shape of the simulation box do not vary
|
||||
dynamically, e.g. due to use of the :doc:`fix npt <fix_nh>` command.
|
||||
Likewise, the size/shape of processor subdomains cannot vary due to
|
||||
dynamic load-balancing via use of the :doc:`fix balance
|
||||
<fix_balance>` command. It is possible however to load balance
|
||||
before the simulation starts using the :doc:`balance <balance>`
|
||||
command, so that each processor has a different size subdomain.
|
||||
|
||||
Periodic boundary conditions are also used in the heat equation solve
|
||||
for the electronic subsystem. This varies from the approach of
|
||||
:ref:`(Rutherford) <Rutherford>` where the atomic subsystem was
|
||||
embedded within a larger continuum representation of the electronic
|
||||
subsystem.
|
||||
|
||||
The initial electronic temperature input file, *T_infile*, is a text
|
||||
file LAMMPS reads in with no header and with four numeric columns
|
||||
(ix,iy,iz,Temp) and with a number of rows equal to the number of
|
||||
user-specified grid points (Nx by Ny by Nz). The ix,iy,iz are node
|
||||
indices from 0 to nxnodes-1, etc. For example, the initial electronic
|
||||
temperatures on a 1 by 2 by 3 grid could be specified in a *T_infile*
|
||||
as follows:
|
||||
The *set* keyword specifies a *Tinit* temperature value to initialize
|
||||
the value stored on all grid points.
|
||||
|
||||
The *infile* keyword specifies an input file of electronic
|
||||
temperatures for each grid point to be read in to initialize the grid.
|
||||
By default the temperatures are all zero when the grid is created.
|
||||
The input file is a text file with no header. Each line contains four
|
||||
numeric columns: ix,iy,iz,Temperature. The number of lines must be
|
||||
equal to the number of user-specified grid points (Nx by Ny by Nz).
|
||||
The ix,iy,iz are grid point indices ranging from 0 to nxnodes-1
|
||||
inclusive in each dimension. The lines can appear in any order. For
|
||||
example, the initial electronic temperatures on a 1 by 2 by 3 grid
|
||||
could be specified in the file as follows:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -155,34 +206,27 @@ as follows:
|
||||
|
||||
where the electronic temperatures along the y=0 plane have been set to
|
||||
1.0, and the electronic temperatures along the y=1 plane have been set
|
||||
to 2.0. The order of lines in this file is no important. If all the
|
||||
nodal values are not specified, LAMMPS will generate an error.
|
||||
|
||||
The temperature output file, *T_oufile*, is created and written by
|
||||
this fix. Temperatures for both the electronic and atomic subsystems
|
||||
at every node and every N timesteps are output. If N is specified as
|
||||
zero, no output is generated, and no output filename is needed. The
|
||||
format of the output is as follows. One long line is written every
|
||||
output timestep. The timestep itself is given in the first column.
|
||||
The next Nx\*Ny\*Nz columns contain the temperatures for the atomic
|
||||
subsystem, and the final Nx\*Ny\*Nz columns contain the temperatures for
|
||||
the electronic subsystem. The ordering of the Nx\*Ny\*Nz columns is
|
||||
with the z index varying fastest, y the next fastest, and x the
|
||||
slowest.
|
||||
|
||||
These fixes do not change the coordinates of their atoms; they only
|
||||
scales their velocities. Thus a time integration fix (e.g. :doc:`fix nve <fix_nve>`) should still be used to time integrate the affected
|
||||
atoms. The fixes should not normally be used on atoms that have their
|
||||
temperature controlled by another fix - e.g. :doc:`fix nvt <fix_nh>` or
|
||||
:doc:`fix langevin <fix_langevin>`.
|
||||
to 2.0. If all the grid point values are not specified, LAMMPS will
|
||||
generate an error.
|
||||
|
||||
..note::
|
||||
|
||||
The current implementations of these fixes create a copy of the
|
||||
electron grid that overlays the entire simulation domain, for each
|
||||
processor. Values on the grid are summed across all processors. Thus
|
||||
you should insure that this grid is not too large, else your
|
||||
simulation could incur high memory and communication costs.
|
||||
The electronic temperature at each grid point must be a non-zero
|
||||
positive value, both initially, and as the temperature evovles over
|
||||
time. Thus you must use either the *set* or *infile* keyword or be
|
||||
restarting a simulation that used this fix previously.
|
||||
|
||||
The *outfile* keyword has 2 values. The first value *Nout* triggers
|
||||
output of the electronic temperatures for each grid point every Nout
|
||||
timesteps. The second value is the filename for output which will
|
||||
be suffixed by the timestep. The format of each output file is exactly
|
||||
the same as the input temperature file.
|
||||
|
||||
Note that the atomic temperature for atoms in each grid cell can also
|
||||
be computed and output by the :doc:`fix ave/chunk <fix_ave_chunk>`
|
||||
command using the :doc:`compute chunk/atom <compute_chunk_atom>`
|
||||
command to create a 3d array of chunks consistent with the grid used
|
||||
by this fix.
|
||||
|
||||
----------
|
||||
|
||||
@ -222,7 +266,8 @@ acting on an ion is:
|
||||
|
||||
.. math::
|
||||
|
||||
{\vec F}_i = - \partial U / \partial {\vec r}_i + {\vec F}_{langevin} - \nabla P_e/n_{ion}
|
||||
{\vec F}_i = - \partial U / \partial {\vec r}_i + {\vec
|
||||
F}_{langevin} - \nabla P_e/n_{ion}
|
||||
|
||||
where F_langevin is a force from Langevin thermostat simulating
|
||||
electron-phonon coupling, and nabla P_e/n_ion is the electron blast
|
||||
@ -246,7 +291,9 @@ is calculated as
|
||||
|
||||
.. math::
|
||||
|
||||
\nabla_x P_e = \left[\frac{C_e{}T_e(x)\lambda}{(x+\lambda)^2} + \frac{x}{x+\lambda}\frac{(C_e{}T_e)_{x+\Delta x}-(C_e{}T_e)_{x}}{\Delta x} \right]
|
||||
\nabla_x P_e = \left[\frac{C_e{}T_e(x)\lambda}{(x+\lambda)^2} +
|
||||
\frac{x}{x+\lambda}\frac{(C_e{}T_e)_{x+\Delta
|
||||
x}-(C_e{}T_e)_{x}}{\Delta x} \right]
|
||||
|
||||
where lambda is the electron mean free path (see :ref:`(Norman) <Norman>`,
|
||||
:ref:`(Pisarev) <Pisarev>`)
|
||||
@ -286,10 +333,12 @@ Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
These fixes write the state of the electronic subsystem and the energy
|
||||
exchange between the subsystems to :doc:`binary restart files <restart>`. See the :doc:`read_restart <read_restart>` command
|
||||
for info on how to re-specify a fix in an input script that reads a
|
||||
exchange between the subsystems to :doc:`binary restart files
|
||||
<restart>`. See the :doc:`read_restart <read_restart>` command for
|
||||
info on how to re-specify a fix in an input script that reads a
|
||||
restart file, so that the operation of the fix continues in an
|
||||
uninterrupted fashion.
|
||||
uninterrupted fashion. Note that the restart script must define the
|
||||
same size grid as the original script.
|
||||
|
||||
Because the state of the random number generator is not saved in the
|
||||
restart files, this means you cannot do "exact" restarts with this
|
||||
@ -297,16 +346,16 @@ fix, where the simulation continues on the same as if no restart had
|
||||
taken place. However, in a statistical sense, a restarted simulation
|
||||
should produce the same behavior.
|
||||
|
||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to these
|
||||
fixes.
|
||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to
|
||||
these fixes.
|
||||
|
||||
Both fixes compute 2 output quantities stored in a vector of length 2,
|
||||
which can be accessed by various :doc:`output commands <Howto_output>`.
|
||||
The first quantity is the total energy of the electronic
|
||||
subsystem. The second quantity is the energy transferred from the
|
||||
electronic to the atomic subsystem on that timestep. Note that the
|
||||
velocity verlet integrator applies the fix ttm forces to the atomic
|
||||
subsystem as two half-step velocity updates: one on the current
|
||||
These fixes compute 2 output quantities stored in a vector of length
|
||||
2, which can be accessed by various :doc:`output commands
|
||||
<Howto_output>`. The first quantity is the total energy of the
|
||||
electronic subsystem. The second quantity is the energy transferred
|
||||
from the electronic to the atomic subsystem on that timestep. Note
|
||||
that the velocity verlet integrator applies the fix ttm forces to the
|
||||
atomic subsystem as two half-step velocity updates: one on the current
|
||||
timestep and one on the subsequent timestep. Consequently, the change
|
||||
in the atomic subsystem energy is lagged by half a timestep relative
|
||||
to the change in the electronic subsystem energy. As a result of this,
|
||||
@ -322,13 +371,12 @@ of the :doc:`run <run>` command. The fixes are not invoked during
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
Fix *ttm* and *ttm/mod* are part of the EXTRA-FIX package. They are
|
||||
only enabled if LAMMPS was built with that package.
|
||||
See the :doc:`Build package <Build_package>` page for more info.
|
||||
All these fixes are part of the EXTRA-FIX package. They are only
|
||||
enabled if LAMMPS was built with that package. See the :doc:`Build
|
||||
package <Build_package>` page for more info.
|
||||
|
||||
These fixes can only be used for 3d simulations and orthogonal
|
||||
simulation boxes. You must also use periodic
|
||||
:doc:`boundary <boundary>` conditions.
|
||||
As mentioned above, these fixes require 3d simulations and orthogonal
|
||||
simulation boxes periodic in all 3 dimensions.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
@ -175,24 +175,28 @@ include and perform all the usual operations of an input script that
|
||||
uses the :doc:`run <run>` command. There are a few exceptions and
|
||||
points to consider, as discussed here.
|
||||
|
||||
Fixes that perform time integration, such as :doc:`fix nve <fix_nve>` or
|
||||
:doc:`fix npt <fix_nh>` are not invoked, since no time integration is
|
||||
performed. Fixes that perturb or constrain the forces on atoms will
|
||||
be invoked, just as they would during a normal run. Examples are :doc:`fix indent <fix_indent>` and :doc:`fix langevin <fix_langevin>`. So you
|
||||
should think carefully as to whether that makes sense for the manner
|
||||
in which you are reprocessing the dump snapshots.
|
||||
Fixes that perform time integration, such as :doc:`fix nve <fix_nve>`
|
||||
or :doc:`fix npt <fix_nh>` are not invoked, since no time integration
|
||||
is performed. Fixes that perturb or constrain the forces on atoms
|
||||
will be invoked, just as they would during a normal run. Examples are
|
||||
:doc:`fix indent <fix_indent>` and :doc:`fix langevin <fix_langevin>`.
|
||||
So you should think carefully as to whether that makes sense for the
|
||||
manner in which you are reprocessing the dump snapshots.
|
||||
|
||||
If you only want the rerun script to perform an analysis that does
|
||||
not involve pair interactions, such as use compute msd to calculated
|
||||
displacements over time, you do not need to define a :doc:`pair style <pair_style>`, which may also mean neighbor lists will not
|
||||
need to be calculated which saves time. The :doc:`comm_modify cutoff <comm_modify>` command can also be used to insure ghost
|
||||
atoms are acquired from far enough away for operations like bond and
|
||||
angle evaluations, if no pair style is being used.
|
||||
If you only want the rerun script to perform an analysis that does not
|
||||
involve pair interactions, such as use compute msd to calculated
|
||||
displacements over time, you do not need to define a :doc:`pair style
|
||||
<pair_style>`, which may also mean neighbor lists will not need to be
|
||||
calculated which saves time. The :doc:`comm_modify cutoff
|
||||
<comm_modify>` command can also be used to insure ghost atoms are
|
||||
acquired from far enough away for operations like bond and angle
|
||||
evaluations, if no pair style is being used.
|
||||
|
||||
Every time a snapshot is read, the timestep for the simulation is
|
||||
reset, as if the :doc:`reset_timestep <reset_timestep>` command were
|
||||
used. This command has some restrictions as to what fixes can be
|
||||
defined. See its page for details. For example, the :doc:`fix deposit <fix_deposit>` and :doc:`fix dt/reset <fix_dt_reset>` fixes
|
||||
defined. See its page for details. For example, the :doc:`fix
|
||||
deposit <fix_deposit>` and :doc:`fix dt/reset <fix_dt_reset>` fixes
|
||||
are in this category. They also make no sense to use with a rerun
|
||||
command.
|
||||
|
||||
|
||||
@ -92,25 +92,25 @@ velocity field.
|
||||
The *scale* style computes the current temperature of the group of
|
||||
atoms and then rescales the velocities to the specified temperature.
|
||||
|
||||
The *ramp* style is similar to that used by the :doc:`compute temp/ramp <compute_temp_ramp>` command. Velocities ramped
|
||||
uniformly from vlo to vhi are applied to dimension vx, or vy, or vz.
|
||||
The value assigned to a particular atom depends on its relative
|
||||
coordinate value (in dim) from clo to chi. For the example above, an
|
||||
atom with y-coordinate of 10 (1/4 of the way from 5 to 25), would be
|
||||
assigned a x-velocity of 1.25 (1/4 of the way from 0.0 to 5.0). Atoms
|
||||
outside the coordinate bounds (less than 5 or greater than 25 in this
|
||||
case), are assigned velocities equal to vlo or vhi (0.0 or 5.0 in this
|
||||
case).
|
||||
The *ramp* style is similar to that used by the :doc:`compute
|
||||
temp/ramp <compute_temp_ramp>` command. Velocities ramped uniformly
|
||||
from vlo to vhi are applied to dimension vx, or vy, or vz. The value
|
||||
assigned to a particular atom depends on its relative coordinate value
|
||||
(in dim) from clo to chi. For the example above, an atom with
|
||||
y-coordinate of 10 (1/4 of the way from 5 to 25), would be assigned a
|
||||
x-velocity of 1.25 (1/4 of the way from 0.0 to 5.0). Atoms outside
|
||||
the coordinate bounds (less than 5 or greater than 25 in this case),
|
||||
are assigned velocities equal to vlo or vhi (0.0 or 5.0 in this case).
|
||||
|
||||
The *zero* style adjusts the velocities of the group of atoms so that
|
||||
the aggregate linear or angular momentum is zero. No other changes
|
||||
are made to the velocities of the atoms. If the *rigid* option is
|
||||
specified (see below), then the zeroing is performed on individual
|
||||
rigid bodies, as defined by the :doc:`fix rigid or fix rigid/small <fix_rigid>` commands. In other words, zero linear
|
||||
will set the linear momentum of each rigid body to zero, and zero
|
||||
angular will set the angular momentum of each rigid body to zero.
|
||||
This is done by adjusting the velocities of the atoms in each rigid
|
||||
body.
|
||||
rigid bodies, as defined by the :doc:`fix rigid or fix rigid/small
|
||||
<fix_rigid>` commands. In other words, zero linear will set the
|
||||
linear momentum of each rigid body to zero, and zero angular will set
|
||||
the angular momentum of each rigid body to zero. This is done by
|
||||
adjusting the velocities of the atoms in each rigid body.
|
||||
|
||||
All temperatures specified in the velocity command are in temperature
|
||||
units; see the :doc:`units <units>` command. The units of velocities and
|
||||
|
||||
@ -114,6 +114,7 @@ tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si
|
||||
template: examples for using atom_style template and comparing to atom style molecular
|
||||
tersoff: regression test input for Tersoff variants
|
||||
threebody: regression test input for a variety of threebody potentials
|
||||
ttm: two-temeperature model examples
|
||||
vashishta: models using the Vashishta potential
|
||||
voronoi: Voronoi tesselation via compute voronoi/atom command
|
||||
wall: use of reflective walls with different stochastic models
|
||||
|
||||
4606
examples/ttm/FeVoter-ChenRecheck.fs
Normal file
4606
examples/ttm/FeVoter-ChenRecheck.fs
Normal file
File diff suppressed because it is too large
Load Diff
42
examples/ttm/in.ttm
Normal file
42
examples/ttm/in.ttm
Normal file
@ -0,0 +1,42 @@
|
||||
units metal
|
||||
atom_style atomic
|
||||
boundary p p p
|
||||
|
||||
variable latc equal 2.87
|
||||
lattice bcc ${latc}
|
||||
variable xmax equal 10.0
|
||||
variable xmin equal -10.0
|
||||
variable ymax equal 10.0
|
||||
variable ymin equal -10.0
|
||||
variable zmax equal 10.0
|
||||
variable zmin equal -10.0
|
||||
|
||||
region sim_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} &
|
||||
units lattice
|
||||
create_box 1 sim_box
|
||||
region atom_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} &
|
||||
units lattice
|
||||
create_atoms 1 region atom_box
|
||||
|
||||
mass 1 55.845
|
||||
|
||||
include pot_iron.mod
|
||||
|
||||
neighbor 2.0 bin
|
||||
neigh_modify every 5 delay 0 check yes
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
fix twotemp all ttm 342785 1.2470e-5 0.087614 &
|
||||
0.005365 29.5917 47.5679 58.4613 10 10 10 set 1800.0
|
||||
|
||||
compute pe all pe/atom
|
||||
compute ke all ke/atom
|
||||
|
||||
timestep 0.0001
|
||||
thermo 100
|
||||
|
||||
thermo_style custom step temp etotal f_twotemp[1] f_twotemp[2]
|
||||
thermo_modify format float "%20.16g"
|
||||
|
||||
run 1000
|
||||
42
examples/ttm/in.ttm.grid
Normal file
42
examples/ttm/in.ttm.grid
Normal file
@ -0,0 +1,42 @@
|
||||
units metal
|
||||
atom_style atomic
|
||||
boundary p p p
|
||||
|
||||
variable latc equal 2.87
|
||||
lattice bcc ${latc}
|
||||
variable xmax equal 10.0
|
||||
variable xmin equal -10.0
|
||||
variable ymax equal 10.0
|
||||
variable ymin equal -10.0
|
||||
variable zmax equal 10.0
|
||||
variable zmin equal -10.0
|
||||
|
||||
region sim_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} &
|
||||
units lattice
|
||||
create_box 1 sim_box
|
||||
region atom_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} &
|
||||
units lattice
|
||||
create_atoms 1 region atom_box
|
||||
|
||||
mass 1 55.845
|
||||
|
||||
include pot_iron.mod
|
||||
|
||||
neighbor 2.0 bin
|
||||
neigh_modify every 5 delay 0 check yes
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
fix twotemp all ttm/grid 342785 1.2470e-5 0.087614 &
|
||||
0.005365 29.5917 47.5679 58.4613 10 10 10 set 1800.0
|
||||
|
||||
compute pe all pe/atom
|
||||
compute ke all ke/atom
|
||||
|
||||
timestep 0.0001
|
||||
thermo 100
|
||||
|
||||
thermo_style custom step temp etotal f_twotemp[1] f_twotemp[2]
|
||||
thermo_modify format float "%20.16g"
|
||||
|
||||
run 1000
|
||||
118
examples/ttm/log.26Aug21.ttm.g++.1
Normal file
118
examples/ttm/log.26Aug21.ttm.g++.1
Normal file
@ -0,0 +1,118 @@
|
||||
LAMMPS (30 Jul 2021)
|
||||
units metal
|
||||
atom_style atomic
|
||||
boundary p p p
|
||||
|
||||
variable latc equal 2.87
|
||||
lattice bcc ${latc}
|
||||
lattice bcc 2.87
|
||||
Lattice spacing in x,y,z = 2.8700000 2.8700000 2.8700000
|
||||
variable xmax equal 10.0
|
||||
variable xmin equal -10.0
|
||||
variable ymax equal 10.0
|
||||
variable ymin equal -10.0
|
||||
variable zmax equal 10.0
|
||||
variable zmin equal -10.0
|
||||
|
||||
region sim_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_box 1 sim_box
|
||||
Created orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
region atom_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_atoms 1 region atom_box
|
||||
Created 16000 atoms
|
||||
using lattice units in orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
create_atoms CPU = 0.003 seconds
|
||||
|
||||
mass 1 55.845
|
||||
|
||||
include pot_iron.mod
|
||||
pair_style eam/fs
|
||||
pair_coeff * * FeVoter-ChenRecheck.fs Fe
|
||||
|
||||
neighbor 2.0 bin
|
||||
neigh_modify every 5 delay 0 check yes
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
fix twotemp all ttm 342785 1.2470e-5 0.087614 0.005365 29.5917 47.5679 58.4613 10 10 10 infile grid_10x10x10 outfile 1000 tmp.grid.ttm
|
||||
|
||||
compute pe all pe/atom
|
||||
compute ke all ke/atom
|
||||
|
||||
dump 1 all custom 1000 tmp.dump.ttm id type x y z c_ke c_pe
|
||||
|
||||
timestep 0.0001
|
||||
thermo 100
|
||||
|
||||
thermo_style custom step temp etotal f_twotemp[1] f_twotemp[2]
|
||||
thermo_modify format float "%20.16g"
|
||||
|
||||
run 1000
|
||||
Neighbor list info ...
|
||||
update every 5 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.524
|
||||
ghost atom cutoff = 6.524
|
||||
binsize = 3.262, bins = 18 18 18
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/fs, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.82 | 13.82 | 13.82 Mbytes
|
||||
Step Temp TotEng f_twotemp[1] f_twotemp[2]
|
||||
0 0 -68483.52254543516 371.9188105082105 0
|
||||
100 17.00947824197047 -68446.51095116073 334.6305417428716 0.3760709738059772
|
||||
200 27.90625180507924 -68413.17749063623 301.3358408995842 0.3161167973265658
|
||||
300 32.19243232351598 -68383.2226191097 271.4018727219317 0.2902233631657705
|
||||
400 33.4532840518293 -68355.76078178188 243.9648281740988 0.2545400268100776
|
||||
500 35.52815331681829 -68331.6643206617 219.8831664440165 0.2389083849000776
|
||||
600 40.61109011282667 -68309.39522245103 197.5869310464551 0.3052890341245368
|
||||
700 46.19736836207273 -68290.15919155753 178.4094794163846 0.1982374463651033
|
||||
800 50.43097177176409 -68272.75667145227 161.0251849674132 0.1708816198953868
|
||||
900 52.16219449883412 -68257.88199640217 146.1880396210572 0.1034574178558495
|
||||
1000 53.48751887610941 -68244.41443573481 132.7439331429908 0.06426914262099545
|
||||
Loop time of 15.1122 on 1 procs for 1000 steps with 16000 atoms
|
||||
|
||||
Performance: 0.572 ns/day, 41.978 hours/ns, 66.172 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 | 13.929 | 13.929 | 13.929 | 0.0 | 92.17
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.08636 | 0.08636 | 0.08636 | 0.0 | 0.57
|
||||
Output | 0.029141 | 0.029141 | 0.029141 | 0.0 | 0.19
|
||||
Modify | 1.0235 | 1.0235 | 1.0235 | 0.0 | 6.77
|
||||
Other | | 0.04389 | | | 0.29
|
||||
|
||||
Nlocal: 16000.0 ave 16000 max 16000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 13449.0 ave 13449 max 13449 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 896000.0 ave 896000 max 896000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 896000
|
||||
Ave neighs/atom = 56.000000
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
write_restart tmp.restart.ttm
|
||||
System init for write_restart ...
|
||||
Total wall time: 0:00:15
|
||||
118
examples/ttm/log.26Aug21.ttm.g++.4
Normal file
118
examples/ttm/log.26Aug21.ttm.g++.4
Normal file
@ -0,0 +1,118 @@
|
||||
LAMMPS (30 Jul 2021)
|
||||
units metal
|
||||
atom_style atomic
|
||||
boundary p p p
|
||||
|
||||
variable latc equal 2.87
|
||||
lattice bcc ${latc}
|
||||
lattice bcc 2.87
|
||||
Lattice spacing in x,y,z = 2.8700000 2.8700000 2.8700000
|
||||
variable xmax equal 10.0
|
||||
variable xmin equal -10.0
|
||||
variable ymax equal 10.0
|
||||
variable ymin equal -10.0
|
||||
variable zmax equal 10.0
|
||||
variable zmin equal -10.0
|
||||
|
||||
region sim_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_box 1 sim_box
|
||||
Created orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
region atom_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_atoms 1 region atom_box
|
||||
Created 16000 atoms
|
||||
using lattice units in orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
create_atoms CPU = 0.002 seconds
|
||||
|
||||
mass 1 55.845
|
||||
|
||||
include pot_iron.mod
|
||||
pair_style eam/fs
|
||||
pair_coeff * * FeVoter-ChenRecheck.fs Fe
|
||||
|
||||
neighbor 2.0 bin
|
||||
neigh_modify every 5 delay 0 check yes
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
fix twotemp all ttm 342785 1.2470e-5 0.087614 0.005365 29.5917 47.5679 58.4613 10 10 10 infile grid_10x10x10 outfile 1000 tmp.grid.ttm
|
||||
|
||||
compute pe all pe/atom
|
||||
compute ke all ke/atom
|
||||
|
||||
dump 1 all custom 1000 tmp.dump.ttm id type x y z c_ke c_pe
|
||||
|
||||
timestep 0.0001
|
||||
thermo 100
|
||||
|
||||
thermo_style custom step temp etotal f_twotemp[1] f_twotemp[2]
|
||||
thermo_modify format float "%20.16g"
|
||||
|
||||
run 1000
|
||||
Neighbor list info ...
|
||||
update every 5 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.524
|
||||
ghost atom cutoff = 6.524
|
||||
binsize = 3.262, bins = 18 18 18
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/fs, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.559 | 6.559 | 6.559 Mbytes
|
||||
Step Temp TotEng f_twotemp[1] f_twotemp[2]
|
||||
0 0 -68483.52254530673 371.9188105082105 0
|
||||
100 16.95254977583874 -68446.65370077227 334.7807307441603 0.3600757576618061
|
||||
200 27.82076000591521 -68413.49962571842 301.6698518274451 0.2923012030382478
|
||||
300 32.28064646099917 -68383.43127112807 271.620630836186 0.2697897656149546
|
||||
400 33.32631162065878 -68356.76508047059 244.9939728689737 0.2059848798035755
|
||||
500 35.13985645761556 -68332.75838831626 220.9563145448484 0.2799090544324762
|
||||
600 39.58297841774112 -68311.05917212959 199.2875787815293 0.2309225167135088
|
||||
700 45.34109481744322 -68291.67926830769 179.95673920187 0.1434664891770075
|
||||
800 49.66116134168288 -68275.00925057202 163.282485803462 0.1598759550824534
|
||||
900 52.17137809502143 -68259.83087950756 148.1293852818856 0.118013038413826
|
||||
1000 54.2344556410713 -68245.61817879432 133.9139611916062 0.1315530159773972
|
||||
Loop time of 4.97562 on 4 procs for 1000 steps with 16000 atoms
|
||||
|
||||
Performance: 1.736 ns/day, 13.821 hours/ns, 200.980 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 | 4.1408 | 4.262 | 4.4044 | 5.5 | 85.66
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.18288 | 0.3266 | 0.44977 | 20.3 | 6.56
|
||||
Output | 0.0091008 | 0.0099765 | 0.01029 | 0.5 | 0.20
|
||||
Modify | 0.34765 | 0.35054 | 0.35404 | 0.4 | 7.05
|
||||
Other | | 0.02651 | | | 0.53
|
||||
|
||||
Nlocal: 4000.00 ave 4000 max 4000 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6329.00 ave 6329 max 6329 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 224000.0 ave 227436 max 220450 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
|
||||
Total # of neighbors = 896000
|
||||
Ave neighs/atom = 56.000000
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
write_restart tmp.restart.ttm
|
||||
System init for write_restart ...
|
||||
Total wall time: 0:00:05
|
||||
118
examples/ttm/log.26Aug21.ttm.grid.g++.1
Normal file
118
examples/ttm/log.26Aug21.ttm.grid.g++.1
Normal file
@ -0,0 +1,118 @@
|
||||
LAMMPS (30 Jul 2021)
|
||||
units metal
|
||||
atom_style atomic
|
||||
boundary p p p
|
||||
|
||||
variable latc equal 2.87
|
||||
lattice bcc ${latc}
|
||||
lattice bcc 2.87
|
||||
Lattice spacing in x,y,z = 2.8700000 2.8700000 2.8700000
|
||||
variable xmax equal 10.0
|
||||
variable xmin equal -10.0
|
||||
variable ymax equal 10.0
|
||||
variable ymin equal -10.0
|
||||
variable zmax equal 10.0
|
||||
variable zmin equal -10.0
|
||||
|
||||
region sim_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_box 1 sim_box
|
||||
Created orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
region atom_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_atoms 1 region atom_box
|
||||
Created 16000 atoms
|
||||
using lattice units in orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
create_atoms CPU = 0.005 seconds
|
||||
|
||||
mass 1 55.845
|
||||
|
||||
include pot_iron.mod
|
||||
pair_style eam/fs
|
||||
pair_coeff * * FeVoter-ChenRecheck.fs Fe
|
||||
|
||||
neighbor 2.0 bin
|
||||
neigh_modify every 5 delay 0 check yes
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
fix twotemp all ttm/grid 342785 1.2470e-5 0.087614 0.005365 29.5917 47.5679 58.4613 10 10 10 infile grid_10x10x10 outfile 1000 tmp.grid.ttm.grid
|
||||
|
||||
compute pe all pe/atom
|
||||
compute ke all ke/atom
|
||||
|
||||
dump 1 all custom 1000 tmp.dump.ttm.grid id type x y z c_ke c_pe
|
||||
|
||||
timestep 0.0001
|
||||
thermo 100
|
||||
|
||||
thermo_style custom step temp etotal f_twotemp[1] f_twotemp[2]
|
||||
thermo_modify format float "%20.16g"
|
||||
|
||||
run 1000
|
||||
Neighbor list info ...
|
||||
update every 5 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.524
|
||||
ghost atom cutoff = 6.524
|
||||
binsize = 3.262, bins = 18 18 18
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/fs, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.85 | 13.85 | 13.85 Mbytes
|
||||
Step Temp TotEng f_twotemp[1] f_twotemp[2]
|
||||
0 0 -68483.52254543516 371.9188105082105 0
|
||||
100 17.00947824197047 -68446.51095116073 334.6305417428716 0.3760709738059774
|
||||
200 27.90625180507924 -68413.17749063623 301.3358408995842 0.3161167973265658
|
||||
300 32.19243232351597 -68383.2226191097 271.4018727219317 0.2902233631657708
|
||||
400 33.45328405182931 -68355.76078178188 243.9648281740989 0.254540026810078
|
||||
500 35.52815331681825 -68331.66432066172 219.8831664440165 0.2389083849000778
|
||||
600 40.61109011282666 -68309.39522245103 197.5869310464551 0.3052890341245368
|
||||
700 46.19736836207277 -68290.15919155753 178.4094794163846 0.1982374463651032
|
||||
800 50.4309717717641 -68272.75667145227 161.0251849674133 0.1708816198953871
|
||||
900 52.16219449883405 -68257.88199640217 146.1880396210573 0.1034574178558499
|
||||
1000 53.48751887610945 -68244.41443573478 132.7439331429909 0.06426914262099563
|
||||
Loop time of 16.6744 on 1 procs for 1000 steps with 16000 atoms
|
||||
|
||||
Performance: 0.518 ns/day, 46.318 hours/ns, 59.972 timesteps/s
|
||||
100.0% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 15.418 | 15.418 | 15.418 | 0.0 | 92.46
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.095105 | 0.095105 | 0.095105 | 0.0 | 0.57
|
||||
Output | 0.02782 | 0.02782 | 0.02782 | 0.0 | 0.17
|
||||
Modify | 1.0867 | 1.0867 | 1.0867 | 0.0 | 6.52
|
||||
Other | | 0.04719 | | | 0.28
|
||||
|
||||
Nlocal: 16000.0 ave 16000 max 16000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 13449.0 ave 13449 max 13449 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 896000.0 ave 896000 max 896000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 896000
|
||||
Ave neighs/atom = 56.000000
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
write_restart tmp.restart.ttm.grid
|
||||
System init for write_restart ...
|
||||
Total wall time: 0:00:16
|
||||
118
examples/ttm/log.26Aug21.ttm.grid.g++.4
Normal file
118
examples/ttm/log.26Aug21.ttm.grid.g++.4
Normal file
@ -0,0 +1,118 @@
|
||||
LAMMPS (30 Jul 2021)
|
||||
units metal
|
||||
atom_style atomic
|
||||
boundary p p p
|
||||
|
||||
variable latc equal 2.87
|
||||
lattice bcc ${latc}
|
||||
lattice bcc 2.87
|
||||
Lattice spacing in x,y,z = 2.8700000 2.8700000 2.8700000
|
||||
variable xmax equal 10.0
|
||||
variable xmin equal -10.0
|
||||
variable ymax equal 10.0
|
||||
variable ymin equal -10.0
|
||||
variable zmax equal 10.0
|
||||
variable zmin equal -10.0
|
||||
|
||||
region sim_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region sim_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_box 1 sim_box
|
||||
Created orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
region atom_box block ${xmin} ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 ${xmax} ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 ${ymin} ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 ${ymax} ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 ${zmin} ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 ${zmax} units lattice
|
||||
region atom_box block -10 10 -10 10 -10 10 units lattice
|
||||
create_atoms 1 region atom_box
|
||||
Created 16000 atoms
|
||||
using lattice units in orthogonal box = (-28.700000 -28.700000 -28.700000) to (28.700000 28.700000 28.700000)
|
||||
create_atoms CPU = 0.002 seconds
|
||||
|
||||
mass 1 55.845
|
||||
|
||||
include pot_iron.mod
|
||||
pair_style eam/fs
|
||||
pair_coeff * * FeVoter-ChenRecheck.fs Fe
|
||||
|
||||
neighbor 2.0 bin
|
||||
neigh_modify every 5 delay 0 check yes
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
fix twotemp all ttm/grid 342785 1.2470e-5 0.087614 0.005365 29.5917 47.5679 58.4613 10 10 10 infile grid_10x10x10 outfile 1000 tmp.grid.ttm.grid
|
||||
|
||||
compute pe all pe/atom
|
||||
compute ke all ke/atom
|
||||
|
||||
dump 1 all custom 1000 tmp.dump.ttm.grid id type x y z c_ke c_pe
|
||||
|
||||
timestep 0.0001
|
||||
thermo 100
|
||||
|
||||
thermo_style custom step temp etotal f_twotemp[1] f_twotemp[2]
|
||||
thermo_modify format float "%20.16g"
|
||||
|
||||
run 1000
|
||||
Neighbor list info ...
|
||||
update every 5 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.524
|
||||
ghost atom cutoff = 6.524
|
||||
binsize = 3.262, bins = 18 18 18
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/fs, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.557 | 6.557 | 6.557 Mbytes
|
||||
Step Temp TotEng f_twotemp[1] f_twotemp[2]
|
||||
0 0 -68483.52254530673 371.9188105082186 0
|
||||
100 16.95254977583874 -68446.65370077227 334.7807307441606 0.3600757576618061
|
||||
200 27.82076000591522 -68413.49962571842 301.669851827445 0.2923012030382476
|
||||
300 32.28064646099917 -68383.43127112807 271.6206308361861 0.2697897656149546
|
||||
400 33.32631162065878 -68356.76508047059 244.9939728689737 0.2059848798035755
|
||||
500 35.13985645761555 -68332.75838831626 220.9563145448483 0.2799090544324762
|
||||
600 39.58297841774112 -68311.05917212959 199.2875787815293 0.2309225167135089
|
||||
700 45.34109481744325 -68291.67926830769 179.9567392018701 0.1434664891770076
|
||||
800 49.66116134168287 -68275.00925057202 163.2824858034622 0.1598759550824539
|
||||
900 52.17137809502142 -68259.83087950756 148.1293852818859 0.1180130384138258
|
||||
1000 54.23445564107136 -68245.61817879431 133.9139611916063 0.1315530159773979
|
||||
Loop time of 4.77383 on 4 procs for 1000 steps with 16000 atoms
|
||||
|
||||
Performance: 1.810 ns/day, 13.261 hours/ns, 209.476 timesteps/s
|
||||
98.3% CPU use with 4 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.0601 | 4.1512 | 4.2622 | 4.0 | 86.96
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.16244 | 0.27412 | 0.36544 | 15.5 | 5.74
|
||||
Output | 0.0085038 | 0.0088961 | 0.0093065 | 0.3 | 0.19
|
||||
Modify | 0.31302 | 0.31333 | 0.31363 | 0.0 | 6.56
|
||||
Other | | 0.02623 | | | 0.55
|
||||
|
||||
Nlocal: 4000.00 ave 4000 max 4000 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6329.00 ave 6329 max 6329 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 224000.0 ave 227436 max 220450 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
|
||||
Total # of neighbors = 896000
|
||||
Ave neighs/atom = 56.000000
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
write_restart tmp.restart.ttm.grid
|
||||
System init for write_restart ...
|
||||
Total wall time: 0:00:04
|
||||
2
examples/ttm/pot_iron.mod
Normal file
2
examples/ttm/pot_iron.mod
Normal file
@ -0,0 +1,2 @@
|
||||
pair_style eam/fs
|
||||
pair_coeff * * FeVoter-ChenRecheck.fs Fe
|
||||
@ -78,11 +78,18 @@ FixTTM::FixTTM(LAMMPS *lmp, int narg, char **arg) :
|
||||
nygrid = utils::inumeric(FLERR,arg[11],false,lmp);
|
||||
nzgrid = utils::inumeric(FLERR,arg[12],false,lmp);
|
||||
|
||||
tinit = 0.0;
|
||||
infile = outfile = NULL;
|
||||
|
||||
int iarg = 13;
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg],"infile") == 0) {
|
||||
if (strcmp(arg[iarg],"set") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ttm command");
|
||||
tinit = utils::numeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (tinit <= 0.0)
|
||||
error->all(FLERR,"Fix ttm initial temperature must be > 0.0");
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"infile") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ttm command");
|
||||
int n = strlen(arg[iarg+1]) + 1;
|
||||
infile = new char[n];
|
||||
@ -183,9 +190,13 @@ void FixTTM::post_constructor()
|
||||
|
||||
allocate_grid();
|
||||
|
||||
// zero electron temperatures (default)
|
||||
// initialize electron temperatures on grid
|
||||
|
||||
memset(&T_electron[0][0][0],0,ngridtotal*sizeof(double));
|
||||
int ix,iy,iz;
|
||||
for (iz = 0; iz < nzgrid; iz++)
|
||||
for (iy = 0; iy < nygrid; iy++)
|
||||
for (ix = 0; ix < nxgrid; ix++)
|
||||
T_electron[iz][iy][ix] = tinit;
|
||||
|
||||
// zero net_energy_transfer_all
|
||||
// in case compute_vector accesses it on timestep 0
|
||||
|
||||
@ -55,7 +55,7 @@ class FixTTM : public Fix {
|
||||
int ngridtotal; // total size of global grid
|
||||
int deallocate_flag;
|
||||
int outflag,outevery;
|
||||
double shift;
|
||||
double shift,tinit;
|
||||
double e_energy,transfer_energy;
|
||||
char *infile,*outfile;
|
||||
|
||||
|
||||
@ -65,9 +65,13 @@ void FixTTMGrid::post_constructor()
|
||||
|
||||
allocate_grid();
|
||||
|
||||
// zero electron temperatures (default)
|
||||
// initialize electron temperatures on grid
|
||||
|
||||
memset(&T_electron[nzlo_out][nylo_out][nxlo_out],0,ngridout*sizeof(double));
|
||||
int ix,iy,iz;
|
||||
for (iz = nzlo_out; iz <= nzhi_out; iz++)
|
||||
for (iy = nylo_out; iy <= nyhi_out; iy++)
|
||||
for (ix = nxlo_out; ix <= nxhi_out; ix++)
|
||||
T_electron[iz][iy][ix] = tinit;
|
||||
|
||||
// zero net_energy_transfer
|
||||
// in case compute_vector accesses it on timestep 0
|
||||
|
||||
@ -100,11 +100,18 @@ FixTTMMod::FixTTMMod(LAMMPS *lmp, int narg, char **arg) :
|
||||
nynodes = utils::inumeric(FLERR,arg[6],false,lmp);
|
||||
nznodes = utils::inumeric(FLERR,arg[7],false,lmp);
|
||||
|
||||
double tinit = 0.0;
|
||||
infile = outfile = NULL;
|
||||
|
||||
int iarg = 8;
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg],"infile") == 0) {
|
||||
if (strcmp(arg[iarg],"set") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ttm/mod command");
|
||||
tinit = utils::numeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (tinit <= 0.0)
|
||||
error->all(FLERR,"Fix ttm/mod initial temperature must be > 0.0");
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"infile") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ttm/mod command");
|
||||
int n = strlen(arg[iarg+1]) + 1;
|
||||
infile = new char[n];
|
||||
@ -198,10 +205,16 @@ FixTTMMod::FixTTMMod(LAMMPS *lmp, int narg, char **arg) :
|
||||
atom->add_callback(Atom::GROW);
|
||||
atom->add_callback(Atom::RESTART);
|
||||
|
||||
// zero electron temperatures (default)
|
||||
// initialize electron temperatures on grid
|
||||
|
||||
int ix,iy,iz;
|
||||
for (ix = 0; ix < nxnodes; ix++)
|
||||
for (iy = 0; iy < nynodes; iy++)
|
||||
for (iz = 0; iz < nznodes; iz++)
|
||||
T_electron[ix][iy][iz] = tinit;
|
||||
|
||||
// if specified, read initial electron temperatures from file
|
||||
|
||||
memset(&T_electron[0][0][0],0,ngridtotal*sizeof(double));
|
||||
if (infile) {
|
||||
if (comm->me == 0) read_electron_temperatures(infile);
|
||||
MPI_Bcast(&T_electron[0][0][0],ngridtotal,MPI_DOUBLE,0,world);
|
||||
|
||||
Reference in New Issue
Block a user