image thumbnail

mex wrapper for International Reference Ionosphere (IRI) Model

by

 

mex-wrapper for an empirical model IRI

iri_test

Contents

function iri_test
% International Reference Ionosphere 2011 (IRI2011)
% The IRI is a joined project of the Committee on Space Research (COSPAR) and the
% International Union of Radio Science (URSI). IRI is an empirical model specifying
% monthly averages of electron density, ion composition, electron temperature, and
% ion temperature in the altitude range from 50 km to 1500 km.
%
% This directory includes the FORTRAN program, coefficients, and indices files. This
% version includes several options for different parts and parameters. A logical
% array JF(30) is used to set these options. The IRI-recommended set of options
% can be found in the COMMENT section at the beginning of IRISUB.FOR. IRITEST.FOR
% sets these options as the default.
%
% More information about the IRI project can be found at  http://IRI.gsfc.nasa.gov
%
% IRI parameters can be calculated and plotted online at sites given on the homepage

configure

jmag = 0; % 0/1,geog/geom
%    JF switches to turn off/on (.true./.false.) several options
%
%    i       .true.                  .flase.          standard version
%    -----------------------------------------------------------------
%    1    Ne computed            Ne not computed                     t
%    2    Te, Ti computed        Te, Ti not computed                 t
%    3    Ne & Ni computed       Ni not computed                     t
%    4    B0 - Table option      B0 - Gulyaeva (1987)                t
%    5    foF2 - CCIR            foF2 - URSI                     false
%    6    Ni - DS-78 & DY-85     Ni - DS-95 & TTS-03             false
%    7    Ne - Tops: f10.7<188   f10.7 unlimited                     t
%    8    foF2 from model        foF2 or NmF2 - user input           t
%    9    hmF2 from model        hmF2 or M3000F2 - user input        t
%   10    Te - Standard          Te - Using Te/Ne correlation        t
%   11    Ne - Standard Profile  Ne - Lay-function formalism         t
%   12    Messages to unit 6     no messages                         t
%   13    foF1 from model        foF1 or NmF1 - user input           t
%   14    hmF1 from model        hmF1 - user input (only Lay version)t
%   15    foE  from model        foE or NmE - user input             t
%   16    hmE  from model        hmE - user input                    t
%   17    Rz12 from file         Rz12 - user input                   t
%   18    IGRF dip, magbr, modip old FIELDG using POGO68/10 for 1973 t
%   19    F1 probability model   critical solar zenith angle (old)   t
%   20    standard F1            standard F1 plus L condition        t
%   21    ion drift computed     ion drift not computed          false
%   22    ion densities in %     ion densities in m-3                t
%   23    Te_tops (Aeros,ISIS)   Te_topside (Intercosmos)        false
%   24    D-region: IRI-95       Special: 3 D-region models          t
%   25    F107D from AP.DAT      F107D user input (oarr(41))         t
%   26    foF2 storm model       no storm updating                   t
%   27    IG12 from file         IG12 - user input					 t
%   28    spread-F probability 	 not computed                    false
%   29    IRI01-topside          new options as def. by JF(30)   false
%   30    IRI01-topside corr.    NeQuick topside model   	     false
%     (29,30) = (t,t) IRIold, (f,t) IRIcor, (f,f) NeQuick, (t,f) TTS
%   ------------------------------------------------------------------
%
%  Depending on the jf() settings additional INPUT parameters may
%  be required:
%
%       Setting              INPUT parameter
%    -----------------------------------------------------------------
%    jf(8)  =.false.     OARR(1)=user input for foF2/MHz or NmF2/m-3
%    jf(9)  =.false.     OARR(2)=user input for hmF2/km or M(3000)F2
%    jf(10 )=.false.     OARR(15),OARR(16)=user input for Ne(300km),
%       Ne(400km)/m-3. Use OARR()=-1 if one of these values is not
%       available. If jf(23)=.false. then Ne(300km), Ne(550km)/m-3.
%    jf(13) =.false.     OARR(3)=user input for foF1/MHz or NmF1/m-3
%    jf(14) =.false.     OARR(4)=user input for hmF1/km
%    jf(15) =.false.     OARR(5)=user input for foE/MHz or NmE/m-3
%    jf(16) =.false.     OARR(6)=user input for hmE/km
%    jf(17) =.flase.     OARR(33)=user input for Rz12
%    jf(21) =.true.      OARR(41)=user input for daily F10.7 index
%    jf(23) =.false.     OARR(41)=user input for daily F10.7 index
%    jf(24) =.false.     OARR(41)=user input for daily F10.7 index
%          optional for jf(21:24); default is F10.7D=COV
%    jf(25) =.false.     OARR(41)=user input for daily F10.7 index
%          if oarr(41).le.0 then 12-month running mean is
%          taken from internal file]
%    jf(27) =.flase.     OARR(39)=user input for IG12
%    jf(21) =.true.      OARR(41)=user input for daily F10.7 index
% --------------------------------------------------------------------
% Standard: t,t,t,t,f,f,t,t,t,t,t,t,t,t,t,t,t,t,t,t,f,t,f,t,t,t,t,f,f,f
% --------------------------------------------------------------------
 jf = [1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,0,0,...
     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
%jf = logical([1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,0,0]);

alati = 30.; % lati/deg
along = 30.; % long/deg
iyyyy = 2010; % year(yyyy)
mmdd = 101; % mmdd(or -ddd)
iut = 0; % iut(=0/1,LT/UT)
dhour = 14.; % hour
% begin, end, and stepsize for the selected variable
vbeg = 30.; % begin height, km
vend = 1000.; % end height, km
vstp = 10.;  % height step, km

% (enter  0 for list of peak heights and densities)
% (enter -1 for plasma frequencies, B0, M3000, valley, width and depth,)
% (         F1 probability, equatorial vertical ion drift, and)
% (         foF2 storm/quiet ratio, or 3 parameter of your choice)
height = 0;
h_tec_max = 0.; %upper height [km] for TEC integration (0 for no TEC)
ivar = 1; % variable? (1/2/../8 for height/lat/long/year/month/day/day of year/hour)

run IRI

[outf,oarr] = mexIRI2011(jmag,jf,alati,along,iyyyy,mmdd,iut,dhour,...
                        height,h_tec_max,ivar,vbeg,vend,vstp);

output

%
% OUTPUT:
% OUTF(1:20,1:100)
%               OUTF(1,*)  ELECTRON DENSITY/M-3
%               OUTF(2,*)  NEUTRAL TEMPERATURE/K
%               OUTF(3,*)  ION TEMPERATURE/K
%               OUTF(4,*)  ELECTRON TEMPERATURE/K
%               OUTF(5,*)  O+ ION DENSITY/% or /M-3 if jf(22)=f
%               OUTF(6,*)  H+ ION DENSITY/% or /M-3 if jf(22)=f
%               OUTF(7,*)  HE+ ION DENSITY/% or /M-3 if jf(22)=f
%               OUTF(8,*)  O2+ ION DENSITY/% or /M-3 if jf(22)=f
%               OUTF(9,*)  NO+ ION DENSITY/% or /M-3 if jf(22)=f
%                 AND, IF JF(6)=.FALSE.:
%               OUTF(10,*)  CLUSTER IONS DEN/% or /M-3 if jf(22)=f
%               OUTF(11,*)  N+ ION DENSITY/% or /M-3 if jf(22)=f
%               OUTF(12,*)
%               OUTF(13,*)  D/E-region densities (Friedrich)
%               OUTF(14,*)  1:7 Danilov for 60,65..90km; 8:14 for a
%                  major Stratospheric Warming (SW=1) event; 15:21
%                  for strong Winter Anomaly (WA=1) conditions
%               OUTF(15-20,*)  free
%
% OARR(1:50)   ADDITIONAL OUTPUT PARAMETERS
%
%      #OARR(1) = NMF2/M-3           #OARR(2) = HMF2/KM
%      #OARR(3) = NMF1/M-3           #OARR(4) = HMF1/KM
%      #OARR(5) = NME/M-3            #OARR(6) = HME/KM
%       OARR(7) = NMD/M-3             OARR(8) = HMD/KM
%       OARR(9) = HHALF/KM            OARR(10) = B0/KM
%       OARR(11) =VALLEY-BASE/M-3     OARR(12) = VALLEY-TOP/KM
%       OARR(13) = TE-PEAK/K          OARR(14) = TE-PEAK HEIGHT/KM
%      #OARR(15) = TE-MOD(300KM)     #OARR(16) = TE-MOD(400KM)/K
%       OARR(17) = TE-MOD(600KM)      OARR(18) = TE-MOD(1400KM)/K
%       OARR(19) = TE-MOD(3000KM)     OARR(20) = TE(120KM)=TN=TI/K
%       OARR(21) = TI-MOD(430KM)      OARR(22) = X/KM, WHERE TE=TI
%       OARR(23) = SOL ZENITH ANG/DEG OARR(24) = SUN DECLINATION/DEG
%       OARR(25) = DIP (geomagnetic inclination in degrees)/deg OARR(26) = DIP LATITUDE/deg
%       OARR(27) = MODIFIED DIP LAT.  OARR(28) = DELA
%       OARR(29) = sunrise/dec. hours OARR(30) = sunset/dec. hours
%       OARR(31) = ISEASON (1=spring) OARR(32) = NSEASON (northern)
%      #OARR(33) = Rz12               OARR(34) = Covington Index
%       OARR(35) = B1                 oarr(36) = M(3000)F2
%      $oarr(37) = TEC/m-2           $oarr(38) = TEC_top/TEC*100.
%      #OARR(39) = gind (IG12)        oarr(40) = F1 probability (old)
%      #OARR(41) = F10.7 daily        oarr(42) = c1 (F1 shape)
%       OARR(43) = daynr
%       OARR(44) = equatorial vertical ion drift in m/s
%       OARR(45) = foF2_storm/foF2_quiet
%       OARR(46) = F1 probability without L condition
%       OARR(47) = F1 probability with L condition incl.
%       OARR(48) = spread-F occurrence probability (Brazilian model)
%                # INPUT as well as OUTPUT parameter
%                $ special for IRIWeb (only place-holders
%

h = vbeg:vstp:vend;
Ne = outf(1,1:length(h));
Ne(find(Ne<0)) = 0;

subplot(2,1,1)
plot(Ne,h);
    set(gca,'XScale','log')
    grid on
    xlabel('N_e(h), 1/m^{-3}')


fN = sqrt(Ne/(1.24*10^10))';
subplot(2,1,2)
plot(fN,h);
    grid on
    xlabel('f_N(h), MHz')

Contact us