Basic Radiative Transfer CalculationΒΆ

An example of how to do a simple radiative transfer calculation utilizing an atmosphere that has been setup in the example Basic Atmospheric Setup

from radtran.sasktran import SasktranGeneric
from radtran.scan import Scan
from radtran.options import GenericOptions

from atmosphere_ex_1 import setup_atmosphere
import matplotlib.pyplot as plt
import numpy as np

def radtran_calculation():

    #use setup atmosphere example generate an atmosphere
    atmo = setup_atmosphere()

    #setup a simple limb geometry
    scan = Scan()
    altitudes = np.arange(10,90,2)
    scan.make_scan_saa(sza=70, saa=0, lat=0, lon=0, tanalts_km=altitudes, mjd=54372.5, locallook=0)

    #setup some radiative transfer options
    hr_options = GenericOptions()
    hr_options.add_option('setsun', scan.sun)
    hr_options.add_option('NumOrdersOfScatter',1)

    #create the engine, add the atmosphere and the options
    hr_engine = SasktranGeneric(atmo, 'HR', hr_options)

    #add the instrument lines of sight
    for obs, los, mjd in zip(scan.obs, scan.look, scan.mjd):
        hr_engine.add_line_of_sight(obs, los, mjd)

    #set the wavelengths and calculate radiance
    wavelengths = np.array([340])
    hr_engine.set_wavelengths(wavelengths)
    rad = hr_engine.calculate_radiance()[0]

    plt.plot(rad[:,0], altitudes)
    plt.show()

    return hr_engine