---
title: "Curie temperature (Tc)"
description: "Predict the magnetic ordering temperature (Curie, or Néel for antiferromagnets) from classical Heisenberg Monte Carlo on the exchange couplings. TcK is the susceptibility peak in a supercell twice the longest kept coupling wide; TcmeanfieldK is the mean-field upper bound. Also returns the magnetizat"
url: "https://ouro.foundation/routes/mmoderwell/curie-temperature-tc"
id: "29fd80eb-7cf5-4895-a349-4e9864407567"
type: "route"
---

# Curie temperature (Tc)

Route by @mmoderwell in #materials-science (all) · runs in the background · $0.0003/s (about $0.018/min), held up front and settled on actual runtime · typical run ~42 min

- Asset id: `29fd80eb-7cf5-4895-a349-4e9864407567`
- Page: https://ouro.foundation/routes/mmoderwell/curie-temperature-tc

Predict the magnetic ordering temperature (Curie, or Néel for antiferromagnets) from classical Heisenberg Monte Carlo on the exchange couplings. Tc_K is the susceptibility peak in a supercell twice the longest kept coupling wide; Tc_mean_field_K is the mean-field upper bound. Also returns the magnetization curve, which each run charts with Tc marked (set include_dataset to also save it as a dataset), and reference_ordering_overlap: near 1 when the couplings favor the SCF's own collinear order. Below 0.5 the response carries a warning: Tc belongs to a different ordering, because either the SCF started from the wrong one (check with /dft/magnetic/ordering) or a rigid-spin Heisenberg model cannot describe the magnet (e.g. L1₀ FePt, whose ferromagnetism is mediated by induced Pt moments). Shares its calculation with /dft/magnetic/exchange at the same settings. Key descriptor for permanent-magnet screening alongside MAE.

## Inputs

- `file` (primary): the id of a file on Ouro (.cif)

## Body parameters

Send only the ones you mean to change; the defaults are tuned.

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| scf_thr | number | 1e-7 | SCF convergence threshold on the charge-density residual (A… |
| kspacing | number | 0.3 | K-point spacing in 1/Å |
| hubbard_u | object \| null |  | Turn on DFT+U with an effective U in eV per element, e.g. {… |
| basis_size | "SZ" \| "DZP" \| "TZDP" | "DZP" | LCAO basis size: SZ (fastest), DZP (balanced), TZDP (most a… |
| mixing_beta | number \| null |  | Charge mixing step (0–1). Left unset, it is 0.2 for structu… |
| dft_functional | "PBE" \| "PBEsol" \| "LDA" \| "SCAN" | "PBE" | XC functional |
| include_dataset | boolean | false | Also save the curve (curie-temperature) or neighbor shells… |
| initial_magmoms | number[] \| null |  | Signed starting moments in µB, one per atom in CIF site ord… |
| magnetic_elements | string[] \| null |  | Elements whose atoms are the spins of the Heisenberg model… |
| smearing_sigma_ev | number | 0.05 | Occupation smearing width in eV (converted to Rydberg for A… |
| reduce_to_primitive | boolean | false | Evaluate the primitive cell instead of the cell as uploaded… |

## Run it

From an agent connected to Ouro MCP (`https://mcp.ouro.foundation/mcp`):

```
execute_route(route_id="29fd80eb-7cf5-4895-a349-4e9864407567", input_assets={"file": "<file id>"}, wait=false)
```

From Python (`pip install ouro-py`):

```python
from ouro import Ouro

ouro = Ouro()  # reads OURO_API_KEY
action = ouro.routes.execute("29fd80eb-7cf5-4895-a349-4e9864407567", input_assets={"file": "<file id>"})
```

The call returns an action id at once. Read the result with `get_action(id=..., wait=true)` over MCP, or `ouro action wait <id>` from the CLI.
