SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE PREP_COUPLING_SURF_TRIP(HPROGRAM,KNI,OFLOOD_ISBA,HGRID) 00003 ! ################################################################## 00004 ! 00005 !!**** *PREP_COUPLING_SURF_TRIP* - routine to prepare the SURFACE-TRIP coupling 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 !! B. Decharme *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 05/2008 00031 !------------------------------------------------------------------------------- 00032 ! 00033 !* 0. DECLARATIONS 00034 ! ------------ 00035 ! 00036 USE MODI_GET_GRID_CONF_ISBA_n 00037 USE MODI_READ_NAM_GRID_TRIP 00038 USE MODI_GET_GRID_CONF_TRIP_n 00039 ! 00040 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00041 USE PARKIND1 ,ONLY : JPRB 00042 ! 00043 USE MODI_ABOR1_SFX 00044 ! 00045 USE MODI_GET_LUOUT 00046 IMPLICIT NONE 00047 ! 00048 !* 0.1 Declarations of arguments 00049 ! ------------------------- 00050 ! 00051 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00052 CHARACTER(LEN=10), INTENT(IN) :: HGRID 00053 LOGICAL, INTENT(IN) :: OFLOOD_ISBA 00054 INTEGER, INTENT(IN) :: KNI ! Surfex grid dimension 00055 ! 00056 !* 0.2 Declarations of local variables 00057 ! ------------------------------- 00058 ! 00059 LOGICAL :: LFLOOD_TRIP 00060 ! 00061 REAL :: ZLONMIN_ISBA 00062 REAL :: ZLONMIN_TRIP 00063 REAL :: ZLONMAX_ISBA 00064 REAL :: ZLONMAX_TRIP 00065 REAL :: ZLATMIN_ISBA 00066 REAL :: ZLATMIN_TRIP 00067 REAL :: ZLATMAX_ISBA 00068 REAL :: ZLATMAX_TRIP 00069 REAL :: ZRES_ISBA 00070 REAL :: ZRES_TRIP 00071 ! 00072 INTEGER :: ICOMP_TRIP 00073 INTEGER :: ICOMP_ISBA 00074 ! 00075 INTEGER :: ILON_ISBA 00076 INTEGER :: ILON_TRIP 00077 INTEGER :: ILAT_ISBA 00078 INTEGER :: ILAT_TRIP 00079 ! 00080 INTEGER :: ILUOUT, JL, K, I, J 00081 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00082 ! 00083 !------------------------------------------------------------------------------- 00084 ! 00085 IF (LHOOK) CALL DR_HOOK('PREP_COUPLING_SURF_TRIP',0,ZHOOK_HANDLE) 00086 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00087 ! 00088 !* 1.0 Test ISBA - TRIP grid compatibility 00089 ! ------------------------------------- 00090 ! 00091 IF(HGRID/="LONLAT REG")THEN 00092 CALL ABOR1_SFX('PREP_COUPLING_SURF_TRIPN: ISBA-TRIP REQUIRE LONLAT REG GRID') 00093 ENDIF 00094 ! 00095 CALL READ_NAM_GRID_TRIP(HPROGRAM) 00096 CALL GET_GRID_CONF_TRIP_n(ZLONMIN_TRIP,ZLONMAX_TRIP,ZLATMIN_TRIP,ZLATMAX_TRIP,ZRES_TRIP,ILON_TRIP,ILAT_TRIP) 00097 ! 00098 CALL GET_GRID_CONF_ISBA_n(ZLONMIN_ISBA,ZLONMAX_ISBA,ZLATMIN_ISBA,ZLATMAX_ISBA,ILON_ISBA,ILAT_ISBA,JL) 00099 ZRES_ISBA = (ZLONMAX_ISBA - ZLONMIN_ISBA) / ILON_ISBA 00100 ! 00101 IF(ZRES_TRIP/=ZRES_ISBA)THEN 00102 WRITE(ILUOUT,*)'PREP_COUPLING_SURF_TRIPN: TRIP RESOLUTION = ',ZRES_TRIP 00103 WRITE(ILUOUT,*)'PREP_COUPLING_SURF_TRIPN: ISBA RESOLUTION = ',ZRES_ISBA 00104 CALL ABOR1_SFX('PREP_COUPLING_SURF_TRIPN: ISBA AND TRIP REQUIRE SAME RESOLUTION GRID') 00105 ENDIF 00106 ! 00107 IF(ZLONMIN_ISBA/=ZLONMIN_TRIP.OR.ZLONMAX_ISBA/=ZLONMAX_TRIP)THEN 00108 CALL ABOR1_SFX('PREP_COUPLING_SURF_TRIPN: WRONG CONFIGURATION FOR LONGITUDE') 00109 ENDIF 00110 ! 00111 IF(ZLATMIN_ISBA/=ZLATMIN_TRIP.OR.ZLATMAX_ISBA/=ZLATMAX_TRIP)THEN 00112 CALL ABOR1_SFX('PREP_COUPLING_SURF_TRIPN: WRONG CONFIGURATION FOR LATITUDE') 00113 ENDIF 00114 ! 00115 IF (LHOOK) CALL DR_HOOK('PREP_COUPLING_SURF_TRIP',1,ZHOOK_HANDLE) 00116 !------------------------------------------------------------------------------- 00117 ! 00118 END SUBROUTINE PREP_COUPLING_SURF_TRIP