# Advanced Radiative Transfer, WQ2014

**I have posted SF6 broadband cross section data, for those who would like to try computing radiative efficiency with this data, to compare with the computations from the line-list. **

## Assignments 2014

- (Assigned 3/11/2014, due at end of exam period)
- 4.16, 4.25 (use the homebrew radiation code on the course web site, but read over the code to make sure you understand what it is doing), 4.29 (but ignore the suggestions about exploration with the ccm code at the end)
- Atmospheric escape problems: 8.22 (compute diffusion limited escape, but you can ignore the comparison with Jeans escape),8.26,8.27

- (Assigned 2/7/2014, due when I get back) Note that many of these assignments use
`PyTran.py`

, which is in the Chapter 4 scripts collection, and the associated HITRAN database, which is in the Chapter 4 data collection, both availabe from PlanetaryClimateBook.org- Reading: Section 4.4.4 . Make sure you understand the ideas behind the exponential sums aproximation to the band-averaged transmission function. To help consolidate your understanding, do Problem 4.14 .
- Project: OLR computation for the N2-N2 continuum. Problem is here, and data is here. The paper describing the HITRAN continuum absorption data is here. (2/26/2014: I uploaded a revised version of the absorption data set, which contains only the 309K data, and only the lower frequency absorption band, which is most important for Earthlike temperatures. This form of the data can now be read directly into a Curve object using readTable(...) )
- Project: Radiative efficiency of SF6. Problem is here, and data is here . You will need to make a slight modification of
`Pytran.py`

in order to use Pytran for SF6, but the modification is simple and is described in the problem description. Note that SF6 has a huge number of lines, and the full line database is a half gigabyte. Most of these lines are not needed for the small concentrations in the Earth's atmosphere, so to save you time, I made a reduced set with just the strongest lines (but there are still plenty of them). I recommend you put it in a separate directory from the regular HITRAN data, so as not to get this mixed up with the full dataset, and edit the data paths in`PyTran.py`

accordingly.*Supplement*: I have posted the broadband cross section data here; the readme file on the data format is here . Following each header, which gives the temperature and pressure, there are several lines which contain the absorption cross-section in a set of equally spaced bands between the min and max wavenumber given in the header. The header gives the number of bins, so you can use this to get the wavenumber of each bin. The units of the cross section are cm**2/molecule (that isn't stated in the readme, but the rest of the format is). Pressure is given in Torr, which google can translate into millibars for you. - Project: Line saturation and transmission function for methane. Use Pytran to examine the absorption cross-section of methane (CH4) as a function of wavenumber, at a pressure of 500mb and temperature of 260K. Estimate the atmospheric mass path of methane corresponding to a concentration of 2ppmv (roughly the present concentration). Is methane in the strong line or week line limit? Compute the transmission function as a function of wavelength, and discuss the extent of overlap of absorption lines. Vary the mass-path and compute how the band-averaged transmission goes down as mass path increases, and compare the results with your expectations from the strong line limit. How would your results changed if methane had a concentration on the order of 100ppmv instead, as it could have had on the early Earth? NOTE: You can do this using the basic version of PyTran, and the standard HITRAN dataset distributed as part of the Chapter 4 data.
- Use PyTran and the HITRAN database to examine the typical widths of CO2 lines in the general vicinity of the 15 micron (666 cm**-1) region. Make a histogram of air-broadened and self-broadened line widths at a pressure of 100mb over some suitable wavenumber interval. For each line in this interval, determine the pressure at which the Doppler broadening becomes comparable to pressure broadening, assuming a fixed stratospheric temperature of 200K.

- (Assigned 1/28/2014, due 2/5/2014)
- 3.38,3.39
- 4.3,4.4,4.9
- Do this problem regarding the integral for limiting OLR in the gray gas runaway greenhouse problem.

## Assignments 2013

- Final assignment (in lieu of take-home exam), due Saturday 3/24/2013. Turn in by email (preferably) so I can begin grading while I'm away.
- Write a brief report (I'm thinking 5-8 pages with graphs) using what you have learned about scattering to discuss the albedo of an infinitely deep pure water vapor atmosphere for a planet orbiting a G-class star. In what part of the spectrum can you consider the atmosphere to be essentially purely absorbing without any need to consider scattering? What does this part of the spectrum contribute to the albedo? In what part of the spectrum can the atmosphere be considered to be purely scattering? What does this part of the the spectrum contribute to the albedo? How much does the portion of the spectrum where both scattering and absorbing are important contribute to the albedo (considering the limits of complete absorption and complete reflection there). To the best of your ability, using HITRAN data and numerical solution of the two-stream equations, estimate the albedo of this portion of the spectrum, discussing the relevant issues, challenges, and numerical requirements. Summarize your results for the net albedo. Finally, discuss estimates of how thick the atmosphere needs to be (for a planet with Earth gravity) in order to approach the limiting albedo. Would 10 bars be sufficient? Would 100 bars be sufficient?
- Milankovic problem: Do problem 7.25 (Summer Melt Energy). You will need FluxExplorer.py from the Chapter 7 script collection, plus associated modules and the Orbit91 dataset.

- (Assigned 3/11/2013/due 3/18/2013)
- Continuation of steam atmosphere albedo project.
- Finish whatever parts of the problem from the previous problem set which you have not yet done. For those who are having problems with numerical integration of a second order ODE, there is an example script here.
- S5.5 Using the results of Problem S5.4, compute omega0(tau) and discuss its behavior in the band between .5 and .6 microns. For what parts of this band is Rayleigh scattering significant? For what portions is the incoming light essentially completely absorbed? For what portions, if any, is absorption negligible?
- S5.6 Using the results of S5.5, write a function that computes the albedo for an infinitely deep water vapor atmosphere for a given wavelength. The general approach is the following: If you go deep enough into an atmosphere, the fluxes are very nearly zero, so that you get approximately the right albedo by just applying a zero flux condition at a finite (but large) optical depth into the atmosphere. (It works best to start at the top of the atmosphere and integrate downward). The trick is to figure out how deep you need to go in order to get an accurate albedo; this depends on the profile of omega0 as well as the optical depth, since you have only algebraic decay when omega0=1, but exponential decay in tau at a rate related to (1-omega0) if omega0<1 . Try out this function for a number of different wavelengths in the band between .5 microns and .6 microns. Discuss how many wavelengths would be needed in this band to get an accurate estimate of the albedo? (This is tricky, because omega0 has a strong dependence on wavelength for lower pressures, but a fairly smooth dependence at pressures above 10 bars. Which regions are most important?). Estimate the computation time required to get a good estimate of albedo in this band.

- Basic insolation problems, circular orbit:
- 7.2,7.3,7.4

- Thermal inertia problems
- 7.12,7.31

- Eccentric orbits
- 7.23,7.24

- Continuation of steam atmosphere albedo project.
- (Assigned 2/21/2013/due 3/4/2013)
- 5.10 (We haven't discussed the Eddington or Quadrature flavors of the two-stream equations, or asymmetric two-stream scattering, but you can find the appropriate formulae and constants in the text).
- 5.12
- The following sequence lays the groundwork for computing the albedo of a runaway steam atmosphere. You may find it useful to consult/modify the Chapter 5 Script TwoStreamScatterSimple.py:
- S5x.1: Learn how to numerically solve systems of differential equations using the integrator class in ClimateUtilities. Do problem 1.10 for practice. Learn how to numerically solve second order differential equations of the form d^2Y/dx^2 = F(x,Y), by writing it as a pair of linear equations dZ/dx = F(x,Y), dY/dx = Z. Apply the method to the linear system defined by F = a Y, and find two independant solutions for a case with a>0 and a case with a<0.
- S5.2: Using the techniques in Problem S5x.1, write a routine to solve for two independent solutions for the flux (I_+ + I_-), which can be superposed to satisfy suitable boundary conditions. You may assume symmetric scattering. Write your solver so that it can accept an arbitrary function for the single-scatter albedo, omega0(tau), and try it out using the function you wrote in Problem Set 1. Next, write a routine that computes the flux (I_+ - I_-), given (I_+ + I_-). Note: you are
*not*expected to make use of the piecewise ODE technique that is needed for treatment of the optically thick absorbing case in this problem. - S5.3: Using the results of S5.2, write a routine to superpose the two independent solutions so as to satisfy the upper boundary condition, plus the boundary condition at the ground corresponding to zero surface albedo. Use this superposition to determine the top-of-atmosphere albedo. Check the results against the analytic solution for constant single-scatter albedo.
- S5.4 Modify Pytran.py to produce (and save) a table of omega0, a table of kappa, and a table of tau vs wavenumber for a list of pressure levels (one column per pressure level); this will ultimately be the basis of your function omega0(tau). To keep the size of the file down, run this for 100 wavenumbers in the band between .5 microns and 1 micron, with pressures going from 100mb to 100 bars in 100 mb increments. Make some plots of kappa vs. pressure to see how well linear scaling works.

- (Assigned 2/6/2013/due 2/18/2013)
- Problem S5.1: Derive the optically thick form of (5.37) (i.e beta_star = 1) directly from the hemi-isotropic two-stream equations for conservative scattering, by applying the boundary condition at the ground assuming that the direct beam has been completely attenuated by the time the ground has been reached. The upper boundary condition, as usual, requires that the downward diffuse flux vanish at the top of the atmosphere.
- 5.6; Note that do do this problem you need to compute the scattering optical thickness as a function of wavelength (using wavelength**-4 scaling for the cross section), and numerically integrate the analytic formula for conservative scattering albedo weighted by the stellar spectrum. You should approximate the stellar spectrum as a blackbody, with temperature 3000K for an M star, 6000K for a G star and 8000K for an A star
- 5.7 (Since we haven't discussed asymmetric scattering, you can do this problem assuming zero asymmetry factor, though that will overestimate the albedo)
- 5.9,5.11 (Do this for hemi-isotropic case only, and skip the part about the asymmetry factor), 5.13

- (Assigned 1/23/2013, due 2/4/2013)
- Read Section 5.4 (Mie scattering)
- 5.1,5.2,5.3,5.4,5.5

## Assignments 2012

- (Assigned 1/11/2012, due 1/23/2012)
- Read section 4.3.3 and 4.3.4 (or 4.3.2 and 4.3.3 if I didn't finish 4.3.2 in class)
- Problems 4.1,4.2 4.3, 4.4
- S4.1: Compare the exact angle-averaged transmission function derived in class to the approximate hemi-isotropic exponential form having cos(theta) = 1/2. What is the value of cos(theta) that gives the best fit of the exponential to the exact transmission function? For a grey gas numerically evaluate the OLR for an all-troposphere model with R/cp = 2/7 and ground temperature 280K, for various values of atmospheric optical thickness tauInfinity, using both the exact transmission function and the exponential hemi-isotropic form. Discuss the magnitude of the error resulting from using the exponential form.

- (Assigned 2/05/2012, due 2/13/2012)
- Read Section 4.3.4 (Pure radiative equilibrium)
- S4.2: Assuming the all-troposphere approximation (i.e. T(p) on the dry adiabat all the way to p=0) compute the OLR for a gray gas as a function of atmospheric optical thickness in the optically thick limit, assuming pressure broadening of the form kappa = kappa(ps) (p/ps)**n. Pick a value of optical thickness that makes the surface temperature 285K, assuming the planet is horizontally isothermal, albedo 30% and Earth's orbit (solar constant 1365 W/m**2). Assuming n=1, how much does the temperature increase if you double the optical thickness? How much if you double it again? Note that this calculation is more consistent than the one in the book using n=0, since the stratosphere becomes thick (and the troposphere becomes shallow) in the optically thick limit when n=0.
- 4.5,4.6,4.9,4.11
- S4.3:
*Effect of stratosphere on runaway greenhouse I*. This is the first in a series of problems exploring the effect of the stratosphere on the runaway greenhouse. To get an indication of where the stratosphere will form in a single-component saturated atmosphere, compute the infrared radiative cooling profile for a gray gas with T(p) determined by the single-component moist adiabat (i.e. the frost/dew point formula obtained by solving Clausius-Clapeyron for T in terms of p). Find the radiative cooling profile with and without pressure broadening, for tau_inf = 1, 10 and 50. Is the estimated stratosphere thin in terms of the proportion of atmospheric mass it contains? What is its*optical*thickness? [**FUTURE PROBLEMS IN THIS SERIES: (III) Gray radiative-convective model with upper level stellar heating; (III') Gray radiative-convective model for a mixed condensible/noncondensible atmosphere . (IV) Ingersoll's calculation of OLR limit for a stratosphere with fixed condensible mixing ratio determined by tropopause temperature. (V) Real-gas radiative-convective model for a pure H2O and a mixed H2O/N2 atmosphere. ] [**Also: All-trop gray gas calculation after ocean used up, with unsaturated lower layer, showing how hot Ts has to get before OLR can start increasing again.]

- (Assigned 2/21/2012, due 2/28/2012)
- 4.28: This is a fairly long problem on tropopause height for a gray gas, so please get started right away. You have already done many of the pieces required for the solution, in the course of previous problems.
- S4.4:
*Effect of stratosphere on runaway greenhouse II*. Carry out the gray gas tropopause height calculation done in Problem 4.28, but this time instead of using the dry adiabat, use the one-component saturated adabiabat, which surface pressure (and hence tau_inf) determined by the surface temperature via Clausius-Clapeyron. How does the optical thickness of the stratosphere vary as surface temperature is increased? Plot the OLR vs. surface temperature and compare with the previous results which neglected the effect of the stratosphere. Show results with and without pressure broadening.

- (Assigned 3/5/2012, due 3/12/2012)
- 4.14,4.15,4.16; For 4.16, you should write your own transmission function routine. The CO2 exponential sums table you need is in the Chapter 4 Workbook Datasets directory. You can read it into a Curve() object easily using the readTable(...) function in ClimateUtilities. The file you want is CO2TablePrinBand.260K.100mb.self.data (self-broadened CO2). These are plain text files, so you can look at them in any text editor. The column heads starting with logkappa.XX give the log absorption coefficient bin center, and the corresponding dH.XX gives the relative probability, where XX is the wavenumber range of the bin (in 1/cm). Note that these absorption coefficients are at the standard pressure (100mb) so you have to weight the mass path by (p/100mb) to account for the effects of pressure broadening when computing the transmission function. this problem doesn't ask you to deal with temperature weighting. You may do this problem for the case of a pure CO2 atmosphere.
- S4.5: Exploring HITRAN line parameters. Use the script PyTran.py to read in the line parameters for CO2. Note that you will have to edit the datapath string according to where you have put the data set. The function loadSpectralLines(molName) loads in the line parameter data for molecule molName. Currently, it loads the data into a set of global arrays (eventually I will change that to make it easier to handle multiple gases). waveList is the list of line position (wavenumber) for each line. The corresponding entry of sList has the line intensity, gamAirList the air-broadened line width, and ElowList the lower state energy (used for temperature scaling of line intensity). The widths and intensities are given at temperature 296K and pressure 1.013 bar. The lower state energy is stated as a wavenumber in units of 1/cm (convert to actual energy if you want using Planck's constant and dE = h*frequency). Do the following explorations of the lines for CO2:
- Make a plot of the number of lines per bin in wavenumber bins of width 50/cm
- Make a plot of the maximum, minimum and average line intensity in each bin.
- Do the same for air and self-broadened width, and for the ratio of air-to self broadened width
- Write a graphics routine to generate "stick spectra." The horizontal axis of this plot is wavenumber, and a "stick" (vertical line) is plotted at each line position; the height of the line is the line intensity. Stick spectra do not indicate line width. Note that you will probably need to write your own plotting routine in MatPlotLib do do stick spectra. I don't think the standard plot(...) routine in ClimateUtilities is general enough to handle this kind of plot, but you may be able to think of some kind of hack to allow the plotting to be done as a plot of a curve vs. wavenumber, which is what the ClimateUtilities plot(...) function handles. One way to do the plotting in MatPlotLib is to issue one pylab plot(...) call for each "stick," though that may take a lot of time to run since there are tens of thousands of "sticks" to plot.

- (Assigned 3/12/2012, due 3/21/2012)
- 4.23 (Semi-gray skin temperature)
- S4.6 Using an exponential-sums transmission function for the bands near the 15 micron CO2 absorption feature, compute the spectrum of OLR for a present-day Martian atmosphere on the CO2 dry adiabat, with a surface pressure ps, and with both ground and surface air temperature set to some value Tg. The exponential sums table for the relevant bands is available in the Workbook datasets for Chapter 4 (the one you want is CO2TablePrinBand.260K.100mb.self.data , though you could get more accuracy by making up a new table using PyTran, using lower pressure and temperature.). See how well you can match the shape given in Fig. 4.6 by choosing appropriate values of ps and Tg. (ps should be around 6-10 mb). Remember to use Martian surface gravity in your calculation. Next, do an improved comparison by reading in a few Mars TES spectra and plotting your computed results on the same plot as the observed spectra. Note that the TES data includes an estimate of surface temperature. See how well the dry adiabat assumption can do for the relatively hot vs. relatively cold (winter) cases, and see if you can improve your fit by assuming an isothermal stratosphere. A collection of Mars TES spectra is provided in the Workbook datasets collection for Chapter 4. Python tips: The Chapter 4 script CO2RealGasFluxSpectrum.py does the computation you need. The Chapter 4 script ReadMarsTES.py reads in TES data and makes plots; you can modify it to dump the data you need.
- 4.25 (water vapor continua and real-gas runaway greenhouse)
- [**Watch this space for a new exoplanet problem]