Medium
The propagation medium is defined through the Medium Module. At the heart of this module lies the abstract base
class gtsimulation.Medium.GTGeneralMedium. To create a custom medium model, users must implement a concrete
subclass and define several core methods. The primary method, calculate_model(),
updates the model’s internal state for given coordinates. The subclass must also implement
get_density() (returns the mass density),
get_element_list() (returns the list of chemical elements), and
get_element_abundance() (returns their fractional abundances).
The module provides several pre-configured models for common environments:
General: A homogeneous medium.
Magnetosphere: The NRLMSIS-00, 2.0, 2.1 atmosphere model.
Galaxy: A model for interstellar gas based on the work of Jóhannesson et al.
The concrete classes for these models are located within the gtsimulation.Medium module and its submodules.
This module is optional and is only required when simulating physical processes that depend on the medium, such as
nuclear interactions. During trajectory calculation, it tracks the accumulated grammage (g/cm²), which is essential
for calculating interaction probabilities. The modular design allows for straightforward integration of user-defined
medium models by subclassing the base class.