This package implements a comprehensive simulation framework for diffusive spin-triplet Josephson junctions with antiferromagnetically coupled perpendicular magnetization domains and spin-glass interface layers. The framework is designed to model the assymetrical phase shift under sweeping
- Appropriate for sputtered Nb with short mean free path (~5 nm)
- Distinguishes between singlet (short-range) and triplet (long-range) transport
- Computes coherence lengths:
$\xi_s \approx 0.08$ nm (singlet),$\xi_T \approx 0.8-50$ nm (triplet)
- Models F' layers (0.25 nm each) as frozen spin-glass with random exchange couplings
- Uses Heisenberg Random Exchange Hamiltonian for inter-domain frustration
- Implements Metropolis energy minimization for field-step evolution
- History-dependent magnetization that doesn't fully relax to external field
- LRTC amplitude:
$\propto \sin(\theta_L) \sin(\theta_R)$ where$\theta_L$ ,$\theta_R$ are non-collinearity angles - Maximum triplet current when magnetization layers are perpendicular to bulk Fe
- Decay:
$\exp(-d_F/\xi_T)$ showing long-range persistence
- Disorder in F' layers prevents complete suppression expected in clean synthetic antiferromagnets (SAF)
- Explains the observation: no suppression in upper field sweep despite antiferromagnetic configuration
- Quantified via
leakage_ratio = std(sin theta) / |mean(sin theta)|
- Full Fraunhofer pattern calculation with spatially non-uniform
$j_c(x,y)$ - Hysteresis from spin-glass memory effects
- Phase shift
$\delta$ extracted from residual magnetization
rcsj_sde/
├── rcsj_sde/
│ ├── diffusive_triplet.py # Module 1: Geometry, materials, spin-glass
│ ├── fraunhofer_diffusive.py # Module 3: Fraunhofer integration (Usadel kernel)
│ ├── diffusive_rcsj.py # Module 4: RCSJ dynamics with B-dependent I_c
│ ├── validation_tools.py # Module 5: Validation & parameter extraction
│ ├── junction.py # Base junction class (original)
│ └── ... (other original files)
├── examples/
│ ├── diffusive_complete_workflow.ipynb # Full simulation tutorial
│ └── ... (other example notebooks)
├── test_simulation.py # Validation test script
├── README.md # This file
└── requirements.txt # Python dependencies
cd rcsj_sde
python3 -m venv venv
source venv/bin/activatepip install numpy scipy matplotlib scikit-optimize tqdm pandas numbaOr use:
pip install -r requirements.txtpython3 test_simulation.pyExpected output: "[PASS] ALL TESTS PASSED"
source venv/bin/activate
jupyter notebook examples/diffusive_complete_workflow.ipynbfrom rcsj_sde.diffusive_triplet import (
DiffusiveJunctionGeometry, MaterialParameters, MagneticConfiguration, UsadelKernel
)
from rcsj_sde.validation_tools import spectral_leakage_analysis
# Define junction geometry
geometry = DiffusiveJunctionGeometry(
d_S=100.0, # Nb superconductor (nm)
d_F_prime=0.25, # Spin-glass interface (nm)
d_F=10.0, # Bulk Fe (nm)
junction_length=1000.0,
junction_width=1000.0,
n_grid_x=30
)
# Define material parameters
materials = MaterialParameters(
Delta=1.5, # Nb gap (meV)
E_ex=100.0, # Fe exchange (meV)
T=2.0 # Temperature (K)
)
# Create magnetic configuration with spin-glass
mag_config = MagneticConfiguration(geometry, n_spins_per_interface=50)
# Evolve during field sweep
B_sweep = [0, 0.01, 0.02, 0.01, 0]
for B in B_sweep:
mag_config.evolve_field_step(B, n_relax_steps=100, T_eff=0.05)
# Analyze spectral leakage (protects triplet from SAF suppression)
leakage = spectral_leakage_analysis(mag_config)
print(f"Disorder protected: {leakage['disorder_protected']}")| Layer | Material | Thickness | Role |
|---|---|---|---|
| S (outer) | Nb | ~100 nm | Superconductor (BCS gap = 1.5 meV) |
| F' (left) | Fe/Cr | 0.25 nm | Spin-mixer with random exchange |
| F (bulk) | Fe | ~10-15 nm | Ferromagnet with exchange splitting |
| F' (right) | Fe/Cr | 0.25 nm | Spin-mixer with random exchange |
Local supercurrent density from LRTC:
where:
-
$\theta_L$ ,$\theta_R$ = angles between F' and bulk F magnetization -
$\xi_T$ ,$\xi_s$ = triplet and singlet coherence lengths - Triplet term dominates due to much longer range
Total critical current from spatial integration:
where
Extracted Parameters:
-
$I_{c0}$ : Maximum critical current -
$xi_T$ : Triplet coherence length (meV*nm) -
$\delta$ : Phase shift from residual F' magnetization (rad)
In a clean synthetic antiferromagnet (SAF), the two F' layers would create destructive interference, completely suppressing the supercurrent. However, Li observes no suppression in the upper field sweep.
Explanation from simulation:
- Spin-glass disorder creates broad distribution of magnetization angles
- Some regions have strong LRTC signal (
$\sin\theta_L \sin\theta_R > 0$ ) - Spatial averaging over disorder protects global triplet current: "spectral leakage"
- Quantified by
leakage_ratioparameter
The F' layers freeze in history-dependent configurations:
-
Up sweep: Spins partially aligned with
$+B$ -
Down sweep: Spins "lag" behind, partially aligned with previous
$+B$ -
Consequence:
$I_c^{up}(B) \neq I_c^{down}(B)$
After field sweep, F' layers retain net magnetization despite nominally antiparallel bulk Fe:
- Creates local magnetic flux contribution
- Shifts Fraunhofer pattern by phase
$\delta$ - Directly observable in critical current vs. flux curve
-
Fraunhofer Pattern
- Period (in units of
$\Phi_0$ ) - Contrast:
$(I_{c,max} - I_{c,min}) / I_{c,max}$ - Asymmetry: left-right asymmetry measure
- Period (in units of
-
Spectral Leakage
- LRTC mean and std
- Leakage ratio (disorder quantifier)
- Boolean: disorder-protected or not
-
Hysteresis
- Max difference between up/down sweeps
- RMS difference
- Hysteresis loss (area between curves)
-
Fit Quality
$\chi^2$ -
$R^2$ coefficient of determination - Extracted parameters:
$I_{c0}$ ,$\xi_T$ ,$\delta$
The notebook includes code to compare simulation vs experimental data:
from rcsj_sde.validation_tools import compare_simulation_to_experiment
result = compare_simulation_to_experiment(
B_range_sim, Ic_sim,
B_range_exp, Ic_exp,
junction_area
)
print(f"R^2 = {result['r_squared']:.4f}")
print(f"Extracted xi_T = {result['extracted_params']['xi_T']:.1f} nm")
print(f"Extracted delta = {result['extracted_params']['delta']:.4f} rad")| Task | Time | Notes |
|---|---|---|
| Spin-glass init | ~0.1 s | Random exchange matrix generation |
| Single field step | ~0.5 s | 100 Metropolis steps per point |
| Full field sweep (50 points) | ~25 s | Up and down together |
| Fraunhofer integral | ~2 s | Spatial integration over grid |
| RCSJ I-V single point | ~1 s | 5000 time steps |
| Full I-V map (50 fields, 50 currents) | ~2500 s | ~45 minutes |
Optimization tips:
- Use coarser spatial grids (n_grid_x=10-20) for quick exploration
- Use fewer Metropolis steps (n_relax_steps=50) during development
- Parallelize I-V calculations over field values (not yet implemented)
- Houzet & Buzdin (2007): "Long range triplet Josephson effect through a ferromagnetic trilayer", Phys. Rev. B 76, 060504(R)
- Bergeret, Volkov, Efetov (2005): "Proximity effects in superconductor-ferromagnet heterostructures", Rev. Mod. Phys. 77, 1321
- Eschrig (2011): "Spin-polarized supercurrents for spintronics", Physics Today 64 (1), 43
- Robinson et al. (2010): "Controlled Injection of Spin-Triplet Supercurrents", Science 329, 59
- Khaire et al. (2010): "Observation of Spin-Triplet Superconductivity in Co-Based Josephson Junctions", PRL 104, 137002
- Komori et al. (2021) : "Spin-orbit coupling suppression and singlet-state blocking of spin-triplet Cooper pairs" , Science sciadv.abe0128
- Spin-Glass Theory: Edwards-Anderson Model, Sherrington-Kirkpatrick Model
- Random Exchange: Frustrated magnetic systems with disorder
# Ensure virtual environment is activated
source venv/bin/activate
# Reinstall packages if needed
pip install --upgrade numpy scipy numbaProblem: Saturated magnetic layers?
- Check: Are F' layers properly initialized with random orientations?
- Verify: Non-collinearity angles should be distributed across [0, pi]
Last Updated: January 2026
Framework Version: 1.0 (Diffusive Usadel + Spin-Glass)