Tutorial:Periodic systems
The extension of a ground state calculation to a periodic system is quite straightforward in Octopus, but a few subtleties must be considered.
Needed input variables
You already know that you can start a ground state calculation in Octopus with a tiny input file basically including only the coordinates of the atoms in the system.

In order to make the system periodic the first variable you really need is
PeriodicDimensions
, that must be set to the number of dimensions you want to consider as periodic, namely: 
PeriodicDimensions
= 0 (which is the default) gives a finite system calculation, since Dirichlet zero boundary conditions are used at all the borders of the simulation box; 
PeriodicDimensions
= 1 means that only the x axis is periodic, while in all the other directions the system is confined. This value must be used to simulate, for instance, a single infinite wire. 
PeriodicDimensions
= 2 means that both x and y axis are periodic, while zero boundary conditions are imposed at the borders crossed by the z axis. This value must be used to simulate, for instance, a single infinite slab. 
PeriodicDimensions
= 3 means that the simulation box is a primitive cell for a fully periodic infinite crystal. Periodic boundary conditions are imposed at all borders. 
The second variable you need is the block that defines the k points. You can use either
KPointsMonkhorstPack
, to generate a simple grid, orKPoints
to custom the reciprocal space mesh. In the former case you only input the desired number of k points along each axis in the reciprocal space, in the latter you can explicitly set the position and weight of each k point.
Warnings and comments
 At the moment Octopus only accepts
BoxShape
= parallelepiped for periodic systems.  The effective number of kpoints in the MonkhorstPack grid can be slightly adjusted by the code depending on the actual box sizes.
 You must understand that performing for instance, a
PeriodicDimensions
= 1 calculation in Octopus is not quite the same as performing aPeriodicDimensions
= 3 calculation with a large supercell. In the infinite supercell limit the two approaches reach the same ground state, but this does not hold for the excited states of the system.
In fact the discrete Fourier transform that are used internally in a periodic calculation would always result in a 3D periodic lattice of identical replicas of the simulation box. But Octopus includes a clever system to exactly truncate the long range part of the Coulomb interaction, in such a way that we can effectively suppress the interactions between replicas of the system along nonperiodic axes^{[1]}. This is obtained automatically, since the value of PoissonSolver
in a periodic calculation is defaulted to the same value as the PeriodicDimensions
. The truncation scheme is described in details in the reference. See also the variable documentation for PoissonSolver
, and the section on the Na chain for an example.
Now we can show how some simple periodic calculations are performed.
Examples
Bulk Silicon
CalculationMode
= gsPeriodicDimensions
= 3Spacing
=0.7 a = 10.2Mesh
= parallelepipedMesh
= a/2 %System
"Si"  0.0  0.0  0.0 "Si"  a/2  a/2  0.0 "Si"  a/2  0.0  a/2 "Si"  0.0  a/2  a/2 "Si"  a/4  a/4  a/4 "Si"  a/4 + a/2  a/4 + a/2  a/4 "Si"  a/4 + a/2  a/4  a/4 + a/2 "Si"  a/4  a/4 + a/2  a/4 + a/2 % %Mesh
2  2  2 1/4  1/4  1/4 %States
= 1SCF
= 1e4
: to be continued
References
 ↑ C. A. Rozzi, D. Varsano, A. Marini, E. K. U. Gross, and A. Rubio, "Exact Coulomb cutoff technique for supercell calculations", Phys. Rev. B 73, 205119,(2006); http://link.aps.org/abstract/PRB/v73/e205119