SURFEX v7.3
General documentation of Surfex
|
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