SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
isba_properties.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 isba_properties(HISBA, OTR_ML, TPSNOW, KPATCH, &
7  pdir_sw, psca_sw, psw_bands, ksw, &
8  palbnir, palbvis, palbuv, &
9  palbnir_veg, palbvis_veg, palbuv_veg, &
10  palbnir_soil, palbvis_soil, palbuv_soil, &
11  pveg, plai, pz0, pemis, ptg, &
12  pasnow, panosnow, pesnow, penosnow, &
13  ptssnow, ptsnosnow, &
14  psnowfree_alb_veg, psnowfree_alb_soil, &
15  palbnir_tveg, palbvis_tveg, &
16  palbnir_tsoil, palbvis_tsoil, &
17  ppsn, ppsnv_a, ppsng, ppsnv )
18 ! ##########################################################################
19 !
20 !!**** *ISBA_PROPERTIES*
21 !!
22 !! PURPOSE
23 !! -------
24 !
25 ! Calculates grid-averaged albedo and emissivity (according to snow scheme)
26 !
27 !! EXTERNAL
28 !! --------
29 !!
30 !! none
31 !!
32 !! IMPLICIT ARGUMENTS
33 !! ------------------
34 !!
35 !! AUTHOR
36 !! ------
37 !!
38 !! S. Belair * Meteo-France *
39 !!
40 !! MODIFICATIONS
41 !! -------------
42 !!
43 !! P. Samuelsson 02/2012 MEB
44 !!
45 !-------------------------------------------------------------------------------
46 !
47 !* 0. DECLARATIONS
48 ! ------------
49 !
51 USE modd_snow_par , ONLY : xemissn, xemcrin, xsnowdmin, &
52  xrhosmax_es, xrhosmin_es
53 USE modd_water_par , ONLY : xemiswat
54 !
55 USE modi_isba_snow_frac
56 USE modi_isba_albedo
57 !
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 IMPLICIT NONE
63 !
64 !* 0.1 declarations of arguments
65 !
66  CHARACTER(LEN=*) , INTENT(IN) :: hisba ! ISBA scheme
67 LOGICAL , INTENT(IN) :: otr_ml ! new radiative transfert
68 TYPE(surf_snow), INTENT(IN) :: tpsnow ! ISBA snow scheme
69 INTEGER, INTENT(IN) :: kpatch ! patch being treated
70 !
71 REAL, DIMENSION(:,:), INTENT(IN) :: pdir_sw ! direct incoming solar radiation
72 REAL, DIMENSION(:,:), INTENT(IN) :: psca_sw ! diffus incoming solar radiation
73 REAL, DIMENSION(:) , INTENT(IN) :: psw_bands ! mean wavelength of each shortwave band (m)
74 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
75 REAL, DIMENSION(:) , INTENT(IN) :: palbnir ! nearIR total albedo
76 REAL, DIMENSION(:) , INTENT(IN) :: palbvis ! visible total albedo
77 REAL, DIMENSION(:) , INTENT(IN) :: palbuv ! UV total albedo
78 REAL, DIMENSION(:) , INTENT(IN) :: palbnir_veg ! nearIR veg albedo
79 REAL, DIMENSION(:) , INTENT(IN) :: palbvis_veg ! visible veg albedo
80 REAL, DIMENSION(:) , INTENT(IN) :: palbuv_veg ! UV veg albedo
81 REAL, DIMENSION(:) , INTENT(IN) :: palbnir_soil ! nearIR soil albedo
82 REAL, DIMENSION(:) , INTENT(IN) :: palbvis_soil ! visible soil albedo
83 REAL, DIMENSION(:) , INTENT(IN) :: palbuv_soil ! UV soil albedo
84 !
85 REAL, DIMENSION(:) , INTENT(IN) :: pveg ! PVEG = fraction of vegetation
86 REAL, DIMENSION(:) , INTENT(IN) :: plai ! PLAI = leaf area index
87 REAL, DIMENSION(:) , INTENT(IN) :: pz0 ! PZ0 = roughness length for momentum
88 REAL, DIMENSION(:) , INTENT(IN) :: pemis ! PEMIS = emissivity
89 REAL, DIMENSION(:) , INTENT(IN) :: ptg !
90 !
91 REAL, DIMENSION(:) , INTENT(OUT) :: pasnow ! = snow albedo
92 REAL, DIMENSION(:) , INTENT(OUT) :: panosnow ! = snow free albedo
93 REAL, DIMENSION(:) , INTENT(OUT) :: pesnow ! = snow emissivity
94 REAL, DIMENSION(:) , INTENT(OUT) :: penosnow ! = snow free emissivity
95 REAL, DIMENSION(:) , INTENT(OUT) :: ptssnow ! = snow radiative temperature
96 REAL, DIMENSION(:) , INTENT(OUT) :: ptsnosnow ! = snow free radiative temperature
97 REAL, DIMENSION(:) , INTENT(OUT) :: psnowfree_alb_veg !snow free albedo of vegetation for EBA
98 REAL, DIMENSION(:) , INTENT(OUT) :: psnowfree_alb_soil !snow free albedo of soil for EBA option
99 REAL, DIMENSION(:) , INTENT(OUT) :: palbnir_tveg ! nearIR veg tot albedo
100 REAL, DIMENSION(:) , INTENT(OUT) :: palbvis_tveg ! visible veg tot albedo
101 REAL, DIMENSION(:) , INTENT(OUT) :: palbnir_tsoil ! nearIR soil tot albedo
102 REAL, DIMENSION(:) , INTENT(OUT) :: palbvis_tsoil ! visible soil tot albedo
103 !
104 REAL, DIMENSION(:) , INTENT(OUT):: ppsn ! PPSN = grid fraction covered by snow
105 REAL, DIMENSION(:) , INTENT(OUT):: ppsng ! PPSNG = fraction of the ground covered by snow
106 REAL, DIMENSION(:) , INTENT(OUT):: ppsnv ! PPSNV = fraction of the veg covered by snow
107 REAL, DIMENSION(:) , INTENT(OUT):: ppsnv_a !fraction of the the vegetation covered by snow for EBA scheme
108 !
109 !* 0.2 declarations of local variables
110 !
111 REAL, DIMENSION(SIZE(PDIR_SW,1)) :: zglobal_sw ! global incoming SW rad.
112 REAL, DIMENSION(SIZE(PALBNIR)) :: zalbf
113 REAL, DIMENSION(SIZE(PALBNIR)) :: zffv
114 REAL, DIMENSION(SIZE(PALBNIR)) :: zffg
115 !
116 LOGICAL, PARAMETER :: gmeb=.false.
117 REAL, DIMENSION(SIZE(PDIR_SW,1)) :: zp_meb_sca_sw, zalbnir_tsnow, zalbvis_tsnow
118 REAL(KIND=JPRB) :: zhook_handle
119 !-------------------------------------------------------------------------------
120 !
121 IF (lhook) CALL dr_hook('ISBA_PROPERTIES',0,zhook_handle)
122  CALL isba_snow_frac(tpsnow%SCHEME, &
123  tpsnow%WSNOW(:,:,kpatch), tpsnow%RHO(:,:,kpatch), &
124  tpsnow%ALB (:,kpatch), pveg, plai, pz0, &
125  ppsn, ppsnv_a, ppsng, ppsnv )
126 !
127 !-------------------------------------------------------------------------------
128 !* 2. Compute snow-free albedo
129 ! ------------------------
130 !
131 !* Snow-free surface albedo for each wavelength
132 !
133 zalbf = 0.
134 zffv = 0.
135 zffg = 0.
136 !
137  CALL isba_albedo(tpsnow%SCHEME, otr_ml, gmeb, &
138  pdir_sw, psca_sw, psw_bands, ksw, &
139  palbnir, palbvis, palbuv, &
140  palbnir_veg, palbvis_veg, palbuv_veg, &
141  palbnir_soil, palbvis_soil, palbuv_soil, &
142  zalbf, zffv, zffg, &
143  zglobal_sw, panosnow, &
144  psnowfree_alb_veg, psnowfree_alb_soil, &
145  zp_meb_sca_sw, &
146  palbnir_tveg, palbvis_tveg, palbnir_tsoil, palbvis_tsoil)
147 
148 !-------------------------------------------------------------------------------
149 !
150 !* 3. Compute aggeragted albedo and emissivity
151 ! ----------------------------------------
152 !
153 IF(tpsnow%SCHEME == '3-L' .OR. tpsnow%SCHEME == 'CRO' .OR. hisba == 'DIF')THEN
154 !
155 ! NON-SNOW covered Grid averaged albedo and emissivity for explicit snow scheme:
156 !
157  pasnow(:) = tpsnow%ALB(:,kpatch)
158  pesnow(:) = tpsnow%EMIS(:,kpatch)
159  penosnow(:) = pemis(:)
160 
161  ptssnow(:) = tpsnow%TS(:,kpatch)
162  ptsnosnow(:) = ptg(:)
163 
164 ELSE
165 !
166 ! Grid averaged albedo and emissivity for composite snow scheme:
167 !
168  IF(tpsnow%SCHEME =='EBA') THEN
169 !
170  pasnow(:) = tpsnow%ALB(:,kpatch)
171  pesnow(:) = xemcrin
172  penosnow(:) = pemis(:)
173 
174  ptssnow(:) = ptg(:)
175  ptsnosnow(:) = ptg(:)
176 
177 
178  ELSE
179 
180  pasnow(:) = tpsnow%ALB(:,kpatch)
181  pesnow(:) = xemissn
182  penosnow(:) = pemis(:)
183 
184  ptssnow(:) = ptg(:)
185  ptsnosnow(:) = ptg(:)
186 
187  ENDIF
188 !
189 ENDIF
190 IF (lhook) CALL dr_hook('ISBA_PROPERTIES',1,zhook_handle)
191 !
192 !-------------------------------------------------------------------------------
193 !
194 END SUBROUTINE isba_properties
subroutine isba_properties(HISBA, OTR_ML, TPSNOW, KPATCH, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PALBNIR, PALBVIS, PALBUV, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PVEG, PLAI, PZ0, PEMIS, PTG, PASNOW, PANOSNOW, PESNOW, PENOSNOW, PTSSNOW, PTSNOSNOW, PSNOWFREE_ALB_VEG, PSNOWFREE_ALB_SOIL, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, PPSN, PPSNV_A, PPSNG, PPSNV)
subroutine isba_albedo(HSNOW, OTR_ML, OMEB, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PALBNIR, PALBVIS, PALBUV, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PFALB, PFFV, PFFG, PGLOBAL_SW, PSNOWFREE_ALB, PSNOWFREE_ALB_VEG, PSNOWFREE_ALB_SOIL, PMEB_SCA_SW, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL)
Definition: isba_albedo.F90:6
subroutine isba_snow_frac(HSNOW, PWSNOW, PRSNOW, PASNOW, PVEG, PLAI, PZ0, PPSN, PPSNV_A, PPSNG, PPSNV)