# Parameters for calculating photocurrent

Parameters here are for calculating the photocurrent.

## calculation.photocurrent.photonPolarizationBasis

keyword: calculation.photocurrent.photonPolarizationBasis

possible values: 3 x 2 double array

default value: no default value

description: Two orthogonal real space direction vectors e1 and e2, which are used as basis to characterize the polarization of the photon. The photon propagation direction is given by e1 x e2, and the photon polarization direction is given by [cos(theta)cos(phi)-i*sin(theta)sin(phi)]e1 +[sin(theta)cos(phi)+i*cos(theta)sin(phi)]e2, where the polarization angles theta and phi are given by the input parameters photonPolarizationAngleTheta and photonPolarizationAnglePhi.

Note 1: The lengths of the two vectors are meaningless, and they will be normalized by nanodcal.

Note 2: The value of this input must be real; the difference in phase and amplitude between oscillations of the field along the two orthogonal directions is defined through the input parameters photonPolarizationAngleTheta and photonPolarizationAnglePhi.

Note 3: The photon polarization, given as [cos(theta)cos(phi)-i*sin(theta)sin(phi)]e1 +[sin(theta)cos(phi)+i*cos(theta)sin(phi)]e2, can be understood as a general elliptical polarization, and the two axes of the ellipse, called e1’ and e2’ here, are given as e1 and e2 with a theta angle of counterclockwise rotation, the amplitudes, including phases, of the oscillations along e1’ and e2’ are given as cos(phi) and i*sin(phi).

an example:

```calculation.photocurrent.photonPolarizationBasis = ...
[1 0 0; 0 1 0]'
```

## calculation.photocurrent.photonPolarizationAngleTheta

keyword: calculation.photocurrent.photonPolarizationAngleTheta

possible values: 1 x n double array

default value: no default value

description: A angle used to characterize the photon polarization. See the description of photonPolarizationBasis for more information. It is in the unit of degree.

an example:

```calculation.photocurrent.photonPolarizationAngleTheta ...
= 0:15:360
```

## calculation.photocurrent.photonPolarizationAnglePhi

keyword: calculation.photocurrent.photonPolarizationAnglePhi

possible values: 1 x n double array

default value: no default value

description: A angle used to characterize the photon polarization. See the description of photonPolarizationBasis for more information. It is in the unit of degree.

an example:

```calculation.photocurrent.photonPolarizationAnglePhi ...
= 0:15:180
```

## calculation.photocurrent.photonEnergyRange

keyword: calculation.photocurrent.photonEnergyRange

possible values: an 1 x 2 double array

default value: [0.5,1.5]

description: Photocurrent is dependent on photon energy. This parameter defines a photon energy range [E1,E2], and the photocurrent curve over the range will be calculated. Normally, E1<E2, but if E1=E2, the photocurrent is only calculated at a photon energy point of E2. The unit is eV. Note: the E1 could be adjusted a little bit by nanodcal.

an example:

```calculation.photocurrent.photonEnergyRange = [0.1 2.1]
```

## calculation.photocurrent.photonEnergyInterval

keyword: calculation.photocurrent.photonEnergyInterval

possible values: a double number

default value: 50 meV

description: Energy interval used to determine the photon energy points, and at each photon energy point the corresponding photocurrent will be calculated. The unit is eV. Note: it could be adjusted a little bit by nanodcal.

an example:

```calculation.photocurrent.photonEnergyInterval = 25e-3
```

possible values: integer array

default value: all atoms in the central cell

description: Index of those atoms which are irradiated by the light.

an example:

```calculation.photocurrent.irradiatedAtoms = 41:60
```

## calculation.photocurrent.energyInterval

keyword: calculation.photocurrent.energyInterval

possible values: a double number

default value: 10 meV

description: Energy interval between the energy points that are used in the energy space integration. The unit is eV. Note: it could be adjusted a little bit by nanodcal.

an example:

```calculation.photocurrent.energyInterval = 5e-3
```

## calculation.photocurrent.temperature

keyword: calculation.photocurrent.temperature

possible values: a double value

default value: the value used in the calculation of the self-consistent Hamiltonian.

description: temperature used in the Fermi function when calculating the photocurrent, in unit of Kelvin. Note: the Boltzmann constant k = 8.617342e-05(eV/K) = 3.1668151e-06 (Hartree/K).

an example:

```calculation.photocurrent.temperature = 300
```

## calculation.photocurrent.kSpaceGridNumber

keyword: calculation.photocurrent.kSpaceGridNumber

possible values: 3 x 1 integer array

default value: the value of calculation.k_spacegrids.number which was used in the Hamiltonian calculation.

description: number of small k-space grids in each direction which, together with kSpaceGridShift, are used to produce the parameter kSpacePoints.

an example:

```calculation.photocurrent.kSpaceGridNumber = [10 10 10]'
```

## calculation.photocurrent.kSpaceGridShift

keyword: calculation.photocurrent.kSpaceGridShift

possible values: 3 x 1 or 1 x 3 array, [s_1, s_2, s_3], with each s_i a double number between 0 and 1.

default value: if the photocurrent.kSpaceGridNumber is given, the default value is [0 0 0], otherwise the default value is the value of calculation.k_spacegrids.shift which was used in the Hamiltonian calculation.

description: k-space grid point shift. While all s_i are set to be 0, the Gamma point is always among the k-space grid points being generated; otherwise, the k-space grid points will be shifted s_1, s_2, and s_3 grid lengths along their grid vector directions, respectively.

an example:

```calculation.photocurrent.kSpaceGridShift = [1/2 1/2 1/2]'
```

## calculation.photocurrent.kSpacePoints

keyword: calculation.photocurrent.kSpacePoints

possible values: 3 x n double array

default value: defined in the k-point file if the file is given by the parameter photocurrent.kPointFile, or produced by the parameters photocurrent.kSpaceGridNumber and photocurrent.kSpaceGridShift.

description: the fractional coordinates of n transverse wavevectors which are used in the k-space integration.

an example:

```calculation.photocurrent.kSpacePoints = [0 0 0]'
```

## calculation.photocurrent.kPointWeights

keyword: calculation.photocurrent.kPointWeights

possible values: 1 x n double array

default value: defined in the k-point file if the corresponding parameter photocurrent.kSpacePoints is using the k-values in the same file. Otherwise, equally weighted.

description: the weights of the k-space points in the k-space integration.

an example:

```calculation.photocurrent.kPointWeights = [1/2 1/3 1/6]
```

## calculation.photocurrent.kPointFile

keyword: calculation.photocurrent.kPointFile

possible values: a file name

default value: no default value

description: the name of a file which contains the coordinates of k-space points and their corresponding weights.

A k-point file with n k-points has (n+1) lines: one line of headers and n lines of values of the n k-points. The headers are:

number : sequential number of the k-point k1, k2, k3 : fractional coordinates of the k-point divisor : used to modify k1, k2, and k3 so that the real fractional coordinates are k1/divisor, k2/divisor, k3/divisor weight : relative weights of the k-points for the k-space integration. Normalized so that sum(weight) = 1.

where the headers number, divisor, and weight are optional. The following is an example of the file.

number k1 k2 k3 divisor weight 1 0 0 0 7 1.0 2 0 1 0 7 2.0 3 0 2 0 7 2.0 4 0 3 0 7 2.0 5 1 0 0 7 2.0 6 1 1 0 7 4.0 7 1 2 0 7 4.0 8 1 3 0 7 4.0 9 2 0 0 7 2.0 10 2 1 0 7 4.0 11 2 2 0 7 4.0 12 2 3 0 7 4.0 13 3 0 0 7 2.0 14 3 1 0 7 4.0 15 3 2 0 7 4.0 16 3 3 0 7 4.0

an example:

```calculation.photocurrent.kPointFile = 'k-points.dat'
```

## calculation.photocurrent.etaSigma

keyword: calculation.photocurrent.etaSigma

possible values: a small double number

default value: 1e-6 Hartree

description: the small eta used in the calculation of lead self-energy.

an example:

```calculation.photocurrent.etaSigma = 1e-4
```

## calculation.photocurrent.etaGF

keyword: calculation.photocurrent.etaGF

possible values: a small double number

default value: 0

description: the small eta used in the calculation of Green’s function.

an example:

```calculation.photocurrent.etaGF = 1e-4
```

## calculation.photocurrent.eta

keyword: calculation.photocurrent.eta

possible values: a small double number

default value: no default value

description: the small eta used in the calculation of self-energy and/or Green’s function. This parameter is only used when the parameter photocurrent.etaSigma and/or photocurrent.etaGF is not given.

an example:

```calculation.photocurrent.eta = 1e-4
```

## calculation.photocurrent.partitionScheme

keyword: calculation.photocurrent.partitionScheme

possible values: cells of cells of lists of integers

default value: determined by nanodcal

description: Atoms in the system are divided into small groups so that atoms in each group interact only with atoms in the next group. This parameter gives the atom index of each of the atom groups.

All atoms in a lead should be put in a same group. All irradiated atoms should also be considered as in a same group but they do not appear in the lists of atom.

partitionScheme{ii}{1} gives atoms of the ii’th lead; partitionScheme{ii}{2} gives atoms of the group which is adjacent to partitionScheme{ii}{1}, …, and finally partitionScheme{ii}{end} gives atoms of the group which is adjacent to the group of the irradiated atoms.

an example:

```calculation.photocurrent.partitionScheme = ...
{{1:10,11:20,21:30,31:40}, ...
{91:100,81:90,71:80,61:70}}
```

## calculation.photocurrent.plot

keyword: calculation.photocurrent.plot

possible values: true or false

default value: false

description: If true, a plot will be given after the calculation.

an example:

```calculation.photocurrent.plot = true
```

## calculation.photocurrent.saveMemory

keyword: calculation.photocurrent.saveMemory

possible values: true or false

default value: false

description: If true, some temporary data will be saved on disk to save memory.

an example:

```calculation.photocurrent.saveMemory = true
```