Claire Ryder : Edwards and Slingo Aerocom Experiments : UoR, Dept Of Meteorology

Edwards and Slingo Aerocom Experiments

Prerequisites

All Cases

  • Tropical and subarctic winter atmospheric profiles (provided)
  • Solar zenith angles of 30 and 75 degrees
  • Surface albedo=0.2 (spectrally constant)

Aerosol Cases

  • Single scattering albedo (ssa) = 1.0 (purely scattering) and 0.8 (absorbing), spectrally constant
  • Aerosol Optical Depth (AOD, τ) at 550nm = 0.2
  • Asymmetry Parameter (g) = 0.7, spectrally constant
  • Angstrom Exponent = 1.0
  • Aerosol vertical profile: aerosol vertically constant in lowest 2km of atmosphere

Outline

  1. Creating the input files
    1. Vertical Profile Files
    2. Spectral Files
  2. Running the code
    1. Interactively
    2. From one line

1a. Creating the Vertical Profile Input Files

The provided vertical profile files can be found here: (subarctic winter (saw), tropical (trop)). These come from Anderson et al. (1986) (AFGL atmospheric constituent profiles (0–120 km)) Technical Report AFGL-TR-86-0110, AFGL (OPI), Hanscom AFB, MA. 01736) according to Randles et al. (2013). [Oxford has some more data on different atmospheric profiles here]. ES96 requires vertical profiles of CH4, CO, CO2, N2O, O2, O3, Q (specific humidity), temperature (mid-layer and levels), and aerosol if present. Aerocom has provided the CH4, CO, N2O, O3 and Q, so these just need to be converted from ppmv to kg/kg as required by ES96. For CO2 and O2 values are not provided, so these will just be set to typical values (0.578667e-3kg/kg and 0.231399kg/kg respectively), and constant with height.

The IDL code aerocom_prof4esrad.pro reads in the data, converts from ppmv to MMR (mass mixing ration) in kg/kg, and creates the input files required by ES96. It also creates the aerosol input file, .surf file and .szen file. The following is a brief description of the main equations in the code.

Converting from ppmv to kg/kg for Gas Profiles

gas_mmr = 1e-6 * ppmv_gas * (Rair/Rgas)

Where gas_mmr is the mass mixing ratio in kg/kg that you want to end up with, ppmv_gas is the provided gas concentration in ppmv, Rair=287 Jkg-1K-1 (specific gas constant for dry air), and Rgas = 8314/molar mass of gas, where 8314 = molar gas constant. The 1e-6 comes from the parts per million by volume, if it was ppbv it would be 1e-9.

Calculating required Aerosol MMR profile

The only requirement from the aerosol vertical profile is that AOD=0.2. Therefore the aerosol MMR must be such that the vertically integrated extinction is 0.2. Using the following, we can calculate the MMR required for each layer. Note that kext is set to 1000 m2/kg, which is a typical value for aerosol. This is arbitrary, as we are tuning the MMR to the required AOD. As long as the chosen MMR and kext values result in the correct AOD when combined as shown below, their values do not matter.

The definition of aerosol optical depth:

  τ = ∫ σext dz

Since,

  σext = kext * MMR * ρair,

Then,

  τ = kext ∫ MMR * ρair dz

Since using the hydrostatic equation:

  dp/dz = -ρ g

  ρ dz = dp/g

We can say:

  τ = (kext/g) ∫ MMR dp

If we then focus on one particular pressure level, we can take the MMR out of the integral:

  τ = (kext/g) * MMR ∫ dp

So that:

  MMR = τ * g * (1/kext) * (1/∫ dp)

Since ∫ dp is just over one level, it's just the difference in pressure between the level top and base:

  MMR = τ * g * (1/kext) * (1/plower - p higher)

However, since we have now separated the layers, we need to make sure the AOD is still right. For this case, we have 2 layers, each 1km thick. If we say that the AOD in each layer is the same, and equal to half the total column AOD, we can finally calculate the aerosol MMR for each layer:

  MMR = τ/2 * g * (1/kext) * (1/(plower - phigher))

Creating the profile files

Finally, to create the profile files to use as input for ES96 now we have the data in the correct format, the following code can be used:

In:

/home/jp902366/progs/swr05clm/nc_write_esrad_proftype.pro

Where 'proftype' is aunch (unclassified aerosol), CH4, CO, CO2, N2O, O2,O3 ,Q, TA, TL.

A call to each of these procedures creates the relevant profile netcdf file, ready for ES96. See aerocom_prof4esrad.pro for examples.

Calls to nc_write_esrad_szen.pro, nc_write_esrad_surf.pro and nc_write_esrad_stoa.pro are also used to create the solar zenith, surface albedo and TOA insolation files. Note that ES96 also provides scripts (Cgen_surf and Cgen_szen?) which can create these files from a unix style command line.

1b. Creating the Spectral Files

The spectral files to be used are the same, no matter what the solar zenith angle or atmospheric profile type. The spectral files only change for different aerosol optical properties - i.e. when the single scattering albedo changes. Therefore we need one spectral file for the absorbing case, and one for the scattering case. The clear-sky case can use either file - it won't matter as the aerosol will be switched off when we run ES96.

The IDL code aerocom_edit_spectral_file.pro is used to edit a spectral file. You will also need the code read_from_whole_spectral_file.pro. aerocom_edit_spectral_file.pro reads in an example spectral file that has been taken from $RAD_DIR/data/spectra/sp_sw_220_r provided with the ES96 code.

For 6 bands, the steps are analagous, but the code aerocom_edit_spectral_file_6bands.pro and read_from_whole_spectral_file_6band.pro should be used instead.

The example here is set up to read in data from an existing spectral file, and to create a new, different spectral file with modified aerosol data. The file sp_sw_220_r had already been edited by Bethan to include aerosol data, so I was able to use her file as a template. If you want to add aerosol data to a spectral file which has no aerosol data, or create a spectral file from scratch, it's probably best to use the prep_data process.

If you are doing a non-aerosol run, the spectral file sp_sw_220_r can probably be used as it is.

Calculating spectral values of Scattering and Absorption

Set kext at 550nm to 1000m2kg-1 - the value doesn't matter as long as the value is the same as used in creating the aerosol MMR profiles.

Define kext at the other wavelengths using the angstrom exponent. Here the angstrom exponent (A) is required to be 1, so we can use the following:

Definition of Angstrom Exponent:

  A = -log(kext1/kext2) / log(λ12),

where kext1 is kext at λ1 and kext2 is kext at λ2. Since A=1:

  log(λ12) = -log (kext1/kext2)

Which can be rearranged to give:

  kext2 = kext1 * (λ12).

Since we know kext (1000m2kg-1) at 550nm (λ1), we can calculate kext at all other required wavelengths.

The spectral file requires that kscat and kabs are specified, not kext. Since we know the single scattering albedo (ssa), we can calculate kscat and kabs as follows:

  ksca = kext * ssa

  kabs = kext - ksca

We know that g=0.7, and that it's spectrally constant. So now we have all the required aerosol parameters to write to the spectral file. See the IDL code for the actual writing to file.

Note that each line in the spectral file (and all scatter90 input files) must end with a space and carriage return.

2 Running the Code

Now that all the input files exist, the code can be run. There are two main ways to do this:

  1. Using l_run_cdf interactively
  2. Running Cl_run_cdf from one line

Note that for Aerocom, the code is run for an 'unclassified' aerosol type, 'AUNCH.' The code must be recompiled to do this - see more information on this.

Using l_run_cdf interactively

The simplest way to run the cases is by using the command below from the directory where the input files are:

  l_run_cdf

and inputting the options as prompted. See an example of inputs for the 220 band version with scattering aerosol. The type of atmospheric profile and solar zenith angle can be chosen by having the correct input files in the run directory.

Running Cl_run_cdf from one line

A much more effective way to run the code, requiring only one line of input, is to use:

  Cl_run_cdf

and supply the command with the appropriate flags, as follows:

  Cl_run_cdf -s spectral_6_sca -R 1 6 -S -c -g 2 -r -G 5 0 -C 5 -B aerocom -t 2 -v 1 -a

Here the flags set the following options (see the 2007 documentation, page 39, for full details on options):
-s spectral_6_sca name of spectral file
-R 1 6 range of bands (defining wavelengths) to use. This would be -R 1 220 for the 220 band version.
-S run the code in the shortwave
-c include the water vapour continuum
-g 2 include gaseous absorption and use option 2, random overlap
-r include rayleigh scattering
-G 5 0 Specify the type of basis function to be used (5 for a Lambertian surface) and specify the order of truncation of the surface BDRF (0)
-C 5 Specify cloud scheme (-C) and turn cloud off (option 5)
-B aerocom basename of the input files (e.g. aerocom.q)
-t 2 choice of two-stream scheme - delta eddington (option 2)
-v 1 Choose solver for two-stream calculations. I use 1, the pentadiagonal solver for a homogeneous column.
-a include aerosol (if not present, no aerosol is included)

I have setup a shell script, esrad_aerocom_6band.sh to run all the cases required by aerocom for the 6 band case. The script runs for zenith angles of 30 and 75, tropical and subarctic winter atmospheric profiles, and for clear sky, scattering aerosol, and absorbing aerosol.

To run the code, type:

  $   esrad_aerocom_6band.sh

Note - make sure you have executable rights on the file - change with $ chmod u+x esrad_aerocom_6band.sh)

The code loops over the required profiles, solar zenith angles, aerosol cases, and spectral regions required. It creates and changes directory for each different case, copying over the input files from a top directory, and then deleting them after each run.