SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TOPD/coupling_surf_topd.F90
Go to the documentation of this file.
00001 !###################################################################
00002 SUBROUTINE COUPLING_SURF_TOPD (HPROGRAM,KI)
00003 !###################################################################
00004 !
00005 !!****  *COUPLING_SURF_TOPD*  
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!   
00010 !!    Driver for the coupling between SURFEX and TOPODYN
00011 !!      
00012 !!    REFERENCE
00013 !!    ---------
00014 !!    *COUPLING_SURF_TRIP from B. Decharme
00015 !!      
00016 !!    AUTHOR
00017 !!    ------
00018 !!      B. Vincendon    
00019 !!
00020 !!    MODIFICATIONS
00021 !!    -------------
00022 !!      Original    07/06/11 
00023 !-------------------------------------------------------------------------------
00024 !
00025 !*       0.     DECLARATIONS
00026 !               ------------
00027 !
00028 USE MODI_GET_LUOUT
00029 USE MODI_COUPL_TOPD
00030 USE MODI_ROUT_DATA_ISBA
00031 USE MODI_BUDGET_COUPL_ROUT
00032 USE MODI_WRITE_DISCHARGE_FILE
00033 USE MODI_WRITE_BUDGET_COUPL_ROUT
00034 USE MODI_PREP_RESTART_COUPL_TOPD
00035 !
00036 USE MODD_TOPODYN,       ONLY : XQTOT, NNB_TOPD_STEP, XQB_RUN, XQB_DR
00037 USE MODD_COUPLING_TOPD, ONLY : LCOUPL_TOPD, LBUDGET_TOPD, NNB_TOPD, LTOPD_STEP, NTOPD_STEP, &
00038                                  NYEAR,NMONTH,NDAY,NH,NM
00039 !
00040 USE MODD_ISBA_n,          ONLY : CRUNOFF
00041 !
00042 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00043 USE PARKIND1  ,ONLY : JPRB
00044 !
00045 IMPLICIT NONE
00046 !
00047 !*      0.1    declarations of arguments
00048 !
00049  CHARACTER(LEN=6), INTENT(IN)         :: HPROGRAM ! program calling surf. schemes
00050 INTEGER,          INTENT(IN)         :: KI       ! Surfex grid dimension
00051                                                  ! in a forcing iteration
00052 !
00053 !*      0.2    declarations of local variables
00054 !
00055  CHARACTER(LEN=3)              :: YSTEP    ! time stepsurf_tmp/off
00056 INTEGER                       :: ILUOUT   ! unit of output listing file
00057 INTEGER                       :: JJ       ! loop control
00058 !
00059 REAL, DIMENSION(KI)           :: ZDG_FULL
00060 REAL, DIMENSION(KI)           :: ZWG2_FULL,ZWG3_FULL,ZDG2_FULL,ZDG3_FULL
00061 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00062 !-------------------------------------------------------------------------------
00063 IF (LHOOK) CALL DR_HOOK('COUPLING_SURF_TOPD',0,ZHOOK_HANDLE)
00064 !
00065  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00066 !
00067 IF ( .NOT.LCOUPL_TOPD ) THEN
00068   IF (LHOOK) CALL DR_HOOK('COUPLING_SURF_TOPD',1,ZHOOK_HANDLE)
00069   RETURN
00070 ENDIF
00071   !
00072 IF ( LTOPD_STEP ) THEN
00073   !
00074   ! * 1. Calling coupling or routing
00075   !
00076   IF (NTOPD_STEP<10) THEN
00077     WRITE(YSTEP,'(I1)') NTOPD_STEP
00078   ELSEIF (NTOPD_STEP < 100) THEN
00079     WRITE(YSTEP,'(I2)') NTOPD_STEP
00080   ELSE
00081     WRITE(YSTEP,'(I3)') NTOPD_STEP
00082   ENDIF
00083   !
00084   write(*,*) 'pas de temps coupl ',YSTEP
00085   !
00086   IF (CRUNOFF=='TOPD') THEN
00087     CALL COUPL_TOPD(HPROGRAM,YSTEP,KI,NTOPD_STEP)
00088   ELSE
00089     CALL ROUT_DATA_ISBA(HPROGRAM,KI,NTOPD_STEP)
00090   ENDIF
00091   !
00092   IF (LBUDGET_TOPD) CALL BUDGET_COUPL_ROUT(KI,NTOPD_STEP)
00093   !
00094 ENDIF! (LCOUPL_TOPD.AND......
00095 !
00096 IF (LHOOK) CALL DR_HOOK('COUPLING_SURF_TOPD',1,ZHOOK_HANDLE)
00097 !-------------------------------------------------------------------------------
00098 END SUBROUTINE COUPLING_SURF_TOPD