Exercise 1: Geometry Optimization
Estimated total CPU time: 3 min
Warning
In the following exercises, computational settings including the reciprocal space grid (tag k_grid
), the basis set, and supercell's size, have been chosen to allow for a rapid computation of the exercises in the limited time and within the CPU resources available during the tutorial session. Without loss of generality, these settings allow to demonstrate trends of the lattice dynamics of materials.
In the production calculation, all computational parameters should be converged.
In this exercise, you will learn:
 How to perform geometry relaxation in periodic systems with FHIaims using FHIvibes.
 How to use commands
vibes info geometry
,vibes template option
, andvibes info relaxation
to inspect input and output geometries and the relaxation path, generate input files, and submit calculations.
The directory:
phononswithfhivibes/Tutorial/phonons/1_relax_structure/input
geometry.in
file with the primitive unit cell of
Fm\(\bar3\)mSilicon. You can get a summary of the structural information by typing:
vibes info geometry geometry.in
Carefully inspect the output. What is the space group of the system?
In order to relax the structure, we need to create input file for FHIvibes. This can be done by using template option shown before. First, we generate a template with the most general (calculator) information:
vibes template calculator aims >> relaxation.in
We have generated relaxation.in, which is input file with settings for the interface between FHIvibes and FHIaims. From this point relaxation.in contains a set of options similar to those, used for singlepoint calculations. To perform geometry optimization, we should add settings related to it. This can be done again by using the CLI:
vibes template relaxation >> relaxation.in
Then relaxation.in
would also contain two additional sections:
>>> cat relaxation.in
... calculator sections ...
[relaxation]
driver: BFGS
fmax: 0.001
unit_cell: True
fix_symmetry: False
hydrostatic_strain: False
constant_volume: False
scalar_pressure: 0.0
decimals: 12
symprec: 1e05
workdir: relaxation
[relaxation.kwargs]
maxstep: 0.2
logfile: relaxation.log
restart: bfgs.restart
The settings file template you just generated contains all the necessary settings to set up and run a geometry optimization with FHIvibes using FHIaims as the force/stress calculator.
Now, we can relax the structure by running:
vibes run relaxation >> relaxation.out &
Once the relaxation is started the folder relaxation
is generated.
This folder contains everything related to the computations. We can
verify that FHIaims is indeed up and running by going to the
relaxation/calculations
folder and by checking aims.out file (e.g. by
tail f aims.out
).
Once the calculations are done we can check the relaxation path information (from the initial calculations folder):
vibes info relaxation relaxation/trajectory.son
This will give you an output as the following:
[trajectory] .. set raw hash
[trajectory] .. time elapsed: 0.000s
Relaxation info for relaxation/trajectory.son:
fmax: 1.000e+00 meV/AA
# Step  Free energy  FF(1)  max. force  max. stress  Volume  Spacegroup 
#  [eV]  [meV]  [meV/AA]  [meV/AA^3]  [AA^3]  
1 15748.22478453 23.700159 0.0000 50.6847 39.830 Fd3m (227)
2 15748.22490123 23.816861 0.0000 2.6193 39.739 Fd3m (227)
3 15748.22489837 23.813995 0.0000 0.0090 39.743 Fd3m (227)
> converged.
After the calculations are finished, inspect the new geometry in
relaxation/geometry.in.next_step
with vibes info geometry
, by typing:
vibes info geometry relaxation/geometry.in.next_step
After you successfully relaxed Silicon crystal you have finished this exercise, copy the relaxed geometry to the input of Exercise 2:
cp relaxation/geometry.in.next_step ../../2_phonopy_basics/input/geometry.in
cd ../../2_phonopy_basics/input
).

We use LDA because it’s slightly faster, that is the only reason. In general, the dependence of any property on the underlying XC functional should be better always tested. ↩