SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
trad_body.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
6 INTERFACE
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 ! Diffuse solar radiation (W/m2)
12 REAL, DIMENSION(:), INTENT(IN) :: pref_sw_fac ! Solar radiation reflected by facade [wall + glazing] (W/m2)
13 REAL, DIMENSION(:), INTENT(IN) :: pref_sw_grnd ! Solar radiation reflected by ground [road + garden] (W/m2)
14 REAL, DIMENSION(:), INTENT(IN) :: pemit_lw_fac ! Longwave radiation emitted by the facade [wall + glazing] (W/m2)
15 REAL, DIMENSION(:), INTENT(IN) :: pemit_lw_grnd ! Longwave radiation emitted by the ground [road + garden] (W/m2)
16 REAL, DIMENSION(:), INTENT(IN) :: plw_rad ! Atmospheric longwave radiation (W/m2)
17 REAL, DIMENSION(:), INTENT(IN) :: pbld ! plan area density of building (m2(bld)/m2(urban))
18 REAL, DIMENSION(:), INTENT(IN) :: pbld_height ! building height (m)
19 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_hor ! ratio between facade and urban horizontal surface (m2(facade)/m2(urban))
20 REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: pdir_sw !Direct solar radiation (W/m2)
21 REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: pzenith !solar zenithal angle (rad from vert.)
22 REAL, DIMENSION(SIZE(PSCA_SW)) :: ptrad_body
23 END FUNCTION trad_body
24 END INTERFACE
25 END MODULE modi_trad_body
26 ! ##########################################################################
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)
29 ! ##########################################################################
30 !
31 !!**** *TRAD_BODY
32 !!
33 !! PURPOSE
34 !! -------
35 !
36 ! Computes the radiant temperature equivalent to the total radiation
37 ! received by the human body
38 !
39 !!** METHOD
40 ! ------
41 !
42 !! EXTERNAL
43 !! --------
44 !!
45 !! IMPLICIT ARGUMENTS
46 !! ------------------
47 !! a supplement
48 !! MODD_CST
49 !!
50 !! REFERENCE
51 !! ---------
52 !! www.utci.org
53 !!
54 !! AUTHOR
55 !! ------
56 !!
57 !! G. Pigeon * Meteo-France *
58 !!
59 !! MODIFICATIONS
60 !! -------------
61 !! Original 03/2011
62 !! V.MASSON 08/2014 : bug in road view factor in computation of Universal Thermal Climate Index (diagnostic only)
63 !-------------------------------------------------------------------------------
64 !
65 !* 0. DECLARATIONS
66 ! ------------
67 !
68 USE modd_csts, ONLY : xstefan, xpi
69 !
70 USE yomhook ,ONLY : lhook, dr_hook
71 USE parkind1 ,ONLY : jprb
72 !
73 IMPLICIT NONE
74 !
75 !* 0.1 declarations of arguments
76 REAL, DIMENSION(:), INTENT(IN) :: psca_sw ! Diffuse solar radiation (W/m2)
77 REAL, DIMENSION(:), INTENT(IN) :: pref_sw_fac ! Solar radiation reflected by facade [wall + glazing] (W/m2)
78 REAL, DIMENSION(:), INTENT(IN) :: pref_sw_grnd ! Solar radiation reflected by ground [road + garden] (W/m2)
79 REAL, DIMENSION(:), INTENT(IN) :: pemit_lw_fac ! Longwave radiation emitted by the facade [wall + glazing] (W/m2)
80 REAL, DIMENSION(:), INTENT(IN) :: pemit_lw_grnd ! Longwave radiation emitted by the ground [road + garden] (W/m2)
81 REAL, DIMENSION(:), INTENT(IN) :: plw_rad ! Atmospheric longwave radiation (W/m2)
82 REAL, DIMENSION(:), INTENT(IN) :: pbld ! plan area density of building (m2(bld)/m2(urban))
83 REAL, DIMENSION(:), INTENT(IN) :: pbld_height ! building height (m)
84 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_hor ! ratio between facade and urban horizontal surface (m2(facade)/m2(urban))
85 REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: pdir_sw !Direct solar radiation (W/m2)
86 REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: pzenith !solar zenithal angle (rad from vert.)
87 !REAL, DIMENSION(:), INTENT(IN) :: PDIR_SW !Direct solar radiation (W/m2)
88 !REAL, DIMENSION(:), INTENT(IN) :: PZENITH !solar zenithal angle (rad from vert.)
89 REAL, DIMENSION(SIZE(PSCA_SW)) :: ptrad_body
90 !REAL, DIMENSION(:) :: PTRAD_BODY
91 
92 !* 0.2 declarations of local variables
93 REAL :: zhb = 1.7 !average height of human person (m)
94 REAL :: zab = 0.7 !absorption coef of solar radiation by human body
95 REAL :: zeb = 0.97 !emissivity of human body
96 !REAL, DIMENSION(SIZE(PBLD)) :: TRAD_BODY
97 REAL, DIMENSION(SIZE(PBLD)) :: zwroad !width of the road (m)
98 REAL, DIMENSION(SIZE(PBLD)) :: zl1, zl2, zl4 !lengths for view factor calculation
99 REAL, DIMENSION(SIZE(PBLD)) :: zffac !facade view factor of human body
100 REAL, DIMENSION(SIZE(PBLD)) :: zfgrnd !ground view factor of human body
101 REAL, DIMENSION(SIZE(PBLD)) :: zfsky !sky view factor of human body
102 REAL, DIMENSION(SIZE(PBLD)) :: zdirswbody !solar radiation received by human body
103 REAL, DIMENSION(SIZE(PBLD)) :: zelev !solar elevation angle
104 REAL, DIMENSION(SIZE(PBLD)) :: zradbody !total radiation received by human body
105 INTEGER :: jj
106 REAL(KIND=JPRB) :: zhook_handle
107 !
108 IF (lhook) CALL dr_hook('TRAD_BODY',0,zhook_handle)
109 !
110 DO jj = 1, SIZE(pbld_height)
111  !
112  !* 1 - calculation of view factors
113  zwroad(jj) = pbld_height(jj) * 2. * (1. - pbld(jj)) / pwall_o_hor(jj)
114  !
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)
118  !
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)
123  !
124  !* 2 - base calculation for both sun and shade
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)
128  !
129 ENDDO
130 !
131 
132 !* 3 - add direct contribution in case of sunny conditions
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. )
138  ! the direct solar radiation is weighted by a projected area factor which can be expressed by this equation
139  ! for a rotationally symmetric human being (Fanger, 1970)
140  zradbody(jj) = zradbody(jj) + zab/zeb*zdirswbody(jj)
141  ENDDO
142 ENDIF
143 
144 !PTRAD_BODY(:) = (ZRADBODY(:)/XSTEFAN)**0.25
145 DO jj=1, SIZE(pbld_height)
146  ptrad_body(jj) = (zradbody(jj)/xstefan)**0.25
147 ENDDO
148 !
149 IF (lhook) CALL dr_hook('TRAD_BODY',1,zhook_handle)
150 !
151 END FUNCTION trad_body
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)
Definition: trad_body.F90:27