SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_prep_seaflux_conf.F90
Go to the documentation of this file.
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