allow for command-line setting of initial temp
This commit is contained in:
@ -4,6 +4,9 @@
|
|||||||
fix ttm command
|
fix ttm command
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
fix ttm/grid command
|
||||||
|
===============
|
||||||
|
|
||||||
fix ttm/mod command
|
fix ttm/mod command
|
||||||
===================
|
===================
|
||||||
|
|
||||||
@ -12,13 +15,13 @@ Syntax
|
|||||||
|
|
||||||
.. parsed-literal::
|
.. 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 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 T_infile N T_outfile
|
fix ID group-ID ttm/mod seed init_file Nx Ny Nz keyword value ...
|
||||||
|
|
||||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
* 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)
|
* 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::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -31,9 +34,6 @@ Syntax
|
|||||||
Nx = number of thermal solve grid points in the x-direction (positive integer)
|
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)
|
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)
|
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:
|
* remaining arguments for fix ttm/mod:
|
||||||
|
|
||||||
@ -43,18 +43,29 @@ Syntax
|
|||||||
Nx = number of thermal solve grid points in the x-direction (positive integer)
|
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)
|
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)
|
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
|
* zero or more keyword/value(s) pairs may be appended
|
||||||
T_outfile = filename to write TTM temperatures to (only needed if N > 0)
|
* 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
|
Examples
|
||||||
""""""""
|
""""""""
|
||||||
|
|
||||||
.. code-block:: LAMMPS
|
.. 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 699489 1.0 1.0 10 0.1 0.0 2.0 1 12 1 infile initial outfile 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 3 all ttm/grid 123456 1.0 1.0 1.0 1.0 1.0 5.0 5 5 5 infile Te.in
|
||||||
fix 2 all ttm/mod 34277 parameters.txt 5 5 5 T_init 10 T_out
|
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
|
Description
|
||||||
"""""""""""
|
"""""""""""
|
||||||
@ -62,36 +73,48 @@ Description
|
|||||||
Use a two-temperature model (TTM) to represent heat transfer through
|
Use a two-temperature model (TTM) to represent heat transfer through
|
||||||
and between electronic and atomic subsystems. LAMMPS models the
|
and between electronic and atomic subsystems. LAMMPS models the
|
||||||
atomic subsystem as usual with a molecular dynamics model and the
|
atomic subsystem as usual with a molecular dynamics model and the
|
||||||
classical force field specified by the user, but the electronic
|
classical force field specified by the user. The electronic subsystem
|
||||||
subsystem is modeled as a continuum, or a background "gas", on a
|
is modeled as a continuum, or a background "gas", on a regular grid
|
||||||
regular grid. Energy can be transferred spatially within the grid
|
which overlays the simulation domain. Energy can be transferred
|
||||||
representing the electrons. Energy can also be transferred between
|
spatially within the grid representing the electrons. Energy can also
|
||||||
the electronic and the atomic subsystems. The algorithm underlying
|
be transferred between the electronic and atomic subsystems. The
|
||||||
this fix was derived by D. M. Duffy and A. M. Rutherford and is
|
algorithm underlying this fix was derived by D. M. Duffy
|
||||||
discussed in two J Physics: Condensed Matter papers: :ref:`(Duffy) <Duffy>`
|
and A. M. Rutherford and is discussed in two J Physics: Condensed
|
||||||
and :ref:`(Rutherford) <Rutherford>`. They used this algorithm in cascade
|
Matter papers: :ref:`(Duffy) <Duffy>` and :ref:`(Rutherford)
|
||||||
simulations where a primary knock-on atom (PKA) was initialized with a
|
<Rutherford>`. They used this algorithm in cascade simulations where
|
||||||
high velocity to simulate a radiation event.
|
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
|
The description in this sub-section applies to all 3 of the fixes: fix
|
||||||
ttm/mod. Fix ttm/mod adds options to account for external heat
|
ttm, fix ttm/grid, and fix ttm/mod.
|
||||||
sources (e.g. at a surface) and for specifying parameters that allow
|
|
||||||
the electronic heat capacity to depend strongly on electronic
|
Fix ttm/grid distributes the regular grid across processors consistent
|
||||||
temperature. It is more expensive computationally than fix ttm
|
with the subdomains of atoms owned by each processor, but is otherwise
|
||||||
because it treats the thermal diffusion equation as non-linear. More
|
identical to fix ttm. Note that fix ttm stores a copy of the grid on
|
||||||
details on fix ttm/mod are given below.
|
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
|
Heat transfer between the electronic and atomic subsystems is carried
|
||||||
out via an inhomogeneous Langevin thermostat. This thermostat differs
|
out via an inhomogeneous Langevin thermostat. Only atoms in the fix
|
||||||
from the regular Langevin thermostat (:doc:`fix langevin <fix_langevin>`) in three important ways. First, the
|
group contribute to and are affected by this heat transfer.
|
||||||
Langevin thermostat is applied uniformly to all atoms in the
|
|
||||||
|
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
|
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
|
volumes represented by the user-specified grid points with a target
|
||||||
temperature specific to that grid point. Second, the Langevin
|
temperature specific to that grid point. Second, the Langevin
|
||||||
thermostat couples the temperature of the atoms to an infinite heat
|
thermostat couples the temperature of the atoms to an infinite heat
|
||||||
reservoir, whereas the heat reservoir for fix TTM is finite and
|
reservoir, whereas the heat reservoir for the TTM fixes is finite and
|
||||||
represents the local electrons. Third, the TTM fix allows users to
|
represents the local electrons. Third, the TTM fixes allow users to
|
||||||
specify not just one friction coefficient, but rather two independent
|
specify not just one friction coefficient, but rather two independent
|
||||||
friction coefficients: one for the electron-ion interactions
|
friction coefficients: one for the electron-ion interactions
|
||||||
(*gamma_p*), and one for electron stopping (*gamma_s*).
|
(*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
|
electronic density is explicitly represented, rather than being part
|
||||||
of the specific heat parameter.
|
of the specific heat parameter.
|
||||||
|
|
||||||
Currently, fix ttm assumes that none of the user-supplied parameters
|
Currently, the TTM fixes assume that none of the user-supplied
|
||||||
will vary with temperature. Note that :ref:`(Duffy) <Duffy>` used a tanh()
|
parameters will vary with temperature. Note that :ref:`(Duffy)
|
||||||
functional form for the temperature dependence of the electronic
|
<Duffy>` used a tanh() functional form for the temperature dependence
|
||||||
specific heat, but ignored temperature dependencies of any of the
|
of the electronic specific heat, but ignored temperature dependencies
|
||||||
other parameters. See more discussion below for fix ttm/mod.
|
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
|
..note::
|
||||||
simulation. Periodic boundary conditions are also used in the heat
|
|
||||||
equation solve for the electronic subsystem. This varies from the
|
These fixes do not perform time integration of the atoms in the fix
|
||||||
approach of :ref:`(Rutherford) <Rutherford>` where the atomic subsystem was
|
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
|
embedded within a larger continuum representation of the electronic
|
||||||
subsystem.
|
subsystem.
|
||||||
|
|
||||||
The initial electronic temperature input file, *T_infile*, is a text
|
The *set* keyword specifies a *Tinit* temperature value to initialize
|
||||||
file LAMMPS reads in with no header and with four numeric columns
|
the value stored on all grid points.
|
||||||
(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
|
The *infile* keyword specifies an input file of electronic
|
||||||
indices from 0 to nxnodes-1, etc. For example, the initial electronic
|
temperatures for each grid point to be read in to initialize the grid.
|
||||||
temperatures on a 1 by 2 by 3 grid could be specified in a *T_infile*
|
By default the temperatures are all zero when the grid is created.
|
||||||
as follows:
|
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::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -155,34 +206,27 @@ as follows:
|
|||||||
|
|
||||||
where the electronic temperatures along the y=0 plane have been set to
|
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
|
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
|
to 2.0. If all the grid point values are not specified, LAMMPS will
|
||||||
nodal values are not specified, LAMMPS will generate an error.
|
generate an error.
|
||||||
|
|
||||||
The temperature output file, *T_oufile*, is created and written by
|
..note::
|
||||||
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
|
The electronic temperature at each grid point must be a non-zero
|
||||||
scales their velocities. Thus a time integration fix (e.g. :doc:`fix nve <fix_nve>`) should still be used to time integrate the affected
|
positive value, both initially, and as the temperature evovles over
|
||||||
atoms. The fixes should not normally be used on atoms that have their
|
time. Thus you must use either the *set* or *infile* keyword or be
|
||||||
temperature controlled by another fix - e.g. :doc:`fix nvt <fix_nh>` or
|
restarting a simulation that used this fix previously.
|
||||||
:doc:`fix langevin <fix_langevin>`.
|
|
||||||
|
|
||||||
.. note::
|
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.
|
||||||
|
|
||||||
The current implementations of these fixes create a copy of the
|
Note that the atomic temperature for atoms in each grid cell can also
|
||||||
electron grid that overlays the entire simulation domain, for each
|
be computed and output by the :doc:`fix ave/chunk <fix_ave_chunk>`
|
||||||
processor. Values on the grid are summed across all processors. Thus
|
command using the :doc:`compute chunk/atom <compute_chunk_atom>`
|
||||||
you should insure that this grid is not too large, else your
|
command to create a 3d array of chunks consistent with the grid used
|
||||||
simulation could incur high memory and communication costs.
|
by this fix.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
@ -222,7 +266,8 @@ acting on an ion is:
|
|||||||
|
|
||||||
.. math::
|
.. 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
|
where F_langevin is a force from Langevin thermostat simulating
|
||||||
electron-phonon coupling, and nabla P_e/n_ion is the electron blast
|
electron-phonon coupling, and nabla P_e/n_ion is the electron blast
|
||||||
@ -246,7 +291,9 @@ is calculated as
|
|||||||
|
|
||||||
.. math::
|
.. 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>`,
|
where lambda is the electron mean free path (see :ref:`(Norman) <Norman>`,
|
||||||
:ref:`(Pisarev) <Pisarev>`)
|
: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
|
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
|
exchange between the subsystems to :doc:`binary restart files
|
||||||
for info on how to re-specify a fix in an input script that reads a
|
<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
|
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
|
Because the state of the random number generator is not saved in the
|
||||||
restart files, this means you cannot do "exact" restarts with this
|
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
|
taken place. However, in a statistical sense, a restarted simulation
|
||||||
should produce the same behavior.
|
should produce the same behavior.
|
||||||
|
|
||||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to these
|
None of the :doc:`fix_modify <fix_modify>` options are relevant to
|
||||||
fixes.
|
these fixes.
|
||||||
|
|
||||||
Both fixes compute 2 output quantities stored in a vector of length 2,
|
These fixes compute 2 output quantities stored in a vector of length
|
||||||
which can be accessed by various :doc:`output commands <Howto_output>`.
|
2, which can be accessed by various :doc:`output commands
|
||||||
The first quantity is the total energy of the electronic
|
<Howto_output>`. The first quantity is the total energy of the
|
||||||
subsystem. The second quantity is the energy transferred from the
|
electronic subsystem. The second quantity is the energy transferred
|
||||||
electronic to the atomic subsystem on that timestep. Note that the
|
from the electronic to the atomic subsystem on that timestep. Note
|
||||||
velocity verlet integrator applies the fix ttm forces to the atomic
|
that the velocity verlet integrator applies the fix ttm forces to the
|
||||||
subsystem as two half-step velocity updates: one on the current
|
atomic subsystem as two half-step velocity updates: one on the current
|
||||||
timestep and one on the subsequent timestep. Consequently, the change
|
timestep and one on the subsequent timestep. Consequently, the change
|
||||||
in the atomic subsystem energy is lagged by half a timestep relative
|
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,
|
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
|
Restrictions
|
||||||
""""""""""""
|
""""""""""""
|
||||||
|
|
||||||
Fix *ttm* and *ttm/mod* are part of the EXTRA-FIX package. They are
|
All these fixes are part of the EXTRA-FIX package. They are only
|
||||||
only enabled if LAMMPS was built with that package.
|
enabled if LAMMPS was built with that package. See the :doc:`Build
|
||||||
See the :doc:`Build package <Build_package>` page for more info.
|
package <Build_package>` page for more info.
|
||||||
|
|
||||||
These fixes can only be used for 3d simulations and orthogonal
|
As mentioned above, these fixes require 3d simulations and orthogonal
|
||||||
simulation boxes. You must also use periodic
|
simulation boxes periodic in all 3 dimensions.
|
||||||
:doc:`boundary <boundary>` conditions.
|
|
||||||
|
|
||||||
Related commands
|
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
|
uses the :doc:`run <run>` command. There are a few exceptions and
|
||||||
points to consider, as discussed here.
|
points to consider, as discussed here.
|
||||||
|
|
||||||
Fixes that perform time integration, such as :doc:`fix nve <fix_nve>` or
|
Fixes that perform time integration, such as :doc:`fix nve <fix_nve>`
|
||||||
:doc:`fix npt <fix_nh>` are not invoked, since no time integration is
|
or :doc:`fix npt <fix_nh>` are not invoked, since no time integration
|
||||||
performed. Fixes that perturb or constrain the forces on atoms will
|
is performed. Fixes that perturb or constrain the forces on atoms
|
||||||
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
|
will be invoked, just as they would during a normal run. Examples are
|
||||||
should think carefully as to whether that makes sense for the manner
|
:doc:`fix indent <fix_indent>` and :doc:`fix langevin <fix_langevin>`.
|
||||||
in which you are reprocessing the dump snapshots.
|
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
|
If you only want the rerun script to perform an analysis that does not
|
||||||
not involve pair interactions, such as use compute msd to calculated
|
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
|
displacements over time, you do not need to define a :doc:`pair style
|
||||||
need to be calculated which saves time. The :doc:`comm_modify cutoff <comm_modify>` command can also be used to insure ghost
|
<pair_style>`, which may also mean neighbor lists will not need to be
|
||||||
atoms are acquired from far enough away for operations like bond and
|
calculated which saves time. The :doc:`comm_modify cutoff
|
||||||
angle evaluations, if no pair style is being used.
|
<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
|
Every time a snapshot is read, the timestep for the simulation is
|
||||||
reset, as if the :doc:`reset_timestep <reset_timestep>` command were
|
reset, as if the :doc:`reset_timestep <reset_timestep>` command were
|
||||||
used. This command has some restrictions as to what fixes can be
|
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
|
are in this category. They also make no sense to use with a rerun
|
||||||
command.
|
command.
|
||||||
|
|
||||||
|
|||||||
@ -92,25 +92,25 @@ velocity field.
|
|||||||
The *scale* style computes the current temperature of the group of
|
The *scale* style computes the current temperature of the group of
|
||||||
atoms and then rescales the velocities to the specified temperature.
|
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
|
The *ramp* style is similar to that used by the :doc:`compute
|
||||||
uniformly from vlo to vhi are applied to dimension vx, or vy, or vz.
|
temp/ramp <compute_temp_ramp>` command. Velocities ramped uniformly
|
||||||
The value assigned to a particular atom depends on its relative
|
from vlo to vhi are applied to dimension vx, or vy, or vz. The value
|
||||||
coordinate value (in dim) from clo to chi. For the example above, an
|
assigned to a particular atom depends on its relative coordinate value
|
||||||
atom with y-coordinate of 10 (1/4 of the way from 5 to 25), would be
|
(in dim) from clo to chi. For the example above, an atom with
|
||||||
assigned a x-velocity of 1.25 (1/4 of the way from 0.0 to 5.0). Atoms
|
y-coordinate of 10 (1/4 of the way from 5 to 25), would be assigned a
|
||||||
outside the coordinate bounds (less than 5 or greater than 25 in this
|
x-velocity of 1.25 (1/4 of the way from 0.0 to 5.0). Atoms outside
|
||||||
case), are assigned velocities equal to vlo or vhi (0.0 or 5.0 in this
|
the coordinate bounds (less than 5 or greater than 25 in this case),
|
||||||
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 *zero* style adjusts the velocities of the group of atoms so that
|
||||||
the aggregate linear or angular momentum is zero. No other changes
|
the aggregate linear or angular momentum is zero. No other changes
|
||||||
are made to the velocities of the atoms. If the *rigid* option is
|
are made to the velocities of the atoms. If the *rigid* option is
|
||||||
specified (see below), then the zeroing is performed on individual
|
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
|
rigid bodies, as defined by the :doc:`fix rigid or fix rigid/small
|
||||||
will set the linear momentum of each rigid body to zero, and zero
|
<fix_rigid>` commands. In other words, zero linear will set the
|
||||||
angular will set the angular momentum of each rigid body to zero.
|
linear momentum of each rigid body to zero, and zero angular will set
|
||||||
This is done by adjusting the velocities of the atoms in each rigid
|
the angular momentum of each rigid body to zero. This is done by
|
||||||
body.
|
adjusting the velocities of the atoms in each rigid body.
|
||||||
|
|
||||||
All temperatures specified in the velocity command are in temperature
|
All temperatures specified in the velocity command are in temperature
|
||||||
units; see the :doc:`units <units>` command. The units of velocities and
|
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
|
template: examples for using atom_style template and comparing to atom style molecular
|
||||||
tersoff: regression test input for Tersoff variants
|
tersoff: regression test input for Tersoff variants
|
||||||
threebody: regression test input for a variety of threebody potentials
|
threebody: regression test input for a variety of threebody potentials
|
||||||
|
ttm: two-temeperature model examples
|
||||||
vashishta: models using the Vashishta potential
|
vashishta: models using the Vashishta potential
|
||||||
voronoi: Voronoi tesselation via compute voronoi/atom command
|
voronoi: Voronoi tesselation via compute voronoi/atom command
|
||||||
wall: use of reflective walls with different stochastic models
|
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
|
||||||
@ -77,12 +77,19 @@ FixTTM::FixTTM(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
nxgrid = utils::inumeric(FLERR,arg[10],false,lmp);
|
nxgrid = utils::inumeric(FLERR,arg[10],false,lmp);
|
||||||
nygrid = utils::inumeric(FLERR,arg[11],false,lmp);
|
nygrid = utils::inumeric(FLERR,arg[11],false,lmp);
|
||||||
nzgrid = utils::inumeric(FLERR,arg[12],false,lmp);
|
nzgrid = utils::inumeric(FLERR,arg[12],false,lmp);
|
||||||
|
|
||||||
|
tinit = 0.0;
|
||||||
infile = outfile = NULL;
|
infile = outfile = NULL;
|
||||||
|
|
||||||
int iarg = 13;
|
int iarg = 13;
|
||||||
while (iarg < narg) {
|
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");
|
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ttm command");
|
||||||
int n = strlen(arg[iarg+1]) + 1;
|
int n = strlen(arg[iarg+1]) + 1;
|
||||||
infile = new char[n];
|
infile = new char[n];
|
||||||
@ -183,9 +190,13 @@ void FixTTM::post_constructor()
|
|||||||
|
|
||||||
allocate_grid();
|
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
|
// zero net_energy_transfer_all
|
||||||
// in case compute_vector accesses it on timestep 0
|
// 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 ngridtotal; // total size of global grid
|
||||||
int deallocate_flag;
|
int deallocate_flag;
|
||||||
int outflag,outevery;
|
int outflag,outevery;
|
||||||
double shift;
|
double shift,tinit;
|
||||||
double e_energy,transfer_energy;
|
double e_energy,transfer_energy;
|
||||||
char *infile,*outfile;
|
char *infile,*outfile;
|
||||||
|
|
||||||
|
|||||||
@ -65,9 +65,13 @@ void FixTTMGrid::post_constructor()
|
|||||||
|
|
||||||
allocate_grid();
|
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
|
// zero net_energy_transfer
|
||||||
// in case compute_vector accesses it on timestep 0
|
// 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);
|
nynodes = utils::inumeric(FLERR,arg[6],false,lmp);
|
||||||
nznodes = utils::inumeric(FLERR,arg[7],false,lmp);
|
nznodes = utils::inumeric(FLERR,arg[7],false,lmp);
|
||||||
|
|
||||||
|
double tinit = 0.0;
|
||||||
infile = outfile = NULL;
|
infile = outfile = NULL;
|
||||||
|
|
||||||
int iarg = 8;
|
int iarg = 8;
|
||||||
while (iarg < narg) {
|
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");
|
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ttm/mod command");
|
||||||
int n = strlen(arg[iarg+1]) + 1;
|
int n = strlen(arg[iarg+1]) + 1;
|
||||||
infile = new char[n];
|
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::GROW);
|
||||||
atom->add_callback(Atom::RESTART);
|
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
|
// if specified, read initial electron temperatures from file
|
||||||
|
|
||||||
memset(&T_electron[0][0][0],0,ngridtotal*sizeof(double));
|
|
||||||
if (infile) {
|
if (infile) {
|
||||||
if (comm->me == 0) read_electron_temperatures(infile);
|
if (comm->me == 0) read_electron_temperatures(infile);
|
||||||
MPI_Bcast(&T_electron[0][0][0],ngridtotal,MPI_DOUBLE,0,world);
|
MPI_Bcast(&T_electron[0][0][0],ngridtotal,MPI_DOUBLE,0,world);
|
||||||
|
|||||||
Reference in New Issue
Block a user