SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/init_coupling_surf_tripn.F90
Go to the documentation of this file.
00001 !############################################################################
00002 SUBROUTINE INIT_COUPLING_SURF_TRIP_n(HPROGRAM, KI, KSW, OFLOOD_ISBA, HGRID, &
00003                                        KDIMTAB, PZENITH, PSW_BANDS, PEMIS,    &
00004                                        PTSRAD, PDIR_ALB, PSCA_ALB             )  
00005 !############################################################################
00006 !
00007 !!****  *INIT_COUPLING_SURF_TRIP_n* - routine to test and initialyse the SURFACE-TRIP coupling
00008 !!
00009 !!    PURPOSE
00010 !!    -------
00011 !!
00012 !     For instance, no interpolation between the ISBA and the TRIP grids that
00013 !     must be the same (LAT LON REG 1° or 0.5°). In the near future some
00014 !     interpolation will be added.
00015 !
00016 !!**  METHOD
00017 !!    ------
00018 !!
00019 !!    EXTERNAL
00020 !!    --------
00021 !!
00022 !!
00023 !!    IMPLICIT ARGUMENTS
00024 !!    ------------------
00025 !!
00026 !!    REFERENCE
00027 !!    ---------
00028 !!
00029 !!
00030 !!    AUTHOR
00031 !!    ------
00032 !!      B. Decharme   *Meteo France*    
00033 !!
00034 !!    MODIFICATIONS
00035 !!    -------------
00036 !!      Original    05/2008
00037 !-------------------------------------------------------------------------------
00038 !
00039 !*       0.    DECLARATIONS
00040 !              ------------
00041 !
00042 USE MODE_COUPLING_VAR_SFX_TRIP
00043 !
00044 USE MODI_GET_LUOUT
00045 USE MODI_GET_GRID_CONF_ISBA_n
00046 USE MODI_GET_GRID_CONF_TRIP_n
00047 USE MODI_GET_CONF_TRIP_n
00048 !
00049 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00050 USE PARKIND1  ,ONLY : JPRB
00051 !
00052 USE MODI_ABOR1_SFX
00053 !
00054 USE MODI_UPDATE_ESM_SURF_ATM_n
00055 !
00056 IMPLICIT NONE
00057 !
00058 !*       0.1   Declarations of arguments
00059 !              -------------------------
00060 !
00061  CHARACTER(LEN=6),                 INTENT(IN)  :: HPROGRAM    ! program calling surf. schemes
00062  CHARACTER(LEN=10),                INTENT(IN)  :: HGRID       
00063 LOGICAL,                          INTENT(IN)  :: OFLOOD_ISBA
00064 INTEGER,                          INTENT(IN)  :: KDIMTAB
00065 INTEGER,                          INTENT(IN)  :: KI         ! Surfex grid dimension
00066 INTEGER,                          INTENT(IN)  :: KSW        ! Number of spectral bands
00067 !
00068 REAL,             DIMENSION(KI),  INTENT(IN)  :: PZENITH   ! solar zenithal angle
00069 REAL,             DIMENSION(KSW), INTENT(IN)  :: PSW_BANDS ! middle wavelength of each band
00070 REAL,             DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB  ! direct albedo for each band
00071 REAL,             DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB  ! diffuse albedo for each band
00072 REAL,             DIMENSION(KI),  INTENT(OUT) :: PEMIS     ! emissivity
00073 REAL,             DIMENSION(KI),  INTENT(OUT) :: PTSRAD    ! radiative temperature
00074 !
00075 !*       0.2   Declarations of local variables
00076 !              -------------------------------
00077 !
00078 ! 1D TRIP Dimension
00079 !
00080 REAL, DIMENSION(:), ALLOCATABLE      :: ZTRIP_FFLOOD    ! Flooded fraction for ISBA (-)
00081 REAL, DIMENSION(:), ALLOCATABLE      :: ZTRIP_PIFLOOD   ! Flood potential infiltration for ISBA (kg/m2/s)
00082 !
00083 ! 1D SFX Dimension
00084 !
00085 REAL, DIMENSION(:), ALLOCATABLE      :: ZSFX_FFLOOD    ! Flooded fraction for ISBA (-)
00086 REAL, DIMENSION(:), ALLOCATABLE      :: ZSFX_PIFLOOD   ! Flood potential infiltration for ISBA (kg/m2/s)
00087 !
00088 ! Other
00089 !
00090 LOGICAL :: LFLOOD_TRIP
00091 !
00092 REAL    :: ZLONMIN_ISBA
00093 REAL    :: ZLONMIN_TRIP
00094 REAL    :: ZLONMAX_ISBA
00095 REAL    :: ZLONMAX_TRIP
00096 REAL    :: ZLATMIN_ISBA
00097 REAL    :: ZLATMIN_TRIP
00098 REAL    :: ZLATMAX_ISBA
00099 REAL    :: ZLATMAX_TRIP
00100 REAL    :: ZRES_ISBA
00101 REAL    :: ZRES_TRIP
00102 REAL    :: ZT_COUPLING
00103 !
00104 INTEGER :: ICOMP_TRIP
00105 INTEGER :: ICOMP_ISBA
00106 !
00107 INTEGER :: ILON_ISBA
00108 INTEGER :: ILON_TRIP
00109 INTEGER :: ILAT_ISBA
00110 INTEGER :: ILAT_TRIP
00111 !
00112 INTEGER :: ILUOUT, JL, INI
00113 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00114 !
00115 !-------------------------------------------------------------------------------
00116 !
00117 IF (LHOOK) CALL DR_HOOK('INIT_COUPLING_SURF_TRIP_N',0,ZHOOK_HANDLE)
00118  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00119 !
00120 !*       1.0   Test ISBA - TRIP option compatibility
00121 !              -------------------------------------
00122 !
00123  CALL GET_CONF_TRIP_n(LFLOOD_TRIP,ZT_COUPLING)
00124 !
00125 ICOMP_TRIP=0
00126 IF(LFLOOD_TRIP)ICOMP_TRIP=1
00127 !
00128 ICOMP_ISBA=0
00129 IF(OFLOOD_ISBA)ICOMP_ISBA=1
00130 !
00131 IF(ICOMP_TRIP/=ICOMP_ISBA)THEN
00132   WRITE(ILUOUT,*)'INIT_COUPLING_SURF_TRIPN: IN TRIP LFLOODT = ',LFLOOD_TRIP
00133   WRITE(ILUOUT,*)'INIT_COUPLING_SURF_TRIPN: IN ISBA LFLOOD  = ',OFLOOD_ISBA
00134   CALL ABOR1_SFX('INIT_COUPLING_SURF_TRIPN: ERROR OF (DE)ACTIVATION OF FLOODING SCHEME')
00135 ENDIF
00136 !
00137 !*       2.0   Test ISBA - TRIP grid compatibility
00138 !              -------------------------------------
00139 !
00140 IF(HGRID/="LONLAT REG")THEN
00141   CALL ABOR1_SFX('INIT_COUPLING_SURF_TRIPN: ISBA-TRIP REQUIRE LONLAT REG GRID')
00142 ENDIF
00143 !
00144  CALL GET_GRID_CONF_ISBA_n(ZLONMIN_ISBA,ZLONMAX_ISBA,ZLATMIN_ISBA,ZLATMAX_ISBA,ILON_ISBA,ILAT_ISBA,JL)
00145 ZRES_ISBA = (ZLONMAX_ISBA - ZLONMIN_ISBA) / ILON_ISBA
00146 !
00147  CALL GET_GRID_CONF_TRIP_n(ZLONMIN_TRIP,ZLONMAX_TRIP,ZLATMIN_TRIP,ZLATMAX_TRIP,ZRES_TRIP,ILON_TRIP,ILAT_TRIP)
00148 !
00149 IF(ZRES_TRIP/=ZRES_ISBA)THEN
00150   WRITE(ILUOUT,*)'INIT_COUPLING_SURF_TRIPN: TRIP RESOLUTION = ',ZRES_TRIP
00151   WRITE(ILUOUT,*)'INIT_COUPLING_SURF_TRIPN: ISBA RESOLUTION = ',ZRES_ISBA
00152   CALL ABOR1_SFX('INIT_COUPLING_SURF_TRIPN: ISBA AND TRIP REQUIRE SAME RESOLUTION GRID')
00153 ENDIF
00154 !
00155 IF(ZLONMIN_ISBA/=ZLONMIN_TRIP.OR.ZLONMAX_ISBA/=ZLONMAX_TRIP)THEN
00156    CALL ABOR1_SFX('INIT_COUPLING_SURF_TRIPN: WRONG CONFIGURATION FOR LONGITUDE')
00157 ENDIF
00158 !
00159 IF(ZLATMIN_ISBA/=ZLATMIN_TRIP.OR.ZLATMAX_ISBA/=ZLATMAX_TRIP)THEN
00160   CALL ABOR1_SFX('INIT_COUPLING_SURF_TRIPN: WRONG CONFIGURATION FOR LATITUDE')
00161 ENDIF        
00162 !
00163 !
00164 !
00165 !  
00166 !*       3.0   Initialyse ISBA - TRIP variable
00167 !              -------------------------------
00168 !
00169 IF(OFLOOD_ISBA.AND.LFLOOD_TRIP)THEN
00170 !
00171   INI=ILON_TRIP*ILAT_TRIP
00172 !
00173   ALLOCATE(ZTRIP_FFLOOD   (INI))
00174   ALLOCATE(ZTRIP_PIFLOOD  (INI))
00175 !  
00176   ALLOCATE(ZSFX_FFLOOD   (KI))
00177   ALLOCATE(ZSFX_PIFLOOD  (KI))
00178 !  
00179 ! in TRIP dimension INI
00180   CALL GET_COUPLING_VAR_TRIP_n(ZTRIP_FFLOOD(:),ZTRIP_PIFLOOD(:))
00181 !  
00182 !   Interpolation from TRIP grid to SFX grid
00183     IF(KI==INI)THEN
00184       ZSFX_FFLOOD (:) = ZTRIP_FFLOOD (:)
00185       ZSFX_PIFLOOD(:) = ZTRIP_PIFLOOD(:)
00186     ELSE
00187       CALL ABOR1_SFX('COUPLING_SURF_TRIPN: TRIP and SFX are not on the same grid')    
00188     ENDIF
00189 !
00190     WHERE(ZSFX_FFLOOD (:)<0.01)
00191           ZSFX_FFLOOD (:)=0.0
00192           ZSFX_PIFLOOD(:)=0.0
00193     ENDWHERE
00194 !    
00195   CALL PUT_COUPLING_VAR_SFX_n(ZSFX_FFLOOD,ZSFX_PIFLOOD,PTSTEP=ZT_COUPLING)
00196 ! 
00197   DEALLOCATE(ZTRIP_FFLOOD )
00198   DEALLOCATE(ZTRIP_PIFLOOD)
00199   DEALLOCATE(ZSFX_FFLOOD  )
00200   DEALLOCATE(ZSFX_PIFLOOD )
00201 !
00202   CALL UPDATE_ESM_SURF_ATM_n(HPROGRAM, KI, KSW, PZENITH, PSW_BANDS,   &
00203                                PTSRAD, PDIR_ALB, PSCA_ALB, PEMIS        )  
00204 !
00205 ENDIF
00206 IF (LHOOK) CALL DR_HOOK('INIT_COUPLING_SURF_TRIP_N',1,ZHOOK_HANDLE)
00207 !   
00208 !-------------------------------------------------------------------------------
00209 !
00210 END SUBROUTINE INIT_COUPLING_SURF_TRIP_n