# Carbon
C cells (40 × 40 × 40 Å) walking the **sp² ↔ sp³ axis** rather than
the disorder axis the other materials walk. Each Voronoi grain is
sampled from either graphite (sp², 3-coordinated, 120°) or diamond
(sp³, 4-coordinated, 109.5°) and the regime sets the mix:
| Regime | w_graphite | w_diamond | character |
|---|---|---|---|
| `sp2_nc` | 1.00 | 0.00 | nanocrystalline graphite (all sp²) |
| `mixed_nc` | 0.50 | 0.50 | sp²/sp³ mixed nanocrystalline |
| `sp3_nc` | 0.00 | 1.00 | nanocrystalline diamond (all sp³) |
Every regime is nanocrystalline (`grain_size = 18 Å`); the variable
is the grain chemistry, not the grain size. Shell-relax weights are
fixed at `bond_weight=2.5, angle_weight=1.2, repulsion_weight=2.0`.
The
composite shell target carries two virtual species (`sp2_C`,
`sp3_C`); each grain's atoms inherit the species index of the master
they came from, so 3-coordinated graphite atoms develop bonds at
120° and 4-coordinated diamond atoms develop bonds at 109.5°
*inside the same cell*.
## Static vs refined
Top row is `Supercell.generate()` with the static-relaxation
pipeline only (FIRE quench, no orientation search); bottom row is
the same cell with `refine_orientations=True` enabled. The SO(3)
coordinate search that aligns each grain's lattice to its local
environment before the same final FIRE quench runs. Drag any panel
to orbit; all six rotate in sync.
## g(r) overlay: static vs refined, all 6 cases
Six g(r) curves on a single radial axis: each regime's static and
refined post-FIRE state, overlaid for direct comparison. The pair
dropdown below the plot lets you switch between the sp²-C and
sp³-C channels.
## Per-regime trajectories
Click any regime for the orientation-refinement movie, the FIRE
quench movie (with sp³ tetrahedra rendered at the final state),
the cost trace, and the g3 distribution.
```{toctree}
:maxdepth: 1
sp2_nc
mixed_nc
sp3_nc
```