6 SUBROUTINE window_data(KI,PSHGC, PU_WIN, PALB_WIN, PABS_WIN, PUGG_WIN, PTRAN_WIN)
58 USE yomhook
,ONLY : lhook, dr_hook
59 USE parkind1
,ONLY : jprb
63 INTEGER,
INTENT(IN) :: ki
64 REAL,
DIMENSION(KI),
INTENT(IN) :: pshgc
65 REAL,
DIMENSION(KI),
INTENT(IN) :: pu_win
66 REAL,
DIMENSION(KI),
INTENT(OUT) :: palb_win
67 REAL,
DIMENSION(KI),
INTENT(OUT) :: pabs_win
68 REAL,
DIMENSION(KI),
INTENT(OUT) :: pugg_win
69 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptran_win
71 REAL,
DIMENSION(KI) :: zr_iw
72 REAL,
DIMENSION(KI) :: zr_ow
73 REAL,
DIMENSION(KI) :: zr_is
74 REAL,
DIMENSION(KI) :: zr_os
75 REAL,
DIMENSION(KI) :: zfrac
76 REAL,
DIMENSION(KI) :: ztran_win_norm
77 REAL,
DIMENSION(KI) :: zalb_win_norm
78 REAL,
DIMENSION(KI) :: zfac_tran
79 REAL,
DIMENSION(KI) :: zfac_alb
80 REAL(KIND=JPRB) :: zhook_handle
82 REAL:: ta, ra, tbcd, rbcd, td, rd, te, re, tfghi, rfghi, tfh, rfh, tj, rj
88 ta = 0.9237767331 ; ra = 1.6911265959
89 tbcd = 0.8802058937 ; rbcd = 1.5239470129
90 td = 0.893430955 ; rd = 1.0888507586
91 te = 0.8743096978 ; re = 1.5494187256
92 tfh = 0.8424427652 ; rfh = 1.0983010317
93 tfghi = 0.8327695761 ; rfghi = 1.3316554732
94 tj = 0.7889001341 ; rj = 1.0837577691
96 WHERE (pu_win <= 1.42)
103 WHERE (pshgc<0.45 .AND. pshgc>0.35)
104 zfac_tran = tj+(pshgc-0.35)*(te-tj)/(0.45-0.35)
105 zfac_alb = rj+(pshgc-0.35)*(re-rj)/(0.45-0.35)
115 WHERE (pu_win>1.42 .AND. pu_win<1.70)
122 WHERE (pshgc>0.5 .AND. pshgc<0.55)
123 zfac_tran = te+(pu_win-1.42)*((tfghi+(pshgc-0.5)*(te-tfghi)/(0.55-0.50))-te)/(1.70-1.42)
124 zfac_alb = re+(pu_win-1.42)*((rfghi+(pshgc-0.5)*(re-rfghi)/(0.55-0.50))-re)/(1.70-1.42)
127 WHERE (pshgc>=0.45 .AND. pshgc<=0.5)
128 zfac_tran = te+(pu_win-1.42)*(tfghi-te)/(1.70-1.42)
129 zfac_alb = re+(pu_win-1.42)*(rfghi-re)/(1.70-1.42)
132 WHERE (pshgc>0.35 .AND. pshgc<0.45)
133 zfac_tran = (tj+(pshgc-0.35)*(te-tj)/(0.45-0.35))+(pu_win-1.42)*(tfghi-(tj+(pshgc-0.35)*(te-tj)/(0.45-0.35)))/(1.70-1.42)
135 zfac_alb = (rj+(pshgc-0.35)*(re-rj)/(0.45-0.35))+(pu_win-1.42)*(rfghi-(rj+(pshgc-0.35)*(re-rj)/(0.45-0.35)))/(1.70-1.42)
138 WHERE (pshgc>=0.30 .AND. pshgc<=0.35)
139 zfac_tran = tj+(pu_win-1.42)*(tfghi-tj)/(1.70-1.42)
140 zfac_alb = rj+(pu_win-1.42)*(rfghi-rj)/(1.70-1.42)
143 WHERE (pshgc>0.25 .AND. pshgc<0.35)
144 zfac_tran = tj+(pu_win-1.42)*((tfh+(pshgc-0.25)*(tj-tfh)/(0.30-0.25))-tj)/(1.70-1.42)
145 zfac_alb = rj+(pu_win-1.42)*((rfh+(pshgc-0.25)*(rj-rfh)/(0.30-0.25))-rj)/(1.70-1.42)
149 zfac_tran = tj+(pu_win-1.42)*(tfh-tj)/(1.70-1.42)
150 zfac_alb = rj+(pu_win-1.42)*(rfh-rj)/(1.70-1.42)
157 WHERE (pu_win>=1.70 .AND. pu_win<=3.41)
164 WHERE (pshgc > 0.5 .AND. pshgc<0.55)
165 zfac_tran = tfghi+(pshgc-0.50)*(te-tfghi)/(0.55-0.50)
166 zfac_alb = rfghi+(pshgc-0.50)*(re-rfghi)/(0.55-0.50)
169 WHERE (pshgc>=0.30 .AND. pshgc<=0.50)
175 WHERE (pshgc > 0.25 .AND. pshgc<0.30)
176 zfac_tran = tfh+(pshgc-0.25)*(tfghi-tfh)/(0.30-0.25)
177 zfac_alb = rfghi+(pshgc-0.25)*(rfghi-rfh)/(0.30-0.25)
187 WHERE (pu_win>3.41 .AND. pu_win<4.54)
190 zfac_tran = te+(pu_win-3.41)*(ta-te)/(4.54-3.41)
191 zfac_alb = re+(pu_win-3.41)*(ra-re)/(4.54-3.41)
194 WHERE (pshgc>0.60 .AND. pshgc<0.65)
195 zfac_tran = te+(pu_win-3.41)*((tbcd+(pshgc-0.60)*(ta-tbcd)/(0.65-0.60))-te)/(4.54-3.41)
196 zfac_alb = re+(pu_win-3.41)*((rbcd+(pshgc-0.60)*(ra-rbcd)/(0.65-0.60))-re)/(4.54-3.41)
199 WHERE (pshgc>=0.55 .AND. pshgc<=0.60)
200 zfac_tran = te+(pu_win-3.41)*(tbcd-te)/(4.54-3.41)
201 zfac_alb = re+(pu_win-3.41)*(rbcd-re)/(4.54-3.41)
204 WHERE (pshgc>0.50 .AND. pshgc<0.55)
205 zfac_tran = (tfghi+(pshgc-0.50)*(te-tfghi)/(0.55-0.50)) + &
206 (pu_win-3.41)*(tbcd-(tfghi+(pshgc-0.50)*(te-tfghi)/(0.55-0.50)))/(4.54-3.41)
208 zfac_alb = (rfghi+(pshgc-0.50)*(re-rfghi)/(0.55-0.50)) + &
209 (pu_win-3.41)*(rbcd-(rfghi+(pshgc-0.50)*(re-rfghi)/(0.55-0.50)))/(4.54-3.41)
212 WHERE (pshgc>=0.45 .AND. pshgc<=0.50)
213 zfac_tran = tfghi+(pu_win-3.41)*(tbcd-tfghi)/(4.54-3.41)
214 zfac_alb = rfghi+(pu_win-3.41)*(rbcd-rfghi)/(4.54-3.41)
217 WHERE (pshgc>0.30 .AND. pshgc<0.45)
218 zfac_tran = tfghi+(pu_win-3.41)*((ta+(pshgc-0.30)*(tbcd-ta)/(0.45-0.30))-tfghi)/(4.54-3.41)
219 zfac_alb = rfghi+(pu_win-3.41)*((ra+(pshgc-0.30)*(rbcd-ra)/(0.45-0.30))-rfghi)/(4.54-3.41)
222 WHERE (pshgc>0.25 .AND. pshgc<0.30)
223 zfac_tran = (tfh+(pshgc-0.25)*(tfghi-tfh)/(0.30-0.25)) + &
224 (pu_win-3.41)*(td-(tfh+(pshgc-0.30)*(tfghi-tfh)/(0.30-0.25)))/(4.54-3.41)
225 zfac_alb = (rfh+(pshgc-0.25)*(rfghi-rfh)/(0.30-0.25)) + &
226 (pu_win-3.41)*(rd-(rfh+(pshgc-0.30)*(rfghi-rfh)/(0.30-0.25)))/(4.54-3.41)
230 zfac_tran = tfh+(pu_win-3.41)*(td-tfh)/(4.54-3.41)
231 zfac_alb = rfh+(pu_win-3.41)*(rd-rfh)/(4.54-3.41)
244 WHERE (pshgc >= 0.60 .AND. pshgc<=0.65)
245 zfac_tran = tbcd+(pshgc-0.60)*(ta-tbcd)/(0.65-0.60)
246 zfac_alb = rbcd+(pshgc-0.60)*(ra-rbcd)/(0.65-0.60)
249 WHERE (pshgc>=0.45 .AND. pshgc<=0.60)
254 WHERE (pshgc >= 0.30 .AND. pshgc<=0.45)
255 zfac_tran = td+(pshgc-0.30)*(tbcd-td)/(0.45-0.30)
256 zfac_alb = rd+(pshgc-0.30)*(rbcd-rd)/(0.45-0.30)
270 IF (lhook) CALL dr_hook(
'WINDOW_DATA',0,zhook_handle)
272 WHERE (pu_win(:) < 5.85)
273 zr_iw(:) = 1. / (0.359073*log(pu_win(:)) + 6.949915)
275 zr_iw(:) = 1. / (1.788041* pu_win(:) - 2.886625)
278 zr_ow(:) = 1. / (0.025342*pu_win(:) + 29.163853)
280 pugg_win(:) = 1./(1./pu_win(:) - zr_iw(:) - zr_ow(:))
285 WHERE (pu_win(:) > 4.5)
286 WHERE (pshgc(:) < 0.7206)
287 ztran_win_norm(:) = 0.939998 * pshgc(:)**2 + 0.20332 * pshgc(:)
289 ztran_win_norm(:) = 1.30415 * pshgc(:) - 0.30515
293 WHERE (pu_win(:) < 3.4)
294 WHERE (pshgc(:) <= 0.15)
295 ztran_win_norm(:) = 0.41040 * pshgc(:)
297 ztran_win_norm(:) = 0.085775 * pshgc(:)**2 + 0.963954 * pshgc(:) - 0.084958
301 WHERE (pu_win(:) >= 3.4 .AND. pu_win(:) <=4.5)
302 WHERE(pshgc(:) <= 0.15)
303 ztran_win_norm(:) = 0.5* (0.939998 * pshgc(:)**2 + (0.20332+0.41040) * pshgc(:))
305 WHERE(pshgc(:) > 0.15 .AND. pshgc(:) < 0.7206)
306 ztran_win_norm(:) = 0.5 * ((0.939998+0.085775) * pshgc(:)**2 + (0.20332 + 0.963954) * pshgc(:) - 0.084958)
308 ztran_win_norm(:) = 0.5*(0.085775 * pshgc(:)**2 + (0.963954+1.30415) * pshgc(:) - (0.084958+0.30515))
317 WHERE (pu_win(:) > 4.5)
318 zr_is(:) = 1. / ( 29.436546*(pshgc(:)-ztran_win_norm(:))**3 &
319 - 21.943415*(pshgc(:)-ztran_win_norm(:))**2 &
320 + 9.945872 *(pshgc(:)-ztran_win_norm(:)) + 7.426151 )
322 zr_os(:) = 1./ ( 2.225824*(pshgc(:)-ztran_win_norm(:)) + 20.57708 )
324 WHERE(pu_win(:) >= 3.4)
326 1. / ( 29.436546*(pshgc(:)-ztran_win_norm(:))**3 &
327 - 21.943415*(pshgc(:)-ztran_win_norm(:))**2 &
328 + 9.945872 *(pshgc(:)-ztran_win_norm(:)) + 7.426151 ) &
329 + 1./ (199.8208128*(pshgc(:)-ztran_win_norm(:))**3 &
330 - 90.639733*(pshgc(:)-ztran_win_norm(:))**2 &
331 + 19.737055*(pshgc(:)-ztran_win_norm(:)) + 6.766575) )
334 1./ ( 2.225824*(pshgc(:)-ztran_win_norm(:)) + 20.57708 ) &
335 + 1./ ( 5.763355*(pshgc(:)-ztran_win_norm(:)) + 20.541528 ) )
338 zr_is(:) = 1./ (199.8208128*(pshgc(:)-ztran_win_norm(:))**3 &
339 - 90.639733*(pshgc(:)-ztran_win_norm(:))**2 &
340 + 19.737055*(pshgc(:)-ztran_win_norm(:)) + 6.766575)
342 zr_os(:) = 1./ ( 5.763355*(pshgc(:)-ztran_win_norm(:)) + 20.541528 )
347 zfrac(:) = (zr_os(:) + 0.5*(1./pugg_win(:))) / &
348 (zr_os(:) + 1./pugg_win(:) + zr_is(:))
350 zalb_win_norm(:) = 1. - ztran_win_norm(:) - (pshgc(:)-ztran_win_norm(:)) / zfrac(:)
356 ptran_win(:) = ztran_win_norm(:) * zfac_tran
357 palb_win(:) = zalb_win_norm(:) * zfac_alb
359 pabs_win(:) = 1. - palb_win(:) - ptran_win(:)
361 IF (lhook) CALL dr_hook(
'WINDOW_DATA',1,zhook_handle)
subroutine window_data(KI, PSHGC, PU_WIN, PALB_WIN, PABS_WIN, PUGG_WIN, PTRAN_WIN)