Lowtran in Python
LOWTRAN7 atmospheric absorption extinction model. Updated by Michael Hirsch to be platform independent and easily accessible from Python ≥ 3.6 and Matlab.
The main LOWTRAN program has been made accessible from Python by using direct memory transfers instead of the cumbersome and error-prone process of writing/reading text files.
xarray.Dataset
high-performance, simple N-D array data is passed out, with appropriate metadata.
Gallery
See below for how to make these examples.
Install
You will need a Fortran compiler.
gfortran
is one suitable compiler.
We use f2py
(part of numpy
) to seamlessly use Fortran libraries from Python by special compilation of the Fortran library with auto-generated shim code.
-
If a Fortran compiler is not already installed, install Gfortran:
- Linux:
apt install gfortran
- Mac:
brew install gcc
- Windows use MSYS2 or MinGW to get Gfortran. Windows only: from Powershell:
echo "[build]`ncompiler=mingw32" | Out-File -Encoding ASCII ~/pydistutils.cfg
Note: Cygwin is essentially obsolete due to Windows Subsystem for Linux. Cygwin is broken for Numpy and Gfortran and general.
- Linux:
-
Install Python Lowtran code
pip install -e .
Examples
In these examples, you can write to HDF5 with the -o
option.
We present examples of:
-
ground-to-space transmittance: TransmittanceGround2Space.py
-
sun-to-observer scattered radiance (why the sky is blue): ScatterRadiance.py
-
sun-to-observer irradiance: SolarIrradiance.py
-
observer-to-observer solar single-scattering solar radiance (up-going) with custom Pressure, Temperature and partial pressure for 12 species: UserDataHorizontalRadiance.py
-
observer-to-observer transmittance with custom Pressure, Temperature and partial pressure for 12 species: UserDataHorizontalTransmittance.py
-
observer-to-observer transmittance: HorizontalTransmittance.py
Matlab
Matlab users can seamlessly access Python modules, as demonstrated in RunLowtran.m and lowtran_transmission.m.
Here's what's you'll need:
-
Install Lowtran in Python as at the top of this Readme.
-
From Matlab, verify everything is working by from the
lowtran/
directory:runtests('tests')
Notes
LOWTRAN7 User manual Refer to this to understand what parameters are set to default. Currently I don't have any aerosols enabled for example, though it's possible to add them into the code.
Right now a lot of configuration features aren't implemented, please request those you want.
Reference
- Original 1994 Lowtran7 Code
LOWFIL
program in reference/lowtran7.10.f was not connected as we had previously implemented a filter function directly in Python.LOWSCAN
spectral sampling (scanning) program inreference/lowtran7.13.f
was not connected as we had no need for coarser spectral resolution.
Fortran (optional)
To compile Fortran code standalone (without Python):
ctest -S setup.cmake -V