## Usage of the magnetic force theorem

Fleur has a special inbuilt calculation mode for evaluating some magnetic properties using the magnetic force theorem. The fundamental idea of these calculations is to use a converged charge density of a reference setup and then to estimate the change of the energy of a modified setup by simply comparing the sum of eigenvalues of the different setups. So instead of performing full self-consistency calculations for all setups one needs to perform a self-consistent density for a single setup only. More detailed information on the theoretical background of the approach can be found for example here.

The general procedure for the usage of the force-theorem mode is:

- Select a suitable reference system and obtain a converged charge density.
- Use that charge density and the input-switches described below to evaluate the eigenvalue sum for different setups.

Choice of reference setup

Of course the proper choice of the reference system is of paramount importance in the application of this method. In general one should apply the force theorem method only for the investigation of small changes. You should investigate the influence of the reference state carefully and make sure you understand the dependence of your results to be able to estimate the applicability of your calculations. It is also important that the configuration of the reference setup is compatible to all subsequent force theorem calculations. For example the selected symmetries should not clash with the parameters set for one of the force theorem setups.

In Fleur we currently have implemented the calculation of the following properties using a force-theorem approach:

- Magnetic anisotropy
- Spin-spiral dispersion
- Dzyaloshinskii Moriya interaction
- Heisenberg exchange interaction

All these modes are activated by switches in a `force-theorem`

section in the input-file that has to be added after the `output`

section.
They are activated after the self-consistency loop and only be activated if the current iteration equals the maximal number of iterations specified
in the `fleurInput/calculationSetup/scfLoop/@itmax`

attribute.

For example:

```
<forceTheorem>
<MAE theta="0.0 0.1*Pi" phi="0.0 0.2*Pi" />
</forceTheorem>
```

### Magnetic anisotropy energy

The magnetic anisotropy energy of a magnet can be calculated in this mode. Please be aware of the fact that this mode of course will not include any contribution from the shape-anisotropy. Basically, you compare the eigenvalue sums for different directions of the magnetisation. Hence, you specify for the mode a tag like:

```
<MAE theta="0.0 0.1*Pi" phi="0.0 0.2*Pi" />
```

Both, `theta`

and `phi`

take a list of different angles. The number of angles in both must be the same and in the example above,
two calculations, one with `theta=0.0`

, `phi=0.0`

and a second with `theta=0.1*Pi`

, `phi=02.Pi`

will be performed.

You will find in the out.xml file a summary section listing the resulting eigenvalue sums. For example you will find for the two angle pairs defined above something like:

```
<Forcetheorem_MAE Angles="2">
<Angle theta="0.0000000" phi="0.0000000" ev-sum="-16.7314156"/>
<Angle theta="0.3141593" phi="0.0628319" ev-sum="-16.7314090"/>
</Forcetheorem_MAE>
```

The value in `ev-sum`

is the eigenvalue sum for the respective calculation.

Please note, that this mode requires a collinear reference state.

### Spin-spiral dispersion

The spin-spiral dispersion mode evaluates the eigenvalue sum of a series of spin-spirals of different q-vector. Hence, you have to provide a list of q-vectors as in the example:

```
<spinSpiralDispersion>
<q> 0.0 0.0 0.0 </q>
<q> 0.1 0.0 0.0 </q>
<!-- ... -->
</spinSpiralDispersion>
```

Please note, that the first q-vector should correspond to the q-value of the reference state.

### Dzyaloshinskii Moriya Interaction(DMI)

This mode can be used to estimate the effect of the DMI by calculating the changes of the energy induced in spin-spiral states by the spin-orbit interaction (SOC). The generalized Bloch theorem employed in spin-spiral calculations is fundamentally incompatible with SOC, hence this mode is actually quite different from the other modes discussed here as it employs first order perturbation theory to estimate the effect of spin-orbit coupling on a spin-spiral calculation.

The input can be understood as a combination of the MAE-mode and the Spin-spiral dispersion mode. For example:

```
<DMI theta="0.0 0.5*Pi 0.5*Pi" phi="0.0 0.0 0.5*Pi" >
<qVectors>
<q> 0.0 0.0 0.0 </q>
<q> 0.1 0.0 0.0 </q>
</qVectors>
</DMI>
```

This would provide results for six setups: two q-vectors for each of the three sets of angles for the SOC.

### Heisenberg exchange interaction (Jij)

The mode to calculate data suitable to determine the Heisenberg exchange interactions determines energies for special spin-spiral states.
Starting from a collinear reference state these are constructed as follows: for all pairs of magnetic atoms the magnetisation of the atoms is
tilded by an angle ``thetaj`

and a spin-spiral is superimposed. The corresponding input will specify the q-vectors and the tilting angle.

```
<Jij thetaj="0.1*Pi" >
<qVectors>
<q> 0.0 0.0 0.0 </q>
<q> 0.1 0.0 0.0 </q>
</qVectors>
</Jij>
```

The number of force-theorem eigenvalue sums to be evaluated in this mode can be quite significant. In general a maximum of different setups might be calculated in this mode.