SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/compare_orography.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE COMPARE_OROGRAPHY (HPROGRAM, OSURFZS, PDELT_ZSMAX              )
00003 !**************************************************************************
00004 !
00005 !!    PURPOSE
00006 !!    -------
00007 !!        Check consistency orographies read from forcing file and from initial file
00008 !!
00009 !!**  METHOD
00010 !!    ------
00011 !!
00012 !!    EXTERNAL
00013 !!    --------
00014 !!
00015 !!    IMPLICIT ARGUMENTS
00016 !!    ------------------
00017 !!
00018 !!    REFERENCE
00019 !!    ---------
00020 !!
00021 !!
00022 !!    AUTHOR
00023 !!    ------
00024 !!      P. Le Moigne   *Meteo France*   
00025 !!
00026 !
00027 USE MODI_INIT_IO_SURF_n
00028 USE MODI_READ_SURF
00029 USE MODI_END_IO_SURF_n
00030 USE MODI_GET_LUOUT
00031 USE MODD_SURF_PAR,   ONLY : XUNDEF
00032 USE MODD_FORC_ATM,   ONLY : XZS
00033 USE MODD_SURF_CONF,  ONLY : CPROGNAME
00034 !         
00035 USE MODI_SET_SURFEX_FILEIN
00036 !
00037 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00038 USE PARKIND1  ,ONLY : JPRB
00039 !
00040 USE MODI_ABOR1_SFX
00041 !
00042 IMPLICIT NONE
00043 !
00044 ! global variables
00045  CHARACTER(LEN=6)    ,INTENT(IN)  :: HPROGRAM
00046 REAL                ,INTENT(IN)  :: PDELT_ZSMAX
00047 LOGICAL             ,INTENT(IN)  :: OSURFZS
00048 
00049 ! local variables
00050 INTEGER                          :: ILUOUT
00051 INTEGER                          :: IRET
00052 REAL, DIMENSION(SIZE(XZS,1))     :: ZS1       ! orography read from FORCING.nc
00053 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00054 !
00055 IF (LHOOK) CALL DR_HOOK('COMPARE_OROGRAPHY',0,ZHOOK_HANDLE)
00056 CPROGNAME = HPROGRAM
00057 !
00058 ! read orography
00059 ! 
00060 !  orography from initial file
00061  CALL SET_SURFEX_FILEIN(HPROGRAM,'PGD ') ! change input file name to pgd name
00062  CALL INIT_IO_SURF_n(HPROGRAM,'FULL  ','SURF  ','READ ')
00063  CALL READ_SURF(HPROGRAM,'ZS', ZS1, IRET)
00064  CALL END_IO_SURF_n(HPROGRAM)
00065  CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! restore input file name
00066 !
00067 IF (OSURFZS) THEN
00068   CALL GET_LUOUT('ASCII ',ILUOUT)
00069   WRITE(ILUOUT,*)' OROGRAPHY READ FROM INITIAL FILE'
00070   XZS(:) = ZS1(:)
00071 ELSEIF (MAXVAL(ABS(XZS(:)-ZS1(:))) > PDELT_ZSMAX) THEN
00072   CALL GET_LUOUT('ASCII ',ILUOUT)
00073   WRITE(ILUOUT,*)' DIFFERENCE OF OROGRAPHY TOO BIG BETWEEN FORCING AND INITIAL FILE'
00074   WRITE(ILUOUT,*)' Maximum orography difference allowed (m) : ', PDELT_ZSMAX
00075   WRITE(ILUOUT,*)' Maximum orography difference         (m) : ', MAXVAL(ABS(XZS(:)-ZS1(:)))
00076   CALL ABOR1_SFX('COMPARE_OROGRAPHY: DIFFERENCE OF OROGRAPHY TOO BIG BETWEEN FORCING AND INITIAL FILE')
00077 ENDIF
00078 !
00079 IF (LHOOK) CALL DR_HOOK('COMPARE_OROGRAPHY',1,ZHOOK_HANDLE)
00080 !
00081 END SUBROUTINE COMPARE_OROGRAPHY