7 FUNCTION trad_body(PSCA_SW, PREF_SW_FAC, PREF_SW_GRND, &
8 pemit_lw_fac, pemit_lw_grnd, plw_rad, &
9 pbld, pbld_height, pwall_o_hor, &
10 pdir_sw, pzenith) result(ptrad_body)
11 REAL,
DIMENSION(:),
INTENT(IN) :: psca_sw
12 REAL,
DIMENSION(:),
INTENT(IN) :: pref_sw_fac
13 REAL,
DIMENSION(:),
INTENT(IN) :: pref_sw_grnd
14 REAL,
DIMENSION(:),
INTENT(IN) :: pemit_lw_fac
15 REAL,
DIMENSION(:),
INTENT(IN) :: pemit_lw_grnd
16 REAL,
DIMENSION(:),
INTENT(IN) :: plw_rad
17 REAL,
DIMENSION(:),
INTENT(IN) :: pbld
18 REAL,
DIMENSION(:),
INTENT(IN) :: pbld_height
19 REAL,
DIMENSION(:),
INTENT(IN) :: pwall_o_hor
20 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: pdir_sw
21 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: pzenith
22 REAL,
DIMENSION(SIZE(PSCA_SW)) :: ptrad_body
27 FUNCTION trad_body(PSCA_SW, PREF_SW_FAC, PREF_SW_GRND, PEMIT_LW_FAC, PEMIT_LW_GRND, PLW_RAD,&
28 pbld, pbld_height, pwall_o_hor, pdir_sw, pzenith) result(ptrad_body)
70 USE yomhook
,ONLY : lhook, dr_hook
71 USE parkind1
,ONLY : jprb
76 REAL,
DIMENSION(:),
INTENT(IN) :: psca_sw
77 REAL,
DIMENSION(:),
INTENT(IN) :: pref_sw_fac
78 REAL,
DIMENSION(:),
INTENT(IN) :: pref_sw_grnd
79 REAL,
DIMENSION(:),
INTENT(IN) :: pemit_lw_fac
80 REAL,
DIMENSION(:),
INTENT(IN) :: pemit_lw_grnd
81 REAL,
DIMENSION(:),
INTENT(IN) :: plw_rad
82 REAL,
DIMENSION(:),
INTENT(IN) :: pbld
83 REAL,
DIMENSION(:),
INTENT(IN) :: pbld_height
84 REAL,
DIMENSION(:),
INTENT(IN) :: pwall_o_hor
85 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: pdir_sw
86 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: pzenith
89 REAL,
DIMENSION(SIZE(PSCA_SW)) :: ptrad_body
97 REAL,
DIMENSION(SIZE(PBLD)) :: zwroad
98 REAL,
DIMENSION(SIZE(PBLD)) :: zl1, zl2, zl4
99 REAL,
DIMENSION(SIZE(PBLD)) :: zffac
100 REAL,
DIMENSION(SIZE(PBLD)) :: zfgrnd
101 REAL,
DIMENSION(SIZE(PBLD)) :: zfsky
102 REAL,
DIMENSION(SIZE(PBLD)) :: zdirswbody
103 REAL,
DIMENSION(SIZE(PBLD)) :: zelev
104 REAL,
DIMENSION(SIZE(PBLD)) :: zradbody
106 REAL(KIND=JPRB) :: zhook_handle
108 IF (lhook) CALL dr_hook(
'TRAD_BODY',0,zhook_handle)
110 DO jj = 1,
SIZE(pbld_height)
113 zwroad(jj) = pbld_height(jj) * 2. * (1. - pbld(jj)) / pwall_o_hor(jj)
115 zl1(jj) = sqrt(zhb**2 + (zwroad(jj)/2.)**2)
116 zl2(jj) = sqrt( pbld_height(jj)**2 + (zwroad(jj)/2.)**2)
117 zl4(jj) = sqrt((pbld_height(jj)-zhb)**2 + (zwroad(jj)/2.)**2)
119 zffac(jj) = (zl1(jj) + zl2(jj) - zwroad(jj)/2. - zl4(jj)) / (2. * zhb)
120 zfgrnd(jj) = 0.5*zwroad(jj)/zhb
121 zfgrnd(jj) = 0.5 * (zfgrnd(jj) + 1. - sqrt(zfgrnd(jj)**2 + 1.))
122 zfsky(jj) = 1. - zffac(jj) - zfgrnd(jj)
125 zradbody(jj) = zab/zeb * &
126 ( psca_sw(jj)*zfsky(jj) + pref_sw_fac(jj)*zffac(jj) + pref_sw_grnd(jj)*zfgrnd(jj) ) &
127 + plw_rad(jj)*zfsky(jj) + pemit_lw_fac(jj)*zffac(jj) + pemit_lw_grnd(jj)*zfgrnd(jj)
133 IF (present(pdir_sw) .AND. present(pzenith))
THEN
134 DO jj = 1,
SIZE(pbld_height)
135 zelev(jj) = xpi/2. - pzenith(jj)
136 IF (zelev(jj) < 1e-6) zelev(jj) = 0.
137 zdirswbody(jj) = pdir_sw(jj) * 0.308 * cos( zelev(jj)*(1-(zelev(jj)*180./xpi)**2)/48402. )
140 zradbody(jj) = zradbody(jj) + zab/zeb*zdirswbody(jj)
145 DO jj=1,
SIZE(pbld_height)
146 ptrad_body(jj) = (zradbody(jj)/xstefan)**0.25
149 IF (lhook) CALL dr_hook(
'TRAD_BODY',1,zhook_handle)
real function, dimension(size(psca_sw)) trad_body(PSCA_SW, PREF_SW_FAC, PREF_SW_GRND, PEMIT_LW_FAC, PEMIT_LW_GRND, PLW_RAD, PBLD, PBLD_HEIGHT, PWALL_O_HOR, PDIR_SW, PZENITH)