SURFEX v8.1
General documentation of Surfex
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(IO, PEK, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, &
7  PASNOW, PANOSNOW, PESNOW, PENOSNOW, &
8  PTSSNOW, PTSNOSNOW, &
9  PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL )
10 ! ##########################################################################
11 !
12 !!**** *ISBA_PROPERTIES*
13 !!
14 !! PURPOSE
15 !! -------
16 !
17 ! Calculates grid-averaged albedo and emissivity (according to snow scheme)
18 !
19 !! EXTERNAL
20 !! --------
21 !!
22 !! none
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! AUTHOR
28 !! ------
29 !!
30 !! S. Belair * Meteo-France *
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !!
35 !! P. Samuelsson 02/2012 MEB
36 !!
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
43 USE modd_isba_n, ONLY : isba_pe_t
44 !
46 USE modd_snow_par , ONLY : xemissn, xemcrin, xsnowdmin, &
47  xrhosmax_es, xrhosmin_es
48 USE modd_water_par , ONLY : xemiswat
49 !
50 USE modi_isba_snow_frac
51 USE modi_isba_albedo
52 !
53 !
54 USE yomhook ,ONLY : lhook, dr_hook
55 USE parkind1 ,ONLY : jprb
56 !
57 IMPLICIT NONE
58 !
59 !* 0.1 declarations of arguments
60 !
61 TYPE(isba_options_t), INTENT(INOUT) :: IO
62 TYPE(isba_pe_t), INTENT(INOUT) :: PEK
63 !
64 REAL, DIMENSION(:,:), INTENT(IN) :: PDIR_SW ! direct incoming solar radiation
65 REAL, DIMENSION(:,:), INTENT(IN) :: PSCA_SW ! diffus incoming solar radiation
66 REAL, DIMENSION(:) , INTENT(IN) :: PSW_BANDS ! mean wavelength of each shortwave band (m)
67 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
68 !
69 REAL, DIMENSION(:) , INTENT(OUT) :: PASNOW ! = snow albedo
70 REAL, DIMENSION(:) , INTENT(OUT) :: PANOSNOW ! = snow free albedo
71 REAL, DIMENSION(:) , INTENT(OUT) :: PESNOW ! = snow emissivity
72 REAL, DIMENSION(:) , INTENT(OUT) :: PENOSNOW ! = snow free emissivity
73 REAL, DIMENSION(:) , INTENT(OUT) :: PTSSNOW ! = snow radiative temperature
74 REAL, DIMENSION(:) , INTENT(OUT) :: PTSNOSNOW ! = snow free radiative temperature
75 !
76 REAL, DIMENSION(:) , INTENT(OUT) :: PALBNIR_TVEG ! nearIR veg tot albedo
77 REAL, DIMENSION(:) , INTENT(OUT) :: PALBVIS_TVEG ! visible veg tot albedo
78 REAL, DIMENSION(:) , INTENT(OUT) :: PALBNIR_TSOIL ! nearIR soil tot albedo
79 REAL, DIMENSION(:) , INTENT(OUT) :: PALBVIS_TSOIL ! visible soil tot albedo
80 !
81 !* 0.2 declarations of local variables
82 !
83 REAL, DIMENSION(SIZE(PDIR_SW,1)) :: ZGLOBAL_SW ! global incoming SW rad.
84 REAL, DIMENSION(SIZE(PEK%XALBNIR)) :: ZALBF
85 REAL, DIMENSION(SIZE(PEK%XALBNIR)) :: ZFFV
86 REAL, DIMENSION(SIZE(PEK%XALBNIR)) :: ZFFG
87 !
88 LOGICAL, PARAMETER :: GMEB=.false.
89 REAL, DIMENSION(SIZE(PDIR_SW,1)) :: ZP_MEB_SCA_SW, ZALBNIR_TSNOW, ZALBVIS_TSNOW
90 REAL(KIND=JPRB) :: ZHOOK_HANDLE
91 !-------------------------------------------------------------------------------
92 !
93 IF (lhook) CALL dr_hook('ISBA_PROPERTIES',0,zhook_handle)
94 !
95  CALL isba_snow_frac(pek%TSNOW%SCHEME, pek%TSNOW%WSNOW, pek%TSNOW%RHO, pek%TSNOW%ALB, &
96  pek%XVEG, pek%XLAI, pek%XZ0, &
97  pek%XPSN, pek%XPSNV_A, pek%XPSNG, pek%XPSNV )
98 !
99 !-------------------------------------------------------------------------------
100 !* 2. Compute snow-free albedo
101 ! ------------------------
102 !
103 !* Snow-free surface albedo for each wavelength
104 !
105 zalbf = 0.
106 zffv = 0.
107 zffg = 0.
108 !
109  CALL isba_albedo(pek, io%LTR_ML, gmeb, pdir_sw, psca_sw, psw_bands, ksw, &
110  zalbf, zffv, zffg, zglobal_sw, zp_meb_sca_sw, &
111  palbnir_tveg, palbvis_tveg, palbnir_tsoil, palbvis_tsoil)
112 
113 panosnow(:) = pek%XSNOWFREE_ALB(:)
114 !-------------------------------------------------------------------------------
115 !
116 !* 3. Compute aggeragted albedo and emissivity
117 ! ----------------------------------------
118 !
119 IF(pek%TSNOW%SCHEME == '3-L' .OR. pek%TSNOW%SCHEME == 'CRO' .OR. io%CISBA == 'DIF')THEN
120 !
121 ! NON-SNOW covered Grid averaged albedo and emissivity for explicit snow scheme:
122 !
123  pasnow(:) = pek%TSNOW%ALB(:)
124  pesnow(:) = pek%TSNOW%EMIS(:)
125  penosnow(:) = pek%XEMIS(:)
126 
127  ptssnow(:) = pek%TSNOW%TS(:)
128  ptsnosnow(:) = pek%XTG(:,1)
129 
130 ELSE
131 !
132 ! Grid averaged albedo and emissivity for composite snow scheme:
133 !
134  IF(pek%TSNOW%SCHEME =='EBA') THEN
135 !
136  pasnow(:) = pek%TSNOW%ALB(:)
137  pesnow(:) = xemcrin
138  penosnow(:) = pek%XEMIS(:)
139 
140  ptssnow(:) = pek%XTG(:,1)
141  ptsnosnow(:) = pek%XTG(:,1)
142 
143  ELSE
144 
145  pasnow(:) = pek%TSNOW%ALB(:)
146  pesnow(:) = xemissn
147  penosnow(:) = pek%XEMIS(:)
148 
149  ptssnow(:) = pek%XTG(:,1)
150  ptsnosnow(:) = pek%XTG(:,1)
151 
152  ENDIF
153 !
154 ENDIF
155 IF (lhook) CALL dr_hook('ISBA_PROPERTIES',1,zhook_handle)
156 !
157 !-------------------------------------------------------------------------------
158 !
159 END SUBROUTINE isba_properties
subroutine isba_albedo(PEK, OTR_ML, OMEB, PDIR_SW, PSCA_SW, PSW_BA
Definition: isba_albedo.F90:7
subroutine isba_snow_frac(HSNOW, PWSNOW, PRSNOW, PASNOW, PVEG, PLAI, PZ0, PPSN, PPSNV_A, PPSNG, P
subroutine isba_properties(IO, PEK, PDIR_SW, PSCA_SW, PSW_BANDS, K
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
real, save xemiswat