29 |
_RL Du,Wg,Dt,Dq,u10,zo10,Cd10,Ch10 |
_RL Du,Wg,Dt,Dq,u10,zo10,Cd10,Ch10 |
30 |
_RL xBeta,visa,Ribcu,QaR |
_RL xBeta,visa,Ribcu,QaR |
31 |
_RL Ct,zetu,L10,Tas,ta,charn |
_RL Ct,zetu,L10,Tas,ta,charn |
|
c |
|
32 |
c |
c |
33 |
c Constants and coefficients (Stull 1988 p640). |
c |
34 |
|
c Constants and coefficients (Stull 1988 p640). |
35 |
xBeta=1.2 !Given as 1.25 in Fairall et al.(1996) |
xBeta=1.2 !Given as 1.25 in Fairall et al.(1996) |
36 |
twopi=2. _d 0*pi |
twopi=2. _d 0*pi |
37 |
visa=1.326 _d -5 |
visa=1.326 _d -5 |
45 |
|
|
46 |
|
|
47 |
c net upward long wave |
c net upward long wave |
48 |
Rnl= 0.97*(stefan*(tsw+Celsius2K)**4) !Net longwave (up = +). |
Rnl= 0.97*(stefan*(tsw+Celsius2K)**4) !Net longwave (up = +). |
49 |
c |
c |
50 |
c Teten''s returns air svp es in mb |
c Teten''s returns air svp es in mb |
51 |
es = (1.0007+3.46e-6*p0)*6.1121*dexp(17.502*tsw/(240.97+tsw)) !mb |
es = (1.0007+3.46e-6*p0)*6.1121*dexp(17.502*tsw/(240.97+tsw)) !mb |
79 |
u=dsqrt(u) |
u=dsqrt(u) |
80 |
Du=(u**2.+Wg**2.)**.5 !include gustiness in wind spd. difference |
Du=(u**2.+Wg**2.)**.5 !include gustiness in wind spd. difference |
81 |
Dt=tsw-Tas-gamma_blk*zt !potential temperature difference. |
Dt=tsw-Tas-gamma_blk*zt !potential temperature difference. |
82 |
Dq=qs-q |
Dq=qs-q |
83 |
c |
c |
84 |
c **************** neutral coefficients ****************** |
c **************** neutral coefficients ****************** |
85 |
c |
c |
95 |
c standard coare3 boundary layer height |
c standard coare3 boundary layer height |
96 |
zi=600. _d 0 |
zi=600. _d 0 |
97 |
|
|
98 |
c |
c |
99 |
c ************* Grachev and Fairall (JAM, 1997) ********** |
c ************* Grachev and Fairall (JAM, 1997) ********** |
100 |
c |
c |
101 |
ta=Tas+Celsius2K |
ta=Tas+Celsius2K |
102 |
Ct=xkar/dlog(zt/zot10) ! Temperature transfer coefficient |
Ct=xkar/dlog(zt/zot10) ! Temperature transfer coefficient |
103 |
CC=xkar*Ct/Cd ! z/L vs Rib linear coefficient |
CC=xkar*Ct/Cd ! z/L vs Rib linear coefficient |
104 |
Ribcu=-zu/(zi*0.004 _d 0*xBeta**3) ! Saturation or plateau Rib |
Ribcu=-zu/(zi*0.004 _d 0*xBeta**3) ! Saturation or plateau Rib |
105 |
Ribu=-gravity*zu*(Dt+0.61 _d 0*ta*Dq)/(ta*Du**2) |
Ribu=-gravity*zu*(Dt+0.61 _d 0*ta*Dq)/(ta*Du**2) |
106 |
if (Ribu.lt.0. _d 0) then |
if (Ribu.lt.0. _d 0) then |
107 |
zetu=CC*Ribu/(1. _d 0+Ribu/Ribcu) ! Unstable G and F |
zetu=CC*Ribu/(1. _d 0+Ribu/Ribcu) ! Unstable G and F |
120 |
usr= Du*xkar/(dlog(zu/zo10)-psiu(zu/L10)) |
usr= Du*xkar/(dlog(zu/zo10)-psiu(zu/L10)) |
121 |
tsr=-(Dt)*xkar/(dlog(zt/zot10)-psit(zt/L10)) |
tsr=-(Dt)*xkar/(dlog(zt/zot10)-psit(zt/L10)) |
122 |
qsr=-(Dq)*xkar/(dlog(zq/zot10)-psit(zq/L10)) |
qsr=-(Dq)*xkar/(dlog(zq/zot10)-psit(zq/L10)) |
123 |
c |
c |
124 |
charn=0.011 _d 0 !then modify Charnock for high wind speeds Chris' data |
charn=0.011 _d 0 !then modify Charnock for high wind speeds Chris s data |
125 |
if(Du.gt.10. _d 0) charn=0.011 _d 0+(0.018-0.011)*(Du-10.)/(18.0-10.0) |
if(Du.gt.10. _d 0) charn=0.011 _d 0 |
126 |
|
& +(0.018-0.011)*(Du-10.)/(18.0-10.0) |
127 |
if(Du.gt.18. _d 0) charn=0.018 _d 0 |
if(Du.gt.18. _d 0) charn=0.018 _d 0 |
128 |
c |
c |
129 |
c **** Iterate across u*(t*,q*),zo(zot,zoq) and z/L including cool skin **** |
c **** Iterate across u*(t*,q*),zo(zot,zoq) and z/L including cool skin **** |
130 |
c |
c |
131 |
do iter=1,nits |
do iter=1,nits |
135 |
zo=(50./twopi)*lwave*(usr/cwave)**4.5 _d 0+0.11*visa/usr !Oost et al. |
zo=(50./twopi)*lwave*(usr/cwave)**4.5 _d 0+0.11*visa/usr !Oost et al. |
136 |
else if(WAVEMODEL.eq.'TayYel') then |
else if(WAVEMODEL.eq.'TayYel') then |
137 |
zo=1200. _d 0*wavesh(i,j,bi,bj)*(wavesh(i,j,bi,bj)/lwave)**4.5 |
zo=1200. _d 0*wavesh(i,j,bi,bj)*(wavesh(i,j,bi,bj)/lwave)**4.5 |
138 |
& +0.11 _d 0*visa/usr !Taylor and Yelland |
& +0.11 _d 0*visa/usr !Taylor and Yelland |
139 |
endif |
endif |
140 |
rr=zo*usr/visa |
rr=zo*usr/visa |
141 |
c |
c |
142 |
c *** zoq and zot fitted to results from several ETL cruises ************ |
c *** zoq and zot fitted to results from several ETL cruises ************ |
160 |
endif |
endif |
161 |
Du=sqrt(u**2.+Wg**2.) !include gustiness in wind spd. |
Du=sqrt(u**2.+Wg**2.) !include gustiness in wind spd. |
162 |
enddo |
enddo |
163 |
|
|
164 |
c compute surface fluxes and other parameters |
c compute surface fluxes and other parameters |
165 |
tau=rhoa*usr*usr*u/Du !stress N/m2 |
tau=rhoa*usr*usr*u/Du !stress N/m2 |
166 |
hf=-cpair*rhoa*usr*tsr !sensible W/m2 |
hf=-cpair*rhoa*usr*tsr !sensible W/m2 |
172 |
endif |
endif |
173 |
q100=qs+qsr*(dlog(100. _d 0/zoq)-psit(100. _d 0/L)) |
q100=qs+qsr*(dlog(100. _d 0/zoq)-psit(100. _d 0/L)) |
174 |
c |
c |
175 |
return |
return |
176 |
end |
end |
177 |
c |
c |
178 |
c------------------------------------------------------------------ |
c------------------------------------------------------------------ |
200 |
endif |
endif |
201 |
return |
return |
202 |
end |
end |
203 |
c-------------------------------------------------------------- |
c-------------------------------------------------------------- |
204 |
function psit(zL) |
function psit(zL) |
205 |
|
|
206 |
implicit none |
implicit none |
207 |
_RL zL,x,y,psik,psic,f,psit,c |
_RL zL,x,y,psik,psic,f,psit,c |
208 |
if(zL.lt.0.0) then |
if(zL.lt.0.0) then |
219 |
endif |
endif |
220 |
return |
return |
221 |
end |
end |
222 |
|
|
223 |
c------------------------------------------------------------- |
c------------------------------------------------------------- |