SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_COVER_n(HPROGRAM) 00003 ! ################################ 00004 ! 00005 !!**** *READ_COVER_n* - routine to read a file for 00006 !! physiographic data file of model _n 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 !! The purpose of this routine is to initialise the 00011 !! physiographic data file. 00012 !! 00013 !! 00014 !!** METHOD 00015 !! ------ 00016 !! The data are read in the initial surface file : 00017 !! - 2D physiographic data fields 00018 !! 00019 !! It does not read the grid definition. This should have been 00020 !! read already. 00021 !! 00022 !! EXTERNAL 00023 !! -------- 00024 !! 00025 !! 00026 !! 00027 !! IMPLICIT ARGUMENTS 00028 !! ------------------ 00029 !! 00030 !! REFERENCE 00031 !! --------- 00032 !! 00033 !! 00034 !! AUTHOR 00035 !! ------ 00036 !! V. Masson *Meteo France* 00037 !! 00038 !! MODIFICATIONS 00039 !! ------------- 00040 !! Original 01/2003 00041 !------------------------------------------------------------------------------- 00042 ! 00043 !* 0. DECLARATIONS 00044 ! ------------ 00045 ! 00046 USE MODD_SURF_ATM_n, ONLY : XSEA, XWATER, XNATURE, XTOWN, & 00047 XCOVER, XZS, TTIME, LCOVER, NSIZE_FULL 00048 ! 00049 USE MODD_DATA_COVER_PAR, ONLY : NBARE_SOIL, JPCOVER 00050 ! 00051 USE MODI_READ_LCOVER 00052 USE MODI_READ_SURF 00053 USE MODI_CONVERT_COVER_FRAC 00054 ! 00055 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00056 USE PARKIND1 ,ONLY : JPRB 00057 ! 00058 IMPLICIT NONE 00059 ! 00060 !* 0.1 Declarations of arguments 00061 ! ------------------------- 00062 ! 00063 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00064 ! 00065 !* 0.2 Declarations of local variables 00066 ! ------------------------------- 00067 ! 00068 00069 INTEGER :: IRESP ! Error code after redding 00070 ! 00071 INTEGER :: IVERSION ! surface version 00072 ! 00073 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00074 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00075 ! 00076 !------------------------------------------------------------------------------- 00077 ! 00078 ! 00079 !* 2. Physiographic data fields: 00080 ! ------------------------- 00081 ! 00082 !* 2.1 Cover classes : 00083 ! ------------- 00084 ! 00085 IF (LHOOK) CALL DR_HOOK('READ_COVER_N',0,ZHOOK_HANDLE) 00086 ! 00087 YRECFM='VERSION' 00088 CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP) 00089 ! 00090 ALLOCATE(LCOVER(JPCOVER)) 00091 CALL READ_LCOVER(HPROGRAM,LCOVER) 00092 ! 00093 ! 00094 ALLOCATE(XCOVER(NSIZE_FULL,JPCOVER)) 00095 CALL READ_SURF(HPROGRAM,'COVER',XCOVER(:,:),LCOVER,IRESP) 00096 ! 00097 !* 2.1 Fractions : 00098 ! --------- 00099 ! 00100 ALLOCATE(XSEA (NSIZE_FULL)) 00101 ALLOCATE(XNATURE(NSIZE_FULL)) 00102 ALLOCATE(XWATER (NSIZE_FULL)) 00103 ALLOCATE(XTOWN (NSIZE_FULL)) 00104 ! 00105 IF (IVERSION>=7) THEN 00106 ! 00107 CALL READ_SURF(HPROGRAM,'FRAC_SEA ',XSEA, IRESP) 00108 CALL READ_SURF(HPROGRAM,'FRAC_NATURE',XNATURE,IRESP) 00109 CALL READ_SURF(HPROGRAM,'FRAC_WATER ',XWATER, IRESP) 00110 CALL READ_SURF(HPROGRAM,'FRAC_TOWN ',XTOWN, IRESP) 00111 ! 00112 ELSE 00113 CALL CONVERT_COVER_FRAC(XCOVER,XSEA,XNATURE,XTOWN,XWATER) 00114 ENDIF 00115 ! 00116 !* 2.2 Orography : 00117 ! --------- 00118 ! 00119 ! 00120 ALLOCATE(XZS(NSIZE_FULL)) 00121 YRECFM='ZS' 00122 CALL READ_SURF(HPROGRAM,YRECFM,XZS(:),IRESP) 00123 IF (LHOOK) CALL DR_HOOK('READ_COVER_N',1,ZHOOK_HANDLE) 00124 ! 00125 ! 00126 !------------------------------------------------------------------------------- 00127 ! 00128 END SUBROUTINE READ_COVER_n