`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 method`0`

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 for`group_id`

0 defined in grouping method`1`

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.