Table of Contents
Development of this chapter has been postponed.
Like the ABINIT software project, Octopus is an open-source collaborative effort of international scope. The project focuses on the optical properties of molecules using the time-dependent density-functional theory (TDDFT)... The RPM build description of Octopus is:
Octopus is a computer package aimed at the simulation of the electron-ion dynamics of finite systems, both in one and three dimensions, under the influence of time-dependent electromagnetic fields. The electronic degrees of freedom are treated quantum mechanically within the time-dependent Kohn-Sham formalism, while the ions are handled classically. All quantities are expanded in a regular mesh in real space, and the simulations are performed in real time. Although not optimized for that purpose, the program is also able to obtain static properties like ground-state geometries, or static polarizabilities. The method employed proved quite reliable and general, and has been successfully used to calculate linear and non-linear absorption spectra, harmonic spectra, laser induced fragmentation, etc. of a variety of systems, from small clusters to medium sized quantum dots.
Octopus is a program aimed at the ab initio virtual experimentation on a hopefully ever increasing range of systems types. Its main characteristics are:
prompt>cvs -d :pserver:email@example.com:/server/cvsroot login
prompt>cvs -d :pserver:firstname.lastname@example.org:/server/cvsroot co marques/octopus
To pass the compiler options via the Makefile, which is generated using GNU autotools, one would issue the command:
prompt>export F90FLAGS="-FR -O3 -tpp6 -axi"
as described in the installation instructions.
LAPACK and BLAS are not distributed with octopus, but these can be downloaded separately at http://www.netlib.org/lapack and http://www.netlib.org/blas, respectively. If you have the LAPACK and BLAS libraries compiled with g77 preinstalled you may have to recompile them with your Fortran 90/95 compiler. There may be other options that allow the use of g77 compiled libraries, but in the present case we simply chose to rebuild the libraries. On our Pentium II system using the Intel compiler the following commands were issued in the directory containing the LAPACK sources :
prompt>ifc -O3 -tpp6 -axi -c *.f
prompt>ar r liblapack.a *.o
prompt>rm -f *.o
After doing the same to create a BLAS library libblas.a the installation can be completed by following the installation instructions. As an example, the options we used with the configure script to create the Makefile were,
prompt>./configure --prefix=/home/keay/Cprograms/Computational_Physics/OCTOPUS/Octopus_test --with-blas=/home/keay/Cprograms/Computational_Physics/blas --with-lapack=/home/keay/Cprograms/Computational_Physics/lapack
where ~/lapack and ~/blas are the directories containing the libraries liblapack.a and libblas.a, respectively.
As this chapter is developed some of the variable definitions found in the octopus source code will be listed here. Most of octopus is written in Fortran 90/95 and in what follows if the variables are defined within a derived data type then we will describe variables relative to the definition of the type using the component selector operator %.
As can be seen from the Makefile many of the function and subroutine names are synthesized using the C preprocessor cpp on the Fortran source files. The cpp preprocessor macro operator ## is used in the files complex.F90, and real.F90, and global.h, to generate the appropriate function and subroutine names before the program is compiled by your Fortran compiler. In particular, different function and subroutine names will be generated depending on whether you have chosen to work with real (COMPLEX_WFNS=0) or complex wavefunctions (COMPLEX_WFNS=1). The macro operator ## "concatenates two tokens in a macro, preserving white space between macro tokens and operators." Thus, the line
#define X(x) d ## x
means the variable foo in the expression X(foo) will be assigned the name dfoo before the program is compiled by the Fortran compiler.
Table 11.1. Some of the variable definitions found in the octopus source code will be listed here.
|Source code variable||Variable||Defined (used) in these files||Description|
|Orbital dependent functionals related.|
|xc_oep_type%lxc(:,:)||xc.F90 (h_xc_OEP.F90, xc_OEP_SIC.F90, xc_OEP_x.F90, xc_KLI.F90)||,.|
|states_type%X(psi)(:,:,:,:)||states.F90 (h_xc_OEP.F90)||Creates pointers to the FLOAT (dpsi) and CMPLX (zpsi) wavefunctions.|
|psi(:,:)||h_xc_OEP.F90||Kümmel & Perdew OEP implementation , .|
|b(:)||h_xc_OEP.F90||Kümmel & Perdew OEP implementation , .|
|vxc_old(:)||h_xc_OEP.F90||Kümmel & Perdew OEP implementation , .|
|s(:)||h_xc_OEP.F90||Kümmel & Perdew OEP implementation , .|
|Hartwigsen-Goedecker-Hutter (HGH) pseudopotential related.|
|function vlocalg(g, p)||hgh.F90||,.|
|hgh_type%h(0:3, 1:3, 1:3)||hgh.F90||,|
|hgh_type%k(0:3, 1:3, 1:3)||hgh.F90||,|
|Troullier-Martins (TM) pseudopotential related.|
Octopus offers the possibility of using either Troullier-Martins (TM) pseudopotentials , or the Hartwigsen-Goedecker-Hutter (HGH) separable dual-space Gaussian pseudopotentials [Goedecker,1996;Hartwigsen,1998]. A limited number files for various chemical elements in the TM pseudopotential scheme , are available in the directory /usr/share/octopus/PP/TM2/ and all the HGH LDA pseudopotentials appear to be in the directory /usr/share/octopus/PP/HGH/ created during installation process. A wide variety of pseudopotential parameters can also be obtained online http://www.tddft.org/programs/octopus/pseudo.php.
function projectorr_scalar(r, p, i, l)
projectorr_scalar = sqrt(2.0_r8) * rr * exp(-r**2/(2.0_r8*p%rc(l)**2)) / & ( p%rc(l)**(l + real(4*i-1,r8)/2) * x )
In octopus the data for the Troullier-Martins pseudopotentials are stored in files labeled element.ascii and are processed by routines in tm.F90 In the pseudopotential files, element.ascii, the data are stored in block format with the radial grid first, followed by the pseudopotentials times the radial coordinate r for different values of angular momentum quantum number l, i.e. .
Table 11.2. Octopus results for the static ground state properties of He using various functionals with octopus 1.1 (all values in atomic units).
[c] Computed using Octopus on a PII 266 MHz.
Table 11.3. Static ground state results for the first three Kohn-Sham energy eigenvalues of He using various functionals with octopus 1.1 (all values in atomic units).
[c] Computed using Octopus on a PII 266 MHz.