SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_prep_teb_greenroof_conf.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_PREP_TEB_GREENROOF_CONF(HPROGRAM,HVAR,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,   &
00003                                               HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT,OUNIF)
00004 !     #######################################################
00005 !
00006 !!****  *READ_PREP_TEB_GREENROOF_CONF* - routine to read the configuration for ISBA
00007 !!                              fields preparation
00008 !!
00009 !!    PURPOSE
00010 !!    -------
00011 !!
00012 !!**  METHOD
00013 !!    ------
00014 !!    Based on "read_prep_teb_garden_conf"
00015 !!
00016 !!    EXTERNAL
00017 !!    --------
00018 !!
00019 !!
00020 !!    IMPLICIT ARGUMENTS
00021 !!    ------------------
00022 !!
00023 !!    REFERENCE
00024 !!    ---------
00025 !!
00026 !!
00027 !!    AUTHOR
00028 !!    ------
00029 !!     A. Lemonsu & C. de Munck
00030 !!
00031 !!    MODIFICATIONS
00032 !!    -------------
00033 !!      Original    07/2011
00034 !-------------------------------------------------------------------------------
00035 !
00036 !*       0.    DECLARATIONS
00037 !              ------------
00038 !
00039 USE MODI_READ_PREP_SURF_ATM_CONF
00040 !
00041 ! AFAIRE : VERIFIER SI BESOIN DE MODN_PREP_TEB_GREENROOF
00042 !USE MODN_PREP_TEB_GREENROOF
00043 USE MODD_PREP_TEB_GREENROOF, ONLY : CFILE_ISBA, CTYPE, CFILEPGD_ISBA, CTYPEPGD, &
00044                                     CFILE_HUG, CTYPE_HUG,         &
00045                                     CFILE_HUG_SURF, CFILE_HUG_ROOT, CFILE_HUG_DEEP,  &
00046                                     XHUG_SURF, XHUG_ROOT, XHUG_DEEP,                 &
00047                                     XHUGI_SURF, XHUGI_ROOT, XHUGI_DEEP,              &
00048                                     CFILE_TG, CTYPE_TG,                              &
00049                                     CFILE_TG_SURF, CFILE_TG_ROOT, CFILE_TG_DEEP,     &
00050                                     XTG_SURF, XTG_ROOT, XTG_DEEP  
00051 !
00052 USE MODD_SURF_PAR,   ONLY : XUNDEF
00053 !
00054 !
00055 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00056 USE PARKIND1  ,ONLY : JPRB
00057 !
00058 USE MODI_ABOR1_SFX
00059 !
00060 IMPLICIT NONE
00061 !
00062 !*       0.1   Declarations of arguments
00063 !              -------------------------
00064 !
00065  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM    ! program calling
00066  CHARACTER(LEN=7),  INTENT(IN)  :: HVAR        ! variable treated
00067  CHARACTER(LEN=28), INTENT(OUT) :: HFILE       ! file name
00068  CHARACTER(LEN=6),  INTENT(OUT) :: HFILETYPE   ! file type
00069  CHARACTER(LEN=28), INTENT(OUT) :: HFILEPGD    ! file name
00070  CHARACTER(LEN=6),  INTENT(OUT) :: HFILEPGDTYPE! file type
00071  CHARACTER(LEN=28), INTENT(IN)  :: HATMFILE    ! atmospheric file name
00072  CHARACTER(LEN=6),  INTENT(IN)  :: HATMFILETYPE! atmospheric file type
00073  CHARACTER(LEN=28), INTENT(IN)  :: HPGDFILE    ! atmospheric file name
00074  CHARACTER(LEN=6),  INTENT(IN)  :: HPGDFILETYPE! atmospheric file type
00075 INTEGER,           INTENT(IN)  :: KLUOUT      ! logical unit of output listing
00076 LOGICAL,           INTENT(OUT) :: OUNIF       ! flag for prescribed uniform field
00077 
00078 !
00079 !*       0.2   Declarations of local variables
00080 !              -------------------------------
00081 !
00082 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears 
00083                                     ! at the open of the file in LFI  routines 
00084 INTEGER           :: ILUNAM         ! Logical unit of namelist file
00085 !
00086  CHARACTER(LEN=28) :: YNAMELIST      ! namelist file
00087 !
00088 LOGICAL           :: GFOUND         ! Return code when searching namelist
00089 REAL(KIND=JPRB)   :: ZHOOK_HANDLE
00090 !-------------------------------------------------------------------------------
00091 !
00092 !
00093 IF (LHOOK) CALL DR_HOOK('READ_PREP_TEB_GREENROOF_CONF',0,ZHOOK_HANDLE)
00094 HFILE    = '                         '
00095 HFILETYPE    = '      '
00096 !
00097 HFILEPGD = '                         '
00098 HFILEPGDTYPE = '      '
00099 !
00100 OUNIF    = .FALSE.
00101 !
00102 !-------------------------------------------------------------------------------
00103 !
00104 !* choice of input file
00105 !  --------------------
00106 !
00107 SELECT CASE (HVAR)
00108   CASE ('WG     ','WGI    ')
00109     IF (LEN_TRIM(CFILE_HUG)>0 .AND. LEN_TRIM(CTYPE_HUG)>0 ) THEN
00110       HFILE     = CFILE_HUG
00111       HFILETYPE = CTYPE_HUG
00112     END IF
00113   CASE ('TG     ')
00114     IF (LEN_TRIM(CFILE_TG)>0 .AND. LEN_TRIM(CTYPE_TG)>0 ) THEN
00115       HFILE     = CFILE_TG
00116       HFILETYPE = CTYPE_TG
00117     END IF
00118 END SELECT
00119 !
00120 IF (LEN_TRIM(HFILE)==0 .AND. LEN_TRIM(CFILE_ISBA)>0 .AND. LEN_TRIM(CTYPE)>0) THEN
00121   HFILE     = CFILE_ISBA
00122   HFILETYPE = CTYPE
00123 END IF
00124 !
00125 IF (LEN_TRIM(HFILEPGD)==0 .AND. LEN_TRIM(CFILEPGD_ISBA)>0 .AND. LEN_TRIM(CTYPEPGD)>0) THEN
00126   HFILEPGD     = CFILEPGD_ISBA
00127   HFILEPGDTYPE = CTYPEPGD
00128 END IF
00129 !
00130 !! If no file name in the scheme namelist,
00131 !! try to find a name in NAM_SURF_ATM
00132 !
00133 IF (LEN_TRIM(HFILE)==0) THEN
00134 !
00135  CALL READ_PREP_SURF_ATM_CONF(HPROGRAM,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,&
00136                              HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT)
00137 !
00138 END IF
00139 !
00140 !! If no file name in the scheme namelist,
00141 !! nor in NAM_SURF_ATM, look if ascii input files are present
00142 !
00143 SELECT CASE (HVAR)
00144   CASE ('WG     ','WGI    ')
00145     IF ( LEN_TRIM(CTYPE_HUG )>0       .AND. &
00146            LEN_TRIM(CFILE_HUG_SURF)>0   .AND. &
00147            LEN_TRIM(CFILE_HUG_ROOT)>0   .AND. &
00148            LEN_TRIM(CFILE_HUG_DEEP)>0         ) THEN  
00149        HFILETYPE = CTYPE_HUG 
00150     END IF
00151     IF (HVAR=='WGI    ' .AND. HFILETYPE=='ASCLLV') THEN
00152        OUNIF = .TRUE.
00153        IF (LHOOK) CALL DR_HOOK('READ_PREP_TEB_GREENROOF_CONF',1,ZHOOK_HANDLE)
00154        RETURN
00155     ENDIF
00156   CASE ('TG     ')
00157     IF ( LEN_TRIM(CTYPE_TG )>0       .AND. &
00158            LEN_TRIM(CFILE_TG_SURF)>0   .AND. &
00159            LEN_TRIM(CFILE_TG_ROOT)>0   .AND. &
00160            LEN_TRIM(CFILE_TG_DEEP)>0         ) THEN  
00161        HFILETYPE = CTYPE_TG 
00162     END IF
00163 END SELECT
00164 !
00165 !-------------------------------------------------------------------------------
00166 !
00167 !* Is an uniform field prescribed?
00168 !  ------------------------------
00169 !
00170 SELECT CASE (HVAR)
00171   CASE ('WG     ')
00172     OUNIF = (XHUG_SURF/=XUNDEF) .OR. (XHUG_ROOT/=XUNDEF) .OR. (XHUG_DEEP/=XUNDEF)
00173     IF (OUNIF .AND. (XHUG_SURF==XUNDEF)) THEN
00174        WRITE(KLUOUT,*)'ONE OF XHUG_SURF, XHUG_ROOT OR XHUG_DEEP IS GIVEN'
00175        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XHUG_SURF MUST BE SET')
00176     END IF
00177     IF (OUNIF .AND. (XHUG_ROOT==XUNDEF)) THEN
00178        WRITE(KLUOUT,*)'ONE OF XHUG_SURF, XHUG_ROOT OR XHUG_DEEP IS GIVEN'
00179        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XHUG_ROOT MUST BE SET')
00180     END IF
00181     IF (OUNIF .AND. (XHUG_DEEP==XUNDEF)) THEN
00182        WRITE(KLUOUT,*)'ONE OF XHUG_SURF, XHUG_ROOT OR XHUG_DEEP IS GIVEN'
00183        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XHUG_DEEP MUST BE SET')
00184     END IF
00185      !
00186       CASE ('WGI    ')
00187     OUNIF = (XHUGI_SURF/=XUNDEF) .OR. (XHUGI_ROOT/=XUNDEF) .OR. (XHUGI_DEEP/=XUNDEF)
00188     IF (OUNIF .AND. (XHUGI_SURF==XUNDEF)) THEN
00189        WRITE(KLUOUT,*)'ONE OF XHUGI_SURF, XHUGI_ROOT OR XHUGI_DEEP IS GIVEN'
00190        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XHUGI_SURF MUST BE SET')
00191     END IF
00192     IF (OUNIF .AND. (XHUGI_ROOT==XUNDEF)) THEN
00193        WRITE(KLUOUT,*)'ONE OF XHUGI_SURF, XHUGI_ROOT OR XHUGI_DEEP IS GIVEN'
00194        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XHUGI_ROOT MUST BE SET')
00195     END IF
00196     IF (OUNIF .AND. (XHUGI_DEEP==XUNDEF)) THEN
00197        WRITE(KLUOUT,*)'ONE OF XHUGI_SURF, XHUGI_ROOT OR XHUGI_DEEP IS GIVEN'
00198        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XHUGI_DEEP MUST BE SET')
00199     END IF
00200     !
00201   CASE ('TG     ')
00202     OUNIF = (XTG_SURF/=XUNDEF)  .OR. (XTG_ROOT/=XUNDEF)  .OR. (XTG_DEEP/=XUNDEF)
00203     IF (OUNIF .AND. (XTG_SURF==XUNDEF)) THEN
00204        WRITE(KLUOUT,*)'ONE OF XTG_SURF, XTG_ROOT OR XTG_DEEP IS GIVEN'
00205        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XTG_SURF MUST BE SET')
00206     END IF
00207     IF (OUNIF .AND. (XTG_ROOT==XUNDEF)) THEN
00208        WRITE(KLUOUT,*)'ONE OF XTG_SURF, XTG_ROOT OR XTG_DEEP IS GIVEN'
00209        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XTG_ROOT MUST BE SET')
00210     END IF
00211     IF (OUNIF .AND. (XTG_DEEP==XUNDEF)) THEN
00212        WRITE(KLUOUT,*)'ONE OF XTG_SURF, XTG_ROOT OR XTG_DEEP IS GIVEN'
00213        CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: XTG_DEEP MUST BE SET')
00214     END IF
00215     !
00216 END SELECT
00217 !
00218 !-------------------------------------------------------------------------------
00219 !
00220 !* If no file and no uniform field is prescribed: default values used
00221 !  ---------------------------------------------
00222 !
00223 IF (LEN_TRIM(HFILETYPE)==0 .AND. .NOT. OUNIF) THEN
00224   IF (HVAR(1:2)/='TG' .AND. HVAR(1:2)/='WG') THEN
00225     IF (HVAR(1:2)/='ZS') WRITE(KLUOUT,*) 'NO FILE FOR FIELD ',HVAR, &
00226                                         ': UNIFORM DEFAULT FIELD IS PRESCRIBED'
00227     OUNIF = .TRUE.
00228     IF (LHOOK) CALL DR_HOOK('READ_PREP_TEB_GREENROOF_CONF',1,ZHOOK_HANDLE)
00229     RETURN
00230   ELSE
00231     WRITE(KLUOUT,*) 'AN INPUT FILE OR A UNIFORM VALUE IS REQUIRED FOR FIELD: ',HVAR
00232     WRITE(KLUOUT,*) 'Please complete NAM_PREP_TEB_GREENROOF'
00233     CALL ABOR1_SFX('READ_PREP_TEB_GREENROOF_CONF: AN INPUT FILE OR A UNIFORM VALUE IS REQUIRED FOR '//HVAR)
00234   END IF
00235 END IF
00236 IF (LHOOK) CALL DR_HOOK('READ_PREP_TEB_GREENROOF_CONF',1,ZHOOK_HANDLE)
00237 !-------------------------------------------------------------------------------
00238 !
00239 END SUBROUTINE READ_PREP_TEB_GREENROOF_CONF