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, AxnameWN , AxnameT , x_Lon, x_Lon_Weight, y_Lat, y_Lat_Weight, z_Sigma, r_Sigma, z_DelSigma, w_Number, r_SSDepth, z_SSDepth
! subsurface 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, AxnameWN, AxnameT /), dimsizes = (/ imax, jmax, kmax, kmax + 1, max(kslmax,1), kslmax+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)', 'subscript of spectral data ', 'time ' /), units = (/ 'degree_east ', 'degree_north', '1 ', '1 ', 'm ', 'm ', '1 ', DefaultIntUnit /), xtypes = (/ '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)
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