scotty package
Contents
scotty package#
- scotty.beam_me_up(poloidal_launch_angle_Torbeam, toroidal_launch_angle_Torbeam, launch_freq_GHz, mode_flag, launch_beam_width, launch_beam_curvature, launch_position, vacuumLaunch_flag=True, relativistic_flag=False, find_B_method='torbeam', density_fit_parameters=None, temperature_fit_parameters=None, shot=None, equil_time=None, vacuum_propagation_flag=False, Psi_BC_flag=None, poloidal_flux_enter=1.0, poloidal_flux_zero_density=1.0, poloidal_flux_zero_temperature=1.0, delta_R=- 0.0001, delta_Z=0.0001, delta_K_R=0.1, delta_K_zeta=0.1, delta_K_Z=0.1, interp_order=5, len_tau=102, rtol=0.001, atol=1e-06, interp_smoothing=0, ne_data_path=PosixPath('.'), magnetic_data_path=PosixPath('.'), Te_data_path=PosixPath('.'), output_path=PosixPath('.'), input_filename_suffix='', output_filename_suffix='', figure_flag=True, detailed_analysis_flag=True, verbose_output_flag=True, quick_run=False, plasmaLaunch_K=array([0., 0., 0.]), plasmaLaunch_Psi_3D_lab_Cartesian=array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]), density_fit_method=None, temperature_fit_method=None, B_T_axis=None, B_p_a=None, R_axis=None, minor_radius_a=None, auto_delta_sign_Z=1, auto_delta_sign_R=1)#
Run the beam tracer
- Initialise density fit parameters. One of:
spline with data from file
Stefanikova
O(3) polynomial
tanh
quadratic
See
profile_fit
for more detailsIf relativistic_flag enabled, initialise temperature fit parameters. Not yet fully implemented. One of:
spline with data from file
linear
See ‘profile_fit’ for more details
- Initialise magnetic field method. One of:
TORBEAM
OMFIT
analytical
EFIT++
UDA
curvy slab
test/test_notime
See
geometry
for more detailsInitialise beam launch parameters (vacuum/plasma). See
launch
for more details.Propagate single ray with IVP solver to find point where beam leaves plasma. See
ray_solver
for more detailsPropagate beam with IVP solver
Dump raw output
Analysis
- Parameters
poloidal_launch_angle_Torbeam (float) – Poloidal angle of antenna in TORBEAM convention
toroidal_launch_angle_Torbeam (float) – Toroidal angle of antenna in TORBEAM convention
launch_freq_GHz (float) – Frequency of the launched beam in GHz
mode_flag (int) – Either
+/-1
, used to determine which mode branch to uselaunch_beam_width (float) – Width of the beam at launch
launch_beam_curvature (float) – Curvatuve of the beam at launch
launch_position (FloatArray) – Position of the antenna in cylindrical coordinates
vacuumLaunch_flag (bool) – If
True
, launch beam from vacuum, otherwise beam launch position is inside the plasma alreadyvacuum_propagation_flag (bool) – If
True
, run solver from the launch position, and don’t use analytical vacuum propagationrelativistic_flag (bool) – If
True
, generates a temperature profile from given data or parameters and applies relativistic corrections to electron mass.Psi_BC_flag (String) – If
None
, do no special treatment at plasma-vacuum boundary Ifcontinuous
, apply BCs for continuous ne but discontinuous gradient of ne Ifdiscontinuous
, apply BCs for discontinuous ne UsingTrue
orFalse
is now deprecatedpoloidal_flux_enter (float) – Normalised poloidal flux label of plasma boundary. If vacuum_propagation_flag, then this is where the solver begins. If Psi_BC_flag, then this is where the plasma-vacuum BCs are applied
poloidal_flux_zero_density (float) – At and above this normalised poloidal flux label, Scotty sets the electron density to zero
poloidal_flux_zero_temperature (float) – At and above this normalised poloidal flux label, Scotty sets the electron temperature to zero. This effectively negates any relativistic mass corrections.
plasmaLaunch_Psi_3D_lab_Cartesian (FloatArray) – \(\Psi\) of beam in lab Cartesian coordinates. Required if
vacuumLaunch_flag
isFalse
plasmaLaunch_K (FloatArray) – Wavevector of beam at launch. Required if
vacuumLaunch_flag
isFalse
delta_R (float) – Finite difference spacing to use for
R
delta_Z (float) – Finite difference spacing to use for
Z
delta_K_R (float) – Finite difference spacing to use for
K_R
delta_K_zeta (float) – Finite difference spacing to use for
K_zeta
delta_K_Z (float) – Finite difference spacing to use for
K_Z
find_B_method (Union[str, scotty.geometry.MagneticField]) –
See
create_magnetic_geometry
for more information.Common options:
"efitpp"
uses magnetic field data from efitpp files directly"torbeam"
uses magnetic field data from TORBEAM input files"omfit"
is similar to"torbeam"
but reads the data from JSON files"UDA_saved"
reads EFIT data from numpy’s.npz
files"analytical"
uses a constant current density circular equilibrium
Or pass a
MagneticField
instance directly.density_fit_parameters (Optional[Sequence]) –
A list of parameters to be passed to the
density_fit_method
constructor. See the docs for the individual methods for the meaning of their parametersNote
These parameters should not include
poloidal_flux_zero_density
density_fit_method (Optional[Union[str, Callable[[Union[float, numpy.ndarray[Any, numpy.dtype[numpy.float64]]]], Union[float, numpy.ndarray[Any, numpy.dtype[numpy.float64]]]]]]) –
Parameterisation of the density profile. Either a callable (see
ProfileFit
), or one of the following options:"smoothing-spline"
: 1D smoothing spline (SmoothingSplineFit
)"smoothing-spline-file"
: 1D smoothing spline constructed from file (SmoothingSplineFit.from_dat_file
)"stefanikova"
: combination of modified hyperbolic \(\tan\) and a Gaussian (StefanikovaFit
)"poly3"
or"polynomial"
: \(n\)-th order polynomial (PolynomialFit
)"tanh"
: hyperbolic \(\tan\) (TanhFit
)"quadratic"
: constrained quadratic (QuadraticFit
)
If
density_fit_method
is a string, then the correspondingDensityFit
object is constructed usingpoloidal_flux_zero_density
anddensity_fit_parameters
."smoothing-spline-file"
looks for a file calledne<input_filename_suffix>.dat
inne_data_path
. It also usesinterp_order
andinterp_smoothing
instead ofdensity_fit_parameters
.Deprecated since version 2.4.0: If
None
(the default) is passed, the method will be guessed from the length ofdensity_fit_parameters
. In this case,quadratic
andtanh
parameters _should_ includepoloidal_flux_zero_density
as the last value.temperature_fit_method (Optional[Union[str, Callable[[Union[float, numpy.ndarray[Any, numpy.dtype[numpy.float64]]]], Union[float, numpy.ndarray[Any, numpy.dtype[numpy.float64]]]]]]) – Parameterisation of the temperature profile. Leverages the same ProfileFit class used for density. See density_fit_method for details.
len_tau (int) – Number of output
tau
pointsrtol (float) – Relative tolerance for ODE solver
atol (float) – Absolute tolerance for ODE solver
quick_run (bool) – If true, then run only the ray tracer and get an analytic estimate of the \(K\) cut-off location
auto_delta_sign_Z – A sign variable that takes on +1/-1. Ensures that forward differebce is always in negative poloidal flux gradient direction (into the plasma). Current implementation is flawed because the MagneticField has to be constructed in order to determine the intersection point and corresponding sign. Sign flip is thus subsequently applied throughout the code except for the already constructed field.
auto_delta_sign_R – Similar to auto_delta_sign_Z but for the R coordinate
- scotty.get_parameters_for_Scotty(diagnostic, launch_freq_GHz=None, mirror_rotation=None, mirror_tilt=None, find_B_method=None, find_ne_method=None, equil_time=None, shot=None, user=None)#
Return default settings and parameters for the given diagnostic
- Parameters
diagnostic –
Name of the diagnostic to load parameters for. One of:
"DBS_NSTX_MAST"
Doppler reflectometry (Neal Crocker, Jon Hillesheim, Tony Peebles)
Used on MAST, was on loan from NSTX
"DBS_SWIP_MAST-U"
Doppler reflectometry (Peng Shi)
"DBS_UCLA_MAST-U"
"CPS_UCLA_MAST-U"
This system can either be used in CPS or DBS mode, but not both simultaneously (not yet, anyway)
CPS version not yet implemented
"hiK_Strath_MAST-U"
High-k scattering diagnostic, Strathclyde (David Speirs, Kevin Ronald)
Not yet implemented
"DBS_synthetic"
Circular flux surfaces
launch_freq_GHz (Optional[float]) – Beam launch frequency in GHz
mirror_rotation (Optional[float]) – Angle in degrees (FIXME: clarify)
mirror_tilt (Optional[float]) – Angle in degrees (FIXME: clarify)
find_B_method (Optional[str]) –
Equilibrium magnetic field method. One of:
"torbeam"
: Loads data from ne.dat and topfile. I guess I should implement loading for inbeam.dat at some point, too"UDA"
: Loads EFIT data directly from uda (not yet implemented)"EFITpp"
: Uses MSE constrained EFIT"UDA_saved"
: Loads EFIT data from file. UDA data must first be saved to said file
find_ne_method (Optional[str]) –
Density profile method. One of:
"torbeam"
"EFITpp"
"UDA_saved"
Submodules#
- scotty.FindPsiBeam4 module
- scotty.PlotAllLocalisationLog module
- scotty.PlotInput module
- scotty.PlotPsiBC2 module
- scotty.beam_me_up module
- scotty.check_ModeConversion module
- scotty.check_input module
- scotty.check_output module
- scotty.compare_plot module
- scotty.density_fit module
- scotty.derivatives module
- scotty.fun_evolution module
- scotty.fun_general module
- scotty.geometry module
- scotty.hamiltonian module
- scotty.hornpy module
- scotty.init_bruv module
- scotty.launch module
- scotty.lensalot module
- scotty.plot3_Torbeam_benchmark module
- scotty.plot3_pretty module
- scotty.plot4 module
- scotty.postmortem2 module
- scotty.ray_solver
- scotty.torbeam module
- scotty.typing module