Calculating Green's functions

What this tutorial covers

This tutorial explains how to set up Green-function calculations in FLEUR, how to choose a contour, how to define onsite and intersite elements, what the main output quantities mean, and how the resulting data can be used later for quantities such as Jij.

1. Basic idea

The Green-function functionality in FLEUR provides orbital-resolved and site-resolved propagators derived from the Kohn-Sham states of a converged calculation. Instead of solving a separate Green-function equation directly in real space, FLEUR constructs the Green function from the spectral representation of the Kohn-Sham eigenstates,

Inside each muffin-tin sphere, the wave functions are expanded in the LAPW+LO basis and projected onto selected local orbital channels. Numerically, FLEUR first builds the imaginary part of the projected Green function on a real-energy mesh and then reconstructs the Green function on the chosen complex contour through a Kramers-Kronig transformation,

In practice you need three ingredients
  1. a real-energy mesh on which the imaginary part is constructed,
  2. one or more complex contours on which the final Green function is evaluated,
  3. a definition of the orbital channels and shells to be calculated.

2. Minimal setup

A Green-function calculation is activated in the calculationSetup section through a greensFunction block, while the actual orbital channels are selected by one or more greensfCalculation tags in the species section.

Contour setup

A minimal contour setup looks like:

<greensFunction l_mperp="F">
   <realAxis ne="5400" ellow="-1.0" elup="1.0"/>
   <contourSemicircle n="128" eb="-0.99" et="0.0" alpha="0.25"/>
</greensFunction>

The contour setup always has two parts:

  1. the global Green-function settings, which define the real-axis mesh,
  2. one or more contour definitions, from which you choose the contour appropriate for your calculation.
Global Green-function parameters
  • l_mperp enables spin-offdiagonal Green-function components for noncollinear calculations.
  • ne is the number of points on the real-energy mesh used to construct the imaginary part.
  • ellow is the lower bound of the real-energy mesh.
  • elup is the upper bound of the real-energy mesh.
Shared contour parameters
  • eb is the real-energy starting point of a contour.
  • et is the real-energy end point of a contour.
  • label is an optional name used to connect a contour to a specific greensfCalculation.
  • n is the number of contour points for contour types that use one point count.
  • sigma is the imaginary offset used by contour types shifted off the real axis.

If several contour strategies are needed in one calculation, FLEUR allows multiple contour definitions:

<greensFunction l_mperp="F">
   <realAxis ne="5400" ellow="-1.0" elup="1.0"/>
   <contourSemicircle n="128" eb="-0.99" et="0.0" alpha="0.25"/>
   <contourRectangle n1="10" n2="128" n3="30" nmatsub="5" sigma="0.005" eb="-0.99" label="RectangleExample"/>
   <contourDOS n="5400" eb="-1.0" et="1.0" sigma="0.00314" analytical_cont="T" l_fermi="F" label="DOSExample"/>
</greensFunction>

The three standard contour choices are shown below.

1. Semicircle contour

Semicircle contour figure
When to use it

This is the standard default contour for many Green-function calculations.

Main extra parameter
  • alpha scales the imaginary height of the semicircle.

2. DOS contour

DOS contour figure
When to use it

Useful for spectral quantities on a dense near-real-axis path.

Main extra parameters
  • analytical_cont selects the analytical continuation form.
  • l_fermi controls whether the Fermi-function treatment is included.

3. Rectangle contour

Rectangle contour figure
When to use it

Useful when a Matsubara-like offset around the Fermi level is desired.

Main extra parameters
  • n1 is the number of points on the first vertical branch.
  • n2 is the number of points on the horizontal branch.
  • n3 is the number of points on the second vertical branch.
  • nmatsub shifts the horizontal branch by integer Matsubara distances.

Element setup

The element setup specifies which orbitals should be calculated. The simplest onsite setup is:

<greensfCalculation l_sphavg="T">
   <diagElements s="F" p="F" d="T" f="F"/>
</greensfCalculation>

A first intersite setup for one shell is:

<greensfCalculation l_sphavg="T" nshells="1" kkintgrCutoff="d">
   <diagElements s="F" p="F" d="T" f="F"/>
</greensfCalculation>
Element-setup parameters
  • l_sphavg is T for spherically averaged Green functions and F for radial-dependent Green functions.
  • nshells is the number of intersite shells to construct.
  • kkintgrCutoff selects the cutoff strategy for the Kramers-Kronig integration.
  • label connects this element setup to a named contour such as RectangleExample or DOSExample.
  • diagElements selects onsite diagonal orbital channels through the s, p, d, and f switches.

3. Typical workflow

Recommended workflow
  1. Start from a working FLEUR input for the system of interest.
  2. Add a greensFunction block with a sensible real-energy mesh and one or more contours.
  3. Add greensfCalculation tags to the species or atom groups of interest.
  4. Run FLEUR.
  5. Inspect the generated Green-function output, typically greensf.hdf.
Practical convergence advice
  • Check the number of bands (numbands) carefully.
  • Check the upper real-axis energy limit (elup).
  • Check the density of the k-point mesh.
  • Check the Brillouin-zone integration mode.

For smooth spectra in bulk calculations, the tetrahedron method is often the best starting point. Histogram mode can still be useful for tests or direct comparison with reference setups.

4. Output quantities

The most important Green-function-related outputs are:

Quantity Meaning
sphavg Spherically averaged projected Green function.
uu, dd, ud, du Radial channel data available when l_sphavg="F".
mmpmat Occupation matrix obtained from contour integration.

The occupation matrix is obtained from

How to read the occupation matrix

The diagonal elements describe orbital occupations, while the offdiagonal elements describe orbital mixing and coherence between local orbitals.

Example path

testing/inputfiles/greens/

  • Fe_bcc_GreensFunction — simplest bulk onsite, spin-diagonal, spherically averaged Green function.
  • GreensFunctionRadial — compares l_sphavg="T" and l_sphavg="F".
  • GreensFunction_IntersiteSingleShell — first intersite shell.
  • GreensFunction_IntersiteMultipleShells — several intersite shells.
  • GreensFunction_MultiContour — several contours in one calculation.
  • GreensFunction_mperp_xdir — noncollinear spin-offdiagonal Green function.
  • GreensFunction_mperp_ydir — second noncollinear spin-offdiagonal example.

6. Application: Exchange parameters

One important application of the Green function is the calculation of intersite exchange parameters . These quantities describe how strongly the magnetic moments on sites and are coupled. They are useful for analyzing magnetic interactions, constructing Heisenberg models, and comparing first-principles results with spin-model simulations.

Why the Green function is useful for $J_{ij}$
  • The Green function gives direct access to onsite and intersite orbital propagation between magnetic atoms.
  • These intersite matrix elements can be combined with exchange splittings to obtain pairwise exchange couplings.
  • This is especially useful when shell-resolved magnetic interactions are needed.
AiiDA-FLEUR

For automated workflows, data provenance, and postprocessing, one can use AiiDA-FLEUR documentation to calculate Jij from the Green-function output in a reproducible workflow environment.