SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PGD_TEB_GARDEN_n(HPROGRAM,KVERSION,KBUGFIX) 00003 ! ######################################### 00004 ! 00005 !!**** *READ_PGD_TEB_GARDEN_n* - routine to initialise ISBA physiographic variables 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! EXTERNAL 00014 !! -------- 00015 !! 00016 !! 00017 !! IMPLICIT ARGUMENTS 00018 !! ------------------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! V. Masson *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 01/2003 00031 !! P. Le Moigne 12/2004 : add type of photosynthesis 00032 !! B. Decharme 2008 : add XWDRAIN 00033 !------------------------------------------------------------------------------- 00034 ! 00035 !* 0. DECLARATIONS 00036 ! ------------ 00037 ! 00038 USE MODD_SURF_PAR, ONLY : XUNDEF 00039 USE MODD_TEB_n, ONLY : LECOCLIMAP 00040 USE MODD_TEB_GARDEN_n, ONLY : XCLAY, XSAND, NGROUND_LAYER, & 00041 XRUNOFFB, XWDRAIN, LPAR_GARDEN 00042 USE MODD_GR_BIOG_GARDEN_n,ONLY : XISOPOT, XMONOPOT 00043 USE MODD_CH_TEB_n, ONLY : LCH_BIO_FLUX 00044 USE MODD_TEB_GRID_n, ONLY : NDIM 00045 USE MODD_ISBA_PAR, ONLY : XOPTIMGRID 00046 ! 00047 USE MODI_READ_PGD_TEB_GARDEN_PAR_n 00048 USE MODI_READ_SURF 00049 ! 00050 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00051 USE PARKIND1 ,ONLY : JPRB 00052 ! 00053 USE MODI_GET_TYPE_DIM_n 00054 ! 00055 IMPLICIT NONE 00056 ! 00057 !* 0.1 Declarations of arguments 00058 ! ------------------------- 00059 ! 00060 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00061 INTEGER, INTENT(IN) :: KVERSION ! version of SURFEX of the file being read 00062 INTEGER, INTENT(IN) :: KBUGFIX 00063 ! 00064 !* 0.2 Declarations of local variables 00065 ! ------------------------------- 00066 ! 00067 INTEGER :: IRESP ! Error code after redding 00068 ! 00069 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00070 ! 00071 INTEGER :: JLAYER ! loop counter on layers 00072 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00073 ! 00074 !------------------------------------------------------------------------------- 00075 ! 00076 !* 1D physical dimension 00077 ! 00078 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_GARDEN_N',0,ZHOOK_HANDLE) 00079 YRECFM='SIZE_TOWN' 00080 CALL GET_TYPE_DIM_n('TOWN ',NDIM) 00081 ! 00082 ! 00083 !* clay fraction : attention, seul un niveau est present dans le fichier 00084 !* on rempli tout les niveaux de XCLAY avec les valeurs du fichiers 00085 ! 00086 ALLOCATE(XCLAY(NDIM,NGROUND_LAYER)) 00087 YRECFM='TWN_CLAY' 00088 IF (KVERSION>7 .OR. KVERSION==7 .AND. KBUGFIX>=3) YRECFM='GD_CLAY' 00089 CALL READ_SURF(HPROGRAM,YRECFM,XCLAY(:,1),IRESP) 00090 DO JLAYER=2,NGROUND_LAYER 00091 XCLAY(:,JLAYER)=XCLAY(:,1) 00092 END DO 00093 ! 00094 !* sand fraction 00095 ! 00096 ALLOCATE(XSAND(NDIM,NGROUND_LAYER)) 00097 YRECFM='TWN_SAND' 00098 IF (KVERSION>7 .OR. KVERSION==7 .AND. KBUGFIX>=3) YRECFM='GD_SAND' 00099 CALL READ_SURF(HPROGRAM,YRECFM,XSAND(:,1),IRESP) 00100 DO JLAYER=2,NGROUND_LAYER 00101 XSAND(:,JLAYER)=XSAND(:,1) 00102 END DO 00103 ! 00104 !* orographic runoff coefficient 00105 ! 00106 ALLOCATE(XRUNOFFB(NDIM)) 00107 YRECFM='TWN_RUNOFFB' 00108 IF (KVERSION>7 .OR. KVERSION==7 .AND. KBUGFIX>=3) YRECFM='GD_RUNOFFB' 00109 CALL READ_SURF(HPROGRAM,YRECFM,XRUNOFFB,IRESP) 00110 ! 00111 !* subgrid drainage coefficient 00112 ! 00113 ALLOCATE(XWDRAIN(NDIM)) 00114 IF (KVERSION<=3) THEN 00115 XWDRAIN = 0. 00116 ELSE 00117 YRECFM='TWN_WDRAIN' 00118 IF (KVERSION>7 .OR. KVERSION==7 .AND. KBUGFIX>=3) YRECFM='GD_WDRAIN' 00119 CALL READ_SURF(HPROGRAM,YRECFM,XWDRAIN,IRESP) 00120 ENDIF 00121 ! 00122 !------------------------------------------------------------------------------- 00123 ! 00124 !* biogenic chemical emissions 00125 ! 00126 IF (LCH_BIO_FLUX) THEN 00127 ALLOCATE(XISOPOT(NDIM)) 00128 YRECFM='EMIS_ISOPOT' 00129 CALL READ_SURF(HPROGRAM,YRECFM,XISOPOT,IRESP) 00130 ! 00131 ALLOCATE(XMONOPOT(NDIM)) 00132 YRECFM='EMIS_MONOPOT' 00133 CALL READ_SURF(HPROGRAM,YRECFM,XMONOPOT,IRESP) 00134 ELSE 00135 ALLOCATE(XISOPOT (0)) 00136 ALLOCATE(XMONOPOT(0)) 00137 END IF 00138 ! 00139 !------------------------------------------------------------------------------- 00140 ! 00141 !* 4. Physiographic data fields not to be computed by ecoclimap 00142 ! --------------------------------------------------------- 00143 ! 00144 IF (KVERSION>=7) THEN 00145 YRECFM='PAR_GARDEN' 00146 CALL READ_SURF(HPROGRAM,YRECFM,LPAR_GARDEN,IRESP) 00147 ELSEIF (.NOT.LECOCLIMAP) THEN 00148 LPAR_GARDEN = .TRUE. 00149 ELSE 00150 LPAR_GARDEN = .FALSE. 00151 ENDIF 00152 ! 00153 IF (LPAR_GARDEN) CALL READ_PGD_TEB_GARDEN_PAR_n(HPROGRAM) 00154 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_GARDEN_N',1,ZHOOK_HANDLE) 00155 ! 00156 ! 00157 !------------------------------------------------------------------------------- 00158 ! 00159 END SUBROUTINE READ_PGD_TEB_GARDEN_n