The Open FUSION Toolkit 1.0.0-6f445ef
An open-source framework for fusion and plasma science and engineering
Loading...
Searching...
No Matches
Functions
OpenFUSIONToolkit.TokaMaker.bootstrap Namespace Reference

Detailed Description

Solvers and helper functions for TokaMaker bootstrap current functionality.

Authors
Daniel Burgess
Date
January 2026

Functions

 analyze_bootstrap_edge_spike (psi_N, j_bootstrap, diagnostic_plots=False)
 Analyze bootstrap edge spike location, width, and height.
 
 calculate_ln_lambda (Te, Ti, ne, ni, Zeff=1.0, electron_lnLambda_model='sauter', ion_lnLambda_model='unity')
 Calculate Coulomb logarithm for electrons and ions.
 
 find_optimal_scale (mygs, psi_N, pressure, ffp_prof, pp_prof, j_inductive, Ip_target, psi_pad, spike_prof=None, find_j0=True, scale_j0=1.0, tolerance=0.01, max_iter=5, diagnostic_plots=False, verbose=True)
 Optimize scaling to match input/output \(j_0\) or \(I_p\).
 
 Hmode_profiles (edge=0.08, ped=0.4, core=2.5, rgrid=201, expin=1.5, expout=1.5, widthp=0.04, xphalf=None)
 This function generates H-mode density and temperature profiles evenly spaced in your favorite radial coordinate.
 
 parameterize_edge_jBS (psi, amp, center, width, offset, sk, y_sep=0.0, blend_width=0.03, tail_alpha=1.5)
 Generate parameterized edge bootstrap current profile with tunable concave fall-off.
 
 redl_bootstrap (psi_N=None, Te=None, Ti=None, ne=None, ni=None, pe=None, pi=None, Zeff=None, R=None, q=None, eps=None, fT=None, I_psi=None, dT_e_dpsi=None, dT_i_dpsi=None, dn_e_dpsi=None, dn_i_dpsi=None, dp_dpsi=None, ln_lambda_e=17.0, ln_lambda_ii=17.0, use_legacy_L34=False, use_sign_q=False, ion_collisionality_model='Zeff', formula_form='jB', Zeff_override=None, nu_e_star_override=None, nu_i_star_override=None)
 Bootstrap current via Redl et al., Phys.
 
 solve_jphi (mygs, ffp_prof, pp_prof, Ip_target, pax_target)
 Solve Grad-Shafranov equilibrium for given profiles.
 
 solve_with_bootstrap (mygs, ne, Te, ni, Ti, Zeff, Ip_target, inductive_jphi=None, Zis=None, scale_jBS=1.0, isolate_edge_jBS=False, psi_pad=1e-3, iterations=3, diagnostic_plots=False, parameterize_jBS=False, use_OMFIT_sauter=False, verbose=True)
 Self-consistently compute bootstrap current from H-mode profiles.
 

Function Documentation

◆ analyze_bootstrap_edge_spike()

analyze_bootstrap_edge_spike (   psi_N,
  j_bootstrap,
  diagnostic_plots = False 
)

Analyze bootstrap edge spike location, width, and height.

Parameters
psi_NNormalized poloidal flux profile \(\hat{\psi}\)
j_bootstrapBootstrap current profile \(j_{BS}(\hat{\psi})\)
diagnostic_plotsIf True, plot diagnostic figures
Returns
Dictionary with spike properties and parameterized spike model

◆ calculate_ln_lambda()

calculate_ln_lambda (   Te,
  Ti,
  ne,
  ni,
  Zeff = 1.0,
  electron_lnLambda_model = 'sauter',
  ion_lnLambda_model = 'unity' 
)

Calculate Coulomb logarithm for electrons and ions.

Parameters
TeElectron temperature profile \(T_e\) [eV]
TiIon temperature profile \(T_i\) [eV]
neElectron density profile \(n_e\) [m$^{-3}$]
niIon density profile \(n_i\) [m$^{-3}$]
ZeffEffective charge \(Z_{eff}\)
electron_lnLambda_modelModel for electron Coulomb log ('sauter', 'NRL')
ion_lnLambda_modelModel for ion Coulomb log ('unity', 'Zavg')
Returns
Tuple ( \(\ln\Lambda_e\), \(\ln\Lambda_{ii}\))

◆ find_optimal_scale()

find_optimal_scale (   mygs,
  psi_N,
  pressure,
  ffp_prof,
  pp_prof,
  j_inductive,
  Ip_target,
  psi_pad,
  spike_prof = None,
  find_j0 = True,
  scale_j0 = 1.0,
  tolerance = 0.01,
  max_iter = 5,
  diagnostic_plots = False,
  verbose = True 
)

Optimize scaling to match input/output \(j_0\) or \(I_p\).

Parameters
mygsGrad-Shafranov solver object
psi_NNormalized poloidal flux profile \(\hat{\psi}\)
pressurePlasma pressure profile \(p(\hat{\psi})\) [Pa]
ffp_profToroidal current profile ( \(j_\phi(\hat{\psi})\))
pp_profPressure gradient profile (

◆ Hmode_profiles()

Hmode_profiles (   edge = 0.08,
  ped = 0.4,
  core = 2.5,
  rgrid = 201,
  expin = 1.5,
  expout = 1.5,
  widthp = 0.04,
  xphalf = None 
)

This function generates H-mode density and temperature profiles evenly spaced in your favorite radial coordinate.

Copied from https://omfit.io/_modules/omfit_classes/utils_fusion.html

Parameters
edgeSeparatrix height (float)
pedPedestal height (float)
coreOn-axis profile height (float)
rgridNumber of radial grid points (int)
expinInner core exponent for H-mode pedestal profile (float)
expoutOuter core exponent for H-mode pedestal profile (float)
widthpWidth of pedestal (float)
xphalfPosition of tanh (float, optional)
Returns
H-mode profile array over radial grid

◆ parameterize_edge_jBS()

parameterize_edge_jBS (   psi,
  amp,
  center,
  width,
  offset,
  sk,
  y_sep = 0.0,
  blend_width = 0.03,
  tail_alpha = 1.5 
)

Generate parameterized edge bootstrap current profile with tunable concave fall-off.

Parameters
psiNormalized poloidal flux profile \(\hat{\psi}\)
ampAmplitude of edge skewed Gaussian spike
centerCenter location of edge skewed Gaussian spike
widthWidth of edge skewed Gaussian spike
offsetHeight of core flat profile
skSkewness parameter of Gaussian
y_sepValue at separatrix ( \(\hat{\psi}=1\)) for profile
blend_widthBlending width for smooth transition in \(\hat{\psi}\)
tail_alphaControls right-side fall-off shape (1.0 = cosine, >1.0 = concave)
Returns
Parameterized bootstrap current profile as array over \(\hat{\psi}\)

◆ redl_bootstrap()

redl_bootstrap (   psi_N = None,
  Te = None,
  Ti = None,
  ne = None,
  ni = None,
  pe = None,
  pi = None,
  Zeff = None,
  R = None,
  q = None,
  eps = None,
  fT = None,
  I_psi = None,
  dT_e_dpsi = None,
  dT_i_dpsi = None,
  dn_e_dpsi = None,
  dn_i_dpsi = None,
  dp_dpsi = None,
  ln_lambda_e = 17.0,
  ln_lambda_ii = 17.0,
  use_legacy_L34 = False,
  use_sign_q = False,
  ion_collisionality_model = 'Zeff',
  formula_form = 'jB',
  Zeff_override = None,
  nu_e_star_override = None,
  nu_i_star_override = None 
)

Bootstrap current via Redl et al., Phys.

Plasmas 28, 022502 (2021)

Parameters
psi_NNormalized poloidal flux profile \(\hat{\psi}\)
TeElectron temperature profile \(T_e\) [eV]
TiIon temperature profile \(T_i\) [eV]
neElectron density profile \(n_e\) [m$^{-3}$]
niIon density profile \(n_i\) [m$^{-3}$]
peElectron pressure profile \(p_e\) [Pa]
piIon pressure profile \(p_i\) [Pa]
ZeffEffective charge \(Z_{eff}\)
RMajor radius \(R\) [m]
qSafety factor \(q\)
epsInverse aspect ratio \(\epsilon\)
fTTrapped particle fraction \(f_T\)
I_psiToroidal current function \(I(\psi)\)
dT_e_dpsiDerivative of \(T_e\) w.r.t. \(\psi\)
dT_i_dpsiDerivative of \(T_i\) w.r.t. \(\psi\)
dn_e_dpsiDerivative of \(n_e\) w.r.t. \(\psi\)
dn_i_dpsiDerivative of \(n_i\) w.r.t. \(\psi\)
dp_dpsiDerivative of total pressure w.r.t. \(\psi\)
ln_lambda_eElectron Coulomb logarithm \(\ln\Lambda_e\)
ln_lambda_iiIon Coulomb logarithm \(\ln\Lambda_{ii}\)
use_legacy_L34Use legacy L34 formula (see Redl Eq. 19)
use_sign_qMultiply by sign of \(q\)
ion_collisionality_modelModel for ion collisionality ('Zeff', 'Koh', 'unity')
formula_formUse 'jB' (default) or 'jboot1' equation
Zeff_overrideOverride \(Z_{eff}\) if set
nu_e_star_overrideOverride electron collisionality if set
nu_i_star_overrideOverride ion collisionality if set
Returns
Tuple (bootstrap current profile \(j_{BS}(\hat{\psi})\), coefficient dictionary)

◆ solve_jphi()

solve_jphi (   mygs,
  ffp_prof,
  pp_prof,
  Ip_target,
  pax_target 
)

Solve Grad-Shafranov equilibrium for given profiles.

Parameters
mygsGrad-Shafranov solver object
ffp_profToroidal current profile ( \(j_\phi(\hat{\psi})\)), type 'jphi-linterp'
pp_profPressure gradient profile (

◆ solve_with_bootstrap()

solve_with_bootstrap (   mygs,
  ne,
  Te,
  ni,
  Ti,
  Zeff,
  Ip_target,
  inductive_jphi = None,
  Zis = None,
  scale_jBS = 1.0,
  isolate_edge_jBS = False,
  psi_pad = 1e-3,
  iterations = 3,
  diagnostic_plots = False,
  parameterize_jBS = False,
  use_OMFIT_sauter = False,
  verbose = True 
)

Self-consistently compute bootstrap current from H-mode profiles.

Parameters
mygsGrad-Shafranov solver object
neElectron density profile \(n_e(\hat{\psi})\) [m$^{-3}$]
TeElectron temperature profile \(T_e(\hat{\psi})\) [eV]
niIon density profile \(n_i(\hat{\psi})\) [m$^{-3}$]
TiIon temperature profile \(T_i(\hat{\psi})\) [eV]
ZeffEffective charge profile \(Z_{eff}(\hat{\psi})\)
Ip_targetTarget plasma current \(I_p\) [A]
inductive_jphiInductive toroidal current profile \(j_{ind}(\hat{\psi})\)
ZisList of impurity atomic numbers (default: [1.0])
scale_jBSScaling factor for bootstrap current
isolate_edge_jBSIf True, isolate edge spike in bootstrap current
psi_padPadding for flux surface calculations
iterationsNumber of solver iterations
diagnostic_plotsIf True, plot diagnostic figures
parameterize_jBSIf True, use parameterized edge spike
use_OMFIT_sauterIf True, use OMFIT Sauter model
Returns
Dictionary with total, bootstrap, inductive, and isolated edge current profiles