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, 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