Source code for MCEq.geometry.corsikaatm
import os
import sysconfig
from ctypes import c_double, cdll
base = os.path.dirname(os.path.abspath(__file__))
suffix = sysconfig.get_config_var("EXT_SUFFIX")
# Some Python 2.7 versions don't define EXT_SUFFIX
if suffix is None and "SO" in sysconfig.get_config_vars():
suffix = sysconfig.get_config_var("SO")
assert suffix is not None, "Shared lib suffix was not identified."
for fn in os.listdir(base):
if fn.startswith("_libcorsikaatm") and fn.endswith(suffix):
corsika_acc = cdll.LoadLibrary(os.path.join(base, fn))
break
for func in [
corsika_acc.corsika_get_density,
corsika_acc.planar_rho_inv,
corsika_acc.corsika_get_m_overburden,
]:
func.restype = c_double
[docs]
def corsika_get_density(h_cm, a, b, c, t, hl):
"""Wrap arguments for ctypes function"""
return corsika_acc.corsika_get_density(
c_double(h_cm), a.ctypes, b.ctypes, c.ctypes, t.ctypes, hl.ctypes
)
[docs]
def planar_rho_inv(X, cos_theta, a, b, c, t, hl):
"""Wrap arguments for ctypes function"""
return corsika_acc.planar_rho_inv(
c_double(X),
c_double(cos_theta),
a.ctypes,
b.ctypes,
c.ctypes,
t.ctypes,
hl.ctypes,
)
[docs]
def corsika_get_m_overburden(h_cm, a, b, c, t, hl):
"""Wrap arguments for ctypes function"""
return corsika_acc.corsika_get_m_overburden(
c_double(h_cm), a.ctypes, b.ctypes, c.ctypes, t.ctypes, hl.ctypes
)