SURFEX v7.3
General documentation of Surfex
|
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