Also known as the Magnetic Materials Database.
I came to this database looking for magnetocrystalline anisotropy energy data for permanent magnet design. After scraping the data from the app, which is already in great shape, there are a few more things I'm doing to make sense of the data and to get it ready for modeling.
Although the full database has around 3800 materials, more like 1200 of them have MAE data. Still pretty great!
The database reports MAE as the energies for each axis. Take this example from the raw data:
{
"material_id": "MMD-14",
"formula": "Fe\u2082CoN",
"formula_pretty": "Fe2CoN",
"magnetic_data": {
"Magnetic ordering": "Ferromagnetic",
"Total magnetic moment": "23.95 \u03bc _B /cell",
"Averaged magnetic moment": "1.50 \u03bc _B /atom",
"Magnetic polarization, J _s = \u03bc _0 M _s": "1.72 T (= 1368.7 emu/cm ^3 )",
"Curie temperature, T _C": "",
"Magnetic anisotropy constant, K ^a-c": "1.01 MJ/m ^3 (= 1.02 meV/cell)",
"Magnetic anisotropy constant, K ^b-c": "-1.80 MJ/m ^3 (= -1.82 meV/cell)",
"Magnetic anisotropy constant, K ^b-a": "-2.81 MJ/m ^3 (= -2.84 meV/cell)",
"Magnetic easy axis": "b",
"Magnetic hardness parameter, \u03ba": "0.66"
},
"thermodynamic_data": {
"Formation energy (vs. elemental phases)": "-8.8 meV/atom",
"Formation energy above hull": "91.8 meV/atom"
},
}
For each axis a, b, and c, we can learn about the energy that it takes to move magnetization from one to another.
MAE is typically calculated as the energy difference between magnetization along different crystallographic axes. From the data:
K^(a-c) = 1.01 MJ/m³ (energy difference between a-axis and c-axis)
K^(b-c) = -1.80 MJ/m³ (energy difference between b-axis and c-axis)
K^(b-a) = -2.81 MJ/m³ (energy difference between b-axis and a-axis)
These anisotropy constants represent the MAE between different axis pairs. The data also confirms that the b-axis is the easy axis (lowest energy direction).
To verify the consistency of these values: K^(b-a) should equal K^(b-c) - K^(a-c) = -1.80 - 1.01 = -2.81 MJ/m³ ✓
The easy axis is the direction where the magnet "wants" to point - like how a compass needle naturally points north. It's the direction that requires the least energy for magnetization.
Think of it like:
A ball in a valley - it naturally rolls to the lowest point
The easy axis is the "lowest energy valley" for the magnetic moments
In the data, we can see the value take on one of the three types:
<111>
This is a crystallographic direction in Miller indices
Points from one corner of a cube through the opposite corner (the "body diagonal")
Common in cubic crystals like FeCo₇N
Means the magnet prefers to point along this diagonal direction
Visual: Imagine a dice - <111> goes from corner 1 to corner 7 (through the center)
a, b, or c
Refers to the [letter]-axis in the crystal (usually the vertical axis)
Common in hexagonal or tetragonal crystals
Means magnetization prefers to point "up and down" along this axis
Often seen in materials like Nd₂Fe₁₄B
Visual: Like a pencil standing on its end - magnetization points along the pencil's length
ab plane
Means the easy "axis" is actually an easy plane
Magnetization can point anywhere within the plane defined by a and b axes
No preferred direction within this plane - all directions are equally easy
Results in lower magnetic hardness since there's less directional constraint
Visual: Like a compass on a table - it can freely rotate in the horizontal plane
Magnetic polarization Js = μ₀Ms represents the magnetic field strength produced by the material's magnetization. Here's how it's computed:
Starting from the magnetic moment data:
Total magnetic moment is given in μB/cell (Bohr magnetons per unit cell)
Convert to magnetization Ms (magnetic moment per unit volume):
Ms = (Total magnetic moment × μB) / (Unit cell volume)
Where μB = 9.274 × 10⁻²⁴ J/T (Bohr magneton)
Magnetic polarization: Js = μ₀ × Ms
Where μ₀ = 4π × 10⁻⁷ T·m/A
We can take this value and move between it and Ms anytime, which I've seen more often than it represented this way. Also, we have total magnetic moment for any material using CHGNet and the predicted magnetic moments.
Think of this as "how strong of a magnet" the material can be.
Imagine each atom as a tiny compass needle
When all these tiny compasses point in the same direction, they create a magnetic field
Magnetic polarization measures the total strength of this field
Higher number = stronger magnet
I hadn't really come across this parameter in my research before, so I was curious to find out what it meant. It's fully available for the 1200 materials, and all already standardized as a single value.
The magnetic hardness parameter κ (kappa) is computed using the formula:
κ = √(K₁/μ₀Ms²)
Where:
K₁ = first-order magnetocrystalline anisotropy constant (in J/m³)
μ₀ = permeability of free space (4π × 10⁻⁷ T·m/A)
Ms = saturation magnetization (in A/m)
The magnetic polarization Js = μ₀Ms is given in Tesla.
Think of it this way:
MAE = "How much energy penalty for pointing the wrong way"
High MAE: Like a valley with steep walls - the magnet strongly "wants" to point in one specific direction
Low MAE: Like a shallow dish - the magnet doesn't care much which way it points
Magnetic Hardness = "How hard is it to rotate the magnetization"
Depends on both:
The MAE (depth of the valley)
The magnetic strength Ms (how strong the magnet is)
Interpretation:
κ < 1: Magnetically soft material (easy to demagnetize)
κ > 1: Magnetically hard material (difficult to demagnetize)
κ ≈ 1: Boundary between soft and hard magnetic behavior
The hardness parameter essentially compares the magnetocrystalline anisotropy energy to the magnetostatic energy, indicating how well a material can maintain its magnetization against demagnetizing fields.
Would it make sense to go after if it combines both MAE and Ms? No, probably not. Turns out you can get some very large values of k, but that doesn't mean it's a good PM.
Check out this example:
{
"material_id": "MMD-1287",
"formula": "Nb\u2083Fe",
"formula_pretty": "Nb3Fe",
"magnetic_data": {
"Magnetic ordering": "Ferromagnetic",
"Total magnetic moment": "2.20 \u03bc _B /cell",
"Averaged magnetic moment": "0.28 \u03bc _B /atom",
"Magnetic polarization, J _s = \u03bc _0 M _s": "0.19 T (= 151.2 emu/cm ^3 )",
"Curie temperature, T _C": "",
"Magnetic anisotropy constant, K ^a-c": "0.13 MJ/m ^3 (= 0.11 meV/cell)",
"Magnetic easy axis": "c",
"Magnetic hardness parameter, \u03ba": "115.83"
},
"thermodynamic_data": {
"Formation energy (vs. elemental phases)": "193.3 meV/atom",
"Formation energy above hull": "255.6 meV/atom"
},
"mp_id": "mp-999438",
"cif_url": "https://magmat.herokuapp.com/download/MMD-1287/cif"
}
Magnetic hardness is a massive 115.83. Well over 1, and well over a value of 1.5 - 2.0 for leading NdFeB magnets.
The Smoking Gun: Tiny Magnetization
Js = 0.19 T (vs. 1.72 T for your Fe₂CoN)
Average moment = 0.28 μB/atom (vs. 1.50 for Fe₂CoN)
This is 9× weaker magnetization than typical ferromagnets!
Commercial PMs need BOTH high κ (>1) AND high Ms
κ = 115 with tiny Ms → weak total magnetic field
Like having unbreakable thread that can only lift a feather
Nd₂Fe₁₄B (Neodymium magnets)
κ ≈ 1.5 - 2.0
MAE: ~4.9 MJ/m³
Js: ~1.61 T
The current king of permanent magnets
SmCo₅
κ ≈ 2.5 - 3.5
MAE: ~17-20 MJ/m³
Js: ~1.05-1.15 T
Exceptional temperature stability
https://magmat.herokuapp.com/benchmark
It's cool to see the authors of the database make an effort to compare their calculations with experimental data. As this dataset is all DFT generated, we want to get some understanding of how well it matches reality.
Testing 6 materials to known experimental values, the authors find an R2 of 0.58. It seems in general the theory underestimates the experimental value.
While not very impressive, it is good to see that the data always undershoots. This is good because if we find a material with a relatively high MAE, chances are it would be even higher in reality which is exactly what we'd hope for.
Working on cleaning the data we have available and seeing what we've got for a MAE prediction model. This resource was nice and had all the raw files uploaded so that you can process them yourself and