Tutorial:Hydrogen atom
The objective of this tutorial is to give a basic idea of how octopus works.
Generating the input file
With a text editor, create a text file called inp containing the following text:
CalculationMode
= gs %Coordinates
'H'  0  0  0 %
This is the simplest example of an Octopus input file:

CalculationMode
= gs
: This variable defines the run mode  please consult the manual for the full list of the possible run modes. In this case we set it to gs, which instructs the code to start a groundstate calculation.
 %
Coordinates
: The entry is not just the definition of a variable, but rather of a full set of them  a "block" of variables. The beginning of a block is marked by the %identifier line, and ended by a % line. In this case the identifier is %Coordinates
, where we list the atoms or species in our calculation and its coordinates, one per line. In this case, we put a single hydrogen atom in the center of our simulation box.
The reason this input file can be so simple is that Octopus comes with default values for the simulation parameters, and a set of default pseudopotentials for several elements (for properly converged calculations you might need to adjust these parameters, though).
To get a general idea of the format of the Octopus input file, go and read the page about the Input file in the manual.
The documentation for each input variable can be found in the variable reference online, and can also be accessed via the octhelp
utility.
Running Octopus
Once you have written your input file, run the octopus command (using mpirun and perhaps a job script if you are using the parallel version). If everything goes correctly, you should see several lines of output in the terminal (if you don't, there must be a problem with your installation). As this is probably the first time you run Octopus, we will examine the most important parts of the output:
 First there is an octopus drawn in ASCII art, the copyright notice and some information about the octopus version you are using and the system where you are running:
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> ___ .' `'. / \  ;   ___., _.._ 0) ~ (0)  _.'`__.( (_. __.'`_.. '.__.\ '. \_.' ,.'` `""` ( ,.'` ',__ /./; ;, '.__.'` __ _`) ) ..__.' /  \ \__.."" """.,_ `' .'.''._.'`_./ /\ '. \ _.~~~````~~~._`.__.'   .' _.'   \ \ '. `~` \ \/ .' \ \ '. '._) \/ / \ \ `=.__`~. jgs / /\ `) ) / / `"".`\ , _.'.'\ \ / / ( ( / / `~` ) ) .'.' '.'.  ( (/` ( (` ) ) '; ` '; (' This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> Running octopus Version : 6.0 Revision : 15605 Build time : Tue Sep 6 00:27:27 CEST 2016 Configuration options : maxdim=3 openmp mpi sse2 Optional libraries : gdlib metis mpi2 newuoa Architecture : x86_64 C compiler : /usr/local/bin/mpicc (/usr/local/gfortran/bin//gcc) C compiler flags : g O3 Fortran compiler : /usr/local/bin/mpif90 (/usr/local/gfortran/bin//gfortran) (GCC version 6.1.0) Fortran compiler flags : g O3 ffreelinelengthnone fbacktrace fboundscheck fopenmp The octopus is swimming in KaptahII.local (Darwin) Calculation started on 2016/09/12 at 11:04:47
Note that it also gives you the revision number, the compiler, and the compiler flags used. You should always include this information when submitting a bug report!
 The type of calculation it was asked to perform:
************************** Calculation Mode ************************** Input: [CalculationMode = gs] **********************************************************************
 The species and pseudopotentials it is using:
****************************** Species ******************************* Reading pseudopotential from file: '/opt/local/share/octopus/PP/PSF/H.psf' Calculating atomic pseudoeigenfunctions for species H .... Info: l = 0 component used as local potential. Info: l = 0 is maximum angular momentum considered. Number of orbitals: total = 16, bound = 1 **********************************************************************
 After some other output, Octopus prints information about the grid: as we didn't say anything in the input file, Octopus used the parameters recommended for this pseupopotential:
******************************** Grid ******************************** Simulation Box: Type = minimum Species = H Radius = 7.559 b Octopus will run in 3 dimension(s). Octopus will treat the system as periodic in 0 dimension(s). Main mesh: Spacing [b] = ( 0.435, 0.435, 0.435) volume/point [b^3] = 0.08210 # inner mesh = 22119 # total mesh = 37759 Grid Cutoff [H] = 26.123439 Grid Cutoff [Ry] = 52.246878 **********************************************************************
 The level of theory and, in the case of (TD)DFT, the approximation to the exchangecorrelation term:
**************************** Theory Level **************************** Input: [TheoryLevel = dft] Exchange and correlation: Exchange Slater exchange (LDA) [1] PAM Dirac, Proceedings of the Cambridge Philosophical Society 26, 376 (1930) [2] F Bloch, Zeitschrift fuer Physik 57, 545 (1929) Correlation Perdew & Zunger (Modified) (LDA) [1] Perdew and Zunger, Phys. Rev. B 23, 5048 (1981) [2] Modified to improve the matching between the low and high rs parts Input: [SICCorrection = sic_none] **********************************************************************
 At this point, Octopus tries to read the wavefunctions from a previous calculation. As there are none, it will give a warning.
** Warning: ** Could not load wavefunctions from 'restart/gs/' ** Starting from scratch!
 Now Octopus commences the calculation. To get a reasonable starting point for the DFT calculation, the initial wavefunctions are calculated as a Linear Combination of Atomic Orbitals (LCAO).
Info: Performing initial LCAO calculation with 1 orbitals. Info: Getting Hamiltonian matrix elements. ETA: .......1......2.......3......4......5.......6......7.......8......9......0 Eigenvalues [H] #st Spin Eigenvalue Occupation 1  0.233314 1.000000 Info: Groundstate restart information will be written
 After the LCAO, the real DFT calculation starts. For each selfconsistency step some information is printed. When SCF converges, the calculation is done.
********************** SCF CYCLE ITER # 1 ************************ etot = 4.48042394E01 abs_ev = 1.09E03 rel_ev = 4.66E03 abs_dens = 8.90E03 rel_dens = 8.90E03 Matrix vector products: 27 Converged eigenvectors: 0 # State Eigenvalue [H] Occupation Error 1 0.234405 1.000000 (6.0E05) Elapsed time for SCF step 1: 0.20 *********************************************************************
...
********************** SCF CYCLE ITER # 5 ************************ etot = 4.46377045E01 abs_ev = 3.49E06 rel_ev = 1.50E05 abs_dens = 4.31E06 rel_dens = 4.31E06 Matrix vector products: 7 Converged eigenvectors: 1 # State Eigenvalue [H] Occupation Error 1 0.233013 1.000000 (9.7E07) Elapsed time for SCF step 5: 0.08 ********************************************************************* Info: Writing states. 2016/09/12 at 11:04:50 Info: Finished writing states. 2016/09/12 at 11:04:50 Info: SCF converged in 5 iterations
Just running the command octopus will write the output directly to the terminal. To have a saved copy of the output, it is generally advisable to redirect the output into a file, and to capture the standard error stream as well, which can be done like this: octopus &> log. That would create a file called log containing all output including warnings and errors in their context.
Analyzing the results
The detailed results of the groundstate calculation can be found in the static/info file. If you open that file, first you will see some parameters of the calculations (that we already got from the output) and then the calculated energies and eigenvalues in Hartrees:
Eigenvalues [H] #st Spin Eigenvalue Occupation 1  0.233013 1.000000 Energy [H]: Total = 0.44637705 Free = 0.44637705  Ionion = 0.00000000 Eigenvalues = 0.23301327 Hartree = 0.28415332 Int[n*v_xc] = 0.30429841 Exchange = 0.19375604 Correlation = 0.03975282 vanderWaals = 0.00000000 Delta XC = 0.00000000 Entropy = 1.38629436 TS = 0.00000000 Kinetic = 0.41780616 External = 0.91483022 Nonlocal = 0.00000000
Since by default Octopus does a spinunpolarized densityfunctionaltheory calculation with the localdensity approximation, our results differ from the exact total energy of 0.5 H. Our exchangecorrelation functional can be set by the variable XCFunctional
, using the set provided by the libxc library.
Extra
If you want to improve the LDA results, you can try to repeat the calculation with spinpolarization:
SpinComponents
= spin_polarized
And if you want to obtain the exact Schödinger equation result (something possible only for very simple systems like this one) you have to remove the selfinteraction error (a problem of the LDA). Since we only have one electron the simplest way to do it for this case is to use independent electrons:
TheoryLevel
= independent_particles
A more general way would be to include selfinteraction correction.