⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 instrument.f

📁 计算线性趋势 回归系数 主要用于气象站点值的线性趋势计算
💻 F
字号:
!-----------------------------------------------------------------------      SUBROUTINE INSTRUMENT(K,KALL,TTOT,TMIN,TMAX)!$$$  SUBPROGRAM DOCUMENTATION  BLOCK!                .      .    .                                       .! SUBPROGRAM:  INSTRUMENT    MONITOR WALL-CLOCK TIMES, ETC.!   PRGMMR: IREDELL          ORG: NP23        DATE:1998-07-16!! ABSTRACT: THIS SUBPROGRAM IS USEFUL IN INSTRUMENTING A CODE!   BY MONITORING THE NUMBER OF TIMES EACH GIVEN SECTION!   OF A PROGRAM IS INVOKED AS WELL AS THE MINIMUM, MAXIMUM!   AND TOTAL WALL-CLOCK TIME SPENT IN THE GIVEN SECTION.!! PROGRAM HISTORY LOG:!   1998-07-16  IREDELL!! USAGE:    CALL INSTRUMENT(K,KALL,TTOT,TMIN,TMAX)!   INPUT ARGUMENT LIST:!     K        - INTEGER POSITIVE SECTION NUMBER!                OR MAXIMUM SECTION NUMBER IN THE FIRST INVOCATION!                OR ZERO TO RESET ALL WALL-CLOCK STATISTICS!                OR NEGATIVE SECTION NUMBER TO SKIP MONITORING!                AND JUST RETURN STATISTICS.!!   OUTPUT ARGUMENT LIST:!     KALL     - INTEGER NUMBER OF TIMES SECTION IS CALLED!     TTOT     - REAL TOTAL SECONDS SPENT IN SECTION!     TMIN     - REAL MINIMUM SECONDS SPENT IN SECTION!     TMAX     - REAL MAXIMUM SECONDS SPENT IN SECTION!! SUBPROGRAMS CALLED:!   W3UTCDAT     RETURN THE UTC DATE AND TIME!   W3DIFDAT     RETURN A TIME INTERVAL BETWEEN TWO DATES!! REMARKS:!   THIS SUBPROGRAM SHOULD NOT BE INVOKED FROM A MULTITASKING REGION.!   NORMALLY, TIME SPENT INSIDE THIS SUBPROGRAM IS NOT COUNTED.!   WALL-CLOCK TIMES ARE KEPT TO THE NEAREST MILLISECOND.!!   EXAMPLE.!     CALL INSTRUMENT(2,KALL,TTOT,TMIN,TMAX)    ! KEEP STATS FOR 2 SUBS!     DO K=1,N!       CALL SUB1!       CALL INSTRUMENT(1,KALL,TTOT,TMIN,TMAX)  ! ACCUM STATS FOR SUB1!       CALL SUB2!       CALL INSTRUMENT(2,KALL,TTOT,TMIN,TMAX)  ! ACCUM STATS FOR SUB2!     ENDDO!     PRINT *,'SUB2 STATS: ',KALL,TTOT,TMIN,TMAX!     CALL INSTRUMENT(-1,KALL,TTOT,TMIN,TMAX)   ! RETURN STATS FOR SUB1!     PRINT *,'SUB1 STATS: ',KALL,TTOT,TMIN,TMAX!! ATTRIBUTES:!   LANGUAGE: FORTRAN 90!!$$$        IMPLICIT NONE        INTEGER,INTENT(IN):: K        INTEGER,INTENT(OUT):: KALL        REAL,INTENT(OUT):: TTOT,TMIN,TMAX        INTEGER,SAVE:: KMAX=0        INTEGER,DIMENSION(:),ALLOCATABLE,SAVE:: KALLS        REAL,DIMENSION(:),ALLOCATABLE,SAVE:: TTOTS,TMINS,TMAXS        INTEGER,DIMENSION(8),SAVE:: IDAT        INTEGER,DIMENSION(8):: JDAT        REAL,DIMENSION(5):: RINC        INTEGER:: KA! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -        KA=ABS(K)!  ALLOCATE MONITORING ARRAYS IF INITIAL INVOCATION        IF(KMAX.EQ.0) THEN          KMAX=K          ALLOCATE(KALLS(KMAX))          ALLOCATE(TTOTS(KMAX))          ALLOCATE(TMINS(KMAX))          ALLOCATE(TMAXS(KMAX))          KALLS=0          KA=0!  OR RESET ALL STATISTICS BACK TO ZERO        ELSEIF(K.EQ.0) THEN          KALLS=0!  OR COUNT TIME SINCE LAST INVOCATION AGAINST THIS SECTION        ELSEIF(K.GT.0) THEN          CALL W3UTCDAT(JDAT)          CALL W3DIFDAT(JDAT,IDAT,4,RINC)          KALLS(K)=KALLS(K)+1          IF(KALLS(K).EQ.1) THEN            TTOTS(K)=RINC(4)            TMINS(K)=RINC(4)            TMAXS(K)=RINC(4)          ELSE            TTOTS(K)=TTOTS(K)+RINC(4)            TMINS(K)=MIN(TMINS(K),RINC(4))            TMAXS(K)=MAX(TMAXS(K),RINC(4))          ENDIF        ENDIF! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -!  RETURN STATISTICS        IF(KA.GE.1.AND.KA.LE.KMAX.AND.KALLS(KA).GT.0) THEN          KALL=KALLS(KA)          TTOT=TTOTS(KA)          TMIN=TMINS(KA)          TMAX=TMAXS(KA)        ELSE          KALL=0          TTOT=0          TMIN=0          TMAX=0        ENDIF! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -!  KEEP CURRENT TIME FOR NEXT INVOCATION        IF(K.GE.0) CALL W3UTCDAT(IDAT)      END SUBROUTINE INSTRUMENT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -