exchange

Heisenberg bilinear exchange on a Bravis lattice

\[\mathcal{H} = -\tfrac{1}{2}\sum_{ij} \vec{S}_{i} \cdot \mathbb{J}_{ij} \cdot \vec{S}_j\]

The exchange tensors \(\mathbb{J}_{ij}\) are specified between materials or atom positions within the unit cell with an interaction vector \(\vec{r}_{ij}\). By default the interaction vector is in Cartesian coordinates and JAMS will use the detected symmetry operations of the unit cell to generate symmetric vectors.

Specified interactions are not assumed to be reciprocal between materials/unitcell positions, so if \(A\) and \(B\) are materials \(\mathbb{J}_{AB}\) and \(\mathbb{J}_{BA}\) must both be specified.

Settings

exc_file

Name of file containing exchange interaction data (format specified below)

interactions

Inline description of exchange parameters.

Format is one of:

  • ("MaterialA", "MaterialB", [rx, ry, rz], Jij)

  • ("MaterialA", "MaterialB", [rx, ry, rz], Jij_xx, Jij_xy, Jij_xz, Jij_yx, Jij_yy, Jij_yz, Jij_zx, Jij_zy, Jij_zz)

  • (1, 2, [rx, ry, rz], Jij)

interactions = (
    ("A", "A", [0.5, 0.5, 0.5], 3.5e-21)
);

Warning

The data structure used to store the config means that if too many interactions are specified in the interactions setting then the memory usage will be very large. In this case the external exc_file should be used instead.

coordinate_format = "cartesian"

“cartesian” or “fractional”

Coordinate system for the interaction vectors rij.

symops = true

If true then the symmetry operations of the crystal will be applied to each interaction vector.

print_unfolded = false

If true then the input interactions are printed out to file after any symmetry operations have been applied.

energy_cutoff = 1e-26

Remove any exchange interactions where abs(Jij) < energy_cutoff.

radius_cutoff = 100.0

Remove any exchange interactions where norm(rij) > radius_cutoff (in units of lattice parameters).

distance_tolerance = jams::defaults::lattice_tolerance

Tolerance to use for floating point comparisons of distances for rij.