allow for command-line setting of initial temp

This commit is contained in:
Steve Plimpton
2021-08-26 11:52:07 -06:00
parent beffa0d1a1
commit 7b3e7d3d3a
16 changed files with 5379 additions and 134 deletions

View File

@ -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
"""""""""""""""" """"""""""""""""

View File

@ -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.

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

42
examples/ttm/in.ttm Normal file
View 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
View 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

View 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

View 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

View 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

View 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

View File

@ -0,0 +1,2 @@
pair_style eam/fs
pair_coeff * * FeVoter-ChenRecheck.fs Fe

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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);