Skip to content

Configuration Reference

Helicon uses YAML configuration files validated with Pydantic.

Full Example

nozzle:
  type: converging_diverging   # solenoid | converging_diverging | frc_exhaust
  coils:
    - z: -0.05      # axial position [m]
      r: 0.12       # coil radius [m]
      I: 50000      # current [A-turns]
    - z: 0.05
      r: 0.12
      I: 25000
  domain:
    z_min: -0.5     # upstream boundary [m]
    z_max: 2.0      # downstream boundary [m]
    r_max: 0.8      # radial extent [m]
  resolution:
    nz: 512         # axial grid points
    nr: 256         # radial grid points

plasma:
  species: ["D+", "e-"]
  n0: 1.0e19        # number density [m^-3]
  T_i_eV: 5000.0    # ion temperature [eV]
  T_e_eV: 2000.0    # electron temperature [eV]
  v_injection_ms: 200000.0   # injection velocity [m/s]
  mass_ratio: null  # null = physical; e.g. 100 for reduced ratio
  electron_model: kinetic   # kinetic | fluid

diagnostics:
  mode: analysis    # analysis (full dumps) | scan (reduced, for parameter scans)
  field_dump_interval: 500
  particle_dump_interval: 5000

timesteps: 50000
dt_multiplier: 0.95
keep_checkpoints: false
random_seed: null   # null = derived from config hash
output_dir: results/my_run

Loading from Python

from helicon.config.parser import SimConfig

# From YAML file
config = SimConfig.from_yaml("my_nozzle.yaml")

# From a preset
config = SimConfig.from_preset("dfd")   # sunbird | dfd | ppr

# Programmatically
from helicon.config.parser import (
    CoilConfig, DomainConfig, NozzleConfig,
    PlasmaSourceConfig, ResolutionConfig, SimConfig,
)
config = SimConfig(
    nozzle=NozzleConfig(
        type="converging_diverging",
        coils=[CoilConfig(z=0.0, r=0.12, I=50000.0)],
        domain=DomainConfig(z_min=-0.3, z_max=2.0, r_max=0.5),
        resolution=ResolutionConfig(nz=512, nr=256),
    ),
    plasma=PlasmaSourceConfig(
        species=["D+", "e-"],
        n0=1e19, T_i_eV=5000, T_e_eV=2000,
        v_injection_ms=200000,
    ),
    timesteps=50000,
    output_dir="results/my_run",
)

Preset Configurations

Preset Engine Ion T_i (eV) B_throat (T)
sunbird Pulsar Sunbird (DDFD) D⁺ 80 keV 3.0
dfd Princeton DFD D⁺/He³⁺ 50 keV 2.5
ppr Howe PPR p⁺ 100 keV 4.0

Physics Validation

helicon.config.validators.validate_config(config) checks:

  • Domain extends at least 5× coil radius downstream (detachment clearance)
  • Grid resolution > 10 cells per ion Larmor radius
  • Plasma β < 1 at throat (confinement requirement)
  • Timesteps > 10 plasma transit times (statistical convergence)