torus_solver.gui_vtk¶
- class torus_solver.gui_vtk.CutGUIConfig(R0=3.0, a=0.3, n_theta=32, n_phi=32, theta_cut=3.141592653589793, sigma_s=1.0, V_cut_default=1.0, V_cut_slider_max=5.0, sigma_theta=0.25, sigma_phi=0.25, cg_tol=1e-08, cg_maxiter=800, n_electrodes_max=32, current_default_A=1000.0, current_slider_max_A=3000.0, biot_savart_eps=1e-08, n_fieldlines=12, fieldline_steps=500, fieldline_step_size_m=0.03, Bext0=0.0001, Bpol0=0.0, bg_field_default_on=False, bg_poloidal_default_on=False, surface_opacity=0.35, window_size=(1200, 820))[source]¶
Bases:
object- Parameters:
R0 (float)
a (float)
n_theta (int)
n_phi (int)
theta_cut (float)
sigma_s (float)
V_cut_default (float)
V_cut_slider_max (float)
sigma_theta (float)
sigma_phi (float)
cg_tol (float)
cg_maxiter (int)
n_electrodes_max (int)
current_default_A (float)
current_slider_max_A (float)
biot_savart_eps (float)
n_fieldlines (int)
fieldline_steps (int)
fieldline_step_size_m (float)
Bext0 (float)
Bpol0 (float)
bg_field_default_on (bool)
bg_poloidal_default_on (bool)
surface_opacity (float)
window_size (tuple[int, int])
- Bext0: float = 0.0001¶
- Bpol0: float = 0.0¶
- R0: float = 3.0¶
- V_cut_default: float = 1.0¶
- V_cut_slider_max: float = 5.0¶
- a: float = 0.3¶
- bg_field_default_on: bool = False¶
- bg_poloidal_default_on: bool = False¶
- biot_savart_eps: float = 1e-08¶
- cg_maxiter: int = 800¶
- cg_tol: float = 1e-08¶
- current_default_A: float = 1000.0¶
- current_slider_max_A: float = 3000.0¶
- fieldline_step_size_m: float = 0.03¶
- fieldline_steps: int = 500¶
- n_electrodes_max: int = 32¶
- n_fieldlines: int = 12¶
- n_phi: int = 32¶
- n_theta: int = 32¶
- sigma_phi: float = 0.25¶
- sigma_s: float = 1.0¶
- sigma_theta: float = 0.25¶
- surface_opacity: float = 0.35¶
- theta_cut: float = 3.141592653589793¶
- window_size: tuple[int, int] = (1200, 820)¶
- class torus_solver.gui_vtk.GUIConfig(R0=3.0, a=1.0, n_theta=32, n_phi=32, sigma_theta=0.25, sigma_phi=0.25, sigma_s=1.0, cg_tol=1e-08, cg_maxiter=800, n_electrodes_max=32, current_default_A=1000.0, current_slider_max_A=3000.0, biot_savart_eps=1e-08, n_fieldlines=12, fieldline_steps=500, fieldline_step_size_m=0.03, Bext0=0.0001, Bpol0=0.0, bg_field_default_on=False, bg_poloidal_default_on=False, surface_opacity=0.35, window_size=(1200, 820))[source]¶
Bases:
object- Parameters:
R0 (float)
a (float)
n_theta (int)
n_phi (int)
sigma_theta (float)
sigma_phi (float)
sigma_s (float)
cg_tol (float)
cg_maxiter (int)
n_electrodes_max (int)
current_default_A (float)
current_slider_max_A (float)
biot_savart_eps (float)
n_fieldlines (int)
fieldline_steps (int)
fieldline_step_size_m (float)
Bext0 (float)
Bpol0 (float)
bg_field_default_on (bool)
bg_poloidal_default_on (bool)
surface_opacity (float)
window_size (tuple[int, int])
- Bext0: float = 0.0001¶
- Bpol0: float = 0.0¶
- R0: float = 3.0¶
- a: float = 1.0¶
- bg_field_default_on: bool = False¶
- bg_poloidal_default_on: bool = False¶
- biot_savart_eps: float = 1e-08¶
- cg_maxiter: int = 800¶
- cg_tol: float = 1e-08¶
- current_default_A: float = 1000.0¶
- current_slider_max_A: float = 3000.0¶
- fieldline_step_size_m: float = 0.03¶
- fieldline_steps: int = 500¶
- n_electrodes_max: int = 32¶
- n_fieldlines: int = 12¶
- n_phi: int = 32¶
- n_theta: int = 32¶
- sigma_phi: float = 0.25¶
- sigma_s: float = 1.0¶
- sigma_theta: float = 0.25¶
- surface_opacity: float = 0.35¶
- window_size: tuple[int, int] = (1200, 820)¶
- class torus_solver.gui_vtk.TorusCutVoltageGUI(cfg, *, initial_electrodes=None)[source]¶
Bases:
objectVTK GUI: a toroidal cut voltage drives poloidal current; optional extra electrodes add sources/sinks.
- Parameters:
cfg (CutGUIConfig)
initial_electrodes (dict | None)
- mode: Literal['none', 'add_source', 'add_sink', 'move']¶
- scalar_name: Literal['|K|', 'V', 's', 'K_theta', 'K_phi']¶
- selected: int | None¶
- surface: TorusSurface¶
- class torus_solver.gui_vtk.TorusElectrodeGUI(cfg, *, initial_electrodes=None)[source]¶
Bases:
objectVTK GUI: click to add/move electrodes; slider to change current; see field lines.
- Parameters:
cfg (GUIConfig)
initial_electrodes (dict | None)
- mode: Literal['none', 'add_source', 'add_sink', 'move']¶
- scalar_name: Literal['|K|', 'V', 's', 'K_theta', 'K_phi']¶
- selected: int | None¶
- surface: TorusSurface¶
- class torus_solver.gui_vtk.TorusVmecBnOptimizeGUI(cfg)[source]¶
Bases:
objectVTK GUI: optimize electrode sources/sinks to reduce (B·n)/norm(B) on a target VMEC surface.
- Parameters:
cfg (VmecOptGUIConfig)
- mode: Literal['none', 'add_source', 'add_sink', 'move']¶
- scalar_name: Literal['|K|', 'V', 's', 'K_theta', 'K_phi']¶
- selected: int | None¶
- surface: TorusSurface¶
- class torus_solver.gui_vtk.VmecOptGUIConfig(vmec_input='examples/data/vmec/input.QA_nfp2', surf_n_theta=32, surf_n_phi=56, fit_margin=0.7, R0=1.0, a=0.3, n_theta=32, n_phi=32, B0=1.0, Bpol0=0.0, trace_include_bg_default_on=True, n_electrodes_max=64, n_electrodes_init=32, current_default_A=1000000.0, current_slider_max_A=10000000.0, sigma_theta=0.25, sigma_phi=0.25, sigma_s=1.0, current_scale=None, init_current_raw_rms=1.0, lr=0.01, reg_currents=0.001, optimize_positions=True, steps_per_opt=25, bn_p=8, cg_tol=1e-10, cg_maxiter=2000, use_preconditioner=False, biot_savart_eps=1e-08, n_fieldlines=12, fieldline_steps=500, fieldline_step_size_m=0.03, surface_opacity=0.35, target_opacity=0.25, window_size=(1300, 880))[source]¶
Bases:
object- Parameters:
vmec_input (str)
surf_n_theta (int)
surf_n_phi (int)
fit_margin (float)
R0 (float)
a (float)
n_theta (int)
n_phi (int)
B0 (float)
Bpol0 (float)
trace_include_bg_default_on (bool)
n_electrodes_max (int)
n_electrodes_init (int)
current_default_A (float)
current_slider_max_A (float)
sigma_theta (float)
sigma_phi (float)
sigma_s (float)
current_scale (float | None)
init_current_raw_rms (float)
lr (float)
reg_currents (float)
optimize_positions (bool)
steps_per_opt (int)
bn_p (int)
cg_tol (float)
cg_maxiter (int)
use_preconditioner (bool)
biot_savart_eps (float)
n_fieldlines (int)
fieldline_steps (int)
fieldline_step_size_m (float)
surface_opacity (float)
target_opacity (float)
window_size (tuple[int, int])
- B0: float = 1.0¶
- Bpol0: float = 0.0¶
- R0: float = 1.0¶
- a: float = 0.3¶
- biot_savart_eps: float = 1e-08¶
- bn_p: int = 8¶
- cg_maxiter: int = 2000¶
- cg_tol: float = 1e-10¶
- current_default_A: float = 1000000.0¶
- current_scale: float | None = None¶
- current_slider_max_A: float = 10000000.0¶
- fieldline_step_size_m: float = 0.03¶
- fieldline_steps: int = 500¶
- fit_margin: float = 0.7¶
- init_current_raw_rms: float = 1.0¶
- lr: float = 0.01¶
- n_electrodes_init: int = 32¶
- n_electrodes_max: int = 64¶
- n_fieldlines: int = 12¶
- n_phi: int = 32¶
- n_theta: int = 32¶
- optimize_positions: bool = True¶
- reg_currents: float = 0.001¶
- sigma_phi: float = 0.25¶
- sigma_s: float = 1.0¶
- sigma_theta: float = 0.25¶
- steps_per_opt: int = 25¶
- surf_n_phi: int = 56¶
- surf_n_theta: int = 32¶
- surface_opacity: float = 0.35¶
- target_opacity: float = 0.25¶
- trace_include_bg_default_on: bool = True¶
- use_preconditioner: bool = False¶
- vmec_input: str = 'examples/data/vmec/input.QA_nfp2'¶
- window_size: tuple[int, int] = (1300, 880)¶
- torus_solver.gui_vtk.run_torus_cut_voltage_gui(*, cfg=CutGUIConfig(R0=3.0, a=0.3, n_theta=32, n_phi=32, theta_cut=3.141592653589793, sigma_s=1.0, V_cut_default=1.0, V_cut_slider_max=5.0, sigma_theta=0.25, sigma_phi=0.25, cg_tol=1e-08, cg_maxiter=800, n_electrodes_max=32, current_default_A=1000.0, current_slider_max_A=3000.0, biot_savart_eps=1e-08, n_fieldlines=12, fieldline_steps=500, fieldline_step_size_m=0.03, Bext0=0.0001, Bpol0=0.0, bg_field_default_on=False, bg_poloidal_default_on=False, surface_opacity=0.35, window_size=(1200, 820)), initial_electrodes=None)[source]¶
Entry point for the cut-voltage (+electrodes) GUI examples.
- Return type:
None- Parameters:
cfg (CutGUIConfig)
initial_electrodes (dict | None)
- torus_solver.gui_vtk.run_torus_electrode_gui(*, cfg=GUIConfig(R0=3.0, a=1.0, n_theta=32, n_phi=32, sigma_theta=0.25, sigma_phi=0.25, sigma_s=1.0, cg_tol=1e-08, cg_maxiter=800, n_electrodes_max=32, current_default_A=1000.0, current_slider_max_A=3000.0, biot_savart_eps=1e-08, n_fieldlines=12, fieldline_steps=500, fieldline_step_size_m=0.03, Bext0=0.0001, Bpol0=0.0, bg_field_default_on=False, bg_poloidal_default_on=False, surface_opacity=0.35, window_size=(1200, 820)), initial_electrodes=None)[source]¶
Entry point for examples.
- Return type:
None- Parameters:
cfg (GUIConfig)
initial_electrodes (dict | None)
- torus_solver.gui_vtk.run_torus_vmec_optimize_gui(*, cfg=VmecOptGUIConfig(vmec_input='examples/data/vmec/input.QA_nfp2', surf_n_theta=32, surf_n_phi=56, fit_margin=0.7, R0=1.0, a=0.3, n_theta=32, n_phi=32, B0=1.0, Bpol0=0.0, trace_include_bg_default_on=True, n_electrodes_max=64, n_electrodes_init=32, current_default_A=1000000.0, current_slider_max_A=10000000.0, sigma_theta=0.25, sigma_phi=0.25, sigma_s=1.0, current_scale=None, init_current_raw_rms=1.0, lr=0.01, reg_currents=0.001, optimize_positions=True, steps_per_opt=25, bn_p=8, cg_tol=1e-10, cg_maxiter=2000, use_preconditioner=False, biot_savart_eps=1e-08, n_fieldlines=12, fieldline_steps=500, fieldline_step_size_m=0.03, surface_opacity=0.35, target_opacity=0.25, window_size=(1300, 880)))[source]¶
- Return type:
None- Parameters:
cfg (VmecOptGUIConfig)