# Are there any codes to study magnetic materials?

I have used a few codes for studying magnetic materials (specifically core-shell nanoparticles with an AFM shell and an FM core). These are:

• Vampire: For the calculation of curie temperature via Magnetisation-Temperature curve simulations;

• Mumax3: For Micromagnetics simulations; and

• Vegas: This is an old package using the heisenberg model. [I havent been able to use this due to compilation issues].

Are there any other software packages? I have also heard of OOMMF, Ubermag and others but I'm not familiar with them. So it would be nice if anyone could shed some light on the main use cases (what kind simulations could be easily done using such software).

• What're the magnetic properties you want to study? FM/AFM ground state? Curie temperature? – Jack Nov 9 '20 at 9:36
• @Jack My main aim was to find out the magnetoelectric constant of an FM/AFM core shell system and for composites. – Anoop A Nair Nov 9 '20 at 9:40
• Do you need this code to calculate the electron wavefunctions too? Or just the magnetic interactions? – taciteloquence Nov 10 '20 at 17:46
• @taciteloquence I'm just interested in the magnetic interactions. DFT codes wont be of much use while dealing with magnetism for atomistic simulations, atleast, that's the picture I've got. Is there a way to use something like Quantum ESPRESSO for doing the same?. Usually one would use codes implementing Monte-Carlo for that. – Anoop A Nair Nov 10 '20 at 18:59

If you already know the electron spatial wavefunctions, then it should be possible to calculate the spin exchange coefficients between electrons on neighboring atoms (by directly integrating them) and generate a spin-interaction-only Hamiltonian. Then you can plug it all into a QMC that is designed just to handle spin (such as Stochastic Series Expansion).

The drawbacks of this approach are that (1) you have to know the electron spatial wavefunctions in advance and (2) your exchange coefficients might produce a QMC sign problem, which means QMC would not work.

I'm 100% open to feedback to help refine this answer.

In addition to those listed, Spin-W is another option:

SpinW is a MATLAB library that can plot and numerically simulate magnetic structures and excitations of given spin Hamiltonian using classical Monte Carlo simulation and linear spin wave theory.

SpinW also has a Python library available, although this is not yet a first-class citizen (you can't pip install it).

There's also the ALPS library and related projects like ALPSCore, although these may be more useful if you're writing your own simulation code.

All these codes give similar capabilities, namely that if you have a model Hamiltonian (e.g. a simple Heisenberg model) you can perform simulations of large system sizes (such as nanoparticles) at finite temperature and derive relevant thermodynamic information, usually via Monte Carlo. Calculation accuracy will be limited by the accuracy of the underlying Hamiltonian. To calculate the Hamiltonian parameters (e.g., for the Heisenberg model, your $$J_{ij}$$ terms) will usually require a first-principles method such as DFT.

Another option is ALF (Algorithms for Lattice Fermions), an auxiliary-field quantum Monte Carlo package. According to its website:

it can simulate any Hamiltonian that can be written in terms of sums of:

• single-body operators,
• squares of single-body operators, and
• single-body operators coupled to an Ising field with given dynamics.

And you can also specify a Bravais lattice and observables, besides the package's predefined ones.

Like with other QMC codes, you have to make sure your Hamiltonian doesn't have a sign problem.

Update: a more detailed description of the package can be found in this answer.

Disclaimer: I've contributed to the package.