Basic Program †
An original FORTRAN program developed by Kimura and his co-workers consists of a main routine and numbers of subroutines which are classified into several groups according to their functions; initialization, Adams method, output, calculation of refractive index, electron density model, and geomagnetic field model. In this section, we briefly describe the main routine, functions and interfaces of the subroutines and common blocks in the program. The practical algorithm for the Adams method used in the program is explained here.
In the FORTRAN program, an initial position and an output ray path are to be given in a geomagnetic coordinate system. Since the subroutine of the IGRF model receives geographical coordinates as an input, transformations between geomagnetic and geographic coordinates are applied before and after the subroutine.
The FORTRAN program was translated into a popular language C++ and derivatives have been developed for various purposes of propagation analysis. In the download page, a basic C++ program with a diffusive equilibrium density model and a dipole field model is available. The C++ source code is essentially the same as the FORTRAN code and users can readily understand each function in the C++ code from the following descriptions. An original source code written in C++ is also released for the ray tracing using the IGRF and the global core plasma model (GCPM). The GCPM, which was developed by D. L. Gallagher, represents realistic plasma density distribution as a function of geomagnetic and solar conditions throughout the inner magnetosphere. At each step of the ray tracing, radial and latitudinal density gradients as well as density itself are numerically calculated from densities at 4 surrounding mesh points in a meridian plane. The densities at the mesh points are derived from the GCPM just before they are used. While the GCPM is able to provide 3D density profile, the current ray tracing program assumes that longitudinal density gradients equal to zero. Development of fully 3D ray tracing program is the future work.
1. Main routine †
The main routine calls subroutines INIT, OUT0 and ADAMS
in this sequence after giving a wave frequency,
a starting point and an initial wave normal direction.
Source Code
2. Functions and interfaces of subroutines †
2.1 Initialization †
- INIT(fq00,rr00,th00,ph00,es00,dl00)
- Function : Parameter Initialization
- Input
- fq00 : wave frequency in kHz
- rr00 : starting radius distance from the earth center in km
- th00 : geomagnetic colatitude in deg
- ph00 : geomagnetic longitude in deg
- es00 : angle between the initial wave normal and geomagnetic meiridian plane, in deg (ε)
- dl00 : angle between the projected direction of the initial wave normal onto the geomagnetic meridial plane and the radial direction, in deg (δ)
- Common blocks : QCONST, QPARAM, QINIT
Source Code
2.2 Adams method †
- ADAMS
- Function : Adams method
- Common blocks : QCONST, QPARAM, QINIT, QPATH, QCOND, QADAM
- ADAM_B(NLOOP)
- Function : Adams-Bashforth predictor method
- Input
- Common blocks : QADAM
- ADAM_M(ERR0,NLOOP)
- Function : estimation of the error
- Input
- ERR0 : acceptable error
- NLOOP : number of Loops
- Common blocks : QADAM
- ADAM_UPDATE(ERR0)
- Function : Adams-Moulton corrector method
- Input
- Common blocks : QADAM
- ADAM_RETRY(ERR0)
- Function : retrial of the current step
- Input
- Common blocks : QADAM
Source Code
2.3 Output †
- OUT0
- Function : conversion from the initial position (r,th,ph) into (X,Y,Z)
- Common blocks : QCONST, QPARAM, QINIT, QOUT
- OUT1(Y)
- Function : output traced path
- Input
- Y : position and wave normal vectors
- Common blocks : QCONST, QPARAM, QPATH, QCOND, QOUT, QREF, QDENS
Source Code
2.4 Refractive index †
- REF(PATH)
- Function : refractive index for given position and wave normal vectors
- Input
- PATH : position and wave normal vectors
- Common blocks : QCONST, QPATH, QPARAM, QCOND, QREF, QIGRF, QDENS
Source Code
2.5 Derived function †
- FUNCT(PATH,DPATH,IMDFY)
- Function : derived function of position and wave normal vectors
- Input
- PATH : position and wave normal vectors
- IMDFY :
- Output
- DPATH : derived functions of PATH
- Common blocks : QCONST, QPATH, QPARAM, QCOND, QREF, QIGRF, QDENS
Source Code
2.6 Electron density model †
- DENS(PATH)
- Function : electron density from a diffusive equilibrium model
- Input
- PATH : position and wave normal vectors
- Common blocks : QCONST, QPATH, QPARAM, QDENS, QDNSDE, QDNSLI, QDNSAO, QDNSOP
- DENSAO(PATH)
- Function : Aikyo-Ondo model
- Input
- PATH : position and wave normal vectors
- Common blocks : QCONST, QPARAM, QIGRF, QDNSAO, QFLPRM
- DENSDE(PATH)
- Function : diffusive equilibrium model
- Input
- PATH : position and wave normal vectors
- Common blocks : QPARAM, QDNSDE
- DENSLI(PATH)
- Function : density at low altitudes
- Input
- PATH : position and wave normal vectors
- Common blocks : QPARAM, QDNSLI
- DENSOP(PATH)
- Function : density at a reference altitude
- Input
- PATH : position and wave normal vectors
- Common blocks : QCONST, QPATH, QPARAM, QDNSOP
Source Code
2.7 Geomagnetic field model †
- DIPOLE(PATH)
- Function : dipole magnetic field model
- Input
- PATH : position and wave normal vectors
- Common blocks : QCONST, QIGRF
Source Code
3. Common blocks †
- QCONST : constant values
- QPARAM : constant parameters
- QINIT : initial conditions
- QPATH : information of traced ray
- QCOND : condition code
- QADAM : parameters used in the Adams method
- QOUT : position at the last step
- QREF : refractive index
- QIGRF : geomagnetic field model
- QDENS : electron density model
- QDNSDE : effect of diffusive equilibrium
- QDNSLI : low altitude density profile
- QDNSAO : Aikyo-Ondo model
- QDNSOP : density at a reference altitude
|