18.11.2012 Views

ASE Manual Release 3.6.1.2825 CAMd - CampOS Wiki

ASE Manual Release 3.6.1.2825 CAMd - CampOS Wiki

ASE Manual Release 3.6.1.2825 CAMd - CampOS Wiki

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>ASE</strong> <strong>Manual</strong>, <strong>Release</strong> 3.6.1.2828<br />

7.20 Infrared intensities<br />

InfraRed is an extension of Vibrations, in addition to the vibrational modes, also the infrared intensities of<br />

the modes are calculated for an Atoms object.<br />

class ase.infrared.InfraRed(atoms, indices=None, name=’ir’, delta=0.01, nfree=2, directions=None)<br />

Class for calculating vibrational modes and infrared intensities using finite difference.<br />

The vibrational modes are calculated from a finite difference approximation of the Dynamical matrix and<br />

the IR intensities from a finite difference approximation of the gradient of the dipole moment. The method<br />

is described in:<br />

D. Porezag, M. R. Pederson: “Infrared intensities and Raman-scattering activities within densityfunctional<br />

theory”, Phys. Rev. B 54, 7830 (1996)<br />

The calculator object (calc) linked to the Atoms object (atoms) must have the attribute:<br />

>>> calc.get_dipole_moment(atoms)<br />

In addition to the methods included in the Vibrations class the InfraRed class introduces<br />

two new methods; get_spectrum() and write_spectra(). The summary(), get_energies(),<br />

get_frequencies(), get_spectrum() and write_spectra() methods all take an optional method keyword. Use<br />

method=’Frederiksen’ to use the method described in:<br />

T. Frederiksen, M. Paulsson, M. Brandbyge, A. P. Jauho: “Inelastic transport theory from firstprinciples:<br />

methodology and applications for nanoscale devices”, Phys. Rev. B 75, 205413<br />

(2007)<br />

atoms: Atoms object The atoms to work on.<br />

indices: list of int List of indices of atoms to vibrate. Default behavior is to vibrate all atoms.<br />

name: str Name to use for files.<br />

delta: float Magnitude of displacements.<br />

nfree: int Number of displacements per degree of freedom, 2 or 4 are supported. Default is 2 which will<br />

displace each atom +delta and -delta in each cartesian direction.<br />

directions: list of int Cartesian coordinates to calculate the gradient of the dipole moment in. For example<br />

directions = 2 only dipole moment in the z-direction will be considered, whereas for directions = [0,<br />

1] only the dipole moment in the xy-plane will be considered. Default behavior is to use the dipole<br />

moment in all directions.<br />

Example:<br />

>>> from ase.io import read<br />

>>> from ase.calculators.vasp import Vasp<br />

>>> from ase.infrared import InfraRed<br />

>>> water = read(’water.traj’) # read pre-relaxed structure of water molecule<br />

>>> calc = Vasp(prec=’Accurate’,<br />

... ediff=1E-8,<br />

... isym=0,<br />

... idipol=4, # calculate the total dipole moment<br />

... dipol=water.get_center_of_mass(scaled=True),<br />

... ldipol=True)<br />

>>> water.set_calculator(calc)<br />

>>> ir = InfraRed(water)<br />

>>> ir.run()<br />

>>> ir.summary()<br />

-------------------------------------<br />

Mode Frequency Intensity<br />

# meV cm^-1 (D/Å)^2 amu^-1<br />

-------------------------------------<br />

150 Chapter 7. Documentation for modules in <strong>ASE</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!