|
SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DIAG_CPL_ESM_ISBA(PTSTEP,PCPL_DRAIN,PCPL_RUNOFF,PCPL_EFLOOD, & 00003 PCPL_PFLOOD,PCPL_IFLOOD,PCPL_ICEFLUX ) 00004 ! ##################################################################### 00005 ! 00006 !!**** *DIAG_CPL_ESM_ISBA* 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 ! 00011 ! 00012 !!** METHOD 00013 !! ------ 00014 ! 00015 !! EXTERNAL 00016 !! -------- 00017 !! 00018 !! none 00019 !! 00020 !! IMPLICIT ARGUMENTS 00021 !! ------------------ 00022 !! 00023 !! 00024 !! REFERENCE 00025 !! --------- 00026 !! 00027 !! 00028 !! AUTHOR 00029 !! ------ 00030 !! 00031 !! B. Decharme * Meteo-France * 00032 !! 00033 !! MODIFICATIONS 00034 !! ------------- 00035 !! 00036 !------------------------------------------------------------------------------- 00037 ! 00038 !* 0. DECLARATIONS 00039 ! ------------ 00040 ! 00041 USE MODD_CSTS, ONLY : XLVTT, XRHOLW 00042 USE MODD_ISBA_GRID_n, ONLY : XMESH_SIZE 00043 USE MODD_ISBA_n, ONLY : XPATCH, XCPL_EFLOOD, XCPL_PFLOOD, & 00044 XCPL_IFLOOD, XCPL_DRAIN, XCPL_RUNOFF, & 00045 XFFLOOD, XPIFLOOD, XTSTEP_COUPLING, & 00046 XCPL_ICEFLUX, LFLOOD, LGLACIER 00047 ! 00048 ! 00049 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00050 USE PARKIND1 ,ONLY : JPRB 00051 ! 00052 IMPLICIT NONE 00053 ! 00054 !* 0.1 declarations of arguments 00055 ! 00056 REAL, INTENT(IN) :: PTSTEP 00057 REAL, DIMENSION(:,:), INTENT(IN) :: PCPL_DRAIN 00058 REAL, DIMENSION(:,:), INTENT(IN) :: PCPL_RUNOFF 00059 REAL, DIMENSION(:,:), INTENT(IN) :: PCPL_EFLOOD 00060 REAL, DIMENSION(:,:), INTENT(IN) :: PCPL_PFLOOD 00061 REAL, DIMENSION(:,:), INTENT(IN) :: PCPL_IFLOOD 00062 REAL, DIMENSION(:,:), INTENT(IN) :: PCPL_ICEFLUX 00063 ! 00064 !* 0.2 declarations of local variables 00065 ! 00066 INTEGER :: JPATCH ! tile loop counter 00067 REAL, DIMENSION(SIZE(XPATCH,1)) :: ZSUMPATCH 00068 REAL, DIMENSION(SIZE(XPATCH,1)) :: ZBUDGET 00069 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00070 ! 00071 !------------------------------------------------------------------------------- 00072 ! Initialize and allocate local variable 00073 !------------------------------------------------------------------------------- 00074 ! 00075 IF (LHOOK) CALL DR_HOOK('DIAG_CPL_ESM_ISBA',0,ZHOOK_HANDLE) 00076 ZSUMPATCH(:) = 0. 00077 DO JPATCH=1,SIZE(XPATCH,2) 00078 ZSUMPATCH(:) = ZSUMPATCH(:) + XPATCH(:,JPATCH) 00079 END DO 00080 ! 00081 !* update ISBA - TRIP or NEMO coupling variable 00082 ! ------------------------------------ 00083 ! 00084 !kg/mē 00085 DO JPATCH=1,SIZE(XPATCH,2) 00086 WHERE (ZSUMPATCH(:) > 0.) 00087 XCPL_DRAIN (:) = XCPL_DRAIN (:) + PTSTEP * MAX(PCPL_DRAIN (:,JPATCH),0.0) * XPATCH(:,JPATCH)/ZSUMPATCH(:) 00088 XCPL_RUNOFF(:) = XCPL_RUNOFF(:) + PTSTEP * MAX(PCPL_RUNOFF(:,JPATCH),0.0) * XPATCH(:,JPATCH)/ZSUMPATCH(:) 00089 END WHERE 00090 END DO 00091 ! 00092 !kg/mē 00093 IF(LGLACIER)THEN 00094 DO JPATCH=1,SIZE(XPATCH,2) 00095 WHERE (ZSUMPATCH(:) > 0.) 00096 XCPL_ICEFLUX(:) = XCPL_ICEFLUX(:) + PTSTEP * MAX(PCPL_ICEFLUX(:,JPATCH),0.0) * XPATCH(:,JPATCH)/ZSUMPATCH(:) 00097 END WHERE 00098 END DO 00099 ENDIF 00100 ! 00101 IF(LFLOOD)THEN 00102 ! 00103 !* update the Floodplains diagnostics for the coupling with TRIP ! 00104 ! --------------------------------------------------------------- 00105 ! 00106 ! kg/mē 00107 DO JPATCH=1,SIZE(XPATCH,2) 00108 WHERE (ZSUMPATCH(:) > 0.) 00109 XCPL_EFLOOD (:) = XCPL_EFLOOD (:) + PTSTEP * PCPL_EFLOOD (:,JPATCH)*XPATCH(:,JPATCH)/ZSUMPATCH(:) 00110 XCPL_PFLOOD (:) = XCPL_PFLOOD (:) + PTSTEP * PCPL_PFLOOD (:,JPATCH)*XPATCH(:,JPATCH)/ZSUMPATCH(:) 00111 XCPL_IFLOOD (:) = XCPL_IFLOOD (:) + PTSTEP * PCPL_IFLOOD (:,JPATCH)*XPATCH(:,JPATCH)/ZSUMPATCH(:) 00112 END WHERE 00113 END DO 00114 ! 00115 ZBUDGET(:)=XPIFLOOD*XTSTEP_COUPLING+(XCPL_PFLOOD(:)-XCPL_IFLOOD(:)-XCPL_EFLOOD(:)) 00116 WHERE(ZBUDGET(:)<=0.0) 00117 XPIFLOOD(:)=0.0 00118 XFFLOOD (:)=0.0 00119 ENDWHERE 00120 ! 00121 ENDIF 00122 ! 00123 IF (LHOOK) CALL DR_HOOK('DIAG_CPL_ESM_ISBA',1,ZHOOK_HANDLE) 00124 ! 00125 END SUBROUTINE DIAG_CPL_ESM_ISBA
1.8.0