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.