SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/allocate_physio.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE ALLOCATE_PHYSIO(HPHOTO, HISBA, KLU, KVEGTYPE, KGROUND_LAYER, KPATCH, &
00003                                PVEGTYPE, PLAI, PVEG, PZ0, PEMIS, PDG, PD_ICE, &
00004                                PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, &
00005                                PZ0_O_Z0H, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, &
00006                                PH_TREE, PRE25, PLAIMIN, PBSLAI, PSEFOLD, &
00007                                PGMES, PGC, PF2I, PDMAX, OSTRESS, &
00008                                PCE_NITRO, PCF_NITRO, PCNA_NITRO, &
00009                                PTSEED, PTREAP, PWATSUP, PIRRIG, &
00010                                PROOTFRAC, KWG_LAYER, PDROOT, PDG2 )  
00011 !   ##########################################################################
00012 !
00013 USE MODD_TYPE_DATE_SURF
00014 !
00015 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00016 USE PARKIND1  ,ONLY : JPRB
00017 !
00018 IMPLICIT NONE
00019 !
00020  CHARACTER(LEN=3),INTENT(IN)  :: HPHOTO
00021  CHARACTER(LEN=3),INTENT(IN)  :: HISBA
00022 !
00023 INTEGER, INTENT(IN) :: KLU
00024 INTEGER, INTENT(IN) :: KVEGTYPE
00025 INTEGER, INTENT(IN) :: KGROUND_LAYER
00026 INTEGER, INTENT(IN) :: KPATCH
00027 !
00028 REAL, DIMENSION(:,:), POINTER :: PVEGTYPE
00029 !
00030 REAL, DIMENSION(:,:), POINTER :: PLAI
00031 REAL, DIMENSION(:,:), POINTER :: PVEG
00032 REAL, DIMENSION(:,:), POINTER :: PZ0
00033 REAL, DIMENSION(:,:), POINTER :: PEMIS
00034 !
00035 REAL, DIMENSION(:,:,:), POINTER :: PDG
00036 REAL, DIMENSION(:,:)  , POINTER :: PD_ICE
00037 !
00038 REAL, DIMENSION(:,:), POINTER :: PRSMIN
00039 REAL, DIMENSION(:,:), POINTER :: PGAMMA
00040 REAL, DIMENSION(:,:), POINTER :: PWRMAX_CF
00041 REAL, DIMENSION(:,:), POINTER :: PRGL
00042 REAL, DIMENSION(:,:), POINTER :: PCV
00043 REAL, DIMENSION(:,:), POINTER :: PZ0_O_Z0H
00044 REAL, DIMENSION(:,:), POINTER :: PALBNIR_VEG
00045 REAL, DIMENSION(:,:), POINTER :: PALBVIS_VEG
00046 REAL, DIMENSION(:,:), POINTER :: PALBUV_VEG
00047 !
00048 REAL, DIMENSION(:,:), POINTER :: PH_TREE
00049 REAL, DIMENSION(:,:), POINTER :: PRE25
00050 REAL, DIMENSION(:,:), POINTER :: PLAIMIN
00051 REAL, DIMENSION(:,:), POINTER :: PBSLAI
00052 REAL, DIMENSION(:,:), POINTER :: PSEFOLD
00053 REAL, DIMENSION(:,:), POINTER :: PGMES
00054 REAL, DIMENSION(:,:), POINTER :: PGC
00055 REAL, DIMENSION(:,:), POINTER :: PF2I
00056 REAL, DIMENSION(:,:), POINTER :: PDMAX
00057 LOGICAL, DIMENSION(:,:), POINTER :: OSTRESS
00058 REAL, DIMENSION(:,:), POINTER :: PCE_NITRO
00059 REAL, DIMENSION(:,:), POINTER :: PCF_NITRO
00060 REAL, DIMENSION(:,:), POINTER :: PCNA_NITRO
00061 !
00062 TYPE(DATE_TIME), DIMENSION(:,:), POINTER :: PTSEED
00063 TYPE(DATE_TIME), DIMENSION(:,:), POINTER :: PTREAP
00064 REAL, DIMENSION(:,:), POINTER :: PWATSUP
00065 REAL, DIMENSION(:,:), POINTER :: PIRRIG
00066 !
00067 REAL, DIMENSION(:,:,:), POINTER :: PROOTFRAC
00068 INTEGER, DIMENSION(:,:), POINTER :: KWG_LAYER
00069 REAL, DIMENSION(:,:), POINTER :: PDROOT
00070 REAL, DIMENSION(:,:), POINTER :: PDG2
00071 !
00072 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00073 !
00074 !-------------------------------------------------------------------------------
00075 !
00076 ! Mask and number of grid elements containing patches/tiles:
00077 !
00078 IF (LHOOK) CALL DR_HOOK('ALLOCATE_PHYSIO',0,ZHOOK_HANDLE)
00079 ALLOCATE(PVEGTYPE                (KLU,KVEGTYPE            ))
00080 !
00081 ALLOCATE(PLAI                    (KLU,KPATCH              )) 
00082 ALLOCATE(PVEG                    (KLU,KPATCH              )) 
00083 ALLOCATE(PZ0                     (KLU,KPATCH              )) 
00084 ALLOCATE(PEMIS                   (KLU,KPATCH              )) 
00085 !
00086 ALLOCATE(PDG                     (KLU,KGROUND_LAYER,KPATCH)) 
00087 ALLOCATE(PD_ICE                  (KLU,KPATCH              )) 
00088 !
00089 ALLOCATE(PRSMIN                  (KLU,KPATCH              )) 
00090 ALLOCATE(PGAMMA                  (KLU,KPATCH              )) 
00091 ALLOCATE(PWRMAX_CF               (KLU,KPATCH              )) 
00092 ALLOCATE(PRGL                    (KLU,KPATCH              )) 
00093 ALLOCATE(PCV                     (KLU,KPATCH              )) 
00094 ALLOCATE(PZ0_O_Z0H               (KLU,KPATCH              )) 
00095 ALLOCATE(PALBNIR_VEG             (KLU,KPATCH              )) 
00096 ALLOCATE(PALBVIS_VEG             (KLU,KPATCH              )) 
00097 ALLOCATE(PALBUV_VEG              (KLU,KPATCH              )) 
00098 !
00099 ! - vegetation: Ags parameters ('AGS', 'LAI', 'AST', 'LST', 'NIT' options)
00100 !
00101 IF (HPHOTO/='NON') THEN
00102   ALLOCATE(PH_TREE                 (KLU,KPATCH              )) 
00103   ALLOCATE(PRE25                   (KLU,KPATCH              )) 
00104   ALLOCATE(PLAIMIN                 (KLU,KPATCH              )) 
00105   ALLOCATE(PBSLAI                  (KLU,KPATCH              )) 
00106   ALLOCATE(PSEFOLD                 (KLU,KPATCH              )) 
00107   ALLOCATE(PGMES                   (KLU,KPATCH              )) 
00108   ALLOCATE(PGC                     (KLU,KPATCH              )) 
00109   ALLOCATE(PDMAX                   (KLU,KPATCH              ))
00110   IF (HPHOTO/='AGS' .AND. HPHOTO/='LAI') THEN
00111     ALLOCATE(PF2I                    (KLU,KPATCH              ))
00112     ALLOCATE(OSTRESS                 (KLU,KPATCH              )) 
00113     IF (HPHOTO=='NIT' .OR. HPHOTO=='NCB') THEN
00114       ALLOCATE(PCE_NITRO               (KLU,KPATCH              )) 
00115       ALLOCATE(PCF_NITRO               (KLU,KPATCH              )) 
00116       ALLOCATE(PCNA_NITRO              (KLU,KPATCH              ))  
00117     ELSE
00118       ALLOCATE(PCE_NITRO    (0,0))
00119       ALLOCATE(PCF_NITRO    (0,0))
00120       ALLOCATE(PCNA_NITRO   (0,0))
00121  
00122     ENDIF
00123   ELSE
00124     ALLOCATE(PF2I   (0,0))
00125     ALLOCATE(OSTRESS(0,0))
00126     ALLOCATE(PCE_NITRO    (0,0))
00127     ALLOCATE(PCF_NITRO    (0,0))
00128     ALLOCATE(PCNA_NITRO   (0,0))
00129   ENDIF
00130 ELSE
00131   ALLOCATE(PH_TREE    (0,0)) 
00132   ALLOCATE(PRE25      (0,0))
00133   ALLOCATE(PLAIMIN    (0,0))
00134   ALLOCATE(PBSLAI     (0,0))  
00135   ALLOCATE(PSEFOLD    (0,0))  
00136   ALLOCATE(PGMES      (0,0))
00137   ALLOCATE(PGC        (0,0))
00138   ALLOCATE(PF2I   (0,0))
00139   ALLOCATE(PDMAX  (0,0))
00140   ALLOCATE(OSTRESS(0,0))
00141   ALLOCATE(PCE_NITRO    (0,0))
00142   ALLOCATE(PCF_NITRO    (0,0))
00143   ALLOCATE(PCNA_NITRO   (0,0))
00144 ENDIF  
00145 !
00146 ! - Irrigation, seeding and reaping
00147 !
00148 IF (HPHOTO == 'LAI' .OR. HPHOTO == 'LST' .OR. HPHOTO == 'NIT' .OR. HPHOTO == 'NCB')  THEN
00149   ALLOCATE(PTSEED                  (KLU,KPATCH              )) 
00150   ALLOCATE(PTREAP                  (KLU,KPATCH              )) 
00151   ALLOCATE(PWATSUP                 (KLU,KPATCH              )) 
00152   ALLOCATE(PIRRIG                  (KLU,KPATCH              ))
00153 ELSE
00154   ALLOCATE(PTSEED     (0,0))
00155   ALLOCATE(PTREAP     (0,0))
00156   ALLOCATE(PWATSUP    (0,0))
00157   ALLOCATE(PIRRIG     (0,0))        
00158 ENDIF
00159 !
00160 ! - ISBA-DF scheme
00161 !
00162 IF(HISBA=='DIF')THEN
00163   ALLOCATE(PROOTFRAC  (KLU,KGROUND_LAYER,KPATCH))
00164   ALLOCATE(KWG_LAYER  (KLU,KPATCH))
00165   ALLOCATE(PDROOT     (KLU,KPATCH))
00166   ALLOCATE(PDG2       (KLU,KPATCH))
00167 ELSE  
00168   ALLOCATE(PROOTFRAC  (0,0,0))
00169   ALLOCATE(KWG_LAYER  (0,0)  )
00170   ALLOCATE(PDROOT     (0,0)  )        
00171   ALLOCATE(PDG2       (0,0)  )        
00172 ENDIF
00173 !
00174 !
00175 IF (LHOOK) CALL DR_HOOK('ALLOCATE_PHYSIO',1,ZHOOK_HANDLE)
00176 !
00177 END SUBROUTINE ALLOCATE_PHYSIO