SURFEX v7.3
General documentation of Surfex
|
00001 ! ############################ 00002 MODULE MODD_DIAG_MISC_ISBA_n 00003 ! ############################ 00004 ! 00005 !!**** *MODD_DIAG_MISC_ISBA - declaration of packed surface parameters for ISBA scheme 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 !! 00011 !!** IMPLICIT ARGUMENTS 00012 !! ------------------ 00013 !! None 00014 !! 00015 !! REFERENCE 00016 !! --------- 00017 !! 00018 !! AUTHOR 00019 !! ------ 00020 !! P. Le Moigne *Meteo France* 00021 !! 00022 !! MODIFICATIONS 00023 !! ------------- 00024 !! Original 07/10/04 00025 !! A.L. Gibelin 04/2009 : Add respiration diagnostics 00026 !! A.L. Gibelin 05/2009 : Add carbon spinup 00027 !! A.L. Gibelin 07/2009 : Suppress RDK and transform GPP as a diagnostic 00028 !! B. Decharme 05/2012 : Carbon fluxes in diag_evap 00029 !! B. Decharme 07/2012 : New diag for DIF under LSURF_MISC_DIF key 00030 !! F2 stress 00031 !! Root zone swi, wg and wgi 00032 !! swi, wg and wgi comparable to ISBA-FR-DG2 and DG3 layers 00033 !! B. Decharme 10/2012 : New diag for DIF 00034 !! active layer thickness over permafrost area 00035 !! frozen layer thickness over non-permafrost area 00036 !! 00037 !------------------------------------------------------------------------------- 00038 ! 00039 !* 0. DECLARATIONS 00040 ! ------------ 00041 ! 00042 ! 00043 ! 00044 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00045 USE PARKIND1 ,ONLY : JPRB 00046 ! 00047 IMPLICIT NONE 00048 00049 TYPE DIAG_MISC_ISBA_t 00050 !------------------------------------------------------------------------------ 00051 ! 00052 LOGICAL :: LSURF_MISC_BUDGET ! flag for miscellaneous terms of isba scheme 00053 LOGICAL :: LSURF_DIAG_ALBEDO ! flag to write out diagnostic albedo 00054 LOGICAL :: LSURF_MISC_DIF ! flag for miscellaneous terms of isba-dif scheme 00055 ! 00056 !* variables for each patch 00057 ! 00058 REAL, POINTER, DIMENSION(:,:) :: XHV ! Halstead coefficient 00059 ! 00060 REAL, POINTER, DIMENSION(:,:,:) :: XSWI ! Soil wetness index 00061 REAL, POINTER, DIMENSION(:,:,:) :: XTSWI ! Total soil wetness index 00062 ! 00063 REAL, POINTER, DIMENSION(:,:) :: XALT ! Active layer thickness in permafrost area 00064 REAL, POINTER, DIMENSION(:,:) :: XFLT ! Frozen layer thickness in non-permmafrost area 00065 ! 00066 REAL, POINTER, DIMENSION(:,:,:) :: XSNOWLIQ ! snow liquid water profile (ISBA-ES:3-L) 00067 REAL, POINTER, DIMENSION(:,:,:) :: XSNOWTEMP ! snow temperature profile (ISBA-ES:3-L) 00068 ! 00069 REAL, POINTER, DIMENSION(:,:) :: XTWSNOW ! Total snow reservoir 00070 REAL, POINTER, DIMENSION(:,:) :: XTDSNOW ! Total snow height 00071 REAL, POINTER, DIMENSION(:,:) :: XTTSNOW ! Total snow temperature 00072 ! 00073 REAL, POINTER, DIMENSION(:,:) :: XDPSNG ! Snow fraction over ground, diag at time t 00074 REAL, POINTER, DIMENSION(:,:) :: XDPSNV ! Snow fraction over vegetation, diag at time t 00075 REAL, POINTER, DIMENSION(:,:) :: XDPSN ! Total Snow fraction, diag at time t 00076 REAL, POINTER, DIMENSION(:,:) :: XALBT ! Total Albedo 00077 ! 00078 REAL, POINTER, DIMENSION(:,:) :: XDFSAT ! Topmodel/dt92 saturated fraction 00079 ! 00080 REAL, POINTER, DIMENSION(:,:) :: XDFFG ! Flood fraction over ground, diag at time t 00081 REAL, POINTER, DIMENSION(:,:) :: XDFFV ! Flood fraction over vegetation, diag at time t 00082 REAL, POINTER, DIMENSION(:,:) :: XDFF ! Total Flood fraction, diag at time t 00083 ! 00084 REAL, POINTER, DIMENSION(:,:) :: XSEUIL ! Irrigation threshold 00085 ! 00086 REAL, POINTER, DIMENSION(:,:) :: XFAPAR ! Fapar of vegetation 00087 REAL, POINTER, DIMENSION(:,:) :: XFAPIR ! Fapir of vegetation 00088 REAL, POINTER, DIMENSION(:,:) :: XDFAPARC ! Fapar of vegetation (cumul) 00089 REAL, POINTER, DIMENSION(:,:) :: XDFAPIRC ! Fapir of vegetation (cumul) 00090 REAL, POINTER, DIMENSION(:,:) :: XFAPAR_BS ! Fapar of bare soil 00091 REAL, POINTER, DIMENSION(:,:) :: XFAPIR_BS ! Fapir of bare soil 00092 REAL, POINTER, DIMENSION(:,:) :: XDLAI_EFFC ! Effective LAI (cumul) 00093 ! 00094 !* average variables 00095 ! 00096 REAL, POINTER, DIMENSION(:) :: XAVG_HV ! Halstead coefficient 00097 REAL, POINTER, DIMENSION(:) :: XAVG_LAI ! leaf average index 00098 ! 00099 REAL, POINTER, DIMENSION(:,:) :: XAVG_SWI ! Liquid Soil wetness index 00100 REAL, POINTER, DIMENSION(:,:) :: XAVG_TSWI ! Total soil wetness index 00101 REAL, POINTER, DIMENSION(:) :: XSOIL_TSWI ! Soil wetness index 00102 REAL, POINTER, DIMENSION(:) :: XSOIL_TWG ! Soil water content (liquid+ice) 00103 REAL, POINTER, DIMENSION(:) :: XSOIL_TWGI ! Soil ice content 00104 ! 00105 REAL, POINTER, DIMENSION(:) :: XAVG_ALT ! Active layer thickness in permafrost area 00106 REAL, POINTER, DIMENSION(:) :: XAVG_FLT ! Frozen layer thickness in non-permmafrost area 00107 ! 00108 REAL, POINTER, DIMENSION(:) :: XAVG_TWSNOW ! Snow total reservoir 00109 REAL, POINTER, DIMENSION(:) :: XAVG_TDSNOW ! Snow total height 00110 REAL, POINTER, DIMENSION(:) :: XAVG_TTSNOW ! Snow total temperature 00111 ! 00112 REAL, POINTER, DIMENSION(:) :: XAVG_PSNG ! Snow fraction over ground 00113 REAL, POINTER, DIMENSION(:) :: XAVG_PSNV ! Snow fraction over vegetation 00114 REAL, POINTER, DIMENSION(:) :: XAVG_PSN ! Total Snow fraction 00115 REAL, POINTER, DIMENSION(:) :: XAVG_ALBT ! Total Albedo 00116 ! 00117 REAL, POINTER, DIMENSION(:) :: XAVG_FSAT ! Topmodel/dt92 saturated fraction 00118 ! 00119 REAL, POINTER, DIMENSION(:) :: XAVG_FFG ! Flood fraction over ground 00120 REAL, POINTER, DIMENSION(:) :: XAVG_FFV ! Flood fraction over vegetation 00121 REAL, POINTER, DIMENSION(:) :: XAVG_FF ! Total Flood fraction 00122 ! 00123 REAL, POINTER, DIMENSION(:) :: XSURF_TSWI ! Surface soil wetness index (DIF option) 00124 REAL, POINTER, DIMENSION(:) :: XSURF_TWG ! Surface soil water content (liquid+ice) (DIF option) 00125 REAL, POINTER, DIMENSION(:) :: XSURF_TWGI ! Surface soil ice content (DIF option) 00126 REAL, POINTER, DIMENSION(:) :: XROOT_TSWI ! Root soil wetness index (DIF option) 00127 REAL, POINTER, DIMENSION(:) :: XROOT_TWG ! Root soil water content (liquid+ice) (DIF option) 00128 REAL, POINTER, DIMENSION(:) :: XROOT_TWGI ! Root soil ice content (DIF option) 00129 REAL, POINTER, DIMENSION(:) :: XFRD2_TSWI ! ISBA-FR-DG2 comparable soil wetness index (DIF option) 00130 REAL, POINTER, DIMENSION(:) :: XFRD2_TWG ! ISBA-FR-DG2 comparable soil water content (liquid+ice) (DIF option) 00131 REAL, POINTER, DIMENSION(:) :: XFRD2_TWGI ! ISBA-FR-DG2 comparable soil ice content (DIF option) 00132 REAL, POINTER, DIMENSION(:) :: XFRD3_TSWI ! ISBA-FR-Deep comparable soil wetness index (DIF option) 00133 REAL, POINTER, DIMENSION(:) :: XFRD3_TWG ! ISBA-FR-Deep comparable soil water content (liquid+ice) (DIF option) 00134 REAL, POINTER, DIMENSION(:) :: XFRD3_TWGI ! ISBA-FR-Deep comparable soil ice content (DIF option) 00135 ! 00136 !------------------------------------------------------------------------------ 00137 ! 00138 00139 END TYPE DIAG_MISC_ISBA_t 00140 00141 TYPE(DIAG_MISC_ISBA_t), ALLOCATABLE, TARGET, SAVE :: DIAG_MISC_ISBA_MODEL(:) 00142 00143 LOGICAL, POINTER :: LSURF_MISC_BUDGET=>NULL() 00144 !$OMP THREADPRIVATE(LSURF_MISC_BUDGET) 00145 LOGICAL, POINTER :: LSURF_DIAG_ALBEDO=>NULL() 00146 !$OMP THREADPRIVATE(LSURF_DIAG_ALBEDO) 00147 LOGICAL, POINTER :: LSURF_MISC_DIF=>NULL() 00148 !$OMP THREADPRIVATE(LSURF_MISC_DIF) 00149 00150 ! 00151 REAL, POINTER, DIMENSION(:,:) :: XHV=>NULL() 00152 !$OMP THREADPRIVATE(XHV) 00153 REAL, POINTER, DIMENSION(:,:) :: XDPSNG=>NULL() 00154 !$OMP THREADPRIVATE(XDPSNG) 00155 REAL, POINTER, DIMENSION(:,:) :: XDPSNV=>NULL() 00156 !$OMP THREADPRIVATE(XDPSNV) 00157 REAL, POINTER, DIMENSION(:,:) :: XDPSN=>NULL() 00158 !$OMP THREADPRIVATE(XDPSN) 00159 REAL, POINTER, DIMENSION(:,:) :: XSEUIL=>NULL() 00160 !$OMP THREADPRIVATE(XSEUIL) 00161 REAL, POINTER, DIMENSION(:,:) :: XFAPAR=>NULL() 00162 !$OMP THREADPRIVATE(XFAPAR) 00163 REAL, POINTER, DIMENSION(:,:) :: XFAPIR=>NULL() 00164 !$OMP THREADPRIVATE(XFAPIR) 00165 REAL, POINTER, DIMENSION(:,:) :: XDFAPARC=>NULL() 00166 !$OMP THREADPRIVATE(XDFAPARC) 00167 REAL, POINTER, DIMENSION(:,:) :: XDFAPIRC=>NULL() 00168 !$OMP THREADPRIVATE(XDFAPIRC) 00169 REAL, POINTER, DIMENSION(:,:) :: XFAPAR_BS=>NULL() 00170 !$OMP THREADPRIVATE(XFAPAR_BS) 00171 REAL, POINTER, DIMENSION(:,:) :: XFAPIR_BS=>NULL() 00172 !$OMP THREADPRIVATE(XFAPIR_BS) 00173 REAL, POINTER, DIMENSION(:,:) :: XDLAI_EFFC=>NULL() 00174 !$OMP THREADPRIVATE(XDLAI_EFFC) 00175 ! 00176 REAL, POINTER, DIMENSION(:,:) :: XALBT=>NULL() 00177 !$OMP THREADPRIVATE(XALBT) 00178 REAL, POINTER, DIMENSION(:,:) :: XDFSAT=>NULL() 00179 !$OMP THREADPRIVATE(XDFSAT) 00180 REAL, POINTER, DIMENSION(:,:) :: XDFFG=>NULL() 00181 !$OMP THREADPRIVATE(XDFFG) 00182 REAL, POINTER, DIMENSION(:,:) :: XDFFV=>NULL() 00183 !$OMP THREADPRIVATE(XDFFV) 00184 REAL, POINTER, DIMENSION(:,:) :: XDFF=>NULL() 00185 !$OMP THREADPRIVATE(XDFF) 00186 ! 00187 REAL, POINTER, DIMENSION(:,:,:) :: XSWI=>NULL() 00188 !$OMP THREADPRIVATE(XSWI) 00189 REAL, POINTER, DIMENSION(:,:,:) :: XTSWI=>NULL() 00190 !$OMP THREADPRIVATE(XTSWI) 00191 REAL, POINTER, DIMENSION(:,:) :: XALT=>NULL() 00192 !$OMP THREADPRIVATE(XALT) 00193 REAL, POINTER, DIMENSION(:,:) :: XFLT=>NULL() 00194 !$OMP THREADPRIVATE(XFLT) 00195 ! 00196 REAL, POINTER, DIMENSION(:,:) :: XTWSNOW=>NULL() 00197 !$OMP THREADPRIVATE(XTWSNOW) 00198 REAL, POINTER, DIMENSION(:,:) :: XTDSNOW=>NULL() 00199 !$OMP THREADPRIVATE(XTDSNOW) 00200 REAL, POINTER, DIMENSION(:,:) :: XTTSNOW=>NULL() 00201 !$OMP THREADPRIVATE(XTTSNOW) 00202 ! 00203 REAL, POINTER, DIMENSION(:,:,:) :: XSNOWLIQ=>NULL() 00204 !$OMP THREADPRIVATE(XSNOWLIQ) 00205 REAL, POINTER, DIMENSION(:,:,:) :: XSNOWTEMP=>NULL() 00206 !$OMP THREADPRIVATE(XSNOWTEMP) 00207 ! 00208 REAL, POINTER, DIMENSION(:) :: XAVG_HV=>NULL() 00209 !$OMP THREADPRIVATE(XAVG_HV) 00210 REAL, POINTER, DIMENSION(:) :: XAVG_LAI=>NULL() 00211 !$OMP THREADPRIVATE(XAVG_LAI) 00212 REAL, POINTER, DIMENSION(:) :: XAVG_PSNG=>NULL() 00213 !$OMP THREADPRIVATE(XAVG_PSNG) 00214 REAL, POINTER, DIMENSION(:) :: XAVG_PSNV=>NULL() 00215 !$OMP THREADPRIVATE(XAVG_PSNV) 00216 REAL, POINTER, DIMENSION(:) :: XAVG_PSN=>NULL() 00217 !$OMP THREADPRIVATE(XAVG_PSN) 00218 REAL, POINTER, DIMENSION(:) :: XAVG_ALBT=>NULL() 00219 !$OMP THREADPRIVATE(XAVG_ALBT) 00220 REAL, POINTER, DIMENSION(:) :: XAVG_FSAT=>NULL() 00221 !$OMP THREADPRIVATE(XAVG_FSAT) 00222 REAL, POINTER, DIMENSION(:) :: XAVG_FFG=>NULL() 00223 !$OMP THREADPRIVATE(XAVG_FFG) 00224 REAL, POINTER, DIMENSION(:) :: XAVG_FFV=>NULL() 00225 !$OMP THREADPRIVATE(XAVG_FFV) 00226 REAL, POINTER, DIMENSION(:) :: XAVG_FF=>NULL() 00227 !$OMP THREADPRIVATE(XAVG_FF) 00228 ! 00229 REAL, POINTER, DIMENSION(:,:) :: XAVG_SWI=>NULL() 00230 !$OMP THREADPRIVATE(XAVG_SWI) 00231 REAL, POINTER, DIMENSION(:,:) :: XAVG_TSWI=>NULL() 00232 !$OMP THREADPRIVATE(XAVG_TSWI) 00233 REAL, POINTER, DIMENSION(:) :: XSOIL_TSWI=>NULL() 00234 !$OMP THREADPRIVATE(XSOIL_TSWI) 00235 REAL, POINTER, DIMENSION(:) :: XSOIL_TWG=>NULL() 00236 !$OMP THREADPRIVATE(XSOIL_TWG) 00237 REAL, POINTER, DIMENSION(:) :: XSOIL_TWGI=>NULL() 00238 !$OMP THREADPRIVATE(XSOIL_TWGI) 00239 REAL, POINTER, DIMENSION(:) :: XAVG_ALT=>NULL() 00240 !$OMP THREADPRIVATE(XAVG_ALT) 00241 REAL, POINTER, DIMENSION(:) :: XAVG_FLT=>NULL() 00242 !$OMP THREADPRIVATE(XAVG_FLT) 00243 ! 00244 REAL, POINTER, DIMENSION(:) :: XAVG_TWSNOW=>NULL() 00245 !$OMP THREADPRIVATE(XAVG_TWSNOW) 00246 REAL, POINTER, DIMENSION(:) :: XAVG_TDSNOW=>NULL() 00247 !$OMP THREADPRIVATE(XAVG_TDSNOW) 00248 REAL, POINTER, DIMENSION(:) :: XAVG_TTSNOW=>NULL() 00249 !$OMP THREADPRIVATE(XAVG_TTSNOW) 00250 ! 00251 REAL, POINTER, DIMENSION(:) :: XSURF_TSWI=>NULL() 00252 !$OMP THREADPRIVATE(XSURF_TSWI) 00253 REAL, POINTER, DIMENSION(:) :: XSURF_TWG =>NULL() 00254 !$OMP THREADPRIVATE(XSURF_TWG) 00255 REAL, POINTER, DIMENSION(:) :: XSURF_TWGI=>NULL() 00256 !$OMP THREADPRIVATE(XSURF_TWGI) 00257 REAL, POINTER, DIMENSION(:) :: XROOT_TSWI=>NULL() 00258 !$OMP THREADPRIVATE(XROOT_TSWI) 00259 REAL, POINTER, DIMENSION(:) :: XROOT_TWG =>NULL() 00260 !$OMP THREADPRIVATE(XROOT_TWG) 00261 REAL, POINTER, DIMENSION(:) :: XROOT_TWGI=>NULL() 00262 !$OMP THREADPRIVATE(XROOT_TWGI) 00263 REAL, POINTER, DIMENSION(:) :: XFRD2_TSWI=>NULL() 00264 !$OMP THREADPRIVATE(XFRD2_TSWI) 00265 REAL, POINTER, DIMENSION(:) :: XFRD2_TWG =>NULL() 00266 !$OMP THREADPRIVATE(XFRD2_TWG) 00267 REAL, POINTER, DIMENSION(:) :: XFRD2_TWGI=>NULL() 00268 !$OMP THREADPRIVATE(XFRD2_TWGI) 00269 REAL, POINTER, DIMENSION(:) :: XFRD3_TSWI=>NULL() 00270 !$OMP THREADPRIVATE(XFRD3_TSWI) 00271 REAL, POINTER, DIMENSION(:) :: XFRD3_TWG =>NULL() 00272 !$OMP THREADPRIVATE(XFRD3_TWG) 00273 REAL, POINTER, DIMENSION(:) :: XFRD3_TWGI=>NULL() 00274 !$OMP THREADPRIVATE(XFRD3_TWGI) 00275 ! 00276 CONTAINS 00277 00278 SUBROUTINE DIAG_MISC_ISBA_GOTO_MODEL(KFROM, KTO, LKFROM) 00279 LOGICAL, INTENT(IN) :: LKFROM 00280 INTEGER, INTENT(IN) :: KFROM, KTO 00281 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00282 ! 00283 ! Save current state for allocated arrays 00284 IF (LKFROM) THEN 00285 DIAG_MISC_ISBA_MODEL(KFROM)%XHV=>XHV 00286 DIAG_MISC_ISBA_MODEL(KFROM)%XSWI=>XSWI 00287 DIAG_MISC_ISBA_MODEL(KFROM)%XTSWI=>XTSWI 00288 DIAG_MISC_ISBA_MODEL(KFROM)%XALT=>XALT 00289 DIAG_MISC_ISBA_MODEL(KFROM)%XFLT=>XFLT 00290 DIAG_MISC_ISBA_MODEL(KFROM)%XTWSNOW=>XTWSNOW 00291 DIAG_MISC_ISBA_MODEL(KFROM)%XTDSNOW=>XTDSNOW 00292 DIAG_MISC_ISBA_MODEL(KFROM)%XTTSNOW=>XTTSNOW 00293 DIAG_MISC_ISBA_MODEL(KFROM)%XSNOWLIQ=>XSNOWLIQ 00294 DIAG_MISC_ISBA_MODEL(KFROM)%XSNOWTEMP=>XSNOWTEMP 00295 DIAG_MISC_ISBA_MODEL(KFROM)%XDPSNG=>XDPSNG 00296 DIAG_MISC_ISBA_MODEL(KFROM)%XDPSNV=>XDPSNV 00297 DIAG_MISC_ISBA_MODEL(KFROM)%XDPSN=>XDPSN 00298 DIAG_MISC_ISBA_MODEL(KFROM)%XSEUIL=>XSEUIL 00299 DIAG_MISC_ISBA_MODEL(KFROM)%XFAPAR=>XFAPAR 00300 DIAG_MISC_ISBA_MODEL(KFROM)%XFAPIR=>XFAPIR 00301 DIAG_MISC_ISBA_MODEL(KFROM)%XDFAPARC=>XDFAPARC 00302 DIAG_MISC_ISBA_MODEL(KFROM)%XDFAPIRC=>XDFAPIRC 00303 DIAG_MISC_ISBA_MODEL(KFROM)%XFAPAR_BS=>XFAPAR_BS 00304 DIAG_MISC_ISBA_MODEL(KFROM)%XFAPIR_BS=>XFAPIR_BS 00305 DIAG_MISC_ISBA_MODEL(KFROM)%XDLAI_EFFC=>XDLAI_EFFC 00306 DIAG_MISC_ISBA_MODEL(KFROM)%XALBT=>XALBT 00307 DIAG_MISC_ISBA_MODEL(KFROM)%XDFSAT=>XDFSAT 00308 DIAG_MISC_ISBA_MODEL(KFROM)%XDFFG=>XDFFG 00309 DIAG_MISC_ISBA_MODEL(KFROM)%XDFFV=>XDFFV 00310 DIAG_MISC_ISBA_MODEL(KFROM)%XDFF=>XDFF 00311 ! 00312 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_HV=>XAVG_HV 00313 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_LAI=>XAVG_LAI 00314 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_SWI=>XAVG_SWI 00315 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_TSWI=>XAVG_TSWI 00316 DIAG_MISC_ISBA_MODEL(KFROM)%XSOIL_TSWI=>XSOIL_TSWI 00317 DIAG_MISC_ISBA_MODEL(KFROM)%XSOIL_TWG=>XSOIL_TWG 00318 DIAG_MISC_ISBA_MODEL(KFROM)%XSOIL_TWGI=>XSOIL_TWGI 00319 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_ALT=>XAVG_ALT 00320 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_FLT=>XAVG_FLT 00321 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_TWSNOW=>XAVG_TWSNOW 00322 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_TDSNOW=>XAVG_TDSNOW 00323 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_TTSNOW=>XAVG_TTSNOW 00324 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_PSNG=>XAVG_PSNG 00325 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_PSNV=>XAVG_PSNV 00326 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_PSN=>XAVG_PSN 00327 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_ALBT=>XAVG_ALBT 00328 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_FSAT=>XAVG_FSAT 00329 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_FFG=>XAVG_FFG 00330 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_FFV=>XAVG_FFV 00331 DIAG_MISC_ISBA_MODEL(KFROM)%XAVG_FF=>XAVG_FF 00332 ! 00333 DIAG_MISC_ISBA_MODEL(KFROM)%XSURF_TSWI=>XSURF_TSWI 00334 DIAG_MISC_ISBA_MODEL(KFROM)%XSURF_TWG=>XSURF_TWG 00335 DIAG_MISC_ISBA_MODEL(KFROM)%XSURF_TWGI=>XSURF_TWGI 00336 DIAG_MISC_ISBA_MODEL(KFROM)%XROOT_TSWI=>XROOT_TSWI 00337 DIAG_MISC_ISBA_MODEL(KFROM)%XROOT_TWG=>XROOT_TWG 00338 DIAG_MISC_ISBA_MODEL(KFROM)%XROOT_TWGI=>XROOT_TWGI 00339 DIAG_MISC_ISBA_MODEL(KFROM)%XFRD2_TSWI=>XFRD2_TSWI 00340 DIAG_MISC_ISBA_MODEL(KFROM)%XFRD2_TWG=>XFRD2_TWG 00341 DIAG_MISC_ISBA_MODEL(KFROM)%XFRD2_TWGI=>XFRD2_TWGI 00342 DIAG_MISC_ISBA_MODEL(KFROM)%XFRD3_TSWI=>XFRD3_TSWI 00343 DIAG_MISC_ISBA_MODEL(KFROM)%XFRD3_TWG=>XFRD3_TWG 00344 DIAG_MISC_ISBA_MODEL(KFROM)%XFRD3_TWGI=>XFRD3_TWGI 00345 ! 00346 ENDIF 00347 ! 00348 ! 00349 ! Current model is set to model KTO 00350 IF (LHOOK) CALL DR_HOOK('MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_GOTO_MODEL',0,ZHOOK_HANDLE) 00351 LSURF_MISC_BUDGET=>DIAG_MISC_ISBA_MODEL(KTO)%LSURF_MISC_BUDGET 00352 LSURF_DIAG_ALBEDO=>DIAG_MISC_ISBA_MODEL(KTO)%LSURF_DIAG_ALBEDO 00353 LSURF_MISC_DIF=>DIAG_MISC_ISBA_MODEL(KTO)%LSURF_MISC_DIF 00354 ! 00355 XHV=>DIAG_MISC_ISBA_MODEL(KTO)%XHV 00356 XSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XSWI 00357 XTSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XTSWI 00358 XALT=>DIAG_MISC_ISBA_MODEL(KTO)%XALT 00359 XFLT=>DIAG_MISC_ISBA_MODEL(KTO)%XFLT 00360 XTWSNOW=>DIAG_MISC_ISBA_MODEL(KTO)%XTWSNOW 00361 XTDSNOW=>DIAG_MISC_ISBA_MODEL(KTO)%XTDSNOW 00362 XTTSNOW=>DIAG_MISC_ISBA_MODEL(KTO)%XTTSNOW 00363 XSNOWLIQ=>DIAG_MISC_ISBA_MODEL(KTO)%XSNOWLIQ 00364 XSNOWTEMP=>DIAG_MISC_ISBA_MODEL(KTO)%XSNOWTEMP 00365 XDPSNG=>DIAG_MISC_ISBA_MODEL(KTO)%XDPSNG 00366 XDPSNV=>DIAG_MISC_ISBA_MODEL(KTO)%XDPSNV 00367 XDPSN=>DIAG_MISC_ISBA_MODEL(KTO)%XDPSN 00368 XSEUIL=>DIAG_MISC_ISBA_MODEL(KTO)%XSEUIL 00369 XFAPAR=>DIAG_MISC_ISBA_MODEL(KTO)%XFAPAR 00370 XFAPIR=>DIAG_MISC_ISBA_MODEL(KTO)%XFAPIR 00371 XDFAPARC=>DIAG_MISC_ISBA_MODEL(KTO)%XDFAPARC 00372 XDFAPIRC=>DIAG_MISC_ISBA_MODEL(KTO)%XDFAPIRC 00373 XFAPAR_BS=>DIAG_MISC_ISBA_MODEL(KTO)%XFAPAR_BS 00374 XFAPIR_BS=>DIAG_MISC_ISBA_MODEL(KTO)%XFAPIR_BS 00375 XDLAI_EFFC=>DIAG_MISC_ISBA_MODEL(KTO)%XDLAI_EFFC 00376 XALBT=>DIAG_MISC_ISBA_MODEL(KTO)%XALBT 00377 XDFSAT=>DIAG_MISC_ISBA_MODEL(KTO)%XDFSAT 00378 XDFFG=>DIAG_MISC_ISBA_MODEL(KTO)%XDFFG 00379 XDFFV=>DIAG_MISC_ISBA_MODEL(KTO)%XDFFV 00380 XDFF=>DIAG_MISC_ISBA_MODEL(KTO)%XDFF 00381 ! 00382 XAVG_HV=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_HV 00383 XAVG_LAI=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_LAI 00384 XAVG_SWI=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_SWI 00385 XAVG_TSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_TSWI 00386 XSOIL_TSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XSOIL_TSWI 00387 XSOIL_TWG=>DIAG_MISC_ISBA_MODEL(KTO)%XSOIL_TWG 00388 XSOIL_TWGI=>DIAG_MISC_ISBA_MODEL(KTO)%XSOIL_TWGI 00389 XAVG_ALT=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_ALT 00390 XAVG_FLT=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_FLT 00391 XAVG_TWSNOW=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_TWSNOW 00392 XAVG_TDSNOW=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_TDSNOW 00393 XAVG_TTSNOW=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_TTSNOW 00394 XAVG_PSNG=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_PSNG 00395 XAVG_PSNV=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_PSNV 00396 XAVG_PSN=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_PSN 00397 XAVG_ALBT=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_ALBT 00398 XAVG_FSAT=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_FSAT 00399 XAVG_FFG=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_FFG 00400 XAVG_FFV=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_FFV 00401 XAVG_FF=>DIAG_MISC_ISBA_MODEL(KTO)%XAVG_FF 00402 ! 00403 XSURF_TSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XSURF_TSWI 00404 XSURF_TWG=>DIAG_MISC_ISBA_MODEL(KTO)%XSURF_TWG 00405 XSURF_TWGI=>DIAG_MISC_ISBA_MODEL(KTO)%XSURF_TWGI 00406 XROOT_TSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XROOT_TSWI 00407 XROOT_TWG=>DIAG_MISC_ISBA_MODEL(KTO)%XROOT_TWG 00408 XROOT_TWGI=>DIAG_MISC_ISBA_MODEL(KTO)%XROOT_TWGI 00409 XFRD2_TSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XFRD2_TSWI 00410 XFRD2_TWG=>DIAG_MISC_ISBA_MODEL(KTO)%XFRD2_TWG 00411 XFRD2_TWGI=>DIAG_MISC_ISBA_MODEL(KTO)%XFRD2_TWGI 00412 XFRD3_TSWI=>DIAG_MISC_ISBA_MODEL(KTO)%XFRD3_TSWI 00413 XFRD3_TWG=>DIAG_MISC_ISBA_MODEL(KTO)%XFRD3_TWG 00414 XFRD3_TWGI=>DIAG_MISC_ISBA_MODEL(KTO)%XFRD3_TWGI 00415 ! 00416 IF (LHOOK) CALL DR_HOOK('MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_GOTO_MODEL',1,ZHOOK_HANDLE) 00417 ! 00418 00419 END SUBROUTINE DIAG_MISC_ISBA_GOTO_MODEL 00420 00421 SUBROUTINE DIAG_MISC_ISBA_ALLOC(KMODEL) 00422 INTEGER, INTENT(IN) :: KMODEL 00423 INTEGER :: J 00424 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00425 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_ALLOC",0,ZHOOK_HANDLE) 00426 ALLOCATE(DIAG_MISC_ISBA_MODEL(KMODEL)) 00427 DO J=1,KMODEL 00428 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XHV) 00429 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSWI) 00430 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XTSWI) 00431 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XALT) 00432 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFLT) 00433 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSNOWLIQ) 00434 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSNOWTEMP) 00435 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XTWSNOW) 00436 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XTDSNOW) 00437 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XTTSNOW) 00438 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDPSNG) 00439 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDPSNV) 00440 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDPSN) 00441 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XALBT) 00442 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDFFG) 00443 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDFFV) 00444 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDFF) 00445 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSEUIL) 00446 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFAPAR) 00447 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFAPIR) 00448 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDFAPARC) 00449 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDFAPIRC) 00450 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFAPAR_BS) 00451 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFAPIR_BS) 00452 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XDLAI_EFFC) 00453 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_HV) 00454 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_LAI) 00455 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_SWI) 00456 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_TSWI) 00457 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSOIL_TSWI) 00458 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSOIL_TWG) 00459 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSOIL_TWGI) 00460 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_ALT) 00461 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_FLT) 00462 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_TWSNOW) 00463 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_TDSNOW) 00464 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_TTSNOW) 00465 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_PSNG) 00466 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_PSNV) 00467 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_PSN) 00468 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_ALBT) 00469 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_FFG) 00470 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_FFV) 00471 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XAVG_FF) 00472 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSURF_TSWI) 00473 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSURF_TWG) 00474 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XSURF_TWGI) 00475 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XROOT_TSWI) 00476 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XROOT_TWG) 00477 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XROOT_TWGI) 00478 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFRD2_TSWI) 00479 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFRD2_TWG) 00480 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFRD2_TWGI) 00481 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFRD3_TSWI) 00482 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFRD3_TWG) 00483 NULLIFY(DIAG_MISC_ISBA_MODEL(J)%XFRD3_TWGI) 00484 ENDDO 00485 DIAG_MISC_ISBA_MODEL(:)%LSURF_MISC_BUDGET=.FALSE. 00486 DIAG_MISC_ISBA_MODEL(:)%LSURF_DIAG_ALBEDO=.FALSE. 00487 DIAG_MISC_ISBA_MODEL(:)%LSURF_MISC_DIF=.FALSE. 00488 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_ALLOC",1,ZHOOK_HANDLE) 00489 END SUBROUTINE DIAG_MISC_ISBA_ALLOC 00490 00491 SUBROUTINE DIAG_MISC_ISBA_DEALLO 00492 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00493 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_DEALLO",0,ZHOOK_HANDLE) 00494 IF (ALLOCATED(DIAG_MISC_ISBA_MODEL)) DEALLOCATE(DIAG_MISC_ISBA_MODEL) 00495 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_MISC_ISBA_N:DIAG_MISC_ISBA_DEALLO",1,ZHOOK_HANDLE) 00496 END SUBROUTINE DIAG_MISC_ISBA_DEALLO 00497 00498 END MODULE MODD_DIAG_MISC_ISBA_n