Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/PRBEM/IRBEM/llms.txt

Use this file to discover all available pages before exploring further.

IRBEM wraps several widely used empirical radiation belt and space environment models, allowing users to compute particle fluxes along spacecraft trajectories or at arbitrary magnetic coordinates. All flux models share a common interface: you specify a model identifier (whichm), a flux type (whatf), energy levels, and either spacecraft positions or magnetic coordinates.

AE8 and AP8 Models

NASA’s AE8 and AP8 models are the long-standing standard for trapped electron and proton flux estimates in the inner magnetosphere. AE8 covers electrons; AP8 covers protons. MIN/MAX variants correspond to solar-minimum and solar-maximum conditions.
Both FLY_IN_NASA_AEAP and GET_AE8_AP8_FLUX support the ESA interpolation scheme described in Daly et al. (1996) for improved accuracy at low altitudes. Activate it by using negative values for whichm (e.g., -1 for AE8 MIN with ESA interpolation).

FLY_IN_NASA_AEAP

Fly a spacecraft through the AE8 or AP8 model and return fluxes along the entire trajectory. Position inputs are given as arrays of spacecraft coordinates in the user-selected coordinate system.

Parameters

ntime
integer
required
Number of time points (up to NTIME_MAX).
sysaxes
integer
required
Key for the input coordinate system. See the coordinate systems reference.
whichm
integer
required
Selects the radiation model:
ValueModel
1AE8 MIN
2AE8 MAX
3AP8 MIN
4AP8 MAX
-1AE8 MIN — ESA interpolation
-2AE8 MAX — ESA interpolation
-3AP8 MIN — ESA interpolation
-4AP8 MAX — ESA interpolation
whatf
integer
required
Type of flux output:
ValueType
1Differential flux at energy E1 (MeV⁻¹ cm⁻² s⁻¹)
2Flux within E1–E2 energy range (MeV⁻¹ cm⁻² s⁻¹)
3Integral flux above E1 (cm⁻² s⁻¹)
Nene
integer
required
Number of energy channels.
energy
double[2, Nene]
required
Energy levels in MeV. First row is E1, second row is E2. When whatf is 1 or 3, E2 is not used.
iyear
integer[ntime]
required
Year for each time point.
idoy
integer[ntime]
required
Day of year for each time point (January 1st = 1).
UT
double[ntime]
required
Universal time in seconds for each time point.
x1
double[ntime]
required
First coordinate of spacecraft position according to sysaxes.
x2
double[ntime]
required
Second coordinate of spacecraft position.
x3
double[ntime]
required
Third coordinate of spacecraft position.

Output

flux
double[NTIME_MAX, Nene]
Particle flux values for each time point and energy channel, in units determined by whatf.

Call Sequences

CALL fly_in_nasa_aeap1(ntime, sysaxes, whichm, whatf, Nene, energy, &
    iyear, idoy, UT, x1, x2, x3, flux)

GET_AE8_AP8_FLUX

Compute AE8 or AP8 flux at specified magnetic coordinates (B/B₀ and L) without following a spacecraft trajectory. The BBo and L inputs replace the time-and-position inputs of FLY_IN_NASA_AEAP.
The B/B₀ and L values passed to this routine must be computed with specific magnetic field models. Use Jensen and Cain (1960) for AE8 MIN, AE8 MAX, and AP8 MIN. Use GSFC 1266 (extended to 1970) for AP8 MAX.

Parameters

ntime
integer
required
Number of positions (up to NTIME_MAX).
whichm
integer
required
Model selection — same values as FLY_IN_NASA_AEAP (1–4, or −1 to −4 for ESA interpolation).
whatf
integer
required
Flux type — same values as FLY_IN_NASA_AEAP (1, 2, or 3).
Nene
integer
required
Number of energy channels.
energy
double[2, Nene]
required
Energy levels (MeV). E2 is ignored when whatf is 1 or 3.
BBo
double[ntime]
required
B/B₀ (field magnitude divided by equatorial field magnitude) for each position.
L
double[ntime]
required
McIlwain L-shell parameter for each position.

Output

flux
double[NTIME_MAX, Nene]
Flux values for each position and energy channel.

Call Sequences

CALL get_ae8_ap8_flux(ntime, whichm, whatf, Nene, energy, BBo, L, flux)

AFRL CRRES Models

The CRRES (Combined Release and Radiation Effects Satellite) models from the Air Force Research Laboratory describe trapped proton and electron fluxes measured during the CRRES mission (1990–1991). CRRESELE covers electrons; CRRESPRO covers protons.
Integral fluxes in the CRRES models have fixed upper energy limits: 5.75 MeV for electrons and 81.3 MeV for protons. Take care when interpreting integral flux outputs near these limits.
Both CRRES routines require the CRRES data files. You must provide the full path to the directory containing these files via the path/crres_path parameter. In the MATLAB wrapper, onera_desp_lib_fly_in_afrl_crres searches for crrespro_quiet.txt on the MATLAB path.

FLY_IN_AFRL_CRRES

Fly a spacecraft through the CRRESPRO or CRRESELE models and return fluxes along the trajectory.

Parameters

ntime
integer
required
Number of time points (up to NTIME_MAX).
sysaxes
integer
required
Key for the input coordinate system.
whichm
integer
required
Selects the CRRES model:
ValueModel
1CRRESPRO QUIET
2CRRESPRO ACTIVE
3CRRESELE AVERAGE
4CRRESELE WORST CASE
5CRRESELE Ap15
whatf
integer
required
Flux type: 1 = differential, 2 = energy-range, 3 = integral.
Nene
integer
required
Number of energy channels.
energy
double[2, Nene]
required
Energy levels (MeV).
iyear
integer[ntime]
required
Year for each time point.
idoy
integer[ntime]
required
Day of year for each time point.
UT
double[ntime]
required
Universal time in seconds.
x1
double[ntime]
required
First coordinate per sysaxes.
x2
double[ntime]
required
Second coordinate.
x3
double[ntime]
required
Third coordinate.
Ap15
double[ntime]
required
Preceding 15-day running average of the Ap index with a one-day delay. Only used when whichm = 5 (CRRESELE Ap15); ignored otherwise.
path
byte array
required
Full path to the directory containing CRRES model data files, as a byte array.
path_len
integer
required
Length of the path string.

Output

flux
double[NTIME_MAX, Nene]
Flux values for each time and energy channel.

Call Sequences

CALL fly_in_afrl_crres1(ntime, sysaxes, whichm, whatf, Nene, energy, &
    iyear, idoy, UT, x1, x2, x3, Ap15, flux, path, path_len)

GET_CRRES_FLUX

Compute CRRES flux at specified B/B₀ and McIlwain L positions.
B/B₀ and L values for GET_CRRES_FLUX must be computed using the IGRF 1985 magnetic field model.
ntime
integer
required
Number of positions (up to NTIME_MAX).
whichm
integer
required
Model selection — same values as FLY_IN_AFRL_CRRES (1–5).
whatf
integer
required
Flux type: 1 = differential, 2 = energy-range, 3 = integral.
Nene
integer
required
Number of energy channels.
energy
double[2, Nene]
required
Energy levels (MeV). E2 is ignored when whatf is 1 or 3.
BBo
double[ntime]
required
B/B₀ for each position.
L
double[ntime]
required
McIlwain L for each position.
Ap15
double[ntime]
required
15-day running average Ap (used only for whichm = 5).
path
byte array
required
Path to CRRES data files.
path_len
integer
required
Length of path string.
flux
double[NTIME_MAX, Nene]
Flux values for each position and energy channel.
CALL get_crres_flux(ntime, whichm, whatf, Nene, energy, BBo, L, Ap15, flux, path, path_len)

Other Radiation Models

FLY_IN_IGE — International Geostationary Electron Model

FLY_IN_IGE computes the electron flux environment at geostationary orbit using the IGE (International Geostationary Electron) model family, developed from LANL-GEO (1976–2006) and JAXA-DRTS data. Three model versions are available:
KeyNameEnergy CoverageYear
1POLE-V130 keV – 1.3 MeV2003
2POLE-V230 keV – 5.2 MeV2005
3IGE-20060.9 keV – 5.2 MeV2006
This routine returns fluxes in MeV⁻¹ cm⁻² s⁻¹ sr⁻¹ (differential) or cm⁻² s⁻¹ sr⁻¹ (integral). To obtain omnidirectional fluxes at GEO, multiply by 4π sr. Integral flux is integrated only up to the maximum energy of the selected model; be especially careful with POLE-V1.
Use is restricted to geostationary altitude, as the model is derived from GEO measurements. The model accepts a mission launch year and duration rather than trajectory positions.

Parameters

launch_year
integer
required
Year of spacecraft start of life in orbit.
mission_duration
integer
required
Mission duration in years.
whichm
integer
required
Model selection: 1 = POLE-V1, 2 = POLE-V2, 3 = IGE-2006.
whatf
integer
required
Flux type: 1 = differential, 2 = energy-range, 3 = integral.
Nene
integer
required
Number of energies. Set to 0 to use the default energy grid (returned in Nene; allocate at least 50 elements in all Nene-sized arrays).
energy
double[2, Nene]
required
Energy levels (MeV).

Output

lower_flux
double[Nene]
Lower-envelope flux across the solar cycle, averaged over the mission duration.
mean_flux
double[Nene]
Mean expected flux averaged over the mission duration.
upper_flux
double[Nene]
Upper-envelope flux including energy-dependent margins; use for conservative design.

Call Sequences

CALL fly_in_ige1(launch_year, mission_duration, whichm, whatf, Nene, energy, &
    Lower_flux, Mean_flux, Upper_flux)

FLY_IN_MEO_GNSS — MEO GNSS Electron Model

FLY_IN_MEO_GNSS computes the electron environment at Medium Earth Orbit (MEO) / GNSS altitudes (~20,000 km, 55° inclination), using LANL-GPS data from 1990 to 2006.
KeyNameEnergy CoverageNotes
1MEO-V1280 keV – 1.12 MeVNo solar cycle variation; use for 11-year averages
2MEO-V2280 keV – 2.24 MeVIssued 2007
Fluxes are in MeV⁻¹ cm⁻² s⁻¹ sr⁻¹ (differential) or cm⁻² s⁻¹ sr⁻¹ (integral). Multiply by 4π sr for omnidirectional fluxes. The model is restricted to GPS-like orbits.

Parameters

launch_year
integer
required
Year of spacecraft start of life.
mission_duration
integer
required
Mission duration in years.
whichm
integer
required
Model: 1 = MEO-V1, 2 = MEO-V2.
whatf
integer
required
Flux type: 1, 2, or 3.
Nene
integer
required
Number of energies; 0 for defaults (allocate ≥50 elements).
energy
double[2, Nene]
required
Energy levels (MeV).

Output

lower_flux
double[Nene]
Lower-envelope flux for the mission duration.
mean_flux
double[Nene]
Mean expected flux.
upper_flux
double[Nene]
Upper-envelope flux with margins.
CALL fly_in_meo_gnss1(launch_year, mission_duration, whichm, whatf, Nene, energy, &
    Lower_flux, Mean_flux, Upper_flux)

Effect Models

SHIELDOSE-2 — Space-Shielding Radiation Dose

SHIELDOSE-2 (Seltzer, 1994) calculates absorbed dose as a function of aluminium shielding depth, given incident electron and proton fluence spectra. It handles three shield geometries:
  • Semi-infinite plane medium (dose vs. depth, irradiation from one side)
  • Transmission surface of a finite plane slab (vs. slab thickness)
  • Centre of a solid sphere (vs. sphere radius; returns ½ the full-sphere dose)

Parameters

idet
integer
required
Detector material: 1=Al, 2=Graphite, 3=Si, 4=Air, 5=Bone, 6=Calcium Fluoride, 7=Gallium Arsenide, 8=Lithium Fluoride, 9=Silicon Dioxide, 10=Tissue, 11=Water.
inuc
integer
required
Nuclear interactions in aluminium: 1=no attenuation, 2=attenuation with local secondary energy deposition, 3=attenuation with secondary deposition plus approximate neutron dose.
imax
integer
required
Number of shielding depth points (up to 71). Values close to 71 are recommended for accurate semi-infinite and sphere geometry results.
iunt
integer
required
Shielding depth units: 1=mils, 2=g/cm², 3=mm.
Zin
double[imax]
required
Shielding thickness values in the units specified by iunt.
EminS / EmaxS
double
required
Min/max energy of solar proton spectrum (MeV).
EminP / EmaxP
double
required
Min/max energy of trapped proton spectrum (MeV).
EminE / EmaxE
double
required
Min/max energy of trapped electron spectrum (MeV).
NPTSP / NPTSE
integer
required
Number of integration points for proton/electron spectrum integration. A value of 1001 is recommended.
JSMAX / JPMAX / JEMAX
integer
required
Number of spectrum points for solar protons / trapped protons / trapped electrons (max 301 each).
eunit
double
required
Unit conversion factor from /energy to /MeV (e.g., 1000 if flux is in /keV).
duratn
double
required
Mission duration as a multiple of unit time (seconds).
ESin / SFLUXin
double[301]
required
Solar proton spectrum: energies (MeV) and fluences (/energy/cm²).
EPin / PFLUXin
double[301]
required
Trapped proton spectrum: energies (MeV) and omnidirectional flux (/energy/cm²/s).
EEin / EFLUXin
double[301]
required
Trapped electron spectrum: energies (MeV) and omnidirectional flux (/energy/cm²/s).

Output

Each dose array has shape [71, 3] where the three columns correspond to: (1) semi-infinite medium, (2) slab transmission surface, (3) ½ dose at sphere centre.
SolDose
double[71, 3]
Dose from solar protons (rads).
ProtDose
double[71, 3]
Dose from trapped protons (rads).
ElecDose
double[71, 3]
Dose from trapped electrons (rads).
BremDose
double[71, 3]
Dose from Bremsstrahlung (rads).
TotDose
double[71, 3]
Total absorbed dose (rads).
CALL shieldose2(IDET, INUC, IMAX, IUNT, Zin, EMINS, EMAXS, EMINP, EMAXP, NPTSP, &
    EMINE, EMAXE, NPTSE, JSMAX, JPMAX, JEMAX, EUNIT, DURATN, &
    ESin, SFLUXin, EPin, PFLUXin, EEin, EFLUXin, &
    SolDose, ProtDose, ElecDose, BremDose, TotDose)
A recommended shielding thickness array with IMAX = 70 covering 1×10⁻⁶ to 50 g/cm² is provided in the IRBEM Fortran source. See the data Zin block in the SHIELDOSE2 Fortran comments.

Build docs developers (and LLMs) love