In MCEq, geometry is everything related to the medium in which the particle cascade develops. The very basic geometrical functions for the polar coordinate system of the Earth - no it's not flat, but just azimuth symmetric - are located in MCEq.geometry.geometry
. The density parameterizations and interfaces are in MCEq.geometry.density_profiles
This module includes classes and functions modeling the Earth's atmosphere. Currently, two different types models are supported:
- Linsley-type/CORSIKA-style parameterization
- Numerical atmosphere via external routine (NRLMSISE-00)
Both implementations have to inherit from the abstract class EarthsAtmosphere
, which provides the functions for other parts of the program. In particular the function EarthsAtmosphere.get_density
Typical interaction:
$ atm_object = CorsikaAtmosphere("BK_USStd")
$ atm_object.set_theta(90)
$ print 'density at X=100', atm_object.X2rho(100.)
- The class
MCEqRun
will only the following routines:: EarthsAtmosphere.set_theta
,EarthsAtmosphere.r_X2rho
.
If you are extending this module make sure to provide these functions without breaking compatibility.
- Example:
An example can be run by executing the module:
$ python MCEq/atmospheres.py
MCEq.geometry.density_profiles
The module contains the geometry for an azimuth symmetric Earth.
MCEq.geometry.geometry
CTypes interface to the C-version of the NRLMSISE-00 code, originally developed by Picone et al.. The C-translation is by Dominik Brodowski <https://www.brodo.de/space/nrlmsise/index.html>_.
MCEq.geometry.nrlmsise00
This set of functions are C implementations of the piecewise defined exponential profiles as used in CORSIKA. An efficient implementation is difficult in plain numpy.
MCEq.geometry.corsikaatm