wout file reference

vmex.core.wout implements the complete variable set written by VMEC2000’s wrout.f, with the exact netCDF names, dimensions, dtypes and unit conventions of the reference implementation, so the files load unchanged in simsopt, booz_xform, and other VMEC-ecosystem tools. Use vmex.core.wout.read_wout() / write_wout() for IO and wout_from_state() to build the dataset from a converged solver state.

Unit conventions (applied on write, as in wrout.f):

  • presf, pres, mass, jcuru, jcurv, ctor are divided by \(\mu_0\);

  • phipf, chipf are multiplied by \(2\pi\,\mathrm{signgs}\);

  • q_factor = 1 / iotaf;

  • lmns is on the half mesh; bsubsmns on the full mesh.

Scalars

version_, input_extension, mgrid_file, pcurr_type, pmass_type, piota_type, wb, wp, gamma, rmax_surf, rmin_surf, zmax_surf, nfp, ns, mpol, ntor, mnmax, mnmax_nyq, niter, itfsq, lasym, lrecon, lfreeb, lrfp, ier_flag, aspect, betatotal, betapol, betator, betaxis, b0, rbtor0, rbtor, signgs, IonLarmor, volavgB, ctor, Aminor_p, Rmajor_p, volume_p, ftolv, fsql, fsqr, fsqz, nextcur, extcur(:), mgrid_mode.

Mode arrays and axis

xm, xn, xm_nyq, xn_nyq (with xn = n * nfp); raxis_cc, zaxis_cs (plus raxis_cs, zaxis_cc when lasym).

Profile inputs

am, ac, ai and the spline tables am_aux_s/f, ac_aux_s/f, ai_aux_s/f.

Radial (1D) profiles

Full mesh: iotaf, q_factor, presf, phi, phipf, chi, chipf, jcuru, jcurv, jdotb, bdotb, bdotgradv, DMerc, DShear, DWell, DCurr, DGeod, equif.

Half mesh: iotas, mass, pres, beta_vol, buco, bvco, vp, specw, phips, over_r.

Convergence history: fsqt(:), wdot(:).

Fourier tables (mode x radius)

Full mesh: rmnc, zmns, bsubsmns, currumnc, currvmnc.

Half mesh: lmns, and the Nyquist-resolution tables gmnc, bmnc, bsubumnc, bsubvmnc, bsupumnc, bsupvmnc.

When lasym = T, all asymmetric partners are written (rmns, zmnc, lmnc, gmns, bmns, bsubumns, bsubvmns, bsubsmnc, currumns, currvmns, bsupumns, bsupvmns).

Free-boundary extras

When lfreeb = T: nextcur, extcur, curlabel, mgrid_mode carry the coil-group metadata from the mgrid file. The NESTOR vacuum potential (potsin/xmpot/xnpot) and the *_sur surface arrays are declared for schema compatibility but currently written as netCDF fill — the free-boundary solver does not yet return the vacuum potential (see CLI reference).

Parity with VMEC2000

wout parity against VMEC2000 golden runs is asserted per-variable with combined relative + absolute tolerances (CompareWOut-style methodology from VMEC++ validation), with a documented looser bound for currumnc/currvmnc. See Performance and validation for the case-by-case parity results.