lammps/doc/compute_heat_flux.txt

157 lines
5.2 KiB
Plaintext

"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute heat/flux command :h3
[Syntax:]
compute ID group-ID heat/flux pe-ID :pre
ID, group-ID are documented in "compute"_compute.html command
heat/flux = style name of this compute command
pe-ID = ID of a compute that calculates per-atom potential energy :ul
[Examples:]
compute myFlux all heat/flux myPE :pre
[Description:]
Define a computation that calculates the heat flux vector based on
interactions between atoms in the specified group. This can be used
by itself to measure the heat flux between a hot and cold reservoir of
particles or to calculate a thermal conductivity using the Green-Kubo
formalism.
See the "fix thermal/conductivity"_fix_thermal_conductivity.html
command for details on how to compute thermal conductivity in an
alternate way, via the Muller-Plathe method.
The compute takes a {pe-ID} argument which is the ID of a "compute
pe/atom"_compute_pe_atom.html that calculates per-atom potential
energy. Normally, it should be defined for the same group used by
compute heat/flux, though LAMMPS does not check for this.
The Green-Kubo formulas relate the ensemble average of the
auto-correlation of the heat flux J to the thermal conductivity kappa.
:c,image(Eqs/heat_flux_k.jpg)
:c,image(Eqs/heat_flux_J.jpg)
Ei is the per-atom energy (potential and kinetic). The potential
portion is calculated by the compute {pe-ID} specified as an argument
to the compute heat/flux command.
IMPORTANT NOTE: The per-atom potential energy calculated by the
{pe-ID} compute should only include pairwise energy, to be consistent
with the second virial-like term in the formula for J. Thus if any
bonds, angles, etc exist in the system, the compute should limit its
calculation to only the pair contribution. E.g. it could be defined
as follows. Note that if {pair} is not listed as the last argument,
it will be included by default, but so will other contributions such
as bond, angle, etc.
compute myPE all pe/atom pair :pre
The second term of the heat flux equation for J is calculated by
compute heat/flux for pairwise interactions for any I,J pair where one
of the 2 atoms in is the compute group. It can be output every so
many timesteps (e.g. via the thermo_style custom command). Then as
post-processing steps, an autocorrelation can be performed, its
integral estimated, and the Green-Kubo formula evaluated.
Here is an example of this procedure. First a LAMMPS input script for
solid Ar is appended below. A Python script
"correlate.py"_Scripts/correlate.py is also given, which calculates
the autocorrelation of the flux output in the logfile flux.log,
produced by the LAMMPS run. It is invoked as
correlate.py flux.log -c 3 -s 200 :pre
The resulting data lists the autocorrelation in column 1 and the
integral of the autocorrelation in column 2. The integral of the
correlation needs to be multiplied by V/(kB T^2) times the sample
interval and the appropriate unit conversion factors. For real
"units"_units.html in LAMMPS, this is 2917703220.0 in this case. The
final thermal conductivity value obtained is 0.25 W/mK.
The 6 components of the vector calculated by this compute are as
follows. The first 3 components are the x, y, z components of the
full heat flux. The next 3 components are the x, y, z components of
just the convective portion of the flux, which is the energy per atom
times the velocity of the atom.
[Output info:]
This compute calculates a global vector of length 6 (heat flux
vector), which can be accessed by indices 1-6. These values can be
used by any command that uses global vector values from a compute as
input. See "this section"_Section_howto.html#4_15 for an overview of
LAMMPS output options.
The vector values calculated by this compute are "extensive", meaning
they scale with the number of atoms in the simulation. They should be
divided by the appropriate volume to get a flux.
[Restrictions:]
Only pairwise interactions, as defined by the pair_style command, are
included in this calculation.
This compute requires you to use the "communicate vel
yes"_communicate.html option so that velocites are stored by ghost
atoms.
[Related commands:]
"fix thermal/conductivity"_fix_thermal_conductivity.html
[Default:] none
:line
Sample LAMMPS input script :h4
atom_style dpd
units real
dimension 3
boundary p p p
lattice fcc 5.376 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
region box block 0 4 0 4 0 4
create_box 1 box
create_atoms 1 box
mass 1 39.948
pair_style lj/cut 13.0
pair_coeff * * 0.2381 3.405
group every region box
velocity all create 70 102486 mom yes rot yes dist gaussian
timestep 4.0
thermo 10 :pre
# ------------- Equilibration and thermalisation ---------------- :pre
fix NPT all npt 70 70 10 xyz 0.0 0.0 100.0 drag 0.2
run 8000
unfix NPT :pre
# --------------- Equilibration in nve ----------------- :pre
fix NVE all nve
run 8000 :pre
# -------------- Flux calculation in nve --------------- :pre
reset_timestep 0
compute myPE all pe/atom pair
compute flux all heat/flux myPE
log flux.log
variable J equal c_flux\[1\]/vol
thermo_style custom step temp v_J
run 100000 :pre