IRI2016 International Reference Ionosphere from Python
Project description
IRI2016 ionosphere model from Python and Matlab
Python and Matlab interfaces to the International Reference Ionosphere (IRI) 2016 model.
Install
Any Fortran compiler will do. IRI2016 has been tested with compilers including:
- Gfortran 5, 6, 7, 8
- Intel
ifort
- PGI
pgf90
Install Gfortran by:
- Linux:
apt install gfortran
- Mac:
brew install gcc
- Windows
and then from your Python ≥ 3.6 install (such as Miniconda):
pip install iri2016
or:
git clone https://github.com/scivision/iri2016
cd iri2016
python -m pip install -e .[tests]
Usage
- Height-profile: plot density and temperatures vs altitude
- Latitudinal profile: plot densities and height at the peak of F2, F2, and E regions vs geographic latitude
- GMT profile: plot densities and height at the peak of F2, F2, and E regions vs universal time
- Height vs GMT: plot Ne, Te, and Ti as a function of height and universal time
- Latitude vs Longitude: plot of foF2 a function of geographic latitude and longitude
Matlab
Many Python programs--including IRI2016--are readily accessible from Matlab. Here's what's you'll need:
- Setup Python ↔ Matlab interface.
- Install IRI2016 in Python as at the top of this Readme.
- From Matlab, verify everything is working by from the
iri2016/
directory:runtests('tests')
- Use iri2016.m function to access IRI2016 quantities. See RunIRI2016.m for simple example use / plots.
CAVEAT: due to old-fashioned Fortran 77 techniques, Matlab needs to be restarted to run more than one IRI2016 scenario. This is also true of the Fortran code itself, and Python. What we do in Python is call a Python script over and over, inputting distinct parameters. This can be done from Matlab like the BatchIRI2016.m script, enhanced to call an easier/faster Python script. Let us know.
Direct compilation
These commands are not normally needed unless you want to work with the Fortran code more directly.
Fortran compile
cd bin
cmake ../fortran
cmake --build .
ctest -V
f2py compile
The function DFRIDR() inside igrf.for dynamically calls other functions.
This is something f2py can't access directly, so we tell f2py not to
hook into function DFRIDF() with the end statement skip: dfridr
:
f2py -m iri2016 -c iriwebg.for irisub.for irifun.for iritec.for iridreg.for igrf.for cira.for iriflip.for skip: dfridr
f2py: IGRF only
f2py -m igrf -c irifun.for igrf.for skip: dfridr
Notes
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.