SURFEX v8.1
General documentation of Surfex
averaged_albedo_teb.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.
5 ! #########
6  SUBROUTINE averaged_albedo_teb(TOP, T, TPN, B, PZENITH, PAZIM, &
7  PALB_GARDEN, PALB_GREENROOF, PDIR_ALB_TOWN, PSCA_ALB_TOWN)
8 ! ###################################################
9 !
10 !!**** *AVERAGED_ALBEDO_TEB* computes averaged albedo for TEB scheme
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !! METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !! AUTHOR
28 !! ------
29 !!
30 !! V. Masson Meteo-France
31 !!
32 !! MODIFICATION
33 !! ------------
34 !!
35 !! Original 01/2004
36 ! C. de Munck & A. Lemonsu 09/2011 Greenroofs
37 !! G. Pigeon 09/2012 B%XTRAN_WIN as arguments
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 !
44 USE modd_teb_n, ONLY : teb_t
45 USE modd_bem_n, ONLY : bem_t
46 USE modd_teb_panel_n, ONLY : teb_panel_t
48 !
49 USE modd_surf_par, ONLY : xundef
51 !
52 USE modi_urban_solar_abs
54 !
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declaration of arguments
62 ! ------------------------
63 !
64 TYPE(teb_options_t), INTENT(INOUT) :: TOP
65 TYPE(teb_t), INTENT(INOUT) :: T
66 TYPE(bem_t), INTENT(INOUT) :: B
67 TYPE(teb_panel_t), INTENT(INOUT) :: TPN
68 !
69 REAL, DIMENSION(:), INTENT(IN) :: PZENITH ! zenithal solar angle
70 REAL, DIMENSION(:), INTENT(IN) :: PAZIM ! solar azimuthal angle
71 ! ! (radian from N, clockwise)
72 !
73 REAL, DIMENSION(:), INTENT(IN) :: PALB_GARDEN ! green areas albedo
74 REAL, DIMENSION(:), INTENT(IN) :: PALB_GREENROOF! green roof albedo
75 REAL, DIMENSION(:), INTENT(OUT):: PDIR_ALB_TOWN ! direct albedo
76 REAL, DIMENSION(:), INTENT(OUT):: PSCA_ALB_TOWN ! diffuse albedo
77 !
78 !* 0.2 Declaration of local variables
79 ! ------------------------------
80 !
81 REAL, DIMENSION(SIZE(T%XBLD)) :: ZDN_ROOF ! snow fraction
82 REAL, DIMENSION(SIZE(T%XBLD)) :: ZDN_ROAD ! on the surface
83 REAL, DIMENSION(SIZE(T%XBLD)) :: ZDF_ROOF ! free-snow fraction
84 REAL, DIMENSION(SIZE(T%XBLD)) :: ZDF_ROAD ! on the surface
85 LOGICAL, DIMENSION(SIZE(T%XBLD)) :: GMASK ! .false. (= no snow precip.)
86 !
87 !
88 REAL, DIMENSION(SIZE(T%XBLD)) :: ZDIR_SW ! direct and diffuse shortwave radiation
89 REAL, DIMENSION(SIZE(T%XBLD)) :: ZSCA_SW ! to mimic radiation behaviour of town
90 !
91 REAL, DIMENSION(SIZE(T%XBLD)) :: ZABS_SW_PANEL ! shortwave absorbed by solar panels
92 !
93 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREC_SW_ROAD ! shortwave received by roads
94 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREC_SW_WALL_A ! shortwave received by walls
95 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREC_SW_WALL_B ! shortwave received by walls
96 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREC_SW_GARDEN ! shortwave received by green areas
97 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREC_SW_SNOW_ROAD ! shortwave received by snow on roads
98 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREC_SW_ROOF ! shortwave received by roofs
99 !
100 REAL, DIMENSION(SIZE(T%XBLD)) :: ZSW_RAD_GARDEN ! total solar radiation reaching green areas
101 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREC_SW_WIN ! shortwave received by walls
102 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREF_SW_GRND !
103 REAL, DIMENSION(SIZE(T%XBLD)) :: ZREF_SW_FAC !
104 REAL, DIMENSION(SIZE(T%XBLD)) :: ZE_SHADING !
105 LOGICAL, DIMENSION(SIZE(T%XBLD)) :: GSHAD_DAY
106 !
107 TYPE(diag_misc_teb_t) :: YDMT
108 !
109 REAL(KIND=JPRB) :: ZHOOK_HANDLE
110 !-------------------------------------------------------------------------------
111 !
112 !* snow fractions
113 ! --------------
114 !
115 IF (lhook) CALL dr_hook('AVERAGED_ALBEDO_TEB',0,zhook_handle)
116 gmask(:) = .false.
117  CALL snow_frac_road(t%TSNOW_ROAD%WSNOW(:,1),gmask,zdn_road,zdf_road)
118  CALL snow_frac_roof(t%TSNOW_ROOF%WSNOW(:,1),gmask,zdn_roof,zdf_roof)
119 !
120 !
121 !* town direct and diffuse albedo
122 ! -------------------------------
123 !
124 zdir_sw=1.
125 zsca_sw=1.
126 gshad_day=.false.
127 IF (SIZE(b%LSHAD_DAY)>0) gshad_day=b%LSHAD_DAY
128 !
129  CALL urban_solar_abs(top, t, b, ydmt, zdir_sw, zsca_sw, pzenith, pazim, &
130  tpn%XFRAC_PANEL, tpn%XALB_PANEL, palb_garden, &
131  t%XSVF_GARDEN, palb_greenroof, zdn_roof, zdf_roof, &
132  zdn_road, zdf_road, zrec_sw_road, zrec_sw_snow_road,&
133  zrec_sw_wall_a, zrec_sw_wall_b, zrec_sw_garden, &
134  zrec_sw_roof, pdir_alb_town, psca_alb_town, &
135  zsw_rad_garden, zrec_sw_win, zref_sw_grnd, &
136  zref_sw_fac, ze_shading, gshad_day, gmask, &
137  oalb_only=.true. )
138 !
139 IF (lhook) CALL dr_hook('AVERAGED_ALBEDO_TEB',1,zhook_handle)
140 !
141 !-------------------------------------------------------------------------------
142 !
143 END SUBROUTINE averaged_albedo_teb
subroutine snow_frac_road(PWSNOW_ROAD, OSNOW, PDN_ROAD, PDF_ROAD)
subroutine urban_solar_abs(TOP, T, B, DMT, PDIR_SW, PSCA_SW, PZENITH, PAZIM, PFRAC_PANEL, PALB_PANEL, PALB_GD, PSVF_GD, PALB_GRF, PDN_RF, PDF_RF, PDN_RD, PDF_RD, PREC_SW_RD, PREC_SW_SN_RD, PREC_SW_WL_A, PREC_SW_WL_B, PREC_SW_GD, PREC_SW_RF, PDIR_ALB_TWN, PSCA_ALB_TWN, PSW_RAD_GD, PREC_SW_WIN, PREF_SW_GRND, PREF_SW_FAC, PE_SHADING, OSHAD_DAY, OSHADE, OALB_ONLY)
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine snow_frac_roof(PWSNOW_ROOF, OSNOW, PDN_ROOF, PDF_ROOF)
subroutine averaged_albedo_teb(TOP, T, TPN, B, PZENITH, PAZIM, PALB_GARDEN, PALB_GREENROOF, PDIR_A