Class history_file_io
In: io/history_file_io.F90

ヒストリデータ出力

History data output

Note that Japanese and English are described in parallel.

ヒストリデータ出力の初期化, 時刻進行, 登録変数の表示と 終了処理を行います. [gtool5 ライブラリ]{www.gfd-dennou.org/library/gtool} の gtool_historyauto モジュールを用います.

各データの出力は, モデルの各プログラム内において, gtool_historyauto モジュールから提供される HistoryAutoAddVariable および HistoryAutoPut を用います.

Methods

Included Modules

gridset dc_types dc_message fileset constants0 axesset namelist_util timeset gtool_historyauto dc_iounit dc_string

Public Instance methods

Subroutine :

ヒストリデータファイル出力の終了処理を行います.

Terminate history data files output.

[Source]

  subroutine HistoryFileClose
    !
    ! ヒストリデータファイル出力の終了処理を行います. 
    !
    ! Terminate history data files output. 

    ! モジュール引用 ; USE statements
    !

    ! gtool4 netCDF データの入出力インターフェース (大規模モデル用)
    ! Interface of Input/Output of gtool4 netCDF data (For large models)
    !
    use gtool_historyauto, only: HistoryAutoClose

    ! 宣言文 ; Declaration statements
    !
    implicit none

    ! 作業変数
    ! Work variables
    !

    ! 実行文 ; Executable statement
    !

    call HistoryAutoClose

  end subroutine HistoryFileClose
Subroutine :

history_file_io モジュールの初期化を行います.

"history_file_io" module is initialized.

[Source]

  subroutine HistoryFileOpen
    !
    ! history_file_io モジュールの初期化を行います. 
    !
    !
    ! "history_file_io" module is initialized. 
    !
    !

    ! モジュール引用 ; USE statements
    !

    ! 出力ファイルの基本情報
    ! Basic information for output files
    ! 
    use fileset, only: FileTitle, FileSource, FileInstitution
                              ! データファイルを最終的に変更した組織/個人. 
                              ! Institution or person that changes data files for the last time

    ! 物理・数学定数設定
    ! Physical and mathematical constants settings
    !
    use constants0, only: PI                    ! $ \pi $.
                              ! 円周率. Circular constant

    ! 座標データ設定
    ! Axes data settings
    !
    use axesset, only: AxnameX  , AxnameY  , AxnameZ  , AxnameR  , AxnameSSZ, AxnameSSR, AxnameSIZ, AxnameSIR, AxnameWN , AxnameT  , x_Lon, x_Lon_Weight, y_Lat, y_Lat_Weight, z_Sigma, r_Sigma, z_DelSigma, w_Number, r_SSDepth, z_SSDepth, r_SIDepth, z_SIDepth
                              ! sea ice grid at midpoint of layer

    ! NAMELIST ファイル入力に関するユーティリティ
    ! Utilities for NAMELIST file input
    !
    use namelist_util, only: namelist_filename, NmlutilMsg

    ! 時刻管理
    ! Time control
    !
    use timeset, only: RestartTime, EndTime, InitialDate, DelTime               ! $ \Delta t $ [s]

    ! gtool4 netCDF データの入出力インターフェース (大規模モデル用)
    ! Interface of Input/Output of gtool4 netCDF data (For large models)
    !
    use gtool_historyauto, only: HistoryAutoCreate, HistoryAutoAddAttr, HistoryAutoAddWeight, HistoryAutoPutAxis, HistoryAutoPutAxisMPI

    ! ファイル入出力補助
    ! File I/O support
    !
    use dc_iounit, only: FileOpen

    ! 文字列操作
    ! Character handling
    !
    use dc_string, only: CPrintf

    ! 種別型パラメタ
    ! Kind type parameter
    !
    use dc_types, only: STDOUT ! 標準出力の装置番号. Unit number of standard output

    ! 宣言文 ; Declaration statements
    !
    implicit none

    ! 作業変数
    ! Work variables
    !
    logical:: flag_mpi_init

    ! 実行文 ; Executable statement
    !

    if ( history_file_io_inited ) return
    call InitCheck

    ! デフォルト値の設定
    ! Default values settings
    !
    DefaultIntValue = 1.0
    DefaultIntUnit  = 'sec'
    DefaultFilePrefix = ''
!!$    DefaultIntValue = 1.0
!!$    DefaultIntUnit  = 'hrs'
!!$    DefaultFilePrefix = 'data01/'

    flag_mpi_init = .false.

    ! HistoryAutoCreate による初期化
    ! Initialization by "HistoryAutoCreate"
    !
    call HistoryAutoCreate( title = trim(FileTitle) // ' history data', source = FileSource, institution = FileInstitution, dims = (/ AxnameX, AxnameY, AxnameZ, AxnameR, AxnameSSZ, AxnameSSR, AxnameSIZ, AxnameSIR, AxnameWN, AxnameT /), dimsizes = (/ imax, jmax, kmax, kmax + 1, max(kslmax,1), kslmax+1, max(ksimax,1), ksimax+1, lmax, 0 /), longnames = (/ 'longitude                                       ', 'latitude                                        ', 'sigma at layer midpoints                        ', 'sigma at layer interface (half level)           ', 'depth at subsurface layer midpoints             ', 'depth at subsurface layer interface (half level)', 'depth at sea ice layer midpoints                ', 'depth at sea ice layer interface (half level)   ', 'subscript of spectral data                      ', 'time                                            ' /), units = (/ 'degrees_east ', 'degrees_north', '1            ', '1            ', 'm            ', 'm            ', 'm            ', 'm            ', '1            ', DefaultIntUnit(1:13) /), xtypes = (/ 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'float', 'int  ', 'float' /), origin  = RestartTime, terminus = EndTime + 2. * DelTime, interval = DefaultIntValue, #ifdef INCLUDE_TIME_ORIGIN #endif
!!$      &     slice_start  = (/ 1.0, 1.0, 1.0, 1.0, 1.0 /), & ! (in) optional
!!$      &     slice_end    = (/ 0.0, 0.0, 0.0, 0.0, 0.0 /), & ! (in) optional
!!$      &     slice_stride = (/   1,   1,   1,   1,   1 /), & ! (in) optional
!!$      &    space_average = (/ .false., .false., .false., &
!!$      &                       .false., .false. /), &        ! (in) optional
!!$      & newfile_interval = real( delta_time * 10 ), &       ! (in) optional

!!$      &  flag_mpi_gather = flag_mpi_init, &                    ! (in) optional file_prefix = DefaultFilePrefix, namelist_filename = namelist_filename )                ! (in) optional


    ! 座標データへの属性の設定
    ! Attributes of axes data settings
    !
    call HistoryAutoAddAttr( varname = 'lon', attrname = 'standard_name', value = 'longitude' )                            ! (in)
    call HistoryAutoAddAttr( varname = 'lat', attrname = 'standard_name', value = 'latitude' )                             ! (in)
    call HistoryAutoAddAttr( varname = 'sig', attrname = 'standard_name', value = 'atmosphere_sigma_coordinate' )          ! (in)
    call HistoryAutoAddAttr( varname = 'sigm', attrname = 'standard_name', value = 'atmosphere_sigma_coordinate' )          ! (in)
    call HistoryAutoAddAttr( varname = 'sig', attrname = 'positive', value = 'down' )                                 ! (in)
    call HistoryAutoAddAttr( varname = 'sigm', attrname = 'positive', value = 'down' )                                 ! (in)
    call HistoryAutoAddAttr( varname = 'ssz', attrname = 'standard_name', value = 'depth' )                                ! (in)
    call HistoryAutoAddAttr( varname = 'sszi', attrname = 'standard_name', value = 'depth' )                                ! (in)

    ! 座標データの設定
    ! Axes data settings
    !
    call HistoryAutoPutAxis( 'lon',  x_Lon / PI * 180.0_DP )  ! (in)
    call HistoryAutoPutAxis( 'lat',  y_Lat / PI * 180.0_DP )  ! (in)
    call HistoryAutoPutAxis( 'sig',  z_Sigma )                ! (in)
    call HistoryAutoPutAxis( 'sigm', r_Sigma )                ! (in)
    if ( kslmax == 0 ) then
      call HistoryAutoPutAxis( 'ssz',  r_SSDepth )              ! (in)
    else
      call HistoryAutoPutAxis( 'ssz',  z_SSDepth )              ! (in)
    end if
    call HistoryAutoPutAxis( 'sszi', r_SSDepth )              ! (in)
    if ( ksimax == 0 ) then
      call HistoryAutoPutAxis( 'siz',  r_SIDepth )              ! (in)
    else
      call HistoryAutoPutAxis( 'siz',  z_SIDepth )              ! (in)
    end if
    call HistoryAutoPutAxis( 'sizi', r_SIDepth )              ! (in)
    call HistoryAutoPutAxis( 'wn',   w_Number )               ! (in)

    ! 座標重みの設定
    ! Axes weights settings
    !
    call HistoryAutoAddWeight( dim = 'lon', weight = x_Lon_Weight, units = 'radian', xtype = 'double' )  ! (in) optional
    call HistoryAutoAddWeight( dim = 'lat', weight = y_Lat_Weight, units = 'radian', xtype = 'double' )  ! (in) optional
    call HistoryAutoAddWeight( dim = 'sig', weight = z_DelSigma, xtype = 'double' )                    ! (in) optional

    ! 印字 ; Print
    !
    call MessageNotify( 'M', module_name, '----- Initialization Messages -----' )
    call MessageNotify( 'M', module_name, '-- version = %c', c1 = trim(version) )

    history_file_io_inited = .true.
  end subroutine HistoryFileOpen
history_file_io_inited
Variable :
history_file_io_inited = .false. :logical, save, public
: 初期設定フラグ. Initialization flag

Private Instance methods

DefaultFilePrefix
Variable :
DefaultFilePrefix :character(STRING)
: ヒストリデータのファイル名の接頭詞 (デフォルト値). Prefixes of history data filenames (default value)
DefaultIntUnit
Variable :
DefaultIntUnit :character(STRING), save
: ヒストリデータの出力間隔の単位 (デフォルト値). Unit for interval of history data output (default value)
DefaultIntValue
Variable :
DefaultIntValue :real(DP), save
: ヒストリデータの出力間隔の数値 (デフォルト値). Numerical value for interval of history data output (default value)
Subroutine :

依存モジュールの初期化チェック

Check initialization of dependency modules

[Source]

  subroutine InitCheck
    !
    ! 依存モジュールの初期化チェック
    !
    ! Check initialization of dependency modules

    ! モジュール引用 ; USE statements
    !

    ! NAMELIST ファイル入力に関するユーティリティ
    ! Utilities for NAMELIST file input
    !
    use namelist_util, only: namelist_util_inited

    ! 出力ファイルの基本情報管理
    ! Management basic information for output files
    !
    use fileset, only: fileset_inited

    ! 格子点設定
    ! Grid points settings
    !
    use gridset, only: gridset_inited

    ! 座標データ設定
    ! Axes data settings
    !
    use axesset, only: axesset_inited

    ! 時刻管理
    ! Time control
    !
    use timeset, only: timeset_inited

    ! 実行文 ; Executable statement
    !

    if ( .not. namelist_util_inited ) call MessageNotify( 'E', module_name, '"namelist_util" module is not initialized.' )

    if ( .not. fileset_inited ) call MessageNotify( 'E', module_name, '"fileset" module is not initialized.' )

    if ( .not. gridset_inited ) call MessageNotify( 'E', module_name, '"gridset" module is not initialized.' )

    if ( .not. axesset_inited ) call MessageNotify( 'E', module_name, '"axesset" module is not initialized.' )

    if ( .not. timeset_inited ) call MessageNotify( 'E', module_name, '"timeset" module is not initialized.' )

  end subroutine InitCheck
module_name
Constant :
module_name = ‘history_file_io :character(*), parameter
: モジュールの名称. Module name
version
Constant :
version = ’$Name: $’ // ’$Id: history_file_io.F90,v 1.9 2013/09/16 12:23:38 yot Exp $’ :character(*), parameter
: モジュールのバージョン Module version