SCALE-RM
Data Types | Functions/Subroutines | Variables
gtool_file Module Reference

module GTOOL_FILE More...

Functions/Subroutines

subroutine, public filecreate (fid, existed, basename, title, source, institution, master, myrank, rankidx, single, time_units, append, comm)
 
subroutine filegetglobalattributetext (fid, key, val)
 
subroutine, public filesetoption (fid, filetype, key, val)
 
subroutine, public fileopen (fid, basename, mode, single, comm, myrank)
 
subroutine, public filedefaxis (fid, name, desc, units, dim_name, dtype, dim_size)
 
subroutine, public filedefassociatedcoordinates (fid, name, desc, units, dim_names, dtype)
 
subroutine, public filedefinevariable (fid, vid, varname, desc, units, ndims, dims, dtype, tint, tavg)
 
subroutine, public filesettattr (fid, vname, key, val)
 
subroutine, public filegetshape (dims, basename, varname, myrank, single, error)
 
subroutine filereadvar1drealdp (var, fid, varname, step, allow_missing, single, ntypes, dtype, start, count)
 
subroutine filereadvar2drealsp (var, fid, varname, step, allow_missing, single, ntypes, dtype, start, count)
 
subroutine filereadvar2drealdp (var, fid, varname, step, allow_missing, single, ntypes, dtype, start, count)
 
subroutine filereadvar3drealsp (var, fid, varname, step, allow_missing, single, ntypes, dtype, start, count)
 
subroutine filereadvar3drealdp (var, fid, varname, step, allow_missing, single, ntypes, dtype, start, count)
 
subroutine filereadvar4drealsp (var, fid, varname, step, allow_missing, single, ntypes, dtype, start, count)
 
subroutine filereadvar4drealdp (var, fid, varname, step, allow_missing, single, ntypes, dtype, start, count)
 
subroutine filewrite1drealsp (fid, vid, var, t_start, t_end, start, count, ndims)
 
subroutine, public fileenddef (fid)
 
subroutine, public fileattachbuffer (fid, buf_amount)
 
subroutine, public filedetachbuffer (fid)
 
subroutine, public fileflush (fid)
 
subroutine, public fileclose (fid)
 
subroutine, public filecloseall
 
subroutine, public filemakefname (fname, basename, prefix, myrank, len)
 

Variables

real(dp), parameter, public rmiss = -9.9999e+30
 

Detailed Description

module GTOOL_FILE

Description
unified hundring of various kinds of files
Author
Team SCALE
History
  • 2012-06-12 (S.Nishizawa) [new] Imported from SCALE-LES

Function/Subroutine Documentation

◆ filecreate()

subroutine, public gtool_file::filecreate ( integer, intent(out)  fid,
logical, intent(out)  existed,
character(len=*), intent(in)  basename,
character(len=*), intent(in)  title,
character(len=*), intent(in)  source,
character(len=*), intent(in)  institution,
integer, intent(in)  master,
integer, intent(in)  myrank,
integer, dimension(:), intent(in)  rankidx,
logical, intent(in), optional  single,
character(len=*), intent(in), optional  time_units,
logical, intent(in), optional  append,
integer, intent(in), optional  comm 
)

Definition at line 191 of file gtool_file.f90.

References gtool_file_h::file_fappend, gtool_file_h::file_fwrite, file_set_tunits(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_create(), scale_fileio::fileio_write_1d(), scale_fileio::fileio_write_2d(), scale_fileio::fileio_write_3d(), scale_fileio::fileio_write_3d_t(), scale_fileio::fileio_write_4d(), and gtool_history::historyaddvariable().

191  use mpi, only : mpi_comm_null
192  implicit none
193 
194  integer, intent(out) :: fid
195  logical, intent(out) :: existed
196  character(len=*), intent( in) :: basename
197  character(len=*), intent( in) :: title
198  character(len=*), intent( in) :: source
199  character(len=*), intent( in) :: institution
200  integer, intent( in) :: master
201  integer, intent( in) :: myrank
202  integer, intent( in) :: rankidx(:)
203  character(len=*), intent( in), optional :: time_units
204  logical, intent( in), optional :: single
205  logical, intent( in), optional :: append
206  integer, intent( in), optional :: comm ! MPI communicator
207 
208  character(len=File_HMID) :: time_units_
209  logical :: single_
210  integer :: mode
211  integer :: error
212 
213  intrinsic size
214 
215  if ( present(time_units) ) then
216  time_units_ = time_units
217  else
218  time_units_ = 'seconds'
219  end if
220 
221  mpi_myrank = myrank
222 
223  if ( present(single) ) then
224  if ( single .and. (myrank .ne. master) ) return
225  single_ = single
226  else
227  single_ = .false.
228  endif
229 
230  mode = file_fwrite
231  if ( present(append) ) then
232  if ( append ) mode = file_fappend
233  end if
234 
235  call filegetfid( &
236  fid, & ! (out)
237  existed, & ! (out)
238  basename, & ! (in)
239  mode, & ! (in)
240  single_, & ! (in)
241  comm & ! (in)
242  )
243 
244  if ( existed ) return
245 
246  !--- append package header to the file
247  call filesetglobalattribute( fid, & ! (in)
248  "title", title ) ! (in)
249  call filesetglobalattribute( fid, & ! (in)
250  "source", source ) ! (in)
251  call filesetglobalattribute( fid, & ! (in)
252  "institution", institution ) ! (in)
253 
254  if ( .NOT. present(comm) .OR. comm == mpi_comm_null ) then
255  ! for shared-file parallel I/O, skip attributes related to MPI processes
256  call filesetglobalattribute( fid, & ! (in)
257  "myrank", (/myrank/) ) ! (in)
258  call filesetglobalattribute( fid, & ! (in)
259  "rankidx", rankidx ) ! (in)
260  end if
261 
262  call file_set_tunits( fid, & ! (in)
263  time_units_, & ! (in)
264  error ) ! (out)
265  if ( error /= success_code ) then
266  call log('E', 'xxx failed to set time units')
267  end if
268 
269  return
int32_t file_set_tunits(int32_t fid, char *time_units)
Definition: gtool_netcdf.c:647
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filegetglobalattributetext()

subroutine gtool_file::filegetglobalattributetext ( integer, intent(in)  fid,
character(len=*), intent(in)  key,
character(len=*), intent(out)  val 
)

Definition at line 278 of file gtool_file.f90.

References file_get_global_attribute_double(), file_get_global_attribute_float(), file_get_global_attribute_int(), file_get_global_attribute_text(), file_set_global_attribute_double(), file_set_global_attribute_float(), file_set_global_attribute_int(), file_set_global_attribute_text(), dc_log::log(), and gtool_file_h::success_code.

278  integer, intent(in) :: fid
279  character(len=*), intent(in) :: key
280  character(len=*), intent(out) :: val
281 
282  integer error
283 
284  intrinsic size
285 
286  call file_get_global_attribute_text( & ! (in)
287  fid, key, & ! (in)
288  val, error ) ! (out)
289  if ( error /= success_code ) then
290  call log('E', 'xxx failed to get text global attribute: '//trim(key))
291  end if
292 
293  return
int32_t file_get_global_attribute_text(int32_t fid, char *key, char *value, int32_t len)
Definition: gtool_netcdf.c:466
Here is the call graph for this function:

◆ filesetoption()

subroutine, public gtool_file::filesetoption ( integer, intent(in)  fid,
character(len=*), intent(in)  filetype,
character(len=*), intent(in)  key,
character(len=*), intent(in)  val 
)

Definition at line 470 of file gtool_file.f90.

References file_set_option(), dc_log::log(), and gtool_file_h::success_code.

Referenced by gtool_history::historyaddvariable().

470  integer, intent(in) :: fid
471  character(len=*), intent(in) :: filetype
472  character(len=*), intent(in) :: key
473  character(len=*), intent(in) :: val
474 
475  integer error
476 
477  call file_set_option( fid, filetype, key, val, & ! (in)
478  error ) ! (out)
479  if ( error /= success_code ) then
480  call log('E', 'xxx failed to set option')
481  end if
482 
483  return
int32_t file_set_option(int32_t fid, char *filetype, char *key, char *val)
Definition: gtool_netcdf.c:202
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fileopen()

subroutine, public gtool_file::fileopen ( integer, intent(out)  fid,
character(len=*), intent(in)  basename,
integer, intent(in)  mode,
logical, intent(in), optional  single,
integer, intent(in), optional  comm,
integer, intent(in), optional  myrank 
)

Definition at line 495 of file gtool_file.f90.

References gtool_file_h::already_existed_code, dc_types::dp, file_put_axis(), dc_log::log(), dc_types::sp, and gtool_file_h::success_code.

Referenced by scale_external_input::extin_regist(), filegetshape(), and scale_fileio::fileio_open().

495  implicit none
496 
497  integer, intent(out) :: fid
498  character(len=*), intent( in) :: basename
499  integer, intent( in) :: mode
500  logical, intent( in), optional :: single
501  integer, intent( in), optional :: comm
502  integer, intent( in), optional :: myrank
503 
504  logical :: existed
505  logical :: single_
506 
507  single_ = .false.
508 
509  if ( present(single) ) single_ = single
510  if ( present(myrank) ) mpi_myrank = myrank
511 
512  call filegetfid( fid, existed, & ! (out)
513  basename, mode, single_, comm ) ! (in)
514 
515  return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filedefaxis()

subroutine, public gtool_file::filedefaxis ( integer, intent(in)  fid,
character(len=*), intent(in)  name,
character(len=*), intent(in)  desc,
character(len=*), intent(in)  units,
character(len=*), intent(in)  dim_name,
integer, intent(in)  dtype,
integer, intent(in)  dim_size 
)

Definition at line 584 of file gtool_file.f90.

References gtool_file_h::already_existed_code, dc_types::dp, file_def_axis(), file_put_associated_coordinates(), file_write_axis(), dc_log::log(), dc_types::sp, and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_def_axes(), and gtool_history::historyaddvariable().

584  integer, intent(in) :: fid
585  character(len=*), intent(in) :: name
586  character(len=*), intent(in) :: desc
587  character(len=*), intent(in) :: units
588  character(len=*), intent(in) :: dim_name
589  integer, intent(in) :: dtype
590  integer, intent(in) :: dim_size
591 
592  integer error
593  intrinsic size
594 
595  call file_def_axis( fid, name, desc, units, dim_name, dtype, dim_size, & ! (in)
596  error ) ! (out)
597  if ( error /= success_code .and. error /= already_existed_code ) then
598  call log('E', 'xxx failed to define axis')
599  end if
600 
601  return
int32_t file_def_axis(int32_t fid, char *name, char *desc, char *units, char *dim_name, int32_t dtype, int32_t dim_size)
Definition: gtool_netcdf.c:748
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filedefassociatedcoordinates()

subroutine, public gtool_file::filedefassociatedcoordinates ( integer, intent(in)  fid,
character(len=*), intent(in)  name,
character(len=*), intent(in)  desc,
character(len=*), intent(in)  units,
character(len=*), dimension(:), intent(in)  dim_names,
integer, intent(in)  dtype 
)

Definition at line 903 of file gtool_file.f90.

References gtool_file_h::already_existed_code, dc_types::dp, file_add_variable(), file_def_associated_coordinates(), file_write_associated_coordinates(), dc_log::log(), dc_types::sp, and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_def_axes(), and gtool_history::historyaddvariable().

903  integer, intent(in) :: fid
904  character(len=*), intent(in) :: name
905  character(len=*), intent(in) :: desc
906  character(len=*), intent(in) :: units
907  character(len=*), intent(in) :: dim_names(:)
908  integer, intent(in) :: dtype
909 
910  integer error
911  intrinsic size
912 
913  call file_def_associated_coordinates( fid, & ! (in)
914  name, desc, units, dim_names, size(dim_names), dtype, & ! (in)
915  error ) ! (out)
916  if ( error /= success_code .and. error /= already_existed_code ) then
917  call log('E', 'xxx failed to put associated coordinates')
918  end if
919 
920  return
int32_t file_def_associated_coordinates(int32_t fid, char *name, char *desc, char *units, char **dim_names, int32_t ndims, int32_t dtype)
Definition: gtool_netcdf.c:900
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filedefinevariable()

subroutine, public gtool_file::filedefinevariable ( integer, intent(in)  fid,
integer, intent(out)  vid,
character(len=*), intent(in)  varname,
character(len=*), intent(in)  desc,
character(len=*), intent(in)  units,
integer, intent(in)  ndims,
character(len=*), dimension(:), intent(in)  dims,
integer, intent(in)  dtype,
real(dp), intent(in), optional  tint,
logical, intent(in), optional  tavg 
)

Definition at line 1427 of file gtool_file.f90.

References file_add_variable(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_def_var().

1427  integer, intent(out) :: vid
1428  integer, intent( in) :: fid
1429  character(len=*), intent( in) :: varname
1430  character(len=*), intent( in) :: desc
1431  character(len=*), intent( in) :: units
1432  integer, intent( in) :: ndims
1433  character(len=*), intent( in) :: dims(:)
1434  integer, intent( in) :: dtype
1435  real(DP), intent( in), optional :: tint
1436  logical, intent( in), optional :: tavg
1437 
1438  real(DP) :: tint_
1439  integer :: itavg
1440  integer :: error
1441  integer :: n
1442 
1443  intrinsic size
1444  !---------------------------------------------------------------------------
1445 
1446  vid = -1
1447  do n = 1, file_vid_count
1448  if ( file_vid_fid_list(n) == fid .and. &
1449  varname == file_vname_list(n) ) then
1450  vid = file_vid_list(n)
1451  end if
1452  enddo
1453 
1454  if ( vid < 0 ) then ! variable registration
1455  !--- register new variable
1456  write(message,'(2A)') '###### Variable registration : name = ', trim(varname)
1457  call log("I",message)
1458 
1459  if ( present(tint) ) then
1460  tint_ = tint
1461  else
1462  tint_ = -1.0_dp
1463  endif
1464 
1465  if ( present(tavg) ) then
1466  if ( tavg ) then
1467  itavg = 1
1468  else
1469  itavg = 0
1470  end if
1471  else
1472  itavg = 0
1473  end if
1474 
1475  call file_add_variable( vid, & ! (out)
1476  fid, varname, desc, units, dims, ndims, dtype, & ! (in)
1477  tint_, itavg, & ! (in)
1478  error ) ! (out)
1479  if ( error /= success_code ) then
1480  call log('E', 'xxx failed to add variable: '//trim(varname))
1481  end if
1482 
1483  file_vname_list(file_vid_count) = trim(varname)
1484  file_vid_list(file_vid_count) = vid
1485  file_vid_fid_list(file_vid_count) = fid
1486  file_vid_count = file_vid_count + 1
1487  endif
1488 
1489  return
int32_t file_add_variable(int32_t *vid, int32_t fid, char *varname, char *desc, char *units, char **dims, int32_t ndims, int32_t dtype, real64_t tint, int32_t tavg)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filesettattr()

subroutine, public gtool_file::filesettattr ( integer, intent(in)  fid,
character(len=*), intent(in)  vname,
character(len=*), intent(in)  key,
character(len=*), intent(in)  val 
)

Definition at line 1501 of file gtool_file.f90.

References gtool_file_h::already_existed_code, file_set_tattr(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_def_axes(), gtool_history::historyaddvariable(), and gtool_history::historysettattr().

1501  integer, intent(in) :: fid
1502  character(len=*), intent(in) :: vname
1503  character(len=*), intent(in) :: key
1504  character(len=*), intent(in) :: val
1505 
1506  integer :: error
1507 
1508  call file_set_tattr( &
1509  fid, vname, & ! (in)
1510  key, val, & ! (in)
1511  error ) ! (out)
1512  if ( error /= success_code .and. error /= already_existed_code ) then
1513  call log('E', 'xxx failed to set attr for axis')
1514  end if
1515 
1516  return
int32_t file_set_tattr(int32_t fid, char *vname, char *key, char *val)
Definition: gtool_netcdf.c:655
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filegetshape()

subroutine, public gtool_file::filegetshape ( integer, dimension(:), intent(out)  dims,
character(len=*), intent(in)  basename,
character(len=*), intent(in)  varname,
integer, intent(in)  myrank,
logical, intent(in), optional  single,
logical, intent(out), optional  error 
)

Definition at line 1529 of file gtool_file.f90.

References dc_types::dp, gtool_file_h::file_fread, file_get_datainfo(), file_read_data(), file_read_data_par(), fileopen(), dc_log::log(), rmiss, dc_types::sp, and gtool_file_h::success_code.

Referenced by scale_grid_nest::nest_setup(), mod_realinput_nicam::parentatomsetupnicam(), mod_realinput_nicam::parentlandsetupnicam(), mod_realinput_nicam::parentoceansetupnicam(), and mod_mkinit::read_sounding().

1529  implicit none
1530 
1531  integer, intent(out) :: dims(:)
1532  character(len=*), intent( in) :: basename
1533  character(len=*), intent( in) :: varname
1534  integer, intent( in) :: myrank
1535  logical, intent( in), optional :: single
1536  logical, intent(out), optional :: error
1537 
1538  integer :: fid
1539  type(datainfo) :: dinfo
1540  integer :: ierror
1541  integer :: n
1542 
1543  logical :: single_
1544  logical :: suppress
1545 
1546  intrinsic size
1547  intrinsic shape
1548  !---------------------------------------------------------------------------
1549 
1550  mpi_myrank = myrank
1551 
1552  if ( present(single) ) then
1553  single_ = single
1554  else
1555  single_ = .false.
1556  end if
1557 
1558  if ( present(error) ) then
1559  suppress = .true.
1560  else
1561  suppress = .false.
1562  end if
1563 
1564  !--- search/register file
1565  call fileopen( fid, & ! (out)
1566  basename, file_fread, single_ ) ! (in)
1567 
1568  !--- get data information
1569  call file_get_datainfo( dinfo, & ! (out)
1570  fid, varname, 1, suppress, & ! (in)
1571  ierror ) ! (out)
1572 
1573  !--- verify
1574  if ( ierror /= success_code ) then
1575  if ( present(error) ) then
1576  error = .true.
1577  return
1578  else
1579  call log('E', 'xxx failed to get data information :'//trim(varname))
1580  end if
1581  end if
1582 
1583  if ( dinfo%rank /= size(dims) ) then
1584  write(message,*) 'xxx rank is different, ', size(dims), dinfo%rank
1585  call log('E', message)
1586  end if
1587  do n = 1, size(dims)
1588  dims(n) = dinfo%dim_size(n)
1589  end do
1590 
1591  if ( present(error) ) error = .false.
1592 
1593  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filereadvar1drealdp()

subroutine gtool_file::filereadvar1drealdp ( real(dp), dimension(:), intent(out)  var,
integer, intent(in)  fid,
character(len=*), intent(in)  varname,
integer, intent(in)  step,
logical, intent(in), optional  allow_missing,
logical, intent(in), optional  single,
integer, intent(in), optional  ntypes,
integer, intent(in), optional  dtype,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count 
)

Definition at line 2677 of file gtool_file.f90.

References dc_types::dp, file_get_datainfo(), file_read_data(), file_read_data_par(), dc_log::log(), and gtool_file_h::success_code.

2677  use mpi, only : mpi_comm_null
2678  implicit none
2679 
2680  real(DP), intent(out) :: var(:)
2681  integer, intent( in) :: fid
2682  character(len=*), intent( in) :: varname
2683  integer, intent( in) :: step
2684  logical, intent( in), optional :: allow_missing !--- if data is missing, set value to zero
2685  logical, intent( in), optional :: single
2686  integer, intent( in), optional :: ntypes ! number of dtypes
2687  integer, intent( in), optional :: dtype ! MPI derived datatype for read buffer
2688  integer, intent( in), optional :: start(:) ! request starts to global variable
2689  integer, intent( in), optional :: count(:) ! request sizes to global variable
2690 
2691  type(datainfo) :: dinfo
2692  integer :: error
2693 
2694  intrinsic size, shape
2695  !---------------------------------------------------------------------------
2696 
2697  !--- get data information
2698  call file_get_datainfo( dinfo, & ! (out)
2699  fid, varname, step, .false., & ! (in)
2700  error ) ! (out)
2701 
2702  !--- verify
2703  if ( error /= success_code ) then
2704  if ( present(allow_missing) ) then
2705  if ( allow_missing ) then
2706  write(message,*) 'xxx [INPUT]/[File] data not found! : ', &
2707  'varname= ',trim(varname),', step=',step
2708  call log('I', message)
2709  call log('I', 'xxx [INPUT]/[File] Value is set to 0.')
2710  var(:) = 0.0_dp
2711  else
2712  call log('E', 'xxx failed to get data information :'//trim(varname))
2713  end if
2714  else
2715  call log('E', 'xxx failed to get data information :'//trim(varname))
2716  end if
2717  end if
2718 
2719  if ( dinfo%rank /= 1 ) then
2720  write(message,*) 'xxx rank is not 1', dinfo%rank
2721  call log('E', message)
2722  end if
2723 
2724  if (present(ntypes) ) then
2725  call file_read_data_par( var(:), & ! (out)
2726  dinfo, size(shape(var)), ntypes, dtype, start, count, & ! (in)
2727  error ) ! (out)
2728  else
2729  call file_read_data( var(:), & ! (out)
2730  dinfo, dp, & ! (in)
2731  error ) ! (out)
2732  end if
2733  if ( error /= success_code ) then
2734  call log('E', 'xxx failed to get data value')
2735  end if
2736 
2737  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
int32_t file_read_data_par(void *var, datainfo_t *dinfo, MPI_Offset ntypes, MPI_Datatype dtype, MPI_Offset *start, MPI_Offset *count)
Definition: gtool_netcdf.c:439
int32_t file_read_data(void *var, datainfo_t *dinfo, int32_t precision)
Definition: gtool_netcdf.c:390
Here is the call graph for this function:

◆ filereadvar2drealsp()

subroutine gtool_file::filereadvar2drealsp ( real(sp), dimension(:,:), intent(out)  var,
integer, intent(in)  fid,
character(len=*), intent(in)  varname,
integer, intent(in)  step,
logical, intent(in), optional  allow_missing,
logical, intent(in), optional  single,
integer, intent(in), optional  ntypes,
integer, intent(in), optional  dtype,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count 
)

Definition at line 2751 of file gtool_file.f90.

References file_get_datainfo(), file_read_data(), file_read_data_par(), dc_log::log(), dc_types::sp, and gtool_file_h::success_code.

2751  use mpi, only : mpi_comm_null
2752  implicit none
2753 
2754  real(SP), intent(out) :: var(:,:)
2755  integer, intent( in) :: fid
2756  character(len=*), intent( in) :: varname
2757  integer, intent( in) :: step
2758  logical, intent( in), optional :: allow_missing !--- if data is missing, set value to zero
2759  logical, intent( in), optional :: single
2760  integer, intent( in), optional :: ntypes ! number of dtypes
2761  integer, intent( in), optional :: dtype ! MPI derived datatype for read buffer
2762  integer, intent( in), optional :: start(:) ! request starts to global variable
2763  integer, intent( in), optional :: count(:) ! request sizes to global variable
2764 
2765  type(datainfo) :: dinfo
2766  integer :: error
2767 
2768  intrinsic size, shape
2769  !---------------------------------------------------------------------------
2770 
2771  !--- get data information
2772  call file_get_datainfo( dinfo, & ! (out)
2773  fid, varname, step, .false., & ! (in)
2774  error ) ! (out)
2775 
2776  !--- verify
2777  if ( error /= success_code ) then
2778  if ( present(allow_missing) ) then
2779  if ( allow_missing ) then
2780  write(message,*) 'xxx [INPUT]/[File] data not found! : ', &
2781  'varname= ',trim(varname),', step=',step
2782  call log('I', message)
2783  call log('I', 'xxx [INPUT]/[File] Value is set to 0.')
2784  var(:,:) = 0.0_sp
2785  else
2786  call log('E', 'xxx failed to get data information :'//trim(varname))
2787  end if
2788  else
2789  call log('E', 'xxx failed to get data information :'//trim(varname))
2790  end if
2791  end if
2792 
2793  if ( dinfo%rank /= 2 ) then
2794  write(message,*) 'xxx rank is not 2', dinfo%rank
2795  call log('E', message)
2796  end if
2797 
2798  if (present(ntypes) ) then
2799  call file_read_data_par( var(:,:), & ! (out)
2800  dinfo, size(shape(var)), ntypes, dtype, start, count, & ! (in)
2801  error ) ! (out)
2802  else
2803  call file_read_data( var(:,:), & ! (out)
2804  dinfo, sp, & ! (in)
2805  error ) ! (out)
2806  end if
2807  if ( error /= success_code ) then
2808  call log('E', 'xxx failed to get data value')
2809  end if
2810 
2811  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
int32_t file_read_data_par(void *var, datainfo_t *dinfo, MPI_Offset ntypes, MPI_Datatype dtype, MPI_Offset *start, MPI_Offset *count)
Definition: gtool_netcdf.c:439
int32_t file_read_data(void *var, datainfo_t *dinfo, int32_t precision)
Definition: gtool_netcdf.c:390
Here is the call graph for this function:

◆ filereadvar2drealdp()

subroutine gtool_file::filereadvar2drealdp ( real(dp), dimension(:,:), intent(out)  var,
integer, intent(in)  fid,
character(len=*), intent(in)  varname,
integer, intent(in)  step,
logical, intent(in), optional  allow_missing,
logical, intent(in), optional  single,
integer, intent(in), optional  ntypes,
integer, intent(in), optional  dtype,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count 
)

Definition at line 2825 of file gtool_file.f90.

References dc_types::dp, file_get_datainfo(), file_read_data(), file_read_data_par(), dc_log::log(), and gtool_file_h::success_code.

2825  use mpi, only : mpi_comm_null
2826  implicit none
2827 
2828  real(DP), intent(out) :: var(:,:)
2829  integer, intent( in) :: fid
2830  character(len=*), intent( in) :: varname
2831  integer, intent( in) :: step
2832  logical, intent( in), optional :: allow_missing !--- if data is missing, set value to zero
2833  logical, intent( in), optional :: single
2834  integer, intent( in), optional :: ntypes ! number of dtypes
2835  integer, intent( in), optional :: dtype ! MPI derived datatype for read buffer
2836  integer, intent( in), optional :: start(:) ! request starts to global variable
2837  integer, intent( in), optional :: count(:) ! request sizes to global variable
2838 
2839  type(datainfo) :: dinfo
2840  integer :: error
2841 
2842  intrinsic size, shape
2843  !---------------------------------------------------------------------------
2844 
2845  !--- get data information
2846  call file_get_datainfo( dinfo, & ! (out)
2847  fid, varname, step, .false., & ! (in)
2848  error ) ! (out)
2849 
2850  !--- verify
2851  if ( error /= success_code ) then
2852  if ( present(allow_missing) ) then
2853  if ( allow_missing ) then
2854  write(message,*) 'xxx [INPUT]/[File] data not found! : ', &
2855  'varname= ',trim(varname),', step=',step
2856  call log('I', message)
2857  call log('I', 'xxx [INPUT]/[File] Value is set to 0.')
2858  var(:,:) = 0.0_dp
2859  else
2860  call log('E', 'xxx failed to get data information :'//trim(varname))
2861  end if
2862  else
2863  call log('E', 'xxx failed to get data information :'//trim(varname))
2864  end if
2865  end if
2866 
2867  if ( dinfo%rank /= 2 ) then
2868  write(message,*) 'xxx rank is not 2', dinfo%rank
2869  call log('E', message)
2870  end if
2871 
2872  if (present(ntypes) ) then
2873  call file_read_data_par( var(:,:), & ! (out)
2874  dinfo, size(shape(var)), ntypes, dtype, start, count, & ! (in)
2875  error ) ! (out)
2876  else
2877  call file_read_data( var(:,:), & ! (out)
2878  dinfo, dp, & ! (in)
2879  error ) ! (out)
2880  end if
2881  if ( error /= success_code ) then
2882  call log('E', 'xxx failed to get data value')
2883  end if
2884 
2885  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
int32_t file_read_data_par(void *var, datainfo_t *dinfo, MPI_Offset ntypes, MPI_Datatype dtype, MPI_Offset *start, MPI_Offset *count)
Definition: gtool_netcdf.c:439
int32_t file_read_data(void *var, datainfo_t *dinfo, int32_t precision)
Definition: gtool_netcdf.c:390
Here is the call graph for this function:

◆ filereadvar3drealsp()

subroutine gtool_file::filereadvar3drealsp ( real(sp), dimension(:,:,:), intent(out)  var,
integer, intent(in)  fid,
character(len=*), intent(in)  varname,
integer, intent(in)  step,
logical, intent(in), optional  allow_missing,
logical, intent(in), optional  single,
integer, intent(in), optional  ntypes,
integer, intent(in), optional  dtype,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count 
)

Definition at line 2899 of file gtool_file.f90.

References file_get_datainfo(), file_read_data(), file_read_data_par(), dc_log::log(), dc_types::sp, and gtool_file_h::success_code.

2899  use mpi, only : mpi_comm_null
2900  implicit none
2901 
2902  real(SP), intent(out) :: var(:,:,:)
2903  integer, intent( in) :: fid
2904  character(len=*), intent( in) :: varname
2905  integer, intent( in) :: step
2906  logical, intent( in), optional :: allow_missing !--- if data is missing, set value to zero
2907  logical, intent( in), optional :: single
2908  integer, intent( in), optional :: ntypes ! number of dtypes
2909  integer, intent( in), optional :: dtype ! MPI derived datatype for read buffer
2910  integer, intent( in), optional :: start(:) ! request starts to global variable
2911  integer, intent( in), optional :: count(:) ! request sizes to global variable
2912 
2913  type(datainfo) :: dinfo
2914  integer :: error
2915 
2916  intrinsic size, shape
2917  !---------------------------------------------------------------------------
2918 
2919  !--- get data information
2920  call file_get_datainfo( dinfo, & ! (out)
2921  fid, varname, step, .false., & ! (in)
2922  error ) ! (out)
2923 
2924  !--- verify
2925  if ( error /= success_code ) then
2926  if ( present(allow_missing) ) then
2927  if ( allow_missing ) then
2928  write(message,*) 'xxx [INPUT]/[File] data not found! : ', &
2929  'varname= ',trim(varname),', step=',step
2930  call log('I', message)
2931  call log('I', 'xxx [INPUT]/[File] Value is set to 0.')
2932  var(:,:,:) = 0.0_sp
2933  else
2934  call log('E', 'xxx failed to get data information :'//trim(varname))
2935  end if
2936  else
2937  call log('E', 'xxx failed to get data information :'//trim(varname))
2938  end if
2939  end if
2940 
2941  if ( dinfo%rank /= 3 ) then
2942  write(message,*) 'xxx rank is not 3', dinfo%rank
2943  call log('E', message)
2944  end if
2945 
2946  if (present(ntypes) ) then
2947  call file_read_data_par( var(:,:,:), & ! (out)
2948  dinfo, size(shape(var)), ntypes, dtype, start, count, & ! (in)
2949  error ) ! (out)
2950  else
2951  call file_read_data( var(:,:,:), & ! (out)
2952  dinfo, sp, & ! (in)
2953  error ) ! (out)
2954  end if
2955  if ( error /= success_code ) then
2956  call log('E', 'xxx failed to get data value')
2957  end if
2958 
2959  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
int32_t file_read_data_par(void *var, datainfo_t *dinfo, MPI_Offset ntypes, MPI_Datatype dtype, MPI_Offset *start, MPI_Offset *count)
Definition: gtool_netcdf.c:439
int32_t file_read_data(void *var, datainfo_t *dinfo, int32_t precision)
Definition: gtool_netcdf.c:390
Here is the call graph for this function:

◆ filereadvar3drealdp()

subroutine gtool_file::filereadvar3drealdp ( real(dp), dimension(:,:,:), intent(out)  var,
integer, intent(in)  fid,
character(len=*), intent(in)  varname,
integer, intent(in)  step,
logical, intent(in), optional  allow_missing,
logical, intent(in), optional  single,
integer, intent(in), optional  ntypes,
integer, intent(in), optional  dtype,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count 
)

Definition at line 2973 of file gtool_file.f90.

References dc_types::dp, file_get_datainfo(), file_read_data(), file_read_data_par(), dc_log::log(), and gtool_file_h::success_code.

2973  use mpi, only : mpi_comm_null
2974  implicit none
2975 
2976  real(DP), intent(out) :: var(:,:,:)
2977  integer, intent( in) :: fid
2978  character(len=*), intent( in) :: varname
2979  integer, intent( in) :: step
2980  logical, intent( in), optional :: allow_missing !--- if data is missing, set value to zero
2981  logical, intent( in), optional :: single
2982  integer, intent( in), optional :: ntypes ! number of dtypes
2983  integer, intent( in), optional :: dtype ! MPI derived datatype for read buffer
2984  integer, intent( in), optional :: start(:) ! request starts to global variable
2985  integer, intent( in), optional :: count(:) ! request sizes to global variable
2986 
2987  type(datainfo) :: dinfo
2988  integer :: error
2989 
2990  intrinsic size, shape
2991  !---------------------------------------------------------------------------
2992 
2993  !--- get data information
2994  call file_get_datainfo( dinfo, & ! (out)
2995  fid, varname, step, .false., & ! (in)
2996  error ) ! (out)
2997 
2998  !--- verify
2999  if ( error /= success_code ) then
3000  if ( present(allow_missing) ) then
3001  if ( allow_missing ) then
3002  write(message,*) 'xxx [INPUT]/[File] data not found! : ', &
3003  'varname= ',trim(varname),', step=',step
3004  call log('I', message)
3005  call log('I', 'xxx [INPUT]/[File] Value is set to 0.')
3006  var(:,:,:) = 0.0_dp
3007  else
3008  call log('E', 'xxx failed to get data information :'//trim(varname))
3009  end if
3010  else
3011  call log('E', 'xxx failed to get data information :'//trim(varname))
3012  end if
3013  end if
3014 
3015  if ( dinfo%rank /= 3 ) then
3016  write(message,*) 'xxx rank is not 3', dinfo%rank
3017  call log('E', message)
3018  end if
3019 
3020  if (present(ntypes) ) then
3021  call file_read_data_par( var(:,:,:), & ! (out)
3022  dinfo, size(shape(var)), ntypes, dtype, start, count, & ! (in)
3023  error ) ! (out)
3024  else
3025  call file_read_data( var(:,:,:), & ! (out)
3026  dinfo, dp, & ! (in)
3027  error ) ! (out)
3028  end if
3029  if ( error /= success_code ) then
3030  call log('E', 'xxx failed to get data value')
3031  end if
3032 
3033  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
int32_t file_read_data_par(void *var, datainfo_t *dinfo, MPI_Offset ntypes, MPI_Datatype dtype, MPI_Offset *start, MPI_Offset *count)
Definition: gtool_netcdf.c:439
int32_t file_read_data(void *var, datainfo_t *dinfo, int32_t precision)
Definition: gtool_netcdf.c:390
Here is the call graph for this function:

◆ filereadvar4drealsp()

subroutine gtool_file::filereadvar4drealsp ( real(sp), dimension(:,:,:,:), intent(out)  var,
integer, intent(in)  fid,
character(len=*), intent(in)  varname,
integer, intent(in)  step,
logical, intent(in), optional  allow_missing,
logical, intent(in), optional  single,
integer, intent(in), optional  ntypes,
integer, intent(in), optional  dtype,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count 
)

Definition at line 3047 of file gtool_file.f90.

References file_get_datainfo(), file_read_data(), file_read_data_par(), dc_log::log(), dc_types::sp, and gtool_file_h::success_code.

3047  use mpi, only : mpi_comm_null
3048  implicit none
3049 
3050  real(SP), intent(out) :: var(:,:,:,:)
3051  integer, intent( in) :: fid
3052  character(len=*), intent( in) :: varname
3053  integer, intent( in) :: step
3054  logical, intent( in), optional :: allow_missing !--- if data is missing, set value to zero
3055  logical, intent( in), optional :: single
3056  integer, intent( in), optional :: ntypes ! number of dtypes
3057  integer, intent( in), optional :: dtype ! MPI derived datatype for read buffer
3058  integer, intent( in), optional :: start(:) ! request starts to global variable
3059  integer, intent( in), optional :: count(:) ! request sizes to global variable
3060 
3061  type(datainfo) :: dinfo
3062  integer :: error
3063 
3064  intrinsic size, shape
3065  !---------------------------------------------------------------------------
3066 
3067  !--- get data information
3068  call file_get_datainfo( dinfo, & ! (out)
3069  fid, varname, step, .false., & ! (in)
3070  error ) ! (out)
3071 
3072  !--- verify
3073  if ( error /= success_code ) then
3074  if ( present(allow_missing) ) then
3075  if ( allow_missing ) then
3076  write(message,*) 'xxx [INPUT]/[File] data not found! : ', &
3077  'varname= ',trim(varname),', step=',step
3078  call log('I', message)
3079  call log('I', 'xxx [INPUT]/[File] Value is set to 0.')
3080  var(:,:,:,:) = 0.0_sp
3081  else
3082  call log('E', 'xxx failed to get data information :'//trim(varname))
3083  end if
3084  else
3085  call log('E', 'xxx failed to get data information :'//trim(varname))
3086  end if
3087  end if
3088 
3089  if ( dinfo%rank /= 4 ) then
3090  write(message,*) 'xxx rank is not 4', dinfo%rank
3091  call log('E', message)
3092  end if
3093 
3094  if (present(ntypes) ) then
3095  call file_read_data_par( var(:,:,:,:), & ! (out)
3096  dinfo, size(shape(var)), ntypes, dtype, start, count, & ! (in)
3097  error ) ! (out)
3098  else
3099  call file_read_data( var(:,:,:,:), & ! (out)
3100  dinfo, sp, & ! (in)
3101  error ) ! (out)
3102  end if
3103  if ( error /= success_code ) then
3104  call log('E', 'xxx failed to get data value')
3105  end if
3106 
3107  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
int32_t file_read_data_par(void *var, datainfo_t *dinfo, MPI_Offset ntypes, MPI_Datatype dtype, MPI_Offset *start, MPI_Offset *count)
Definition: gtool_netcdf.c:439
int32_t file_read_data(void *var, datainfo_t *dinfo, int32_t precision)
Definition: gtool_netcdf.c:390
Here is the call graph for this function:

◆ filereadvar4drealdp()

subroutine gtool_file::filereadvar4drealdp ( real(dp), dimension(:,:,:,:), intent(out)  var,
integer, intent(in)  fid,
character(len=*), intent(in)  varname,
integer, intent(in)  step,
logical, intent(in), optional  allow_missing,
logical, intent(in), optional  single,
integer, intent(in), optional  ntypes,
integer, intent(in), optional  dtype,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count 
)

Definition at line 3121 of file gtool_file.f90.

References dc_types::dp, file_get_datainfo(), file_read_data(), file_read_data_par(), dc_log::log(), and gtool_file_h::success_code.

3121  use mpi, only : mpi_comm_null
3122  implicit none
3123 
3124  real(DP), intent(out) :: var(:,:,:,:)
3125  integer, intent( in) :: fid
3126  character(len=*), intent( in) :: varname
3127  integer, intent( in) :: step
3128  logical, intent( in), optional :: allow_missing !--- if data is missing, set value to zero
3129  logical, intent( in), optional :: single
3130  integer, intent( in), optional :: ntypes ! number of dtypes
3131  integer, intent( in), optional :: dtype ! MPI derived datatype for read buffer
3132  integer, intent( in), optional :: start(:) ! request starts to global variable
3133  integer, intent( in), optional :: count(:) ! request sizes to global variable
3134 
3135  type(datainfo) :: dinfo
3136  integer :: error
3137 
3138  intrinsic size, shape
3139  !---------------------------------------------------------------------------
3140 
3141  !--- get data information
3142  call file_get_datainfo( dinfo, & ! (out)
3143  fid, varname, step, .false., & ! (in)
3144  error ) ! (out)
3145 
3146  !--- verify
3147  if ( error /= success_code ) then
3148  if ( present(allow_missing) ) then
3149  if ( allow_missing ) then
3150  write(message,*) 'xxx [INPUT]/[File] data not found! : ', &
3151  'varname= ',trim(varname),', step=',step
3152  call log('I', message)
3153  call log('I', 'xxx [INPUT]/[File] Value is set to 0.')
3154  var(:,:,:,:) = 0.0_dp
3155  else
3156  call log('E', 'xxx failed to get data information :'//trim(varname))
3157  end if
3158  else
3159  call log('E', 'xxx failed to get data information :'//trim(varname))
3160  end if
3161  end if
3162 
3163  if ( dinfo%rank /= 4 ) then
3164  write(message,*) 'xxx rank is not 4', dinfo%rank
3165  call log('E', message)
3166  end if
3167 
3168  if (present(ntypes) ) then
3169  call file_read_data_par( var(:,:,:,:), & ! (out)
3170  dinfo, size(shape(var)), ntypes, dtype, start, count, & ! (in)
3171  error ) ! (out)
3172  else
3173  call file_read_data( var(:,:,:,:), & ! (out)
3174  dinfo, dp, & ! (in)
3175  error ) ! (out)
3176  end if
3177  if ( error /= success_code ) then
3178  call log('E', 'xxx failed to get data value')
3179  end if
3180 
3181  return
int32_t file_get_datainfo(datainfo_t *dinfo, int32_t fid, char *varname, int32_t step, int32_t suppress)
Definition: gtool_netcdf.c:218
int32_t file_read_data_par(void *var, datainfo_t *dinfo, MPI_Offset ntypes, MPI_Datatype dtype, MPI_Offset *start, MPI_Offset *count)
Definition: gtool_netcdf.c:439
int32_t file_read_data(void *var, datainfo_t *dinfo, int32_t precision)
Definition: gtool_netcdf.c:390
Here is the call graph for this function:

◆ filewrite1drealsp()

subroutine gtool_file::filewrite1drealsp ( integer, intent(in)  fid,
integer, intent(in)  vid,
real(sp), dimension(:), intent(in)  var,
real(dp), intent(in)  t_start,
real(dp), intent(in)  t_end,
integer, dimension(:), intent(in), optional  start,
integer, dimension(:), intent(in), optional  count,
integer, intent(in), optional  ndims 
)

Definition at line 3197 of file gtool_file.f90.

References dc_types::dp, file_write_data(), dc_log::log(), dc_types::sp, and gtool_file_h::success_code.

3197  implicit none
3198 
3199  real(SP), intent(in) :: var(:)
3200  integer, intent(in) :: fid
3201  integer, intent(in) :: vid
3202  real(DP), intent(in) :: t_start
3203  real(DP), intent(in) :: t_end
3204  integer, intent(in), optional :: start(:)
3205  integer, intent(in), optional :: count(:) ! when var has been reshaped to 1D
3206  integer, intent(in), optional :: ndims ! when var has been reshaped to 1D
3207 
3208  real(DP) :: ts, te
3209 
3210  integer :: start_(1)
3211 
3212  integer :: error, n
3213  character(len=100) :: str
3214 
3215  intrinsic shape
3216  !---------------------------------------------------------------------------
3217 
3218  ts = t_start
3219  te = t_end
3220 
3221  if ( present(ndims) ) then
3222  ! history variable has been reshaped to 1D
3223  ! In this case, start and count must be present
3224 
3225  if ( .not. present(start) ) then
3226  call log('E', 'start argument is neccessary when ndims is specified')
3227  end if
3228  if ( .not. present(count) ) then
3229  call log('E', 'count argument is neccessary when ndims is specified')
3230  end if
3231 
3232  call file_write_data( fid, vid, var(:), ts, te, sp, & ! (in)
3233  ndims, start, count, & ! (in)
3234  error ) ! (out)
3235  else
3236  ! this is for restart variable which keeps its original shape
3237  if ( present(start) ) then
3238  start_(:) = start(:)
3239  else
3240  start_(:) = 1
3241  end if
3242  call file_write_data( fid, vid, var(:), ts, te, sp, & ! (in)
3243  1, start_, shape(var), & ! (in)
3244  error ) ! (out)
3245  end if
3246  if ( error /= success_code ) then
3247  do n = 1, file_vid_count
3248  if ( file_vid_list(n) == vid ) then
3249  write(str,*) 'xxx failed to write data: ', trim(file_vname_list(n)), mpi_myrank
3250  exit
3251  end if
3252  enddo
3253  call log('E', trim(str))
3254  end if
3255 
3256  return
int32_t file_write_data(int32_t fid, int32_t vid, void *var, real64_t t_start, real64_t t_end, int32_t precision, MPI_Offset *start, MPI_Offset *count)
Here is the call graph for this function:

◆ fileenddef()

subroutine, public gtool_file::fileenddef ( integer, intent(in)  fid)

Definition at line 3761 of file gtool_file.f90.

References file_enddef(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_enddef(), and gtool_history::historywriteaxes().

3761  implicit none
3762 
3763  integer, intent(in) :: fid
3764 
3765  integer :: error, n
3766  !---------------------------------------------------------------------------
3767 
3768  if ( fid < 0 ) return
3769 
3770  do n = 1, file_fid_count-1
3771  if ( file_fid_list(n) == fid ) exit
3772  end do
3773  if ( fid .NE. file_fid_list(n) ) then
3774  write(message,*) 'xxx in FileEndDef invalid fid' , fid
3775  call log('E', message)
3776  end if
3777 
3778  call file_enddef( fid, error )
3779 
3780  if ( error == success_code ) then
3781 
3782  call log("I",'')
3783  write(message,'(A,I3.3,2A)') '###### File end define mode : No.', file_fid_list(n), &
3784  ', name = ', trim(file_fname_list(n))
3785  call log("I",message)
3786  call log("I",'')
3787 
3788  else
3789 
3790  call log('E', 'xxx failed to exit define mode')
3791 
3792  end if
3793 
3794  return
int32_t file_enddef(int32_t fid)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fileattachbuffer()

subroutine, public gtool_file::fileattachbuffer ( integer, intent(in)  fid,
integer, intent(in)  buf_amount 
)

Definition at line 3802 of file gtool_file.f90.

References file_attach_buffer(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_enddef(), and gtool_history::historyaddvariable().

3802  implicit none
3803 
3804  integer, intent(in) :: fid
3805  integer, intent(in) :: buf_amount
3806 
3807  integer :: error, n
3808  !---------------------------------------------------------------------------
3809 
3810  if ( fid < 0 ) return
3811 
3812  do n = 1, file_fid_count-1
3813  if ( file_fid_list(n) == fid ) exit
3814  end do
3815  if ( fid .NE. file_fid_list(n) ) then
3816  write(message,*) 'xxx in FileAttachBuffer invalid fid' , fid
3817  call log('E', message)
3818  end if
3819 
3820  call file_attach_buffer( fid, buf_amount, error )
3821 
3822  if ( error == success_code ) then
3823 
3824  write(message,'(A,I3.3,3A,I10)') '###### File attach buffer : No.', file_fid_list(n), &
3825  ', name = ', trim(file_fname_list(n)), &
3826  ', size = ', buf_amount
3827  call log("I",message)
3828 
3829  else
3830 
3831  call log('E', 'xxx failed to attach buffer in PnetCDF')
3832 
3833  end if
3834 
3835  return
int32_t file_attach_buffer(int32_t fid, int32_t buf_amount)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filedetachbuffer()

subroutine, public gtool_file::filedetachbuffer ( integer, intent(in)  fid)

Definition at line 3842 of file gtool_file.f90.

References file_detach_buffer(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_close(), and gtool_history::historyfinalize().

3842  implicit none
3843 
3844  integer, intent(in) :: fid
3845 
3846  integer :: error, n
3847  !---------------------------------------------------------------------------
3848 
3849  if ( fid < 0 ) return
3850 
3851  do n = 1, file_fid_count-1
3852  if ( file_fid_list(n) == fid ) exit
3853  end do
3854  if ( n == file_fid_count ) return ! already closed
3855 
3856  if ( fid .NE. file_fid_list(n) ) then
3857  write(message,*) 'xxx in FileDetachBuffer invalid fid' , fid
3858  call log('E', message)
3859  end if
3860 
3861  call file_detach_buffer( fid, error )
3862 
3863  if ( error == success_code ) then
3864 
3865  write(message,'(A,I3.3,2A)') '###### File detach buffer : No.', file_fid_list(n), &
3866  ', name = ', trim(file_fname_list(n))
3867  call log("I",message)
3868 
3869  else
3870 
3871  call log('E', 'xxx failed to detach buffer in PnetCDF')
3872 
3873  end if
3874 
3875  return
int32_t file_detach_buffer(int32_t fid)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fileflush()

subroutine, public gtool_file::fileflush ( integer, intent(in)  fid)

Definition at line 3883 of file gtool_file.f90.

References file_flush(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_fileio::fileio_close(), scale_fileio::fileio_enddef(), scale_fileio::fileio_flush(), gtool_history::historywriteall(), and gtool_history::historywriteaxes().

3883  implicit none
3884 
3885  integer, intent(in) :: fid
3886 
3887  integer :: error, n
3888  !---------------------------------------------------------------------------
3889 
3890  if ( fid < 0 ) return
3891  if ( file_fid_count == 1 ) return
3892 
3893  do n = 1, file_fid_count-1
3894  if ( file_fid_list(n) == fid ) exit
3895  end do
3896  if ( n == file_fid_count ) return ! already closed
3897 
3898  if ( fid .NE. file_fid_list(n) ) then
3899  write(message,*) 'xxx in FileFlush invalid fid' , fid
3900  call log('E', message)
3901  end if
3902 
3903  call file_flush( fid, error )
3904 
3905  if ( error == success_code ) then
3906 
3907  write(message,'(A,I3.3,2A)') '###### File flush : No.', file_fid_list(n), &
3908  ', name = ', trim(file_fname_list(n))
3909  call log("I",message)
3910  call log("I",'')
3911 
3912  else
3913 
3914  call log('E', 'xxx failed to flush PnetCDF pending requests')
3915 
3916  end if
3917 
3918  return
int32_t file_flush(int32_t fid)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fileclose()

subroutine, public gtool_file::fileclose ( integer, intent(in)  fid)

Definition at line 3925 of file gtool_file.f90.

References gtool_file_h::already_closed_code, file_close(), dc_log::log(), and gtool_file_h::success_code.

Referenced by filecloseall(), scale_fileio::fileio_close(), and gtool_history::historyfinalize().

3925  implicit none
3926 
3927  integer, intent(in) :: fid
3928 
3929  character(len=File_HLONG) :: fname
3930  integer :: error
3931  integer :: n
3932  !---------------------------------------------------------------------------
3933 
3934  if ( fid < 0 ) return
3935 
3936  do n = 1, file_fid_count-1
3937  if ( file_fid_list(n) == fid ) exit
3938  end do
3939  if ( n == file_fid_count ) return ! already closed
3940 
3941  if ( fid /= file_fid_list(n) ) then
3942  write(message,*) 'xxx in FileClose invalid fid ', fid
3943  call log('E', message)
3944  end if
3945 
3946  call file_close( fid, error )
3947 
3948  if ( error == success_code ) then
3949 
3950  write(message,'(A,I3.3,2A)') '###### File close : No.', file_fid_list(n), &
3951  ', name = ', trim(file_fname_list(n))
3952  call log("I",message)
3953  call log("I",'')
3954 
3955  elseif( error /= already_closed_code ) then
3956 
3957  call log('E', 'xxx failed to close file')
3958 
3959  end if
3960 
3961  do n = 1, file_fid_count-1
3962  if ( file_fid_list(n) == fid ) then
3963  file_fid_list(n) = -1
3964  file_fname_list(n) = ''
3965  end if
3966  end do
3967 
3968  return
int32_t file_close(int32_t fid)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filecloseall()

subroutine, public gtool_file::filecloseall ( )

Definition at line 3972 of file gtool_file.f90.

References fileclose().

Referenced by scale_process::prc_mpitimestat(), mod_rm_driver::scalerm(), scalerm_launcher(), and mod_rm_prep::scalerm_prep().

3972  implicit none
3973 
3974  integer n
3975  !---------------------------------------------------------------------------
3976 
3977  do n = 1, file_fid_count-1
3978  call fileclose( file_fid_list(n) )
3979  enddo
3980 
3981  return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filemakefname()

subroutine, public gtool_file::filemakefname ( character(len=*), intent(out)  fname,
character(len=*), intent(in)  basename,
character(len=*), intent(in)  prefix,
integer, intent(in)  myrank,
integer, intent(in)  len 
)

Definition at line 3993 of file gtool_file.f90.

References file_open(), dc_log::log(), and gtool_file_h::success_code.

Referenced by scale_external_io::externalfilereadoffset4drealdp().

3993  character(len=*), intent(out) :: fname
3994  character(len=*), intent( in) :: basename
3995  character(len=*), intent( in) :: prefix
3996  integer, intent( in) :: myrank
3997  integer, intent( in) :: len
3998 
3999  ! 12345678901234567
4000  character(len=17) :: fmt = "(A, '.', A, I*.*)"
4001  !---------------------------------------------------------------------------
4002 
4003  if ( len < 1 .or. len > 9 ) then
4004  call log('E', 'xxx len is invalid')
4005  end if
4006 
4007  write(fmt(14:14),'(I1)') len
4008  write(fmt(16:16),'(I1)') len
4009  write(fname, fmt) trim(basename), trim(prefix), myrank
4010 
4011  return
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ rmiss

real(dp), parameter, public gtool_file::rmiss = -9.9999e+30