Home > air_sea > cool_skin.m

cool_skin

PURPOSE ^

COOL_SKIN: compute the cool-skin parameters.

SYNOPSIS ^

function [delta,Dter,Dqer] = cool_skin(sal,Tw,rhoa,cpa,Pa,U_star,T_star,Q_star,dlw,dsw,nsw,delta,g,Rgas,CtoK,Qsat_coeff)

DESCRIPTION ^

 COOL_SKIN: compute the cool-skin parameters.
 COOL_SKIN computes the cool-skin parameters. This code follows 
 the fortran program bulk_v25b.f. For more details, see the cool-skin
 and warm layer paper by Fairall et al (1996), JGR, 101, 1295-1308. 
 All input variables should be vectors (either row or column), except 
 Rgas, CtoK, Qsat_coeff, and g, which can be scalars. Uses some
 functions from CSIRO SEAWATER TOOLBOX.

 INPUT:  sal       -  salinity [psu (PSS-78)]
         Tw        -  water surface temperature [C]
         rhoa      -  air density [kg/m^3]
         cpa       -  specific heat capacity of air [J/kg/C] 
         Pa        -  air pressure [mb]
         U_star    -  friction velocity including gustiness [m/s]
         T_star    -  temperature scale [C]
         Q_star    -  humidity scale [kg/kg]
         dlw       -  downwelling (INTO water) longwave radiation [W/m^2]
         dsw       -  measured insolation [W/m^2]
         nsw       -  net shortwave radiation INTO water [W/m^2]
         delta     -  cool-skin layer thickness [m]
         g         -  gravitational constant [m/s^2]
         Rgas      -  gas constant for dry air [J/kg/K]
         CtoK      -  conversion factor for deg C to K
        Qsat_coeff - saturation specific humidity coefficient

 OUTPUT: delta     -  cool-skin layer thickness [m]
         Dter      -  cool-skin temperature difference [C]; positive if 
                      surface is cooler than bulk (presently no warm skin 
                      permitted by model)
         Dqer      -  cool-skin specific humidity difference [kg/kg]

 USAGE:  [delta,Dter,Dqer] = cool_skin(sal,Tw,rhoa,cpa,Pa, ...
                                 U_star,T_star,Q_star, ...
                                 dlw,dsw,nsw,delta,g,Rgas, ...
                                 CtoK,Qsat_coeff)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function [delta,Dter,Dqer] = cool_skin(sal,Tw,rhoa,cpa,Pa, ...
0002                                         U_star,T_star,Q_star, ...
0003                                         dlw,dsw,nsw,delta,g,Rgas, ...
0004                                         CtoK,Qsat_coeff)
0005 % COOL_SKIN: compute the cool-skin parameters.
0006 % COOL_SKIN computes the cool-skin parameters. This code follows
0007 % the fortran program bulk_v25b.f. For more details, see the cool-skin
0008 % and warm layer paper by Fairall et al (1996), JGR, 101, 1295-1308.
0009 % All input variables should be vectors (either row or column), except
0010 % Rgas, CtoK, Qsat_coeff, and g, which can be scalars. Uses some
0011 % functions from CSIRO SEAWATER TOOLBOX.
0012 %
0013 % INPUT:  sal       -  salinity [psu (PSS-78)]
0014 %         Tw        -  water surface temperature [C]
0015 %         rhoa      -  air density [kg/m^3]
0016 %         cpa       -  specific heat capacity of air [J/kg/C]
0017 %         Pa        -  air pressure [mb]
0018 %         U_star    -  friction velocity including gustiness [m/s]
0019 %         T_star    -  temperature scale [C]
0020 %         Q_star    -  humidity scale [kg/kg]
0021 %         dlw       -  downwelling (INTO water) longwave radiation [W/m^2]
0022 %         dsw       -  measured insolation [W/m^2]
0023 %         nsw       -  net shortwave radiation INTO water [W/m^2]
0024 %         delta     -  cool-skin layer thickness [m]
0025 %         g         -  gravitational constant [m/s^2]
0026 %         Rgas      -  gas constant for dry air [J/kg/K]
0027 %         CtoK      -  conversion factor for deg C to K
0028 %        Qsat_coeff - saturation specific humidity coefficient
0029 %
0030 % OUTPUT: delta     -  cool-skin layer thickness [m]
0031 %         Dter      -  cool-skin temperature difference [C]; positive if
0032 %                      surface is cooler than bulk (presently no warm skin
0033 %                      permitted by model)
0034 %         Dqer      -  cool-skin specific humidity difference [kg/kg]
0035 %
0036 % USAGE:  [delta,Dter,Dqer] = cool_skin(sal,Tw,rhoa,cpa,Pa, ...
0037 %                                 U_star,T_star,Q_star, ...
0038 %                                 dlw,dsw,nsw,delta,g,Rgas, ...
0039 %                                 CtoK,Qsat_coeff)
0040 
0041 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0042 % 4/9/99: version 1.2 (contributed by AA)
0043 % 8/5/99: version 2.0
0044 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0045 
0046 % -> column vectors
0047 sal = sal(:); Tw = Tw(:); rhoa = rhoa(:); cpa = cpa(:); Pa = Pa(:);
0048 U_star = U_star(:); T_star = T_star(:); Q_star = Q_star(:); 
0049 dlw = dlw(:); nsw = nsw(:); delta = delta(:); Rgas = Rgas(:);
0050 CtoK = CtoK(:); Qsat_coeff = Qsat_coeff(:); g = g(:);
0051 
0052 
0053 size_data = size(Tw);
0054 
0055 alpha    = sw_alpha(sal,Tw,0);   % thermal expansion coeff [1/C]
0056 beta_sal = sw_beta(sal,Tw,0);    % saline contraction coeff [1/psu]
0057 cpw      = sw_cp(sal,Tw,0);      % specific heat capacity  [J/kg/C]
0058 rhow     = sw_dens0(sal,Tw);     % density at atmospheric press [kg/m^3]
0059 viscw    = sw_visc(sal,Tw,0);    % kinematic viscosity of sea-water [m^2/s]
0060 tcondw   = sw_tcond(sal,Tw,0);   % thermal conductivity of sea-water [W/m/K]
0061 
0062 % the following are values used for COARE
0063 % alpha    = 2.1e-5*(Tw+3.2).^0.79;% as used for COARE data
0064 % beta_sal = 0.026./sal;           % as used for COARE data
0065 % cpw      = 4000*ones(size(Tw));  % as used for COARE data
0066 % rhow     = 1022*ones(size(Tw));  % as used for COARE data
0067 % viscw    = 1e-6*ones(size(Tw));  % as used for COARE data
0068 % tcondw   = 0.6*ones(size(Tw));   % as used for COARE data
0069 
0070 % latent heat of water
0071 Le       = (2.501-0.00237*Tw)*10^6;
0072 
0073 % saturation specific humidity;
0074 Qs       = Qsat_coeff.*qsat(Tw,Pa);
0075 
0076 % a big constant
0077 bigc     = (16.*g.*cpw.*(rhow.*viscw).^3)./(tcondw.^2.*rhoa.^2);
0078 
0079 % constant for correction of dq; slope of sat. vap.
0080 wetc     = 0.622.*Le.*Qs./(Rgas.*(Tw+CtoK).^2);
0081 
0082 % compute fluxes out of the ocean (i.e., up = positive)
0083 hsb  = - rhoa.*cpa.*U_star.*T_star;
0084 hlb  = - rhoa.*Le.*U_star.*Q_star;
0085 
0086 % net longwave (positive up)
0087 nlw = - lwhf(Tw,dlw,dsw);
0088 
0089 % total heat flux out of the water surface
0090 qout = nlw + hsb + hlb;
0091 
0092 % compute deltaSc = fc*Sns, see sec. 2.4 (p. 1297-1298) in cool-skin paper
0093 % 3 choices; comment out those that are not used!
0094 deltaSc  = zeros(size_data);
0095 ipos_nsw = find(nsw > 0);
0096 deltaSc(ipos_nsw) = f_c(delta(ipos_nsw),1).*nsw(ipos_nsw); % Paulson and Simpson (1981)
0097 % deltaSc(ipos_nsw) = f_c(delta(ipos_nsw),2).*nsw(ipos_nsw); % COARE approx. to Paulson
0098 % deltaSc(ipos_nsw) = f_c(delta(ipos_nsw),3).*nsw(ipos_nsw); % Hasse (1971)
0099 
0100 qcol = qout - deltaSc;
0101 
0102 % initialize
0103 alphaQb   = zeros(size_data);
0104 lamda     = zeros(size_data);
0105 Dter      = zeros(size_data);
0106 
0107 ipos_qcol = find(qcol > 0);
0108 
0109 % eqn. 17 in cool-skin paper
0110 alphaQb(ipos_qcol) = alpha(ipos_qcol).*qcol(ipos_qcol) + ...
0111                      sal(ipos_qcol).*beta_sal(ipos_qcol) ...
0112                      .*hlb(ipos_qcol).*cpw(ipos_qcol)./Le(ipos_qcol);
0113 
0114 % eqn. 14 in cool-skin paper
0115 lamda(ipos_qcol)   = 6./(1+(bigc(ipos_qcol).*alphaQb(ipos_qcol) ...
0116                            ./U_star(ipos_qcol).^4).^0.75).^(1/3);
0117 
0118 % eqn. 12 in cool-skin paper
0119 delta(ipos_qcol) = lamda(ipos_qcol).*viscw(ipos_qcol) ...
0120                    ./(sqrt(rhoa(ipos_qcol)./rhow(ipos_qcol)) ...
0121                    .*U_star(ipos_qcol));
0122 
0123 % eqn. 13 in cool-skin paper
0124 Dter(ipos_qcol)    = qcol(ipos_qcol).*delta(ipos_qcol)./tcondw(ipos_qcol);
0125 
0126 Dqer          = wetc.*Dter; 
0127 
0128 
0129 
0130 
0131 function fc = f_c(delta,option)
0132 % F_C: computes the absorption coefficient fc.
0133 % fc=F_C(delta,option) computes the absorption coefficient fc.
0134 %
0135 % INPUT: delta   -  thickness of cool-skin layer [m]
0136 %        option  -  1  use Paulson and Simpson (1981) data for seawater;
0137 %                      See also p. 1298 of Fairall et al (1996) JGR, 101,
0138 %                      cool-skin and warm-layer paper.
0139 %
0140 %                   2  use approximation to Paulson as given in
0141 %                      p. 1298 of Fairall et al (1996) JGR, 101, cool-skin
0142 %                      and warm-layer paper.
0143 %
0144 %                   3  use fc = const. = 0.19, as suggested by Hasse (1971).
0145 
0146 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0147 % 8/5/99: version 1.2 (contributed by AA)
0148 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0149 
0150 if option == 1
0151   % Use Paulson and Simpson data
0152 
0153   % Wavelength bands for the coefficients [um]
0154   % 1) 0.2-0.6
0155   % 2) 0.6-0.9
0156   % 3) 0.9-1.2
0157   % 4) 1.2-1.5
0158   % 5) 1.5-1.8
0159   % 6) 1.8-2.1
0160   % 7) 2.1-2.4
0161   % 8) 2.4-2.7
0162   % 9) 2.7-3.0
0163 
0164   % F_i is the amplitude
0165   F_i    = [0.237 0.360 0.179 0.087 0.080 0.0246 0.025 0.007 0.0004];
0166   F_i1   = repmat(F_i,length(delta),1);
0167 
0168   % Gam_i is the absorption length [m]
0169   Gam_i  = [34.8 2.27 3.15e-2 5.48e-3 8.32e-4 1.26e-4 3.13e-4 7.82e-5 1.44e-5]; 
0170   Gam_i1 = repmat(Gam_i,length(delta),1);
0171 
0172   delta1 = repmat(delta,1,length(Gam_i));
0173 
0174   % fc is the absorption in the cool-skin layer of thickness delta
0175   fc = sum(F_i1.*(1-(Gam_i1./delta1).*(1-exp(-delta1./Gam_i1))), 2);
0176 
0177 elseif option == 2
0178   % use COARE approximation to Paulson and Simpson data
0179 
0180   fc = 0.137+11.*delta-(6.6e-5./delta).*(1-exp(-delta/8e-4));
0181 
0182 elseif option == 3
0183   % use Hasse simple approximation
0184 
0185   fc = 0.19;
0186 
0187 end

Generated on Thu 26-Apr-2007 12:23:13 by m2html © 2003