SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_ideal_flux_conf.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_IDEAL_FLUX_CONF(HPROGRAM)
00003 !     #######################################################
00004 !
00005 !!****  *READ_IDEAL_FLUX_CONF* - routine to read the configuration for ideal flux option
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 USE MODD_SURF_PAR,   ONLY : XUNDEF
00037 USE MODD_CSTS,       ONLY : XDAY, XLVTT
00038 !
00039 USE MODE_POS_SURF
00040 !
00041 USE MODI_ABOR1_SFX
00042 USE MODI_TEST_NAM_VAR_SURF
00043 USE MODI_GET_LUOUT
00044 USE MODI_OPEN_NAMELIST
00045 USE MODI_CLOSE_NAMELIST
00046 !
00047 USE MODN_IDEAL_FLUX
00048 !
00049 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00050 USE PARKIND1  ,ONLY : JPRB
00051 !
00052 USE MODI_ABOR1_SFX
00053 IMPLICIT NONE
00054 !
00055 !*       0.1   Declarations of arguments
00056 !              -------------------------
00057 !
00058  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling GROUND
00059 !
00060 !*       0.2   Declarations of local variables
00061 !        -------------------------------
00062 !
00063 LOGICAL           :: GFOUND         ! Return code when searching namelist
00064 INTEGER           :: ILUOUT         ! logical unit of output file
00065 INTEGER           :: INAM           ! logical unit of namelist file
00066 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00067 !-------------------------------------------------------------------------------
00068 !
00069 !* get output listing file logical unit
00070 !
00071 IF (LHOOK) CALL DR_HOOK('READ_IDEAL_FLUX_CONF',0,ZHOOK_HANDLE)
00072  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00073 !
00074 !* open namelist file
00075 !
00076  CALL OPEN_NAMELIST(HPROGRAM,INAM)
00077 !
00078 CSFTQ='kg/m2/s'
00079 !
00080 !* reading of namelist
00081 !  -------------------
00082 !
00083  CALL POSNAM(INAM,'NAM_IDEAL_FLUX',GFOUND,ILUOUT)
00084 IF (GFOUND) READ(UNIT=INAM,NML=NAM_IDEAL_FLUX)
00085 !
00086 IF (NFORCF.GT.NFORC_MAX .OR. NFORCT.GT.NFORC_MAX) &
00087   CALL ABOR1_SFX("READ_IDEAL_FLUX_CONF: NFORCF AND NFORCT MUST BE LOWER THAN 48")
00088 !
00089  CALL TEST_NAM_VAR_SURF(ILUOUT,'CUSTARTYPE',CUSTARTYPE,'Z0   ','USTAR')
00090  CALL TEST_NAM_VAR_SURF(ILUOUT,'CSFTQ',CSFTQ,'kg/m2/s','W/m2   ')
00091 !
00092 !* close namelist file
00093 !
00094  CALL CLOSE_NAMELIST(HPROGRAM,INAM)
00095 !
00096 IF (CUSTARTYPE=='Z0   ' .AND. XZ0==XUNDEF) THEN
00097   CALL ABOR1_SFX(     &
00098   'FATAL ERROR : XZ0 must be prescribed in namelist NAM_IDEAL_FLUX if CUSTARTYPE="Z0   "')
00099 END IF
00100 
00101 IF (CSFTQ=='W/m2   ') THEN
00102   XSFTQ=XSFTQ/XLVTT
00103 END IF
00104 !
00105 IF (LHOOK) CALL DR_HOOK('READ_IDEAL_FLUX_CONF',1,ZHOOK_HANDLE)
00106 !-------------------------------------------------------------------------------
00107 !
00108 END SUBROUTINE READ_IDEAL_FLUX_CONF