exchange-neartree

Heisenberg bilinear exchange based on spherical distance

\[\mathcal{H} = -\tfrac{1}{2}\sum_{ij} J(r_{ij}) \mathbf{S}_{i} \cdot \mathbf{S}_j\]

The exchange \(J(r_{ij})\) is specified between materials. Neighbours with the given material types at distance \(r_{ij}\) will be given the exchange value. Note that this assumes spherical shells and is most appropriate for simple lattices (e.g. SC, BCC, FCC) with high symmetry. For systems with more complex symmetry it may be the case that exchange interactions have the same distance but belong to different stars of \(\mathbf{r}\) which are not linked by symmetry. No checks are made for violations of such symmetry.

Note

Specified interactions are assumed to be reciprocal between materials/unitcell positions, so if \(A\) and \(B\) are materials only one of \(J_{AB}\) and \(J_{BA}\) should be specified.

Settings

interactions (required | list)

Description of exchange parameters.

Format is ("MaterialA", "MaterialB", r_ij, J_ij)

interactions = (
    ("A", "A", 1.0, 3.5e-21)
);
energy_units (optional | string | "joules")

Energy units of the exchange coefficients in one of the JAMS supported units.

distance_units (optional | string | "lattice_constants")

Distance units of \(r_{ij}\) in one of the JAMS supported units.

energy_cutoff (optional | float | 1e-26)

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

shell_width (optional | float | 1e-3)

Width of the shell around the radius \(r_{ij}\) to detect neighbours to account for small precision errors (in units of distance_units).

Example

Ni-Fe on an FCC lattice.

hamiltonians = (
  {
    module = "exchange-neartree";
    energy_units = "meV";
    distance_units = "lattice_constants";
    shell_width = 1e-3;
    interactions = (
       // Shell 1 (r = 1/sqrt(2), 12 nbrs)
       ("Ni", "Ni", 0.70710678, 17.0),
       ("Ni", "Fe", 0.70710678, 31.0),
       ("Fe", "Fe", 0.70710678, 44.0)
    );
  }
);