What’s new in 1.4.0

  • All structures are now inherited from an abstract class (in tofu.geom) and are either of type:
    • ‘In’: there can be plasma inside, they are empty structures (e.g.: Vessel)

    • ‘Out’: there is only plasma outside, they are solid blocks (e.g.: PFC)

  • The Config (in tofu.geom) class handles all Struct instances and provides an easy way to manipulate / visualize the whoel tokamak

  • CamLOS1D and CamLOS2D (standing for ‘Camera made of Lines of Sight, arranged in 1D or 2D) are subclasses of the abstract Rays class (in tofu.geom), they:
    • provide an easy way to handle multiple Rays / LOS

    • compute their intersections with the Struct instances (i.e.: detect vignetting, entry and exit points…)

    • plot the LOS in pre-defined interactive figures (plot(), plot_touch() and plot_sinogram() methods)

    • provide methods for computing :

      the length of each LOS inside an user-provided polygon (e.g.: separatrix) the distance to a 3D flat circle centered on the tokamak’s vertical axis (e.g.magnetic axis) the synthetic signal (i.e: the LOS-integrals of a user-provided scalar 2D or 3D emissivity field), and plot it using a DataCam1D or DataCam2D class

  • Many LOS-computing routines have been optimized and parallelized by Laura Mendoza using Cython, in particular but not only:
    • computation of entry / exit points of each LOS for a large number of PFC / Struct (~ seconds for 1 million LOS and ~ 100 Struct)

    • computation of the length of each LOS inside a Polygon (e.g.: separatrix)

    • computation of the distance to a circle (e.g.: magnetic axis)

    • computation of distance to closed polygons (e.g.: spearatrix) when the LOS passed outside of it

  • DataCam1D and DataCam2D and data-handling classes (in tofu.data), designed to handle data from CamLOS1D or CamLOS2D (i.e.: from 1D or 2D cameras), providing:
    • data visualization pre-defined interactive matplotlib figures (plot(), plot_compare() and plot_combine() methods)

    • basic data-treatment methods (time step and channel selection, interpolation, base signal substraction, fft, svd, …)

    • spectrogram and svd interactive plotting methods

  • DataCam1DSpectral and DataCam2D spectral (tofu.data) provide equivalent classes for handling data with a spectral resolution in addition coming from 1D or 2D cameras

  • Plasma2D (tofu.data) provides a class for handling multiple 1D (radial) and 2D (cross-section) plasma quantities profiles (Te, ne, rho, psi, zeff…) and:
    • provides methods for easy plotting

    • allows each quantity to depend on its own time and space references

    • handles triangular meshes

    • can exports to DataCam1D any 1D profile

  • imas2tofu is a new sub-package addressing imas / tofu interacing, it provides in particular:
    • load_Config() : an easy way to load a Config instance from an ids dict provided by the user (from ‘wall’ ids)

    • load_Plasma2D() : an easy way to load a Plasma2D instance from an ids dict provided by the user (from ‘equilibrium, core_profile’ and ‘core_sources’ idss)

    • load_Diag() : an easy way to load a CamLOS1D instance from an ids dict provided by the user (from a diagnostic-specific ids, e.g.: ‘bolometer’, ‘ece’…)