The method of applying the trends to model ozone was designed by David Karoly and David Sexton, using SPARC trend estimates which are based on a variety of instruments: SAGE I/II, TOMS total column ozone, and ozonesondes in polar regions. Between 56oS-56oN, the trends are estimated above 20km from SAGE I/II data, and between the tropopause and 20km, the trends are estimated using the difference between TOMS column ozone data and SAGE I/II column ozone above 20km.
The SPARC data is here (big_endian) or here (little_endian).
f='trenddu_big_endian.dat'
openr,unit,f,/f77,/get_lun
lat=-88+4*findgen(45)
heights=(1.5+findgen(50))*1000.0
nht=n_elements(heights)
heights=[0.0,heights]
revht=reverse(heights)
nl=n_elements(lat)
trenddu=fltarr(nl,nht,12)
readu,unit,trenddu
In Fortran:
       dimension trenddu(45,50,12)
       open(10,file='trenddu_big_endian.dat',form='unformatted')
       read(10) trenddu
       close(10)
To convert from DU/km to mass-mixing ratio in kg/kg at a given height of the atmosphere you need CONVC defined below and the density of air at that height in the atmosphere, rho_air_ht.
dry_air_const = 287.05 ; J kg-1 K-1
standard_depth = 1.0e-5 ; 0.01 mm O3 at stp is 1DU
kilometre_depth = 1.0e3 ; 1000m for each DU km-1 datum
scales = standard_depth/kilometre_depth
standard_density = 1.0e5/(dry_air_const*273.15) ; p0/(R*T0)
rmm_ozone = 48.0 ; 3*16
rmm_air = 28.8 ; mixture
air_density = air_pressure/(dry_air_const*air_temperature)
mass_mixing_ratio = scales*standard_density*(rmm_ozone/rmm_air)*duperkm/air_density
rho_air=1.
convc=(1.0e-5/1.e3)*(1.0e5/(273.15*287.05))*(48/28.8)
duperkm=mass_mixing_ratio*rho_air_ht/(convc*rho_air)
mass_mixing_ratio=duperkm*convc*rho_air/rho_air_ht
The procedure (explained in more detail below) is to only use trends in the lower stratosphere i.e. everywhere above the model tropopause. SPARC's troposphere does not quite match up with the model tropopause so any ozone lost below the model's tropopause is re-distributed between the model tropopause and 20km (this is only a minor correction and ensures that the total column loss of ozone below 20km is the same in both the model and the SPARC data set).
rho_air_at_level=rho_air*pressure_difference_across_level_in_Pa/(g*height_difference_in_km).