Skip to content

Tutorial#

Warnings

  • All tutorials assume you have a background in (ab initio) calculations and in the fundamental theory of vibrations in solids. The background theory is written down to establish a common notation; and introduction to these topics can be found various textbooks, some of which you find in the references.
  • The settings used throughout the tutorials are chosen in order to allow for smooth calculations. They are not sufficient for producing publication-ready scientific results.
  • We assume you have installed and configured FHI-vibes successfully.
  • We assume you have some working experience with python, numpy, and jupyter-notebook.

In this tutorial, we introduce the functionality of FHI-vibes with hands-on examples.

Outline#

The following tutorials are available:

All tutorials discuss fcc-Silicon, which is treated at the ab initio level using FHI-aims and the LDA exchange-correlation functional. Although only very moderate computational ressources are needed (mostly few minutes of runtime on a modern multi-core node), the tutorials are intended to be run on a computing cluster, since they aim at showcasing typical FHI-vibes usage.

Info

We assume that you are familiar with running FHI-aims for performing ab initio calculations.

Typically, FHI-vibes requires two files: One describes the geometry of the system following syntax used for geometry.in files in FHI-aims. For fcc-Silicon in the primitive unit cell, it thus reads

Geometry input file geometry.in
lattice_vector 0.0000000000000000 2.7149999999999999 2.7149999999999999
lattice_vector 2.7149999999999999 0.0000000000000000 2.7149999999999999
lattice_vector 2.7149999999999999 2.7149999999999999 0.0000000000000000
atom_frac 0.0000000000000000 0.0000000000000000 0.0000000000000000 Si
atom_frac 0.2500000000000000 0.2500000000000000 0.2500000000000000 Si

The second files describes the computational tasks and the numerical parameters used in the calculation. Accordingly, it also contains a calculator section that specifies that FHI-aims shall be used at the LDA level of theory and which numerical settings shall be used for the Silicon example in the tutorial. This section thus reads:

calculator section for task in put file
[files]
geometry:                      geometry.in

[calculator]
name:                          aims
socketio:                      true

[calculator.parameters]
xc:                            pw-lda
compute_forces:                true

[calculator.kpoints]
density:                       2

[calculator.basissets]
Si:                            light

Let's walk through the settings once:

  • [files]
    • geometry: geometry.in: read the input geometry from geometry.in.
  • [calculator]
    • name: aims means that FHI-aims will be used as explained here.
    • socketio: true means that the socketIO communication will be used. This will speed up the computation of related structures.
  • [calculator.parameters]: these are settings that go directly to control.in
    • xc: pw-lda means that the pw-LDA exchange-correlation functional will be used.
    • compute_forces: true means that forces will be computed.
  • [calculator.kpoints]: this is an optional way of setting k-point grids based on a target density (specifying k_grid: X Y Z in [calculator.parameters] is also possible!)
    • density: 2 use a k-point density of at least 2 per \require{mediawiki-texvc} \AA^{-3}.
  • [calculator.basissets]: Details on which basissets to use
    • Si: light: use light default basis sets for silicon.

More details for each keyword can be found in the documentation.

Info

For experimenting, testing, and rapid code-developing, it is often useful to use a force-field instead of an ab initio calculator. For instance, one can use the Lennard-Jones (LJ) potential available within ASE to run all tutorials for LJ-Argon. Such calculations take only seconds, even on older laptops. The required geometry description and calculator settings are given below.

Geometry in put file geometry.in
lattice_vector 0.0000000000000000 2.6299999999999999 2.6299999999999999
lattice_vector 2.6299999999999999 0.0000000000000000 2.6299999999999999
lattice_vector 2.6299999999999999 2.6299999999999999 0.0000000000000000
atom 0.0000000000000000 0.0000000000000000 0.0000000000000000 Ar
calculator section for task input file
    [files]
    geometry:                      geometry.in

    [calculator]
    name:                          lj

    [calculator.parameters]
    # parameters for LJ Argon
    sigma:    3.405
    epsilon:  0.010325
    rc:       8.0