SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
albedo_veg_update.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 albedo_veg_update (DTCO, DTI, IG, I, &
7  ptstep,ttime,pcover,ocover, &
8  hisba,oecoclimap,hphoto,oagrip,otr_ml,hsftype, &
9  pveg,palbnir,palbvis,palbuv, &
10  halbedo, palbnir_veg, palbvis_veg, palbuv_veg, &
11  palbnir_soil, palbvis_soil, palbuv_soil )
12 ! ###############################################################
13 !!**** *ALBEDO_VEG_UPDATE*
14 !!
15 !! PURPOSE
16 !! -------
17 !
18 ! performs the time evolution of albedo for vegetation and soil
19 ! at UTC midnight, with effective change each ten days
20 !
21 !!** METHOD
22 !! ------
23 !!
24 !! EXTERNAL
25 !! --------
26 !! none
27 !!
28 !! IMPLICIT ARGUMENTS
29 !! ------------------
30 !!
31 !! none
32 !!
33 !! REFERENCE
34 !! ---------
35 !!
36 !!
37 !! AUTHOR
38 !! ------
39 !!
40 !! B. Decharme * Meteo-France *
41 !!
42 !! MODIFICATIONS
43 !! -------------
44 !! Original 02/02/13
45 !!
46 !-------------------------------------------------------------------------------
47 !
48 !* 0. DECLARATIONS
49 ! ------------
50 !
51 !
52 !
53 !
55 USE modd_data_isba_n, ONLY : data_isba_t
56 USE modd_isba_grid_n, ONLY : isba_grid_t
57 USE modd_isba_n, ONLY : isba_t
58 !
60 !
61 USE modi_init_isba_mixpar
62 USE modi_convert_patch_isba
63 USE modi_albedo
64 USE modi_update_data_cover
65 !
66 !
67 USE yomhook ,ONLY : lhook, dr_hook
68 USE parkind1 ,ONLY : jprb
69 !
70 IMPLICIT NONE
71 !
72 !* 0.1 declarations of arguments
73 !
74 !
75 !
76 TYPE(data_cover_t), INTENT(INOUT) :: dtco
77 TYPE(data_isba_t), INTENT(INOUT) :: dti
78 TYPE(isba_grid_t), INTENT(INOUT) :: ig
79 TYPE(isba_t), INTENT(INOUT) :: i
80 !
81 REAL, INTENT(IN) :: ptstep ! time step
82 TYPE(date_time), INTENT(IN) :: ttime ! UTC time
83 REAL, DIMENSION(:,:), INTENT(IN) :: pcover ! cover types
84 LOGICAL, DIMENSION(:), INTENT(IN) :: ocover
85  CHARACTER(LEN=*), INTENT(IN) :: hisba ! type of soil (Force-Restore OR Diffusion)
86  CHARACTER(LEN=*), INTENT(IN) :: hphoto ! type of photosynthesis
87 LOGICAL, INTENT(IN) :: oagrip
88 LOGICAL, INTENT(IN) :: otr_ml
89  CHARACTER(LEN=*), INTENT(IN) :: hsftype ! nature / garden
90 LOGICAL, INTENT(IN) :: oecoclimap ! T if ecoclimap is used
91 !
92 REAL, DIMENSION(:,:), INTENT(INOUT) :: pveg ! vegetation fraction
93 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbnir ! snow-free near-infra-red albedo
94 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbvis ! snow-free visible albedo
95 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbuv ! snow-free UV albedo
96 !
97  CHARACTER(LEN=4), INTENT(IN) :: halbedo ! albedo type
98 ! ! 'CM13'
99 ! ! 'DRY '
100 ! ! 'EVOL'
101 ! ! 'WET '
102 ! ! 'USER'
103 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbvis_veg ! visible, near infra-red and UV
104 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbnir_veg ! albedo of the vegetation
105 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbuv_veg !
106 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbvis_soil! visible, near infra-red and UV
107 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbnir_soil! soil albedo
108 REAL, DIMENSION(:,:), INTENT(INOUT) :: palbuv_soil !
109 !
110 !* 0.2 declarations of local variables
111 !
112 INTEGER :: idecade, idecade2 ! decade of simulation
113 REAL(KIND=JPRB) :: zhook_handle
114 !-----------------------------------------------------------------
115 !
116 IF (lhook) CALL dr_hook('ALBEDO_VEG_UPDATE',0,zhook_handle)
117 !
118 idecade = 3 * ( ttime%TDATE%MONTH - 1 ) + min(ttime%TDATE%DAY-1,29) / 10 + 1
119 idecade2 = idecade
120 !
121 IF ( mod(min(ttime%TDATE%DAY,30),10)==1 .AND. ttime%TIME - ptstep < 0.) THEN
122  CALL update_data_cover(dtco, dti, ig, i, &
123  ttime%TDATE%YEAR)
124  CALL init_isba_mixpar(dtco, dti, ig, i, &
125  hisba,idecade,idecade2,pcover,ocover,hphoto,hsftype)
126  CALL convert_patch_isba(dtco, dti, i, &
127  hisba,idecade,idecade2,pcover,ocover,&
128  hphoto,oagrip,.false.,otr_ml,hsftype, &
129  palbnir_veg=palbnir_veg, &
130  palbvis_veg=palbvis_veg, &
131  palbuv_veg=palbuv_veg )
132  IF ( halbedo=='CM13') THEN
133  CALL convert_patch_isba(dtco, dti, i, &
134  hisba,idecade,idecade2,pcover,ocover,&
135  hphoto,oagrip,.false.,otr_ml,hsftype, &
136  palbnir_soil=palbnir_soil, &
137  palbvis_soil=palbvis_soil, &
138  palbuv_soil=palbuv_soil )
139  ENDIF
140  CALL albedo(halbedo, &
141  palbvis_veg,palbnir_veg,palbuv_veg,pveg, &
142  palbvis_soil,palbnir_soil,palbuv_soil, &
143  palbvis ,palbnir, palbuv )
144 
145 END IF
146 !
147 IF (lhook) CALL dr_hook('ALBEDO_VEG_UPDATE',1,zhook_handle)
148 !
149 !-----------------------------------------------------------------
150 !
151 END SUBROUTINE albedo_veg_update
subroutine init_isba_mixpar(DTCO, DTI, IG, I, HISBA, KDECADE, KDECADE2, PCOVER, OCOVER, HPHOTO, HSFTYPE)
subroutine albedo_veg_update(DTCO, DTI, IG, I, PTSTEP, TTIME, PCOVER, OCOVER, HISBA, OECOCLIMAP, HPHOTO, OAGRIP, OTR_ML, HSFTYPE, PVEG, PALBNIR, PALBVIS, PALBUV, HALBEDO, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL)
subroutine update_data_cover(DTCO, DTI, IG, I, KYEAR)
subroutine convert_patch_isba(DTCO, DTI, I, HISBA, KDECADE, KDECADE2, PCOVER, OCOVER, HPHOTO, OAGRIP, OPERM, OTR_ML, HSFTYPE, PVEG, PLAI, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PSOILGRID, PDG, KWG_LAYER, PDROOT, PDG2, PZ0, PZ0_O_Z0H, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PEMIS_ECO, PVEGTYPE, PROOTFRAC, PGMES, PBSLAI, PLAIMIN, PSEFOLD, PGC, PDMAX, PF2I, OSTRESS, PH_TREE, PRE25, PCE_NITRO, PCF_NITRO, PCNA_NITRO, PD_ICE, PWG1, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, TPSEED, TPREAP, PWATSUP, PIRRIG, PGNDLITTER, PRGLGV, PGAMMAGV, PRSMINGV, PROOTFRACGV, PWRMAX_CFGV, PLAIGV, PZ0LITTER, PH_VEG)