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