Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:26 2011
FILE NAME: clockset.f90
PROGRAM NAME: clockset
TRANSFORMATION LIST

  LINE                   FORTRAN STATEMENT

     1  != Module Clockset
     2  !
     3  ! Authors::   SUGIYAMA Ko-ichiro, ODAKA Masatsugu
     4  ! Version::   $Id: clockset.f90,v 1.1 2011-06-17 19:05:23 sugiyama Exp $
     5  ! Tag Name::  $Name: arare5-20111010 $
     6  ! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     7  ! License::   See COPYRIGHT[link:../../COPYRIGHT]
     8  !
     9  !== Overview
    10  !
    11  !引数に与えられた NAMELIST ファイルから, 時刻に関する情報を取得し,
    12  !保管するための変数型モジュール
    13  !
    14  !== Error Handling
    15  !
    16  !== Known Bugs
    17  !
    18  !== Note
    19  !
    20  !== Future Plans
    21  !
    22  !
    23  
    24  module clockset
    25    !
    26    !引数に与えられた NAMELIST ファイルから, 時刻に関する情報を取得し,
    27    !保管するための変数型モジュール
    28    !
    29  
    30    !モジュール読み込み
    31    use dc_types,   only: DP, STRING
    32    use dc_message, only: MessageNotify
    33    use dc_clock,   only : CLOCK, DCClockCreate, &
    34      & DCClockClose, DCClockStart, DCClockStop, &
    35      & DCClockResult, DCClockPredict, &
    36      & operator(+)                             ! Access module (モジュール指定)
    37    use mpi_wrapper, only: myrank
    38    use timeset,     only: TimeA, RestartTime, IntegPeriod
    39  
    40    !暗黙の型宣言禁止
    41    implicit none
    42  
    43    !属性の指定
    44    private
    45  
    46    ! Public Interface
    47    type(CLOCK), save :: clock_init, clock_loop  ! Variables for CPU time counting
    48                                                 ! CPU 時間計測用変数
    49    public ClocksetInit, ClocksetClose, ClocksetPredict
    50    public ClockSetPreStart, ClockSetPreStop, ClockSetLoopStart, ClocksetLoopStop
    51  
    52  contains
    53  
    54    subroutine ClocksetInit
    55      ! 時間計測 初期化
    56      !
    57      implicit none
    58  
    59      ! 初期化ルーチン用の時刻計測初期化
    60      !
    61      call DCClockCreate( &           ! Initialize (初期化)
    62        & clk = clock_init, &         ! (out)
    63        & name = 'initialization' )   ! (in)
    64  
    65      ! 時間発展ループ用の時刻計測初期化
    66      !
    67      call DCClockCreate( &           ! Initialize (初期化)
    68        & clk = clock_loop, &         ! (out)
    69        & name = 'time-integration' ) ! (in)
    70  
    71    end subroutine ClocksetInit
    72  
    73  
    74    subroutine ClocksetPreStart
    75      ! 時刻計測開始
    76      !
    77      implicit none
    78  
    79      call DCClockStart(clk = clock_init) ! (inout)   ! Start CPU time counting
    80  
    81    end subroutine ClocksetPreStart
    82  
    83  
    84    subroutine ClocksetLoopStart
    85      ! 時刻計測開始
    86      !
    87      implicit none
    88  
    89      call DCClockStart(clk = clock_loop) ! (inout)   ! Start CPU time counting
    90  
    91    end subroutine ClocksetLoopStart
    92  
    93  
    94    subroutine ClocksetPreStop
    95      ! 時刻計測開始
    96      !
    97      implicit none
    98  
    99      call DCClockStop(clk = clock_init) ! (inout)    ! Stop CPU time counting
   100                                                      ! (CPU 時間計測終了)
   101    end subroutine ClocksetPreStop
   102  
   103  
   104    subroutine ClocksetLoopStop
   105      ! 時刻計測開始
   106      !
   107      implicit none
   108  
   109      call DCClockStop(clk = clock_loop) ! (inout)    ! Stop CPU time counting
   110                                                      ! (CPU 時間計測終了)
   111  
   112    end subroutine ClocksetLoopStop
   113  
   114  
   115    subroutine ClocksetPredict
   116      ! 時刻計測開始
   117      !
   118      implicit none
   119      real(4) :: progress
   120  
   121      progress = real((TimeA - RestartTime) / IntegPeriod, 4)
   122  
   123      if (myrank == 0) then
   124        write(*,*) ""
   125        call MessageNotify( "M", "main", "Time = %f", d=(/TimeA/) )
   126        call DCClockPredict( &                       ! Estimate remaining time (残り時間の予測)
   127          &   clk = clock_init + clock_loop,       & ! (in)
   128          &   progress = progress                  & ! (in)
   129          &  )
   130      end if
   131  
   132    end subroutine ClocksetPredict
   133  
   134  
   135    subroutine ClocksetClose
   136      ! 時刻計測終了
   137      !
   138      implicit none
   139  
   140      if (myrank == 0) then
   141        call DCClockResult( &                    ! Display total CPU time (全 CPU 時間の表示)
   142          & clks = (/clock_init, clock_loop/), & ! (in)
   143          & total_auto = .true. )                ! (in)
   144      end if
   145      call DCClockClose( clk = clock_init )    ! (inout)       ! Finalize (後処理)
   146      call DCClockClose( clk = clock_loop )    ! (inout)       ! Finalize (後処理)
   147  
   148    end subroutine ClocksetClose
   149  
   150  
   151  end module clockset
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:26 2011
FILE NAME: clockset.f90
PROGRAM NAME: clockset
FORMAT LIST

  LINE    LOOP     FORTRAN STATEMENT

     1:            != Module Clockset
     2:            !
     3:            ! Authors::   SUGIYAMA Ko-ichiro, ODAKA Masatsugu
     4:            ! Version::   $Id: clockset.f90,v 1.1 2011-06-17 19:05:23 sugiyama Exp $ 
     5:            ! Tag Name::  $Name: arare5-20111010 $
     6:            ! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     7:            ! License::   See COPYRIGHT[link:../../COPYRIGHT]
     8:            !
     9:            !== Overview 
    10:            !
    11:            !引数に与えられた NAMELIST ファイルから, 時刻に関する情報を取得し, 
    12:            !保管するための変数型モジュール
    13:            !
    14:            !== Error Handling
    15:            !
    16:            !== Known Bugs
    17:            !
    18:            !== Note
    19:            !
    20:            !== Future Plans
    21:            !
    22:            !
    23:            
    24:            module clockset
    25:              !
    26:              !引数に与えられた NAMELIST ファイルから, 時刻に関する情報を取得し, 
    27:              !保管するための変数型モジュール
    28:              !
    29:              
    30:              !モジュール読み込み
    31:              use dc_types,   only: DP, STRING
    32:              use dc_message, only: MessageNotify
    33:              use dc_clock,   only : CLOCK, DCClockCreate, &
    34:                & DCClockClose, DCClockStart, DCClockStop, &
    35:                & DCClockResult, DCClockPredict, &
    36:                & operator(+)                             ! Access module (モジュール指定)
    37:              use mpi_wrapper, only: myrank
    38:              use timeset,     only: TimeA, RestartTime, IntegPeriod
    39:            
    40:              !暗黙の型宣言禁止
    41:              implicit none
    42:            
    43:              !属性の指定
    44:              private
    45:              
    46:              ! Public Interface
    47:              type(CLOCK), save :: clock_init, clock_loop  ! Variables for CPU time counting 
    48:                                                           ! CPU 時間計測用変数
    49:              public ClocksetInit, ClocksetClose, ClocksetPredict
    50:              public ClockSetPreStart, ClockSetPreStop, ClockSetLoopStart, ClocksetLoopStop
    51:            
    52:            contains
    53:               
    54:              subroutine ClocksetInit
    55:                ! 時間計測 初期化
    56:                !
    57:                implicit none
    58:                
    59:                ! 初期化ルーチン用の時刻計測初期化
    60:                !
    61:                call DCClockCreate( &           ! Initialize (初期化)
    62:                  & clk = clock_init, &         ! (out)
    63:                  & name = 'initialization' )   ! (in)
    64:            
    65:                ! 時間発展ループ用の時刻計測初期化
    66:                !
    67:                call DCClockCreate( &           ! Initialize (初期化)
    68:                  & clk = clock_loop, &         ! (out)
    69:                  & name = 'time-integration' ) ! (in)
    70:            
    71:              end subroutine ClocksetInit
    72:            
    73:            
    74:              subroutine ClocksetPreStart
    75:                ! 時刻計測開始
    76:                !
    77:                implicit none
    78:                
    79:                call DCClockStart(clk = clock_init) ! (inout)   ! Start CPU time counting 
    80:                
    81:              end subroutine ClocksetPreStart
    82:              
    83:            
    84:              subroutine ClocksetLoopStart
    85:                ! 時刻計測開始
    86:                !
    87:                implicit none
    88:                
    89:                call DCClockStart(clk = clock_loop) ! (inout)   ! Start CPU time counting 
    90:                
    91:              end subroutine ClocksetLoopStart
    92:            
    93:            
    94:              subroutine ClocksetPreStop
    95:                ! 時刻計測開始
    96:                !
    97:                implicit none
    98:                
    99:                call DCClockStop(clk = clock_init) ! (inout)    ! Stop CPU time counting 
   100:                                                                ! (CPU 時間計測終了)    
   101:              end subroutine ClocksetPreStop
   102:            
   103:            
   104:              subroutine ClocksetLoopStop
   105:                ! 時刻計測開始
   106:                !
   107:                implicit none
   108:                
   109:                call DCClockStop(clk = clock_loop) ! (inout)    ! Stop CPU time counting 
   110:                                                                ! (CPU 時間計測終了)    
   111:            
   112:              end subroutine ClocksetLoopStop
   113:            
   114:            
   115:              subroutine ClocksetPredict
   116:                ! 時刻計測開始
   117:                !
   118:                implicit none
   119:                real(4) :: progress 
   120:            
   121:                progress = real((TimeA - RestartTime) / IntegPeriod, 4)
   122:                
   123:                if (myrank == 0) then 
   124:                  write(*,*) ""
   125:                  call MessageNotify( "M", "main", "Time = %f", d=(/TimeA/) )
   126:                  call DCClockPredict( &                       ! Estimate remaining time (残り時間の予測)
   127:                    &   clk = clock_init + clock_loop,       & ! (in)
   128:                    &   progress = progress                  & ! (in) 
   129:                    &  )   
   130:                end if
   131:                
   132:              end subroutine ClocksetPredict
   133:            
   134:            
   135:              subroutine ClocksetClose
   136:                ! 時刻計測終了
   137:                !
   138:                implicit none
   139:            
   140:                if (myrank == 0) then     
   141:                  call DCClockResult( &                    ! Display total CPU time (全 CPU 時間の表示)
   142:                    & clks = (/clock_init, clock_loop/), & ! (in)
   143:                    & total_auto = .true. )                ! (in)
   144:                end if
   145:                call DCClockClose( clk = clock_init )    ! (inout)       ! Finalize (後処理)
   146:                call DCClockClose( clk = clock_loop )    ! (inout)       ! Finalize (後処理)
   147:                
   148:              end subroutine ClocksetClose
   149:              
   150:            
   151:            end module clockset
