# 10.7. The Raman spectrum and non-linear optical susceptibility

Within DFPT framework, 3rd order non-linear response functions can be calculated from the 1st order perturbation wavefunctions using “2n+1” theorem [VGG05, BGCG01]. In this section, we present how to compute the non-linear optical susceptibility and the Raman tensor based on “2n+1” theorem. The former is related to 3rd order derivatives of total energy with respect to three electric field directions, and the latter is calculated from 3rd order derivatives of total energy with respect to two atomic displacements and an electric field direction. By combining this two non-linear response functions we can compute the Raman susceptibilities including the non-analytical correction due to LO-TO effect. At last, these susceptibilities are used to generate the Raman intensities and spectra.

Note

Raman related properties are only well-defined for non-metallic systems.

RESCU currently requires three types of wavefunctions to perform a raman calculations:

Unperturbed wavefunctions which are computed and stored at Preparing the ground state data

Perturbed wavefunctions with respect to electric field perturbation. Although the response of the system to electric field perturbation is calculated in Ion-clamped dielectric tensor, saving the perturbed wavefunctions was left as an option

Perturbed wavefunctions with respect to atomic displacements. Although the response of the system to atomic displacements is calculated in Dynamical matrix and Born effective charges, saving the perturbed wavefunctions was left as an option

In addition, currently RESCU only support time-reversal symmetry for calculating the perturbed wavefunctions and self-consistent potentials. Therefor, to prepare the input data for a Raman calculation, it is necessary to run Ion-clamped dielectric tensor and Dynamical matrix and Born effective charges examples with following modifications to the input files:

```
option.saveWavefunction = 1
symmetry.timereversal = 1
symmetry.spacesymmetry = 0
symmetry.pointsymmetry = 0
```

Warning

Saving unperturbed as well as perturbed wavefunctions may require a large disk space.

The Raman spectroscopy depends on following properties of the used light, which are determined as the input of calculations:

Direction of incoming photon which is set by either

`dfpt.qpointKdirect`

in direct coordinates or by`dfpt.qpointCartesian`

in cartesian coordinates.Polarization of incoming photon that is determined by

`dfpt.ramanIncPhotonPol`

Polarization of outgoing photon that is determined by

`dfpt.ramanOutPhotonPol`

RESCU assumes that measurement is performed with a 90 degree setup regarding the direction of outgoing photon [PWLM]. Therefore, these keywords work together to define the incoming and outgoing photons in Raman spectroscopy measurements. They accept a \(N_{directions}\times 3\) matrix where each row corresponds to a spectroscopy measurement. By default, RESCU assumes three Raman measurements with (\(\hat{z},\hat{x},\hat{y}\)) for incoming photon and (\(\hat{z},\hat{x},\hat{y}\)) for outgoing photon polarization values.

Note

Use `dfpt.qpointCartesian`

(or `dfpt.qpointKdirect`

), `dfpt.ramanIncPhotonPol`

and `dfpt.ramanOutPhotonPol`

to specify the properties of photons used in the Raman
spectroscopy measurement.

Important

Currently only LDA exchange-correlation functional can be used with “2n+1” theorem. Although previous steps of DFPT calculations can still be performed with another XC-functional type, it should be directly set to LDA for the Raman calculation. Final results should be checked carefully for possible inconsistencies.

Following input file can be used for DFPT Raman simulation:

```
info.calculationType = 'dfpt-raman'
info.savepath = './results/bn_real_raman'
rho.in = './results/bn_real_scf.mat'
psi.in = './results/bn_real_scf.h5'
dfpt.phononData = './results/bn_real_phonon.mat'
dfpt.dielectricData = './results/bn_real_dielectric.mat'
dfpt.asr = [1,1,1]
dfpt.qpointCartesian = [1 0 0;1 0 0] % Two measurements both having incoming photon in x-direction
dfpt.ramanIncPhotonPol = [0,1,0;0,0,1] % Incoming polarizations for 1st and 2nd measurements in y and z directions
dfpt.ramanOutPhotonPol = [0,1,0;0,1,0] % Outgoing polarizations for 1st and 2nd measurements in y and y directions
units.length = 'Angstrom'
dfpt.ramanIncPhotonWav = 2660 % Wavelength of incoming photon used for the Raman spectroscopy
dfpt.ramanTemperature = 300 % Temperature of the Raman spectroscopy in Kelvin
dfpt.opticDamping = 1e-4
```

The keywords are explained as

`info.calculationType`

is a string determining type of the calculation;`info.savepath`

points to the file where the output data of calculation is stored;`rho.in`

this DFPT calculation loads the ground state electronic density at the beginning of the computation, and this keyword points to the file which contains the output of the ground state calculation, so that RESCU can load corresponding electronic density data;`psi`

this DFPT calculation also loads the ground state wavefunctions at the beginning of the computation, and this keyword points to the file which contains the stored ground state wavefunctions;`dfpt.dielectricData`

points to the path of the file containing the first-order perturbed wavefunctions with respect to external electric fields and the ion-clamped dielectric tensor;`dfpt.phononData`

points to the path of the file containing the first-order perturbed wavefunctions with respect to atomic displacements and the dynamical matrix and Born effective charges;`dfpt.asr`

it is a \(1\times 3\) vector where the first and third entries determines if acoustic sum rule will be applied to the dynamical matrix and the Raman tensor, respectively. The second entry determines if charge neutrality will be enforced on Born effective charges. RESCU assumes that all sum rules are active by default;`dfpt.qpointCartesian`

each row determines a direction of incident electric field for which the Raman related properties are calculated. By default, RESCU uses the three Cartesian directions;`dfpt.ramanIncPhotonPol`

polarization of incoming photon in the Raman measurement in Cartesian coordinates. It is a \(N_{direction}\times 3\) matrix where each row corresponds to a direction given by a row of`dfpt.qpointCartesian`

. RESCU assumes (\(\hat{z},\hat{x},\hat{y}\)) as default values.`dfpt.ramanOutPhotonPol`

polarization of outgoing photon in the Raman measurement in Cartesian coordinates. It is a \(N_{direction}\times 3\) matrix where each row corresponds to a direction given by a row of`dfpt.qpointCartesian`

. RESCU assumes (\(\hat{z},\hat{x},\hat{y}\)) as default values.`dfpt.ramanIncPhotonWav`

wavelength if incoming photon used in the Raman measurement. It can be set in Angstrom if used with`units.length`

keyword. RESCU assumes a wavelength of 4500 Angstrom (450 nm) as the default value.`dfpt.ramanTemperature`

temperature of the Raman measurement in Kelvin which is used for evaluating phonon distributions according to Bose-Einstein statistics. The default value is 300 Kelvin.`dfpt.opticDamping`

damping factor for Lorentzian broadening of the Raman spectrum in Hartree unit (1 Hartree \(\simeq 6579.7\) THz).

RESCU is executed as follows

```
rescu -i bn_real_raman
```

The output data will be stored in `./results/bn_real_raman.mat`

where
`dfpt`

and `raman`

fields hold the main variables of the simulation.

```
>> load results/bn_real_raman.mat
>> dfpt
dfpt =
struct with fields:
BornEC: [3x3x2 double]
asr: [1 1 1]
dTensor: [3x3x3 double]
desc: [1x1 struct]
dielectricTensor: [3x3 double]
dynMat: [6x6x2 double]
nonlinOpticSus: [3x3x3 double]
opticDamping: 1.0000e-04
phononFreq: [6x2 double]
phononMode: {2x1 cell}
qpointDirect: [2x3 double]
ramanIncPhotonPol: [2x3 double]
ramanIncPhotonWav: 2660
ramanOutPhotonPol: [2x3 double]
ramanTemperature: 300
ramanTensor: [3x3x6 double]
type: 'raman'
>> raman
raman =
struct with fields:
Suscep: {2x1 cell}
Tensor: {2x1 cell}
depolRatio: {[6x1 double] [6x1 double]}
desc: [1x1 struct]
freqShift: [1x1000 double]
intensity: {[6x1 double] [6x1 double]}
intensityAvgDpl: {[6x1 double] [6x1 double]}
intensityAvgPol: {[6x1 double] [6x1 double]}
intensityAvgTot: {[6x1 double] [6x1 double]}
spectrum: {[1x1000 double] [1x1000 double]}
spectrumAvgDpl: {[1x1000 double] [1x1000 double]}
spectrumAvgPol: {[1x1000 double] [1x1000 double]}
spectrumAvgTot: {[1x1000 double] [1x1000 double]}
```

Description of important outputs follows:

`Suscep`

it is a \(N_{direction}\times 1\) cell-array where each cell entry stores the (\(3\times 3\times 3N_{atom}\)) Raman susceptibility for corresponding direction calculated from the Raman tensor and phonons modes in atomic units.

```
>> raman.Suscep{1}(:,:,1)
ans =
1.0e-07 *
-0.0000 + 0.0000i -0.5275 - 0.0000i -0.5266 - 0.0000i
-0.5275 - 0.0000i -0.0000 - 0.0000i -0.4732 + 0.0000i
-0.5266 - 0.0000i -0.4732 + 0.0000i -0.0000 - 0.0000i
```

`Tensor`

is a \(N_{direction}\times 1\) cell-array where each cell entry stores the (\(3\times 3\times 3N_{atom}\)) Raman tensor for corresponding direction including non-analytical effect of LO phonons in atomic units. Sum rule is applied if set by`dfpt.asr`

.

```
>> raman.Tensor{1}(:,:,1)
ans =
-0.0000 + 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i
0.0000 - 0.0000i -0.0000 - 0.0000i -0.0878 + 0.0000i
0.0000 - 0.0000i -0.0878 + 0.0000i -0.0000 - 0.0000i
```

`intensity`

polarization dependent Raman intensities for all available phonon modes. It is a \(N_{direction}\times 1\) cell-array where each entry stores a \(3N_{atom}\times 1\) column vector corresponds to intensities of available modes.

```
>> raman.intensity{1}
ans =
1.0e-22 *
0
0
0
0.1461
0.0408
0.0122
```

`intensityAvgPol`

polarizated averaged Raman intensities (\(I_{\parallel}\)) for phonon modes where it is assumed that the incoming and scattered photons have the same polarizations. It is a \(N_{direction}\times 1\) cell-array where each entry stores a \(3N_{atom}\times 1\) column vector corresponds to intensities of available modes.

```
>> raman.intensityAvgPol{1}
ans =
1.0e-14 *
0
0
0
0.4077
0.4078
0.3471
```

`intensityAvgDpl`

depolarized averaged Raman intensities (\(I_{\perp}\)) for phonon modes where the incoming and scattered photons have perpendicular polarizations. It is a \(N_{direction}\times 1\) cell-array where each entry stores a \(3N_{atom}\times 1\) column vector corresponds to intensities of available modes.

```
>> raman.intensityAvgDpl{1}
ans =
1.0e-14 *
0
0
0
0.3058
0.3058
0.2603
```

`intensityAvgTot`

total (sum of polarized and depolarized) averaged Raman intensities for phonon modes. It is a \(N_{direction}\times 1\) cell-array where each entry stores a \(3N_{atom}\times 1\) column vector corresponds to intensities of available modes.

```
>> raman.intensityAvgTot{1}
ans =
1.0e-14 *
0
0
0
0.7135
0.7136
0.6074
```

`depolRatio`

depolarization ratio of averaged intensities, i.e. \(I_{\parallel}/I_{\perp}\). It is a \(N_{direction}\times 1\) cell-array where each entry stores a \(3N_{atom}\times 1\) column vector corresponds to depolarization ratio of available modes.`freqShift`

frequencies of Raman measurement in cm^{-1}(x-axis) at which the Raman spectrum is calculated.`spectrum`

\(N_{direction}\times 1\) cell-array where each entry stores polarization dependent Raman spectrum, and can be plotted against`freqShift`

.`spectrumAvgPol`

\(N_{direction}\times 1\) cell-array where each entry stores polarized averaged Raman spectrum. It can be plotted against`freqShift`

.`spectrumAvgDpl`

\(N_{direction}\times 1\) cell-array where each entry stores depolarized averaged Raman spectrum. It can be plotted against`freqShift`

.`spectrumAvgTot`

\(N_{direction}\times 1\) cell-array where each entry stores total averaged Raman spectrum. It can be plotted against`freqShift`

.

Also `dfpt`

field holds following important information:

`BornEC`

Born effective charges.`dynMat`

updated dynamical matrix for each incoming direction with acoustic sum rule applied if set in the input.`phononFreq`

phonons frequencies in Hartree.`phononMode`

phonons eigenvectors stored as a \(N_{directions}\times 1\) cell-array.`ramanTensor`

\(3\times 3\times 3N_{atom}\) array which stores the raw Raman tensor before adding the non-analytical LO phonons contribution and sum rule (if applicable).`nonlinOpticSus`

non-linear optical susceptibility. It is a \(3\times 3\times 3\) array referring to three Cartesian coordinates [VGG05].`dTensor`

it is defined as half on the non-linear optical susceptibility and given in pmV^{-1}[VGG05].

RESCU’s plotting utility can be used to visualize the Raman spectrum:

```
rescu -p ./results/bn_real_raman.mat
```

For 3 first given photon directions in `dfpt.qpointCartesian`

(or `dfpt.qpointKdirect`

)
polarization dependent and averaged Raman spectra are plotted and
saved to corresponding files.

Fig. 10.7.1 shows polarization dependent Raman spectrum which can also
be found in `bn_real_raman_plot_polarized.fig`

.

Fig. 10.7.2 shows averaged Raman spectra which can also
be found in `bn_real_raman_plot_averaged.fig`

.

M Veithen, Xavier Gonze, and Ph Ghosez. Nonlinear optical susceptibilities, Raman efficiencies, and electro-optic tensors from first-principles density functional perturbation theory. Physical Review B 71.12 (2005), p. 125107.

S. A. Prosandeev, U. Waghmare, I. Levin, and J. Maslar First-order Raman spectra of $mathrm{A}{mathrm{B}}_{1∕2}^{ensuremath{‘}}{mathrm{B}}_{1∕2}^{ensuremath{‘’}}{mathrm{O}}_{3}$ double perovskites Physical Review B 71, 214307 (2005)

Stefano Baroni, Stefano De Gironcoli, Andrea Dal Corso, and Paolo Giannozzi. Phonons and related crystal properties from density-functional perturbation theory. Reviews of Modern Physics 73.2 (2001), p. 515.