|
SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PREP_SEAFLUX_CONF(HPROGRAM,HVAR,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE, & 00003 HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT,OUNIF) 00004 ! ####################################################### 00005 ! 00006 !!**** *READ_PREP_SEAFLUX_CONF* - routine to read the configuration for 00007 !! SEAFLUX fields preparation 00008 !! 00009 !! PURPOSE 00010 !! ------- 00011 !! 00012 !!** METHOD 00013 !! ------ 00014 !! 00015 !! EXTERNAL 00016 !! -------- 00017 !! 00018 !! 00019 !! IMPLICIT ARGUMENTS 00020 !! ------------------ 00021 !! 00022 !! REFERENCE 00023 !! --------- 00024 !! 00025 !! 00026 !! AUTHOR 00027 !! ------ 00028 !! S. Malardel *Meteo France* 00029 !! 00030 !! MODIFICATIONS 00031 !! ------------- 00032 !! Original 01/2004 00033 !! P. Le Moigne 10/2005, Phasage Arome 00034 !! C. Lebeaupin 01/2008 Add oceanic variables initialization 00035 !------------------------------------------------------------------------------- 00036 ! 00037 !* 0. DECLARATIONS 00038 ! ------------ 00039 ! 00040 USE MODN_PREP_SEAFLUX 00041 ! 00042 USE MODI_READ_PREP_SURF_ATM_CONF 00043 USE MODI_OCEAN_MERCATORVERGRID 00044 ! 00045 USE MODD_PREP_SEAFLUX, ONLY : CFILE_SEAFLX, CTYPE, CFILEPGD_SEAFLX, CTYPEPGD, XSST_UNIF 00046 USE MODD_OCEAN_n, ONLY : LMERCATOR 00047 ! 00048 USE MODD_SURF_PAR, ONLY : XUNDEF 00049 ! 00050 ! 00051 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00052 USE PARKIND1 ,ONLY : JPRB 00053 ! 00054 USE MODI_ABOR1_SFX 00055 ! 00056 IMPLICIT NONE 00057 ! 00058 !* 0.1 Declarations of arguments 00059 ! ------------------------- 00060 ! 00061 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling ISBA 00062 CHARACTER(LEN=7), INTENT(IN) :: HVAR ! variable treated 00063 CHARACTER(LEN=28), INTENT(OUT) :: HFILE ! file name 00064 CHARACTER(LEN=6), INTENT(OUT) :: HFILETYPE! file type 00065 CHARACTER(LEN=28), INTENT(OUT) :: HFILEPGD ! file name 00066 CHARACTER(LEN=6), INTENT(OUT) :: HFILEPGDTYPE! file type 00067 CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name 00068 CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type 00069 CHARACTER(LEN=28), INTENT(IN) :: HPGDFILE ! atmospheric file name 00070 CHARACTER(LEN=6), INTENT(IN) :: HPGDFILETYPE! atmospheric file type 00071 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00072 LOGICAL, INTENT(OUT) :: OUNIF ! flag for prescribed uniform field 00073 00074 ! 00075 !* 0.2 Declarations of local variables 00076 ! ------------------------------- 00077 ! 00078 INTEGER :: IRESP ! IRESP : return-code if a problem appears 00079 ! at the open of the file in LFI routines 00080 INTEGER :: ILUNAM ! Logical unit of namelist file 00081 ! 00082 CHARACTER(LEN=28) :: YNAMELIST ! namelist file 00083 ! 00084 LOGICAL :: GFOUND ! Return code when searching namelist 00085 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00086 !------------------------------------------------------------------------------- 00087 ! 00088 ! 00089 IF (LHOOK) CALL DR_HOOK('READ_PREP_SEAFLUX_CONF',0,ZHOOK_HANDLE) 00090 HFILE = ' ' 00091 HFILETYPE = ' ' 00092 ! 00093 HFILEPGD = ' ' 00094 HFILEPGDTYPE = ' ' 00095 ! 00096 OUNIF = .FALSE. 00097 ! 00098 !------------------------------------------------------------------------------- 00099 ! 00100 !* choice of input file 00101 ! -------------------- 00102 ! 00103 IF (LEN_TRIM(HFILE)==0 .AND. LEN_TRIM(CFILE_SEAFLX)>0 .AND. LEN_TRIM(CTYPE)>0) THEN 00104 HFILE = CFILE_SEAFLX 00105 HFILETYPE = CTYPE 00106 END IF 00107 ! 00108 IF (LEN_TRIM(HFILEPGD)==0 .AND. LEN_TRIM(CFILEPGD_SEAFLX)>0 .AND. LEN_TRIM(CTYPEPGD)>0) THEN 00109 HFILEPGD = CFILEPGD_SEAFLX 00110 HFILEPGDTYPE = CTYPEPGD 00111 END IF 00112 ! 00113 !! If no file name in the scheme namelist, 00114 !! try to find a name in NAM_SURF_ATM 00115 ! 00116 IF (LEN_TRIM(HFILE)==0) THEN 00117 ! 00118 CALL READ_PREP_SURF_ATM_CONF(HPROGRAM,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,& 00119 HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT) 00120 ! 00121 END IF 00122 !------------------------------------------------------------------------------- 00123 ! 00124 !* Is an uniform field prescribed? 00125 ! ------------------------------ 00126 ! 00127 OUNIF = (XSST_UNIF/=XUNDEF) 00128 ! 00129 !------------------------------------------------------------------------------- 00130 ! 00131 !* If no file and no uniform field is prescribed: error 00132 ! --------------------------------------------- 00133 ! 00134 IF (HVAR=='DATE ' .OR. HVAR=='ZS ') THEN 00135 OUNIF = (HFILETYPE==' ') 00136 IF (LHOOK) CALL DR_HOOK('READ_PREP_SEAFLUX_CONF',1,ZHOOK_HANDLE) 00137 RETURN 00138 END IF 00139 ! 00140 IF (LEN_TRIM(HFILETYPE)==0 .AND. .NOT. OUNIF) THEN 00141 CALL ABOR1_SFX('READ_PREP_SEAFLUX_CONF: AN INPUT VALUE IS REQUIRED FOR '//HVAR) 00142 END IF 00143 ! 00144 !------------------------------------------------------------------------------- 00145 ! 00146 !* If 1D coupling: ocean variables initializing 00147 ! -------------------------------------------- 00148 ! 00149 IF (LMERCATOR) THEN 00150 WRITE(KLUOUT,*) 'LMERCATOR=T : initializing oceanic vertical grid' 00151 CALL OCEAN_MERCATORVERGRID 00152 END IF 00153 IF (LHOOK) CALL DR_HOOK('READ_PREP_SEAFLUX_CONF',1,ZHOOK_HANDLE) 00154 ! 00155 !------------------------------------------------------------------------------- 00156 ! 00157 END SUBROUTINE READ_PREP_SEAFLUX_CONF
1.8.0