SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_prep_flake_conf.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_PREP_FLAKE_CONF(HPROGRAM,HVAR,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,&
00003                                       HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT,OUNIF)
00004 !     #######################################################
00005 !
00006 !!****  *READ_PREP_FLAKE_CONF* - routine to read the configuration for
00007 !!                                 FLAKE 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 !!      V. Masson   *Meteo France*      
00029 !!
00030 !!    MODIFICATIONS
00031 !!    -------------
00032 !!      Original    01/2004
00033 !!      P. Le Moigne 10/2005, Phasage Arome
00034 !-------------------------------------------------------------------------------
00035 !
00036 !*       0.    DECLARATIONS
00037 !              ------------
00038 !
00039 USE MODI_READ_PREP_SURF_ATM_CONF
00040 !
00041 USE MODN_PREP_FLAKE
00042 USE MODD_PREP_FLAKE, ONLY : CFILE_FLAKE, CFILEPGD_FLAKE, CTYPE, CTYPEPGD, &
00043                               XTS_UNIF,         &
00044                               XUNIF_T_SNOW,     &
00045                               XUNIF_T_ICE,      &
00046                               XUNIF_T_MNW,      &
00047                               XUNIF_T_WML,      &
00048                               XUNIF_T_BOT,      &
00049                               XUNIF_T_B1,       &
00050                               XUNIF_CT,         &
00051                               XUNIF_H_SNOW,     &
00052                               XUNIF_H_ICE,      &
00053                               XUNIF_H_ML,       &
00054                               XUNIF_H_B1,       &
00055                               LCLIM_LAKE   
00056 !
00057 !
00058 USE MODD_FLAKE_n,      ONLY : XTS ! to use as flag
00059 !
00060 USE MODD_SURF_PAR,   ONLY : XUNDEF
00061 !
00062 !
00063 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00064 USE PARKIND1  ,ONLY : JPRB
00065 !
00066 USE MODI_ABOR1_SFX
00067 !
00068 IMPLICIT NONE
00069 !
00070 !*       0.1   Declarations of arguments
00071 !              -------------------------
00072 !
00073  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling ISBA
00074  CHARACTER(LEN=7),  INTENT(IN)  :: HVAR     ! variable treated
00075  CHARACTER(LEN=28), INTENT(OUT) :: HFILE    ! file name
00076  CHARACTER(LEN=6),  INTENT(OUT) :: HFILETYPE! file type
00077  CHARACTER(LEN=28), INTENT(OUT) :: HFILEPGD    ! file name
00078  CHARACTER(LEN=6),  INTENT(OUT) :: HFILEPGDTYPE! file type
00079  CHARACTER(LEN=28), INTENT(IN)  :: HATMFILE    ! atmospheric file name
00080  CHARACTER(LEN=6),  INTENT(IN)  :: HATMFILETYPE! atmospheric file type
00081  CHARACTER(LEN=28), INTENT(IN)  :: HPGDFILE    ! atmospheric file name
00082  CHARACTER(LEN=6),  INTENT(IN)  :: HPGDFILETYPE! atmospheric file type
00083 INTEGER,           INTENT(IN)  :: KLUOUT   ! logical unit of output listing
00084 LOGICAL,           INTENT(OUT) :: OUNIF    ! flag for prescribed uniform field
00085 
00086 !
00087 !*       0.2   Declarations of local variables
00088 !              -------------------------------
00089 !
00090 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears 
00091                                     ! at the open of the file in LFI  routines 
00092 INTEGER           :: ILUNAM         ! Logical unit of namelist file
00093 !
00094  CHARACTER(LEN=28) :: YNAMELIST      ! namelist file
00095 !
00096 LOGICAL           :: GFOUND         ! Return code when searching namelist
00097 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00098 !-------------------------------------------------------------------------------
00099 !
00100 !
00101 IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',0,ZHOOK_HANDLE)
00102 HFILE = '                         '
00103 HFILETYPE = '      '
00104 !
00105 HFILEPGD = '                         '
00106 HFILEPGDTYPE = '      '
00107 !
00108 OUNIF     = .FALSE.
00109 !
00110 !-------------------------------------------------------------------------------
00111 !
00112 !* choice of input file
00113 !  --------------------
00114 !
00115 IF (LEN_TRIM(HFILE)==0 .AND. LEN_TRIM(CFILE_FLAKE)>0 .AND. LEN_TRIM(CTYPE)>0) THEN
00116   HFILE     = CFILE_FLAKE
00117   HFILETYPE = CTYPE
00118 END IF
00119 !
00120 IF (LEN_TRIM(HFILEPGD)==0 .AND. LEN_TRIM(CFILEPGD_FLAKE)>0 .AND. LEN_TRIM(CTYPEPGD)>0) THEN
00121   HFILEPGD     = CFILEPGD_FLAKE
00122   HFILEPGDTYPE = CTYPEPGD
00123 END IF
00124 !
00125 !! If no file name in the scheme namelist,
00126 !! try to find a name in NAM_SURF_ATM
00127 !
00128 IF (LEN_TRIM(HFILE)==0) THEN
00129 !
00130  CALL READ_PREP_SURF_ATM_CONF(HPROGRAM,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,&
00131                              HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT)
00132 !
00133 END IF
00134 !-------------------------------------------------------------------------------
00135 !
00136 !* Is an uniform field prescribed?
00137 !  ------------------------------
00138 SELECT CASE (HVAR)
00139  CASE('TS     ')
00140    OUNIF = (XTS_UNIF/=XUNDEF)
00141  CASE('T_SNOW ')
00142    OUNIF = (XUNIF_T_SNOW/=XUNDEF)
00143    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN          ! all fields but TS 
00144       HFILE = '                         ' ! are not readed
00145       HFILETYPE = '      '                ! from grib files
00146    END IF    
00147  CASE('T_ICE  ')
00148    OUNIF = (XUNIF_T_ICE/=XUNDEF)
00149    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00150       HFILE = '                         '
00151       HFILETYPE = '      '
00152    END IF    
00153  CASE('T_MNW  ')
00154    OUNIF = .FALSE.
00155    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00156       HFILE = '                         '
00157       HFILETYPE = '      '
00158    END IF    
00159  CASE('T_WML  ')
00160    OUNIF = (XUNIF_T_WML/=XUNDEF)
00161    HFILE = '                         '
00162    HFILETYPE = '      '
00163  CASE('T_BOT  ')
00164    OUNIF = (XUNIF_T_BOT/=XUNDEF)
00165    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00166       HFILE = '                         '
00167       HFILETYPE = '      '
00168    END IF    
00169  CASE('T_B1   ')
00170    OUNIF = (XUNIF_T_B1/=XUNDEF)
00171    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00172       HFILE = '                         '
00173       HFILETYPE = '      '
00174    END IF    
00175  CASE('CT     ')
00176    OUNIF = (XUNIF_CT/=XUNDEF)
00177    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00178       HFILE = '                         '
00179       HFILETYPE = '      '
00180    END IF    
00181  CASE('H_SNOW ')
00182    OUNIF = (XUNIF_H_SNOW/=XUNDEF)
00183    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00184       HFILE = '                         '
00185       HFILETYPE = '      '
00186    END IF    
00187  CASE('H_ICE  ')
00188    OUNIF = (XUNIF_H_ICE/=XUNDEF)
00189    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00190       HFILE = '                         '
00191       HFILETYPE = '      '
00192    END IF    
00193  CASE('H_ML   ')
00194    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00195       HFILE = '                         '
00196       HFILETYPE = '      '
00197    END IF    
00198    OUNIF = (XUNIF_H_ML/=XUNDEF)
00199  CASE('H_B1   ')
00200    OUNIF = (XUNIF_H_B1/=XUNDEF)
00201    IF (HFILETYPE=='GRIB  '.OR.HFILETYPE=='ASCLLV') THEN
00202       HFILE = '                         '
00203       HFILETYPE = '      '
00204    END IF    
00205 END SELECT
00206 !
00207 !
00208 !-------------------------------------------------------------------------------
00209 !
00210 !* If no file and no uniform field is prescribed:  default values used
00211 !  ---------------------------------------------
00212 !
00213 IF (LEN_TRIM(HFILETYPE)==0 .AND. .NOT. OUNIF) THEN
00214    SELECT CASE (HVAR)
00215      CASE ('ZS     ')
00216        OUNIF = .TRUE.
00217        IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',1,ZHOOK_HANDLE)
00218        RETURN
00219      CASE ('DATE   ')
00220        IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',1,ZHOOK_HANDLE)
00221        RETURN
00222      CASE('TS     ') ! an input file or a uniform value must be given for TS
00223        CALL ABOR1_SFX('READ_PREP_FLAKE_CONF: AN INPUT FILE OR A UNIFORM PRESCRIBED TS REQUIRED')
00224    END SELECT
00225 END IF
00226 IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',1,ZHOOK_HANDLE)
00227 !
00228 !
00229 !-------------------------------------------------------------------------------
00230 !
00231 END SUBROUTINE READ_PREP_FLAKE_CONF