Radiation belt and effect models#

AE8 and AP8 models#

FLY_IN_NASA_AEAP#

This function allows one to fly any spacecraft in NASA AE8 min/max and AP8 min/max models. The output can be differential flux or flux within an energy range or integral flux.

Note

This routine can also provide the ESA interpolation scheme as detailed in (Daly et al., 1996) for enhanced flux interpolations at low altitudes. This interpolation scheme can be activated using negative values for the whichm parameter.

Inputs:
  • ntime (integer) – number of time points up to NTIME_MAX (see Maximum array sizes)

  • sysaxes (integer) – key for the input coordinate system (see Coordinate systems)

  • whichm (integer) –

    key to select the NASA model:

    • 1 : AE8 MIN

    • 2 : AE8 MAX

    • 3 : AP8 MIN

    • 4 : AP8 MAX

    • -1 : AE8 MIN - ESA Interpolation

    • -2 : AE8 MAX - ESA Interpolation

    • -3 : AP8 MIN - ESA Interpolation

    • -4 : AP8 MAX - ESA Interpolation

  • whatf (integer) –

    key to select the type of flux to compute:

    • 1 : differential flux at energy E1 (MeV-1 cm-2 s-1)

    • 2 : flux within the E1 to E2 energy range (MeV-1 cm-2 s-1)

    • 3 : integral flux above E1 (cm-2 s-1)

  • Nene (integer) – number of energies

  • energy (array of [2, Nene] double) – energy levels (E1, E2), if whatf is 1 or 3, E2 is not considered (MeV)

  • iyear (array of ntime integer) – the year

  • idoy (array of ntime integer) – the day of year (January 1st is idoy=1)

  • UT (array of ntime double) – the time in seconds

  • x1 (array of ntime double) – first coordinate according to sysaxes

  • x2 (array of ntime double) – second coordinate according to sysaxes

  • x3 (array of ntime double) – third coordinate according to sysaxes

Outputs:
  • flux (array of [NTIME_MAX, Nene] double) – flux values for all times and energies

Calling sequence:
From MATLAB#
Flux = onera_desp_lib_fly_in_nasa_aeap(sysaxes,whichm,energy,matlabd,x1,x2,x3)
From IDL#
result = call_external(lib_name, 'fly_in_nasa_aeap', ntime,sysaxes,whichm,whatf,Nene,energy,iyear,idoy, UT,x1,x2,x3,flux, /f_value)
From FORTRAN#
CALL fly_in_nasa_aeap1(ntime,sysaxes,whichm,whatf,Nene,energy,iyear,idoy, UT,x1,x2,x3,flux)
GET_AE8_AP8_FLUX#

This function allows one to compute NASA AE8 min/max and AP8 min/max flux for any B/Bo, L position.

The output can be differential flux or flux within an energy range or integral flux.

Note

This routine can also provide the ESA interpolation scheme as detailed in (Daly et al., 1996) for enhanced flux interpolations at low altitudes. This interpolation scheme can be activated using negative values for the whichm parameter.

Inputs:
  • ntime (integer) – number of time points up to NTIME_MAX (see Maximum array sizes)

  • whichm (integer) –

    key to select the NASA model:

    • 1 : AE8 MIN

    • 2 : AE8 MAX

    • 3 : AP8 MIN

    • 4 : AP8 MAX

    • -1 : AE8 MIN - ESA Interpolation

    • -2 : AE8 MAX - ESA Interpolation

    • -3 : AP8 MIN - ESA Interpolation

    • -4 : AP8 MAX - ESA Interpolation

  • whatf (integer) –

    key to select the type of flux to compute:

    • 1 : differential flux at energy E1 (MeV-1 cm-2 s-1)

    • 2 : flux within the E1 to E2 energy range (MeV-1 cm-2 s-1)

    • 3 : integral flux above E1 (cm-2 s-1)

  • Nene (integer) – number of energies

  • energy (array of [2, Nene] double) – energy levels (E1, E2), if whatf is 1 or 3, E2 is not considered (MeV)

  • BBo (array of ntime double) – B/Bequator for all position where to compute the fluxes. Note that the Jensen and Cain 1960 magnetic field model must be used for any call to AE8min, AE8max, AP8min and GSFC 1266 (extended to year 1970) for any call to AP8max.

  • L (array of ntime double) – Provide McIlwain L for all position where to compute the fluxes. Note that the Jensen and Cain 1960 magnetic field model must be used for any call to AE8min, AE8max, AP8min and GSFC 1266 (extended to year 1970) for any call to AP8max.

Outputs:
  • flux (array of [NTIME_MAX, Nene] double) – flux values for all times and energies

Calling sequence:
From MATLAB#
onera_desp_lib_get_ae8_ap8_flux(whichm,energy,BBo,L)
From IDL#
result = call_external(lib_name, 'get_ae8_ap8_flux_idl', ntime,whichm,whatf,Nene,energy,BBo,L,,flux, /f_value)
From FORTRAN#
CALL get_ae8_ap8_flux (ntime,whichm,whatf,Nene,energy,BBo,L,flux )

AFRL CRRES models#

FLY_IN_AFRL_CRRES#

This function allows one to fly any spacecraft in AFRL CRRESPRO and CRRESELE models. The output can be differential flux or flux within an energy range or integral flux.

..warning

Integral flux for electron are from E to  5.75 MeV and for proton are
from E to 81.3 MeV.

To run CRRES models you have to set the full path for the source code directory (where CRRES data files are located).

Inputs:
  • ntime (integer) – number of time points up to NTIME_MAX (see Maximum array sizes)

  • sysaxes (integer) – key for the input coordinate system (see Coordinate systems)

  • whichm (integer) –

    key to select the NASA model:

    • 1 : CRRESPRO QUIET

    • 2 : CRRESPRO ACTIVE

    • 3 : CRRESELE AVERAGE

    • 4 : CRRESELE WORST CASE

    • 5 : CRRESELE Ap15

  • whatf (integer) –

    key to select the type of flux to compute:

    • 1 : differential flux at energy E1 (MeV-1 cm-2 s-1)

    • 2 : flux within the E1 to E2 energy range (MeV-1 cm-2 s-1)

    • 3 : integral flux above E1 (cm-2 s-1)

  • Nene (integer) – number of energies

  • energy (array of [2, Nene] double) – energy levels (E1, E2), if whatf is 1 or 3, E2 is not considered (MeV)

  • iyear (array of ntime integer) – the year

  • idoy (array of ntime integer) – the day of year (January 1st is idoy=1)

  • UT (array of ntime double) – the time in seconds

  • x1 (array of ntime double) – first coordinate according to sysaxes

  • x2 (array of ntime double) – second coordinate according to sysaxes

  • x3 (array of ntime double) – third coordinate according to sysaxes

  • Ap15 (array of ntime double) – preceding 15-day running average of the Ap index assuming a one day delay, ignored if whichm is not equal to 5

  • path (byte array) – path to locate the files which describe CRRES models

  • path_len (integer) – length of the path string

Outputs:
  • flux (array of [NTIME_MAX, Nene] double) – flux values for all times and energies

Calling sequence:
From MATLAB#
Flux = onera_desp_lib_fly_in_afrl_crres(sysaxes,whichm,energy,matlabd,x1,x2,x3,Ap15,crres_path)
From IDL#
result = call_external(lib_name, 'fly_in_afrl_crres', ntime,sysaxes,whichm,whatf,Nene,energy,iyear,idoy, UT,x1,x2,x3,Ap15,flux,path,path_len, /f_value)
From FORTRAN#
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#

This function allows one to compute AFRL CRRESPRO and CRRESELE flux for any B/Bo, L position. The output can be differential flux or flux within an energy range or integral flux.

..warning

Integral flux for electron are from E to  5.75 MeV and for proton are
from E to 81.3 MeV.

To run CRRES models you have to set the full path for the source code directory (where CRRES data files are located).

Inputs:
  • ntime (integer) – number of time points up to NTIME_MAX (see Maximum array sizes)

  • sysaxes (integer) – key for the input coordinate system (see Coordinate systems)

  • whichm (integer) –

    key to select the NASA model:

    • 1 : CRRESPRO QUIET

    • 2 : CRRESPRO ACTIVE

    • 3 : CRRESELE AVERAGE

    • 4 : CRRESELE WORST CASE

    • 5 : CRRESELE Ap15

  • whatf (integer) –

    key to select the type of flux to compute:

    • 1 : differential flux at energy E1 (MeV-1 cm-2 s-1)

    • 2 : flux within the E1 to E2 energy range (MeV-1 cm-2 s-1)

    • 3 : integral flux above E1 (cm-2 s-1)

  • Nene (integer) – number of energies

  • energy (array of [2, Nene] double) – energy levels (E1, E2), if whatf is 1 or 3, E2 is not considered (MeV)

  • BBo (array of ntime double) – B/Bequator for all position where to compute the fluxes. Note that the IGRF1985 magnetic field model must be used.

  • L (array of ntime double) – Provide McIlwain L for all position where to compute the fluxes. Note that the IGRF1985 magnetic field model must be used.

  • Ap15 (array of ntime double) – preceding 15-day running average of the Ap index assuming a one day delay, ignored if whichm is not equal to 5

  • path (byte array) – path to locate the files which describe CRRES models

  • path_len (integer) – length of the path string

Outputs:
  • flux (array of [NTIME_MAX, Nene] double) – flux values for all times and energies

Calling sequence:
From MATLAB#
Flux = onera_desp_lib_get_crres_flux(whichm,energy,BBo,L,Ap15,crres_path)
From IDL#
result = call_external(lib_name, 'get_crres_flux_idl', ntime,whichm,whatf,Nene,energy,BBo,L,Ap15,flux,path,path_len, /f_value)
From FORTRAN#
CALL get_crres_flux(ntime,whichm,whatf,Nene,energy,BBo,L,Ap15,flux,path,path_len)

Other radiation models#

FLY_IN_IGE#

This function allows one to fly any geostationary spacecraft in IGE (International Geostationary Electron) models. The use of the model is limited to geostationary altitude as it is based on LANL-GEO bird series (1976 to 2006) and JAXA-DRTS spacecraft (added in IGE2006). Three versions of the model are provided:

POLE-V1:

it covers electron energies from 30 keV-1.3 MeV (issued in 2003) Published in Boscher D., S. Bourdarie, R. Friedel and D. Belian, A model for the geostationary electron environment : POLE, IEEE Trans. Nuc. Sci., 50 (6), 2278-2283, Dec. 2003.

POLE-V2:

it covers electron energies from 30 keV-5.2 MeV (issued in 2005) Published in Sicard-Piet A., S. Bourdarie, Boscher D. and R. Friedel, A model for the geostationary electron environment : POLE from 30 keV to 5.2 MeV, IEEE Trans. Nuc. Sci., 53 (4), 1844-1850, Aug. 2006.

IGE-2006:

it covers electron energies from 0.9 keV-5.2 MeV (issued in 2006) Submitted in Sicard-Piet A., S. Bourdarie, Boscher D., R. Friedel M. Thomsen, T. Goka, H. Matsumoto, H. Koshiishi, A new international geostationary model: IGE-2006 from 1 keV to 5.2 MeV, JGR-Space Weather, 2007.

POLE stands for Particle-ONERA-LANL-Electrons. The output can be differential flux or flux within an energy range or integral flux.

Warning

This routine returns fluxes expressed in MeV-1 cm-2 s-1 sr-1`for differential fluxes of in cm:sup:-2` s-1 sr-1 for integral fluxes. To derive omnidirectional fluxes at GEO, one should multiply these flux values by 4π sr.

Warning

Integral flux for electron are from E to Emax of the given selected model. So one should be very carrefull when looking at integral fluxes with POLE-V1 .

Inputs:
  • launch_year (integer) – year of spacecraft start of life in space

  • mission_duration (integer) – duration of the mission (year)

  • whichm (integer) –

    key to select the NASA model:

    • 1 : POLE-V1

    • 2 : POLE-V2

    • 3 : IGE-2006

  • whatf (integer) –

    key to select the type of flux to compute:

    • 1 : differential flux at energy E1 (MeV-1 cm-2 s-1 sr-1)

    • 2 : flux within the E1 to E2 energy range (MeV-1 cm-2 s-1 sr-1)

    • 3 : integral flux above E1 (cm-2 s-1 sr-1)

  • Nene (integer) – number of energies - if 0, then the default energies are used (their number are returned in the Nene parameter, and their values are returned in the energy parameter) in this case all arrays of size Nene should be at least of size 50

  • energy (array of [2, Nene] double) – energy levels (E1, E2), if whatf is 1 or 3, E2 is not considered (MeV)

Outputs:
  • lower_flux (array of Nene double) – lower flux according to selection of whatf for all energies averaged over entire mission duration - This has to be considered as a lower envelop to bound expected flux at GEO for any solar cycle

  • mean_flux (array of Nene double) – mean flux according to selection of whatf for all energies averaged over entire mission duration - This spectrum is an averaged expected flux at GEO for any solar cycle , no margins are included at this point

  • upper_flux (array of Nene double) – upper flux according to selection of whatf for all energies averaged over entire mission duration - This has to be considered as an upper envelop for expected flux at GEO for any solar cycle, this spectrum can be used for any conservative approach as margins are included at this point. Note that the margins are energy dependant and can be assesed by looking at the ratio between upper_flux and mean_flux

Calling sequence:
From MATLAB#
[Lower_flux,Mean_flux,Upper_flux] = onera_desp_lib_fly_in_ige(launch_year,mission_duration,whichm,whatf,energy)
From IDL#
result = call_external(lib_name, 'fly_in_ige', launch_year,mission_duration,whichm,whatf,Nene,energy,Lower_flux,Mean_flux,Upper_flux, /f_value)
From FORTRAN#
CALL fly_in_ige1(launch_year,mission_duration,whichm,whatf,Nene,energy,Lower_flux,Mean_flux,Upper_flux)
FLY_IN_MEO_GNSS#

This function allows one to fly any MEO GNSS type spacecraft in MEO ONERA models. The use of the model is limited to GPS altitude (~20000 km - 55 deg inclination) as it is based on LANL-GPS bird series (1990 to 2006). Two versions of the model are provided:

MEO-V1:

it covers electron energies from 280 keV-1.12 MeV (issued in 2006). Note that in this model there is no solar cycle variations which is to say that the model should be used for long term studies on the order of a solar cycle duration (i.e. 11 years). Published in Sicard-Piet A., S. Bourdarie,D. Boscher, R. Friedel and T. Cayton, Solar cycle electron environment at GNSS like altitudes, IAC-06-D5.2.04,2006.

MEO-V2:

known as MEO-V2, it covers electron energies from 280 keV-2.24 MeV (issued in 2007)

The output can be differential flux or flux within an energy range or integral flux.

Warning

This routine returns fluxes expressed in MeV-1 cm-2 s-1 sr-1`for differential fluxes of in cm:sup:-2` s-1 sr-1 for integral fluxes. To derive omnidirectional fluxes, one should multiply these flux values by 4π sr.

Inputs:
  • launch_year (integer) – year of spacecraft start of life in space

  • mission_duration (integer) – duration of the mission (year)

  • whichm (integer) –

    key to select the NASA model:

    • 1 : MEO-V1

    • 2 : MEO-V2

  • whatf (integer) –

    key to select the type of flux to compute:

    • 1 : differential flux at energy E1 (MeV-1 cm-2 s-1 sr-1)

    • 2 : flux within the E1 to E2 energy range (MeV-1 cm-2 s-1 sr-1)

    • 3 : integral flux above E1 (cm-2 s-1 sr-1)

  • Nene (integer) – number of energies - if 0, then the default energies are used (their number are returned in the Nene parameter, and their values are returned in the energy parameter) in this case all arrays of size Nene should be at least of size 50

  • energy (array of [2, Nene] double) – energy levels (E1, E2), if whatf is 1 or 3, E2 is not considered (MeV)

Outputs:
  • lower_flux (array of Nene double) – lower flux according to selection of whatf for all energies averaged over entire mission duration - This has to be considered as a lower envelop to bound expected flux at MEO-GNSS for any solar cycle

  • mean_flux (array of Nene double) – mean flux according to selection of whatf for all energies averaged over entire mission duration - This spectrum is an averaged expected flux at MEO-GNSS for any solar cycle, no margins are included at this point

  • upper_flux (array of Nene double) – upper flux according to selection of whatf for all energies averaged over entire mission duration - This has to be considered as an upper envelop for expected flux at MEO-GNSS for any solar cycle, this spectrum can be used for any conservative approach as margins are included at this point. Note that the margins are energy dependant and can be assesed by looking at the ratio between upper_flux and mean_flux

Calling sequence:
From MATLAB#
[Lower_flux,Mean_flux,Upper_flux] = onera_desp_lib_fly_in_meo_gnss(launch_year,mission_duration,whichm,energy)
From IDL#
result = call_external(lib_name, 'fly_in_meo_gnss', launch_year,mission_duration,whichm,whatf,Nene,energy,Lower_flux,Mean_flux,Upper_flux, /f_value)
From FORTRAN#
CALL fly_in_meo_gnss1(launch_year,mission_duration,whichm,whatf,Nene,energy,Lower_flux,Mean_flux,Upper_flux)CALL fly_in_ige1(launch_year,mission_duration,whichm,whatf,Nene,energy,Lower_flux,Mean_flux,Upper_flux)

Effect models#

SHIELDOSE2#

SHIELDOSE2 [Seltzer, 1994] is a computer code for space-shielding radiation dose calculations. It determines the absorbed dose as a function of depth in aluminium shielding material of spacecraft, given the electron and proton fluences encountered in orbit. The code makes use of precalculated, mono-energetic depth-dose data for an isotropic, broad-beam fluence of radiation incident on uniform aluminium plane media. Such data are particularly suitable for routine dose predictions in situations where the geometrical and compositional complexities of the spacecraft are not known. Furthermore, the restriction to these rather simple geometries has allowed for the development of accurate electron and electron-bremsstrahlung data sets based on detailed transport calculations rather than on more approximate methods.

SHIELDOSE2 calculates, for arbitrary proton and electron incident spectra, the dose absorbed in small volumes of different detector materials for the following aluminium shield geometries:

  • in a semi-infinite plane medium, as a function of depth; irradiation is from one side only (the assumed infinite backing effectively insures this).

  • at the transmission surface of a plane slab, as a function of slab thickness; irradiation is from one side only.

  • at the centre of a solid sphere, as a function of sphere radius; irradiation is from all directions.

Note

Below is provided a reasonable thickness array in g/cm2 with IMAX=70

data Zin /1.000E-06,2.000E-06,5.000E-06,1.000E-05,2.000E-05,5.000E-05,1.000E-04,2.000E-04,&
          5.000E-04,1.000E-03,1.000E-01,2.000E-01,5.000E-01,7.000E-01,1.000E+00,1.250E+00,&
          1.500E+00,1.750E+00,2.000E+00,2.500E+00,3.000E+00,3.500E+00,4.000E+00,4.500E+00,&
          5.000E+00,6.000E+00,7.000E+00,8.000E+00,9.000E+00,1.000E+01,1.100E+01,1.200E+01,&
          1.300E+01,1.400E+01,1.500E+01,1.600E+01,1.700E+01,1.800E+01,1.900E+01,2.000E+01,&
          2.100E+01,2.200E+01,2.300E+01,2.400E+01,2.500E+01,2.600E+01,2.700E+01,2.800E+01,&
          2.900E+01,3.000E+01,3.100E+01,3.200E+01,3.300E+01,3.400E+01,3.500E+01,3.600E+01,&
          3.700E+01,3.800E+01,3.900E+01,4.000E+01,4.100E+01,4.200E+01,4.300E+01,4.400E+01,&
          4.500E+01,4.600E+01,4.700E+01,4.800E+01,4.900E+01,5.000E+01,0.000E+00/
Inputs:
  • idet (integer) –

    detector type:

    1. Al detector

    2. Graphite detector

    3. Si detector

    4. Air detector

    5. Bone detector

    6. Calcium Fluoride detector

    7. Gallium Arsenide detector

    8. Lithium Fluoride detector

    9. Silicon Dioxide detector

    10. Tissue detector

    11. Water detector

  • inuc (integer) –

    nuclear interaction to account for:

    1. No nuclear attenuation for protons in Al

    2. Nuclear attenuation, local charged-secondary energy deposition

    3. Nuclear attenuation, local charged-secondary energy deposition, and approx exponential distribution of neutron dose

  • imax (integer) – number of shielding depth (up to 71) - it is recommended to set this number close to maximum allowed value to compute accurate doses in semi-infinite aluminium medium and at center of aluminium spheres

  • iunt (integer) –

    key to set the shielding depth unit:

    1. Mils

    2. g/cm2

    3. mm

  • Zin (array of imax double) – thickness in unit as specified by iunt.

  • EminS (double) – min energy of solar protons spectrum (MeV)

  • EmaxS (double) – max energy of solar protons spectrum (MeV)

  • EminP (double) – min energy of trapped protons spectrum (MeV)

  • EmaxP (double) – max energy of trapped protons spectrum (MeV)

  • NPTSP (integer) – number of spectrum points which divides proton spectra for integration - a value of 1001 is recommended

  • EminE (double) – min energy of trapped electrons spectrum (MeV)

  • EmaxE (double) – max energy of trapped electrons spectrum (MeV)

  • NPTSE (integer) – number of spectrum points which divides electron spectra for integration - a value of 1001 is recommended

  • JSMAX (integer) – number of points in falling spectrum of solar protons, max allowed=301

  • JPMAX (integer) – number of points in falling spectrum of trapped protons, max allowed=301

  • JEMAX (integer) – number of points in falling spectrum of trapped electrons, max allowed=301

  • eunit (double) – conversion factor from /energy to /MeV; e.g. eunit = 1000 if flux is /keV

  • duratn (double) – mission duration in multiples of unit time (s)

  • ESin (array of 301 double) – energy of solar proton spectrum (MeV)

  • SFLUXin (array of 301 double) – solar flare flux for solar protons (/energy/cm2)

  • EPin (array of 301 double) – energy of trapped proton spectrum (MeV)

  • PFLUXin (array of 301 double) – incident omnidirectional flux for trapped protons (/energy/cm2/s)

  • EEin (array of 301 double) – energy of trapped electron spectrum (MeV)

  • EFLUXin (array of 301 double) – incident omnidirectional flux for trapped electrons (/energy/cm2/s)

Outputs:
  • SolDose (array of [71, 3] double) –

    dose profile for solar protons (rads)

    1. Dose in semi-infinite aluminium medium

    2. Dose at transmission surface of finite aluminium slab shields

    3. 1/2 Dose at center of aluminium spheres

  • ProtDose (array of [71, 3] double) – dose profile for trapped protons (rads)

  • ElecDose (array of [71, 3] double) – dose profile for trapped electrons (rads)

  • BremDose (array of [71, 3] double) – dose profile for Bremsstrahlung (rads)

  • TotDose (array of [71, 3] double) – total dose profile (rads)

Calling sequence:
From MATLAB#
[ProtDose,ElecDose,BremDose,SolDose,TotDose] = onera_desp_lib_shieldose2(ProtSpect,ElecSpect,SolSpect,Target,...)
From IDL#
result = call_external(lib_name, 'shieldose2idl', 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,/f_value)
From FORTRAN#
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)