INTERFACE:
subroutine fairall(sst,airt,u10,v10,precip,evap,taux,tauy,qe,qh)DESCRIPTION:
The surface momentum flux vector,
,
in [Nm
],
the latent heat flux,
,
and the sensible heat flux,
, both in [Wm
]
are calculated here according to the Fairall et al. (1996b) bulk
formulae, which are build on the Liu-Katsaros-Businger
(Liu et al. (1979)) method.
Cool skin and warm layer effects are considered according to the
suggestions of Fairall et al. (1996a).
The air temperature airt and the sea surface temperature
sst may be given in Kelvin or Celcius:
if they are
100 - Kelvin is assumed.
This piece of code has been adapted from the COARE code originally written by David Rutgers and Frank Bradley.
USES:
use airsea_variables, only: kelvin,const06,rgas use airsea_variables, only: qs,qa,rhoa use airsea_variables, only: cpa,cpw use airsea, only: rain_impact,calc_evaporation IMPLICIT NONEINPUT PARAMETERS:
REALTYPE, intent(in) :: sst,airt,u10,v10,precipINPUT/OUTPUT PARAMETERS:
REALTYPE, intent(inout) :: evapOUTPUT PARAMETERS:
REALTYPE, intent(out) :: taux,tauy,qe,qhREVISION HISTORY:
Original author(s): Adolf Stips $Log: fairall.F90,v $ Revision 1.2 2007-10-02 10:14:08 kbk fixed rhoa calculation - rgas in airsea_variables module Revision 1.1 2007-09-25 10:06:10 kbk modularized the airsea module - added Fairall methodDEFINED PARAMETERS:
REALTYPE, parameter :: rho_0 = 1025.
REALTYPE, parameter :: g = 9.81 in [m/s2]
REALTYPE, parameter :: vonkar = 0.41 von Karman
Fairall LKB roughness Reynolds number to Von Karman
REALTYPE,parameter :: fdg = 1.0 non-dimensional
Beta parameter evaluated from Fairall low windspeed turbulence data.
REALTYPE,parameter :: beta = 1.2 non-dimensional
Zabl Height (m) of atmospheric boundary layer.
REALTYPE,parameter :: Zabl = 600.0 in [m]
REALTYPE, parameter :: r3 = 1.0/3.0
Liu et al. (1979) look-up table coefficients to compute roughness
Reynolds number for temperature (rt) and moisture (rq) as a
function of wind Reynolds number (rr):
rt = Liu_a(:,1) * Rr ** Liu_b(:,1) temperature
rq = Liu_a(:,2) * Rr ** Liu_b(:,2) moisture
REALTYPE,parameter, dimension(8,2) :: Liu_a = reshape ( &
(/ 0.177, 1.376, 1.026, 1.625, &
4.661, 34.904, 1667.190, 588000.0, &
0.292, 1.808, 1.393, 1.956, &
4.994, 30.709, 1448.680, 298000.0 /), &
(/ 8, 2 /) )
REALTYPE,parameter, dimension(8,2) :: Liu_b = reshape ( &
(/ 0.0, 0.929, -0.599, -1.018, &
-1.475, -2.067, -2.907, -3.935, &
0.0, 0.826, -0.528, -0.870, &
-1.297, -1.845, -2.682, -3.616 /), &
(/ 8, 2 /) )
REALTYPE,parameter, dimension(9) :: Liu_Rr = &
(/ 0.0, 0.11, 0.825, 3.0, &
10.0, 30.0, 100.0, 300.0, &
1000.0 /)
Height (m) of surface air temperature measurement.
REALTYPE, parameter :: zt= 2.0
Height (m) of surface air humidity measurement
REALTYPE, parameter :: zq= 2.0
Height (m) of surface winds measurement
REALTYPE, parameter :: zw= 10.0
integer, parameter :: itermax = 20
ifdef GUSTINESS
REALTYPE, parameter :: wgust=0.2
else
REALTYPE, parameter :: wgust=0.0
endif
REALTYPE,external :: psi
LOCAL VARIABLES:
REALTYPE :: tmp,cff,wgus REALTYPE :: L REALTYPE :: Ce,Ch,Cd REALTYPE :: ta,ta_k,tw,tw_k integer :: ier,iter,j,k REALTYPE :: vis_air REALTYPE :: tpsi,qpsi,wpsi,ZWoL,oL,ZToL,ZQoL,ZoW,ZoT, ZoQ REALTYPE :: Wstar,Tstar, Qstar, delQ, delT, rr,rt,rq REALTYPE :: TVstar,Bf, upvel,delw,Wspeed, w REALTYPE :: ri,cd_rain REALTYPE :: x1,x2,x3 REALTYPE :: x REALTYPE :: rainfall REALTYPE, parameter :: eps=1.0e-12