50 USE yomhook
,ONLY : lhook, dr_hook
51 USE parkind1
,ONLY : jprb
58 REAL,
DIMENSION(:),
INTENT(IN) :: pzenith
59 REAL,
DIMENSION(:),
INTENT(IN) :: pwind
60 REAL,
DIMENSION(:),
INTENT(OUT) :: pdir_alb
61 REAL,
DIMENSION(:),
INTENT(OUT) :: psca_alb
66 REAL,
DIMENSION(SIZE(PZENITH)) :: zchl
67 REAL,
DIMENSION(SIZE(PZENITH)) :: zdir_alb
68 REAL,
DIMENSION(SIZE(PZENITH)) :: zsca_alb
72 REAL:: zsig, zrefm, zxx2, zr00, zrr0, zrrr
73 REAL:: zr22, zue, zue2, zr11df, zalbt, zfwc
74 REAL:: zchlabs, zaw, zbw, zap, zylmd, zbp550
77 REAL:: zr11, zrw, zrwdf, zrdf
82 REAL(KIND=JPRB) :: zhook_handle
86 IF (lhook) CALL dr_hook(
'ALBEDO_RS14',0,zhook_handle)
102 DO ji=1,
SIZE(pzenith)
112 zcoszen = max(cos(pzenith(ji)),0.)
114 zsig=sqrt(0.003+0.00512*pwind(ji))
119 zxx2=sqrt(1.0-(1.0-zcoszen**2)/zrefm**2)
120 zrr0=0.50*(((zxx2-zrefm*zcoszen)/(zxx2+zrefm*zcoszen))**2 +((zcoszen-zrefm*zxx2)/(zcoszen+zrefm*zxx2))**2)
121 zrrr=0.50*(((zxx2-1.34*zcoszen)/(zxx2+1.34*zcoszen))**2 +((zcoszen-1.34*zxx2)/(zcoszen+1.34*zxx2))**2)
122 zr11=zrr0-(0.0152-1.7873*zcoszen+6.8972*zcoszen**2-8.5778*zcoszen**3+4.071*zsig-7.6446*zcoszen*zsig) &
123 & * exp(0.1643-7.8409*zcoszen-3.5639*zcoszen**2-2.3588*zsig+10.0538*zcoszen*zsig)*zrr0/zrrr
131 zrdf = -0.1479 + 0.1502*zrefm - 0.0176*zsig*zrefm
138 zchlabs= xakachl(jwl)
144 zylmd = exp(0.014*(440.0-zwl))
145 zwork= exp(log(zchl(ji))*0.65)
146 zap = 0.06*zchlabs*zwork +0.2*(xaw440+0.06*zwork)*zylmd
147 zbp550 = 0.416 * exp(log(zchl(ji))*0.766)
149 IF ( zchl(ji) > 2. )
THEN
152 IF ( zchl(ji) > 0.02 )
THEN
153 zwork=log10(max(min(zchl(ji),2.),0.02))
155 zbbp=(0.002+0.01*(0.5-0.25*zwork)*(zwl/550.)**znu)*zbp550
157 zbbp=0.019*(550./zwl)*zbp550
163 zhb=0.5*zbw/(0.5*zbw+zbbp)
169 zr22=0.48168549-0.014894708*zsig-0.20703885*zsig**2
172 zr00=(0.5*zbw+zbbp)/(zaw+zap) *(0.6279-0.2227*zhb-0.0513*zhb**2 + (-0.3119+0.2465*zhb)*zcoszen)
174 zrw=zr00*(1.-zr22)/(1.-zr00*zr22)
182 zue2=sqrt(1.0-(1.0-zue**2)/zrefm**2)
183 zrr0=0.50*(((zue2-zrefm*zue)/(zue2+zrefm*zue))**2 +((zue-zrefm*zue2)/(zue+zrefm*zue2))**2)
184 zrrr=0.50*(((zue2-1.34*zue)/(zue2+1.34*zue))**2 +((zue-1.34*zue2)/(zue+1.34*zue2))**2)
185 zr11df=zrr0-(0.0152-1.7873*zue+6.8972*zue**2-8.5778*zue**3+4.071*zsig-7.6446*zue*zsig) &
186 & * exp(0.1643-7.8409*zue-3.5639*zue**2-2.3588*zsig+10.0538*zue*zsig)*zrr0/zrrr
189 zr00=(0.5*zbw+zbbp)/(zaw+zap) *(0.6279-0.2227*zhb-0.0513*zhb**2 + (-0.3119+0.2465*zhb)*zue)
190 zrwdf=zr00*(1.-zr22)*(1.-zr11df)/(1.-zr00*zr22)
194 zfwc=3.97e-4*pwind(ji)**(1.59)
202 zdir_alb(ji) = zdir_alb(ji) + xfrwl(jwl) *((1.-zfwc) * (zr11+zrw ) + zfwc*xrwc(jwl))
203 zsca_alb(ji) = zsca_alb(ji) + xfrwl(jwl) *((1.-zfwc) * (zrdf+zrwdf) + zfwc*xrwc(jwl))
213 pdir_alb(:)=zdir_alb(:)
214 psca_alb(:)=zsca_alb(:)
216 IF (lhook) CALL dr_hook(
'ALBEDO_RS14',1,zhook_handle)
subroutine albedo_rs14(PZENITH, PWIND, PDIR_ALB, PSCA_ALB)