octopus (software)
octopus is a software package for performing Kohn–Sham density functional theory (DFT) and time-dependent density functional theory (TDDFT) calculations.[1]
octopus employs pseudopotentials and real-space numerical grids to propagate the Kohn–Sham orbitals in real time under the influence of time-varying electromagnetic fields. Specific functionality is provided for simulating one-, two-, and three-dimensional systems. octopus can calculate static and dynamic polarizabilities and first hyperpolarizabilities, static magnetic susceptibilities, absorption spectra, and perform molecular dynamics simulations with Ehrenfest and Car–Parrinello methods.
The code is written predominantly in Fortran, with some C and Perl. It is released under the GPL.
Target problems
- Linear optical (i.e. electronic) response of molecules or clusters, also second-order nonlinear response.
- Non-linear response to classical high-intensity electromagnetic fields, taking into account both the ionic and electronic degrees of freedom.
- Ground-state and excited state electronic properties of systems with lower dimensionality, such as quantum dots.
- Photo-induced reactions of molecules (e.g., photo-dissociation, photo-isomerization, etc.).
- In the immediate future, extension of these procedures to systems that are infinite and periodic in one or more dimensions (polymers, slabs, nanotubes, solids), and to electronic transport.
Theoretical basis
- The underlying theories are DFT and TDDFT. Also, the code may perform dynamics by considering the classical (i.e. point-particle) approximation for the nuclei. These dynamics may be non-adiabatic, since the system evolves following the Ehrenfest path. It is, however, a mean-field approach.
- Regarding TDDFT, one can use three different approaches:
- the standard TDDFT-based linear-response theory of Casida, which provides the excitation energies and oscillator strengths for ground-state to excited-state transitions.
- the explicit time-propagation of the TDDFT equations, which allows for the use of large external potentials, well beyond the range of validity of perturbation theory.
- the Sternheimer equation (density-functional perturbation theory) in the frequency domain, using only occupied states.
Methodology
- As numerical representation, the code works without a basis set, relying on numerical meshes. Nevertheless, auxiliary basis sets (plane waves, atomic orbitals) are used when necessary. Recently, the code offers the possibility of working with non-uniform grids, which adapt to the inhomogeneity of the problem, and of making use of multigrid techniques to accelerate the calculations.
- For most calculations, the code relies on the use of pseudopotentials[2] of two types: Troullier-Martins,[3] and Hartwigsen-Goedecker-Hutter.[4]
- In addition to being able to treat systems in the standard 3 dimensions, 2D and 1D modes are also available. These are useful for studying, e.g., the two-dimensional electron gas that characterizes a wide class of quantum dots.
Technical aspects
- The code has been designed with emphasis on parallel scalability. In consequence, it allows for multiple task divisions.
- The language of most of the code is Fortran 90 (almost 50.000 lines at present). Other languages, such as C or Perl, are also used.
- The package is licensed under the GNU General Public License (GPL). In consequence, it is available for use, inspection, and modification for anyone, at the octopus web page.
See also
References
- ↑ Castro, Alberto; Heiko Appel; Micael Oliveira; Carlo A. Rozzi; Xavier Andrade; Florian Lorenzen; M. A. L. Marques; E. K. U. Gross; Angel Rubio (2006). "octopus: a tool for the application of time-dependent density functional theory". physica status solidi (b). 243 (11): 2465–2488. doi:10.1002/pssb.200642067.
- ↑ W. E. Pickett, Comput. Phys. Rep. 9, 115 (1989).
- ↑ N. Troullier and J. L. Martins, Phys. Rev. B 43, 1993 (1991).
- ↑ C. Hartwigsen, S. Goedecker and J. Hutter, Phys. Rev. B 58, 3641 (1998).
External links
- OctopusWiki, home page for octopus
- Development tracking of the octopus code