7 subroutine ocean_albedo(knon,zrmu0,knindex,pwind,SFRWL,alb_dir_new,alb_dif_new)
65 integer,
intent(in) :: knon
66 integer,
dimension(klon),
intent(in) :: knindex
67 real,
dimension(klon),
intent(in) :: zrmu0,pwind
68 real,
dimension(klon,nsw),
intent(out) :: alb_dir_new,alb_dif_new
69 real,
dimension(6),
intent(in) :: SFRWL
74 REAL,
parameter :: XPI=4.*atan(1.)
80 REAL,
DIMENSION(klon) :: ZCHL
81 REAL,
DIMENSION(klon,NNWL) :: ZDIR_ALB
82 REAL,
DIMENSION(klon,NNWL) :: ZSCA_ALB
86 REAL:: ZSIG, ZREFM, ZXX2, ZR00, ZRR0, ZRRR
87 REAL:: ZR22, ZUE, ZUE2, ZR11DF, ZALBT, ZFWC
88 REAL:: ZCHLABS, ZAW, ZBW, ZAP, ZYLMD, ZBP550
91 REAL:: ZR11, ZRW, ZRWDF, ZRDF
107 alb_dir_new(:,:) = 0.
108 alb_dif_new(:,:) = 0.
116 if(ok_chlorophyll)
then
142 zcoszen = zrmu0(knindex(ji))
144 zsig=sqrt(0.003+0.00512*pwind(ji))
151 zxx2=sqrt(1.0-(1.0-zcoszen**2)/zrefm**2)
152 zrr0=0.50*(((zxx2-zrefm*zcoszen)/(zxx2+zrefm*zcoszen))**2 +((zcoszen-zrefm*zxx2)/(zcoszen+zrefm*zxx2))**2)
153 zrrr=0.50*(((zxx2-1.34*zcoszen)/(zxx2+1.34*zcoszen))**2 +((zcoszen-1.34*zxx2)/(zcoszen+1.34*zxx2))**2)
154 zr11=zrr0-(0.0152-1.7873*zcoszen+6.8972*zcoszen**2-8.5778*zcoszen**3+4.071*zsig-7.6446*zcoszen*zsig) &
155 & * exp(0.1643-7.8409*zcoszen-3.5639*zcoszen**2-2.3588*zsig+10.0538*zcoszen*zsig)*zrr0/zrrr
162 zrdf=-0.1482-0.012*zsig+0.1609*zrefm-0.0244*zsig*zrefm
175 zylmd = exp(0.014*(440.0-zwl))
176 zwork= exp(log(zchl(ji))*0.65)
177 zap = 0.06*zchlabs*zwork +0.2*(
xaw440+0.06*zwork)*zylmd
178 zbp550 = 0.416 * exp(log(zchl(ji))*0.766)
180 IF ( zchl(ji) > 2. )
THEN
183 IF ( zchl(ji) > 0.02 )
THEN
184 zwork=log10(zchl(ji))
186 zbbp=(0.002+0.01*(0.5-0.25*zwork)*(zwl/550.)**znu)*zbp550
188 zbbp=0.019*(550./zwl)*zbp550
194 zhb=0.5*zbw/(0.5*zbw+zbbp)
200 zr22=0.48168549-0.014894708*zsig-0.20703885*zsig**2
203 zr00=(0.5*zbw+zbbp)/(zaw+zap) *(0.6279-0.2227*zhb-0.0513*zhb**2 + (-0.3119+0.2465*zhb)*zcoszen)
204 zrw=zr00*(1.-zr22)*(1.-zr11)/(1.-zr00*zr22)
206 zrw=zr00*(1.-zr22)/(1.-zr00*zr22)
213 zue2=sqrt(1.0-(1.0-zue**2)/zrefm**2)
214 zrr0=0.50*(((zue2-zrefm*zue)/(zue2+zrefm*zue))**2 +((zue-zrefm*zue2)/(zue+zrefm*zue2))**2)
215 zrrr=0.50*(((zue2-1.34*zue)/(zue2+1.34*zue))**2 +((zue-1.34*zue2)/(zue+1.34*zue2))**2)
216 zr11df=zrr0-(0.0152-1.7873*zue+6.8972*zue**2-8.5778*zue**3+4.071*zsig-7.6446*zue*zsig) &
217 & * exp(0.1643-7.8409*zue-3.5639*zue**2-2.3588*zsig+10.0538*zue*zsig)*zrr0/zrrr
220 zr00=(0.5*zbw+zbbp)/(zaw+zap) *(0.6279-0.2227*zhb-0.0513*zhb**2 + (-0.3119+0.2465*zhb)*zue)
221 zrwdf=zr00*(1.-zr22)*(1.-zr11df)/(1.-zr00*zr22)
224 zfwc=3.97e-4*pwind(ji)**(1.59)
234 zdir_alb(ji,jwl) =
xfrwl(jwl) *((1.-zfwc) * (zr11+zrw) +zfwc*
xrwc(jwl))
235 zsca_alb(ji,jwl) =
xfrwl(jwl) *((1.-zfwc) * (zrdf+zrwdf) + zfwc*
xrwc(jwl))
248 alb_dir_new(ji,1)=sum(zdir_alb(ji,1:49))/sfrwl(1)
249 alb_dir_new(ji,2)=sum(zdir_alb(ji,50:381))/sfrwl(2)
251 alb_dif_new(ji,1)=sum(zsca_alb(ji,1:49))/sfrwl(1)
252 alb_dif_new(ji,2)=sum(zsca_alb(ji,50:381))/sfrwl(2)
256 alb_dir_new(ji,1)=sum(zdir_alb(ji,1:49))/sfrwl(1)
257 alb_dir_new(ji,2)=sum(zdir_alb(ji,50:99))/sfrwl(2)
258 alb_dir_new(ji,3)=sum(zdir_alb(ji,100:218))/sfrwl(3)
259 alb_dir_new(ji,4)=sum(zdir_alb(ji,219:381))/sfrwl(4)
261 alb_dif_new(ji,1)=sum(zsca_alb(ji,1:49))/sfrwl(1)
262 alb_dif_new(ji,2)=sum(zsca_alb(ji,50:99))/sfrwl(2)
263 alb_dif_new(ji,3)=sum(zsca_alb(ji,100:218))/sfrwl(3)
264 alb_dif_new(ji,4)=sum(zsca_alb(ji,219:381))/sfrwl(4)
268 alb_dir_new(ji,1)=sum(zdir_alb(ji,1:5))/sfrwl(1)
269 alb_dir_new(ji,2)=sum(zdir_alb(ji,6:24))/sfrwl(2)
270 alb_dir_new(ji,3)=sum(zdir_alb(ji,25:49))/sfrwl(3)
271 alb_dir_new(ji,4)=sum(zdir_alb(ji,50:99))/sfrwl(4)
272 alb_dir_new(ji,5)=sum(zdir_alb(ji,100:218))/sfrwl(5)
273 alb_dir_new(ji,6)=sum(zdir_alb(ji,219:381))/sfrwl(6)
275 alb_dif_new(ji,1)=sum(zsca_alb(ji,1:5))/sfrwl(1)
276 alb_dif_new(ji,2)=sum(zsca_alb(ji,6:24))/sfrwl(2)
277 alb_dif_new(ji,3)=sum(zsca_alb(ji,25:49))/sfrwl(3)
278 alb_dif_new(ji,4)=sum(zsca_alb(ji,50:99))/sfrwl(4)
279 alb_dif_new(ji,5)=sum(zsca_alb(ji,100:218))/sfrwl(5)
280 alb_dif_new(ji,6)=sum(zsca_alb(ji,219:381))/sfrwl(6)
real, dimension(nnwl), parameter xakwl
real, dimension(nnwl), parameter xrwc
real, dimension(nnwl), parameter xakrefm
subroutine ocean_albedo(knon, zrmu0, knindex, pwind, SFRWL, alb_dir_new, alb_dif_new)
real, dimension(nnwl), parameter xakaw3
real, dimension(nnwl), parameter xfrwl
real, dimension(nnwl), parameter xakbw
real, dimension(:), allocatable, save chl_con
real, dimension(nnwl), parameter xakachl