SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_flake_confn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_FLAKE_CONF_n(HPROGRAM)
00003 !     #############################################################
00004 !
00005 !!****  *READ_FLAKE_CONF* - reads the configuration for FLAKE
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      V. Masson   *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    01/2003 
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 !
00036 !
00037 USE MODE_MODELN_SURFEX_HANDLER
00038 !
00039 USE MODE_POS_SURF
00040 !
00041 USE MODI_TEST_NAM_VAR_SURF
00042 USE MODI_GET_LUOUT
00043 USE MODI_OPEN_NAMELIST
00044 USE MODI_CLOSE_NAMELIST
00045 !
00046 USE MODN_FLAKE_n
00047 USE MODD_DIAG_MISC_FLAKE_n,    ONLY : XZW_PROFILE, XTW_PROFILE
00048 !
00049 USE MODD_READ_NAMELIST, ONLY : LNAM_READ
00050 USE MODD_SURF_PAR,   ONLY : XUNDEF
00051 !
00052 !
00053 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00054 USE PARKIND1  ,ONLY : JPRB
00055 !
00056 USE MODI_ABOR1_SFX
00057 IMPLICIT NONE
00058 !
00059 !*       0.1   Declarations of arguments
00060 !              -------------------------
00061 !
00062  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling ISBA
00063 
00064 !
00065 !*       0.2   Declarations of local variables
00066 !              -------------------------------
00067 !
00068 LOGICAL           :: GFOUND         ! Return code when searching namelist
00069 INTEGER           :: ILUOUT         ! logical unit of output file
00070 INTEGER           :: INAM           ! logical unit of namelist file
00071 INTEGER           :: IMI
00072 INTEGER           :: ILU
00073 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00074 !
00075 !-------------------------------------------------------------------------------
00076 !
00077 !* get output listing file logical unit
00078 !
00079 !
00080 IF (LHOOK) CALL DR_HOOK('READ_FLAKE_CONF_N',0,ZHOOK_HANDLE)
00081  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00082 !
00083 IMI=GET_CURRENT_MODEL_INDEX_SURFEX()
00084 !
00085 IF (IMI.NE.-1 .AND. LNAM_READ) THEN
00086  CALL INIT_NAM_FLAKEn
00087  CALL INIT_NAM_DIAG_SURFn
00088  CALL INIT_NAM_DIAG_FLAKEn
00089  CALL INIT_NAM_CH_WATFLUXn
00090 ENDIF
00091 !
00092 IF (LNAM_READ) THEN
00093         
00094  !* open namelist file
00095  !
00096  CALL OPEN_NAMELIST(HPROGRAM,INAM)
00097  !
00098  !* reading of namelist
00099  !  -------------------
00100  !
00101  CALL POSNAM(INAM,'NAM_FLAKEN',GFOUND,ILUOUT)
00102  IF (GFOUND) READ(UNIT=INAM,NML=NAM_FLAKEn)
00103  !
00104  CALL TEST_NAM_VAR_SURF(ILUOUT,'CSNOW_FLK',CSNOW_FLK,'DEF')
00105  CALL TEST_NAM_VAR_SURF(ILUOUT,'CFLK_FLUX',CFLK_FLUX,'DEF  ','FLAKE','ECUME')
00106  CALL TEST_NAM_VAR_SURF(ILUOUT,'CFLK_ALB',CFLK_ALB,'UNIF','TA96')
00107  !
00108  CALL POSNAM(INAM,'NAM_DIAG_SURFN',GFOUND,ILUOUT)
00109  IF (GFOUND) READ(UNIT=INAM,NML=NAM_DIAG_SURFn)
00110  CALL POSNAM(INAM,'NAM_DIAG_FLAKEN',GFOUND,ILUOUT)
00111  IF (GFOUND) READ(UNIT=INAM,NML=NAM_DIAG_FLAKEn)
00112  IF (LWATER_PROFILE .AND. count (XZWAT_PROFILE /= XUNDEF) == 0) &
00113         CALL ABOR1_SFX("XZWAT_PROFILE MUST BE DEFINED IN NAMELIST NAM_DIAG_FLAKEN IF LWATER_PROFILE=T")
00114  CALL POSNAM(INAM,'NAM_CH_WATFLUXN',GFOUND,ILUOUT)
00115  IF (GFOUND) READ(UNIT=INAM,NML=NAM_CH_WATFLUXn)
00116 !
00117  CALL TEST_NAM_VAR_SURF(ILUOUT,'CCH_DRY_DEP',CCH_DRY_DEP,'      ','WES89 ','NONE  ')
00118  !
00119  !* close namelist file
00120  !
00121  CALL CLOSE_NAMELIST(HPROGRAM,INAM)
00122  !
00123 ENDIF
00124 !
00125 IF (IMI.NE.-1) THEN
00126  CALL UPDATE_NAM_FLAKEn
00127  CALL UPDATE_NAM_DIAG_SURFn
00128  CALL UPDATE_NAM_DIAG_FLAKEn
00129  CALL UPDATE_NAM_CH_WATFLUXn
00130 ENDIF
00131 !
00132 !-------------------------------------------------------------------------------
00133 !
00134 !* surface time-step forced by the atmosphere
00135 !
00136 XTSTEP = XUNDEF
00137 IF (LHOOK) CALL DR_HOOK('READ_FLAKE_CONF_N',1,ZHOOK_HANDLE)
00138 !
00139 !-------------------------------------------------------------------------------
00140 !
00141 END SUBROUTINE READ_FLAKE_CONF_n