Home > atmlab > forwardmodel > fm_o3_111ghz.m

fm_o3_111ghz

PURPOSE ^

FM_O3_111GHZ A very simple forward model for ozone around 110.8 GHz

SYNOPSIS ^

function [tb,K] = fm_o3_111ghz(z,p,t,o3,v,el,tb0)

DESCRIPTION ^

 FM_O3_111GHZ   A very simple forward model for ozone around 110.8 GHz

    This function is a simple forward model, for ground-based measurements,
    that only considers a single transition, the ozone transition at 
    110.836 GHz. 

    The function returns both spectrum and weighting function matrix, K,
    where K corresponds to a VMR retrieval.

 FORMAT   [tb,K] = fm_o3_111ghz(z,p,t,o3,v,el,tb0)
        
 OUT   tb   Brightness temperature spectrum.
       K    Weighting functions [K/VMR].
 IN    z    Vector of vertical altitudes.
       p    Pressures at *z*.
       t    Temperatures at *z*.
       o3   Ozone VMR profile.
       v    Frequency vector.
       el   Elevation angle of measurement (90=zenith)
       tb0  Brightness temperature of icoming radiation at the
            top of the atmosphere.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

DOWNLOAD ^

fm_o3_111ghz.m

SOURCE CODE ^

0001 % FM_O3_111GHZ   A very simple forward model for ozone around 110.8 GHz
0002 %
0003 %    This function is a simple forward model, for ground-based measurements,
0004 %    that only considers a single transition, the ozone transition at
0005 %    110.836 GHz.
0006 %
0007 %    The function returns both spectrum and weighting function matrix, K,
0008 %    where K corresponds to a VMR retrieval.
0009 %
0010 % FORMAT   [tb,K] = fm_o3_111ghz(z,p,t,o3,v,el,tb0)
0011 %
0012 % OUT   tb   Brightness temperature spectrum.
0013 %       K    Weighting functions [K/VMR].
0014 % IN    z    Vector of vertical altitudes.
0015 %       p    Pressures at *z*.
0016 %       t    Temperatures at *z*.
0017 %       o3   Ozone VMR profile.
0018 %       v    Frequency vector.
0019 %       el   Elevation angle of measurement (90=zenith)
0020 %       tb0  Brightness temperature of icoming radiation at the
0021 %            top of the atmosphere.
0022 
0023 % 2004-11-18   Created by Patrick Eriksson
0024 
0025 
0026 function [tb,K] = fm_o3_111ghz(z,p,t,o3,v,el,tb0)
0027 
0028 %=== Some constants
0029 KB      = 1.380662e-23;         % Boltzmann constant [J/K]
0030 P0      = 1.013e5;              % Std. ground pressure [Pa]
0031 T0      = 296;                  % Std. ground temperature [K]
0032 V0      = 110.83604e9;          % Centre frequency [Hz]
0033 S0      = 0.3724e-16;           % Line strength [m2Hz]
0034 GA0     = 2.37e9;               % Pressure broadening at ground level [Hz]
0035 X       = 0.73;                 % Temperature exponent [-]
0036 
0037 nz = length(z);                 % Number of altitudes
0038 
0039 
0040 %=== Init. Tb
0041 tb      = repmat( tb0, length(v), 1 );
0042 if nargout > 1
0043   K = zeros( length(v), nz );
0044 end
0045 
0046 
0047 %= Ensure column vectors
0048 %
0049 v = vec2col( v );
0050 
0051 
0052 %=== Loop altitudes downwards
0053 for i = nz:-1:1
0054 
0055   %= Calculate the vertical distance of the present layer.
0056   %= The values are treated to be valid halfway to the neighbouring points
0057   %= Treat first and last altitude seperately
0058   if i == 1
0059     dz = z(2) - z(1);
0060   elseif i == nz
0061     dz = z(nz) - z(nz-1);
0062   else
0063     dz = ( z(i+1) - z(i-1) ) / 2;
0064   end
0065 
0066   %= The pressure broadening width
0067   ga = GA0 * (p(i)/P0) * (T0/t(i))^X;
0068 
0069   %= The number of ozone molecules
0070   n  = o3(i) * p(i) / KB / t(i);
0071 
0072   %= Calculate the absorption
0073   k  = n * S0 * ga ./ ((v-V0).^2+ga^2) / pi;  
0074 
0075   %= The transmission, considering the elevation angle
0076   tr = exp( -dz * k / sin(el*pi/180) );
0077  
0078   %= Do Jacobian
0079   if nargout > 1
0080     K(:,i)   = dz * k .* ( t(i) - tb ) / o3(i);
0081     ind      = i:nz;
0082     K(:,ind) = K(:,ind) .* repmat(tr,1,nz-i+1);
0083   end
0084 
0085   %= Update tb
0086   tb = tb.*tr + t(i).*(1-tr);
0087  
0088 end
0089 
0090 return
0091 
0092 plot(v/1e9,tb)
0093 xlabel('Frequency [GHz]')
0094 ylabel('Brightness temperature [K]')

Generated on Mon 15-Sep-2014 13:31:28 by m2html © 2005