compute_shc
The compute_shc
keyword is used to compute the non-equilibrium virial-velocity correlation function \(K(t)\) and the spectral heat current (SHC) \(J_q(\omega)\), in a given direction, for a group of atoms, as defined in Eq. (18) and the left part of Eq. (20) of [Fan2019].
The results are written to the shc.out output file.
Syntax
compute_shc <sample_interval> <Nc> <transport_direction> <num_omega> <max_omega> [{<optional_arg>}]
sample_interval
is the sampling interval (number of steps) between two correlation steps.
This parameter must be an integer that is \(\geq 1\) and \(\leq 10\).
Nc
is the total number of correlation steps.
This parameter must be an integer that is \(\geq 100\) and \(\leq 1000\).
transport_direction
is the direction of heat transport to be measured.
It can only be 0, 1, and 2, corresponding to the \(x\), \(y\), and \(z\) directions, respectively.
num_omega
is the number of frequency points one wants to consider.
max_omega
is the maximum angular frequency (in units of THz) one wants to consider.
The angular frequency data will be max_omega/num_omega, 2*max_omega/num_omega, ..., max_omega
.
<optional_arg>
can only be group
, which requires two parameters:
group <grouping_method> <group_id>
This means that \(K(t)\) will be calculated for atoms in group group_id
of grouping method grouping_method
.
Usually, group_id
should be \(\geq 0\) and smaller than the number of groups in grouping method grouping_method
.
If grouping_method
is assigned and group_id
is -1, it means to calculate the \(K(t)\) for every group_id
except for group_id
0 in the assigned grouping_method
.
Since it is very time and memory consuming to calculate the all group \(K(t)\) for a large system, so one can assign the part that don’t want to calculate to group_id
0.
Also, grouping method grouping_method
must be defined in the simulation model input file.
If this option is missing, it means computing \(K(t)\) for the whole system.
Examples
Example 1
The command:
compute_shc 2 250 0 1000 400.0
means that
you want to calculate \(K(t)\) for the whole system
the sampling interval is 2
the maximum number of correlation steps is 250
the transport direction is \(x\)
you want to consider 1000 frequency points
the maximum angular frequency is 400 THz
Example 2
The command:
compute_shc 1 500 1 500 200.0 group 0 4
means that
you want to calculate \(K(t)\) for atoms in group
4
defined in grouping method0
the sampling interval is 1 (sample the data at each time step)
the maximum number of correlation steps is 500
the transport direction is \(y\)
you want to consider 500 frequency points
the maximum angular frequency is 200 THz
Example 3
The command:
compute_shc 1 500 1 500 200.0 group 1 -1
means that
you want to calculate \(K(t)\) for all
group_id
except forgroup_id
0 defined in grouping method1
the sampling interval is 1 (sample the data at each time step)
the maximum number of correlation steps is 500
the transport direction is \(y\)
you want to consider 500 frequency points
the maximum angular frequency is 200 THz
Caveats
This computation can be memory consuming.
If you want to use the in-out decomposition for 2D materials, you need to make the basal plane in the \(xy\) directions.