SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_SSO_n(HPROGRAM) 00003 ! ################################ 00004 ! 00005 !!**** *READ_SSO_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_SSO_n, ONLY : XAVG_ZS, XSIL_ZS, XSSO_STDEV, & 00047 XSSO_ANIS, XSSO_DIR, XSSO_SLOPE, & 00048 XMIN_ZS, XMAX_ZS, & 00049 XAOSIP, XAOSIM, XAOSJP, XAOSJM, & 00050 XHO2IP, XHO2IM, XHO2JP, XHO2JM 00051 USE MODD_SURF_ATM_n , ONLY : NSIZE_FULL, XSEA 00052 ! 00053 ! 00054 USE MODI_READ_SURF 00055 ! 00056 USE MODD_SURF_PAR, ONLY : XUNDEF 00057 ! 00058 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00059 USE PARKIND1 ,ONLY : JPRB 00060 ! 00061 IMPLICIT NONE 00062 ! 00063 !* 0.1 Declarations of arguments 00064 ! ------------------------- 00065 ! 00066 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00067 ! 00068 !* 0.2 Declarations of local variables 00069 ! ------------------------------- 00070 ! 00071 00072 ! 00073 INTEGER :: IRESP ! Error code after redding 00074 ! 00075 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00076 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00077 ! 00078 !------------------------------------------------------------------------------- 00079 ! 00080 !* 2. Orography : 00081 ! --------- 00082 ! 00083 ! 00084 IF (LHOOK) CALL DR_HOOK('READ_SSO_N',0,ZHOOK_HANDLE) 00085 IF(.NOT.ASSOCIATED(XAVG_ZS)) ALLOCATE(XAVG_ZS(NSIZE_FULL)) 00086 YRECFM='AVG_ZS' 00087 CALL READ_SURF(HPROGRAM,YRECFM,XAVG_ZS(:),IRESP) 00088 ! 00089 IF(.NOT.ASSOCIATED(XSIL_ZS)) ALLOCATE(XSIL_ZS(NSIZE_FULL)) 00090 YRECFM='SIL_ZS' 00091 CALL READ_SURF(HPROGRAM,YRECFM,XSIL_ZS(:),IRESP) 00092 ! 00093 ! 00094 !* 3. Subgrid Orography : 00095 ! ----------------- 00096 ! 00097 ! 00098 IF(.NOT.ASSOCIATED(XSSO_STDEV)) ALLOCATE(XSSO_STDEV(NSIZE_FULL)) 00099 YRECFM='SSO_STDEV' 00100 CALL READ_SURF(HPROGRAM,YRECFM,XSSO_STDEV(:),IRESP) 00101 WHERE (XSEA(:) == 1.) XSSO_STDEV(:) = XUNDEF 00102 ! 00103 IF(.NOT.ASSOCIATED(XMIN_ZS)) ALLOCATE(XMIN_ZS(NSIZE_FULL)) 00104 YRECFM='MIN_ZS' 00105 CALL READ_SURF(HPROGRAM,YRECFM,XMIN_ZS(:),IRESP) 00106 ! 00107 IF(.NOT.ASSOCIATED(XMAX_ZS)) ALLOCATE(XMAX_ZS(NSIZE_FULL)) 00108 YRECFM='MAX_ZS' 00109 CALL READ_SURF(HPROGRAM,YRECFM,XMAX_ZS(:),IRESP) 00110 ! 00111 IF(.NOT.ASSOCIATED(XSSO_ANIS)) ALLOCATE(XSSO_ANIS(NSIZE_FULL)) 00112 YRECFM='SSO_ANIS' 00113 CALL READ_SURF(HPROGRAM,YRECFM,XSSO_ANIS(:),IRESP) 00114 WHERE (XSEA(:) == 1.) XSSO_ANIS(:) = XUNDEF 00115 ! 00116 IF(.NOT.ASSOCIATED(XSSO_DIR)) ALLOCATE(XSSO_DIR(NSIZE_FULL)) 00117 YRECFM='SSO_DIR' 00118 CALL READ_SURF(HPROGRAM,YRECFM,XSSO_DIR(:),IRESP) 00119 WHERE (XSEA(:) == 1.) XSSO_DIR(:) = XUNDEF 00120 ! 00121 IF(.NOT.ASSOCIATED(XSSO_SLOPE)) ALLOCATE(XSSO_SLOPE(NSIZE_FULL)) 00122 YRECFM='SSO_SLOPE' 00123 CALL READ_SURF(HPROGRAM,YRECFM,XSSO_SLOPE(:),IRESP) 00124 WHERE (XSEA(:) == 1.) XSSO_SLOPE(:) = XUNDEF 00125 ! 00126 !------------------------------------------------------------------------------- 00127 ! 00128 !* 3. Subgrid Orography roughness: 00129 ! --------------------------- 00130 ! 00131 ! 00132 IF(.NOT.ASSOCIATED(XHO2IP)) ALLOCATE(XHO2IP(NSIZE_FULL)) 00133 YRECFM='HO2IP' 00134 CALL READ_SURF(HPROGRAM,YRECFM,XHO2IP(:),IRESP) 00135 WHERE (XSEA(:) == 1.) XHO2IP(:) = XUNDEF 00136 ! 00137 IF(.NOT.ASSOCIATED(XHO2JP)) ALLOCATE(XHO2JP(NSIZE_FULL)) 00138 YRECFM='HO2JP' 00139 CALL READ_SURF(HPROGRAM,YRECFM,XHO2JP(:),IRESP) 00140 WHERE (XSEA(:) == 1.) XHO2JP(:) = XUNDEF 00141 ! 00142 IF(.NOT.ASSOCIATED(XHO2IM)) ALLOCATE(XHO2IM(NSIZE_FULL)) 00143 YRECFM='HO2IM' 00144 CALL READ_SURF(HPROGRAM,YRECFM,XHO2IM(:),IRESP) 00145 WHERE (XSEA(:) == 1.) XHO2IM(:) = XUNDEF 00146 ! 00147 IF(.NOT.ASSOCIATED(XHO2JM)) ALLOCATE(XHO2JM(NSIZE_FULL)) 00148 YRECFM='HO2JM' 00149 CALL READ_SURF(HPROGRAM,YRECFM,XHO2JM(:),IRESP) 00150 WHERE (XSEA(:) == 1.) XHO2JM(:) = XUNDEF 00151 ! 00152 IF(.NOT.ASSOCIATED(XAOSIP)) ALLOCATE(XAOSIP(NSIZE_FULL)) 00153 YRECFM='AOSIP' 00154 CALL READ_SURF(HPROGRAM,YRECFM,XAOSIP(:),IRESP) 00155 WHERE (XSEA(:) == 1.) XAOSIP(:) = XUNDEF 00156 ! 00157 IF(.NOT.ASSOCIATED(XAOSJP)) ALLOCATE(XAOSJP(NSIZE_FULL)) 00158 YRECFM='AOSJP' 00159 CALL READ_SURF(HPROGRAM,YRECFM,XAOSJP(:),IRESP) 00160 WHERE (XSEA(:) == 1.) XAOSJP(:) = XUNDEF 00161 ! 00162 IF(.NOT.ASSOCIATED(XAOSIM)) ALLOCATE(XAOSIM(NSIZE_FULL)) 00163 YRECFM='AOSIM' 00164 CALL READ_SURF(HPROGRAM,YRECFM,XAOSIM(:),IRESP) 00165 WHERE (XSEA(:) == 1.) XAOSIM(:) = XUNDEF 00166 ! 00167 IF(.NOT.ASSOCIATED(XAOSJM)) ALLOCATE(XAOSJM(NSIZE_FULL)) 00168 YRECFM='AOSJM' 00169 CALL READ_SURF(HPROGRAM,YRECFM,XAOSJM(:),IRESP) 00170 WHERE (XSEA(:) == 1.) XAOSJM(:) = XUNDEF 00171 IF (LHOOK) CALL DR_HOOK('READ_SSO_N',1,ZHOOK_HANDLE) 00172 ! 00173 ! 00174 !------------------------------------------------------------------------------- 00175 ! 00176 END SUBROUTINE READ_SSO_n