gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
Functions/Subroutines
historyget.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine historygetdouble0 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 Input netCDF data. NetCDF data with gtool4 conventions is assumed, but most netCDF data is expected to be input.
 
subroutine historygetdouble1 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7 (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble0pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble1pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7pointer (file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble0timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble1timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble0pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble1pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7timer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7pointertimer (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble0timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble1timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble0pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble1pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7timed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7pointertimed (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble0timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble1timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble0pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble1pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble2pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble3pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble4pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble5pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble6pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetdouble7pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal0pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal1pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal2pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal3pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal4pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal5pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal6pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetreal7pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7timei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint0pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint1pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint2pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint3pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint4pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint5pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint6pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine historygetint7pointertimei (file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
 
subroutine lookup_growable_url (file, varname, url, range, flag_time_exist, time_name, err)
 
subroutine actual_iorange_dump (url, actual_url, returned_time, time_name, err)
 
character(string) function file_rename_mpi (file)
 

Function/Subroutine Documentation

◆ actual_iorange_dump()

subroutine actual_iorange_dump ( character(*), intent(in)  url,
character(*), intent(out), optional  actual_url,
real(dp), intent(out), optional  returned_time,
character(*), intent(in), optional  time_name,
logical, intent(out), optional  err 
)

Definition at line 18334 of file historyget.f90.

18338 !
18339 ! 変数 URL *url* に対応するファイル, 変数からデータを取り出す際,
18340 ! 入出力範囲指定によって切り出される値の本当の位置を
18341 ! 標準出力に出力する. *actual_url* が与えられる場合には
18342 ! その引数に値を返し, 標準出力には出力しない.
18343 !
18344 ! HistoryGet, HistoryGetPointer が下層で呼び出している
18345 ! gtdata_generic::Get は, 入出力範囲が次元データに正確に一致しない
18346 ! 場合, 最も近い値を自動的に選択して切り出す. しかしその結果,
18347 ! 「本当はどこのデータを入力したか」がわからない場合があるため,
18348 ! このサブルーチンによって正確な位置をユーザに知らせる.
18349 !
18350 ! *time_name* と *returned_time* が与えられる場合には,
18351 ! *returned_time* に時刻の数値を返す.
18352 ! *returned_time* のみ与えられる場合には 0 を返す.
18353 !
18354 use dc_types, only: dp, string
18355 use dc_string, only: split, joinchar, tochar, roundnum
18357 use dc_url, only: gt_comma, gt_equal, gt_colon
18358 use dc_message, only: messagenotify
18359 use dc_trace, only: dbgmessage
18360 use dc_regex, only: match
18361 use gtdata_types, only: gt_variable
18362 use gtdata_generic, only: open, close, get
18363 use dc_error, only: storeerror, dc_noerr
18364 character(*), intent(in):: url ! 変数 URL
18365 character(*), intent(out), optional:: actual_url
18366 ! 正確な入出力範囲指定に修正
18367 ! された変数 URL
18368 real(DP), intent(out), optional:: returned_time ! データの時刻
18369 character(*), intent(in), optional:: time_name ! 時刻次元の名称
18370 logical, intent(out), optional:: err ! エラーのフラグ
18371 character(STRING), pointer :: iorange_each(:) =>null()
18372 character(STRING), pointer :: range_values(:) =>null()
18373 character(STRING), pointer :: new_iorange_each(:) =>null()
18374 character(STRING), pointer :: new_range_values(:) =>null()
18375 character(STRING):: new_url, new_iorange, url_tmp, dimname
18376 character(STRING):: file, varname, range, cause_c
18377 type(GT_VARIABLE):: var
18378 real :: iorange_value(1)
18379 integer :: i, j, regex_len, regex_stat, stat
18380 character(*), parameter :: subname = "actual_iorange_dump"
18381 continue
18382 new_iorange = ''
18383 cause_c = ''
18384 stat = dc_noerr
18385 if ( present(returned_time) ) then
18386 returned_time = 0.
18387 end if
18388 call urlsplit(url, file, varname, iorange=range)
18389 call split(range, iorange_each, gt_comma)
18390 allocate(new_iorange_each(size(iorange_each)))
18391 do i = 1, size(iorange_each)
18392 call match(gt_equal, iorange_each(i), regex_len, regex_stat)
18393 if (regex_stat < 0 .or. regex_len < 2) then
18394 new_iorange_each(i) = trim(iorange_each(i))
18395 else
18396 dimname = iorange_each(i)(:regex_len-1)
18397 call split(iorange_each(i)(regex_len+1:), range_values, gt_colon)
18398 allocate(new_range_values(size(range_values)))
18399 do j = 1, size(range_values)
18400 url_tmp = urlmerge(file, dimname, '', &
18401 & iorange=trim(dimname) // gt_equal // trim(range_values(j)))
18402 call open(var, url_tmp)
18403 call get(var, iorange_value, 1)
18404 call close(var)
18405 if ( present(time_name) .and. present(returned_time) ) then
18406 if ( trim(time_name) == trim(dimname) ) then
18407 returned_time = iorange_value(1)
18408 end if
18409 end if
18410 new_range_values(j) = roundnum( tochar(iorange_value) )
18411 end do
18412 new_iorange_each(i) = &
18413 & trim(dimname) // gt_equal // joinchar(new_range_values, gt_colon)
18414 deallocate(new_range_values)
18415 deallocate(range_values)
18416 end if
18417 end do
18418 new_iorange = joinchar(new_iorange_each, gt_comma)
18419 deallocate(new_iorange_each)
18420 deallocate(iorange_each)
18421 new_url = urlmerge(file, varname, '', new_iorange)
18422 if (present(actual_url)) then
18423 actual_url = new_url
18424 else
18425 call messagenotify('M', subname, 'Input %c', c1=trim(new_url))
18426 end if
18427 call storeerror(stat, subname, err, cause_c)
Error handling module.
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
integer, parameter, public dc_noerr
Error storage variables
Definition dc_error.f90:468
Message output module.
Provides simple regular expression subroutine: 'match'.
Definition dc_regex.f90:62
subroutine, public match(pattern, text, start, length)
Definition dc_regex.f90:469
Handling character types.
Definition dc_string.f90:83
character(string) function, public joinchar(carray, expr)
Debug tracing module.
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:680
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public dp
Double Precision Real number
Definition dc_types.f90:92
integer, parameter, public string
Character length for string
Definition dc_types.f90:137
Variable URL string parser.
Definition dc_url.f90:61
character, parameter, public gt_comma
Definition dc_url.f90:102
character, parameter, public gt_equal
Definition dc_url.f90:104
character, parameter, public gt_colon
Definition dc_url.f90:100

References dc_trace::dbgmessage(), dc_error::dc_noerr, dc_types::dp, dc_url::gt_colon, dc_url::gt_comma, dc_url::gt_equal, dc_string::joinchar(), dc_regex::match(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ file_rename_mpi()

character(string) function file_rename_mpi ( character(*), intent(in)  file)

Definition at line 18429 of file historyget.f90.

18430 use dc_types, only: string, token
18431 use dc_string, only: cprintft, lchar
18432 ! MPI ライブラリ
18433 ! MPI library
18434 !
18435 use mpi
18436 implicit none
18437 character(*), intent(in):: file
18438 character(STRING):: result
18439 logical:: initflag_mpi
18440 character(STRING):: file_mpi
18441 character(TOKEN):: nc_suffix_mpi
18442 integer:: myrank_mpi, err_mpi, index_nc_mpi
18443 character(TOKEN), save:: save_myrank = ''
18444 character(*), parameter:: rank_prefix = '_rank'
18445 continue
18446 if ( trim(save_myrank) == '' ) then
18447 call mpi_initialized(initflag_mpi, err_mpi)
18448 if ( initflag_mpi ) then
18449 call mpi_comm_rank(mpi_comm_world, myrank_mpi, err_mpi)
18450 save_myrank = cprintft( '%06d', i = (/ myrank_mpi /) )
18451 else
18452 result = file
18453 return
18454 end if
18455 end if
18456 file_mpi = file
18457 index_nc_mpi = index( lchar(file), '.nc' )
18458 if ( index_nc_mpi > 1 ) then
18459 nc_suffix_mpi = file_mpi(index_nc_mpi:)
18460 file_mpi = file_mpi(:index_nc_mpi-1) // &
18461 & rank_prefix // trim( save_myrank ) // trim( nc_suffix_mpi )
18462 elseif ( index_nc_mpi > 0 ) then
18463 file_mpi = rank_prefix // trim( save_myrank ) // trim( file_mpi )
18464 else
18465 file_mpi = trim( file_mpi ) // rank_prefix // trim( save_myrank )
18466 end if
18467 result = file_mpi
integer, parameter, public token
Character length for word, token
Definition dc_types.f90:128

References dc_types::string, and dc_types::token.

◆ historygetdouble0()

subroutine historygetdouble0 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Input netCDF data. NetCDF data with gtool4 conventions is assumed, but most netCDF data is expected to be input.

Give filename to file, variable name to varname. Input data is returned to array. If you want to use pointer array, use HistoryGetPointer.

By default, recent data, that is to say, data clipped with maximum time is input. In order to input data clipped with other time or other dimension, use time option or range option as follows.

In order to get data at certain time, specify the time to time. Type is integer or single precision real or double precision.

Give gtool4 comma-graphy to range, then input data can be clipped by an arbitrary dimension. If null character is given to range, data is not clipped.

HistoryGet is generic name of multiple subroutines. Integer, single precision real, and double precision real 0 – 7 rank array can be given to array.

By default, when data is input, filename and variable name and clipping information is printed. The message is suppressed when .true. is given to quiet.

Definition at line 91 of file historyget.f90.

93 use gtdata_types, only: gt_variable
94 use gtdata_generic, only: open, inquire, close, get
95 use dc_string, only: tochar
97 use dc_regex, only: match
98 use dc_types, only: string, dp
99 use dc_message, only: messagenotify
101 ! MPI ライブラリ
102 ! MPI library
103 use mpi
104 implicit none
105 character(*), intent(in):: file
106 character(*), intent(in):: varname
107 character(*), intent(in), optional:: range
108 logical, intent(in), optional:: quiet
109 logical, intent(in), optional:: flag_mpi_split
110 real(DP), intent(out), optional:: returned_time ! データの時刻
111 logical, intent(out), optional:: flag_time_exist
112 logical, intent(out), optional:: err
113 real(DP), intent(out) :: array
114 real(DP) :: array_tmp(1)
115 type(GT_VARIABLE):: var
116 character(STRING):: file_work, url, actual_url
117 integer:: rank, alldims, array_rank
118 integer:: domain
119 character(STRING):: tname
120 integer:: stat
121 character(STRING):: cause_c
122 character(*), parameter :: subname = "HistoryGetDouble0"
123 interface
124 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
125 character(*), intent(in):: file
126 character(*), intent(in):: varname
127 character(*), intent(out):: url
128 character(*), intent(in), optional:: range
129 logical, intent(out), optional:: flag_time_exist
130 character(*), intent(out), optional:: time_name
131 logical, intent(out), optional:: err
132 end subroutine lookup_growable_url
133 end interface
134 interface
135 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
136 use dc_types, only: dp
137 character(*), intent(in) :: url ! 変数 URL
138 character(*), intent(out), optional :: actual_url
139 ! 正確な入出力範囲指定
140 real(DP), intent(out), optional:: returned_time ! データの時刻
141 character(*), intent(in), optional:: time_name ! 時刻次元の名称
142 logical, intent(out), optional :: err ! エラーのフラグ
143 end subroutine actual_iorange_dump
144 end interface
145 interface
146 function file_rename_mpi( file ) result(result)
147 use dc_types, only: string
148 character(*), intent(in):: file
149 character(STRING):: result
150 end function file_rename_mpi
151 end interface
152 continue
153 cause_c = ''
154 stat = dc_noerr
155 file_work = file
156 ! ファイル名の変更 (MPI 用)
157 ! Change filename (for MPI)
158 !
159 if ( present_and_true( flag_mpi_split ) ) &
160 & file_work = file_rename_mpi( file_work )
161 ! 最新時刻の URL 取得
162 ! Get URL of latest time
163 !
164 call lookup_growable_url(file_work, varname, url, range, &
165 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
166 if ( present_and_true(err) ) then
167 stat = gt_enoturl
168 cause_c = url
169 goto 999
170 end if
171 ! ファイルオープン
172 ! File open
173 call open( var, url, err = err )
174 if ( present_and_true(err) ) then
175 stat = gt_enoturl
176 cause_c = url
177 goto 999
178 end if
179 !-------------------------------------------------------------------
180 ! 配列形状のチェック
181 ! Check array shape
182 !-------------------------------------------------------------------
183 ! 入力ファイル中のデータの次元数
184 ! Get size of dimesions in data of an input file
185 !
186 call inquire( var = var, & ! (in)
187 & rank = rank, alldims = alldims ) ! (out)
188 ! 引数の次元数のチェック (縮退されている場合には減らす)
189 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
190 array_rank = 0
191 ! 次元数の比較
192 ! Compare sizes of dimensions
193 !
194 if ( .not. 0 == rank .and. .not. array_rank == rank ) then
195 if ( .not. present_and_true(quiet) ) then
196 call messagenotify('W', subname, &
197 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
198 & i = (/rank, 0/), c1 = trim(url) )
199 end if
200 stat = gt_erankmismatch
201 cause_c = 'array'
202 goto 999
203 end if
204 ! 入力ファイル中のデータの配列形状取得
205 ! Get shape of data in an input file
206 !-------------------------------------
207 ! データ取得
208 ! Get data
209 call inquire( var = var, & ! (in)
210 & size = domain ) ! (out)
211 call get( var = var, & ! (inout)
212 & nvalue = domain, & ! (in)
213 & value = array_tmp) ! (out)
214 array = array_tmp(1)
215 call close( var )
216 !-------------------------------------
217 ! データファイル名と切り出し範囲の印字
218 ! Print data filename and clipping range
219 call actual_iorange_dump(url, & ! (in)
220 & actual_url, returned_time, & ! (out) optional
221 & time_name = tname, & ! (in) optional
222 & err = err) ! (out) optional
223 if ( .not. present_and_true(quiet) ) then
224 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
225 end if
226999 continue
227 call storeerror(stat, subname, err, cause_c)
subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
character(string) function file_rename_mpi(file)
integer, parameter, public gt_erankmismatch
Definition dc_error.f90:524
integer, parameter, public gt_enoturl
Definition dc_error.f90:525
Judge optional control parameters.
logical function, public present_and_not_empty(arg)
logical function, public present_and_true(arg)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble0pointer()

subroutine historygetdouble0pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 4804 of file historyget.f90.

4806 use gtdata_types, only: gt_variable
4807 use gtdata_generic, only: open, inquire, close, get
4808 use dc_string, only: tochar
4810 use dc_types, only: string, dp
4811 use dc_message, only: messagenotify
4812 use dc_trace, only: dbgmessage
4813 ! MPI ライブラリ
4814 ! MPI library
4815 !
4816 use mpi
4817 implicit none
4818 character(*), intent(in):: file
4819 character(*), intent(in):: varname
4820 character(*), intent(in), optional:: range
4821 logical, intent(in), optional:: quiet
4822 logical, intent(in), optional:: flag_mpi_split
4823 real(DP), intent(out), optional:: returned_time ! データの時刻
4824 logical, intent(out), optional:: flag_time_exist
4825 logical, intent(out), optional:: err
4826 integer:: domain
4827 real(DP), pointer :: array ! (out)
4828 real(DP), target :: array_tmp(1)
4829 type(GT_VARIABLE):: var
4830 character(STRING):: file_work, url, actual_url
4831 character(STRING):: tname
4832 character(*), parameter :: subname = "HistoryGetDouble0Pointer"
4833 interface
4834 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4835 character(*), intent(in):: file
4836 character(*), intent(in):: varname
4837 character(*), intent(out):: url
4838 character(*), intent(in), optional:: range
4839 logical, intent(out), optional:: flag_time_exist
4840 character(*), intent(out), optional:: time_name
4841 logical, intent(out), optional:: err
4842 end subroutine lookup_growable_url
4843 end interface
4844 interface
4845 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4846 use dc_types, only: dp
4847 character(*), intent(in) :: url ! 変数 URL
4848 character(*), intent(out), optional :: actual_url
4849 ! 正確な入出力範囲指定
4850 real(DP), intent(out), optional:: returned_time ! データの時刻
4851 character(*), intent(in), optional:: time_name ! 時刻次元の名称
4852 logical, intent(out), optional :: err ! エラーのフラグ
4853 end subroutine actual_iorange_dump
4854 end interface
4855 interface
4856 function file_rename_mpi( file ) result(result)
4857 use dc_types, only: string
4858 character(*), intent(in):: file
4859 character(STRING):: result
4860 end function file_rename_mpi
4861 end interface
4862 continue
4863 file_work = file
4864 ! ファイル名の変更 (MPI 用)
4865 ! Change filename (for MPI)
4866 !
4867 if ( present_and_true( flag_mpi_split ) ) &
4868 & file_work = file_rename_mpi( file_work )
4869 ! 必要な情報を gtool 変数化
4870 !
4871 call lookup_growable_url(file_work, varname, url, range, &
4872 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4873 allocate(array)
4874 call dbgmessage('@ url =%c', c1=trim(url))
4875 ! いよいよデータ取得
4876 !
4877 call open(var, url, err)
4878 call inquire(var=var, size=domain)
4879 call get(var, array_tmp, domain, err)
4880 array = array_tmp(1)
4881 call close(var, err)
4882 call actual_iorange_dump(url, & ! (in)
4883 & actual_url, returned_time, & ! (out) optional
4884 & time_name = tname, & ! (in) optional
4885 & err = err) ! (out) optional
4886 if ( .not. present_and_true(quiet) ) then
4887 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
4888 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble0pointertimed()

subroutine historygetdouble0pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11187 of file historyget.f90.

11190 use dc_string, only: tochar, split
11191 use dc_types, only: string, dp
11192 use dc_trace, only: dbgmessage
11193 use dc_url, only: url_chop_iorange, gt_equal
11194 use dc_present, only: present_and_true
11195 ! MPI ライブラリ
11196 ! MPI library
11197 !
11198 use mpi
11199 implicit none
11200 character(*), intent(in):: file, varname
11201 real(DP), intent(in):: time
11202 logical, intent(in), optional:: quiet
11203 real(DP), pointer :: array
11204 logical, intent(in), optional:: flag_mpi_split
11205 real(DP), intent(out), optional:: returned_time
11206 logical, intent(out), optional:: flag_time_exist
11207 logical, intent(out), optional:: err
11208 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11209 character(STRING), pointer:: carray (:)
11210 character(STRING):: tname
11211 interface
11212 subroutine historygetdouble0pointer(&
11213 & file, varname, array, range, quiet, &
11214 & flag_mpi_split, returned_time, flag_time_exist, err)
11215 use dc_types, only: dp
11216 character(*), intent(in):: file
11217 character(*), intent(in):: varname
11218 character(*), intent(in), optional:: range
11219 logical, intent(in), optional:: quiet
11220 logical, intent(in), optional:: flag_mpi_split
11221 real(DP), intent(out), optional:: returned_time
11222 logical, intent(out), optional:: flag_time_exist
11223 logical, intent(out), optional:: err
11224 real(DP), pointer :: array
11225 end subroutine historygetdouble0pointer
11226 end interface
11227 interface
11228 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11229 character(*), intent(in):: file
11230 character(*), intent(in):: varname
11231 character(*), intent(out):: url
11232 character(*), intent(in), optional:: range
11233 logical, intent(out), optional:: flag_time_exist
11234 character(*), intent(out), optional:: time_name
11235 logical, intent(out), optional:: err
11236 end subroutine lookup_growable_url
11237 end interface
11238 interface
11239 function file_rename_mpi( file ) result(result)
11240 use dc_types, only: string
11241 character(*), intent(in):: file
11242 character(STRING):: result
11243 end function file_rename_mpi
11244 end interface
11245 continue
11246 file_work = file
11247 if ( present_and_true( flag_mpi_split ) ) &
11248 & file_work = file_rename_mpi( file_work )
11249 call lookup_growable_url(file = file_work, varname = varname, &
11250 & url = url, &
11251 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11252 call url_chop_iorange( &
11253 & fullname = url, iorange = iorange, remainder = remainder )
11254 call split( str = iorange, carray = carray, sep = gt_equal )
11255 timevar_name = carray(1)
11256 deallocate( carray )
11257 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11258 call historygetdouble0pointer( file = file, &
11259 & varname = varname, array = array, &
11260 & range = time_range, quiet = quiet, &
11261 & flag_mpi_split = flag_mpi_split, &
11262 & returned_time = returned_time, &
11263 & flag_time_exist = flag_time_exist, &
11264 & err = err )
subroutine historygetdouble0pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine, public url_chop_iorange(fullname, iorange, remainder)
Definition dc_url.f90:301

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble0pointertimei()

subroutine historygetdouble0pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14979 of file historyget.f90.

14982 use dc_string, only: tochar, split
14983 use dc_types, only: string, dp
14984 use dc_trace, only: dbgmessage
14985 use dc_url, only: url_chop_iorange, gt_equal
14986 use dc_present, only: present_and_true
14987 ! MPI ライブラリ
14988 ! MPI library
14989 !
14990 use mpi
14991 implicit none
14992 character(*), intent(in):: file, varname
14993 integer, intent(in):: time
14994 logical, intent(in), optional:: quiet
14995 real(DP), pointer :: array
14996 logical, intent(in), optional:: flag_mpi_split
14997 real(DP), intent(out), optional:: returned_time
14998 logical, intent(out), optional:: flag_time_exist
14999 logical, intent(out), optional:: err
15000 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15001 character(STRING), pointer:: carray (:)
15002 character(STRING):: tname
15003 interface
15004 subroutine historygetdouble0pointer(&
15005 & file, varname, array, range, quiet, &
15006 & flag_mpi_split, returned_time, flag_time_exist, err)
15007 use dc_types, only: dp
15008 character(*), intent(in):: file
15009 character(*), intent(in):: varname
15010 character(*), intent(in), optional:: range
15011 logical, intent(in), optional:: quiet
15012 logical, intent(in), optional:: flag_mpi_split
15013 real(DP), intent(out), optional:: returned_time
15014 logical, intent(out), optional:: flag_time_exist
15015 logical, intent(out), optional:: err
15016 real(DP), pointer :: array
15017 end subroutine historygetdouble0pointer
15018 end interface
15019 interface
15020 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15021 character(*), intent(in):: file
15022 character(*), intent(in):: varname
15023 character(*), intent(out):: url
15024 character(*), intent(in), optional:: range
15025 logical, intent(out), optional:: flag_time_exist
15026 character(*), intent(out), optional:: time_name
15027 logical, intent(out), optional:: err
15028 end subroutine lookup_growable_url
15029 end interface
15030 interface
15031 function file_rename_mpi( file ) result(result)
15032 use dc_types, only: string
15033 character(*), intent(in):: file
15034 character(STRING):: result
15035 end function file_rename_mpi
15036 end interface
15037 continue
15038 file_work = file
15039 if ( present_and_true( flag_mpi_split ) ) &
15040 & file_work = file_rename_mpi( file_work )
15041 call lookup_growable_url(file = file_work, varname = varname, &
15042 & url = url, &
15043 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15044 call url_chop_iorange( &
15045 & fullname = url, iorange = iorange, remainder = remainder )
15046 call split( str = iorange, carray = carray, sep = gt_equal )
15047 timevar_name = carray(1)
15048 deallocate( carray )
15049 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15050 call historygetdouble0pointer( file = file, &
15051 & varname = varname, array = array, &
15052 & range = time_range, quiet = quiet, &
15053 & flag_mpi_split = flag_mpi_split, &
15054 & returned_time = returned_time, &
15055 & flag_time_exist = flag_time_exist, &
15056 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble0pointertimer()

subroutine historygetdouble0pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7395 of file historyget.f90.

7398 use dc_string, only: tochar, split
7399 use dc_types, only: string, dp, sp
7400 use dc_trace, only: dbgmessage
7401 use dc_url, only: url_chop_iorange, gt_equal
7402 use dc_present, only: present_and_true
7403 ! MPI ライブラリ
7404 ! MPI library
7405 !
7406 use mpi
7407 implicit none
7408 character(*), intent(in):: file, varname
7409 real(SP), intent(in):: time
7410 logical, intent(in), optional:: quiet
7411 real(DP), pointer :: array
7412 logical, intent(in), optional:: flag_mpi_split
7413 real(DP), intent(out), optional:: returned_time
7414 logical, intent(out), optional:: flag_time_exist
7415 logical, intent(out), optional:: err
7416 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7417 character(STRING), pointer:: carray (:)
7418 character(STRING):: tname
7419 interface
7420 subroutine historygetdouble0pointer(&
7421 & file, varname, array, range, quiet, &
7422 & flag_mpi_split, returned_time, flag_time_exist, err)
7423 use dc_types, only: dp
7424 character(*), intent(in):: file
7425 character(*), intent(in):: varname
7426 character(*), intent(in), optional:: range
7427 logical, intent(in), optional:: quiet
7428 logical, intent(in), optional:: flag_mpi_split
7429 real(DP), intent(out), optional:: returned_time
7430 logical, intent(out), optional:: flag_time_exist
7431 logical, intent(out), optional:: err
7432 real(DP), pointer :: array
7433 end subroutine historygetdouble0pointer
7434 end interface
7435 interface
7436 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7437 character(*), intent(in):: file
7438 character(*), intent(in):: varname
7439 character(*), intent(out):: url
7440 character(*), intent(in), optional:: range
7441 logical, intent(out), optional:: flag_time_exist
7442 character(*), intent(out), optional:: time_name
7443 logical, intent(out), optional:: err
7444 end subroutine lookup_growable_url
7445 end interface
7446 interface
7447 function file_rename_mpi( file ) result(result)
7448 use dc_types, only: string
7449 character(*), intent(in):: file
7450 character(STRING):: result
7451 end function file_rename_mpi
7452 end interface
7453 continue
7454 file_work = file
7455 if ( present_and_true( flag_mpi_split ) ) &
7456 & file_work = file_rename_mpi( file_work )
7457 call lookup_growable_url(file = file_work, varname = varname, &
7458 & url = url, &
7459 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7460 call url_chop_iorange( &
7461 & fullname = url, iorange = iorange, remainder = remainder )
7462 call split( str = iorange, carray = carray, sep = gt_equal )
7463 timevar_name = carray(1)
7464 deallocate( carray )
7465 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7466 call historygetdouble0pointer( file = file, &
7467 & varname = varname, array = array, &
7468 & range = time_range, quiet = quiet, &
7469 & flag_mpi_split = flag_mpi_split, &
7470 & returned_time = returned_time, &
7471 & flag_time_exist = flag_time_exist, &
7472 & err = err )
integer, parameter, public sp
Single Precision Real number.
Definition dc_types.f90:82

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble0timed()

subroutine historygetdouble0timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10555 of file historyget.f90.

10558 use dc_string, only: tochar, split
10559 use dc_types, only: string, dp
10560 use dc_trace, only: dbgmessage
10561 use dc_url, only: url_chop_iorange, gt_equal
10562 use dc_present, only: present_and_true
10563 ! MPI ライブラリ
10564 ! MPI library
10565 !
10566 use mpi
10567 implicit none
10568 character(*), intent(in):: file, varname
10569 real(DP), intent(in):: time
10570 logical, intent(in), optional:: quiet
10571 real(DP), intent(out) :: array
10572 logical, intent(in), optional:: flag_mpi_split
10573 real(DP), intent(out), optional:: returned_time
10574 logical, intent(out), optional:: flag_time_exist
10575 logical, intent(out), optional:: err
10576 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10577 character(STRING), pointer:: carray (:)
10578 character(STRING):: tname
10579 interface
10580 subroutine historygetdouble0(&
10581 & file, varname, array, range, quiet, &
10582 & flag_mpi_split, returned_time, flag_time_exist, err)
10583 use dc_types, only: dp
10584 character(*), intent(in):: file
10585 character(*), intent(in):: varname
10586 character(*), intent(in), optional:: range
10587 logical, intent(in), optional:: quiet
10588 logical, intent(in), optional:: flag_mpi_split
10589 real(DP), intent(out), optional:: returned_time
10590 logical, intent(out), optional:: flag_time_exist
10591 logical, intent(out), optional:: err
10592 real(DP), intent(out) :: array
10593 end subroutine historygetdouble0
10594 end interface
10595 interface
10596 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10597 character(*), intent(in):: file
10598 character(*), intent(in):: varname
10599 character(*), intent(out):: url
10600 character(*), intent(in), optional:: range
10601 logical, intent(out), optional:: flag_time_exist
10602 character(*), intent(out), optional:: time_name
10603 logical, intent(out), optional:: err
10604 end subroutine lookup_growable_url
10605 end interface
10606 interface
10607 function file_rename_mpi( file ) result(result)
10608 use dc_types, only: string
10609 character(*), intent(in):: file
10610 character(STRING):: result
10611 end function file_rename_mpi
10612 end interface
10613 continue
10614 file_work = file
10615 if ( present_and_true( flag_mpi_split ) ) &
10616 & file_work = file_rename_mpi( file_work )
10617 call lookup_growable_url(file = file_work, varname = varname, &
10618 & url = url, &
10619 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10620 call url_chop_iorange( &
10621 & fullname = url, iorange = iorange, remainder = remainder )
10622 call split( str = iorange, carray = carray, sep = gt_equal )
10623 timevar_name = carray(1)
10624 deallocate( carray )
10625 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10626 call historygetdouble0( file = file, &
10627 & varname = varname, array = array, &
10628 & range = time_range, quiet = quiet, &
10629 & flag_mpi_split = flag_mpi_split, &
10630 & returned_time = returned_time, &
10631 & flag_time_exist = flag_time_exist, &
10632 & err = err )
subroutine historygetdouble0(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
Input netCDF data. NetCDF data with gtool4 conventions is assumed, but most netCDF data is expected t...

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble0timei()

subroutine historygetdouble0timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14347 of file historyget.f90.

14350 use dc_string, only: tochar, split
14351 use dc_types, only: string, dp
14352 use dc_trace, only: dbgmessage
14353 use dc_url, only: url_chop_iorange, gt_equal
14354 use dc_present, only: present_and_true
14355 ! MPI ライブラリ
14356 ! MPI library
14357 !
14358 use mpi
14359 implicit none
14360 character(*), intent(in):: file, varname
14361 integer, intent(in):: time
14362 logical, intent(in), optional:: quiet
14363 real(DP), intent(out) :: array
14364 logical, intent(in), optional:: flag_mpi_split
14365 real(DP), intent(out), optional:: returned_time
14366 logical, intent(out), optional:: flag_time_exist
14367 logical, intent(out), optional:: err
14368 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14369 character(STRING), pointer:: carray (:)
14370 character(STRING):: tname
14371 interface
14372 subroutine historygetdouble0(&
14373 & file, varname, array, range, quiet, &
14374 & flag_mpi_split, returned_time, flag_time_exist, err)
14375 use dc_types, only: dp
14376 character(*), intent(in):: file
14377 character(*), intent(in):: varname
14378 character(*), intent(in), optional:: range
14379 logical, intent(in), optional:: quiet
14380 logical, intent(in), optional:: flag_mpi_split
14381 real(DP), intent(out), optional:: returned_time
14382 logical, intent(out), optional:: flag_time_exist
14383 logical, intent(out), optional:: err
14384 real(DP), intent(out) :: array
14385 end subroutine historygetdouble0
14386 end interface
14387 interface
14388 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14389 character(*), intent(in):: file
14390 character(*), intent(in):: varname
14391 character(*), intent(out):: url
14392 character(*), intent(in), optional:: range
14393 logical, intent(out), optional:: flag_time_exist
14394 character(*), intent(out), optional:: time_name
14395 logical, intent(out), optional:: err
14396 end subroutine lookup_growable_url
14397 end interface
14398 interface
14399 function file_rename_mpi( file ) result(result)
14400 use dc_types, only: string
14401 character(*), intent(in):: file
14402 character(STRING):: result
14403 end function file_rename_mpi
14404 end interface
14405 continue
14406 file_work = file
14407 if ( present_and_true( flag_mpi_split ) ) &
14408 & file_work = file_rename_mpi( file_work )
14409 call lookup_growable_url(file = file_work, varname = varname, &
14410 & url = url, &
14411 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14412 call url_chop_iorange( &
14413 & fullname = url, iorange = iorange, remainder = remainder )
14414 call split( str = iorange, carray = carray, sep = gt_equal )
14415 timevar_name = carray(1)
14416 deallocate( carray )
14417 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14418 call historygetdouble0( file = file, &
14419 & varname = varname, array = array, &
14420 & range = time_range, quiet = quiet, &
14421 & flag_mpi_split = flag_mpi_split, &
14422 & returned_time = returned_time, &
14423 & flag_time_exist = flag_time_exist, &
14424 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble0timer()

subroutine historygetdouble0timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6763 of file historyget.f90.

6766 use dc_string, only: tochar, split
6767 use dc_types, only: string, dp, sp
6768 use dc_trace, only: dbgmessage
6769 use dc_url, only: url_chop_iorange, gt_equal
6770 use dc_present, only: present_and_true
6771 ! MPI ライブラリ
6772 ! MPI library
6773 !
6774 use mpi
6775 implicit none
6776 character(*), intent(in):: file, varname
6777 real(SP), intent(in):: time
6778 logical, intent(in), optional:: quiet
6779 real(DP), intent(out) :: array
6780 logical, intent(in), optional:: flag_mpi_split
6781 real(DP), intent(out), optional:: returned_time
6782 logical, intent(out), optional:: flag_time_exist
6783 logical, intent(out), optional:: err
6784 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
6785 character(STRING), pointer:: carray (:)
6786 character(STRING):: tname
6787 interface
6788 subroutine historygetdouble0(&
6789 & file, varname, array, range, quiet, &
6790 & flag_mpi_split, returned_time, flag_time_exist, err)
6791 use dc_types, only: dp
6792 character(*), intent(in):: file
6793 character(*), intent(in):: varname
6794 character(*), intent(in), optional:: range
6795 logical, intent(in), optional:: quiet
6796 logical, intent(in), optional:: flag_mpi_split
6797 real(DP), intent(out), optional:: returned_time
6798 logical, intent(out), optional:: flag_time_exist
6799 logical, intent(out), optional:: err
6800 real(DP), intent(out) :: array
6801 end subroutine historygetdouble0
6802 end interface
6803 interface
6804 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6805 character(*), intent(in):: file
6806 character(*), intent(in):: varname
6807 character(*), intent(out):: url
6808 character(*), intent(in), optional:: range
6809 logical, intent(out), optional:: flag_time_exist
6810 character(*), intent(out), optional:: time_name
6811 logical, intent(out), optional:: err
6812 end subroutine lookup_growable_url
6813 end interface
6814 interface
6815 function file_rename_mpi( file ) result(result)
6816 use dc_types, only: string
6817 character(*), intent(in):: file
6818 character(STRING):: result
6819 end function file_rename_mpi
6820 end interface
6821 continue
6822 file_work = file
6823 if ( present_and_true( flag_mpi_split ) ) &
6824 & file_work = file_rename_mpi( file_work )
6825 call lookup_growable_url(file = file_work, varname = varname, &
6826 & url = url, &
6827 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6828 call url_chop_iorange( &
6829 & fullname = url, iorange = iorange, remainder = remainder )
6830 call split( str = iorange, carray = carray, sep = gt_equal )
6831 timevar_name = carray(1)
6832 deallocate( carray )
6833 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
6834 call historygetdouble0( file = file, &
6835 & varname = varname, array = array, &
6836 & range = time_range, quiet = quiet, &
6837 & flag_mpi_split = flag_mpi_split, &
6838 & returned_time = returned_time, &
6839 & flag_time_exist = flag_time_exist, &
6840 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble1()

subroutine historygetdouble1 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 229 of file historyget.f90.

231 use gtdata_types, only: gt_variable
232 use gtdata_generic, only: open, inquire, close, get
233 use dc_string, only: tochar
235 use dc_regex, only: match
236 use dc_types, only: string, dp
237 use dc_message, only: messagenotify
240 ! MPI ライブラリ
241 ! MPI library
242 use mpi
243 implicit none
244 character(*), intent(in):: file
245 character(*), intent(in):: varname
246 character(*), intent(in), optional:: range
247 logical, intent(in), optional:: quiet
248 logical, intent(in), optional:: flag_mpi_split
249 real(DP), intent(out), optional:: returned_time ! データの時刻
250 logical, intent(out), optional:: flag_time_exist
251 logical, intent(out), optional:: err
252 real(DP), intent(out) :: array(:)
253 real(DP), allocatable :: array_tmp(:)
254 integer:: array_allsize
255 integer:: array_shape(1), data_shape(1), array_shape_check(1)
256 integer:: allcount
257 logical:: inq_err
258 type(GT_VARIABLE):: var
259 character(STRING):: file_work, url, actual_url
260 integer:: rank, alldims, array_rank
261 integer:: domain
262 character(STRING):: tname
263 integer:: stat
264 character(STRING):: cause_c
265 character(*), parameter :: subname = "HistoryGetDouble1"
266 interface
267 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
268 character(*), intent(in):: file
269 character(*), intent(in):: varname
270 character(*), intent(out):: url
271 character(*), intent(in), optional:: range
272 logical, intent(out), optional:: flag_time_exist
273 character(*), intent(out), optional:: time_name
274 logical, intent(out), optional:: err
275 end subroutine lookup_growable_url
276 end interface
277 interface
278 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
279 use dc_types, only: dp
280 character(*), intent(in) :: url ! 変数 URL
281 character(*), intent(out), optional :: actual_url
282 ! 正確な入出力範囲指定
283 real(DP), intent(out), optional:: returned_time ! データの時刻
284 character(*), intent(in), optional:: time_name ! 時刻次元の名称
285 logical, intent(out), optional :: err ! エラーのフラグ
286 end subroutine actual_iorange_dump
287 end interface
288 interface
289 function file_rename_mpi( file ) result(result)
290 use dc_types, only: string
291 character(*), intent(in):: file
292 character(STRING):: result
293 end function file_rename_mpi
294 end interface
295 continue
296 cause_c = ''
297 stat = dc_noerr
298 file_work = file
299 array_shape = shape( array )
300 array_allsize = size( array )
301 ! ファイル名の変更 (MPI 用)
302 ! Change filename (for MPI)
303 !
304 if ( present_and_true( flag_mpi_split ) ) &
305 & file_work = file_rename_mpi( file_work )
306 ! 最新時刻の URL 取得
307 ! Get URL of latest time
308 !
309 call lookup_growable_url(file_work, varname, url, range, &
310 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
311 if ( present_and_true(err) ) then
312 stat = gt_enoturl
313 cause_c = url
314 goto 999
315 end if
316 ! ファイルオープン
317 ! File open
318 call open( var, url, err = err )
319 if ( present_and_true(err) ) then
320 stat = gt_enoturl
321 cause_c = url
322 goto 999
323 end if
324 !-------------------------------------------------------------------
325 ! 配列形状のチェック
326 ! Check array shape
327 !-------------------------------------------------------------------
328 ! 入力ファイル中のデータの次元数
329 ! Get size of dimesions in data of an input file
330 !
331 call inquire( var = var, & ! (in)
332 & rank = rank, alldims = alldims ) ! (out)
333 ! 引数の次元数のチェック (縮退されている場合には減らす)
334 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
335 array_rank = 1
336 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
337 ! 次元数の比較
338 ! Compare sizes of dimensions
339 !
340 if ( .not. 1 == rank .and. .not. array_rank == rank ) then
341 if ( .not. present_and_true(quiet) ) then
342 call messagenotify('W', subname, &
343 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
344 & i = (/rank, 1/), c1 = trim(url) )
345 end if
346 stat = gt_erankmismatch
347 cause_c = 'array'
348 goto 999
349 end if
350 ! 入力ファイル中のデータの配列形状取得
351 ! Get shape of data in an input file
352 call inquire( var = var , dimord = 1, & ! (in)
353 & allcount = allcount, err = inq_err ) ! (out)
354 if ( .not. inq_err ) then
355 data_shape(1) = allcount
356 else
357 data_shape(1) = 1
358 end if
359 ! 引数の配列形状整形
360 ! Arrange shape of an argument
361 !
362 array_shape_check = array_shape
363 ! 配列形状の比較
364 ! Compare shapes
365 !
366 if ( .not. all( array_shape_check == data_shape ) ) then
367 if ( .not. present_and_true(quiet) ) then
368 call messagenotify('W', subname, &
369 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
370 & c1 = trim( url ), &
371 & c2 = trim( tochar( data_shape(1:rank) ) ), &
372 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
373 end if
375 cause_c = 'array'
376 goto 999
377 end if
378 !-------------------------------------
379 ! データ取得
380 ! Get data
381 call inquire( var = var, & ! (in)
382 & size = domain ) ! (out)
383 if ( allocated( array_tmp ) ) deallocate( array_tmp )
384 allocate( array_tmp(array_allsize) )
385 call get( var, array_tmp, domain )
386 array = reshape( array_tmp, array_shape )
387 deallocate( array_tmp )
388 call close( var )
389 !-------------------------------------
390 ! データファイル名と切り出し範囲の印字
391 ! Print data filename and clipping range
392 call actual_iorange_dump(url, & ! (in)
393 & actual_url, returned_time, & ! (out) optional
394 & time_name = tname, & ! (in) optional
395 & err = err) ! (out) optional
396 if ( .not. present_and_true(quiet) ) then
397 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
398 end if
399999 continue
400 call storeerror(stat, subname, err, cause_c)
integer, parameter, public gt_eargsizemismatch
Definition dc_error.f90:515

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble1pointer()

subroutine historygetdouble1pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 4890 of file historyget.f90.

4892 use gtdata_types, only: gt_variable
4893 use gtdata_generic, only: open, inquire, close, get
4894 use dc_string, only: tochar
4896 use dc_types, only: string, dp
4897 use dc_message, only: messagenotify
4898 use dc_trace, only: dbgmessage
4899 ! MPI ライブラリ
4900 ! MPI library
4901 !
4902 use mpi
4903 implicit none
4904 character(*), intent(in):: file
4905 character(*), intent(in):: varname
4906 character(*), intent(in), optional:: range
4907 logical, intent(in), optional:: quiet
4908 logical, intent(in), optional:: flag_mpi_split
4909 real(DP), intent(out), optional:: returned_time ! データの時刻
4910 logical, intent(out), optional:: flag_time_exist
4911 logical, intent(out), optional:: err
4912 real(DP), pointer :: array(:) ! (out)
4913 type(GT_VARIABLE):: var
4914 character(STRING):: file_work, url, actual_url
4915 character(STRING):: tname
4916 character(*), parameter :: subname = "HistoryGetDouble1Pointer"
4917 interface
4918 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4919 character(*), intent(in):: file
4920 character(*), intent(in):: varname
4921 character(*), intent(out):: url
4922 character(*), intent(in), optional:: range
4923 logical, intent(out), optional:: flag_time_exist
4924 character(*), intent(out), optional:: time_name
4925 logical, intent(out), optional:: err
4926 end subroutine lookup_growable_url
4927 end interface
4928 interface
4929 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4930 use dc_types, only: dp
4931 character(*), intent(in) :: url ! 変数 URL
4932 character(*), intent(out), optional :: actual_url
4933 ! 正確な入出力範囲指定
4934 real(DP), intent(out), optional:: returned_time ! データの時刻
4935 character(*), intent(in), optional:: time_name ! 時刻次元の名称
4936 logical, intent(out), optional :: err ! エラーのフラグ
4937 end subroutine actual_iorange_dump
4938 end interface
4939 interface
4940 function file_rename_mpi( file ) result(result)
4941 use dc_types, only: string
4942 character(*), intent(in):: file
4943 character(STRING):: result
4944 end function file_rename_mpi
4945 end interface
4946 continue
4947 file_work = file
4948 ! ファイル名の変更 (MPI 用)
4949 ! Change filename (for MPI)
4950 !
4951 if ( present_and_true( flag_mpi_split ) ) &
4952 & file_work = file_rename_mpi( file_work )
4953 ! 必要な情報を gtool 変数化
4954 !
4955 call lookup_growable_url(file_work, varname, url, range, &
4956 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4957 call dbgmessage('@ url =%c', c1=trim(url))
4958 ! いよいよデータ取得
4959 !
4960 call open(var, url, err)
4961 call get(var, array, err)
4962 call close(var, err)
4963 call actual_iorange_dump(url, & ! (in)
4964 & actual_url, returned_time, & ! (out) optional
4965 & time_name = tname, & ! (in) optional
4966 & err = err) ! (out) optional
4967 if ( .not. present_and_true(quiet) ) then
4968 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
4969 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble1pointertimed()

subroutine historygetdouble1pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11266 of file historyget.f90.

11269 use dc_string, only: tochar, split
11270 use dc_types, only: string, dp
11271 use dc_trace, only: dbgmessage
11272 use dc_url, only: url_chop_iorange, gt_equal
11273 use dc_present, only: present_and_true
11274 ! MPI ライブラリ
11275 ! MPI library
11276 !
11277 use mpi
11278 implicit none
11279 character(*), intent(in):: file, varname
11280 real(DP), intent(in):: time
11281 logical, intent(in), optional:: quiet
11282 real(DP), pointer :: array(:)
11283 logical, intent(in), optional:: flag_mpi_split
11284 real(DP), intent(out), optional:: returned_time
11285 logical, intent(out), optional:: flag_time_exist
11286 logical, intent(out), optional:: err
11287 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11288 character(STRING), pointer:: carray (:)
11289 character(STRING):: tname
11290 interface
11291 subroutine historygetdouble1pointer(&
11292 & file, varname, array, range, quiet, &
11293 & flag_mpi_split, returned_time, flag_time_exist, err)
11294 use dc_types, only: dp
11295 character(*), intent(in):: file
11296 character(*), intent(in):: varname
11297 character(*), intent(in), optional:: range
11298 logical, intent(in), optional:: quiet
11299 logical, intent(in), optional:: flag_mpi_split
11300 real(DP), intent(out), optional:: returned_time
11301 logical, intent(out), optional:: flag_time_exist
11302 logical, intent(out), optional:: err
11303 real(DP), pointer :: array(:)
11304 end subroutine historygetdouble1pointer
11305 end interface
11306 interface
11307 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11308 character(*), intent(in):: file
11309 character(*), intent(in):: varname
11310 character(*), intent(out):: url
11311 character(*), intent(in), optional:: range
11312 logical, intent(out), optional:: flag_time_exist
11313 character(*), intent(out), optional:: time_name
11314 logical, intent(out), optional:: err
11315 end subroutine lookup_growable_url
11316 end interface
11317 interface
11318 function file_rename_mpi( file ) result(result)
11319 use dc_types, only: string
11320 character(*), intent(in):: file
11321 character(STRING):: result
11322 end function file_rename_mpi
11323 end interface
11324 continue
11325 file_work = file
11326 if ( present_and_true( flag_mpi_split ) ) &
11327 & file_work = file_rename_mpi( file_work )
11328 call lookup_growable_url(file = file_work, varname = varname, &
11329 & url = url, &
11330 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11331 call url_chop_iorange( &
11332 & fullname = url, iorange = iorange, remainder = remainder )
11333 call split( str = iorange, carray = carray, sep = gt_equal )
11334 timevar_name = carray(1)
11335 deallocate( carray )
11336 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11337 call historygetdouble1pointer( file = file, &
11338 & varname = varname, array = array, &
11339 & range = time_range, quiet = quiet, &
11340 & flag_mpi_split = flag_mpi_split, &
11341 & returned_time = returned_time, &
11342 & flag_time_exist = flag_time_exist, &
11343 & err = err )
subroutine historygetdouble1pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble1pointertimei()

subroutine historygetdouble1pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15058 of file historyget.f90.

15061 use dc_string, only: tochar, split
15062 use dc_types, only: string, dp
15063 use dc_trace, only: dbgmessage
15064 use dc_url, only: url_chop_iorange, gt_equal
15065 use dc_present, only: present_and_true
15066 ! MPI ライブラリ
15067 ! MPI library
15068 !
15069 use mpi
15070 implicit none
15071 character(*), intent(in):: file, varname
15072 integer, intent(in):: time
15073 logical, intent(in), optional:: quiet
15074 real(DP), pointer :: array(:)
15075 logical, intent(in), optional:: flag_mpi_split
15076 real(DP), intent(out), optional:: returned_time
15077 logical, intent(out), optional:: flag_time_exist
15078 logical, intent(out), optional:: err
15079 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15080 character(STRING), pointer:: carray (:)
15081 character(STRING):: tname
15082 interface
15083 subroutine historygetdouble1pointer(&
15084 & file, varname, array, range, quiet, &
15085 & flag_mpi_split, returned_time, flag_time_exist, err)
15086 use dc_types, only: dp
15087 character(*), intent(in):: file
15088 character(*), intent(in):: varname
15089 character(*), intent(in), optional:: range
15090 logical, intent(in), optional:: quiet
15091 logical, intent(in), optional:: flag_mpi_split
15092 real(DP), intent(out), optional:: returned_time
15093 logical, intent(out), optional:: flag_time_exist
15094 logical, intent(out), optional:: err
15095 real(DP), pointer :: array(:)
15096 end subroutine historygetdouble1pointer
15097 end interface
15098 interface
15099 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15100 character(*), intent(in):: file
15101 character(*), intent(in):: varname
15102 character(*), intent(out):: url
15103 character(*), intent(in), optional:: range
15104 logical, intent(out), optional:: flag_time_exist
15105 character(*), intent(out), optional:: time_name
15106 logical, intent(out), optional:: err
15107 end subroutine lookup_growable_url
15108 end interface
15109 interface
15110 function file_rename_mpi( file ) result(result)
15111 use dc_types, only: string
15112 character(*), intent(in):: file
15113 character(STRING):: result
15114 end function file_rename_mpi
15115 end interface
15116 continue
15117 file_work = file
15118 if ( present_and_true( flag_mpi_split ) ) &
15119 & file_work = file_rename_mpi( file_work )
15120 call lookup_growable_url(file = file_work, varname = varname, &
15121 & url = url, &
15122 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15123 call url_chop_iorange( &
15124 & fullname = url, iorange = iorange, remainder = remainder )
15125 call split( str = iorange, carray = carray, sep = gt_equal )
15126 timevar_name = carray(1)
15127 deallocate( carray )
15128 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15129 call historygetdouble1pointer( file = file, &
15130 & varname = varname, array = array, &
15131 & range = time_range, quiet = quiet, &
15132 & flag_mpi_split = flag_mpi_split, &
15133 & returned_time = returned_time, &
15134 & flag_time_exist = flag_time_exist, &
15135 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble1pointertimer()

subroutine historygetdouble1pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7474 of file historyget.f90.

7477 use dc_string, only: tochar, split
7478 use dc_types, only: string, dp, sp
7479 use dc_trace, only: dbgmessage
7480 use dc_url, only: url_chop_iorange, gt_equal
7481 use dc_present, only: present_and_true
7482 ! MPI ライブラリ
7483 ! MPI library
7484 !
7485 use mpi
7486 implicit none
7487 character(*), intent(in):: file, varname
7488 real(SP), intent(in):: time
7489 logical, intent(in), optional:: quiet
7490 real(DP), pointer :: array(:)
7491 logical, intent(in), optional:: flag_mpi_split
7492 real(DP), intent(out), optional:: returned_time
7493 logical, intent(out), optional:: flag_time_exist
7494 logical, intent(out), optional:: err
7495 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7496 character(STRING), pointer:: carray (:)
7497 character(STRING):: tname
7498 interface
7499 subroutine historygetdouble1pointer(&
7500 & file, varname, array, range, quiet, &
7501 & flag_mpi_split, returned_time, flag_time_exist, err)
7502 use dc_types, only: dp
7503 character(*), intent(in):: file
7504 character(*), intent(in):: varname
7505 character(*), intent(in), optional:: range
7506 logical, intent(in), optional:: quiet
7507 logical, intent(in), optional:: flag_mpi_split
7508 real(DP), intent(out), optional:: returned_time
7509 logical, intent(out), optional:: flag_time_exist
7510 logical, intent(out), optional:: err
7511 real(DP), pointer :: array(:)
7512 end subroutine historygetdouble1pointer
7513 end interface
7514 interface
7515 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7516 character(*), intent(in):: file
7517 character(*), intent(in):: varname
7518 character(*), intent(out):: url
7519 character(*), intent(in), optional:: range
7520 logical, intent(out), optional:: flag_time_exist
7521 character(*), intent(out), optional:: time_name
7522 logical, intent(out), optional:: err
7523 end subroutine lookup_growable_url
7524 end interface
7525 interface
7526 function file_rename_mpi( file ) result(result)
7527 use dc_types, only: string
7528 character(*), intent(in):: file
7529 character(STRING):: result
7530 end function file_rename_mpi
7531 end interface
7532 continue
7533 file_work = file
7534 if ( present_and_true( flag_mpi_split ) ) &
7535 & file_work = file_rename_mpi( file_work )
7536 call lookup_growable_url(file = file_work, varname = varname, &
7537 & url = url, &
7538 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7539 call url_chop_iorange( &
7540 & fullname = url, iorange = iorange, remainder = remainder )
7541 call split( str = iorange, carray = carray, sep = gt_equal )
7542 timevar_name = carray(1)
7543 deallocate( carray )
7544 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7545 call historygetdouble1pointer( file = file, &
7546 & varname = varname, array = array, &
7547 & range = time_range, quiet = quiet, &
7548 & flag_mpi_split = flag_mpi_split, &
7549 & returned_time = returned_time, &
7550 & flag_time_exist = flag_time_exist, &
7551 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble1timed()

subroutine historygetdouble1timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10634 of file historyget.f90.

10637 use dc_string, only: tochar, split
10638 use dc_types, only: string, dp
10639 use dc_trace, only: dbgmessage
10640 use dc_url, only: url_chop_iorange, gt_equal
10641 use dc_present, only: present_and_true
10642 ! MPI ライブラリ
10643 ! MPI library
10644 !
10645 use mpi
10646 implicit none
10647 character(*), intent(in):: file, varname
10648 real(DP), intent(in):: time
10649 logical, intent(in), optional:: quiet
10650 real(DP), intent(out) :: array(:)
10651 logical, intent(in), optional:: flag_mpi_split
10652 real(DP), intent(out), optional:: returned_time
10653 logical, intent(out), optional:: flag_time_exist
10654 logical, intent(out), optional:: err
10655 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10656 character(STRING), pointer:: carray (:)
10657 character(STRING):: tname
10658 interface
10659 subroutine historygetdouble1(&
10660 & file, varname, array, range, quiet, &
10661 & flag_mpi_split, returned_time, flag_time_exist, err)
10662 use dc_types, only: dp
10663 character(*), intent(in):: file
10664 character(*), intent(in):: varname
10665 character(*), intent(in), optional:: range
10666 logical, intent(in), optional:: quiet
10667 logical, intent(in), optional:: flag_mpi_split
10668 real(DP), intent(out), optional:: returned_time
10669 logical, intent(out), optional:: flag_time_exist
10670 logical, intent(out), optional:: err
10671 real(DP), intent(out) :: array(:)
10672 end subroutine historygetdouble1
10673 end interface
10674 interface
10675 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10676 character(*), intent(in):: file
10677 character(*), intent(in):: varname
10678 character(*), intent(out):: url
10679 character(*), intent(in), optional:: range
10680 logical, intent(out), optional:: flag_time_exist
10681 character(*), intent(out), optional:: time_name
10682 logical, intent(out), optional:: err
10683 end subroutine lookup_growable_url
10684 end interface
10685 interface
10686 function file_rename_mpi( file ) result(result)
10687 use dc_types, only: string
10688 character(*), intent(in):: file
10689 character(STRING):: result
10690 end function file_rename_mpi
10691 end interface
10692 continue
10693 file_work = file
10694 if ( present_and_true( flag_mpi_split ) ) &
10695 & file_work = file_rename_mpi( file_work )
10696 call lookup_growable_url(file = file_work, varname = varname, &
10697 & url = url, &
10698 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10699 call url_chop_iorange( &
10700 & fullname = url, iorange = iorange, remainder = remainder )
10701 call split( str = iorange, carray = carray, sep = gt_equal )
10702 timevar_name = carray(1)
10703 deallocate( carray )
10704 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10705 call historygetdouble1( file = file, &
10706 & varname = varname, array = array, &
10707 & range = time_range, quiet = quiet, &
10708 & flag_mpi_split = flag_mpi_split, &
10709 & returned_time = returned_time, &
10710 & flag_time_exist = flag_time_exist, &
10711 & err = err )
subroutine historygetdouble1(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble1timei()

subroutine historygetdouble1timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14426 of file historyget.f90.

14429 use dc_string, only: tochar, split
14430 use dc_types, only: string, dp
14431 use dc_trace, only: dbgmessage
14432 use dc_url, only: url_chop_iorange, gt_equal
14433 use dc_present, only: present_and_true
14434 ! MPI ライブラリ
14435 ! MPI library
14436 !
14437 use mpi
14438 implicit none
14439 character(*), intent(in):: file, varname
14440 integer, intent(in):: time
14441 logical, intent(in), optional:: quiet
14442 real(DP), intent(out) :: array(:)
14443 logical, intent(in), optional:: flag_mpi_split
14444 real(DP), intent(out), optional:: returned_time
14445 logical, intent(out), optional:: flag_time_exist
14446 logical, intent(out), optional:: err
14447 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14448 character(STRING), pointer:: carray (:)
14449 character(STRING):: tname
14450 interface
14451 subroutine historygetdouble1(&
14452 & file, varname, array, range, quiet, &
14453 & flag_mpi_split, returned_time, flag_time_exist, err)
14454 use dc_types, only: dp
14455 character(*), intent(in):: file
14456 character(*), intent(in):: varname
14457 character(*), intent(in), optional:: range
14458 logical, intent(in), optional:: quiet
14459 logical, intent(in), optional:: flag_mpi_split
14460 real(DP), intent(out), optional:: returned_time
14461 logical, intent(out), optional:: flag_time_exist
14462 logical, intent(out), optional:: err
14463 real(DP), intent(out) :: array(:)
14464 end subroutine historygetdouble1
14465 end interface
14466 interface
14467 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14468 character(*), intent(in):: file
14469 character(*), intent(in):: varname
14470 character(*), intent(out):: url
14471 character(*), intent(in), optional:: range
14472 logical, intent(out), optional:: flag_time_exist
14473 character(*), intent(out), optional:: time_name
14474 logical, intent(out), optional:: err
14475 end subroutine lookup_growable_url
14476 end interface
14477 interface
14478 function file_rename_mpi( file ) result(result)
14479 use dc_types, only: string
14480 character(*), intent(in):: file
14481 character(STRING):: result
14482 end function file_rename_mpi
14483 end interface
14484 continue
14485 file_work = file
14486 if ( present_and_true( flag_mpi_split ) ) &
14487 & file_work = file_rename_mpi( file_work )
14488 call lookup_growable_url(file = file_work, varname = varname, &
14489 & url = url, &
14490 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14491 call url_chop_iorange( &
14492 & fullname = url, iorange = iorange, remainder = remainder )
14493 call split( str = iorange, carray = carray, sep = gt_equal )
14494 timevar_name = carray(1)
14495 deallocate( carray )
14496 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14497 call historygetdouble1( file = file, &
14498 & varname = varname, array = array, &
14499 & range = time_range, quiet = quiet, &
14500 & flag_mpi_split = flag_mpi_split, &
14501 & returned_time = returned_time, &
14502 & flag_time_exist = flag_time_exist, &
14503 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble1timer()

subroutine historygetdouble1timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6842 of file historyget.f90.

6845 use dc_string, only: tochar, split
6846 use dc_types, only: string, dp, sp
6847 use dc_trace, only: dbgmessage
6848 use dc_url, only: url_chop_iorange, gt_equal
6849 use dc_present, only: present_and_true
6850 ! MPI ライブラリ
6851 ! MPI library
6852 !
6853 use mpi
6854 implicit none
6855 character(*), intent(in):: file, varname
6856 real(SP), intent(in):: time
6857 logical, intent(in), optional:: quiet
6858 real(DP), intent(out) :: array(:)
6859 logical, intent(in), optional:: flag_mpi_split
6860 real(DP), intent(out), optional:: returned_time
6861 logical, intent(out), optional:: flag_time_exist
6862 logical, intent(out), optional:: err
6863 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
6864 character(STRING), pointer:: carray (:)
6865 character(STRING):: tname
6866 interface
6867 subroutine historygetdouble1(&
6868 & file, varname, array, range, quiet, &
6869 & flag_mpi_split, returned_time, flag_time_exist, err)
6870 use dc_types, only: dp
6871 character(*), intent(in):: file
6872 character(*), intent(in):: varname
6873 character(*), intent(in), optional:: range
6874 logical, intent(in), optional:: quiet
6875 logical, intent(in), optional:: flag_mpi_split
6876 real(DP), intent(out), optional:: returned_time
6877 logical, intent(out), optional:: flag_time_exist
6878 logical, intent(out), optional:: err
6879 real(DP), intent(out) :: array(:)
6880 end subroutine historygetdouble1
6881 end interface
6882 interface
6883 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6884 character(*), intent(in):: file
6885 character(*), intent(in):: varname
6886 character(*), intent(out):: url
6887 character(*), intent(in), optional:: range
6888 logical, intent(out), optional:: flag_time_exist
6889 character(*), intent(out), optional:: time_name
6890 logical, intent(out), optional:: err
6891 end subroutine lookup_growable_url
6892 end interface
6893 interface
6894 function file_rename_mpi( file ) result(result)
6895 use dc_types, only: string
6896 character(*), intent(in):: file
6897 character(STRING):: result
6898 end function file_rename_mpi
6899 end interface
6900 continue
6901 file_work = file
6902 if ( present_and_true( flag_mpi_split ) ) &
6903 & file_work = file_rename_mpi( file_work )
6904 call lookup_growable_url(file = file_work, varname = varname, &
6905 & url = url, &
6906 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6907 call url_chop_iorange( &
6908 & fullname = url, iorange = iorange, remainder = remainder )
6909 call split( str = iorange, carray = carray, sep = gt_equal )
6910 timevar_name = carray(1)
6911 deallocate( carray )
6912 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
6913 call historygetdouble1( file = file, &
6914 & varname = varname, array = array, &
6915 & range = time_range, quiet = quiet, &
6916 & flag_mpi_split = flag_mpi_split, &
6917 & returned_time = returned_time, &
6918 & flag_time_exist = flag_time_exist, &
6919 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble2()

subroutine historygetdouble2 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 402 of file historyget.f90.

404 use gtdata_types, only: gt_variable
405 use gtdata_generic, only: open, inquire, close, get
406 use dc_string, only: tochar
408 use dc_regex, only: match
409 use dc_types, only: string, dp
410 use dc_message, only: messagenotify
413 ! MPI ライブラリ
414 ! MPI library
415 use mpi
416 implicit none
417 character(*), intent(in):: file
418 character(*), intent(in):: varname
419 character(*), intent(in), optional:: range
420 logical, intent(in), optional:: quiet
421 logical, intent(in), optional:: flag_mpi_split
422 real(DP), intent(out), optional:: returned_time ! データの時刻
423 logical, intent(out), optional:: flag_time_exist
424 logical, intent(out), optional:: err
425 real(DP), intent(out) :: array(:,:)
426 real(DP), allocatable :: array_tmp(:)
427 integer:: array_allsize
428 integer:: array_shape(2), data_shape(2), array_shape_check(2)
429 integer:: allcount
430 integer:: i, sd
431 logical:: inq_err
432 type(GT_VARIABLE):: var
433 character(STRING):: file_work, url, actual_url
434 integer:: rank, alldims, array_rank
435 integer:: domain
436 character(STRING):: tname
437 integer:: stat
438 character(STRING):: cause_c
439 character(*), parameter :: subname = "HistoryGetDouble2"
440 interface
441 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
442 character(*), intent(in):: file
443 character(*), intent(in):: varname
444 character(*), intent(out):: url
445 character(*), intent(in), optional:: range
446 logical, intent(out), optional:: flag_time_exist
447 character(*), intent(out), optional:: time_name
448 logical, intent(out), optional:: err
449 end subroutine lookup_growable_url
450 end interface
451 interface
452 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
453 use dc_types, only: dp
454 character(*), intent(in) :: url ! 変数 URL
455 character(*), intent(out), optional :: actual_url
456 ! 正確な入出力範囲指定
457 real(DP), intent(out), optional:: returned_time ! データの時刻
458 character(*), intent(in), optional:: time_name ! 時刻次元の名称
459 logical, intent(out), optional :: err ! エラーのフラグ
460 end subroutine actual_iorange_dump
461 end interface
462 interface
463 function file_rename_mpi( file ) result(result)
464 use dc_types, only: string
465 character(*), intent(in):: file
466 character(STRING):: result
467 end function file_rename_mpi
468 end interface
469 continue
470 cause_c = ''
471 stat = dc_noerr
472 file_work = file
473 array_shape = shape( array )
474 array_allsize = size( array )
475 ! ファイル名の変更 (MPI 用)
476 ! Change filename (for MPI)
477 !
478 if ( present_and_true( flag_mpi_split ) ) &
479 & file_work = file_rename_mpi( file_work )
480 ! 最新時刻の URL 取得
481 ! Get URL of latest time
482 !
483 call lookup_growable_url(file_work, varname, url, range, &
484 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
485 if ( present_and_true(err) ) then
486 stat = gt_enoturl
487 cause_c = url
488 goto 999
489 end if
490 ! ファイルオープン
491 ! File open
492 call open( var, url, err = err )
493 if ( present_and_true(err) ) then
494 stat = gt_enoturl
495 cause_c = url
496 goto 999
497 end if
498 !-------------------------------------------------------------------
499 ! 配列形状のチェック
500 ! Check array shape
501 !-------------------------------------------------------------------
502 ! 入力ファイル中のデータの次元数
503 ! Get size of dimesions in data of an input file
504 !
505 call inquire( var = var, & ! (in)
506 & rank = rank, alldims = alldims ) ! (out)
507 ! 引数の次元数のチェック (縮退されている場合には減らす)
508 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
509 array_rank = 2
510 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
511 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
512 ! 次元数の比較
513 ! Compare sizes of dimensions
514 !
515 if ( .not. 2 == rank .and. .not. array_rank == rank ) then
516 if ( .not. present_and_true(quiet) ) then
517 call messagenotify('W', subname, &
518 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
519 & i = (/rank, 2/), c1 = trim(url) )
520 end if
521 stat = gt_erankmismatch
522 cause_c = 'array'
523 goto 999
524 end if
525 ! 入力ファイル中のデータの配列形状取得
526 ! Get shape of data in an input file
527 call inquire( var = var , dimord = 1, & ! (in)
528 & allcount = allcount, err = inq_err ) ! (out)
529 if ( .not. inq_err ) then
530 data_shape(1) = allcount
531 else
532 data_shape(1) = 1
533 end if
534 call inquire( var = var , dimord = 2, & ! (in)
535 & allcount = allcount, err = inq_err ) ! (out)
536 if ( .not. inq_err ) then
537 data_shape(2) = allcount
538 else
539 data_shape(2) = 1
540 end if
541 ! 引数の配列形状整形
542 ! Arrange shape of an argument
543 !
544 array_shape_check = array_shape
545 sd = 1
546 do i = 1, 2 - 1
547 if ( array_shape_check(sd) == 1 ) then
548 array_shape_check(sd:2) = cshift( array_shape_check(sd:2), 1, 1 )
549 else
550 sd = sd + 1
551 end if
552 end do
553 ! 配列形状の比較
554 ! Compare shapes
555 !
556 if ( .not. all( array_shape_check == data_shape ) ) then
557 if ( .not. present_and_true(quiet) ) then
558 call messagenotify('W', subname, &
559 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
560 & c1 = trim( url ), &
561 & c2 = trim( tochar( data_shape(1:rank) ) ), &
562 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
563 end if
565 cause_c = 'array'
566 goto 999
567 end if
568 !-------------------------------------
569 ! データ取得
570 ! Get data
571 call inquire( var = var, & ! (in)
572 & size = domain ) ! (out)
573 if ( allocated( array_tmp ) ) deallocate( array_tmp )
574 allocate( array_tmp(array_allsize) )
575 call get( var, array_tmp, domain )
576 array = reshape( array_tmp, array_shape )
577 deallocate( array_tmp )
578 call close( var )
579 !-------------------------------------
580 ! データファイル名と切り出し範囲の印字
581 ! Print data filename and clipping range
582 call actual_iorange_dump(url, & ! (in)
583 & actual_url, returned_time, & ! (out) optional
584 & time_name = tname, & ! (in) optional
585 & err = err) ! (out) optional
586 if ( .not. present_and_true(quiet) ) then
587 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
588 end if
589999 continue
590 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble2pointer()

subroutine historygetdouble2pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 4971 of file historyget.f90.

4973 use gtdata_types, only: gt_variable
4974 use gtdata_generic, only: open, inquire, close, get
4975 use dc_string, only: tochar
4977 use dc_types, only: string, dp
4978 use dc_message, only: messagenotify
4979 use dc_trace, only: dbgmessage
4980 ! MPI ライブラリ
4981 ! MPI library
4982 !
4983 use mpi
4984 implicit none
4985 character(*), intent(in):: file
4986 character(*), intent(in):: varname
4987 character(*), intent(in), optional:: range
4988 logical, intent(in), optional:: quiet
4989 logical, intent(in), optional:: flag_mpi_split
4990 real(DP), intent(out), optional:: returned_time ! データの時刻
4991 logical, intent(out), optional:: flag_time_exist
4992 logical, intent(out), optional:: err
4993 real(DP), pointer :: array(:,:) ! (out)
4994 type(GT_VARIABLE):: var
4995 character(STRING):: file_work, url, actual_url
4996 character(STRING):: tname
4997 character(*), parameter :: subname = "HistoryGetDouble2Pointer"
4998 interface
4999 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5000 character(*), intent(in):: file
5001 character(*), intent(in):: varname
5002 character(*), intent(out):: url
5003 character(*), intent(in), optional:: range
5004 logical, intent(out), optional:: flag_time_exist
5005 character(*), intent(out), optional:: time_name
5006 logical, intent(out), optional:: err
5007 end subroutine lookup_growable_url
5008 end interface
5009 interface
5010 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5011 use dc_types, only: dp
5012 character(*), intent(in) :: url ! 変数 URL
5013 character(*), intent(out), optional :: actual_url
5014 ! 正確な入出力範囲指定
5015 real(DP), intent(out), optional:: returned_time ! データの時刻
5016 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5017 logical, intent(out), optional :: err ! エラーのフラグ
5018 end subroutine actual_iorange_dump
5019 end interface
5020 interface
5021 function file_rename_mpi( file ) result(result)
5022 use dc_types, only: string
5023 character(*), intent(in):: file
5024 character(STRING):: result
5025 end function file_rename_mpi
5026 end interface
5027 continue
5028 file_work = file
5029 ! ファイル名の変更 (MPI 用)
5030 ! Change filename (for MPI)
5031 !
5032 if ( present_and_true( flag_mpi_split ) ) &
5033 & file_work = file_rename_mpi( file_work )
5034 ! 必要な情報を gtool 変数化
5035 !
5036 call lookup_growable_url(file_work, varname, url, range, &
5037 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5038 call dbgmessage('@ url =%c', c1=trim(url))
5039 ! いよいよデータ取得
5040 !
5041 call open(var, url, err)
5042 call get(var, array, err)
5043 call close(var, err)
5044 call actual_iorange_dump(url, & ! (in)
5045 & actual_url, returned_time, & ! (out) optional
5046 & time_name = tname, & ! (in) optional
5047 & err = err) ! (out) optional
5048 if ( .not. present_and_true(quiet) ) then
5049 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5050 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble2pointertimed()

subroutine historygetdouble2pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11345 of file historyget.f90.

11348 use dc_string, only: tochar, split
11349 use dc_types, only: string, dp
11350 use dc_trace, only: dbgmessage
11351 use dc_url, only: url_chop_iorange, gt_equal
11352 use dc_present, only: present_and_true
11353 ! MPI ライブラリ
11354 ! MPI library
11355 !
11356 use mpi
11357 implicit none
11358 character(*), intent(in):: file, varname
11359 real(DP), intent(in):: time
11360 logical, intent(in), optional:: quiet
11361 real(DP), pointer :: array(:,:)
11362 logical, intent(in), optional:: flag_mpi_split
11363 real(DP), intent(out), optional:: returned_time
11364 logical, intent(out), optional:: flag_time_exist
11365 logical, intent(out), optional:: err
11366 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11367 character(STRING), pointer:: carray (:)
11368 character(STRING):: tname
11369 interface
11370 subroutine historygetdouble2pointer(&
11371 & file, varname, array, range, quiet, &
11372 & flag_mpi_split, returned_time, flag_time_exist, err)
11373 use dc_types, only: dp
11374 character(*), intent(in):: file
11375 character(*), intent(in):: varname
11376 character(*), intent(in), optional:: range
11377 logical, intent(in), optional:: quiet
11378 logical, intent(in), optional:: flag_mpi_split
11379 real(DP), intent(out), optional:: returned_time
11380 logical, intent(out), optional:: flag_time_exist
11381 logical, intent(out), optional:: err
11382 real(DP), pointer :: array(:,:)
11383 end subroutine historygetdouble2pointer
11384 end interface
11385 interface
11386 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11387 character(*), intent(in):: file
11388 character(*), intent(in):: varname
11389 character(*), intent(out):: url
11390 character(*), intent(in), optional:: range
11391 logical, intent(out), optional:: flag_time_exist
11392 character(*), intent(out), optional:: time_name
11393 logical, intent(out), optional:: err
11394 end subroutine lookup_growable_url
11395 end interface
11396 interface
11397 function file_rename_mpi( file ) result(result)
11398 use dc_types, only: string
11399 character(*), intent(in):: file
11400 character(STRING):: result
11401 end function file_rename_mpi
11402 end interface
11403 continue
11404 file_work = file
11405 if ( present_and_true( flag_mpi_split ) ) &
11406 & file_work = file_rename_mpi( file_work )
11407 call lookup_growable_url(file = file_work, varname = varname, &
11408 & url = url, &
11409 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11410 call url_chop_iorange( &
11411 & fullname = url, iorange = iorange, remainder = remainder )
11412 call split( str = iorange, carray = carray, sep = gt_equal )
11413 timevar_name = carray(1)
11414 deallocate( carray )
11415 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11416 call historygetdouble2pointer( file = file, &
11417 & varname = varname, array = array, &
11418 & range = time_range, quiet = quiet, &
11419 & flag_mpi_split = flag_mpi_split, &
11420 & returned_time = returned_time, &
11421 & flag_time_exist = flag_time_exist, &
11422 & err = err )
subroutine historygetdouble2pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble2pointertimei()

subroutine historygetdouble2pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15137 of file historyget.f90.

15140 use dc_string, only: tochar, split
15141 use dc_types, only: string, dp
15142 use dc_trace, only: dbgmessage
15143 use dc_url, only: url_chop_iorange, gt_equal
15144 use dc_present, only: present_and_true
15145 ! MPI ライブラリ
15146 ! MPI library
15147 !
15148 use mpi
15149 implicit none
15150 character(*), intent(in):: file, varname
15151 integer, intent(in):: time
15152 logical, intent(in), optional:: quiet
15153 real(DP), pointer :: array(:,:)
15154 logical, intent(in), optional:: flag_mpi_split
15155 real(DP), intent(out), optional:: returned_time
15156 logical, intent(out), optional:: flag_time_exist
15157 logical, intent(out), optional:: err
15158 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15159 character(STRING), pointer:: carray (:)
15160 character(STRING):: tname
15161 interface
15162 subroutine historygetdouble2pointer(&
15163 & file, varname, array, range, quiet, &
15164 & flag_mpi_split, returned_time, flag_time_exist, err)
15165 use dc_types, only: dp
15166 character(*), intent(in):: file
15167 character(*), intent(in):: varname
15168 character(*), intent(in), optional:: range
15169 logical, intent(in), optional:: quiet
15170 logical, intent(in), optional:: flag_mpi_split
15171 real(DP), intent(out), optional:: returned_time
15172 logical, intent(out), optional:: flag_time_exist
15173 logical, intent(out), optional:: err
15174 real(DP), pointer :: array(:,:)
15175 end subroutine historygetdouble2pointer
15176 end interface
15177 interface
15178 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15179 character(*), intent(in):: file
15180 character(*), intent(in):: varname
15181 character(*), intent(out):: url
15182 character(*), intent(in), optional:: range
15183 logical, intent(out), optional:: flag_time_exist
15184 character(*), intent(out), optional:: time_name
15185 logical, intent(out), optional:: err
15186 end subroutine lookup_growable_url
15187 end interface
15188 interface
15189 function file_rename_mpi( file ) result(result)
15190 use dc_types, only: string
15191 character(*), intent(in):: file
15192 character(STRING):: result
15193 end function file_rename_mpi
15194 end interface
15195 continue
15196 file_work = file
15197 if ( present_and_true( flag_mpi_split ) ) &
15198 & file_work = file_rename_mpi( file_work )
15199 call lookup_growable_url(file = file_work, varname = varname, &
15200 & url = url, &
15201 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15202 call url_chop_iorange( &
15203 & fullname = url, iorange = iorange, remainder = remainder )
15204 call split( str = iorange, carray = carray, sep = gt_equal )
15205 timevar_name = carray(1)
15206 deallocate( carray )
15207 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15208 call historygetdouble2pointer( file = file, &
15209 & varname = varname, array = array, &
15210 & range = time_range, quiet = quiet, &
15211 & flag_mpi_split = flag_mpi_split, &
15212 & returned_time = returned_time, &
15213 & flag_time_exist = flag_time_exist, &
15214 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble2pointertimer()

subroutine historygetdouble2pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7553 of file historyget.f90.

7556 use dc_string, only: tochar, split
7557 use dc_types, only: string, dp, sp
7558 use dc_trace, only: dbgmessage
7559 use dc_url, only: url_chop_iorange, gt_equal
7560 use dc_present, only: present_and_true
7561 ! MPI ライブラリ
7562 ! MPI library
7563 !
7564 use mpi
7565 implicit none
7566 character(*), intent(in):: file, varname
7567 real(SP), intent(in):: time
7568 logical, intent(in), optional:: quiet
7569 real(DP), pointer :: array(:,:)
7570 logical, intent(in), optional:: flag_mpi_split
7571 real(DP), intent(out), optional:: returned_time
7572 logical, intent(out), optional:: flag_time_exist
7573 logical, intent(out), optional:: err
7574 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7575 character(STRING), pointer:: carray (:)
7576 character(STRING):: tname
7577 interface
7578 subroutine historygetdouble2pointer(&
7579 & file, varname, array, range, quiet, &
7580 & flag_mpi_split, returned_time, flag_time_exist, err)
7581 use dc_types, only: dp
7582 character(*), intent(in):: file
7583 character(*), intent(in):: varname
7584 character(*), intent(in), optional:: range
7585 logical, intent(in), optional:: quiet
7586 logical, intent(in), optional:: flag_mpi_split
7587 real(DP), intent(out), optional:: returned_time
7588 logical, intent(out), optional:: flag_time_exist
7589 logical, intent(out), optional:: err
7590 real(DP), pointer :: array(:,:)
7591 end subroutine historygetdouble2pointer
7592 end interface
7593 interface
7594 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7595 character(*), intent(in):: file
7596 character(*), intent(in):: varname
7597 character(*), intent(out):: url
7598 character(*), intent(in), optional:: range
7599 logical, intent(out), optional:: flag_time_exist
7600 character(*), intent(out), optional:: time_name
7601 logical, intent(out), optional:: err
7602 end subroutine lookup_growable_url
7603 end interface
7604 interface
7605 function file_rename_mpi( file ) result(result)
7606 use dc_types, only: string
7607 character(*), intent(in):: file
7608 character(STRING):: result
7609 end function file_rename_mpi
7610 end interface
7611 continue
7612 file_work = file
7613 if ( present_and_true( flag_mpi_split ) ) &
7614 & file_work = file_rename_mpi( file_work )
7615 call lookup_growable_url(file = file_work, varname = varname, &
7616 & url = url, &
7617 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7618 call url_chop_iorange( &
7619 & fullname = url, iorange = iorange, remainder = remainder )
7620 call split( str = iorange, carray = carray, sep = gt_equal )
7621 timevar_name = carray(1)
7622 deallocate( carray )
7623 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7624 call historygetdouble2pointer( file = file, &
7625 & varname = varname, array = array, &
7626 & range = time_range, quiet = quiet, &
7627 & flag_mpi_split = flag_mpi_split, &
7628 & returned_time = returned_time, &
7629 & flag_time_exist = flag_time_exist, &
7630 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble2timed()

subroutine historygetdouble2timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10713 of file historyget.f90.

10716 use dc_string, only: tochar, split
10717 use dc_types, only: string, dp
10718 use dc_trace, only: dbgmessage
10719 use dc_url, only: url_chop_iorange, gt_equal
10720 use dc_present, only: present_and_true
10721 ! MPI ライブラリ
10722 ! MPI library
10723 !
10724 use mpi
10725 implicit none
10726 character(*), intent(in):: file, varname
10727 real(DP), intent(in):: time
10728 logical, intent(in), optional:: quiet
10729 real(DP), intent(out) :: array(:,:)
10730 logical, intent(in), optional:: flag_mpi_split
10731 real(DP), intent(out), optional:: returned_time
10732 logical, intent(out), optional:: flag_time_exist
10733 logical, intent(out), optional:: err
10734 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10735 character(STRING), pointer:: carray (:)
10736 character(STRING):: tname
10737 interface
10738 subroutine historygetdouble2(&
10739 & file, varname, array, range, quiet, &
10740 & flag_mpi_split, returned_time, flag_time_exist, err)
10741 use dc_types, only: dp
10742 character(*), intent(in):: file
10743 character(*), intent(in):: varname
10744 character(*), intent(in), optional:: range
10745 logical, intent(in), optional:: quiet
10746 logical, intent(in), optional:: flag_mpi_split
10747 real(DP), intent(out), optional:: returned_time
10748 logical, intent(out), optional:: flag_time_exist
10749 logical, intent(out), optional:: err
10750 real(DP), intent(out) :: array(:,:)
10751 end subroutine historygetdouble2
10752 end interface
10753 interface
10754 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10755 character(*), intent(in):: file
10756 character(*), intent(in):: varname
10757 character(*), intent(out):: url
10758 character(*), intent(in), optional:: range
10759 logical, intent(out), optional:: flag_time_exist
10760 character(*), intent(out), optional:: time_name
10761 logical, intent(out), optional:: err
10762 end subroutine lookup_growable_url
10763 end interface
10764 interface
10765 function file_rename_mpi( file ) result(result)
10766 use dc_types, only: string
10767 character(*), intent(in):: file
10768 character(STRING):: result
10769 end function file_rename_mpi
10770 end interface
10771 continue
10772 file_work = file
10773 if ( present_and_true( flag_mpi_split ) ) &
10774 & file_work = file_rename_mpi( file_work )
10775 call lookup_growable_url(file = file_work, varname = varname, &
10776 & url = url, &
10777 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10778 call url_chop_iorange( &
10779 & fullname = url, iorange = iorange, remainder = remainder )
10780 call split( str = iorange, carray = carray, sep = gt_equal )
10781 timevar_name = carray(1)
10782 deallocate( carray )
10783 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10784 call historygetdouble2( file = file, &
10785 & varname = varname, array = array, &
10786 & range = time_range, quiet = quiet, &
10787 & flag_mpi_split = flag_mpi_split, &
10788 & returned_time = returned_time, &
10789 & flag_time_exist = flag_time_exist, &
10790 & err = err )
subroutine historygetdouble2(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble2timei()

subroutine historygetdouble2timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14505 of file historyget.f90.

14508 use dc_string, only: tochar, split
14509 use dc_types, only: string, dp
14510 use dc_trace, only: dbgmessage
14511 use dc_url, only: url_chop_iorange, gt_equal
14512 use dc_present, only: present_and_true
14513 ! MPI ライブラリ
14514 ! MPI library
14515 !
14516 use mpi
14517 implicit none
14518 character(*), intent(in):: file, varname
14519 integer, intent(in):: time
14520 logical, intent(in), optional:: quiet
14521 real(DP), intent(out) :: array(:,:)
14522 logical, intent(in), optional:: flag_mpi_split
14523 real(DP), intent(out), optional:: returned_time
14524 logical, intent(out), optional:: flag_time_exist
14525 logical, intent(out), optional:: err
14526 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14527 character(STRING), pointer:: carray (:)
14528 character(STRING):: tname
14529 interface
14530 subroutine historygetdouble2(&
14531 & file, varname, array, range, quiet, &
14532 & flag_mpi_split, returned_time, flag_time_exist, err)
14533 use dc_types, only: dp
14534 character(*), intent(in):: file
14535 character(*), intent(in):: varname
14536 character(*), intent(in), optional:: range
14537 logical, intent(in), optional:: quiet
14538 logical, intent(in), optional:: flag_mpi_split
14539 real(DP), intent(out), optional:: returned_time
14540 logical, intent(out), optional:: flag_time_exist
14541 logical, intent(out), optional:: err
14542 real(DP), intent(out) :: array(:,:)
14543 end subroutine historygetdouble2
14544 end interface
14545 interface
14546 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14547 character(*), intent(in):: file
14548 character(*), intent(in):: varname
14549 character(*), intent(out):: url
14550 character(*), intent(in), optional:: range
14551 logical, intent(out), optional:: flag_time_exist
14552 character(*), intent(out), optional:: time_name
14553 logical, intent(out), optional:: err
14554 end subroutine lookup_growable_url
14555 end interface
14556 interface
14557 function file_rename_mpi( file ) result(result)
14558 use dc_types, only: string
14559 character(*), intent(in):: file
14560 character(STRING):: result
14561 end function file_rename_mpi
14562 end interface
14563 continue
14564 file_work = file
14565 if ( present_and_true( flag_mpi_split ) ) &
14566 & file_work = file_rename_mpi( file_work )
14567 call lookup_growable_url(file = file_work, varname = varname, &
14568 & url = url, &
14569 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14570 call url_chop_iorange( &
14571 & fullname = url, iorange = iorange, remainder = remainder )
14572 call split( str = iorange, carray = carray, sep = gt_equal )
14573 timevar_name = carray(1)
14574 deallocate( carray )
14575 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14576 call historygetdouble2( file = file, &
14577 & varname = varname, array = array, &
14578 & range = time_range, quiet = quiet, &
14579 & flag_mpi_split = flag_mpi_split, &
14580 & returned_time = returned_time, &
14581 & flag_time_exist = flag_time_exist, &
14582 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble2timer()

subroutine historygetdouble2timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6921 of file historyget.f90.

6924 use dc_string, only: tochar, split
6925 use dc_types, only: string, dp, sp
6926 use dc_trace, only: dbgmessage
6927 use dc_url, only: url_chop_iorange, gt_equal
6928 use dc_present, only: present_and_true
6929 ! MPI ライブラリ
6930 ! MPI library
6931 !
6932 use mpi
6933 implicit none
6934 character(*), intent(in):: file, varname
6935 real(SP), intent(in):: time
6936 logical, intent(in), optional:: quiet
6937 real(DP), intent(out) :: array(:,:)
6938 logical, intent(in), optional:: flag_mpi_split
6939 real(DP), intent(out), optional:: returned_time
6940 logical, intent(out), optional:: flag_time_exist
6941 logical, intent(out), optional:: err
6942 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
6943 character(STRING), pointer:: carray (:)
6944 character(STRING):: tname
6945 interface
6946 subroutine historygetdouble2(&
6947 & file, varname, array, range, quiet, &
6948 & flag_mpi_split, returned_time, flag_time_exist, err)
6949 use dc_types, only: dp
6950 character(*), intent(in):: file
6951 character(*), intent(in):: varname
6952 character(*), intent(in), optional:: range
6953 logical, intent(in), optional:: quiet
6954 logical, intent(in), optional:: flag_mpi_split
6955 real(DP), intent(out), optional:: returned_time
6956 logical, intent(out), optional:: flag_time_exist
6957 logical, intent(out), optional:: err
6958 real(DP), intent(out) :: array(:,:)
6959 end subroutine historygetdouble2
6960 end interface
6961 interface
6962 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6963 character(*), intent(in):: file
6964 character(*), intent(in):: varname
6965 character(*), intent(out):: url
6966 character(*), intent(in), optional:: range
6967 logical, intent(out), optional:: flag_time_exist
6968 character(*), intent(out), optional:: time_name
6969 logical, intent(out), optional:: err
6970 end subroutine lookup_growable_url
6971 end interface
6972 interface
6973 function file_rename_mpi( file ) result(result)
6974 use dc_types, only: string
6975 character(*), intent(in):: file
6976 character(STRING):: result
6977 end function file_rename_mpi
6978 end interface
6979 continue
6980 file_work = file
6981 if ( present_and_true( flag_mpi_split ) ) &
6982 & file_work = file_rename_mpi( file_work )
6983 call lookup_growable_url(file = file_work, varname = varname, &
6984 & url = url, &
6985 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6986 call url_chop_iorange( &
6987 & fullname = url, iorange = iorange, remainder = remainder )
6988 call split( str = iorange, carray = carray, sep = gt_equal )
6989 timevar_name = carray(1)
6990 deallocate( carray )
6991 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
6992 call historygetdouble2( file = file, &
6993 & varname = varname, array = array, &
6994 & range = time_range, quiet = quiet, &
6995 & flag_mpi_split = flag_mpi_split, &
6996 & returned_time = returned_time, &
6997 & flag_time_exist = flag_time_exist, &
6998 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble3()

subroutine historygetdouble3 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 592 of file historyget.f90.

594 use gtdata_types, only: gt_variable
595 use gtdata_generic, only: open, inquire, close, get
596 use dc_string, only: tochar
598 use dc_regex, only: match
599 use dc_types, only: string, dp
600 use dc_message, only: messagenotify
603 ! MPI ライブラリ
604 ! MPI library
605 use mpi
606 implicit none
607 character(*), intent(in):: file
608 character(*), intent(in):: varname
609 character(*), intent(in), optional:: range
610 logical, intent(in), optional:: quiet
611 logical, intent(in), optional:: flag_mpi_split
612 real(DP), intent(out), optional:: returned_time ! データの時刻
613 logical, intent(out), optional:: flag_time_exist
614 logical, intent(out), optional:: err
615 real(DP), intent(out) :: array(:,:,:)
616 real(DP), allocatable :: array_tmp(:)
617 integer:: array_allsize
618 integer:: array_shape(3), data_shape(3), array_shape_check(3)
619 integer:: allcount
620 integer:: i, sd
621 logical:: inq_err
622 type(GT_VARIABLE):: var
623 character(STRING):: file_work, url, actual_url
624 integer:: rank, alldims, array_rank
625 integer:: domain
626 character(STRING):: tname
627 integer:: stat
628 character(STRING):: cause_c
629 character(*), parameter :: subname = "HistoryGetDouble3"
630 interface
631 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
632 character(*), intent(in):: file
633 character(*), intent(in):: varname
634 character(*), intent(out):: url
635 character(*), intent(in), optional:: range
636 logical, intent(out), optional:: flag_time_exist
637 character(*), intent(out), optional:: time_name
638 logical, intent(out), optional:: err
639 end subroutine lookup_growable_url
640 end interface
641 interface
642 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
643 use dc_types, only: dp
644 character(*), intent(in) :: url ! 変数 URL
645 character(*), intent(out), optional :: actual_url
646 ! 正確な入出力範囲指定
647 real(DP), intent(out), optional:: returned_time ! データの時刻
648 character(*), intent(in), optional:: time_name ! 時刻次元の名称
649 logical, intent(out), optional :: err ! エラーのフラグ
650 end subroutine actual_iorange_dump
651 end interface
652 interface
653 function file_rename_mpi( file ) result(result)
654 use dc_types, only: string
655 character(*), intent(in):: file
656 character(STRING):: result
657 end function file_rename_mpi
658 end interface
659 continue
660 cause_c = ''
661 stat = dc_noerr
662 file_work = file
663 array_shape = shape( array )
664 array_allsize = size( array )
665 ! ファイル名の変更 (MPI 用)
666 ! Change filename (for MPI)
667 !
668 if ( present_and_true( flag_mpi_split ) ) &
669 & file_work = file_rename_mpi( file_work )
670 ! 最新時刻の URL 取得
671 ! Get URL of latest time
672 !
673 call lookup_growable_url(file_work, varname, url, range, &
674 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
675 if ( present_and_true(err) ) then
676 stat = gt_enoturl
677 cause_c = url
678 goto 999
679 end if
680 ! ファイルオープン
681 ! File open
682 call open( var, url, err = err )
683 if ( present_and_true(err) ) then
684 stat = gt_enoturl
685 cause_c = url
686 goto 999
687 end if
688 !-------------------------------------------------------------------
689 ! 配列形状のチェック
690 ! Check array shape
691 !-------------------------------------------------------------------
692 ! 入力ファイル中のデータの次元数
693 ! Get size of dimesions in data of an input file
694 !
695 call inquire( var = var, & ! (in)
696 & rank = rank, alldims = alldims ) ! (out)
697 ! 引数の次元数のチェック (縮退されている場合には減らす)
698 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
699 array_rank = 3
700 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
701 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
702 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
703 ! 次元数の比較
704 ! Compare sizes of dimensions
705 !
706 if ( .not. 3 == rank .and. .not. array_rank == rank ) then
707 if ( .not. present_and_true(quiet) ) then
708 call messagenotify('W', subname, &
709 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
710 & i = (/rank, 3/), c1 = trim(url) )
711 end if
712 stat = gt_erankmismatch
713 cause_c = 'array'
714 goto 999
715 end if
716 ! 入力ファイル中のデータの配列形状取得
717 ! Get shape of data in an input file
718 call inquire( var = var , dimord = 1, & ! (in)
719 & allcount = allcount, err = inq_err ) ! (out)
720 if ( .not. inq_err ) then
721 data_shape(1) = allcount
722 else
723 data_shape(1) = 1
724 end if
725 call inquire( var = var , dimord = 2, & ! (in)
726 & allcount = allcount, err = inq_err ) ! (out)
727 if ( .not. inq_err ) then
728 data_shape(2) = allcount
729 else
730 data_shape(2) = 1
731 end if
732 call inquire( var = var , dimord = 3, & ! (in)
733 & allcount = allcount, err = inq_err ) ! (out)
734 if ( .not. inq_err ) then
735 data_shape(3) = allcount
736 else
737 data_shape(3) = 1
738 end if
739 ! 引数の配列形状整形
740 ! Arrange shape of an argument
741 !
742 array_shape_check = array_shape
743 sd = 1
744 do i = 1, 3 - 1
745 if ( array_shape_check(sd) == 1 ) then
746 array_shape_check(sd:3) = cshift( array_shape_check(sd:3), 1, 1 )
747 else
748 sd = sd + 1
749 end if
750 end do
751 ! 配列形状の比較
752 ! Compare shapes
753 !
754 if ( .not. all( array_shape_check == data_shape ) ) then
755 if ( .not. present_and_true(quiet) ) then
756 call messagenotify('W', subname, &
757 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
758 & c1 = trim( url ), &
759 & c2 = trim( tochar( data_shape(1:rank) ) ), &
760 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
761 end if
763 cause_c = 'array'
764 goto 999
765 end if
766 !-------------------------------------
767 ! データ取得
768 ! Get data
769 call inquire( var = var, & ! (in)
770 & size = domain ) ! (out)
771 if ( allocated( array_tmp ) ) deallocate( array_tmp )
772 allocate( array_tmp(array_allsize) )
773 call get( var, array_tmp, domain )
774 array = reshape( array_tmp, array_shape )
775 deallocate( array_tmp )
776 call close( var )
777 !-------------------------------------
778 ! データファイル名と切り出し範囲の印字
779 ! Print data filename and clipping range
780 call actual_iorange_dump(url, & ! (in)
781 & actual_url, returned_time, & ! (out) optional
782 & time_name = tname, & ! (in) optional
783 & err = err) ! (out) optional
784 if ( .not. present_and_true(quiet) ) then
785 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
786 end if
787999 continue
788 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble3pointer()

subroutine historygetdouble3pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5052 of file historyget.f90.

5054 use gtdata_types, only: gt_variable
5055 use gtdata_generic, only: open, inquire, close, get
5056 use dc_string, only: tochar
5058 use dc_types, only: string, dp
5059 use dc_message, only: messagenotify
5060 use dc_trace, only: dbgmessage
5061 ! MPI ライブラリ
5062 ! MPI library
5063 !
5064 use mpi
5065 implicit none
5066 character(*), intent(in):: file
5067 character(*), intent(in):: varname
5068 character(*), intent(in), optional:: range
5069 logical, intent(in), optional:: quiet
5070 logical, intent(in), optional:: flag_mpi_split
5071 real(DP), intent(out), optional:: returned_time ! データの時刻
5072 logical, intent(out), optional:: flag_time_exist
5073 logical, intent(out), optional:: err
5074 real(DP), pointer :: array(:,:,:) ! (out)
5075 type(GT_VARIABLE):: var
5076 character(STRING):: file_work, url, actual_url
5077 character(STRING):: tname
5078 character(*), parameter :: subname = "HistoryGetDouble3Pointer"
5079 interface
5080 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5081 character(*), intent(in):: file
5082 character(*), intent(in):: varname
5083 character(*), intent(out):: url
5084 character(*), intent(in), optional:: range
5085 logical, intent(out), optional:: flag_time_exist
5086 character(*), intent(out), optional:: time_name
5087 logical, intent(out), optional:: err
5088 end subroutine lookup_growable_url
5089 end interface
5090 interface
5091 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5092 use dc_types, only: dp
5093 character(*), intent(in) :: url ! 変数 URL
5094 character(*), intent(out), optional :: actual_url
5095 ! 正確な入出力範囲指定
5096 real(DP), intent(out), optional:: returned_time ! データの時刻
5097 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5098 logical, intent(out), optional :: err ! エラーのフラグ
5099 end subroutine actual_iorange_dump
5100 end interface
5101 interface
5102 function file_rename_mpi( file ) result(result)
5103 use dc_types, only: string
5104 character(*), intent(in):: file
5105 character(STRING):: result
5106 end function file_rename_mpi
5107 end interface
5108 continue
5109 file_work = file
5110 ! ファイル名の変更 (MPI 用)
5111 ! Change filename (for MPI)
5112 !
5113 if ( present_and_true( flag_mpi_split ) ) &
5114 & file_work = file_rename_mpi( file_work )
5115 ! 必要な情報を gtool 変数化
5116 !
5117 call lookup_growable_url(file_work, varname, url, range, &
5118 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5119 call dbgmessage('@ url =%c', c1=trim(url))
5120 ! いよいよデータ取得
5121 !
5122 call open(var, url, err)
5123 call get(var, array, err)
5124 call close(var, err)
5125 call actual_iorange_dump(url, & ! (in)
5126 & actual_url, returned_time, & ! (out) optional
5127 & time_name = tname, & ! (in) optional
5128 & err = err) ! (out) optional
5129 if ( .not. present_and_true(quiet) ) then
5130 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5131 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble3pointertimed()

subroutine historygetdouble3pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11424 of file historyget.f90.

11427 use dc_string, only: tochar, split
11428 use dc_types, only: string, dp
11429 use dc_trace, only: dbgmessage
11430 use dc_url, only: url_chop_iorange, gt_equal
11431 use dc_present, only: present_and_true
11432 ! MPI ライブラリ
11433 ! MPI library
11434 !
11435 use mpi
11436 implicit none
11437 character(*), intent(in):: file, varname
11438 real(DP), intent(in):: time
11439 logical, intent(in), optional:: quiet
11440 real(DP), pointer :: array(:,:,:)
11441 logical, intent(in), optional:: flag_mpi_split
11442 real(DP), intent(out), optional:: returned_time
11443 logical, intent(out), optional:: flag_time_exist
11444 logical, intent(out), optional:: err
11445 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11446 character(STRING), pointer:: carray (:)
11447 character(STRING):: tname
11448 interface
11449 subroutine historygetdouble3pointer(&
11450 & file, varname, array, range, quiet, &
11451 & flag_mpi_split, returned_time, flag_time_exist, err)
11452 use dc_types, only: dp
11453 character(*), intent(in):: file
11454 character(*), intent(in):: varname
11455 character(*), intent(in), optional:: range
11456 logical, intent(in), optional:: quiet
11457 logical, intent(in), optional:: flag_mpi_split
11458 real(DP), intent(out), optional:: returned_time
11459 logical, intent(out), optional:: flag_time_exist
11460 logical, intent(out), optional:: err
11461 real(DP), pointer :: array(:,:,:)
11462 end subroutine historygetdouble3pointer
11463 end interface
11464 interface
11465 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11466 character(*), intent(in):: file
11467 character(*), intent(in):: varname
11468 character(*), intent(out):: url
11469 character(*), intent(in), optional:: range
11470 logical, intent(out), optional:: flag_time_exist
11471 character(*), intent(out), optional:: time_name
11472 logical, intent(out), optional:: err
11473 end subroutine lookup_growable_url
11474 end interface
11475 interface
11476 function file_rename_mpi( file ) result(result)
11477 use dc_types, only: string
11478 character(*), intent(in):: file
11479 character(STRING):: result
11480 end function file_rename_mpi
11481 end interface
11482 continue
11483 file_work = file
11484 if ( present_and_true( flag_mpi_split ) ) &
11485 & file_work = file_rename_mpi( file_work )
11486 call lookup_growable_url(file = file_work, varname = varname, &
11487 & url = url, &
11488 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11489 call url_chop_iorange( &
11490 & fullname = url, iorange = iorange, remainder = remainder )
11491 call split( str = iorange, carray = carray, sep = gt_equal )
11492 timevar_name = carray(1)
11493 deallocate( carray )
11494 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11495 call historygetdouble3pointer( file = file, &
11496 & varname = varname, array = array, &
11497 & range = time_range, quiet = quiet, &
11498 & flag_mpi_split = flag_mpi_split, &
11499 & returned_time = returned_time, &
11500 & flag_time_exist = flag_time_exist, &
11501 & err = err )
subroutine historygetdouble3pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble3pointertimei()

subroutine historygetdouble3pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15216 of file historyget.f90.

15219 use dc_string, only: tochar, split
15220 use dc_types, only: string, dp
15221 use dc_trace, only: dbgmessage
15222 use dc_url, only: url_chop_iorange, gt_equal
15223 use dc_present, only: present_and_true
15224 ! MPI ライブラリ
15225 ! MPI library
15226 !
15227 use mpi
15228 implicit none
15229 character(*), intent(in):: file, varname
15230 integer, intent(in):: time
15231 logical, intent(in), optional:: quiet
15232 real(DP), pointer :: array(:,:,:)
15233 logical, intent(in), optional:: flag_mpi_split
15234 real(DP), intent(out), optional:: returned_time
15235 logical, intent(out), optional:: flag_time_exist
15236 logical, intent(out), optional:: err
15237 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15238 character(STRING), pointer:: carray (:)
15239 character(STRING):: tname
15240 interface
15241 subroutine historygetdouble3pointer(&
15242 & file, varname, array, range, quiet, &
15243 & flag_mpi_split, returned_time, flag_time_exist, err)
15244 use dc_types, only: dp
15245 character(*), intent(in):: file
15246 character(*), intent(in):: varname
15247 character(*), intent(in), optional:: range
15248 logical, intent(in), optional:: quiet
15249 logical, intent(in), optional:: flag_mpi_split
15250 real(DP), intent(out), optional:: returned_time
15251 logical, intent(out), optional:: flag_time_exist
15252 logical, intent(out), optional:: err
15253 real(DP), pointer :: array(:,:,:)
15254 end subroutine historygetdouble3pointer
15255 end interface
15256 interface
15257 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15258 character(*), intent(in):: file
15259 character(*), intent(in):: varname
15260 character(*), intent(out):: url
15261 character(*), intent(in), optional:: range
15262 logical, intent(out), optional:: flag_time_exist
15263 character(*), intent(out), optional:: time_name
15264 logical, intent(out), optional:: err
15265 end subroutine lookup_growable_url
15266 end interface
15267 interface
15268 function file_rename_mpi( file ) result(result)
15269 use dc_types, only: string
15270 character(*), intent(in):: file
15271 character(STRING):: result
15272 end function file_rename_mpi
15273 end interface
15274 continue
15275 file_work = file
15276 if ( present_and_true( flag_mpi_split ) ) &
15277 & file_work = file_rename_mpi( file_work )
15278 call lookup_growable_url(file = file_work, varname = varname, &
15279 & url = url, &
15280 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15281 call url_chop_iorange( &
15282 & fullname = url, iorange = iorange, remainder = remainder )
15283 call split( str = iorange, carray = carray, sep = gt_equal )
15284 timevar_name = carray(1)
15285 deallocate( carray )
15286 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15287 call historygetdouble3pointer( file = file, &
15288 & varname = varname, array = array, &
15289 & range = time_range, quiet = quiet, &
15290 & flag_mpi_split = flag_mpi_split, &
15291 & returned_time = returned_time, &
15292 & flag_time_exist = flag_time_exist, &
15293 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble3pointertimer()

subroutine historygetdouble3pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7632 of file historyget.f90.

7635 use dc_string, only: tochar, split
7636 use dc_types, only: string, dp, sp
7637 use dc_trace, only: dbgmessage
7638 use dc_url, only: url_chop_iorange, gt_equal
7639 use dc_present, only: present_and_true
7640 ! MPI ライブラリ
7641 ! MPI library
7642 !
7643 use mpi
7644 implicit none
7645 character(*), intent(in):: file, varname
7646 real(SP), intent(in):: time
7647 logical, intent(in), optional:: quiet
7648 real(DP), pointer :: array(:,:,:)
7649 logical, intent(in), optional:: flag_mpi_split
7650 real(DP), intent(out), optional:: returned_time
7651 logical, intent(out), optional:: flag_time_exist
7652 logical, intent(out), optional:: err
7653 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7654 character(STRING), pointer:: carray (:)
7655 character(STRING):: tname
7656 interface
7657 subroutine historygetdouble3pointer(&
7658 & file, varname, array, range, quiet, &
7659 & flag_mpi_split, returned_time, flag_time_exist, err)
7660 use dc_types, only: dp
7661 character(*), intent(in):: file
7662 character(*), intent(in):: varname
7663 character(*), intent(in), optional:: range
7664 logical, intent(in), optional:: quiet
7665 logical, intent(in), optional:: flag_mpi_split
7666 real(DP), intent(out), optional:: returned_time
7667 logical, intent(out), optional:: flag_time_exist
7668 logical, intent(out), optional:: err
7669 real(DP), pointer :: array(:,:,:)
7670 end subroutine historygetdouble3pointer
7671 end interface
7672 interface
7673 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7674 character(*), intent(in):: file
7675 character(*), intent(in):: varname
7676 character(*), intent(out):: url
7677 character(*), intent(in), optional:: range
7678 logical, intent(out), optional:: flag_time_exist
7679 character(*), intent(out), optional:: time_name
7680 logical, intent(out), optional:: err
7681 end subroutine lookup_growable_url
7682 end interface
7683 interface
7684 function file_rename_mpi( file ) result(result)
7685 use dc_types, only: string
7686 character(*), intent(in):: file
7687 character(STRING):: result
7688 end function file_rename_mpi
7689 end interface
7690 continue
7691 file_work = file
7692 if ( present_and_true( flag_mpi_split ) ) &
7693 & file_work = file_rename_mpi( file_work )
7694 call lookup_growable_url(file = file_work, varname = varname, &
7695 & url = url, &
7696 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7697 call url_chop_iorange( &
7698 & fullname = url, iorange = iorange, remainder = remainder )
7699 call split( str = iorange, carray = carray, sep = gt_equal )
7700 timevar_name = carray(1)
7701 deallocate( carray )
7702 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7703 call historygetdouble3pointer( file = file, &
7704 & varname = varname, array = array, &
7705 & range = time_range, quiet = quiet, &
7706 & flag_mpi_split = flag_mpi_split, &
7707 & returned_time = returned_time, &
7708 & flag_time_exist = flag_time_exist, &
7709 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble3timed()

subroutine historygetdouble3timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10792 of file historyget.f90.

10795 use dc_string, only: tochar, split
10796 use dc_types, only: string, dp
10797 use dc_trace, only: dbgmessage
10798 use dc_url, only: url_chop_iorange, gt_equal
10799 use dc_present, only: present_and_true
10800 ! MPI ライブラリ
10801 ! MPI library
10802 !
10803 use mpi
10804 implicit none
10805 character(*), intent(in):: file, varname
10806 real(DP), intent(in):: time
10807 logical, intent(in), optional:: quiet
10808 real(DP), intent(out) :: array(:,:,:)
10809 logical, intent(in), optional:: flag_mpi_split
10810 real(DP), intent(out), optional:: returned_time
10811 logical, intent(out), optional:: flag_time_exist
10812 logical, intent(out), optional:: err
10813 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10814 character(STRING), pointer:: carray (:)
10815 character(STRING):: tname
10816 interface
10817 subroutine historygetdouble3(&
10818 & file, varname, array, range, quiet, &
10819 & flag_mpi_split, returned_time, flag_time_exist, err)
10820 use dc_types, only: dp
10821 character(*), intent(in):: file
10822 character(*), intent(in):: varname
10823 character(*), intent(in), optional:: range
10824 logical, intent(in), optional:: quiet
10825 logical, intent(in), optional:: flag_mpi_split
10826 real(DP), intent(out), optional:: returned_time
10827 logical, intent(out), optional:: flag_time_exist
10828 logical, intent(out), optional:: err
10829 real(DP), intent(out) :: array(:,:,:)
10830 end subroutine historygetdouble3
10831 end interface
10832 interface
10833 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10834 character(*), intent(in):: file
10835 character(*), intent(in):: varname
10836 character(*), intent(out):: url
10837 character(*), intent(in), optional:: range
10838 logical, intent(out), optional:: flag_time_exist
10839 character(*), intent(out), optional:: time_name
10840 logical, intent(out), optional:: err
10841 end subroutine lookup_growable_url
10842 end interface
10843 interface
10844 function file_rename_mpi( file ) result(result)
10845 use dc_types, only: string
10846 character(*), intent(in):: file
10847 character(STRING):: result
10848 end function file_rename_mpi
10849 end interface
10850 continue
10851 file_work = file
10852 if ( present_and_true( flag_mpi_split ) ) &
10853 & file_work = file_rename_mpi( file_work )
10854 call lookup_growable_url(file = file_work, varname = varname, &
10855 & url = url, &
10856 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10857 call url_chop_iorange( &
10858 & fullname = url, iorange = iorange, remainder = remainder )
10859 call split( str = iorange, carray = carray, sep = gt_equal )
10860 timevar_name = carray(1)
10861 deallocate( carray )
10862 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10863 call historygetdouble3( file = file, &
10864 & varname = varname, array = array, &
10865 & range = time_range, quiet = quiet, &
10866 & flag_mpi_split = flag_mpi_split, &
10867 & returned_time = returned_time, &
10868 & flag_time_exist = flag_time_exist, &
10869 & err = err )
subroutine historygetdouble3(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble3timei()

subroutine historygetdouble3timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14584 of file historyget.f90.

14587 use dc_string, only: tochar, split
14588 use dc_types, only: string, dp
14589 use dc_trace, only: dbgmessage
14590 use dc_url, only: url_chop_iorange, gt_equal
14591 use dc_present, only: present_and_true
14592 ! MPI ライブラリ
14593 ! MPI library
14594 !
14595 use mpi
14596 implicit none
14597 character(*), intent(in):: file, varname
14598 integer, intent(in):: time
14599 logical, intent(in), optional:: quiet
14600 real(DP), intent(out) :: array(:,:,:)
14601 logical, intent(in), optional:: flag_mpi_split
14602 real(DP), intent(out), optional:: returned_time
14603 logical, intent(out), optional:: flag_time_exist
14604 logical, intent(out), optional:: err
14605 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14606 character(STRING), pointer:: carray (:)
14607 character(STRING):: tname
14608 interface
14609 subroutine historygetdouble3(&
14610 & file, varname, array, range, quiet, &
14611 & flag_mpi_split, returned_time, flag_time_exist, err)
14612 use dc_types, only: dp
14613 character(*), intent(in):: file
14614 character(*), intent(in):: varname
14615 character(*), intent(in), optional:: range
14616 logical, intent(in), optional:: quiet
14617 logical, intent(in), optional:: flag_mpi_split
14618 real(DP), intent(out), optional:: returned_time
14619 logical, intent(out), optional:: flag_time_exist
14620 logical, intent(out), optional:: err
14621 real(DP), intent(out) :: array(:,:,:)
14622 end subroutine historygetdouble3
14623 end interface
14624 interface
14625 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14626 character(*), intent(in):: file
14627 character(*), intent(in):: varname
14628 character(*), intent(out):: url
14629 character(*), intent(in), optional:: range
14630 logical, intent(out), optional:: flag_time_exist
14631 character(*), intent(out), optional:: time_name
14632 logical, intent(out), optional:: err
14633 end subroutine lookup_growable_url
14634 end interface
14635 interface
14636 function file_rename_mpi( file ) result(result)
14637 use dc_types, only: string
14638 character(*), intent(in):: file
14639 character(STRING):: result
14640 end function file_rename_mpi
14641 end interface
14642 continue
14643 file_work = file
14644 if ( present_and_true( flag_mpi_split ) ) &
14645 & file_work = file_rename_mpi( file_work )
14646 call lookup_growable_url(file = file_work, varname = varname, &
14647 & url = url, &
14648 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14649 call url_chop_iorange( &
14650 & fullname = url, iorange = iorange, remainder = remainder )
14651 call split( str = iorange, carray = carray, sep = gt_equal )
14652 timevar_name = carray(1)
14653 deallocate( carray )
14654 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14655 call historygetdouble3( file = file, &
14656 & varname = varname, array = array, &
14657 & range = time_range, quiet = quiet, &
14658 & flag_mpi_split = flag_mpi_split, &
14659 & returned_time = returned_time, &
14660 & flag_time_exist = flag_time_exist, &
14661 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble3timer()

subroutine historygetdouble3timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7000 of file historyget.f90.

7003 use dc_string, only: tochar, split
7004 use dc_types, only: string, dp, sp
7005 use dc_trace, only: dbgmessage
7006 use dc_url, only: url_chop_iorange, gt_equal
7007 use dc_present, only: present_and_true
7008 ! MPI ライブラリ
7009 ! MPI library
7010 !
7011 use mpi
7012 implicit none
7013 character(*), intent(in):: file, varname
7014 real(SP), intent(in):: time
7015 logical, intent(in), optional:: quiet
7016 real(DP), intent(out) :: array(:,:,:)
7017 logical, intent(in), optional:: flag_mpi_split
7018 real(DP), intent(out), optional:: returned_time
7019 logical, intent(out), optional:: flag_time_exist
7020 logical, intent(out), optional:: err
7021 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7022 character(STRING), pointer:: carray (:)
7023 character(STRING):: tname
7024 interface
7025 subroutine historygetdouble3(&
7026 & file, varname, array, range, quiet, &
7027 & flag_mpi_split, returned_time, flag_time_exist, err)
7028 use dc_types, only: dp
7029 character(*), intent(in):: file
7030 character(*), intent(in):: varname
7031 character(*), intent(in), optional:: range
7032 logical, intent(in), optional:: quiet
7033 logical, intent(in), optional:: flag_mpi_split
7034 real(DP), intent(out), optional:: returned_time
7035 logical, intent(out), optional:: flag_time_exist
7036 logical, intent(out), optional:: err
7037 real(DP), intent(out) :: array(:,:,:)
7038 end subroutine historygetdouble3
7039 end interface
7040 interface
7041 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7042 character(*), intent(in):: file
7043 character(*), intent(in):: varname
7044 character(*), intent(out):: url
7045 character(*), intent(in), optional:: range
7046 logical, intent(out), optional:: flag_time_exist
7047 character(*), intent(out), optional:: time_name
7048 logical, intent(out), optional:: err
7049 end subroutine lookup_growable_url
7050 end interface
7051 interface
7052 function file_rename_mpi( file ) result(result)
7053 use dc_types, only: string
7054 character(*), intent(in):: file
7055 character(STRING):: result
7056 end function file_rename_mpi
7057 end interface
7058 continue
7059 file_work = file
7060 if ( present_and_true( flag_mpi_split ) ) &
7061 & file_work = file_rename_mpi( file_work )
7062 call lookup_growable_url(file = file_work, varname = varname, &
7063 & url = url, &
7064 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7065 call url_chop_iorange( &
7066 & fullname = url, iorange = iorange, remainder = remainder )
7067 call split( str = iorange, carray = carray, sep = gt_equal )
7068 timevar_name = carray(1)
7069 deallocate( carray )
7070 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7071 call historygetdouble3( file = file, &
7072 & varname = varname, array = array, &
7073 & range = time_range, quiet = quiet, &
7074 & flag_mpi_split = flag_mpi_split, &
7075 & returned_time = returned_time, &
7076 & flag_time_exist = flag_time_exist, &
7077 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble4()

subroutine historygetdouble4 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 790 of file historyget.f90.

792 use gtdata_types, only: gt_variable
793 use gtdata_generic, only: open, inquire, close, get
794 use dc_string, only: tochar
796 use dc_regex, only: match
797 use dc_types, only: string, dp
798 use dc_message, only: messagenotify
801 ! MPI ライブラリ
802 ! MPI library
803 use mpi
804 implicit none
805 character(*), intent(in):: file
806 character(*), intent(in):: varname
807 character(*), intent(in), optional:: range
808 logical, intent(in), optional:: quiet
809 logical, intent(in), optional:: flag_mpi_split
810 real(DP), intent(out), optional:: returned_time ! データの時刻
811 logical, intent(out), optional:: flag_time_exist
812 logical, intent(out), optional:: err
813 real(DP), intent(out) :: array(:,:,:,:)
814 real(DP), allocatable :: array_tmp(:)
815 integer:: array_allsize
816 integer:: array_shape(4), data_shape(4), array_shape_check(4)
817 integer:: allcount
818 integer:: i, sd
819 logical:: inq_err
820 type(GT_VARIABLE):: var
821 character(STRING):: file_work, url, actual_url
822 integer:: rank, alldims, array_rank
823 integer:: domain
824 character(STRING):: tname
825 integer:: stat
826 character(STRING):: cause_c
827 character(*), parameter :: subname = "HistoryGetDouble4"
828 interface
829 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
830 character(*), intent(in):: file
831 character(*), intent(in):: varname
832 character(*), intent(out):: url
833 character(*), intent(in), optional:: range
834 logical, intent(out), optional:: flag_time_exist
835 character(*), intent(out), optional:: time_name
836 logical, intent(out), optional:: err
837 end subroutine lookup_growable_url
838 end interface
839 interface
840 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
841 use dc_types, only: dp
842 character(*), intent(in) :: url ! 変数 URL
843 character(*), intent(out), optional :: actual_url
844 ! 正確な入出力範囲指定
845 real(DP), intent(out), optional:: returned_time ! データの時刻
846 character(*), intent(in), optional:: time_name ! 時刻次元の名称
847 logical, intent(out), optional :: err ! エラーのフラグ
848 end subroutine actual_iorange_dump
849 end interface
850 interface
851 function file_rename_mpi( file ) result(result)
852 use dc_types, only: string
853 character(*), intent(in):: file
854 character(STRING):: result
855 end function file_rename_mpi
856 end interface
857 continue
858 cause_c = ''
859 stat = dc_noerr
860 file_work = file
861 array_shape = shape( array )
862 array_allsize = size( array )
863 ! ファイル名の変更 (MPI 用)
864 ! Change filename (for MPI)
865 !
866 if ( present_and_true( flag_mpi_split ) ) &
867 & file_work = file_rename_mpi( file_work )
868 ! 最新時刻の URL 取得
869 ! Get URL of latest time
870 !
871 call lookup_growable_url(file_work, varname, url, range, &
872 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
873 if ( present_and_true(err) ) then
874 stat = gt_enoturl
875 cause_c = url
876 goto 999
877 end if
878 ! ファイルオープン
879 ! File open
880 call open( var, url, err = err )
881 if ( present_and_true(err) ) then
882 stat = gt_enoturl
883 cause_c = url
884 goto 999
885 end if
886 !-------------------------------------------------------------------
887 ! 配列形状のチェック
888 ! Check array shape
889 !-------------------------------------------------------------------
890 ! 入力ファイル中のデータの次元数
891 ! Get size of dimesions in data of an input file
892 !
893 call inquire( var = var, & ! (in)
894 & rank = rank, alldims = alldims ) ! (out)
895 ! 引数の次元数のチェック (縮退されている場合には減らす)
896 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
897 array_rank = 4
898 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
899 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
900 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
901 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
902 ! 次元数の比較
903 ! Compare sizes of dimensions
904 !
905 if ( .not. 4 == rank .and. .not. array_rank == rank ) then
906 if ( .not. present_and_true(quiet) ) then
907 call messagenotify('W', subname, &
908 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
909 & i = (/rank, 4/), c1 = trim(url) )
910 end if
911 stat = gt_erankmismatch
912 cause_c = 'array'
913 goto 999
914 end if
915 ! 入力ファイル中のデータの配列形状取得
916 ! Get shape of data in an input file
917 call inquire( var = var , dimord = 1, & ! (in)
918 & allcount = allcount, err = inq_err ) ! (out)
919 if ( .not. inq_err ) then
920 data_shape(1) = allcount
921 else
922 data_shape(1) = 1
923 end if
924 call inquire( var = var , dimord = 2, & ! (in)
925 & allcount = allcount, err = inq_err ) ! (out)
926 if ( .not. inq_err ) then
927 data_shape(2) = allcount
928 else
929 data_shape(2) = 1
930 end if
931 call inquire( var = var , dimord = 3, & ! (in)
932 & allcount = allcount, err = inq_err ) ! (out)
933 if ( .not. inq_err ) then
934 data_shape(3) = allcount
935 else
936 data_shape(3) = 1
937 end if
938 call inquire( var = var , dimord = 4, & ! (in)
939 & allcount = allcount, err = inq_err ) ! (out)
940 if ( .not. inq_err ) then
941 data_shape(4) = allcount
942 else
943 data_shape(4) = 1
944 end if
945 ! 引数の配列形状整形
946 ! Arrange shape of an argument
947 !
948 array_shape_check = array_shape
949 sd = 1
950 do i = 1, 4 - 1
951 if ( array_shape_check(sd) == 1 ) then
952 array_shape_check(sd:4) = cshift( array_shape_check(sd:4), 1, 1 )
953 else
954 sd = sd + 1
955 end if
956 end do
957 ! 配列形状の比較
958 ! Compare shapes
959 !
960 if ( .not. all( array_shape_check == data_shape ) ) then
961 if ( .not. present_and_true(quiet) ) then
962 call messagenotify('W', subname, &
963 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
964 & c1 = trim( url ), &
965 & c2 = trim( tochar( data_shape(1:rank) ) ), &
966 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
967 end if
969 cause_c = 'array'
970 goto 999
971 end if
972 !-------------------------------------
973 ! データ取得
974 ! Get data
975 call inquire( var = var, & ! (in)
976 & size = domain ) ! (out)
977 if ( allocated( array_tmp ) ) deallocate( array_tmp )
978 allocate( array_tmp(array_allsize) )
979 call get( var, array_tmp, domain )
980 array = reshape( array_tmp, array_shape )
981 deallocate( array_tmp )
982 call close( var )
983 !-------------------------------------
984 ! データファイル名と切り出し範囲の印字
985 ! Print data filename and clipping range
986 call actual_iorange_dump(url, & ! (in)
987 & actual_url, returned_time, & ! (out) optional
988 & time_name = tname, & ! (in) optional
989 & err = err) ! (out) optional
990 if ( .not. present_and_true(quiet) ) then
991 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
992 end if
993999 continue
994 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble4pointer()

subroutine historygetdouble4pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5133 of file historyget.f90.

5135 use gtdata_types, only: gt_variable
5136 use gtdata_generic, only: open, inquire, close, get
5137 use dc_string, only: tochar
5139 use dc_types, only: string, dp
5140 use dc_message, only: messagenotify
5141 use dc_trace, only: dbgmessage
5142 ! MPI ライブラリ
5143 ! MPI library
5144 !
5145 use mpi
5146 implicit none
5147 character(*), intent(in):: file
5148 character(*), intent(in):: varname
5149 character(*), intent(in), optional:: range
5150 logical, intent(in), optional:: quiet
5151 logical, intent(in), optional:: flag_mpi_split
5152 real(DP), intent(out), optional:: returned_time ! データの時刻
5153 logical, intent(out), optional:: flag_time_exist
5154 logical, intent(out), optional:: err
5155 real(DP), pointer :: array(:,:,:,:) ! (out)
5156 type(GT_VARIABLE):: var
5157 character(STRING):: file_work, url, actual_url
5158 character(STRING):: tname
5159 character(*), parameter :: subname = "HistoryGetDouble4Pointer"
5160 interface
5161 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5162 character(*), intent(in):: file
5163 character(*), intent(in):: varname
5164 character(*), intent(out):: url
5165 character(*), intent(in), optional:: range
5166 logical, intent(out), optional:: flag_time_exist
5167 character(*), intent(out), optional:: time_name
5168 logical, intent(out), optional:: err
5169 end subroutine lookup_growable_url
5170 end interface
5171 interface
5172 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5173 use dc_types, only: dp
5174 character(*), intent(in) :: url ! 変数 URL
5175 character(*), intent(out), optional :: actual_url
5176 ! 正確な入出力範囲指定
5177 real(DP), intent(out), optional:: returned_time ! データの時刻
5178 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5179 logical, intent(out), optional :: err ! エラーのフラグ
5180 end subroutine actual_iorange_dump
5181 end interface
5182 interface
5183 function file_rename_mpi( file ) result(result)
5184 use dc_types, only: string
5185 character(*), intent(in):: file
5186 character(STRING):: result
5187 end function file_rename_mpi
5188 end interface
5189 continue
5190 file_work = file
5191 ! ファイル名の変更 (MPI 用)
5192 ! Change filename (for MPI)
5193 !
5194 if ( present_and_true( flag_mpi_split ) ) &
5195 & file_work = file_rename_mpi( file_work )
5196 ! 必要な情報を gtool 変数化
5197 !
5198 call lookup_growable_url(file_work, varname, url, range, &
5199 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5200 call dbgmessage('@ url =%c', c1=trim(url))
5201 ! いよいよデータ取得
5202 !
5203 call open(var, url, err)
5204 call get(var, array, err)
5205 call close(var, err)
5206 call actual_iorange_dump(url, & ! (in)
5207 & actual_url, returned_time, & ! (out) optional
5208 & time_name = tname, & ! (in) optional
5209 & err = err) ! (out) optional
5210 if ( .not. present_and_true(quiet) ) then
5211 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5212 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble4pointertimed()

subroutine historygetdouble4pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11503 of file historyget.f90.

11506 use dc_string, only: tochar, split
11507 use dc_types, only: string, dp
11508 use dc_trace, only: dbgmessage
11509 use dc_url, only: url_chop_iorange, gt_equal
11510 use dc_present, only: present_and_true
11511 ! MPI ライブラリ
11512 ! MPI library
11513 !
11514 use mpi
11515 implicit none
11516 character(*), intent(in):: file, varname
11517 real(DP), intent(in):: time
11518 logical, intent(in), optional:: quiet
11519 real(DP), pointer :: array(:,:,:,:)
11520 logical, intent(in), optional:: flag_mpi_split
11521 real(DP), intent(out), optional:: returned_time
11522 logical, intent(out), optional:: flag_time_exist
11523 logical, intent(out), optional:: err
11524 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11525 character(STRING), pointer:: carray (:)
11526 character(STRING):: tname
11527 interface
11528 subroutine historygetdouble4pointer(&
11529 & file, varname, array, range, quiet, &
11530 & flag_mpi_split, returned_time, flag_time_exist, err)
11531 use dc_types, only: dp
11532 character(*), intent(in):: file
11533 character(*), intent(in):: varname
11534 character(*), intent(in), optional:: range
11535 logical, intent(in), optional:: quiet
11536 logical, intent(in), optional:: flag_mpi_split
11537 real(DP), intent(out), optional:: returned_time
11538 logical, intent(out), optional:: flag_time_exist
11539 logical, intent(out), optional:: err
11540 real(DP), pointer :: array(:,:,:,:)
11541 end subroutine historygetdouble4pointer
11542 end interface
11543 interface
11544 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11545 character(*), intent(in):: file
11546 character(*), intent(in):: varname
11547 character(*), intent(out):: url
11548 character(*), intent(in), optional:: range
11549 logical, intent(out), optional:: flag_time_exist
11550 character(*), intent(out), optional:: time_name
11551 logical, intent(out), optional:: err
11552 end subroutine lookup_growable_url
11553 end interface
11554 interface
11555 function file_rename_mpi( file ) result(result)
11556 use dc_types, only: string
11557 character(*), intent(in):: file
11558 character(STRING):: result
11559 end function file_rename_mpi
11560 end interface
11561 continue
11562 file_work = file
11563 if ( present_and_true( flag_mpi_split ) ) &
11564 & file_work = file_rename_mpi( file_work )
11565 call lookup_growable_url(file = file_work, varname = varname, &
11566 & url = url, &
11567 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11568 call url_chop_iorange( &
11569 & fullname = url, iorange = iorange, remainder = remainder )
11570 call split( str = iorange, carray = carray, sep = gt_equal )
11571 timevar_name = carray(1)
11572 deallocate( carray )
11573 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11574 call historygetdouble4pointer( file = file, &
11575 & varname = varname, array = array, &
11576 & range = time_range, quiet = quiet, &
11577 & flag_mpi_split = flag_mpi_split, &
11578 & returned_time = returned_time, &
11579 & flag_time_exist = flag_time_exist, &
11580 & err = err )
subroutine historygetdouble4pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble4pointertimei()

subroutine historygetdouble4pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15295 of file historyget.f90.

15298 use dc_string, only: tochar, split
15299 use dc_types, only: string, dp
15300 use dc_trace, only: dbgmessage
15301 use dc_url, only: url_chop_iorange, gt_equal
15302 use dc_present, only: present_and_true
15303 ! MPI ライブラリ
15304 ! MPI library
15305 !
15306 use mpi
15307 implicit none
15308 character(*), intent(in):: file, varname
15309 integer, intent(in):: time
15310 logical, intent(in), optional:: quiet
15311 real(DP), pointer :: array(:,:,:,:)
15312 logical, intent(in), optional:: flag_mpi_split
15313 real(DP), intent(out), optional:: returned_time
15314 logical, intent(out), optional:: flag_time_exist
15315 logical, intent(out), optional:: err
15316 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15317 character(STRING), pointer:: carray (:)
15318 character(STRING):: tname
15319 interface
15320 subroutine historygetdouble4pointer(&
15321 & file, varname, array, range, quiet, &
15322 & flag_mpi_split, returned_time, flag_time_exist, err)
15323 use dc_types, only: dp
15324 character(*), intent(in):: file
15325 character(*), intent(in):: varname
15326 character(*), intent(in), optional:: range
15327 logical, intent(in), optional:: quiet
15328 logical, intent(in), optional:: flag_mpi_split
15329 real(DP), intent(out), optional:: returned_time
15330 logical, intent(out), optional:: flag_time_exist
15331 logical, intent(out), optional:: err
15332 real(DP), pointer :: array(:,:,:,:)
15333 end subroutine historygetdouble4pointer
15334 end interface
15335 interface
15336 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15337 character(*), intent(in):: file
15338 character(*), intent(in):: varname
15339 character(*), intent(out):: url
15340 character(*), intent(in), optional:: range
15341 logical, intent(out), optional:: flag_time_exist
15342 character(*), intent(out), optional:: time_name
15343 logical, intent(out), optional:: err
15344 end subroutine lookup_growable_url
15345 end interface
15346 interface
15347 function file_rename_mpi( file ) result(result)
15348 use dc_types, only: string
15349 character(*), intent(in):: file
15350 character(STRING):: result
15351 end function file_rename_mpi
15352 end interface
15353 continue
15354 file_work = file
15355 if ( present_and_true( flag_mpi_split ) ) &
15356 & file_work = file_rename_mpi( file_work )
15357 call lookup_growable_url(file = file_work, varname = varname, &
15358 & url = url, &
15359 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15360 call url_chop_iorange( &
15361 & fullname = url, iorange = iorange, remainder = remainder )
15362 call split( str = iorange, carray = carray, sep = gt_equal )
15363 timevar_name = carray(1)
15364 deallocate( carray )
15365 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15366 call historygetdouble4pointer( file = file, &
15367 & varname = varname, array = array, &
15368 & range = time_range, quiet = quiet, &
15369 & flag_mpi_split = flag_mpi_split, &
15370 & returned_time = returned_time, &
15371 & flag_time_exist = flag_time_exist, &
15372 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble4pointertimer()

subroutine historygetdouble4pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7711 of file historyget.f90.

7714 use dc_string, only: tochar, split
7715 use dc_types, only: string, dp, sp
7716 use dc_trace, only: dbgmessage
7717 use dc_url, only: url_chop_iorange, gt_equal
7718 use dc_present, only: present_and_true
7719 ! MPI ライブラリ
7720 ! MPI library
7721 !
7722 use mpi
7723 implicit none
7724 character(*), intent(in):: file, varname
7725 real(SP), intent(in):: time
7726 logical, intent(in), optional:: quiet
7727 real(DP), pointer :: array(:,:,:,:)
7728 logical, intent(in), optional:: flag_mpi_split
7729 real(DP), intent(out), optional:: returned_time
7730 logical, intent(out), optional:: flag_time_exist
7731 logical, intent(out), optional:: err
7732 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7733 character(STRING), pointer:: carray (:)
7734 character(STRING):: tname
7735 interface
7736 subroutine historygetdouble4pointer(&
7737 & file, varname, array, range, quiet, &
7738 & flag_mpi_split, returned_time, flag_time_exist, err)
7739 use dc_types, only: dp
7740 character(*), intent(in):: file
7741 character(*), intent(in):: varname
7742 character(*), intent(in), optional:: range
7743 logical, intent(in), optional:: quiet
7744 logical, intent(in), optional:: flag_mpi_split
7745 real(DP), intent(out), optional:: returned_time
7746 logical, intent(out), optional:: flag_time_exist
7747 logical, intent(out), optional:: err
7748 real(DP), pointer :: array(:,:,:,:)
7749 end subroutine historygetdouble4pointer
7750 end interface
7751 interface
7752 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7753 character(*), intent(in):: file
7754 character(*), intent(in):: varname
7755 character(*), intent(out):: url
7756 character(*), intent(in), optional:: range
7757 logical, intent(out), optional:: flag_time_exist
7758 character(*), intent(out), optional:: time_name
7759 logical, intent(out), optional:: err
7760 end subroutine lookup_growable_url
7761 end interface
7762 interface
7763 function file_rename_mpi( file ) result(result)
7764 use dc_types, only: string
7765 character(*), intent(in):: file
7766 character(STRING):: result
7767 end function file_rename_mpi
7768 end interface
7769 continue
7770 file_work = file
7771 if ( present_and_true( flag_mpi_split ) ) &
7772 & file_work = file_rename_mpi( file_work )
7773 call lookup_growable_url(file = file_work, varname = varname, &
7774 & url = url, &
7775 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7776 call url_chop_iorange( &
7777 & fullname = url, iorange = iorange, remainder = remainder )
7778 call split( str = iorange, carray = carray, sep = gt_equal )
7779 timevar_name = carray(1)
7780 deallocate( carray )
7781 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7782 call historygetdouble4pointer( file = file, &
7783 & varname = varname, array = array, &
7784 & range = time_range, quiet = quiet, &
7785 & flag_mpi_split = flag_mpi_split, &
7786 & returned_time = returned_time, &
7787 & flag_time_exist = flag_time_exist, &
7788 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble4timed()

subroutine historygetdouble4timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10871 of file historyget.f90.

10874 use dc_string, only: tochar, split
10875 use dc_types, only: string, dp
10876 use dc_trace, only: dbgmessage
10877 use dc_url, only: url_chop_iorange, gt_equal
10878 use dc_present, only: present_and_true
10879 ! MPI ライブラリ
10880 ! MPI library
10881 !
10882 use mpi
10883 implicit none
10884 character(*), intent(in):: file, varname
10885 real(DP), intent(in):: time
10886 logical, intent(in), optional:: quiet
10887 real(DP), intent(out) :: array(:,:,:,:)
10888 logical, intent(in), optional:: flag_mpi_split
10889 real(DP), intent(out), optional:: returned_time
10890 logical, intent(out), optional:: flag_time_exist
10891 logical, intent(out), optional:: err
10892 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10893 character(STRING), pointer:: carray (:)
10894 character(STRING):: tname
10895 interface
10896 subroutine historygetdouble4(&
10897 & file, varname, array, range, quiet, &
10898 & flag_mpi_split, returned_time, flag_time_exist, err)
10899 use dc_types, only: dp
10900 character(*), intent(in):: file
10901 character(*), intent(in):: varname
10902 character(*), intent(in), optional:: range
10903 logical, intent(in), optional:: quiet
10904 logical, intent(in), optional:: flag_mpi_split
10905 real(DP), intent(out), optional:: returned_time
10906 logical, intent(out), optional:: flag_time_exist
10907 logical, intent(out), optional:: err
10908 real(DP), intent(out) :: array(:,:,:,:)
10909 end subroutine historygetdouble4
10910 end interface
10911 interface
10912 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10913 character(*), intent(in):: file
10914 character(*), intent(in):: varname
10915 character(*), intent(out):: url
10916 character(*), intent(in), optional:: range
10917 logical, intent(out), optional:: flag_time_exist
10918 character(*), intent(out), optional:: time_name
10919 logical, intent(out), optional:: err
10920 end subroutine lookup_growable_url
10921 end interface
10922 interface
10923 function file_rename_mpi( file ) result(result)
10924 use dc_types, only: string
10925 character(*), intent(in):: file
10926 character(STRING):: result
10927 end function file_rename_mpi
10928 end interface
10929 continue
10930 file_work = file
10931 if ( present_and_true( flag_mpi_split ) ) &
10932 & file_work = file_rename_mpi( file_work )
10933 call lookup_growable_url(file = file_work, varname = varname, &
10934 & url = url, &
10935 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10936 call url_chop_iorange( &
10937 & fullname = url, iorange = iorange, remainder = remainder )
10938 call split( str = iorange, carray = carray, sep = gt_equal )
10939 timevar_name = carray(1)
10940 deallocate( carray )
10941 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10942 call historygetdouble4( file = file, &
10943 & varname = varname, array = array, &
10944 & range = time_range, quiet = quiet, &
10945 & flag_mpi_split = flag_mpi_split, &
10946 & returned_time = returned_time, &
10947 & flag_time_exist = flag_time_exist, &
10948 & err = err )
subroutine historygetdouble4(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble4timei()

subroutine historygetdouble4timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14663 of file historyget.f90.

14666 use dc_string, only: tochar, split
14667 use dc_types, only: string, dp
14668 use dc_trace, only: dbgmessage
14669 use dc_url, only: url_chop_iorange, gt_equal
14670 use dc_present, only: present_and_true
14671 ! MPI ライブラリ
14672 ! MPI library
14673 !
14674 use mpi
14675 implicit none
14676 character(*), intent(in):: file, varname
14677 integer, intent(in):: time
14678 logical, intent(in), optional:: quiet
14679 real(DP), intent(out) :: array(:,:,:,:)
14680 logical, intent(in), optional:: flag_mpi_split
14681 real(DP), intent(out), optional:: returned_time
14682 logical, intent(out), optional:: flag_time_exist
14683 logical, intent(out), optional:: err
14684 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14685 character(STRING), pointer:: carray (:)
14686 character(STRING):: tname
14687 interface
14688 subroutine historygetdouble4(&
14689 & file, varname, array, range, quiet, &
14690 & flag_mpi_split, returned_time, flag_time_exist, err)
14691 use dc_types, only: dp
14692 character(*), intent(in):: file
14693 character(*), intent(in):: varname
14694 character(*), intent(in), optional:: range
14695 logical, intent(in), optional:: quiet
14696 logical, intent(in), optional:: flag_mpi_split
14697 real(DP), intent(out), optional:: returned_time
14698 logical, intent(out), optional:: flag_time_exist
14699 logical, intent(out), optional:: err
14700 real(DP), intent(out) :: array(:,:,:,:)
14701 end subroutine historygetdouble4
14702 end interface
14703 interface
14704 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14705 character(*), intent(in):: file
14706 character(*), intent(in):: varname
14707 character(*), intent(out):: url
14708 character(*), intent(in), optional:: range
14709 logical, intent(out), optional:: flag_time_exist
14710 character(*), intent(out), optional:: time_name
14711 logical, intent(out), optional:: err
14712 end subroutine lookup_growable_url
14713 end interface
14714 interface
14715 function file_rename_mpi( file ) result(result)
14716 use dc_types, only: string
14717 character(*), intent(in):: file
14718 character(STRING):: result
14719 end function file_rename_mpi
14720 end interface
14721 continue
14722 file_work = file
14723 if ( present_and_true( flag_mpi_split ) ) &
14724 & file_work = file_rename_mpi( file_work )
14725 call lookup_growable_url(file = file_work, varname = varname, &
14726 & url = url, &
14727 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14728 call url_chop_iorange( &
14729 & fullname = url, iorange = iorange, remainder = remainder )
14730 call split( str = iorange, carray = carray, sep = gt_equal )
14731 timevar_name = carray(1)
14732 deallocate( carray )
14733 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14734 call historygetdouble4( file = file, &
14735 & varname = varname, array = array, &
14736 & range = time_range, quiet = quiet, &
14737 & flag_mpi_split = flag_mpi_split, &
14738 & returned_time = returned_time, &
14739 & flag_time_exist = flag_time_exist, &
14740 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble4timer()

subroutine historygetdouble4timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7079 of file historyget.f90.

7082 use dc_string, only: tochar, split
7083 use dc_types, only: string, dp, sp
7084 use dc_trace, only: dbgmessage
7085 use dc_url, only: url_chop_iorange, gt_equal
7086 use dc_present, only: present_and_true
7087 ! MPI ライブラリ
7088 ! MPI library
7089 !
7090 use mpi
7091 implicit none
7092 character(*), intent(in):: file, varname
7093 real(SP), intent(in):: time
7094 logical, intent(in), optional:: quiet
7095 real(DP), intent(out) :: array(:,:,:,:)
7096 logical, intent(in), optional:: flag_mpi_split
7097 real(DP), intent(out), optional:: returned_time
7098 logical, intent(out), optional:: flag_time_exist
7099 logical, intent(out), optional:: err
7100 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7101 character(STRING), pointer:: carray (:)
7102 character(STRING):: tname
7103 interface
7104 subroutine historygetdouble4(&
7105 & file, varname, array, range, quiet, &
7106 & flag_mpi_split, returned_time, flag_time_exist, err)
7107 use dc_types, only: dp
7108 character(*), intent(in):: file
7109 character(*), intent(in):: varname
7110 character(*), intent(in), optional:: range
7111 logical, intent(in), optional:: quiet
7112 logical, intent(in), optional:: flag_mpi_split
7113 real(DP), intent(out), optional:: returned_time
7114 logical, intent(out), optional:: flag_time_exist
7115 logical, intent(out), optional:: err
7116 real(DP), intent(out) :: array(:,:,:,:)
7117 end subroutine historygetdouble4
7118 end interface
7119 interface
7120 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7121 character(*), intent(in):: file
7122 character(*), intent(in):: varname
7123 character(*), intent(out):: url
7124 character(*), intent(in), optional:: range
7125 logical, intent(out), optional:: flag_time_exist
7126 character(*), intent(out), optional:: time_name
7127 logical, intent(out), optional:: err
7128 end subroutine lookup_growable_url
7129 end interface
7130 interface
7131 function file_rename_mpi( file ) result(result)
7132 use dc_types, only: string
7133 character(*), intent(in):: file
7134 character(STRING):: result
7135 end function file_rename_mpi
7136 end interface
7137 continue
7138 file_work = file
7139 if ( present_and_true( flag_mpi_split ) ) &
7140 & file_work = file_rename_mpi( file_work )
7141 call lookup_growable_url(file = file_work, varname = varname, &
7142 & url = url, &
7143 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7144 call url_chop_iorange( &
7145 & fullname = url, iorange = iorange, remainder = remainder )
7146 call split( str = iorange, carray = carray, sep = gt_equal )
7147 timevar_name = carray(1)
7148 deallocate( carray )
7149 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7150 call historygetdouble4( file = file, &
7151 & varname = varname, array = array, &
7152 & range = time_range, quiet = quiet, &
7153 & flag_mpi_split = flag_mpi_split, &
7154 & returned_time = returned_time, &
7155 & flag_time_exist = flag_time_exist, &
7156 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble5()

subroutine historygetdouble5 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 996 of file historyget.f90.

998 use gtdata_types, only: gt_variable
999 use gtdata_generic, only: open, inquire, close, get
1000 use dc_string, only: tochar
1002 use dc_regex, only: match
1003 use dc_types, only: string, dp
1004 use dc_message, only: messagenotify
1007 ! MPI ライブラリ
1008 ! MPI library
1009 use mpi
1010 implicit none
1011 character(*), intent(in):: file
1012 character(*), intent(in):: varname
1013 character(*), intent(in), optional:: range
1014 logical, intent(in), optional:: quiet
1015 logical, intent(in), optional:: flag_mpi_split
1016 real(DP), intent(out), optional:: returned_time ! データの時刻
1017 logical, intent(out), optional:: flag_time_exist
1018 logical, intent(out), optional:: err
1019 real(DP), intent(out) :: array(:,:,:,:,:)
1020 real(DP), allocatable :: array_tmp(:)
1021 integer:: array_allsize
1022 integer:: array_shape(5), data_shape(5), array_shape_check(5)
1023 integer:: allcount
1024 integer:: i, sd
1025 logical:: inq_err
1026 type(GT_VARIABLE):: var
1027 character(STRING):: file_work, url, actual_url
1028 integer:: rank, alldims, array_rank
1029 integer:: domain
1030 character(STRING):: tname
1031 integer:: stat
1032 character(STRING):: cause_c
1033 character(*), parameter :: subname = "HistoryGetDouble5"
1034 interface
1035 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1036 character(*), intent(in):: file
1037 character(*), intent(in):: varname
1038 character(*), intent(out):: url
1039 character(*), intent(in), optional:: range
1040 logical, intent(out), optional:: flag_time_exist
1041 character(*), intent(out), optional:: time_name
1042 logical, intent(out), optional:: err
1043 end subroutine lookup_growable_url
1044 end interface
1045 interface
1046 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1047 use dc_types, only: dp
1048 character(*), intent(in) :: url ! 変数 URL
1049 character(*), intent(out), optional :: actual_url
1050 ! 正確な入出力範囲指定
1051 real(DP), intent(out), optional:: returned_time ! データの時刻
1052 character(*), intent(in), optional:: time_name ! 時刻次元の名称
1053 logical, intent(out), optional :: err ! エラーのフラグ
1054 end subroutine actual_iorange_dump
1055 end interface
1056 interface
1057 function file_rename_mpi( file ) result(result)
1058 use dc_types, only: string
1059 character(*), intent(in):: file
1060 character(STRING):: result
1061 end function file_rename_mpi
1062 end interface
1063 continue
1064 cause_c = ''
1065 stat = dc_noerr
1066 file_work = file
1067 array_shape = shape( array )
1068 array_allsize = size( array )
1069 ! ファイル名の変更 (MPI 用)
1070 ! Change filename (for MPI)
1071 !
1072 if ( present_and_true( flag_mpi_split ) ) &
1073 & file_work = file_rename_mpi( file_work )
1074 ! 最新時刻の URL 取得
1075 ! Get URL of latest time
1076 !
1077 call lookup_growable_url(file_work, varname, url, range, &
1078 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1079 if ( present_and_true(err) ) then
1080 stat = gt_enoturl
1081 cause_c = url
1082 goto 999
1083 end if
1084 ! ファイルオープン
1085 ! File open
1086 call open( var, url, err = err )
1087 if ( present_and_true(err) ) then
1088 stat = gt_enoturl
1089 cause_c = url
1090 goto 999
1091 end if
1092 !-------------------------------------------------------------------
1093 ! 配列形状のチェック
1094 ! Check array shape
1095 !-------------------------------------------------------------------
1096 ! 入力ファイル中のデータの次元数
1097 ! Get size of dimesions in data of an input file
1098 !
1099 call inquire( var = var, & ! (in)
1100 & rank = rank, alldims = alldims ) ! (out)
1101 ! 引数の次元数のチェック (縮退されている場合には減らす)
1102 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1103 array_rank = 5
1104 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1105 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
1106 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
1107 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
1108 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
1109 ! 次元数の比較
1110 ! Compare sizes of dimensions
1111 !
1112 if ( .not. 5 == rank .and. .not. array_rank == rank ) then
1113 if ( .not. present_and_true(quiet) ) then
1114 call messagenotify('W', subname, &
1115 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1116 & i = (/rank, 5/), c1 = trim(url) )
1117 end if
1118 stat = gt_erankmismatch
1119 cause_c = 'array'
1120 goto 999
1121 end if
1122 ! 入力ファイル中のデータの配列形状取得
1123 ! Get shape of data in an input file
1124 call inquire( var = var , dimord = 1, & ! (in)
1125 & allcount = allcount, err = inq_err ) ! (out)
1126 if ( .not. inq_err ) then
1127 data_shape(1) = allcount
1128 else
1129 data_shape(1) = 1
1130 end if
1131 call inquire( var = var , dimord = 2, & ! (in)
1132 & allcount = allcount, err = inq_err ) ! (out)
1133 if ( .not. inq_err ) then
1134 data_shape(2) = allcount
1135 else
1136 data_shape(2) = 1
1137 end if
1138 call inquire( var = var , dimord = 3, & ! (in)
1139 & allcount = allcount, err = inq_err ) ! (out)
1140 if ( .not. inq_err ) then
1141 data_shape(3) = allcount
1142 else
1143 data_shape(3) = 1
1144 end if
1145 call inquire( var = var , dimord = 4, & ! (in)
1146 & allcount = allcount, err = inq_err ) ! (out)
1147 if ( .not. inq_err ) then
1148 data_shape(4) = allcount
1149 else
1150 data_shape(4) = 1
1151 end if
1152 call inquire( var = var , dimord = 5, & ! (in)
1153 & allcount = allcount, err = inq_err ) ! (out)
1154 if ( .not. inq_err ) then
1155 data_shape(5) = allcount
1156 else
1157 data_shape(5) = 1
1158 end if
1159 ! 引数の配列形状整形
1160 ! Arrange shape of an argument
1161 !
1162 array_shape_check = array_shape
1163 sd = 1
1164 do i = 1, 5 - 1
1165 if ( array_shape_check(sd) == 1 ) then
1166 array_shape_check(sd:5) = cshift( array_shape_check(sd:5), 1, 1 )
1167 else
1168 sd = sd + 1
1169 end if
1170 end do
1171 ! 配列形状の比較
1172 ! Compare shapes
1173 !
1174 if ( .not. all( array_shape_check == data_shape ) ) then
1175 if ( .not. present_and_true(quiet) ) then
1176 call messagenotify('W', subname, &
1177 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1178 & c1 = trim( url ), &
1179 & c2 = trim( tochar( data_shape(1:rank) ) ), &
1180 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1181 end if
1182 stat = gt_eargsizemismatch
1183 cause_c = 'array'
1184 goto 999
1185 end if
1186 !-------------------------------------
1187 ! データ取得
1188 ! Get data
1189 call inquire( var = var, & ! (in)
1190 & size = domain ) ! (out)
1191 if ( allocated( array_tmp ) ) deallocate( array_tmp )
1192 allocate( array_tmp(array_allsize) )
1193 call get( var, array_tmp, domain )
1194 array = reshape( array_tmp, array_shape )
1195 deallocate( array_tmp )
1196 call close( var )
1197 !-------------------------------------
1198 ! データファイル名と切り出し範囲の印字
1199 ! Print data filename and clipping range
1200 call actual_iorange_dump(url, & ! (in)
1201 & actual_url, returned_time, & ! (out) optional
1202 & time_name = tname, & ! (in) optional
1203 & err = err) ! (out) optional
1204 if ( .not. present_and_true(quiet) ) then
1205 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1206 end if
1207999 continue
1208 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble5pointer()

subroutine historygetdouble5pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5214 of file historyget.f90.

5216 use gtdata_types, only: gt_variable
5217 use gtdata_generic, only: open, inquire, close, get
5218 use dc_string, only: tochar
5220 use dc_types, only: string, dp
5221 use dc_message, only: messagenotify
5222 use dc_trace, only: dbgmessage
5223 ! MPI ライブラリ
5224 ! MPI library
5225 !
5226 use mpi
5227 implicit none
5228 character(*), intent(in):: file
5229 character(*), intent(in):: varname
5230 character(*), intent(in), optional:: range
5231 logical, intent(in), optional:: quiet
5232 logical, intent(in), optional:: flag_mpi_split
5233 real(DP), intent(out), optional:: returned_time ! データの時刻
5234 logical, intent(out), optional:: flag_time_exist
5235 logical, intent(out), optional:: err
5236 real(DP), pointer :: array(:,:,:,:,:) ! (out)
5237 type(GT_VARIABLE):: var
5238 character(STRING):: file_work, url, actual_url
5239 character(STRING):: tname
5240 character(*), parameter :: subname = "HistoryGetDouble5Pointer"
5241 interface
5242 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5243 character(*), intent(in):: file
5244 character(*), intent(in):: varname
5245 character(*), intent(out):: url
5246 character(*), intent(in), optional:: range
5247 logical, intent(out), optional:: flag_time_exist
5248 character(*), intent(out), optional:: time_name
5249 logical, intent(out), optional:: err
5250 end subroutine lookup_growable_url
5251 end interface
5252 interface
5253 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5254 use dc_types, only: dp
5255 character(*), intent(in) :: url ! 変数 URL
5256 character(*), intent(out), optional :: actual_url
5257 ! 正確な入出力範囲指定
5258 real(DP), intent(out), optional:: returned_time ! データの時刻
5259 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5260 logical, intent(out), optional :: err ! エラーのフラグ
5261 end subroutine actual_iorange_dump
5262 end interface
5263 interface
5264 function file_rename_mpi( file ) result(result)
5265 use dc_types, only: string
5266 character(*), intent(in):: file
5267 character(STRING):: result
5268 end function file_rename_mpi
5269 end interface
5270 continue
5271 file_work = file
5272 ! ファイル名の変更 (MPI 用)
5273 ! Change filename (for MPI)
5274 !
5275 if ( present_and_true( flag_mpi_split ) ) &
5276 & file_work = file_rename_mpi( file_work )
5277 ! 必要な情報を gtool 変数化
5278 !
5279 call lookup_growable_url(file_work, varname, url, range, &
5280 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5281 call dbgmessage('@ url =%c', c1=trim(url))
5282 ! いよいよデータ取得
5283 !
5284 call open(var, url, err)
5285 call get(var, array, err)
5286 call close(var, err)
5287 call actual_iorange_dump(url, & ! (in)
5288 & actual_url, returned_time, & ! (out) optional
5289 & time_name = tname, & ! (in) optional
5290 & err = err) ! (out) optional
5291 if ( .not. present_and_true(quiet) ) then
5292 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5293 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble5pointertimed()

subroutine historygetdouble5pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11582 of file historyget.f90.

11585 use dc_string, only: tochar, split
11586 use dc_types, only: string, dp
11587 use dc_trace, only: dbgmessage
11588 use dc_url, only: url_chop_iorange, gt_equal
11589 use dc_present, only: present_and_true
11590 ! MPI ライブラリ
11591 ! MPI library
11592 !
11593 use mpi
11594 implicit none
11595 character(*), intent(in):: file, varname
11596 real(DP), intent(in):: time
11597 logical, intent(in), optional:: quiet
11598 real(DP), pointer :: array(:,:,:,:,:)
11599 logical, intent(in), optional:: flag_mpi_split
11600 real(DP), intent(out), optional:: returned_time
11601 logical, intent(out), optional:: flag_time_exist
11602 logical, intent(out), optional:: err
11603 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11604 character(STRING), pointer:: carray (:)
11605 character(STRING):: tname
11606 interface
11607 subroutine historygetdouble5pointer(&
11608 & file, varname, array, range, quiet, &
11609 & flag_mpi_split, returned_time, flag_time_exist, err)
11610 use dc_types, only: dp
11611 character(*), intent(in):: file
11612 character(*), intent(in):: varname
11613 character(*), intent(in), optional:: range
11614 logical, intent(in), optional:: quiet
11615 logical, intent(in), optional:: flag_mpi_split
11616 real(DP), intent(out), optional:: returned_time
11617 logical, intent(out), optional:: flag_time_exist
11618 logical, intent(out), optional:: err
11619 real(DP), pointer :: array(:,:,:,:,:)
11620 end subroutine historygetdouble5pointer
11621 end interface
11622 interface
11623 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11624 character(*), intent(in):: file
11625 character(*), intent(in):: varname
11626 character(*), intent(out):: url
11627 character(*), intent(in), optional:: range
11628 logical, intent(out), optional:: flag_time_exist
11629 character(*), intent(out), optional:: time_name
11630 logical, intent(out), optional:: err
11631 end subroutine lookup_growable_url
11632 end interface
11633 interface
11634 function file_rename_mpi( file ) result(result)
11635 use dc_types, only: string
11636 character(*), intent(in):: file
11637 character(STRING):: result
11638 end function file_rename_mpi
11639 end interface
11640 continue
11641 file_work = file
11642 if ( present_and_true( flag_mpi_split ) ) &
11643 & file_work = file_rename_mpi( file_work )
11644 call lookup_growable_url(file = file_work, varname = varname, &
11645 & url = url, &
11646 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11647 call url_chop_iorange( &
11648 & fullname = url, iorange = iorange, remainder = remainder )
11649 call split( str = iorange, carray = carray, sep = gt_equal )
11650 timevar_name = carray(1)
11651 deallocate( carray )
11652 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11653 call historygetdouble5pointer( file = file, &
11654 & varname = varname, array = array, &
11655 & range = time_range, quiet = quiet, &
11656 & flag_mpi_split = flag_mpi_split, &
11657 & returned_time = returned_time, &
11658 & flag_time_exist = flag_time_exist, &
11659 & err = err )
subroutine historygetdouble5pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble5pointertimei()

subroutine historygetdouble5pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15374 of file historyget.f90.

15377 use dc_string, only: tochar, split
15378 use dc_types, only: string, dp
15379 use dc_trace, only: dbgmessage
15380 use dc_url, only: url_chop_iorange, gt_equal
15381 use dc_present, only: present_and_true
15382 ! MPI ライブラリ
15383 ! MPI library
15384 !
15385 use mpi
15386 implicit none
15387 character(*), intent(in):: file, varname
15388 integer, intent(in):: time
15389 logical, intent(in), optional:: quiet
15390 real(DP), pointer :: array(:,:,:,:,:)
15391 logical, intent(in), optional:: flag_mpi_split
15392 real(DP), intent(out), optional:: returned_time
15393 logical, intent(out), optional:: flag_time_exist
15394 logical, intent(out), optional:: err
15395 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15396 character(STRING), pointer:: carray (:)
15397 character(STRING):: tname
15398 interface
15399 subroutine historygetdouble5pointer(&
15400 & file, varname, array, range, quiet, &
15401 & flag_mpi_split, returned_time, flag_time_exist, err)
15402 use dc_types, only: dp
15403 character(*), intent(in):: file
15404 character(*), intent(in):: varname
15405 character(*), intent(in), optional:: range
15406 logical, intent(in), optional:: quiet
15407 logical, intent(in), optional:: flag_mpi_split
15408 real(DP), intent(out), optional:: returned_time
15409 logical, intent(out), optional:: flag_time_exist
15410 logical, intent(out), optional:: err
15411 real(DP), pointer :: array(:,:,:,:,:)
15412 end subroutine historygetdouble5pointer
15413 end interface
15414 interface
15415 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15416 character(*), intent(in):: file
15417 character(*), intent(in):: varname
15418 character(*), intent(out):: url
15419 character(*), intent(in), optional:: range
15420 logical, intent(out), optional:: flag_time_exist
15421 character(*), intent(out), optional:: time_name
15422 logical, intent(out), optional:: err
15423 end subroutine lookup_growable_url
15424 end interface
15425 interface
15426 function file_rename_mpi( file ) result(result)
15427 use dc_types, only: string
15428 character(*), intent(in):: file
15429 character(STRING):: result
15430 end function file_rename_mpi
15431 end interface
15432 continue
15433 file_work = file
15434 if ( present_and_true( flag_mpi_split ) ) &
15435 & file_work = file_rename_mpi( file_work )
15436 call lookup_growable_url(file = file_work, varname = varname, &
15437 & url = url, &
15438 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15439 call url_chop_iorange( &
15440 & fullname = url, iorange = iorange, remainder = remainder )
15441 call split( str = iorange, carray = carray, sep = gt_equal )
15442 timevar_name = carray(1)
15443 deallocate( carray )
15444 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15445 call historygetdouble5pointer( file = file, &
15446 & varname = varname, array = array, &
15447 & range = time_range, quiet = quiet, &
15448 & flag_mpi_split = flag_mpi_split, &
15449 & returned_time = returned_time, &
15450 & flag_time_exist = flag_time_exist, &
15451 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble5pointertimer()

subroutine historygetdouble5pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7790 of file historyget.f90.

7793 use dc_string, only: tochar, split
7794 use dc_types, only: string, dp, sp
7795 use dc_trace, only: dbgmessage
7796 use dc_url, only: url_chop_iorange, gt_equal
7797 use dc_present, only: present_and_true
7798 ! MPI ライブラリ
7799 ! MPI library
7800 !
7801 use mpi
7802 implicit none
7803 character(*), intent(in):: file, varname
7804 real(SP), intent(in):: time
7805 logical, intent(in), optional:: quiet
7806 real(DP), pointer :: array(:,:,:,:,:)
7807 logical, intent(in), optional:: flag_mpi_split
7808 real(DP), intent(out), optional:: returned_time
7809 logical, intent(out), optional:: flag_time_exist
7810 logical, intent(out), optional:: err
7811 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7812 character(STRING), pointer:: carray (:)
7813 character(STRING):: tname
7814 interface
7815 subroutine historygetdouble5pointer(&
7816 & file, varname, array, range, quiet, &
7817 & flag_mpi_split, returned_time, flag_time_exist, err)
7818 use dc_types, only: dp
7819 character(*), intent(in):: file
7820 character(*), intent(in):: varname
7821 character(*), intent(in), optional:: range
7822 logical, intent(in), optional:: quiet
7823 logical, intent(in), optional:: flag_mpi_split
7824 real(DP), intent(out), optional:: returned_time
7825 logical, intent(out), optional:: flag_time_exist
7826 logical, intent(out), optional:: err
7827 real(DP), pointer :: array(:,:,:,:,:)
7828 end subroutine historygetdouble5pointer
7829 end interface
7830 interface
7831 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7832 character(*), intent(in):: file
7833 character(*), intent(in):: varname
7834 character(*), intent(out):: url
7835 character(*), intent(in), optional:: range
7836 logical, intent(out), optional:: flag_time_exist
7837 character(*), intent(out), optional:: time_name
7838 logical, intent(out), optional:: err
7839 end subroutine lookup_growable_url
7840 end interface
7841 interface
7842 function file_rename_mpi( file ) result(result)
7843 use dc_types, only: string
7844 character(*), intent(in):: file
7845 character(STRING):: result
7846 end function file_rename_mpi
7847 end interface
7848 continue
7849 file_work = file
7850 if ( present_and_true( flag_mpi_split ) ) &
7851 & file_work = file_rename_mpi( file_work )
7852 call lookup_growable_url(file = file_work, varname = varname, &
7853 & url = url, &
7854 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7855 call url_chop_iorange( &
7856 & fullname = url, iorange = iorange, remainder = remainder )
7857 call split( str = iorange, carray = carray, sep = gt_equal )
7858 timevar_name = carray(1)
7859 deallocate( carray )
7860 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7861 call historygetdouble5pointer( file = file, &
7862 & varname = varname, array = array, &
7863 & range = time_range, quiet = quiet, &
7864 & flag_mpi_split = flag_mpi_split, &
7865 & returned_time = returned_time, &
7866 & flag_time_exist = flag_time_exist, &
7867 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble5timed()

subroutine historygetdouble5timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10950 of file historyget.f90.

10953 use dc_string, only: tochar, split
10954 use dc_types, only: string, dp
10955 use dc_trace, only: dbgmessage
10956 use dc_url, only: url_chop_iorange, gt_equal
10957 use dc_present, only: present_and_true
10958 ! MPI ライブラリ
10959 ! MPI library
10960 !
10961 use mpi
10962 implicit none
10963 character(*), intent(in):: file, varname
10964 real(DP), intent(in):: time
10965 logical, intent(in), optional:: quiet
10966 real(DP), intent(out) :: array(:,:,:,:,:)
10967 logical, intent(in), optional:: flag_mpi_split
10968 real(DP), intent(out), optional:: returned_time
10969 logical, intent(out), optional:: flag_time_exist
10970 logical, intent(out), optional:: err
10971 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10972 character(STRING), pointer:: carray (:)
10973 character(STRING):: tname
10974 interface
10975 subroutine historygetdouble5(&
10976 & file, varname, array, range, quiet, &
10977 & flag_mpi_split, returned_time, flag_time_exist, err)
10978 use dc_types, only: dp
10979 character(*), intent(in):: file
10980 character(*), intent(in):: varname
10981 character(*), intent(in), optional:: range
10982 logical, intent(in), optional:: quiet
10983 logical, intent(in), optional:: flag_mpi_split
10984 real(DP), intent(out), optional:: returned_time
10985 logical, intent(out), optional:: flag_time_exist
10986 logical, intent(out), optional:: err
10987 real(DP), intent(out) :: array(:,:,:,:,:)
10988 end subroutine historygetdouble5
10989 end interface
10990 interface
10991 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10992 character(*), intent(in):: file
10993 character(*), intent(in):: varname
10994 character(*), intent(out):: url
10995 character(*), intent(in), optional:: range
10996 logical, intent(out), optional:: flag_time_exist
10997 character(*), intent(out), optional:: time_name
10998 logical, intent(out), optional:: err
10999 end subroutine lookup_growable_url
11000 end interface
11001 interface
11002 function file_rename_mpi( file ) result(result)
11003 use dc_types, only: string
11004 character(*), intent(in):: file
11005 character(STRING):: result
11006 end function file_rename_mpi
11007 end interface
11008 continue
11009 file_work = file
11010 if ( present_and_true( flag_mpi_split ) ) &
11011 & file_work = file_rename_mpi( file_work )
11012 call lookup_growable_url(file = file_work, varname = varname, &
11013 & url = url, &
11014 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11015 call url_chop_iorange( &
11016 & fullname = url, iorange = iorange, remainder = remainder )
11017 call split( str = iorange, carray = carray, sep = gt_equal )
11018 timevar_name = carray(1)
11019 deallocate( carray )
11020 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11021 call historygetdouble5( file = file, &
11022 & varname = varname, array = array, &
11023 & range = time_range, quiet = quiet, &
11024 & flag_mpi_split = flag_mpi_split, &
11025 & returned_time = returned_time, &
11026 & flag_time_exist = flag_time_exist, &
11027 & err = err )
subroutine historygetdouble5(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble5timei()

subroutine historygetdouble5timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14742 of file historyget.f90.

14745 use dc_string, only: tochar, split
14746 use dc_types, only: string, dp
14747 use dc_trace, only: dbgmessage
14748 use dc_url, only: url_chop_iorange, gt_equal
14749 use dc_present, only: present_and_true
14750 ! MPI ライブラリ
14751 ! MPI library
14752 !
14753 use mpi
14754 implicit none
14755 character(*), intent(in):: file, varname
14756 integer, intent(in):: time
14757 logical, intent(in), optional:: quiet
14758 real(DP), intent(out) :: array(:,:,:,:,:)
14759 logical, intent(in), optional:: flag_mpi_split
14760 real(DP), intent(out), optional:: returned_time
14761 logical, intent(out), optional:: flag_time_exist
14762 logical, intent(out), optional:: err
14763 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14764 character(STRING), pointer:: carray (:)
14765 character(STRING):: tname
14766 interface
14767 subroutine historygetdouble5(&
14768 & file, varname, array, range, quiet, &
14769 & flag_mpi_split, returned_time, flag_time_exist, err)
14770 use dc_types, only: dp
14771 character(*), intent(in):: file
14772 character(*), intent(in):: varname
14773 character(*), intent(in), optional:: range
14774 logical, intent(in), optional:: quiet
14775 logical, intent(in), optional:: flag_mpi_split
14776 real(DP), intent(out), optional:: returned_time
14777 logical, intent(out), optional:: flag_time_exist
14778 logical, intent(out), optional:: err
14779 real(DP), intent(out) :: array(:,:,:,:,:)
14780 end subroutine historygetdouble5
14781 end interface
14782 interface
14783 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14784 character(*), intent(in):: file
14785 character(*), intent(in):: varname
14786 character(*), intent(out):: url
14787 character(*), intent(in), optional:: range
14788 logical, intent(out), optional:: flag_time_exist
14789 character(*), intent(out), optional:: time_name
14790 logical, intent(out), optional:: err
14791 end subroutine lookup_growable_url
14792 end interface
14793 interface
14794 function file_rename_mpi( file ) result(result)
14795 use dc_types, only: string
14796 character(*), intent(in):: file
14797 character(STRING):: result
14798 end function file_rename_mpi
14799 end interface
14800 continue
14801 file_work = file
14802 if ( present_and_true( flag_mpi_split ) ) &
14803 & file_work = file_rename_mpi( file_work )
14804 call lookup_growable_url(file = file_work, varname = varname, &
14805 & url = url, &
14806 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14807 call url_chop_iorange( &
14808 & fullname = url, iorange = iorange, remainder = remainder )
14809 call split( str = iorange, carray = carray, sep = gt_equal )
14810 timevar_name = carray(1)
14811 deallocate( carray )
14812 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14813 call historygetdouble5( file = file, &
14814 & varname = varname, array = array, &
14815 & range = time_range, quiet = quiet, &
14816 & flag_mpi_split = flag_mpi_split, &
14817 & returned_time = returned_time, &
14818 & flag_time_exist = flag_time_exist, &
14819 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble5timer()

subroutine historygetdouble5timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7158 of file historyget.f90.

7161 use dc_string, only: tochar, split
7162 use dc_types, only: string, dp, sp
7163 use dc_trace, only: dbgmessage
7164 use dc_url, only: url_chop_iorange, gt_equal
7165 use dc_present, only: present_and_true
7166 ! MPI ライブラリ
7167 ! MPI library
7168 !
7169 use mpi
7170 implicit none
7171 character(*), intent(in):: file, varname
7172 real(SP), intent(in):: time
7173 logical, intent(in), optional:: quiet
7174 real(DP), intent(out) :: array(:,:,:,:,:)
7175 logical, intent(in), optional:: flag_mpi_split
7176 real(DP), intent(out), optional:: returned_time
7177 logical, intent(out), optional:: flag_time_exist
7178 logical, intent(out), optional:: err
7179 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7180 character(STRING), pointer:: carray (:)
7181 character(STRING):: tname
7182 interface
7183 subroutine historygetdouble5(&
7184 & file, varname, array, range, quiet, &
7185 & flag_mpi_split, returned_time, flag_time_exist, err)
7186 use dc_types, only: dp
7187 character(*), intent(in):: file
7188 character(*), intent(in):: varname
7189 character(*), intent(in), optional:: range
7190 logical, intent(in), optional:: quiet
7191 logical, intent(in), optional:: flag_mpi_split
7192 real(DP), intent(out), optional:: returned_time
7193 logical, intent(out), optional:: flag_time_exist
7194 logical, intent(out), optional:: err
7195 real(DP), intent(out) :: array(:,:,:,:,:)
7196 end subroutine historygetdouble5
7197 end interface
7198 interface
7199 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7200 character(*), intent(in):: file
7201 character(*), intent(in):: varname
7202 character(*), intent(out):: url
7203 character(*), intent(in), optional:: range
7204 logical, intent(out), optional:: flag_time_exist
7205 character(*), intent(out), optional:: time_name
7206 logical, intent(out), optional:: err
7207 end subroutine lookup_growable_url
7208 end interface
7209 interface
7210 function file_rename_mpi( file ) result(result)
7211 use dc_types, only: string
7212 character(*), intent(in):: file
7213 character(STRING):: result
7214 end function file_rename_mpi
7215 end interface
7216 continue
7217 file_work = file
7218 if ( present_and_true( flag_mpi_split ) ) &
7219 & file_work = file_rename_mpi( file_work )
7220 call lookup_growable_url(file = file_work, varname = varname, &
7221 & url = url, &
7222 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7223 call url_chop_iorange( &
7224 & fullname = url, iorange = iorange, remainder = remainder )
7225 call split( str = iorange, carray = carray, sep = gt_equal )
7226 timevar_name = carray(1)
7227 deallocate( carray )
7228 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7229 call historygetdouble5( file = file, &
7230 & varname = varname, array = array, &
7231 & range = time_range, quiet = quiet, &
7232 & flag_mpi_split = flag_mpi_split, &
7233 & returned_time = returned_time, &
7234 & flag_time_exist = flag_time_exist, &
7235 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble6()

subroutine historygetdouble6 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 1210 of file historyget.f90.

1212 use gtdata_types, only: gt_variable
1213 use gtdata_generic, only: open, inquire, close, get
1214 use dc_string, only: tochar
1216 use dc_regex, only: match
1217 use dc_types, only: string, dp
1218 use dc_message, only: messagenotify
1221 ! MPI ライブラリ
1222 ! MPI library
1223 use mpi
1224 implicit none
1225 character(*), intent(in):: file
1226 character(*), intent(in):: varname
1227 character(*), intent(in), optional:: range
1228 logical, intent(in), optional:: quiet
1229 logical, intent(in), optional:: flag_mpi_split
1230 real(DP), intent(out), optional:: returned_time ! データの時刻
1231 logical, intent(out), optional:: flag_time_exist
1232 logical, intent(out), optional:: err
1233 real(DP), intent(out) :: array(:,:,:,:,:,:)
1234 real(DP), allocatable :: array_tmp(:)
1235 integer:: array_allsize
1236 integer:: array_shape(6), data_shape(6), array_shape_check(6)
1237 integer:: allcount
1238 integer:: i, sd
1239 logical:: inq_err
1240 type(GT_VARIABLE):: var
1241 character(STRING):: file_work, url, actual_url
1242 integer:: rank, alldims, array_rank
1243 integer:: domain
1244 character(STRING):: tname
1245 integer:: stat
1246 character(STRING):: cause_c
1247 character(*), parameter :: subname = "HistoryGetDouble6"
1248 interface
1249 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1250 character(*), intent(in):: file
1251 character(*), intent(in):: varname
1252 character(*), intent(out):: url
1253 character(*), intent(in), optional:: range
1254 logical, intent(out), optional:: flag_time_exist
1255 character(*), intent(out), optional:: time_name
1256 logical, intent(out), optional:: err
1257 end subroutine lookup_growable_url
1258 end interface
1259 interface
1260 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1261 use dc_types, only: dp
1262 character(*), intent(in) :: url ! 変数 URL
1263 character(*), intent(out), optional :: actual_url
1264 ! 正確な入出力範囲指定
1265 real(DP), intent(out), optional:: returned_time ! データの時刻
1266 character(*), intent(in), optional:: time_name ! 時刻次元の名称
1267 logical, intent(out), optional :: err ! エラーのフラグ
1268 end subroutine actual_iorange_dump
1269 end interface
1270 interface
1271 function file_rename_mpi( file ) result(result)
1272 use dc_types, only: string
1273 character(*), intent(in):: file
1274 character(STRING):: result
1275 end function file_rename_mpi
1276 end interface
1277 continue
1278 cause_c = ''
1279 stat = dc_noerr
1280 file_work = file
1281 array_shape = shape( array )
1282 array_allsize = size( array )
1283 ! ファイル名の変更 (MPI 用)
1284 ! Change filename (for MPI)
1285 !
1286 if ( present_and_true( flag_mpi_split ) ) &
1287 & file_work = file_rename_mpi( file_work )
1288 ! 最新時刻の URL 取得
1289 ! Get URL of latest time
1290 !
1291 call lookup_growable_url(file_work, varname, url, range, &
1292 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1293 if ( present_and_true(err) ) then
1294 stat = gt_enoturl
1295 cause_c = url
1296 goto 999
1297 end if
1298 ! ファイルオープン
1299 ! File open
1300 call open( var, url, err = err )
1301 if ( present_and_true(err) ) then
1302 stat = gt_enoturl
1303 cause_c = url
1304 goto 999
1305 end if
1306 !-------------------------------------------------------------------
1307 ! 配列形状のチェック
1308 ! Check array shape
1309 !-------------------------------------------------------------------
1310 ! 入力ファイル中のデータの次元数
1311 ! Get size of dimesions in data of an input file
1312 !
1313 call inquire( var = var, & ! (in)
1314 & rank = rank, alldims = alldims ) ! (out)
1315 ! 引数の次元数のチェック (縮退されている場合には減らす)
1316 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1317 array_rank = 6
1318 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1319 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
1320 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
1321 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
1322 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
1323 if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
1324 ! 次元数の比較
1325 ! Compare sizes of dimensions
1326 !
1327 if ( .not. 6 == rank .and. .not. array_rank == rank ) then
1328 if ( .not. present_and_true(quiet) ) then
1329 call messagenotify('W', subname, &
1330 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1331 & i = (/rank, 6/), c1 = trim(url) )
1332 end if
1333 stat = gt_erankmismatch
1334 cause_c = 'array'
1335 goto 999
1336 end if
1337 ! 入力ファイル中のデータの配列形状取得
1338 ! Get shape of data in an input file
1339 call inquire( var = var , dimord = 1, & ! (in)
1340 & allcount = allcount, err = inq_err ) ! (out)
1341 if ( .not. inq_err ) then
1342 data_shape(1) = allcount
1343 else
1344 data_shape(1) = 1
1345 end if
1346 call inquire( var = var , dimord = 2, & ! (in)
1347 & allcount = allcount, err = inq_err ) ! (out)
1348 if ( .not. inq_err ) then
1349 data_shape(2) = allcount
1350 else
1351 data_shape(2) = 1
1352 end if
1353 call inquire( var = var , dimord = 3, & ! (in)
1354 & allcount = allcount, err = inq_err ) ! (out)
1355 if ( .not. inq_err ) then
1356 data_shape(3) = allcount
1357 else
1358 data_shape(3) = 1
1359 end if
1360 call inquire( var = var , dimord = 4, & ! (in)
1361 & allcount = allcount, err = inq_err ) ! (out)
1362 if ( .not. inq_err ) then
1363 data_shape(4) = allcount
1364 else
1365 data_shape(4) = 1
1366 end if
1367 call inquire( var = var , dimord = 5, & ! (in)
1368 & allcount = allcount, err = inq_err ) ! (out)
1369 if ( .not. inq_err ) then
1370 data_shape(5) = allcount
1371 else
1372 data_shape(5) = 1
1373 end if
1374 call inquire( var = var , dimord = 6, & ! (in)
1375 & allcount = allcount, err = inq_err ) ! (out)
1376 if ( .not. inq_err ) then
1377 data_shape(6) = allcount
1378 else
1379 data_shape(6) = 1
1380 end if
1381 ! 引数の配列形状整形
1382 ! Arrange shape of an argument
1383 !
1384 array_shape_check = array_shape
1385 sd = 1
1386 do i = 1, 6 - 1
1387 if ( array_shape_check(sd) == 1 ) then
1388 array_shape_check(sd:6) = cshift( array_shape_check(sd:6), 1, 1 )
1389 else
1390 sd = sd + 1
1391 end if
1392 end do
1393 ! 配列形状の比較
1394 ! Compare shapes
1395 !
1396 if ( .not. all( array_shape_check == data_shape ) ) then
1397 if ( .not. present_and_true(quiet) ) then
1398 call messagenotify('W', subname, &
1399 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1400 & c1 = trim( url ), &
1401 & c2 = trim( tochar( data_shape(1:rank) ) ), &
1402 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1403 end if
1404 stat = gt_eargsizemismatch
1405 cause_c = 'array'
1406 goto 999
1407 end if
1408 !-------------------------------------
1409 ! データ取得
1410 ! Get data
1411 call inquire( var = var, & ! (in)
1412 & size = domain ) ! (out)
1413 if ( allocated( array_tmp ) ) deallocate( array_tmp )
1414 allocate( array_tmp(array_allsize) )
1415 call get( var, array_tmp, domain )
1416 array = reshape( array_tmp, array_shape )
1417 deallocate( array_tmp )
1418 call close( var )
1419 !-------------------------------------
1420 ! データファイル名と切り出し範囲の印字
1421 ! Print data filename and clipping range
1422 call actual_iorange_dump(url, & ! (in)
1423 & actual_url, returned_time, & ! (out) optional
1424 & time_name = tname, & ! (in) optional
1425 & err = err) ! (out) optional
1426 if ( .not. present_and_true(quiet) ) then
1427 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1428 end if
1429999 continue
1430 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble6pointer()

subroutine historygetdouble6pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5295 of file historyget.f90.

5297 use gtdata_types, only: gt_variable
5298 use gtdata_generic, only: open, inquire, close, get
5299 use dc_string, only: tochar
5301 use dc_types, only: string, dp
5302 use dc_message, only: messagenotify
5303 use dc_trace, only: dbgmessage
5304 ! MPI ライブラリ
5305 ! MPI library
5306 !
5307 use mpi
5308 implicit none
5309 character(*), intent(in):: file
5310 character(*), intent(in):: varname
5311 character(*), intent(in), optional:: range
5312 logical, intent(in), optional:: quiet
5313 logical, intent(in), optional:: flag_mpi_split
5314 real(DP), intent(out), optional:: returned_time ! データの時刻
5315 logical, intent(out), optional:: flag_time_exist
5316 logical, intent(out), optional:: err
5317 real(DP), pointer :: array(:,:,:,:,:,:) ! (out)
5318 type(GT_VARIABLE):: var
5319 character(STRING):: file_work, url, actual_url
5320 character(STRING):: tname
5321 character(*), parameter :: subname = "HistoryGetDouble6Pointer"
5322 interface
5323 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5324 character(*), intent(in):: file
5325 character(*), intent(in):: varname
5326 character(*), intent(out):: url
5327 character(*), intent(in), optional:: range
5328 logical, intent(out), optional:: flag_time_exist
5329 character(*), intent(out), optional:: time_name
5330 logical, intent(out), optional:: err
5331 end subroutine lookup_growable_url
5332 end interface
5333 interface
5334 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5335 use dc_types, only: dp
5336 character(*), intent(in) :: url ! 変数 URL
5337 character(*), intent(out), optional :: actual_url
5338 ! 正確な入出力範囲指定
5339 real(DP), intent(out), optional:: returned_time ! データの時刻
5340 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5341 logical, intent(out), optional :: err ! エラーのフラグ
5342 end subroutine actual_iorange_dump
5343 end interface
5344 interface
5345 function file_rename_mpi( file ) result(result)
5346 use dc_types, only: string
5347 character(*), intent(in):: file
5348 character(STRING):: result
5349 end function file_rename_mpi
5350 end interface
5351 continue
5352 file_work = file
5353 ! ファイル名の変更 (MPI 用)
5354 ! Change filename (for MPI)
5355 !
5356 if ( present_and_true( flag_mpi_split ) ) &
5357 & file_work = file_rename_mpi( file_work )
5358 ! 必要な情報を gtool 変数化
5359 !
5360 call lookup_growable_url(file_work, varname, url, range, &
5361 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5362 call dbgmessage('@ url =%c', c1=trim(url))
5363 ! いよいよデータ取得
5364 !
5365 call open(var, url, err)
5366 call get(var, array, err)
5367 call close(var, err)
5368 call actual_iorange_dump(url, & ! (in)
5369 & actual_url, returned_time, & ! (out) optional
5370 & time_name = tname, & ! (in) optional
5371 & err = err) ! (out) optional
5372 if ( .not. present_and_true(quiet) ) then
5373 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5374 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble6pointertimed()

subroutine historygetdouble6pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11661 of file historyget.f90.

11664 use dc_string, only: tochar, split
11665 use dc_types, only: string, dp
11666 use dc_trace, only: dbgmessage
11667 use dc_url, only: url_chop_iorange, gt_equal
11668 use dc_present, only: present_and_true
11669 ! MPI ライブラリ
11670 ! MPI library
11671 !
11672 use mpi
11673 implicit none
11674 character(*), intent(in):: file, varname
11675 real(DP), intent(in):: time
11676 logical, intent(in), optional:: quiet
11677 real(DP), pointer :: array(:,:,:,:,:,:)
11678 logical, intent(in), optional:: flag_mpi_split
11679 real(DP), intent(out), optional:: returned_time
11680 logical, intent(out), optional:: flag_time_exist
11681 logical, intent(out), optional:: err
11682 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11683 character(STRING), pointer:: carray (:)
11684 character(STRING):: tname
11685 interface
11686 subroutine historygetdouble6pointer(&
11687 & file, varname, array, range, quiet, &
11688 & flag_mpi_split, returned_time, flag_time_exist, err)
11689 use dc_types, only: dp
11690 character(*), intent(in):: file
11691 character(*), intent(in):: varname
11692 character(*), intent(in), optional:: range
11693 logical, intent(in), optional:: quiet
11694 logical, intent(in), optional:: flag_mpi_split
11695 real(DP), intent(out), optional:: returned_time
11696 logical, intent(out), optional:: flag_time_exist
11697 logical, intent(out), optional:: err
11698 real(DP), pointer :: array(:,:,:,:,:,:)
11699 end subroutine historygetdouble6pointer
11700 end interface
11701 interface
11702 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11703 character(*), intent(in):: file
11704 character(*), intent(in):: varname
11705 character(*), intent(out):: url
11706 character(*), intent(in), optional:: range
11707 logical, intent(out), optional:: flag_time_exist
11708 character(*), intent(out), optional:: time_name
11709 logical, intent(out), optional:: err
11710 end subroutine lookup_growable_url
11711 end interface
11712 interface
11713 function file_rename_mpi( file ) result(result)
11714 use dc_types, only: string
11715 character(*), intent(in):: file
11716 character(STRING):: result
11717 end function file_rename_mpi
11718 end interface
11719 continue
11720 file_work = file
11721 if ( present_and_true( flag_mpi_split ) ) &
11722 & file_work = file_rename_mpi( file_work )
11723 call lookup_growable_url(file = file_work, varname = varname, &
11724 & url = url, &
11725 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11726 call url_chop_iorange( &
11727 & fullname = url, iorange = iorange, remainder = remainder )
11728 call split( str = iorange, carray = carray, sep = gt_equal )
11729 timevar_name = carray(1)
11730 deallocate( carray )
11731 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11732 call historygetdouble6pointer( file = file, &
11733 & varname = varname, array = array, &
11734 & range = time_range, quiet = quiet, &
11735 & flag_mpi_split = flag_mpi_split, &
11736 & returned_time = returned_time, &
11737 & flag_time_exist = flag_time_exist, &
11738 & err = err )
subroutine historygetdouble6pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble6pointertimei()

subroutine historygetdouble6pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15453 of file historyget.f90.

15456 use dc_string, only: tochar, split
15457 use dc_types, only: string, dp
15458 use dc_trace, only: dbgmessage
15459 use dc_url, only: url_chop_iorange, gt_equal
15460 use dc_present, only: present_and_true
15461 ! MPI ライブラリ
15462 ! MPI library
15463 !
15464 use mpi
15465 implicit none
15466 character(*), intent(in):: file, varname
15467 integer, intent(in):: time
15468 logical, intent(in), optional:: quiet
15469 real(DP), pointer :: array(:,:,:,:,:,:)
15470 logical, intent(in), optional:: flag_mpi_split
15471 real(DP), intent(out), optional:: returned_time
15472 logical, intent(out), optional:: flag_time_exist
15473 logical, intent(out), optional:: err
15474 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15475 character(STRING), pointer:: carray (:)
15476 character(STRING):: tname
15477 interface
15478 subroutine historygetdouble6pointer(&
15479 & file, varname, array, range, quiet, &
15480 & flag_mpi_split, returned_time, flag_time_exist, err)
15481 use dc_types, only: dp
15482 character(*), intent(in):: file
15483 character(*), intent(in):: varname
15484 character(*), intent(in), optional:: range
15485 logical, intent(in), optional:: quiet
15486 logical, intent(in), optional:: flag_mpi_split
15487 real(DP), intent(out), optional:: returned_time
15488 logical, intent(out), optional:: flag_time_exist
15489 logical, intent(out), optional:: err
15490 real(DP), pointer :: array(:,:,:,:,:,:)
15491 end subroutine historygetdouble6pointer
15492 end interface
15493 interface
15494 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15495 character(*), intent(in):: file
15496 character(*), intent(in):: varname
15497 character(*), intent(out):: url
15498 character(*), intent(in), optional:: range
15499 logical, intent(out), optional:: flag_time_exist
15500 character(*), intent(out), optional:: time_name
15501 logical, intent(out), optional:: err
15502 end subroutine lookup_growable_url
15503 end interface
15504 interface
15505 function file_rename_mpi( file ) result(result)
15506 use dc_types, only: string
15507 character(*), intent(in):: file
15508 character(STRING):: result
15509 end function file_rename_mpi
15510 end interface
15511 continue
15512 file_work = file
15513 if ( present_and_true( flag_mpi_split ) ) &
15514 & file_work = file_rename_mpi( file_work )
15515 call lookup_growable_url(file = file_work, varname = varname, &
15516 & url = url, &
15517 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15518 call url_chop_iorange( &
15519 & fullname = url, iorange = iorange, remainder = remainder )
15520 call split( str = iorange, carray = carray, sep = gt_equal )
15521 timevar_name = carray(1)
15522 deallocate( carray )
15523 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15524 call historygetdouble6pointer( file = file, &
15525 & varname = varname, array = array, &
15526 & range = time_range, quiet = quiet, &
15527 & flag_mpi_split = flag_mpi_split, &
15528 & returned_time = returned_time, &
15529 & flag_time_exist = flag_time_exist, &
15530 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble6pointertimer()

subroutine historygetdouble6pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7869 of file historyget.f90.

7872 use dc_string, only: tochar, split
7873 use dc_types, only: string, dp, sp
7874 use dc_trace, only: dbgmessage
7875 use dc_url, only: url_chop_iorange, gt_equal
7876 use dc_present, only: present_and_true
7877 ! MPI ライブラリ
7878 ! MPI library
7879 !
7880 use mpi
7881 implicit none
7882 character(*), intent(in):: file, varname
7883 real(SP), intent(in):: time
7884 logical, intent(in), optional:: quiet
7885 real(DP), pointer :: array(:,:,:,:,:,:)
7886 logical, intent(in), optional:: flag_mpi_split
7887 real(DP), intent(out), optional:: returned_time
7888 logical, intent(out), optional:: flag_time_exist
7889 logical, intent(out), optional:: err
7890 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7891 character(STRING), pointer:: carray (:)
7892 character(STRING):: tname
7893 interface
7894 subroutine historygetdouble6pointer(&
7895 & file, varname, array, range, quiet, &
7896 & flag_mpi_split, returned_time, flag_time_exist, err)
7897 use dc_types, only: dp
7898 character(*), intent(in):: file
7899 character(*), intent(in):: varname
7900 character(*), intent(in), optional:: range
7901 logical, intent(in), optional:: quiet
7902 logical, intent(in), optional:: flag_mpi_split
7903 real(DP), intent(out), optional:: returned_time
7904 logical, intent(out), optional:: flag_time_exist
7905 logical, intent(out), optional:: err
7906 real(DP), pointer :: array(:,:,:,:,:,:)
7907 end subroutine historygetdouble6pointer
7908 end interface
7909 interface
7910 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7911 character(*), intent(in):: file
7912 character(*), intent(in):: varname
7913 character(*), intent(out):: url
7914 character(*), intent(in), optional:: range
7915 logical, intent(out), optional:: flag_time_exist
7916 character(*), intent(out), optional:: time_name
7917 logical, intent(out), optional:: err
7918 end subroutine lookup_growable_url
7919 end interface
7920 interface
7921 function file_rename_mpi( file ) result(result)
7922 use dc_types, only: string
7923 character(*), intent(in):: file
7924 character(STRING):: result
7925 end function file_rename_mpi
7926 end interface
7927 continue
7928 file_work = file
7929 if ( present_and_true( flag_mpi_split ) ) &
7930 & file_work = file_rename_mpi( file_work )
7931 call lookup_growable_url(file = file_work, varname = varname, &
7932 & url = url, &
7933 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7934 call url_chop_iorange( &
7935 & fullname = url, iorange = iorange, remainder = remainder )
7936 call split( str = iorange, carray = carray, sep = gt_equal )
7937 timevar_name = carray(1)
7938 deallocate( carray )
7939 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7940 call historygetdouble6pointer( file = file, &
7941 & varname = varname, array = array, &
7942 & range = time_range, quiet = quiet, &
7943 & flag_mpi_split = flag_mpi_split, &
7944 & returned_time = returned_time, &
7945 & flag_time_exist = flag_time_exist, &
7946 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble6timed()

subroutine historygetdouble6timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11029 of file historyget.f90.

11032 use dc_string, only: tochar, split
11033 use dc_types, only: string, dp
11034 use dc_trace, only: dbgmessage
11035 use dc_url, only: url_chop_iorange, gt_equal
11036 use dc_present, only: present_and_true
11037 ! MPI ライブラリ
11038 ! MPI library
11039 !
11040 use mpi
11041 implicit none
11042 character(*), intent(in):: file, varname
11043 real(DP), intent(in):: time
11044 logical, intent(in), optional:: quiet
11045 real(DP), intent(out) :: array(:,:,:,:,:,:)
11046 logical, intent(in), optional:: flag_mpi_split
11047 real(DP), intent(out), optional:: returned_time
11048 logical, intent(out), optional:: flag_time_exist
11049 logical, intent(out), optional:: err
11050 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11051 character(STRING), pointer:: carray (:)
11052 character(STRING):: tname
11053 interface
11054 subroutine historygetdouble6(&
11055 & file, varname, array, range, quiet, &
11056 & flag_mpi_split, returned_time, flag_time_exist, err)
11057 use dc_types, only: dp
11058 character(*), intent(in):: file
11059 character(*), intent(in):: varname
11060 character(*), intent(in), optional:: range
11061 logical, intent(in), optional:: quiet
11062 logical, intent(in), optional:: flag_mpi_split
11063 real(DP), intent(out), optional:: returned_time
11064 logical, intent(out), optional:: flag_time_exist
11065 logical, intent(out), optional:: err
11066 real(DP), intent(out) :: array(:,:,:,:,:,:)
11067 end subroutine historygetdouble6
11068 end interface
11069 interface
11070 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11071 character(*), intent(in):: file
11072 character(*), intent(in):: varname
11073 character(*), intent(out):: url
11074 character(*), intent(in), optional:: range
11075 logical, intent(out), optional:: flag_time_exist
11076 character(*), intent(out), optional:: time_name
11077 logical, intent(out), optional:: err
11078 end subroutine lookup_growable_url
11079 end interface
11080 interface
11081 function file_rename_mpi( file ) result(result)
11082 use dc_types, only: string
11083 character(*), intent(in):: file
11084 character(STRING):: result
11085 end function file_rename_mpi
11086 end interface
11087 continue
11088 file_work = file
11089 if ( present_and_true( flag_mpi_split ) ) &
11090 & file_work = file_rename_mpi( file_work )
11091 call lookup_growable_url(file = file_work, varname = varname, &
11092 & url = url, &
11093 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11094 call url_chop_iorange( &
11095 & fullname = url, iorange = iorange, remainder = remainder )
11096 call split( str = iorange, carray = carray, sep = gt_equal )
11097 timevar_name = carray(1)
11098 deallocate( carray )
11099 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11100 call historygetdouble6( file = file, &
11101 & varname = varname, array = array, &
11102 & range = time_range, quiet = quiet, &
11103 & flag_mpi_split = flag_mpi_split, &
11104 & returned_time = returned_time, &
11105 & flag_time_exist = flag_time_exist, &
11106 & err = err )
subroutine historygetdouble6(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble6timei()

subroutine historygetdouble6timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14821 of file historyget.f90.

14824 use dc_string, only: tochar, split
14825 use dc_types, only: string, dp
14826 use dc_trace, only: dbgmessage
14827 use dc_url, only: url_chop_iorange, gt_equal
14828 use dc_present, only: present_and_true
14829 ! MPI ライブラリ
14830 ! MPI library
14831 !
14832 use mpi
14833 implicit none
14834 character(*), intent(in):: file, varname
14835 integer, intent(in):: time
14836 logical, intent(in), optional:: quiet
14837 real(DP), intent(out) :: array(:,:,:,:,:,:)
14838 logical, intent(in), optional:: flag_mpi_split
14839 real(DP), intent(out), optional:: returned_time
14840 logical, intent(out), optional:: flag_time_exist
14841 logical, intent(out), optional:: err
14842 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14843 character(STRING), pointer:: carray (:)
14844 character(STRING):: tname
14845 interface
14846 subroutine historygetdouble6(&
14847 & file, varname, array, range, quiet, &
14848 & flag_mpi_split, returned_time, flag_time_exist, err)
14849 use dc_types, only: dp
14850 character(*), intent(in):: file
14851 character(*), intent(in):: varname
14852 character(*), intent(in), optional:: range
14853 logical, intent(in), optional:: quiet
14854 logical, intent(in), optional:: flag_mpi_split
14855 real(DP), intent(out), optional:: returned_time
14856 logical, intent(out), optional:: flag_time_exist
14857 logical, intent(out), optional:: err
14858 real(DP), intent(out) :: array(:,:,:,:,:,:)
14859 end subroutine historygetdouble6
14860 end interface
14861 interface
14862 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14863 character(*), intent(in):: file
14864 character(*), intent(in):: varname
14865 character(*), intent(out):: url
14866 character(*), intent(in), optional:: range
14867 logical, intent(out), optional:: flag_time_exist
14868 character(*), intent(out), optional:: time_name
14869 logical, intent(out), optional:: err
14870 end subroutine lookup_growable_url
14871 end interface
14872 interface
14873 function file_rename_mpi( file ) result(result)
14874 use dc_types, only: string
14875 character(*), intent(in):: file
14876 character(STRING):: result
14877 end function file_rename_mpi
14878 end interface
14879 continue
14880 file_work = file
14881 if ( present_and_true( flag_mpi_split ) ) &
14882 & file_work = file_rename_mpi( file_work )
14883 call lookup_growable_url(file = file_work, varname = varname, &
14884 & url = url, &
14885 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14886 call url_chop_iorange( &
14887 & fullname = url, iorange = iorange, remainder = remainder )
14888 call split( str = iorange, carray = carray, sep = gt_equal )
14889 timevar_name = carray(1)
14890 deallocate( carray )
14891 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14892 call historygetdouble6( file = file, &
14893 & varname = varname, array = array, &
14894 & range = time_range, quiet = quiet, &
14895 & flag_mpi_split = flag_mpi_split, &
14896 & returned_time = returned_time, &
14897 & flag_time_exist = flag_time_exist, &
14898 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble6timer()

subroutine historygetdouble6timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7237 of file historyget.f90.

7240 use dc_string, only: tochar, split
7241 use dc_types, only: string, dp, sp
7242 use dc_trace, only: dbgmessage
7243 use dc_url, only: url_chop_iorange, gt_equal
7244 use dc_present, only: present_and_true
7245 ! MPI ライブラリ
7246 ! MPI library
7247 !
7248 use mpi
7249 implicit none
7250 character(*), intent(in):: file, varname
7251 real(SP), intent(in):: time
7252 logical, intent(in), optional:: quiet
7253 real(DP), intent(out) :: array(:,:,:,:,:,:)
7254 logical, intent(in), optional:: flag_mpi_split
7255 real(DP), intent(out), optional:: returned_time
7256 logical, intent(out), optional:: flag_time_exist
7257 logical, intent(out), optional:: err
7258 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7259 character(STRING), pointer:: carray (:)
7260 character(STRING):: tname
7261 interface
7262 subroutine historygetdouble6(&
7263 & file, varname, array, range, quiet, &
7264 & flag_mpi_split, returned_time, flag_time_exist, err)
7265 use dc_types, only: dp
7266 character(*), intent(in):: file
7267 character(*), intent(in):: varname
7268 character(*), intent(in), optional:: range
7269 logical, intent(in), optional:: quiet
7270 logical, intent(in), optional:: flag_mpi_split
7271 real(DP), intent(out), optional:: returned_time
7272 logical, intent(out), optional:: flag_time_exist
7273 logical, intent(out), optional:: err
7274 real(DP), intent(out) :: array(:,:,:,:,:,:)
7275 end subroutine historygetdouble6
7276 end interface
7277 interface
7278 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7279 character(*), intent(in):: file
7280 character(*), intent(in):: varname
7281 character(*), intent(out):: url
7282 character(*), intent(in), optional:: range
7283 logical, intent(out), optional:: flag_time_exist
7284 character(*), intent(out), optional:: time_name
7285 logical, intent(out), optional:: err
7286 end subroutine lookup_growable_url
7287 end interface
7288 interface
7289 function file_rename_mpi( file ) result(result)
7290 use dc_types, only: string
7291 character(*), intent(in):: file
7292 character(STRING):: result
7293 end function file_rename_mpi
7294 end interface
7295 continue
7296 file_work = file
7297 if ( present_and_true( flag_mpi_split ) ) &
7298 & file_work = file_rename_mpi( file_work )
7299 call lookup_growable_url(file = file_work, varname = varname, &
7300 & url = url, &
7301 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7302 call url_chop_iorange( &
7303 & fullname = url, iorange = iorange, remainder = remainder )
7304 call split( str = iorange, carray = carray, sep = gt_equal )
7305 timevar_name = carray(1)
7306 deallocate( carray )
7307 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7308 call historygetdouble6( file = file, &
7309 & varname = varname, array = array, &
7310 & range = time_range, quiet = quiet, &
7311 & flag_mpi_split = flag_mpi_split, &
7312 & returned_time = returned_time, &
7313 & flag_time_exist = flag_time_exist, &
7314 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble7()

subroutine historygetdouble7 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 1432 of file historyget.f90.

1434 use gtdata_types, only: gt_variable
1435 use gtdata_generic, only: open, inquire, close, get
1436 use dc_string, only: tochar
1438 use dc_regex, only: match
1439 use dc_types, only: string, dp
1440 use dc_message, only: messagenotify
1443 ! MPI ライブラリ
1444 ! MPI library
1445 use mpi
1446 implicit none
1447 character(*), intent(in):: file
1448 character(*), intent(in):: varname
1449 character(*), intent(in), optional:: range
1450 logical, intent(in), optional:: quiet
1451 logical, intent(in), optional:: flag_mpi_split
1452 real(DP), intent(out), optional:: returned_time ! データの時刻
1453 logical, intent(out), optional:: flag_time_exist
1454 logical, intent(out), optional:: err
1455 real(DP), intent(out) :: array(:,:,:,:,:,:,:)
1456 real(DP), allocatable :: array_tmp(:)
1457 integer:: array_allsize
1458 integer:: array_shape(7), data_shape(7), array_shape_check(7)
1459 integer:: allcount
1460 integer:: i, sd
1461 logical:: inq_err
1462 type(GT_VARIABLE):: var
1463 character(STRING):: file_work, url, actual_url
1464 integer:: rank, alldims, array_rank
1465 integer:: domain
1466 character(STRING):: tname
1467 integer:: stat
1468 character(STRING):: cause_c
1469 character(*), parameter :: subname = "HistoryGetDouble7"
1470 interface
1471 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1472 character(*), intent(in):: file
1473 character(*), intent(in):: varname
1474 character(*), intent(out):: url
1475 character(*), intent(in), optional:: range
1476 logical, intent(out), optional:: flag_time_exist
1477 character(*), intent(out), optional:: time_name
1478 logical, intent(out), optional:: err
1479 end subroutine lookup_growable_url
1480 end interface
1481 interface
1482 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1483 use dc_types, only: dp
1484 character(*), intent(in) :: url ! 変数 URL
1485 character(*), intent(out), optional :: actual_url
1486 ! 正確な入出力範囲指定
1487 real(DP), intent(out), optional:: returned_time ! データの時刻
1488 character(*), intent(in), optional:: time_name ! 時刻次元の名称
1489 logical, intent(out), optional :: err ! エラーのフラグ
1490 end subroutine actual_iorange_dump
1491 end interface
1492 interface
1493 function file_rename_mpi( file ) result(result)
1494 use dc_types, only: string
1495 character(*), intent(in):: file
1496 character(STRING):: result
1497 end function file_rename_mpi
1498 end interface
1499 continue
1500 cause_c = ''
1501 stat = dc_noerr
1502 file_work = file
1503 array_shape = shape( array )
1504 array_allsize = size( array )
1505 ! ファイル名の変更 (MPI 用)
1506 ! Change filename (for MPI)
1507 !
1508 if ( present_and_true( flag_mpi_split ) ) &
1509 & file_work = file_rename_mpi( file_work )
1510 ! 最新時刻の URL 取得
1511 ! Get URL of latest time
1512 !
1513 call lookup_growable_url(file_work, varname, url, range, &
1514 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1515 if ( present_and_true(err) ) then
1516 stat = gt_enoturl
1517 cause_c = url
1518 goto 999
1519 end if
1520 ! ファイルオープン
1521 ! File open
1522 call open( var, url, err = err )
1523 if ( present_and_true(err) ) then
1524 stat = gt_enoturl
1525 cause_c = url
1526 goto 999
1527 end if
1528 !-------------------------------------------------------------------
1529 ! 配列形状のチェック
1530 ! Check array shape
1531 !-------------------------------------------------------------------
1532 ! 入力ファイル中のデータの次元数
1533 ! Get size of dimesions in data of an input file
1534 !
1535 call inquire( var = var, & ! (in)
1536 & rank = rank, alldims = alldims ) ! (out)
1537 ! 引数の次元数のチェック (縮退されている場合には減らす)
1538 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1539 array_rank = 7
1540 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1541 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
1542 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
1543 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
1544 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
1545 if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
1546 if ( size( array, 7 ) == 1 ) array_rank = array_rank - 1
1547 ! 次元数の比較
1548 ! Compare sizes of dimensions
1549 !
1550 if ( .not. 7 == rank .and. .not. array_rank == rank ) then
1551 if ( .not. present_and_true(quiet) ) then
1552 call messagenotify('W', subname, &
1553 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1554 & i = (/rank, 7/), c1 = trim(url) )
1555 end if
1556 stat = gt_erankmismatch
1557 cause_c = 'array'
1558 goto 999
1559 end if
1560 ! 入力ファイル中のデータの配列形状取得
1561 ! Get shape of data in an input file
1562 call inquire( var = var , dimord = 1, & ! (in)
1563 & allcount = allcount, err = inq_err ) ! (out)
1564 if ( .not. inq_err ) then
1565 data_shape(1) = allcount
1566 else
1567 data_shape(1) = 1
1568 end if
1569 call inquire( var = var , dimord = 2, & ! (in)
1570 & allcount = allcount, err = inq_err ) ! (out)
1571 if ( .not. inq_err ) then
1572 data_shape(2) = allcount
1573 else
1574 data_shape(2) = 1
1575 end if
1576 call inquire( var = var , dimord = 3, & ! (in)
1577 & allcount = allcount, err = inq_err ) ! (out)
1578 if ( .not. inq_err ) then
1579 data_shape(3) = allcount
1580 else
1581 data_shape(3) = 1
1582 end if
1583 call inquire( var = var , dimord = 4, & ! (in)
1584 & allcount = allcount, err = inq_err ) ! (out)
1585 if ( .not. inq_err ) then
1586 data_shape(4) = allcount
1587 else
1588 data_shape(4) = 1
1589 end if
1590 call inquire( var = var , dimord = 5, & ! (in)
1591 & allcount = allcount, err = inq_err ) ! (out)
1592 if ( .not. inq_err ) then
1593 data_shape(5) = allcount
1594 else
1595 data_shape(5) = 1
1596 end if
1597 call inquire( var = var , dimord = 6, & ! (in)
1598 & allcount = allcount, err = inq_err ) ! (out)
1599 if ( .not. inq_err ) then
1600 data_shape(6) = allcount
1601 else
1602 data_shape(6) = 1
1603 end if
1604 call inquire( var = var , dimord = 7, & ! (in)
1605 & allcount = allcount, err = inq_err ) ! (out)
1606 if ( .not. inq_err ) then
1607 data_shape(7) = allcount
1608 else
1609 data_shape(7) = 1
1610 end if
1611 ! 引数の配列形状整形
1612 ! Arrange shape of an argument
1613 !
1614 array_shape_check = array_shape
1615 sd = 1
1616 do i = 1, 7 - 1
1617 if ( array_shape_check(sd) == 1 ) then
1618 array_shape_check(sd:7) = cshift( array_shape_check(sd:7), 1, 1 )
1619 else
1620 sd = sd + 1
1621 end if
1622 end do
1623 ! 配列形状の比較
1624 ! Compare shapes
1625 !
1626 if ( .not. all( array_shape_check == data_shape ) ) then
1627 if ( .not. present_and_true(quiet) ) then
1628 call messagenotify('W', subname, &
1629 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1630 & c1 = trim( url ), &
1631 & c2 = trim( tochar( data_shape(1:rank) ) ), &
1632 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1633 end if
1634 stat = gt_eargsizemismatch
1635 cause_c = 'array'
1636 goto 999
1637 end if
1638 !-------------------------------------
1639 ! データ取得
1640 ! Get data
1641 call inquire( var = var, & ! (in)
1642 & size = domain ) ! (out)
1643 if ( allocated( array_tmp ) ) deallocate( array_tmp )
1644 allocate( array_tmp(array_allsize) )
1645 call get( var, array_tmp, domain )
1646 array = reshape( array_tmp, array_shape )
1647 deallocate( array_tmp )
1648 call close( var )
1649 !-------------------------------------
1650 ! データファイル名と切り出し範囲の印字
1651 ! Print data filename and clipping range
1652 call actual_iorange_dump(url, & ! (in)
1653 & actual_url, returned_time, & ! (out) optional
1654 & time_name = tname, & ! (in) optional
1655 & err = err) ! (out) optional
1656 if ( .not. present_and_true(quiet) ) then
1657 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1658 end if
1659999 continue
1660 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble7pointer()

subroutine historygetdouble7pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5376 of file historyget.f90.

5378 use gtdata_types, only: gt_variable
5379 use gtdata_generic, only: open, inquire, close, get
5380 use dc_string, only: tochar
5382 use dc_types, only: string, dp
5383 use dc_message, only: messagenotify
5384 use dc_trace, only: dbgmessage
5385 ! MPI ライブラリ
5386 ! MPI library
5387 !
5388 use mpi
5389 implicit none
5390 character(*), intent(in):: file
5391 character(*), intent(in):: varname
5392 character(*), intent(in), optional:: range
5393 logical, intent(in), optional:: quiet
5394 logical, intent(in), optional:: flag_mpi_split
5395 real(DP), intent(out), optional:: returned_time ! データの時刻
5396 logical, intent(out), optional:: flag_time_exist
5397 logical, intent(out), optional:: err
5398 real(DP), pointer :: array(:,:,:,:,:,:,:) ! (out)
5399 type(GT_VARIABLE):: var
5400 character(STRING):: file_work, url, actual_url
5401 character(STRING):: tname
5402 character(*), parameter :: subname = "HistoryGetDouble7Pointer"
5403 interface
5404 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5405 character(*), intent(in):: file
5406 character(*), intent(in):: varname
5407 character(*), intent(out):: url
5408 character(*), intent(in), optional:: range
5409 logical, intent(out), optional:: flag_time_exist
5410 character(*), intent(out), optional:: time_name
5411 logical, intent(out), optional:: err
5412 end subroutine lookup_growable_url
5413 end interface
5414 interface
5415 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5416 use dc_types, only: dp
5417 character(*), intent(in) :: url ! 変数 URL
5418 character(*), intent(out), optional :: actual_url
5419 ! 正確な入出力範囲指定
5420 real(DP), intent(out), optional:: returned_time ! データの時刻
5421 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5422 logical, intent(out), optional :: err ! エラーのフラグ
5423 end subroutine actual_iorange_dump
5424 end interface
5425 interface
5426 function file_rename_mpi( file ) result(result)
5427 use dc_types, only: string
5428 character(*), intent(in):: file
5429 character(STRING):: result
5430 end function file_rename_mpi
5431 end interface
5432 continue
5433 file_work = file
5434 ! ファイル名の変更 (MPI 用)
5435 ! Change filename (for MPI)
5436 !
5437 if ( present_and_true( flag_mpi_split ) ) &
5438 & file_work = file_rename_mpi( file_work )
5439 ! 必要な情報を gtool 変数化
5440 !
5441 call lookup_growable_url(file_work, varname, url, range, &
5442 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5443 call dbgmessage('@ url =%c', c1=trim(url))
5444 ! いよいよデータ取得
5445 !
5446 call open(var, url, err)
5447 call get(var, array, err)
5448 call close(var, err)
5449 call actual_iorange_dump(url, & ! (in)
5450 & actual_url, returned_time, & ! (out) optional
5451 & time_name = tname, & ! (in) optional
5452 & err = err) ! (out) optional
5453 if ( .not. present_and_true(quiet) ) then
5454 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5455 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetdouble7pointertimed()

subroutine historygetdouble7pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11740 of file historyget.f90.

11743 use dc_string, only: tochar, split
11744 use dc_types, only: string, dp
11745 use dc_trace, only: dbgmessage
11746 use dc_url, only: url_chop_iorange, gt_equal
11747 use dc_present, only: present_and_true
11748 ! MPI ライブラリ
11749 ! MPI library
11750 !
11751 use mpi
11752 implicit none
11753 character(*), intent(in):: file, varname
11754 real(DP), intent(in):: time
11755 logical, intent(in), optional:: quiet
11756 real(DP), pointer :: array(:,:,:,:,:,:,:)
11757 logical, intent(in), optional:: flag_mpi_split
11758 real(DP), intent(out), optional:: returned_time
11759 logical, intent(out), optional:: flag_time_exist
11760 logical, intent(out), optional:: err
11761 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11762 character(STRING), pointer:: carray (:)
11763 character(STRING):: tname
11764 interface
11765 subroutine historygetdouble7pointer(&
11766 & file, varname, array, range, quiet, &
11767 & flag_mpi_split, returned_time, flag_time_exist, err)
11768 use dc_types, only: dp
11769 character(*), intent(in):: file
11770 character(*), intent(in):: varname
11771 character(*), intent(in), optional:: range
11772 logical, intent(in), optional:: quiet
11773 logical, intent(in), optional:: flag_mpi_split
11774 real(DP), intent(out), optional:: returned_time
11775 logical, intent(out), optional:: flag_time_exist
11776 logical, intent(out), optional:: err
11777 real(DP), pointer :: array(:,:,:,:,:,:,:)
11778 end subroutine historygetdouble7pointer
11779 end interface
11780 interface
11781 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11782 character(*), intent(in):: file
11783 character(*), intent(in):: varname
11784 character(*), intent(out):: url
11785 character(*), intent(in), optional:: range
11786 logical, intent(out), optional:: flag_time_exist
11787 character(*), intent(out), optional:: time_name
11788 logical, intent(out), optional:: err
11789 end subroutine lookup_growable_url
11790 end interface
11791 interface
11792 function file_rename_mpi( file ) result(result)
11793 use dc_types, only: string
11794 character(*), intent(in):: file
11795 character(STRING):: result
11796 end function file_rename_mpi
11797 end interface
11798 continue
11799 file_work = file
11800 if ( present_and_true( flag_mpi_split ) ) &
11801 & file_work = file_rename_mpi( file_work )
11802 call lookup_growable_url(file = file_work, varname = varname, &
11803 & url = url, &
11804 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11805 call url_chop_iorange( &
11806 & fullname = url, iorange = iorange, remainder = remainder )
11807 call split( str = iorange, carray = carray, sep = gt_equal )
11808 timevar_name = carray(1)
11809 deallocate( carray )
11810 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11811 call historygetdouble7pointer( file = file, &
11812 & varname = varname, array = array, &
11813 & range = time_range, quiet = quiet, &
11814 & flag_mpi_split = flag_mpi_split, &
11815 & returned_time = returned_time, &
11816 & flag_time_exist = flag_time_exist, &
11817 & err = err )
subroutine historygetdouble7pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble7pointertimei()

subroutine historygetdouble7pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15532 of file historyget.f90.

15535 use dc_string, only: tochar, split
15536 use dc_types, only: string, dp
15537 use dc_trace, only: dbgmessage
15538 use dc_url, only: url_chop_iorange, gt_equal
15539 use dc_present, only: present_and_true
15540 ! MPI ライブラリ
15541 ! MPI library
15542 !
15543 use mpi
15544 implicit none
15545 character(*), intent(in):: file, varname
15546 integer, intent(in):: time
15547 logical, intent(in), optional:: quiet
15548 real(DP), pointer :: array(:,:,:,:,:,:,:)
15549 logical, intent(in), optional:: flag_mpi_split
15550 real(DP), intent(out), optional:: returned_time
15551 logical, intent(out), optional:: flag_time_exist
15552 logical, intent(out), optional:: err
15553 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15554 character(STRING), pointer:: carray (:)
15555 character(STRING):: tname
15556 interface
15557 subroutine historygetdouble7pointer(&
15558 & file, varname, array, range, quiet, &
15559 & flag_mpi_split, returned_time, flag_time_exist, err)
15560 use dc_types, only: dp
15561 character(*), intent(in):: file
15562 character(*), intent(in):: varname
15563 character(*), intent(in), optional:: range
15564 logical, intent(in), optional:: quiet
15565 logical, intent(in), optional:: flag_mpi_split
15566 real(DP), intent(out), optional:: returned_time
15567 logical, intent(out), optional:: flag_time_exist
15568 logical, intent(out), optional:: err
15569 real(DP), pointer :: array(:,:,:,:,:,:,:)
15570 end subroutine historygetdouble7pointer
15571 end interface
15572 interface
15573 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15574 character(*), intent(in):: file
15575 character(*), intent(in):: varname
15576 character(*), intent(out):: url
15577 character(*), intent(in), optional:: range
15578 logical, intent(out), optional:: flag_time_exist
15579 character(*), intent(out), optional:: time_name
15580 logical, intent(out), optional:: err
15581 end subroutine lookup_growable_url
15582 end interface
15583 interface
15584 function file_rename_mpi( file ) result(result)
15585 use dc_types, only: string
15586 character(*), intent(in):: file
15587 character(STRING):: result
15588 end function file_rename_mpi
15589 end interface
15590 continue
15591 file_work = file
15592 if ( present_and_true( flag_mpi_split ) ) &
15593 & file_work = file_rename_mpi( file_work )
15594 call lookup_growable_url(file = file_work, varname = varname, &
15595 & url = url, &
15596 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15597 call url_chop_iorange( &
15598 & fullname = url, iorange = iorange, remainder = remainder )
15599 call split( str = iorange, carray = carray, sep = gt_equal )
15600 timevar_name = carray(1)
15601 deallocate( carray )
15602 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15603 call historygetdouble7pointer( file = file, &
15604 & varname = varname, array = array, &
15605 & range = time_range, quiet = quiet, &
15606 & flag_mpi_split = flag_mpi_split, &
15607 & returned_time = returned_time, &
15608 & flag_time_exist = flag_time_exist, &
15609 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble7pointertimer()

subroutine historygetdouble7pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7948 of file historyget.f90.

7951 use dc_string, only: tochar, split
7952 use dc_types, only: string, dp, sp
7953 use dc_trace, only: dbgmessage
7954 use dc_url, only: url_chop_iorange, gt_equal
7955 use dc_present, only: present_and_true
7956 ! MPI ライブラリ
7957 ! MPI library
7958 !
7959 use mpi
7960 implicit none
7961 character(*), intent(in):: file, varname
7962 real(SP), intent(in):: time
7963 logical, intent(in), optional:: quiet
7964 real(DP), pointer :: array(:,:,:,:,:,:,:)
7965 logical, intent(in), optional:: flag_mpi_split
7966 real(DP), intent(out), optional:: returned_time
7967 logical, intent(out), optional:: flag_time_exist
7968 logical, intent(out), optional:: err
7969 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7970 character(STRING), pointer:: carray (:)
7971 character(STRING):: tname
7972 interface
7973 subroutine historygetdouble7pointer(&
7974 & file, varname, array, range, quiet, &
7975 & flag_mpi_split, returned_time, flag_time_exist, err)
7976 use dc_types, only: dp
7977 character(*), intent(in):: file
7978 character(*), intent(in):: varname
7979 character(*), intent(in), optional:: range
7980 logical, intent(in), optional:: quiet
7981 logical, intent(in), optional:: flag_mpi_split
7982 real(DP), intent(out), optional:: returned_time
7983 logical, intent(out), optional:: flag_time_exist
7984 logical, intent(out), optional:: err
7985 real(DP), pointer :: array(:,:,:,:,:,:,:)
7986 end subroutine historygetdouble7pointer
7987 end interface
7988 interface
7989 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7990 character(*), intent(in):: file
7991 character(*), intent(in):: varname
7992 character(*), intent(out):: url
7993 character(*), intent(in), optional:: range
7994 logical, intent(out), optional:: flag_time_exist
7995 character(*), intent(out), optional:: time_name
7996 logical, intent(out), optional:: err
7997 end subroutine lookup_growable_url
7998 end interface
7999 interface
8000 function file_rename_mpi( file ) result(result)
8001 use dc_types, only: string
8002 character(*), intent(in):: file
8003 character(STRING):: result
8004 end function file_rename_mpi
8005 end interface
8006 continue
8007 file_work = file
8008 if ( present_and_true( flag_mpi_split ) ) &
8009 & file_work = file_rename_mpi( file_work )
8010 call lookup_growable_url(file = file_work, varname = varname, &
8011 & url = url, &
8012 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8013 call url_chop_iorange( &
8014 & fullname = url, iorange = iorange, remainder = remainder )
8015 call split( str = iorange, carray = carray, sep = gt_equal )
8016 timevar_name = carray(1)
8017 deallocate( carray )
8018 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8019 call historygetdouble7pointer( file = file, &
8020 & varname = varname, array = array, &
8021 & range = time_range, quiet = quiet, &
8022 & flag_mpi_split = flag_mpi_split, &
8023 & returned_time = returned_time, &
8024 & flag_time_exist = flag_time_exist, &
8025 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble7timed()

subroutine historygetdouble7timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11108 of file historyget.f90.

11111 use dc_string, only: tochar, split
11112 use dc_types, only: string, dp
11113 use dc_trace, only: dbgmessage
11114 use dc_url, only: url_chop_iorange, gt_equal
11115 use dc_present, only: present_and_true
11116 ! MPI ライブラリ
11117 ! MPI library
11118 !
11119 use mpi
11120 implicit none
11121 character(*), intent(in):: file, varname
11122 real(DP), intent(in):: time
11123 logical, intent(in), optional:: quiet
11124 real(DP), intent(out) :: array(:,:,:,:,:,:,:)
11125 logical, intent(in), optional:: flag_mpi_split
11126 real(DP), intent(out), optional:: returned_time
11127 logical, intent(out), optional:: flag_time_exist
11128 logical, intent(out), optional:: err
11129 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11130 character(STRING), pointer:: carray (:)
11131 character(STRING):: tname
11132 interface
11133 subroutine historygetdouble7(&
11134 & file, varname, array, range, quiet, &
11135 & flag_mpi_split, returned_time, flag_time_exist, err)
11136 use dc_types, only: dp
11137 character(*), intent(in):: file
11138 character(*), intent(in):: varname
11139 character(*), intent(in), optional:: range
11140 logical, intent(in), optional:: quiet
11141 logical, intent(in), optional:: flag_mpi_split
11142 real(DP), intent(out), optional:: returned_time
11143 logical, intent(out), optional:: flag_time_exist
11144 logical, intent(out), optional:: err
11145 real(DP), intent(out) :: array(:,:,:,:,:,:,:)
11146 end subroutine historygetdouble7
11147 end interface
11148 interface
11149 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11150 character(*), intent(in):: file
11151 character(*), intent(in):: varname
11152 character(*), intent(out):: url
11153 character(*), intent(in), optional:: range
11154 logical, intent(out), optional:: flag_time_exist
11155 character(*), intent(out), optional:: time_name
11156 logical, intent(out), optional:: err
11157 end subroutine lookup_growable_url
11158 end interface
11159 interface
11160 function file_rename_mpi( file ) result(result)
11161 use dc_types, only: string
11162 character(*), intent(in):: file
11163 character(STRING):: result
11164 end function file_rename_mpi
11165 end interface
11166 continue
11167 file_work = file
11168 if ( present_and_true( flag_mpi_split ) ) &
11169 & file_work = file_rename_mpi( file_work )
11170 call lookup_growable_url(file = file_work, varname = varname, &
11171 & url = url, &
11172 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11173 call url_chop_iorange( &
11174 & fullname = url, iorange = iorange, remainder = remainder )
11175 call split( str = iorange, carray = carray, sep = gt_equal )
11176 timevar_name = carray(1)
11177 deallocate( carray )
11178 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11179 call historygetdouble7( file = file, &
11180 & varname = varname, array = array, &
11181 & range = time_range, quiet = quiet, &
11182 & flag_mpi_split = flag_mpi_split, &
11183 & returned_time = returned_time, &
11184 & flag_time_exist = flag_time_exist, &
11185 & err = err )
subroutine historygetdouble7(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble7timei()

subroutine historygetdouble7timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14900 of file historyget.f90.

14903 use dc_string, only: tochar, split
14904 use dc_types, only: string, dp
14905 use dc_trace, only: dbgmessage
14906 use dc_url, only: url_chop_iorange, gt_equal
14907 use dc_present, only: present_and_true
14908 ! MPI ライブラリ
14909 ! MPI library
14910 !
14911 use mpi
14912 implicit none
14913 character(*), intent(in):: file, varname
14914 integer, intent(in):: time
14915 logical, intent(in), optional:: quiet
14916 real(DP), intent(out) :: array(:,:,:,:,:,:,:)
14917 logical, intent(in), optional:: flag_mpi_split
14918 real(DP), intent(out), optional:: returned_time
14919 logical, intent(out), optional:: flag_time_exist
14920 logical, intent(out), optional:: err
14921 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14922 character(STRING), pointer:: carray (:)
14923 character(STRING):: tname
14924 interface
14925 subroutine historygetdouble7(&
14926 & file, varname, array, range, quiet, &
14927 & flag_mpi_split, returned_time, flag_time_exist, err)
14928 use dc_types, only: dp
14929 character(*), intent(in):: file
14930 character(*), intent(in):: varname
14931 character(*), intent(in), optional:: range
14932 logical, intent(in), optional:: quiet
14933 logical, intent(in), optional:: flag_mpi_split
14934 real(DP), intent(out), optional:: returned_time
14935 logical, intent(out), optional:: flag_time_exist
14936 logical, intent(out), optional:: err
14937 real(DP), intent(out) :: array(:,:,:,:,:,:,:)
14938 end subroutine historygetdouble7
14939 end interface
14940 interface
14941 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14942 character(*), intent(in):: file
14943 character(*), intent(in):: varname
14944 character(*), intent(out):: url
14945 character(*), intent(in), optional:: range
14946 logical, intent(out), optional:: flag_time_exist
14947 character(*), intent(out), optional:: time_name
14948 logical, intent(out), optional:: err
14949 end subroutine lookup_growable_url
14950 end interface
14951 interface
14952 function file_rename_mpi( file ) result(result)
14953 use dc_types, only: string
14954 character(*), intent(in):: file
14955 character(STRING):: result
14956 end function file_rename_mpi
14957 end interface
14958 continue
14959 file_work = file
14960 if ( present_and_true( flag_mpi_split ) ) &
14961 & file_work = file_rename_mpi( file_work )
14962 call lookup_growable_url(file = file_work, varname = varname, &
14963 & url = url, &
14964 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14965 call url_chop_iorange( &
14966 & fullname = url, iorange = iorange, remainder = remainder )
14967 call split( str = iorange, carray = carray, sep = gt_equal )
14968 timevar_name = carray(1)
14969 deallocate( carray )
14970 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14971 call historygetdouble7( file = file, &
14972 & varname = varname, array = array, &
14973 & range = time_range, quiet = quiet, &
14974 & flag_mpi_split = flag_mpi_split, &
14975 & returned_time = returned_time, &
14976 & flag_time_exist = flag_time_exist, &
14977 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetdouble7timer()

subroutine historygetdouble7timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(dp), dimension(:,:,:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 7316 of file historyget.f90.

7319 use dc_string, only: tochar, split
7320 use dc_types, only: string, dp, sp
7321 use dc_trace, only: dbgmessage
7322 use dc_url, only: url_chop_iorange, gt_equal
7323 use dc_present, only: present_and_true
7324 ! MPI ライブラリ
7325 ! MPI library
7326 !
7327 use mpi
7328 implicit none
7329 character(*), intent(in):: file, varname
7330 real(SP), intent(in):: time
7331 logical, intent(in), optional:: quiet
7332 real(DP), intent(out) :: array(:,:,:,:,:,:,:)
7333 logical, intent(in), optional:: flag_mpi_split
7334 real(DP), intent(out), optional:: returned_time
7335 logical, intent(out), optional:: flag_time_exist
7336 logical, intent(out), optional:: err
7337 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
7338 character(STRING), pointer:: carray (:)
7339 character(STRING):: tname
7340 interface
7341 subroutine historygetdouble7(&
7342 & file, varname, array, range, quiet, &
7343 & flag_mpi_split, returned_time, flag_time_exist, err)
7344 use dc_types, only: dp
7345 character(*), intent(in):: file
7346 character(*), intent(in):: varname
7347 character(*), intent(in), optional:: range
7348 logical, intent(in), optional:: quiet
7349 logical, intent(in), optional:: flag_mpi_split
7350 real(DP), intent(out), optional:: returned_time
7351 logical, intent(out), optional:: flag_time_exist
7352 logical, intent(out), optional:: err
7353 real(DP), intent(out) :: array(:,:,:,:,:,:,:)
7354 end subroutine historygetdouble7
7355 end interface
7356 interface
7357 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
7358 character(*), intent(in):: file
7359 character(*), intent(in):: varname
7360 character(*), intent(out):: url
7361 character(*), intent(in), optional:: range
7362 logical, intent(out), optional:: flag_time_exist
7363 character(*), intent(out), optional:: time_name
7364 logical, intent(out), optional:: err
7365 end subroutine lookup_growable_url
7366 end interface
7367 interface
7368 function file_rename_mpi( file ) result(result)
7369 use dc_types, only: string
7370 character(*), intent(in):: file
7371 character(STRING):: result
7372 end function file_rename_mpi
7373 end interface
7374 continue
7375 file_work = file
7376 if ( present_and_true( flag_mpi_split ) ) &
7377 & file_work = file_rename_mpi( file_work )
7378 call lookup_growable_url(file = file_work, varname = varname, &
7379 & url = url, &
7380 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
7381 call url_chop_iorange( &
7382 & fullname = url, iorange = iorange, remainder = remainder )
7383 call split( str = iorange, carray = carray, sep = gt_equal )
7384 timevar_name = carray(1)
7385 deallocate( carray )
7386 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
7387 call historygetdouble7( file = file, &
7388 & varname = varname, array = array, &
7389 & range = time_range, quiet = quiet, &
7390 & flag_mpi_split = flag_mpi_split, &
7391 & returned_time = returned_time, &
7392 & flag_time_exist = flag_time_exist, &
7393 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetdouble7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint0()

subroutine historygetint0 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 3233 of file historyget.f90.

3235 use gtdata_types, only: gt_variable
3236 use gtdata_generic, only: open, inquire, close, get
3237 use dc_string, only: tochar
3239 use dc_regex, only: match
3240 use dc_types, only: string, dp
3241 use dc_message, only: messagenotify
3243 ! MPI ライブラリ
3244 ! MPI library
3245 use mpi
3246 implicit none
3247 character(*), intent(in):: file
3248 character(*), intent(in):: varname
3249 character(*), intent(in), optional:: range
3250 logical, intent(in), optional:: quiet
3251 logical, intent(in), optional:: flag_mpi_split
3252 real(DP), intent(out), optional:: returned_time ! データの時刻
3253 logical, intent(out), optional:: flag_time_exist
3254 logical, intent(out), optional:: err
3255 integer, intent(out) :: array
3256 integer :: array_tmp(1)
3257 type(GT_VARIABLE):: var
3258 character(STRING):: file_work, url, actual_url
3259 integer:: rank, alldims, array_rank
3260 integer:: domain
3261 character(STRING):: tname
3262 integer:: stat
3263 character(STRING):: cause_c
3264 character(*), parameter :: subname = "HistoryGetInt0"
3265 interface
3266 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3267 character(*), intent(in):: file
3268 character(*), intent(in):: varname
3269 character(*), intent(out):: url
3270 character(*), intent(in), optional:: range
3271 logical, intent(out), optional:: flag_time_exist
3272 character(*), intent(out), optional:: time_name
3273 logical, intent(out), optional:: err
3274 end subroutine lookup_growable_url
3275 end interface
3276 interface
3277 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3278 use dc_types, only: dp
3279 character(*), intent(in) :: url ! 変数 URL
3280 character(*), intent(out), optional :: actual_url
3281 ! 正確な入出力範囲指定
3282 real(DP), intent(out), optional:: returned_time ! データの時刻
3283 character(*), intent(in), optional:: time_name ! 時刻次元の名称
3284 logical, intent(out), optional :: err ! エラーのフラグ
3285 end subroutine actual_iorange_dump
3286 end interface
3287 interface
3288 function file_rename_mpi( file ) result(result)
3289 use dc_types, only: string
3290 character(*), intent(in):: file
3291 character(STRING):: result
3292 end function file_rename_mpi
3293 end interface
3294 continue
3295 cause_c = ''
3296 stat = dc_noerr
3297 file_work = file
3298 ! ファイル名の変更 (MPI 用)
3299 ! Change filename (for MPI)
3300 !
3301 if ( present_and_true( flag_mpi_split ) ) &
3302 & file_work = file_rename_mpi( file_work )
3303 ! 最新時刻の URL 取得
3304 ! Get URL of latest time
3305 !
3306 call lookup_growable_url(file_work, varname, url, range, &
3307 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3308 if ( present_and_true(err) ) then
3309 stat = gt_enoturl
3310 cause_c = url
3311 goto 999
3312 end if
3313 ! ファイルオープン
3314 ! File open
3315 call open( var, url, err = err )
3316 if ( present_and_true(err) ) then
3317 stat = gt_enoturl
3318 cause_c = url
3319 goto 999
3320 end if
3321 !-------------------------------------------------------------------
3322 ! 配列形状のチェック
3323 ! Check array shape
3324 !-------------------------------------------------------------------
3325 ! 入力ファイル中のデータの次元数
3326 ! Get size of dimesions in data of an input file
3327 !
3328 call inquire( var = var, & ! (in)
3329 & rank = rank, alldims = alldims ) ! (out)
3330 ! 引数の次元数のチェック (縮退されている場合には減らす)
3331 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3332 array_rank = 0
3333 ! 次元数の比較
3334 ! Compare sizes of dimensions
3335 !
3336 if ( .not. 0 == rank .and. .not. array_rank == rank ) then
3337 if ( .not. present_and_true(quiet) ) then
3338 call messagenotify('W', subname, &
3339 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3340 & i = (/rank, 0/), c1 = trim(url) )
3341 end if
3342 stat = gt_erankmismatch
3343 cause_c = 'array'
3344 goto 999
3345 end if
3346 ! 入力ファイル中のデータの配列形状取得
3347 ! Get shape of data in an input file
3348 !-------------------------------------
3349 ! データ取得
3350 ! Get data
3351 call inquire( var = var, & ! (in)
3352 & size = domain ) ! (out)
3353 call get( var = var, & ! (inout)
3354 & nvalue = domain, & ! (in)
3355 & value = array_tmp) ! (out)
3356 array = array_tmp(1)
3357 call close( var )
3358 !-------------------------------------
3359 ! データファイル名と切り出し範囲の印字
3360 ! Print data filename and clipping range
3361 call actual_iorange_dump(url, & ! (in)
3362 & actual_url, returned_time, & ! (out) optional
3363 & time_name = tname, & ! (in) optional
3364 & err = err) ! (out) optional
3365 if ( .not. present_and_true(quiet) ) then
3366 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3367 end if
3368999 continue
3369 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint0pointer()

subroutine historygetint0pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6110 of file historyget.f90.

6112 use gtdata_types, only: gt_variable
6113 use gtdata_generic, only: open, inquire, close, get
6114 use dc_string, only: tochar
6116 use dc_types, only: string, dp
6117 use dc_message, only: messagenotify
6118 use dc_trace, only: dbgmessage
6119 ! MPI ライブラリ
6120 ! MPI library
6121 !
6122 use mpi
6123 implicit none
6124 character(*), intent(in):: file
6125 character(*), intent(in):: varname
6126 character(*), intent(in), optional:: range
6127 logical, intent(in), optional:: quiet
6128 logical, intent(in), optional:: flag_mpi_split
6129 real(DP), intent(out), optional:: returned_time ! データの時刻
6130 logical, intent(out), optional:: flag_time_exist
6131 logical, intent(out), optional:: err
6132 integer:: domain
6133 integer, pointer :: array ! (out)
6134 integer, target :: array_tmp(1)
6135 type(GT_VARIABLE):: var
6136 character(STRING):: file_work, url, actual_url
6137 character(STRING):: tname
6138 character(*), parameter :: subname = "HistoryGetInt0Pointer"
6139 interface
6140 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6141 character(*), intent(in):: file
6142 character(*), intent(in):: varname
6143 character(*), intent(out):: url
6144 character(*), intent(in), optional:: range
6145 logical, intent(out), optional:: flag_time_exist
6146 character(*), intent(out), optional:: time_name
6147 logical, intent(out), optional:: err
6148 end subroutine lookup_growable_url
6149 end interface
6150 interface
6151 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6152 use dc_types, only: dp
6153 character(*), intent(in) :: url ! 変数 URL
6154 character(*), intent(out), optional :: actual_url
6155 ! 正確な入出力範囲指定
6156 real(DP), intent(out), optional:: returned_time ! データの時刻
6157 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6158 logical, intent(out), optional :: err ! エラーのフラグ
6159 end subroutine actual_iorange_dump
6160 end interface
6161 interface
6162 function file_rename_mpi( file ) result(result)
6163 use dc_types, only: string
6164 character(*), intent(in):: file
6165 character(STRING):: result
6166 end function file_rename_mpi
6167 end interface
6168 continue
6169 file_work = file
6170 ! ファイル名の変更 (MPI 用)
6171 ! Change filename (for MPI)
6172 !
6173 if ( present_and_true( flag_mpi_split ) ) &
6174 & file_work = file_rename_mpi( file_work )
6175 ! 必要な情報を gtool 変数化
6176 !
6177 call lookup_growable_url(file_work, varname, url, range, &
6178 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6179 allocate(array)
6180 call dbgmessage('@ url =%c', c1=trim(url))
6181 ! いよいよデータ取得
6182 !
6183 call open(var, url, err)
6184 call inquire(var=var, size=domain)
6185 call get(var, array_tmp, domain, err)
6186 array = array_tmp(1)
6187 call close(var, err)
6188 call actual_iorange_dump(url, & ! (in)
6189 & actual_url, returned_time, & ! (out) optional
6190 & time_name = tname, & ! (in) optional
6191 & err = err) ! (out) optional
6192 if ( .not. present_and_true(quiet) ) then
6193 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6194 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint0pointertimed()

subroutine historygetint0pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13715 of file historyget.f90.

13718 use dc_string, only: tochar, split
13719 use dc_types, only: string, dp
13720 use dc_trace, only: dbgmessage
13721 use dc_url, only: url_chop_iorange, gt_equal
13722 use dc_present, only: present_and_true
13723 ! MPI ライブラリ
13724 ! MPI library
13725 !
13726 use mpi
13727 implicit none
13728 character(*), intent(in):: file, varname
13729 real(DP), intent(in):: time
13730 logical, intent(in), optional:: quiet
13731 integer, pointer :: array
13732 logical, intent(in), optional:: flag_mpi_split
13733 real(DP), intent(out), optional:: returned_time
13734 logical, intent(out), optional:: flag_time_exist
13735 logical, intent(out), optional:: err
13736 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13737 character(STRING), pointer:: carray (:)
13738 character(STRING):: tname
13739 interface
13740 subroutine historygetint0pointer(&
13741 & file, varname, array, range, quiet, &
13742 & flag_mpi_split, returned_time, flag_time_exist, err)
13743 use dc_types, only: dp
13744 character(*), intent(in):: file
13745 character(*), intent(in):: varname
13746 character(*), intent(in), optional:: range
13747 logical, intent(in), optional:: quiet
13748 logical, intent(in), optional:: flag_mpi_split
13749 real(DP), intent(out), optional:: returned_time
13750 logical, intent(out), optional:: flag_time_exist
13751 logical, intent(out), optional:: err
13752 integer, pointer :: array
13753 end subroutine historygetint0pointer
13754 end interface
13755 interface
13756 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13757 character(*), intent(in):: file
13758 character(*), intent(in):: varname
13759 character(*), intent(out):: url
13760 character(*), intent(in), optional:: range
13761 logical, intent(out), optional:: flag_time_exist
13762 character(*), intent(out), optional:: time_name
13763 logical, intent(out), optional:: err
13764 end subroutine lookup_growable_url
13765 end interface
13766 interface
13767 function file_rename_mpi( file ) result(result)
13768 use dc_types, only: string
13769 character(*), intent(in):: file
13770 character(STRING):: result
13771 end function file_rename_mpi
13772 end interface
13773 continue
13774 file_work = file
13775 if ( present_and_true( flag_mpi_split ) ) &
13776 & file_work = file_rename_mpi( file_work )
13777 call lookup_growable_url(file = file_work, varname = varname, &
13778 & url = url, &
13779 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13780 call url_chop_iorange( &
13781 & fullname = url, iorange = iorange, remainder = remainder )
13782 call split( str = iorange, carray = carray, sep = gt_equal )
13783 timevar_name = carray(1)
13784 deallocate( carray )
13785 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13786 call historygetint0pointer( file = file, &
13787 & varname = varname, array = array, &
13788 & range = time_range, quiet = quiet, &
13789 & flag_mpi_split = flag_mpi_split, &
13790 & returned_time = returned_time, &
13791 & flag_time_exist = flag_time_exist, &
13792 & err = err )
subroutine historygetint0pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint0pointertimei()

subroutine historygetint0pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17507 of file historyget.f90.

17510 use dc_string, only: tochar, split
17511 use dc_types, only: string, dp
17512 use dc_trace, only: dbgmessage
17513 use dc_url, only: url_chop_iorange, gt_equal
17514 use dc_present, only: present_and_true
17515 ! MPI ライブラリ
17516 ! MPI library
17517 !
17518 use mpi
17519 implicit none
17520 character(*), intent(in):: file, varname
17521 integer, intent(in):: time
17522 logical, intent(in), optional:: quiet
17523 integer, pointer :: array
17524 logical, intent(in), optional:: flag_mpi_split
17525 real(DP), intent(out), optional:: returned_time
17526 logical, intent(out), optional:: flag_time_exist
17527 logical, intent(out), optional:: err
17528 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17529 character(STRING), pointer:: carray (:)
17530 character(STRING):: tname
17531 interface
17532 subroutine historygetint0pointer(&
17533 & file, varname, array, range, quiet, &
17534 & flag_mpi_split, returned_time, flag_time_exist, err)
17535 use dc_types, only: dp
17536 character(*), intent(in):: file
17537 character(*), intent(in):: varname
17538 character(*), intent(in), optional:: range
17539 logical, intent(in), optional:: quiet
17540 logical, intent(in), optional:: flag_mpi_split
17541 real(DP), intent(out), optional:: returned_time
17542 logical, intent(out), optional:: flag_time_exist
17543 logical, intent(out), optional:: err
17544 integer, pointer :: array
17545 end subroutine historygetint0pointer
17546 end interface
17547 interface
17548 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17549 character(*), intent(in):: file
17550 character(*), intent(in):: varname
17551 character(*), intent(out):: url
17552 character(*), intent(in), optional:: range
17553 logical, intent(out), optional:: flag_time_exist
17554 character(*), intent(out), optional:: time_name
17555 logical, intent(out), optional:: err
17556 end subroutine lookup_growable_url
17557 end interface
17558 interface
17559 function file_rename_mpi( file ) result(result)
17560 use dc_types, only: string
17561 character(*), intent(in):: file
17562 character(STRING):: result
17563 end function file_rename_mpi
17564 end interface
17565 continue
17566 file_work = file
17567 if ( present_and_true( flag_mpi_split ) ) &
17568 & file_work = file_rename_mpi( file_work )
17569 call lookup_growable_url(file = file_work, varname = varname, &
17570 & url = url, &
17571 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17572 call url_chop_iorange( &
17573 & fullname = url, iorange = iorange, remainder = remainder )
17574 call split( str = iorange, carray = carray, sep = gt_equal )
17575 timevar_name = carray(1)
17576 deallocate( carray )
17577 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17578 call historygetint0pointer( file = file, &
17579 & varname = varname, array = array, &
17580 & range = time_range, quiet = quiet, &
17581 & flag_mpi_split = flag_mpi_split, &
17582 & returned_time = returned_time, &
17583 & flag_time_exist = flag_time_exist, &
17584 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint0pointertimer()

subroutine historygetint0pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9923 of file historyget.f90.

9926 use dc_string, only: tochar, split
9927 use dc_types, only: string, dp, sp
9928 use dc_trace, only: dbgmessage
9929 use dc_url, only: url_chop_iorange, gt_equal
9930 use dc_present, only: present_and_true
9931 ! MPI ライブラリ
9932 ! MPI library
9933 !
9934 use mpi
9935 implicit none
9936 character(*), intent(in):: file, varname
9937 real(SP), intent(in):: time
9938 logical, intent(in), optional:: quiet
9939 integer, pointer :: array
9940 logical, intent(in), optional:: flag_mpi_split
9941 real(DP), intent(out), optional:: returned_time
9942 logical, intent(out), optional:: flag_time_exist
9943 logical, intent(out), optional:: err
9944 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9945 character(STRING), pointer:: carray (:)
9946 character(STRING):: tname
9947 interface
9948 subroutine historygetint0pointer(&
9949 & file, varname, array, range, quiet, &
9950 & flag_mpi_split, returned_time, flag_time_exist, err)
9951 use dc_types, only: dp
9952 character(*), intent(in):: file
9953 character(*), intent(in):: varname
9954 character(*), intent(in), optional:: range
9955 logical, intent(in), optional:: quiet
9956 logical, intent(in), optional:: flag_mpi_split
9957 real(DP), intent(out), optional:: returned_time
9958 logical, intent(out), optional:: flag_time_exist
9959 logical, intent(out), optional:: err
9960 integer, pointer :: array
9961 end subroutine historygetint0pointer
9962 end interface
9963 interface
9964 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9965 character(*), intent(in):: file
9966 character(*), intent(in):: varname
9967 character(*), intent(out):: url
9968 character(*), intent(in), optional:: range
9969 logical, intent(out), optional:: flag_time_exist
9970 character(*), intent(out), optional:: time_name
9971 logical, intent(out), optional:: err
9972 end subroutine lookup_growable_url
9973 end interface
9974 interface
9975 function file_rename_mpi( file ) result(result)
9976 use dc_types, only: string
9977 character(*), intent(in):: file
9978 character(STRING):: result
9979 end function file_rename_mpi
9980 end interface
9981 continue
9982 file_work = file
9983 if ( present_and_true( flag_mpi_split ) ) &
9984 & file_work = file_rename_mpi( file_work )
9985 call lookup_growable_url(file = file_work, varname = varname, &
9986 & url = url, &
9987 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9988 call url_chop_iorange( &
9989 & fullname = url, iorange = iorange, remainder = remainder )
9990 call split( str = iorange, carray = carray, sep = gt_equal )
9991 timevar_name = carray(1)
9992 deallocate( carray )
9993 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9994 call historygetint0pointer( file = file, &
9995 & varname = varname, array = array, &
9996 & range = time_range, quiet = quiet, &
9997 & flag_mpi_split = flag_mpi_split, &
9998 & returned_time = returned_time, &
9999 & flag_time_exist = flag_time_exist, &
10000 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint0timed()

subroutine historygetint0timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13083 of file historyget.f90.

13086 use dc_string, only: tochar, split
13087 use dc_types, only: string, dp
13088 use dc_trace, only: dbgmessage
13089 use dc_url, only: url_chop_iorange, gt_equal
13090 use dc_present, only: present_and_true
13091 ! MPI ライブラリ
13092 ! MPI library
13093 !
13094 use mpi
13095 implicit none
13096 character(*), intent(in):: file, varname
13097 real(DP), intent(in):: time
13098 logical, intent(in), optional:: quiet
13099 integer, intent(out) :: array
13100 logical, intent(in), optional:: flag_mpi_split
13101 real(DP), intent(out), optional:: returned_time
13102 logical, intent(out), optional:: flag_time_exist
13103 logical, intent(out), optional:: err
13104 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13105 character(STRING), pointer:: carray (:)
13106 character(STRING):: tname
13107 interface
13108 subroutine historygetint0(&
13109 & file, varname, array, range, quiet, &
13110 & flag_mpi_split, returned_time, flag_time_exist, err)
13111 use dc_types, only: dp
13112 character(*), intent(in):: file
13113 character(*), intent(in):: varname
13114 character(*), intent(in), optional:: range
13115 logical, intent(in), optional:: quiet
13116 logical, intent(in), optional:: flag_mpi_split
13117 real(DP), intent(out), optional:: returned_time
13118 logical, intent(out), optional:: flag_time_exist
13119 logical, intent(out), optional:: err
13120 integer, intent(out) :: array
13121 end subroutine historygetint0
13122 end interface
13123 interface
13124 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13125 character(*), intent(in):: file
13126 character(*), intent(in):: varname
13127 character(*), intent(out):: url
13128 character(*), intent(in), optional:: range
13129 logical, intent(out), optional:: flag_time_exist
13130 character(*), intent(out), optional:: time_name
13131 logical, intent(out), optional:: err
13132 end subroutine lookup_growable_url
13133 end interface
13134 interface
13135 function file_rename_mpi( file ) result(result)
13136 use dc_types, only: string
13137 character(*), intent(in):: file
13138 character(STRING):: result
13139 end function file_rename_mpi
13140 end interface
13141 continue
13142 file_work = file
13143 if ( present_and_true( flag_mpi_split ) ) &
13144 & file_work = file_rename_mpi( file_work )
13145 call lookup_growable_url(file = file_work, varname = varname, &
13146 & url = url, &
13147 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13148 call url_chop_iorange( &
13149 & fullname = url, iorange = iorange, remainder = remainder )
13150 call split( str = iorange, carray = carray, sep = gt_equal )
13151 timevar_name = carray(1)
13152 deallocate( carray )
13153 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13154 call historygetint0( file = file, &
13155 & varname = varname, array = array, &
13156 & range = time_range, quiet = quiet, &
13157 & flag_mpi_split = flag_mpi_split, &
13158 & returned_time = returned_time, &
13159 & flag_time_exist = flag_time_exist, &
13160 & err = err )
subroutine historygetint0(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint0timei()

subroutine historygetint0timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16875 of file historyget.f90.

16878 use dc_string, only: tochar, split
16879 use dc_types, only: string, dp
16880 use dc_trace, only: dbgmessage
16881 use dc_url, only: url_chop_iorange, gt_equal
16882 use dc_present, only: present_and_true
16883 ! MPI ライブラリ
16884 ! MPI library
16885 !
16886 use mpi
16887 implicit none
16888 character(*), intent(in):: file, varname
16889 integer, intent(in):: time
16890 logical, intent(in), optional:: quiet
16891 integer, intent(out) :: array
16892 logical, intent(in), optional:: flag_mpi_split
16893 real(DP), intent(out), optional:: returned_time
16894 logical, intent(out), optional:: flag_time_exist
16895 logical, intent(out), optional:: err
16896 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16897 character(STRING), pointer:: carray (:)
16898 character(STRING):: tname
16899 interface
16900 subroutine historygetint0(&
16901 & file, varname, array, range, quiet, &
16902 & flag_mpi_split, returned_time, flag_time_exist, err)
16903 use dc_types, only: dp
16904 character(*), intent(in):: file
16905 character(*), intent(in):: varname
16906 character(*), intent(in), optional:: range
16907 logical, intent(in), optional:: quiet
16908 logical, intent(in), optional:: flag_mpi_split
16909 real(DP), intent(out), optional:: returned_time
16910 logical, intent(out), optional:: flag_time_exist
16911 logical, intent(out), optional:: err
16912 integer, intent(out) :: array
16913 end subroutine historygetint0
16914 end interface
16915 interface
16916 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16917 character(*), intent(in):: file
16918 character(*), intent(in):: varname
16919 character(*), intent(out):: url
16920 character(*), intent(in), optional:: range
16921 logical, intent(out), optional:: flag_time_exist
16922 character(*), intent(out), optional:: time_name
16923 logical, intent(out), optional:: err
16924 end subroutine lookup_growable_url
16925 end interface
16926 interface
16927 function file_rename_mpi( file ) result(result)
16928 use dc_types, only: string
16929 character(*), intent(in):: file
16930 character(STRING):: result
16931 end function file_rename_mpi
16932 end interface
16933 continue
16934 file_work = file
16935 if ( present_and_true( flag_mpi_split ) ) &
16936 & file_work = file_rename_mpi( file_work )
16937 call lookup_growable_url(file = file_work, varname = varname, &
16938 & url = url, &
16939 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16940 call url_chop_iorange( &
16941 & fullname = url, iorange = iorange, remainder = remainder )
16942 call split( str = iorange, carray = carray, sep = gt_equal )
16943 timevar_name = carray(1)
16944 deallocate( carray )
16945 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16946 call historygetint0( file = file, &
16947 & varname = varname, array = array, &
16948 & range = time_range, quiet = quiet, &
16949 & flag_mpi_split = flag_mpi_split, &
16950 & returned_time = returned_time, &
16951 & flag_time_exist = flag_time_exist, &
16952 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint0timer()

subroutine historygetint0timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9291 of file historyget.f90.

9294 use dc_string, only: tochar, split
9295 use dc_types, only: string, dp, sp
9296 use dc_trace, only: dbgmessage
9297 use dc_url, only: url_chop_iorange, gt_equal
9298 use dc_present, only: present_and_true
9299 ! MPI ライブラリ
9300 ! MPI library
9301 !
9302 use mpi
9303 implicit none
9304 character(*), intent(in):: file, varname
9305 real(SP), intent(in):: time
9306 logical, intent(in), optional:: quiet
9307 integer, intent(out) :: array
9308 logical, intent(in), optional:: flag_mpi_split
9309 real(DP), intent(out), optional:: returned_time
9310 logical, intent(out), optional:: flag_time_exist
9311 logical, intent(out), optional:: err
9312 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9313 character(STRING), pointer:: carray (:)
9314 character(STRING):: tname
9315 interface
9316 subroutine historygetint0(&
9317 & file, varname, array, range, quiet, &
9318 & flag_mpi_split, returned_time, flag_time_exist, err)
9319 use dc_types, only: dp
9320 character(*), intent(in):: file
9321 character(*), intent(in):: varname
9322 character(*), intent(in), optional:: range
9323 logical, intent(in), optional:: quiet
9324 logical, intent(in), optional:: flag_mpi_split
9325 real(DP), intent(out), optional:: returned_time
9326 logical, intent(out), optional:: flag_time_exist
9327 logical, intent(out), optional:: err
9328 integer, intent(out) :: array
9329 end subroutine historygetint0
9330 end interface
9331 interface
9332 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9333 character(*), intent(in):: file
9334 character(*), intent(in):: varname
9335 character(*), intent(out):: url
9336 character(*), intent(in), optional:: range
9337 logical, intent(out), optional:: flag_time_exist
9338 character(*), intent(out), optional:: time_name
9339 logical, intent(out), optional:: err
9340 end subroutine lookup_growable_url
9341 end interface
9342 interface
9343 function file_rename_mpi( file ) result(result)
9344 use dc_types, only: string
9345 character(*), intent(in):: file
9346 character(STRING):: result
9347 end function file_rename_mpi
9348 end interface
9349 continue
9350 file_work = file
9351 if ( present_and_true( flag_mpi_split ) ) &
9352 & file_work = file_rename_mpi( file_work )
9353 call lookup_growable_url(file = file_work, varname = varname, &
9354 & url = url, &
9355 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9356 call url_chop_iorange( &
9357 & fullname = url, iorange = iorange, remainder = remainder )
9358 call split( str = iorange, carray = carray, sep = gt_equal )
9359 timevar_name = carray(1)
9360 deallocate( carray )
9361 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9362 call historygetint0( file = file, &
9363 & varname = varname, array = array, &
9364 & range = time_range, quiet = quiet, &
9365 & flag_mpi_split = flag_mpi_split, &
9366 & returned_time = returned_time, &
9367 & flag_time_exist = flag_time_exist, &
9368 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint1()

subroutine historygetint1 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 3371 of file historyget.f90.

3373 use gtdata_types, only: gt_variable
3374 use gtdata_generic, only: open, inquire, close, get
3375 use dc_string, only: tochar
3377 use dc_regex, only: match
3378 use dc_types, only: string, dp
3379 use dc_message, only: messagenotify
3382 ! MPI ライブラリ
3383 ! MPI library
3384 use mpi
3385 implicit none
3386 character(*), intent(in):: file
3387 character(*), intent(in):: varname
3388 character(*), intent(in), optional:: range
3389 logical, intent(in), optional:: quiet
3390 logical, intent(in), optional:: flag_mpi_split
3391 real(DP), intent(out), optional:: returned_time ! データの時刻
3392 logical, intent(out), optional:: flag_time_exist
3393 logical, intent(out), optional:: err
3394 integer, intent(out) :: array(:)
3395 integer, allocatable :: array_tmp(:)
3396 integer:: array_allsize
3397 integer:: array_shape(1), data_shape(1), array_shape_check(1)
3398 integer:: allcount
3399 logical:: inq_err
3400 type(GT_VARIABLE):: var
3401 character(STRING):: file_work, url, actual_url
3402 integer:: rank, alldims, array_rank
3403 integer:: domain
3404 character(STRING):: tname
3405 integer:: stat
3406 character(STRING):: cause_c
3407 character(*), parameter :: subname = "HistoryGetInt1"
3408 interface
3409 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3410 character(*), intent(in):: file
3411 character(*), intent(in):: varname
3412 character(*), intent(out):: url
3413 character(*), intent(in), optional:: range
3414 logical, intent(out), optional:: flag_time_exist
3415 character(*), intent(out), optional:: time_name
3416 logical, intent(out), optional:: err
3417 end subroutine lookup_growable_url
3418 end interface
3419 interface
3420 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3421 use dc_types, only: dp
3422 character(*), intent(in) :: url ! 変数 URL
3423 character(*), intent(out), optional :: actual_url
3424 ! 正確な入出力範囲指定
3425 real(DP), intent(out), optional:: returned_time ! データの時刻
3426 character(*), intent(in), optional:: time_name ! 時刻次元の名称
3427 logical, intent(out), optional :: err ! エラーのフラグ
3428 end subroutine actual_iorange_dump
3429 end interface
3430 interface
3431 function file_rename_mpi( file ) result(result)
3432 use dc_types, only: string
3433 character(*), intent(in):: file
3434 character(STRING):: result
3435 end function file_rename_mpi
3436 end interface
3437 continue
3438 cause_c = ''
3439 stat = dc_noerr
3440 file_work = file
3441 array_shape = shape( array )
3442 array_allsize = size( array )
3443 ! ファイル名の変更 (MPI 用)
3444 ! Change filename (for MPI)
3445 !
3446 if ( present_and_true( flag_mpi_split ) ) &
3447 & file_work = file_rename_mpi( file_work )
3448 ! 最新時刻の URL 取得
3449 ! Get URL of latest time
3450 !
3451 call lookup_growable_url(file_work, varname, url, range, &
3452 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3453 if ( present_and_true(err) ) then
3454 stat = gt_enoturl
3455 cause_c = url
3456 goto 999
3457 end if
3458 ! ファイルオープン
3459 ! File open
3460 call open( var, url, err = err )
3461 if ( present_and_true(err) ) then
3462 stat = gt_enoturl
3463 cause_c = url
3464 goto 999
3465 end if
3466 !-------------------------------------------------------------------
3467 ! 配列形状のチェック
3468 ! Check array shape
3469 !-------------------------------------------------------------------
3470 ! 入力ファイル中のデータの次元数
3471 ! Get size of dimesions in data of an input file
3472 !
3473 call inquire( var = var, & ! (in)
3474 & rank = rank, alldims = alldims ) ! (out)
3475 ! 引数の次元数のチェック (縮退されている場合には減らす)
3476 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3477 array_rank = 1
3478 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3479 ! 次元数の比較
3480 ! Compare sizes of dimensions
3481 !
3482 if ( .not. 1 == rank .and. .not. array_rank == rank ) then
3483 if ( .not. present_and_true(quiet) ) then
3484 call messagenotify('W', subname, &
3485 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3486 & i = (/rank, 1/), c1 = trim(url) )
3487 end if
3488 stat = gt_erankmismatch
3489 cause_c = 'array'
3490 goto 999
3491 end if
3492 ! 入力ファイル中のデータの配列形状取得
3493 ! Get shape of data in an input file
3494 call inquire( var = var , dimord = 1, & ! (in)
3495 & allcount = allcount, err = inq_err ) ! (out)
3496 if ( .not. inq_err ) then
3497 data_shape(1) = allcount
3498 else
3499 data_shape(1) = 1
3500 end if
3501 ! 引数の配列形状整形
3502 ! Arrange shape of an argument
3503 !
3504 array_shape_check = array_shape
3505 ! 配列形状の比較
3506 ! Compare shapes
3507 !
3508 if ( .not. all( array_shape_check == data_shape ) ) then
3509 if ( .not. present_and_true(quiet) ) then
3510 call messagenotify('W', subname, &
3511 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3512 & c1 = trim( url ), &
3513 & c2 = trim( tochar( data_shape(1:rank) ) ), &
3514 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3515 end if
3516 stat = gt_eargsizemismatch
3517 cause_c = 'array'
3518 goto 999
3519 end if
3520 !-------------------------------------
3521 ! データ取得
3522 ! Get data
3523 call inquire( var = var, & ! (in)
3524 & size = domain ) ! (out)
3525 if ( allocated( array_tmp ) ) deallocate( array_tmp )
3526 allocate( array_tmp(array_allsize) )
3527 call get( var, array_tmp, domain )
3528 array = reshape( array_tmp, array_shape )
3529 deallocate( array_tmp )
3530 call close( var )
3531 !-------------------------------------
3532 ! データファイル名と切り出し範囲の印字
3533 ! Print data filename and clipping range
3534 call actual_iorange_dump(url, & ! (in)
3535 & actual_url, returned_time, & ! (out) optional
3536 & time_name = tname, & ! (in) optional
3537 & err = err) ! (out) optional
3538 if ( .not. present_and_true(quiet) ) then
3539 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3540 end if
3541999 continue
3542 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint1pointer()

subroutine historygetint1pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6196 of file historyget.f90.

6198 use gtdata_types, only: gt_variable
6199 use gtdata_generic, only: open, inquire, close, get
6200 use dc_string, only: tochar
6202 use dc_types, only: string, dp
6203 use dc_message, only: messagenotify
6204 use dc_trace, only: dbgmessage
6205 ! MPI ライブラリ
6206 ! MPI library
6207 !
6208 use mpi
6209 implicit none
6210 character(*), intent(in):: file
6211 character(*), intent(in):: varname
6212 character(*), intent(in), optional:: range
6213 logical, intent(in), optional:: quiet
6214 logical, intent(in), optional:: flag_mpi_split
6215 real(DP), intent(out), optional:: returned_time ! データの時刻
6216 logical, intent(out), optional:: flag_time_exist
6217 logical, intent(out), optional:: err
6218 integer, pointer :: array(:) ! (out)
6219 type(GT_VARIABLE):: var
6220 character(STRING):: file_work, url, actual_url
6221 character(STRING):: tname
6222 character(*), parameter :: subname = "HistoryGetInt1Pointer"
6223 interface
6224 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6225 character(*), intent(in):: file
6226 character(*), intent(in):: varname
6227 character(*), intent(out):: url
6228 character(*), intent(in), optional:: range
6229 logical, intent(out), optional:: flag_time_exist
6230 character(*), intent(out), optional:: time_name
6231 logical, intent(out), optional:: err
6232 end subroutine lookup_growable_url
6233 end interface
6234 interface
6235 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6236 use dc_types, only: dp
6237 character(*), intent(in) :: url ! 変数 URL
6238 character(*), intent(out), optional :: actual_url
6239 ! 正確な入出力範囲指定
6240 real(DP), intent(out), optional:: returned_time ! データの時刻
6241 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6242 logical, intent(out), optional :: err ! エラーのフラグ
6243 end subroutine actual_iorange_dump
6244 end interface
6245 interface
6246 function file_rename_mpi( file ) result(result)
6247 use dc_types, only: string
6248 character(*), intent(in):: file
6249 character(STRING):: result
6250 end function file_rename_mpi
6251 end interface
6252 continue
6253 file_work = file
6254 ! ファイル名の変更 (MPI 用)
6255 ! Change filename (for MPI)
6256 !
6257 if ( present_and_true( flag_mpi_split ) ) &
6258 & file_work = file_rename_mpi( file_work )
6259 ! 必要な情報を gtool 変数化
6260 !
6261 call lookup_growable_url(file_work, varname, url, range, &
6262 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6263 call dbgmessage('@ url =%c', c1=trim(url))
6264 ! いよいよデータ取得
6265 !
6266 call open(var, url, err)
6267 call get(var, array, err)
6268 call close(var, err)
6269 call actual_iorange_dump(url, & ! (in)
6270 & actual_url, returned_time, & ! (out) optional
6271 & time_name = tname, & ! (in) optional
6272 & err = err) ! (out) optional
6273 if ( .not. present_and_true(quiet) ) then
6274 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6275 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint1pointertimed()

subroutine historygetint1pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13794 of file historyget.f90.

13797 use dc_string, only: tochar, split
13798 use dc_types, only: string, dp
13799 use dc_trace, only: dbgmessage
13800 use dc_url, only: url_chop_iorange, gt_equal
13801 use dc_present, only: present_and_true
13802 ! MPI ライブラリ
13803 ! MPI library
13804 !
13805 use mpi
13806 implicit none
13807 character(*), intent(in):: file, varname
13808 real(DP), intent(in):: time
13809 logical, intent(in), optional:: quiet
13810 integer, pointer :: array(:)
13811 logical, intent(in), optional:: flag_mpi_split
13812 real(DP), intent(out), optional:: returned_time
13813 logical, intent(out), optional:: flag_time_exist
13814 logical, intent(out), optional:: err
13815 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13816 character(STRING), pointer:: carray (:)
13817 character(STRING):: tname
13818 interface
13819 subroutine historygetint1pointer(&
13820 & file, varname, array, range, quiet, &
13821 & flag_mpi_split, returned_time, flag_time_exist, err)
13822 use dc_types, only: dp
13823 character(*), intent(in):: file
13824 character(*), intent(in):: varname
13825 character(*), intent(in), optional:: range
13826 logical, intent(in), optional:: quiet
13827 logical, intent(in), optional:: flag_mpi_split
13828 real(DP), intent(out), optional:: returned_time
13829 logical, intent(out), optional:: flag_time_exist
13830 logical, intent(out), optional:: err
13831 integer, pointer :: array(:)
13832 end subroutine historygetint1pointer
13833 end interface
13834 interface
13835 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13836 character(*), intent(in):: file
13837 character(*), intent(in):: varname
13838 character(*), intent(out):: url
13839 character(*), intent(in), optional:: range
13840 logical, intent(out), optional:: flag_time_exist
13841 character(*), intent(out), optional:: time_name
13842 logical, intent(out), optional:: err
13843 end subroutine lookup_growable_url
13844 end interface
13845 interface
13846 function file_rename_mpi( file ) result(result)
13847 use dc_types, only: string
13848 character(*), intent(in):: file
13849 character(STRING):: result
13850 end function file_rename_mpi
13851 end interface
13852 continue
13853 file_work = file
13854 if ( present_and_true( flag_mpi_split ) ) &
13855 & file_work = file_rename_mpi( file_work )
13856 call lookup_growable_url(file = file_work, varname = varname, &
13857 & url = url, &
13858 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13859 call url_chop_iorange( &
13860 & fullname = url, iorange = iorange, remainder = remainder )
13861 call split( str = iorange, carray = carray, sep = gt_equal )
13862 timevar_name = carray(1)
13863 deallocate( carray )
13864 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13865 call historygetint1pointer( file = file, &
13866 & varname = varname, array = array, &
13867 & range = time_range, quiet = quiet, &
13868 & flag_mpi_split = flag_mpi_split, &
13869 & returned_time = returned_time, &
13870 & flag_time_exist = flag_time_exist, &
13871 & err = err )
subroutine historygetint1pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint1pointertimei()

subroutine historygetint1pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17586 of file historyget.f90.

17589 use dc_string, only: tochar, split
17590 use dc_types, only: string, dp
17591 use dc_trace, only: dbgmessage
17592 use dc_url, only: url_chop_iorange, gt_equal
17593 use dc_present, only: present_and_true
17594 ! MPI ライブラリ
17595 ! MPI library
17596 !
17597 use mpi
17598 implicit none
17599 character(*), intent(in):: file, varname
17600 integer, intent(in):: time
17601 logical, intent(in), optional:: quiet
17602 integer, pointer :: array(:)
17603 logical, intent(in), optional:: flag_mpi_split
17604 real(DP), intent(out), optional:: returned_time
17605 logical, intent(out), optional:: flag_time_exist
17606 logical, intent(out), optional:: err
17607 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17608 character(STRING), pointer:: carray (:)
17609 character(STRING):: tname
17610 interface
17611 subroutine historygetint1pointer(&
17612 & file, varname, array, range, quiet, &
17613 & flag_mpi_split, returned_time, flag_time_exist, err)
17614 use dc_types, only: dp
17615 character(*), intent(in):: file
17616 character(*), intent(in):: varname
17617 character(*), intent(in), optional:: range
17618 logical, intent(in), optional:: quiet
17619 logical, intent(in), optional:: flag_mpi_split
17620 real(DP), intent(out), optional:: returned_time
17621 logical, intent(out), optional:: flag_time_exist
17622 logical, intent(out), optional:: err
17623 integer, pointer :: array(:)
17624 end subroutine historygetint1pointer
17625 end interface
17626 interface
17627 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17628 character(*), intent(in):: file
17629 character(*), intent(in):: varname
17630 character(*), intent(out):: url
17631 character(*), intent(in), optional:: range
17632 logical, intent(out), optional:: flag_time_exist
17633 character(*), intent(out), optional:: time_name
17634 logical, intent(out), optional:: err
17635 end subroutine lookup_growable_url
17636 end interface
17637 interface
17638 function file_rename_mpi( file ) result(result)
17639 use dc_types, only: string
17640 character(*), intent(in):: file
17641 character(STRING):: result
17642 end function file_rename_mpi
17643 end interface
17644 continue
17645 file_work = file
17646 if ( present_and_true( flag_mpi_split ) ) &
17647 & file_work = file_rename_mpi( file_work )
17648 call lookup_growable_url(file = file_work, varname = varname, &
17649 & url = url, &
17650 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17651 call url_chop_iorange( &
17652 & fullname = url, iorange = iorange, remainder = remainder )
17653 call split( str = iorange, carray = carray, sep = gt_equal )
17654 timevar_name = carray(1)
17655 deallocate( carray )
17656 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17657 call historygetint1pointer( file = file, &
17658 & varname = varname, array = array, &
17659 & range = time_range, quiet = quiet, &
17660 & flag_mpi_split = flag_mpi_split, &
17661 & returned_time = returned_time, &
17662 & flag_time_exist = flag_time_exist, &
17663 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint1pointertimer()

subroutine historygetint1pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10002 of file historyget.f90.

10005 use dc_string, only: tochar, split
10006 use dc_types, only: string, dp, sp
10007 use dc_trace, only: dbgmessage
10008 use dc_url, only: url_chop_iorange, gt_equal
10009 use dc_present, only: present_and_true
10010 ! MPI ライブラリ
10011 ! MPI library
10012 !
10013 use mpi
10014 implicit none
10015 character(*), intent(in):: file, varname
10016 real(SP), intent(in):: time
10017 logical, intent(in), optional:: quiet
10018 integer, pointer :: array(:)
10019 logical, intent(in), optional:: flag_mpi_split
10020 real(DP), intent(out), optional:: returned_time
10021 logical, intent(out), optional:: flag_time_exist
10022 logical, intent(out), optional:: err
10023 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10024 character(STRING), pointer:: carray (:)
10025 character(STRING):: tname
10026 interface
10027 subroutine historygetint1pointer(&
10028 & file, varname, array, range, quiet, &
10029 & flag_mpi_split, returned_time, flag_time_exist, err)
10030 use dc_types, only: dp
10031 character(*), intent(in):: file
10032 character(*), intent(in):: varname
10033 character(*), intent(in), optional:: range
10034 logical, intent(in), optional:: quiet
10035 logical, intent(in), optional:: flag_mpi_split
10036 real(DP), intent(out), optional:: returned_time
10037 logical, intent(out), optional:: flag_time_exist
10038 logical, intent(out), optional:: err
10039 integer, pointer :: array(:)
10040 end subroutine historygetint1pointer
10041 end interface
10042 interface
10043 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10044 character(*), intent(in):: file
10045 character(*), intent(in):: varname
10046 character(*), intent(out):: url
10047 character(*), intent(in), optional:: range
10048 logical, intent(out), optional:: flag_time_exist
10049 character(*), intent(out), optional:: time_name
10050 logical, intent(out), optional:: err
10051 end subroutine lookup_growable_url
10052 end interface
10053 interface
10054 function file_rename_mpi( file ) result(result)
10055 use dc_types, only: string
10056 character(*), intent(in):: file
10057 character(STRING):: result
10058 end function file_rename_mpi
10059 end interface
10060 continue
10061 file_work = file
10062 if ( present_and_true( flag_mpi_split ) ) &
10063 & file_work = file_rename_mpi( file_work )
10064 call lookup_growable_url(file = file_work, varname = varname, &
10065 & url = url, &
10066 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10067 call url_chop_iorange( &
10068 & fullname = url, iorange = iorange, remainder = remainder )
10069 call split( str = iorange, carray = carray, sep = gt_equal )
10070 timevar_name = carray(1)
10071 deallocate( carray )
10072 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10073 call historygetint1pointer( file = file, &
10074 & varname = varname, array = array, &
10075 & range = time_range, quiet = quiet, &
10076 & flag_mpi_split = flag_mpi_split, &
10077 & returned_time = returned_time, &
10078 & flag_time_exist = flag_time_exist, &
10079 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint1timed()

subroutine historygetint1timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13162 of file historyget.f90.

13165 use dc_string, only: tochar, split
13166 use dc_types, only: string, dp
13167 use dc_trace, only: dbgmessage
13168 use dc_url, only: url_chop_iorange, gt_equal
13169 use dc_present, only: present_and_true
13170 ! MPI ライブラリ
13171 ! MPI library
13172 !
13173 use mpi
13174 implicit none
13175 character(*), intent(in):: file, varname
13176 real(DP), intent(in):: time
13177 logical, intent(in), optional:: quiet
13178 integer, intent(out) :: array(:)
13179 logical, intent(in), optional:: flag_mpi_split
13180 real(DP), intent(out), optional:: returned_time
13181 logical, intent(out), optional:: flag_time_exist
13182 logical, intent(out), optional:: err
13183 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13184 character(STRING), pointer:: carray (:)
13185 character(STRING):: tname
13186 interface
13187 subroutine historygetint1(&
13188 & file, varname, array, range, quiet, &
13189 & flag_mpi_split, returned_time, flag_time_exist, err)
13190 use dc_types, only: dp
13191 character(*), intent(in):: file
13192 character(*), intent(in):: varname
13193 character(*), intent(in), optional:: range
13194 logical, intent(in), optional:: quiet
13195 logical, intent(in), optional:: flag_mpi_split
13196 real(DP), intent(out), optional:: returned_time
13197 logical, intent(out), optional:: flag_time_exist
13198 logical, intent(out), optional:: err
13199 integer, intent(out) :: array(:)
13200 end subroutine historygetint1
13201 end interface
13202 interface
13203 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13204 character(*), intent(in):: file
13205 character(*), intent(in):: varname
13206 character(*), intent(out):: url
13207 character(*), intent(in), optional:: range
13208 logical, intent(out), optional:: flag_time_exist
13209 character(*), intent(out), optional:: time_name
13210 logical, intent(out), optional:: err
13211 end subroutine lookup_growable_url
13212 end interface
13213 interface
13214 function file_rename_mpi( file ) result(result)
13215 use dc_types, only: string
13216 character(*), intent(in):: file
13217 character(STRING):: result
13218 end function file_rename_mpi
13219 end interface
13220 continue
13221 file_work = file
13222 if ( present_and_true( flag_mpi_split ) ) &
13223 & file_work = file_rename_mpi( file_work )
13224 call lookup_growable_url(file = file_work, varname = varname, &
13225 & url = url, &
13226 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13227 call url_chop_iorange( &
13228 & fullname = url, iorange = iorange, remainder = remainder )
13229 call split( str = iorange, carray = carray, sep = gt_equal )
13230 timevar_name = carray(1)
13231 deallocate( carray )
13232 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13233 call historygetint1( file = file, &
13234 & varname = varname, array = array, &
13235 & range = time_range, quiet = quiet, &
13236 & flag_mpi_split = flag_mpi_split, &
13237 & returned_time = returned_time, &
13238 & flag_time_exist = flag_time_exist, &
13239 & err = err )
subroutine historygetint1(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint1timei()

subroutine historygetint1timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16954 of file historyget.f90.

16957 use dc_string, only: tochar, split
16958 use dc_types, only: string, dp
16959 use dc_trace, only: dbgmessage
16960 use dc_url, only: url_chop_iorange, gt_equal
16961 use dc_present, only: present_and_true
16962 ! MPI ライブラリ
16963 ! MPI library
16964 !
16965 use mpi
16966 implicit none
16967 character(*), intent(in):: file, varname
16968 integer, intent(in):: time
16969 logical, intent(in), optional:: quiet
16970 integer, intent(out) :: array(:)
16971 logical, intent(in), optional:: flag_mpi_split
16972 real(DP), intent(out), optional:: returned_time
16973 logical, intent(out), optional:: flag_time_exist
16974 logical, intent(out), optional:: err
16975 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16976 character(STRING), pointer:: carray (:)
16977 character(STRING):: tname
16978 interface
16979 subroutine historygetint1(&
16980 & file, varname, array, range, quiet, &
16981 & flag_mpi_split, returned_time, flag_time_exist, err)
16982 use dc_types, only: dp
16983 character(*), intent(in):: file
16984 character(*), intent(in):: varname
16985 character(*), intent(in), optional:: range
16986 logical, intent(in), optional:: quiet
16987 logical, intent(in), optional:: flag_mpi_split
16988 real(DP), intent(out), optional:: returned_time
16989 logical, intent(out), optional:: flag_time_exist
16990 logical, intent(out), optional:: err
16991 integer, intent(out) :: array(:)
16992 end subroutine historygetint1
16993 end interface
16994 interface
16995 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16996 character(*), intent(in):: file
16997 character(*), intent(in):: varname
16998 character(*), intent(out):: url
16999 character(*), intent(in), optional:: range
17000 logical, intent(out), optional:: flag_time_exist
17001 character(*), intent(out), optional:: time_name
17002 logical, intent(out), optional:: err
17003 end subroutine lookup_growable_url
17004 end interface
17005 interface
17006 function file_rename_mpi( file ) result(result)
17007 use dc_types, only: string
17008 character(*), intent(in):: file
17009 character(STRING):: result
17010 end function file_rename_mpi
17011 end interface
17012 continue
17013 file_work = file
17014 if ( present_and_true( flag_mpi_split ) ) &
17015 & file_work = file_rename_mpi( file_work )
17016 call lookup_growable_url(file = file_work, varname = varname, &
17017 & url = url, &
17018 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17019 call url_chop_iorange( &
17020 & fullname = url, iorange = iorange, remainder = remainder )
17021 call split( str = iorange, carray = carray, sep = gt_equal )
17022 timevar_name = carray(1)
17023 deallocate( carray )
17024 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17025 call historygetint1( file = file, &
17026 & varname = varname, array = array, &
17027 & range = time_range, quiet = quiet, &
17028 & flag_mpi_split = flag_mpi_split, &
17029 & returned_time = returned_time, &
17030 & flag_time_exist = flag_time_exist, &
17031 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint1timer()

subroutine historygetint1timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9370 of file historyget.f90.

9373 use dc_string, only: tochar, split
9374 use dc_types, only: string, dp, sp
9375 use dc_trace, only: dbgmessage
9376 use dc_url, only: url_chop_iorange, gt_equal
9377 use dc_present, only: present_and_true
9378 ! MPI ライブラリ
9379 ! MPI library
9380 !
9381 use mpi
9382 implicit none
9383 character(*), intent(in):: file, varname
9384 real(SP), intent(in):: time
9385 logical, intent(in), optional:: quiet
9386 integer, intent(out) :: array(:)
9387 logical, intent(in), optional:: flag_mpi_split
9388 real(DP), intent(out), optional:: returned_time
9389 logical, intent(out), optional:: flag_time_exist
9390 logical, intent(out), optional:: err
9391 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9392 character(STRING), pointer:: carray (:)
9393 character(STRING):: tname
9394 interface
9395 subroutine historygetint1(&
9396 & file, varname, array, range, quiet, &
9397 & flag_mpi_split, returned_time, flag_time_exist, err)
9398 use dc_types, only: dp
9399 character(*), intent(in):: file
9400 character(*), intent(in):: varname
9401 character(*), intent(in), optional:: range
9402 logical, intent(in), optional:: quiet
9403 logical, intent(in), optional:: flag_mpi_split
9404 real(DP), intent(out), optional:: returned_time
9405 logical, intent(out), optional:: flag_time_exist
9406 logical, intent(out), optional:: err
9407 integer, intent(out) :: array(:)
9408 end subroutine historygetint1
9409 end interface
9410 interface
9411 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9412 character(*), intent(in):: file
9413 character(*), intent(in):: varname
9414 character(*), intent(out):: url
9415 character(*), intent(in), optional:: range
9416 logical, intent(out), optional:: flag_time_exist
9417 character(*), intent(out), optional:: time_name
9418 logical, intent(out), optional:: err
9419 end subroutine lookup_growable_url
9420 end interface
9421 interface
9422 function file_rename_mpi( file ) result(result)
9423 use dc_types, only: string
9424 character(*), intent(in):: file
9425 character(STRING):: result
9426 end function file_rename_mpi
9427 end interface
9428 continue
9429 file_work = file
9430 if ( present_and_true( flag_mpi_split ) ) &
9431 & file_work = file_rename_mpi( file_work )
9432 call lookup_growable_url(file = file_work, varname = varname, &
9433 & url = url, &
9434 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9435 call url_chop_iorange( &
9436 & fullname = url, iorange = iorange, remainder = remainder )
9437 call split( str = iorange, carray = carray, sep = gt_equal )
9438 timevar_name = carray(1)
9439 deallocate( carray )
9440 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9441 call historygetint1( file = file, &
9442 & varname = varname, array = array, &
9443 & range = time_range, quiet = quiet, &
9444 & flag_mpi_split = flag_mpi_split, &
9445 & returned_time = returned_time, &
9446 & flag_time_exist = flag_time_exist, &
9447 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint2()

subroutine historygetint2 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 3544 of file historyget.f90.

3546 use gtdata_types, only: gt_variable
3547 use gtdata_generic, only: open, inquire, close, get
3548 use dc_string, only: tochar
3550 use dc_regex, only: match
3551 use dc_types, only: string, dp
3552 use dc_message, only: messagenotify
3555 ! MPI ライブラリ
3556 ! MPI library
3557 use mpi
3558 implicit none
3559 character(*), intent(in):: file
3560 character(*), intent(in):: varname
3561 character(*), intent(in), optional:: range
3562 logical, intent(in), optional:: quiet
3563 logical, intent(in), optional:: flag_mpi_split
3564 real(DP), intent(out), optional:: returned_time ! データの時刻
3565 logical, intent(out), optional:: flag_time_exist
3566 logical, intent(out), optional:: err
3567 integer, intent(out) :: array(:,:)
3568 integer, allocatable :: array_tmp(:)
3569 integer:: array_allsize
3570 integer:: array_shape(2), data_shape(2), array_shape_check(2)
3571 integer:: allcount
3572 integer:: i, sd
3573 logical:: inq_err
3574 type(GT_VARIABLE):: var
3575 character(STRING):: file_work, url, actual_url
3576 integer:: rank, alldims, array_rank
3577 integer:: domain
3578 character(STRING):: tname
3579 integer:: stat
3580 character(STRING):: cause_c
3581 character(*), parameter :: subname = "HistoryGetInt2"
3582 interface
3583 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3584 character(*), intent(in):: file
3585 character(*), intent(in):: varname
3586 character(*), intent(out):: url
3587 character(*), intent(in), optional:: range
3588 logical, intent(out), optional:: flag_time_exist
3589 character(*), intent(out), optional:: time_name
3590 logical, intent(out), optional:: err
3591 end subroutine lookup_growable_url
3592 end interface
3593 interface
3594 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3595 use dc_types, only: dp
3596 character(*), intent(in) :: url ! 変数 URL
3597 character(*), intent(out), optional :: actual_url
3598 ! 正確な入出力範囲指定
3599 real(DP), intent(out), optional:: returned_time ! データの時刻
3600 character(*), intent(in), optional:: time_name ! 時刻次元の名称
3601 logical, intent(out), optional :: err ! エラーのフラグ
3602 end subroutine actual_iorange_dump
3603 end interface
3604 interface
3605 function file_rename_mpi( file ) result(result)
3606 use dc_types, only: string
3607 character(*), intent(in):: file
3608 character(STRING):: result
3609 end function file_rename_mpi
3610 end interface
3611 continue
3612 cause_c = ''
3613 stat = dc_noerr
3614 file_work = file
3615 array_shape = shape( array )
3616 array_allsize = size( array )
3617 ! ファイル名の変更 (MPI 用)
3618 ! Change filename (for MPI)
3619 !
3620 if ( present_and_true( flag_mpi_split ) ) &
3621 & file_work = file_rename_mpi( file_work )
3622 ! 最新時刻の URL 取得
3623 ! Get URL of latest time
3624 !
3625 call lookup_growable_url(file_work, varname, url, range, &
3626 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3627 if ( present_and_true(err) ) then
3628 stat = gt_enoturl
3629 cause_c = url
3630 goto 999
3631 end if
3632 ! ファイルオープン
3633 ! File open
3634 call open( var, url, err = err )
3635 if ( present_and_true(err) ) then
3636 stat = gt_enoturl
3637 cause_c = url
3638 goto 999
3639 end if
3640 !-------------------------------------------------------------------
3641 ! 配列形状のチェック
3642 ! Check array shape
3643 !-------------------------------------------------------------------
3644 ! 入力ファイル中のデータの次元数
3645 ! Get size of dimesions in data of an input file
3646 !
3647 call inquire( var = var, & ! (in)
3648 & rank = rank, alldims = alldims ) ! (out)
3649 ! 引数の次元数のチェック (縮退されている場合には減らす)
3650 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3651 array_rank = 2
3652 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3653 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
3654 ! 次元数の比較
3655 ! Compare sizes of dimensions
3656 !
3657 if ( .not. 2 == rank .and. .not. array_rank == rank ) then
3658 if ( .not. present_and_true(quiet) ) then
3659 call messagenotify('W', subname, &
3660 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3661 & i = (/rank, 2/), c1 = trim(url) )
3662 end if
3663 stat = gt_erankmismatch
3664 cause_c = 'array'
3665 goto 999
3666 end if
3667 ! 入力ファイル中のデータの配列形状取得
3668 ! Get shape of data in an input file
3669 call inquire( var = var , dimord = 1, & ! (in)
3670 & allcount = allcount, err = inq_err ) ! (out)
3671 if ( .not. inq_err ) then
3672 data_shape(1) = allcount
3673 else
3674 data_shape(1) = 1
3675 end if
3676 call inquire( var = var , dimord = 2, & ! (in)
3677 & allcount = allcount, err = inq_err ) ! (out)
3678 if ( .not. inq_err ) then
3679 data_shape(2) = allcount
3680 else
3681 data_shape(2) = 1
3682 end if
3683 ! 引数の配列形状整形
3684 ! Arrange shape of an argument
3685 !
3686 array_shape_check = array_shape
3687 sd = 1
3688 do i = 1, 2 - 1
3689 if ( array_shape_check(sd) == 1 ) then
3690 array_shape_check(sd:2) = cshift( array_shape_check(sd:2), 1, 1 )
3691 else
3692 sd = sd + 1
3693 end if
3694 end do
3695 ! 配列形状の比較
3696 ! Compare shapes
3697 !
3698 if ( .not. all( array_shape_check == data_shape ) ) then
3699 if ( .not. present_and_true(quiet) ) then
3700 call messagenotify('W', subname, &
3701 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3702 & c1 = trim( url ), &
3703 & c2 = trim( tochar( data_shape(1:rank) ) ), &
3704 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3705 end if
3706 stat = gt_eargsizemismatch
3707 cause_c = 'array'
3708 goto 999
3709 end if
3710 !-------------------------------------
3711 ! データ取得
3712 ! Get data
3713 call inquire( var = var, & ! (in)
3714 & size = domain ) ! (out)
3715 if ( allocated( array_tmp ) ) deallocate( array_tmp )
3716 allocate( array_tmp(array_allsize) )
3717 call get( var, array_tmp, domain )
3718 array = reshape( array_tmp, array_shape )
3719 deallocate( array_tmp )
3720 call close( var )
3721 !-------------------------------------
3722 ! データファイル名と切り出し範囲の印字
3723 ! Print data filename and clipping range
3724 call actual_iorange_dump(url, & ! (in)
3725 & actual_url, returned_time, & ! (out) optional
3726 & time_name = tname, & ! (in) optional
3727 & err = err) ! (out) optional
3728 if ( .not. present_and_true(quiet) ) then
3729 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3730 end if
3731999 continue
3732 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint2pointer()

subroutine historygetint2pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6277 of file historyget.f90.

6279 use gtdata_types, only: gt_variable
6280 use gtdata_generic, only: open, inquire, close, get
6281 use dc_string, only: tochar
6283 use dc_types, only: string, dp
6284 use dc_message, only: messagenotify
6285 use dc_trace, only: dbgmessage
6286 ! MPI ライブラリ
6287 ! MPI library
6288 !
6289 use mpi
6290 implicit none
6291 character(*), intent(in):: file
6292 character(*), intent(in):: varname
6293 character(*), intent(in), optional:: range
6294 logical, intent(in), optional:: quiet
6295 logical, intent(in), optional:: flag_mpi_split
6296 real(DP), intent(out), optional:: returned_time ! データの時刻
6297 logical, intent(out), optional:: flag_time_exist
6298 logical, intent(out), optional:: err
6299 integer, pointer :: array(:,:) ! (out)
6300 type(GT_VARIABLE):: var
6301 character(STRING):: file_work, url, actual_url
6302 character(STRING):: tname
6303 character(*), parameter :: subname = "HistoryGetInt2Pointer"
6304 interface
6305 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6306 character(*), intent(in):: file
6307 character(*), intent(in):: varname
6308 character(*), intent(out):: url
6309 character(*), intent(in), optional:: range
6310 logical, intent(out), optional:: flag_time_exist
6311 character(*), intent(out), optional:: time_name
6312 logical, intent(out), optional:: err
6313 end subroutine lookup_growable_url
6314 end interface
6315 interface
6316 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6317 use dc_types, only: dp
6318 character(*), intent(in) :: url ! 変数 URL
6319 character(*), intent(out), optional :: actual_url
6320 ! 正確な入出力範囲指定
6321 real(DP), intent(out), optional:: returned_time ! データの時刻
6322 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6323 logical, intent(out), optional :: err ! エラーのフラグ
6324 end subroutine actual_iorange_dump
6325 end interface
6326 interface
6327 function file_rename_mpi( file ) result(result)
6328 use dc_types, only: string
6329 character(*), intent(in):: file
6330 character(STRING):: result
6331 end function file_rename_mpi
6332 end interface
6333 continue
6334 file_work = file
6335 ! ファイル名の変更 (MPI 用)
6336 ! Change filename (for MPI)
6337 !
6338 if ( present_and_true( flag_mpi_split ) ) &
6339 & file_work = file_rename_mpi( file_work )
6340 ! 必要な情報を gtool 変数化
6341 !
6342 call lookup_growable_url(file_work, varname, url, range, &
6343 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6344 call dbgmessage('@ url =%c', c1=trim(url))
6345 ! いよいよデータ取得
6346 !
6347 call open(var, url, err)
6348 call get(var, array, err)
6349 call close(var, err)
6350 call actual_iorange_dump(url, & ! (in)
6351 & actual_url, returned_time, & ! (out) optional
6352 & time_name = tname, & ! (in) optional
6353 & err = err) ! (out) optional
6354 if ( .not. present_and_true(quiet) ) then
6355 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6356 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint2pointertimed()

subroutine historygetint2pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13873 of file historyget.f90.

13876 use dc_string, only: tochar, split
13877 use dc_types, only: string, dp
13878 use dc_trace, only: dbgmessage
13879 use dc_url, only: url_chop_iorange, gt_equal
13880 use dc_present, only: present_and_true
13881 ! MPI ライブラリ
13882 ! MPI library
13883 !
13884 use mpi
13885 implicit none
13886 character(*), intent(in):: file, varname
13887 real(DP), intent(in):: time
13888 logical, intent(in), optional:: quiet
13889 integer, pointer :: array(:,:)
13890 logical, intent(in), optional:: flag_mpi_split
13891 real(DP), intent(out), optional:: returned_time
13892 logical, intent(out), optional:: flag_time_exist
13893 logical, intent(out), optional:: err
13894 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13895 character(STRING), pointer:: carray (:)
13896 character(STRING):: tname
13897 interface
13898 subroutine historygetint2pointer(&
13899 & file, varname, array, range, quiet, &
13900 & flag_mpi_split, returned_time, flag_time_exist, err)
13901 use dc_types, only: dp
13902 character(*), intent(in):: file
13903 character(*), intent(in):: varname
13904 character(*), intent(in), optional:: range
13905 logical, intent(in), optional:: quiet
13906 logical, intent(in), optional:: flag_mpi_split
13907 real(DP), intent(out), optional:: returned_time
13908 logical, intent(out), optional:: flag_time_exist
13909 logical, intent(out), optional:: err
13910 integer, pointer :: array(:,:)
13911 end subroutine historygetint2pointer
13912 end interface
13913 interface
13914 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13915 character(*), intent(in):: file
13916 character(*), intent(in):: varname
13917 character(*), intent(out):: url
13918 character(*), intent(in), optional:: range
13919 logical, intent(out), optional:: flag_time_exist
13920 character(*), intent(out), optional:: time_name
13921 logical, intent(out), optional:: err
13922 end subroutine lookup_growable_url
13923 end interface
13924 interface
13925 function file_rename_mpi( file ) result(result)
13926 use dc_types, only: string
13927 character(*), intent(in):: file
13928 character(STRING):: result
13929 end function file_rename_mpi
13930 end interface
13931 continue
13932 file_work = file
13933 if ( present_and_true( flag_mpi_split ) ) &
13934 & file_work = file_rename_mpi( file_work )
13935 call lookup_growable_url(file = file_work, varname = varname, &
13936 & url = url, &
13937 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13938 call url_chop_iorange( &
13939 & fullname = url, iorange = iorange, remainder = remainder )
13940 call split( str = iorange, carray = carray, sep = gt_equal )
13941 timevar_name = carray(1)
13942 deallocate( carray )
13943 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13944 call historygetint2pointer( file = file, &
13945 & varname = varname, array = array, &
13946 & range = time_range, quiet = quiet, &
13947 & flag_mpi_split = flag_mpi_split, &
13948 & returned_time = returned_time, &
13949 & flag_time_exist = flag_time_exist, &
13950 & err = err )
subroutine historygetint2pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint2pointertimei()

subroutine historygetint2pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17665 of file historyget.f90.

17668 use dc_string, only: tochar, split
17669 use dc_types, only: string, dp
17670 use dc_trace, only: dbgmessage
17671 use dc_url, only: url_chop_iorange, gt_equal
17672 use dc_present, only: present_and_true
17673 ! MPI ライブラリ
17674 ! MPI library
17675 !
17676 use mpi
17677 implicit none
17678 character(*), intent(in):: file, varname
17679 integer, intent(in):: time
17680 logical, intent(in), optional:: quiet
17681 integer, pointer :: array(:,:)
17682 logical, intent(in), optional:: flag_mpi_split
17683 real(DP), intent(out), optional:: returned_time
17684 logical, intent(out), optional:: flag_time_exist
17685 logical, intent(out), optional:: err
17686 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17687 character(STRING), pointer:: carray (:)
17688 character(STRING):: tname
17689 interface
17690 subroutine historygetint2pointer(&
17691 & file, varname, array, range, quiet, &
17692 & flag_mpi_split, returned_time, flag_time_exist, err)
17693 use dc_types, only: dp
17694 character(*), intent(in):: file
17695 character(*), intent(in):: varname
17696 character(*), intent(in), optional:: range
17697 logical, intent(in), optional:: quiet
17698 logical, intent(in), optional:: flag_mpi_split
17699 real(DP), intent(out), optional:: returned_time
17700 logical, intent(out), optional:: flag_time_exist
17701 logical, intent(out), optional:: err
17702 integer, pointer :: array(:,:)
17703 end subroutine historygetint2pointer
17704 end interface
17705 interface
17706 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17707 character(*), intent(in):: file
17708 character(*), intent(in):: varname
17709 character(*), intent(out):: url
17710 character(*), intent(in), optional:: range
17711 logical, intent(out), optional:: flag_time_exist
17712 character(*), intent(out), optional:: time_name
17713 logical, intent(out), optional:: err
17714 end subroutine lookup_growable_url
17715 end interface
17716 interface
17717 function file_rename_mpi( file ) result(result)
17718 use dc_types, only: string
17719 character(*), intent(in):: file
17720 character(STRING):: result
17721 end function file_rename_mpi
17722 end interface
17723 continue
17724 file_work = file
17725 if ( present_and_true( flag_mpi_split ) ) &
17726 & file_work = file_rename_mpi( file_work )
17727 call lookup_growable_url(file = file_work, varname = varname, &
17728 & url = url, &
17729 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17730 call url_chop_iorange( &
17731 & fullname = url, iorange = iorange, remainder = remainder )
17732 call split( str = iorange, carray = carray, sep = gt_equal )
17733 timevar_name = carray(1)
17734 deallocate( carray )
17735 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17736 call historygetint2pointer( file = file, &
17737 & varname = varname, array = array, &
17738 & range = time_range, quiet = quiet, &
17739 & flag_mpi_split = flag_mpi_split, &
17740 & returned_time = returned_time, &
17741 & flag_time_exist = flag_time_exist, &
17742 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint2pointertimer()

subroutine historygetint2pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10081 of file historyget.f90.

10084 use dc_string, only: tochar, split
10085 use dc_types, only: string, dp, sp
10086 use dc_trace, only: dbgmessage
10087 use dc_url, only: url_chop_iorange, gt_equal
10088 use dc_present, only: present_and_true
10089 ! MPI ライブラリ
10090 ! MPI library
10091 !
10092 use mpi
10093 implicit none
10094 character(*), intent(in):: file, varname
10095 real(SP), intent(in):: time
10096 logical, intent(in), optional:: quiet
10097 integer, pointer :: array(:,:)
10098 logical, intent(in), optional:: flag_mpi_split
10099 real(DP), intent(out), optional:: returned_time
10100 logical, intent(out), optional:: flag_time_exist
10101 logical, intent(out), optional:: err
10102 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10103 character(STRING), pointer:: carray (:)
10104 character(STRING):: tname
10105 interface
10106 subroutine historygetint2pointer(&
10107 & file, varname, array, range, quiet, &
10108 & flag_mpi_split, returned_time, flag_time_exist, err)
10109 use dc_types, only: dp
10110 character(*), intent(in):: file
10111 character(*), intent(in):: varname
10112 character(*), intent(in), optional:: range
10113 logical, intent(in), optional:: quiet
10114 logical, intent(in), optional:: flag_mpi_split
10115 real(DP), intent(out), optional:: returned_time
10116 logical, intent(out), optional:: flag_time_exist
10117 logical, intent(out), optional:: err
10118 integer, pointer :: array(:,:)
10119 end subroutine historygetint2pointer
10120 end interface
10121 interface
10122 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10123 character(*), intent(in):: file
10124 character(*), intent(in):: varname
10125 character(*), intent(out):: url
10126 character(*), intent(in), optional:: range
10127 logical, intent(out), optional:: flag_time_exist
10128 character(*), intent(out), optional:: time_name
10129 logical, intent(out), optional:: err
10130 end subroutine lookup_growable_url
10131 end interface
10132 interface
10133 function file_rename_mpi( file ) result(result)
10134 use dc_types, only: string
10135 character(*), intent(in):: file
10136 character(STRING):: result
10137 end function file_rename_mpi
10138 end interface
10139 continue
10140 file_work = file
10141 if ( present_and_true( flag_mpi_split ) ) &
10142 & file_work = file_rename_mpi( file_work )
10143 call lookup_growable_url(file = file_work, varname = varname, &
10144 & url = url, &
10145 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10146 call url_chop_iorange( &
10147 & fullname = url, iorange = iorange, remainder = remainder )
10148 call split( str = iorange, carray = carray, sep = gt_equal )
10149 timevar_name = carray(1)
10150 deallocate( carray )
10151 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10152 call historygetint2pointer( file = file, &
10153 & varname = varname, array = array, &
10154 & range = time_range, quiet = quiet, &
10155 & flag_mpi_split = flag_mpi_split, &
10156 & returned_time = returned_time, &
10157 & flag_time_exist = flag_time_exist, &
10158 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint2timed()

subroutine historygetint2timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13241 of file historyget.f90.

13244 use dc_string, only: tochar, split
13245 use dc_types, only: string, dp
13246 use dc_trace, only: dbgmessage
13247 use dc_url, only: url_chop_iorange, gt_equal
13248 use dc_present, only: present_and_true
13249 ! MPI ライブラリ
13250 ! MPI library
13251 !
13252 use mpi
13253 implicit none
13254 character(*), intent(in):: file, varname
13255 real(DP), intent(in):: time
13256 logical, intent(in), optional:: quiet
13257 integer, intent(out) :: array(:,:)
13258 logical, intent(in), optional:: flag_mpi_split
13259 real(DP), intent(out), optional:: returned_time
13260 logical, intent(out), optional:: flag_time_exist
13261 logical, intent(out), optional:: err
13262 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13263 character(STRING), pointer:: carray (:)
13264 character(STRING):: tname
13265 interface
13266 subroutine historygetint2(&
13267 & file, varname, array, range, quiet, &
13268 & flag_mpi_split, returned_time, flag_time_exist, err)
13269 use dc_types, only: dp
13270 character(*), intent(in):: file
13271 character(*), intent(in):: varname
13272 character(*), intent(in), optional:: range
13273 logical, intent(in), optional:: quiet
13274 logical, intent(in), optional:: flag_mpi_split
13275 real(DP), intent(out), optional:: returned_time
13276 logical, intent(out), optional:: flag_time_exist
13277 logical, intent(out), optional:: err
13278 integer, intent(out) :: array(:,:)
13279 end subroutine historygetint2
13280 end interface
13281 interface
13282 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13283 character(*), intent(in):: file
13284 character(*), intent(in):: varname
13285 character(*), intent(out):: url
13286 character(*), intent(in), optional:: range
13287 logical, intent(out), optional:: flag_time_exist
13288 character(*), intent(out), optional:: time_name
13289 logical, intent(out), optional:: err
13290 end subroutine lookup_growable_url
13291 end interface
13292 interface
13293 function file_rename_mpi( file ) result(result)
13294 use dc_types, only: string
13295 character(*), intent(in):: file
13296 character(STRING):: result
13297 end function file_rename_mpi
13298 end interface
13299 continue
13300 file_work = file
13301 if ( present_and_true( flag_mpi_split ) ) &
13302 & file_work = file_rename_mpi( file_work )
13303 call lookup_growable_url(file = file_work, varname = varname, &
13304 & url = url, &
13305 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13306 call url_chop_iorange( &
13307 & fullname = url, iorange = iorange, remainder = remainder )
13308 call split( str = iorange, carray = carray, sep = gt_equal )
13309 timevar_name = carray(1)
13310 deallocate( carray )
13311 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13312 call historygetint2( file = file, &
13313 & varname = varname, array = array, &
13314 & range = time_range, quiet = quiet, &
13315 & flag_mpi_split = flag_mpi_split, &
13316 & returned_time = returned_time, &
13317 & flag_time_exist = flag_time_exist, &
13318 & err = err )
subroutine historygetint2(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint2timei()

subroutine historygetint2timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17033 of file historyget.f90.

17036 use dc_string, only: tochar, split
17037 use dc_types, only: string, dp
17038 use dc_trace, only: dbgmessage
17039 use dc_url, only: url_chop_iorange, gt_equal
17040 use dc_present, only: present_and_true
17041 ! MPI ライブラリ
17042 ! MPI library
17043 !
17044 use mpi
17045 implicit none
17046 character(*), intent(in):: file, varname
17047 integer, intent(in):: time
17048 logical, intent(in), optional:: quiet
17049 integer, intent(out) :: array(:,:)
17050 logical, intent(in), optional:: flag_mpi_split
17051 real(DP), intent(out), optional:: returned_time
17052 logical, intent(out), optional:: flag_time_exist
17053 logical, intent(out), optional:: err
17054 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17055 character(STRING), pointer:: carray (:)
17056 character(STRING):: tname
17057 interface
17058 subroutine historygetint2(&
17059 & file, varname, array, range, quiet, &
17060 & flag_mpi_split, returned_time, flag_time_exist, err)
17061 use dc_types, only: dp
17062 character(*), intent(in):: file
17063 character(*), intent(in):: varname
17064 character(*), intent(in), optional:: range
17065 logical, intent(in), optional:: quiet
17066 logical, intent(in), optional:: flag_mpi_split
17067 real(DP), intent(out), optional:: returned_time
17068 logical, intent(out), optional:: flag_time_exist
17069 logical, intent(out), optional:: err
17070 integer, intent(out) :: array(:,:)
17071 end subroutine historygetint2
17072 end interface
17073 interface
17074 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17075 character(*), intent(in):: file
17076 character(*), intent(in):: varname
17077 character(*), intent(out):: url
17078 character(*), intent(in), optional:: range
17079 logical, intent(out), optional:: flag_time_exist
17080 character(*), intent(out), optional:: time_name
17081 logical, intent(out), optional:: err
17082 end subroutine lookup_growable_url
17083 end interface
17084 interface
17085 function file_rename_mpi( file ) result(result)
17086 use dc_types, only: string
17087 character(*), intent(in):: file
17088 character(STRING):: result
17089 end function file_rename_mpi
17090 end interface
17091 continue
17092 file_work = file
17093 if ( present_and_true( flag_mpi_split ) ) &
17094 & file_work = file_rename_mpi( file_work )
17095 call lookup_growable_url(file = file_work, varname = varname, &
17096 & url = url, &
17097 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17098 call url_chop_iorange( &
17099 & fullname = url, iorange = iorange, remainder = remainder )
17100 call split( str = iorange, carray = carray, sep = gt_equal )
17101 timevar_name = carray(1)
17102 deallocate( carray )
17103 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17104 call historygetint2( file = file, &
17105 & varname = varname, array = array, &
17106 & range = time_range, quiet = quiet, &
17107 & flag_mpi_split = flag_mpi_split, &
17108 & returned_time = returned_time, &
17109 & flag_time_exist = flag_time_exist, &
17110 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint2timer()

subroutine historygetint2timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9449 of file historyget.f90.

9452 use dc_string, only: tochar, split
9453 use dc_types, only: string, dp, sp
9454 use dc_trace, only: dbgmessage
9455 use dc_url, only: url_chop_iorange, gt_equal
9456 use dc_present, only: present_and_true
9457 ! MPI ライブラリ
9458 ! MPI library
9459 !
9460 use mpi
9461 implicit none
9462 character(*), intent(in):: file, varname
9463 real(SP), intent(in):: time
9464 logical, intent(in), optional:: quiet
9465 integer, intent(out) :: array(:,:)
9466 logical, intent(in), optional:: flag_mpi_split
9467 real(DP), intent(out), optional:: returned_time
9468 logical, intent(out), optional:: flag_time_exist
9469 logical, intent(out), optional:: err
9470 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9471 character(STRING), pointer:: carray (:)
9472 character(STRING):: tname
9473 interface
9474 subroutine historygetint2(&
9475 & file, varname, array, range, quiet, &
9476 & flag_mpi_split, returned_time, flag_time_exist, err)
9477 use dc_types, only: dp
9478 character(*), intent(in):: file
9479 character(*), intent(in):: varname
9480 character(*), intent(in), optional:: range
9481 logical, intent(in), optional:: quiet
9482 logical, intent(in), optional:: flag_mpi_split
9483 real(DP), intent(out), optional:: returned_time
9484 logical, intent(out), optional:: flag_time_exist
9485 logical, intent(out), optional:: err
9486 integer, intent(out) :: array(:,:)
9487 end subroutine historygetint2
9488 end interface
9489 interface
9490 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9491 character(*), intent(in):: file
9492 character(*), intent(in):: varname
9493 character(*), intent(out):: url
9494 character(*), intent(in), optional:: range
9495 logical, intent(out), optional:: flag_time_exist
9496 character(*), intent(out), optional:: time_name
9497 logical, intent(out), optional:: err
9498 end subroutine lookup_growable_url
9499 end interface
9500 interface
9501 function file_rename_mpi( file ) result(result)
9502 use dc_types, only: string
9503 character(*), intent(in):: file
9504 character(STRING):: result
9505 end function file_rename_mpi
9506 end interface
9507 continue
9508 file_work = file
9509 if ( present_and_true( flag_mpi_split ) ) &
9510 & file_work = file_rename_mpi( file_work )
9511 call lookup_growable_url(file = file_work, varname = varname, &
9512 & url = url, &
9513 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9514 call url_chop_iorange( &
9515 & fullname = url, iorange = iorange, remainder = remainder )
9516 call split( str = iorange, carray = carray, sep = gt_equal )
9517 timevar_name = carray(1)
9518 deallocate( carray )
9519 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9520 call historygetint2( file = file, &
9521 & varname = varname, array = array, &
9522 & range = time_range, quiet = quiet, &
9523 & flag_mpi_split = flag_mpi_split, &
9524 & returned_time = returned_time, &
9525 & flag_time_exist = flag_time_exist, &
9526 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint3()

subroutine historygetint3 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 3734 of file historyget.f90.

3736 use gtdata_types, only: gt_variable
3737 use gtdata_generic, only: open, inquire, close, get
3738 use dc_string, only: tochar
3740 use dc_regex, only: match
3741 use dc_types, only: string, dp
3742 use dc_message, only: messagenotify
3745 ! MPI ライブラリ
3746 ! MPI library
3747 use mpi
3748 implicit none
3749 character(*), intent(in):: file
3750 character(*), intent(in):: varname
3751 character(*), intent(in), optional:: range
3752 logical, intent(in), optional:: quiet
3753 logical, intent(in), optional:: flag_mpi_split
3754 real(DP), intent(out), optional:: returned_time ! データの時刻
3755 logical, intent(out), optional:: flag_time_exist
3756 logical, intent(out), optional:: err
3757 integer, intent(out) :: array(:,:,:)
3758 integer, allocatable :: array_tmp(:)
3759 integer:: array_allsize
3760 integer:: array_shape(3), data_shape(3), array_shape_check(3)
3761 integer:: allcount
3762 integer:: i, sd
3763 logical:: inq_err
3764 type(GT_VARIABLE):: var
3765 character(STRING):: file_work, url, actual_url
3766 integer:: rank, alldims, array_rank
3767 integer:: domain
3768 character(STRING):: tname
3769 integer:: stat
3770 character(STRING):: cause_c
3771 character(*), parameter :: subname = "HistoryGetInt3"
3772 interface
3773 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3774 character(*), intent(in):: file
3775 character(*), intent(in):: varname
3776 character(*), intent(out):: url
3777 character(*), intent(in), optional:: range
3778 logical, intent(out), optional:: flag_time_exist
3779 character(*), intent(out), optional:: time_name
3780 logical, intent(out), optional:: err
3781 end subroutine lookup_growable_url
3782 end interface
3783 interface
3784 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3785 use dc_types, only: dp
3786 character(*), intent(in) :: url ! 変数 URL
3787 character(*), intent(out), optional :: actual_url
3788 ! 正確な入出力範囲指定
3789 real(DP), intent(out), optional:: returned_time ! データの時刻
3790 character(*), intent(in), optional:: time_name ! 時刻次元の名称
3791 logical, intent(out), optional :: err ! エラーのフラグ
3792 end subroutine actual_iorange_dump
3793 end interface
3794 interface
3795 function file_rename_mpi( file ) result(result)
3796 use dc_types, only: string
3797 character(*), intent(in):: file
3798 character(STRING):: result
3799 end function file_rename_mpi
3800 end interface
3801 continue
3802 cause_c = ''
3803 stat = dc_noerr
3804 file_work = file
3805 array_shape = shape( array )
3806 array_allsize = size( array )
3807 ! ファイル名の変更 (MPI 用)
3808 ! Change filename (for MPI)
3809 !
3810 if ( present_and_true( flag_mpi_split ) ) &
3811 & file_work = file_rename_mpi( file_work )
3812 ! 最新時刻の URL 取得
3813 ! Get URL of latest time
3814 !
3815 call lookup_growable_url(file_work, varname, url, range, &
3816 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3817 if ( present_and_true(err) ) then
3818 stat = gt_enoturl
3819 cause_c = url
3820 goto 999
3821 end if
3822 ! ファイルオープン
3823 ! File open
3824 call open( var, url, err = err )
3825 if ( present_and_true(err) ) then
3826 stat = gt_enoturl
3827 cause_c = url
3828 goto 999
3829 end if
3830 !-------------------------------------------------------------------
3831 ! 配列形状のチェック
3832 ! Check array shape
3833 !-------------------------------------------------------------------
3834 ! 入力ファイル中のデータの次元数
3835 ! Get size of dimesions in data of an input file
3836 !
3837 call inquire( var = var, & ! (in)
3838 & rank = rank, alldims = alldims ) ! (out)
3839 ! 引数の次元数のチェック (縮退されている場合には減らす)
3840 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3841 array_rank = 3
3842 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3843 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
3844 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
3845 ! 次元数の比較
3846 ! Compare sizes of dimensions
3847 !
3848 if ( .not. 3 == rank .and. .not. array_rank == rank ) then
3849 if ( .not. present_and_true(quiet) ) then
3850 call messagenotify('W', subname, &
3851 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3852 & i = (/rank, 3/), c1 = trim(url) )
3853 end if
3854 stat = gt_erankmismatch
3855 cause_c = 'array'
3856 goto 999
3857 end if
3858 ! 入力ファイル中のデータの配列形状取得
3859 ! Get shape of data in an input file
3860 call inquire( var = var , dimord = 1, & ! (in)
3861 & allcount = allcount, err = inq_err ) ! (out)
3862 if ( .not. inq_err ) then
3863 data_shape(1) = allcount
3864 else
3865 data_shape(1) = 1
3866 end if
3867 call inquire( var = var , dimord = 2, & ! (in)
3868 & allcount = allcount, err = inq_err ) ! (out)
3869 if ( .not. inq_err ) then
3870 data_shape(2) = allcount
3871 else
3872 data_shape(2) = 1
3873 end if
3874 call inquire( var = var , dimord = 3, & ! (in)
3875 & allcount = allcount, err = inq_err ) ! (out)
3876 if ( .not. inq_err ) then
3877 data_shape(3) = allcount
3878 else
3879 data_shape(3) = 1
3880 end if
3881 ! 引数の配列形状整形
3882 ! Arrange shape of an argument
3883 !
3884 array_shape_check = array_shape
3885 sd = 1
3886 do i = 1, 3 - 1
3887 if ( array_shape_check(sd) == 1 ) then
3888 array_shape_check(sd:3) = cshift( array_shape_check(sd:3), 1, 1 )
3889 else
3890 sd = sd + 1
3891 end if
3892 end do
3893 ! 配列形状の比較
3894 ! Compare shapes
3895 !
3896 if ( .not. all( array_shape_check == data_shape ) ) then
3897 if ( .not. present_and_true(quiet) ) then
3898 call messagenotify('W', subname, &
3899 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3900 & c1 = trim( url ), &
3901 & c2 = trim( tochar( data_shape(1:rank) ) ), &
3902 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3903 end if
3904 stat = gt_eargsizemismatch
3905 cause_c = 'array'
3906 goto 999
3907 end if
3908 !-------------------------------------
3909 ! データ取得
3910 ! Get data
3911 call inquire( var = var, & ! (in)
3912 & size = domain ) ! (out)
3913 if ( allocated( array_tmp ) ) deallocate( array_tmp )
3914 allocate( array_tmp(array_allsize) )
3915 call get( var, array_tmp, domain )
3916 array = reshape( array_tmp, array_shape )
3917 deallocate( array_tmp )
3918 call close( var )
3919 !-------------------------------------
3920 ! データファイル名と切り出し範囲の印字
3921 ! Print data filename and clipping range
3922 call actual_iorange_dump(url, & ! (in)
3923 & actual_url, returned_time, & ! (out) optional
3924 & time_name = tname, & ! (in) optional
3925 & err = err) ! (out) optional
3926 if ( .not. present_and_true(quiet) ) then
3927 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3928 end if
3929999 continue
3930 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint3pointer()

subroutine historygetint3pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6358 of file historyget.f90.

6360 use gtdata_types, only: gt_variable
6361 use gtdata_generic, only: open, inquire, close, get
6362 use dc_string, only: tochar
6364 use dc_types, only: string, dp
6365 use dc_message, only: messagenotify
6366 use dc_trace, only: dbgmessage
6367 ! MPI ライブラリ
6368 ! MPI library
6369 !
6370 use mpi
6371 implicit none
6372 character(*), intent(in):: file
6373 character(*), intent(in):: varname
6374 character(*), intent(in), optional:: range
6375 logical, intent(in), optional:: quiet
6376 logical, intent(in), optional:: flag_mpi_split
6377 real(DP), intent(out), optional:: returned_time ! データの時刻
6378 logical, intent(out), optional:: flag_time_exist
6379 logical, intent(out), optional:: err
6380 integer, pointer :: array(:,:,:) ! (out)
6381 type(GT_VARIABLE):: var
6382 character(STRING):: file_work, url, actual_url
6383 character(STRING):: tname
6384 character(*), parameter :: subname = "HistoryGetInt3Pointer"
6385 interface
6386 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6387 character(*), intent(in):: file
6388 character(*), intent(in):: varname
6389 character(*), intent(out):: url
6390 character(*), intent(in), optional:: range
6391 logical, intent(out), optional:: flag_time_exist
6392 character(*), intent(out), optional:: time_name
6393 logical, intent(out), optional:: err
6394 end subroutine lookup_growable_url
6395 end interface
6396 interface
6397 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6398 use dc_types, only: dp
6399 character(*), intent(in) :: url ! 変数 URL
6400 character(*), intent(out), optional :: actual_url
6401 ! 正確な入出力範囲指定
6402 real(DP), intent(out), optional:: returned_time ! データの時刻
6403 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6404 logical, intent(out), optional :: err ! エラーのフラグ
6405 end subroutine actual_iorange_dump
6406 end interface
6407 interface
6408 function file_rename_mpi( file ) result(result)
6409 use dc_types, only: string
6410 character(*), intent(in):: file
6411 character(STRING):: result
6412 end function file_rename_mpi
6413 end interface
6414 continue
6415 file_work = file
6416 ! ファイル名の変更 (MPI 用)
6417 ! Change filename (for MPI)
6418 !
6419 if ( present_and_true( flag_mpi_split ) ) &
6420 & file_work = file_rename_mpi( file_work )
6421 ! 必要な情報を gtool 変数化
6422 !
6423 call lookup_growable_url(file_work, varname, url, range, &
6424 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6425 call dbgmessage('@ url =%c', c1=trim(url))
6426 ! いよいよデータ取得
6427 !
6428 call open(var, url, err)
6429 call get(var, array, err)
6430 call close(var, err)
6431 call actual_iorange_dump(url, & ! (in)
6432 & actual_url, returned_time, & ! (out) optional
6433 & time_name = tname, & ! (in) optional
6434 & err = err) ! (out) optional
6435 if ( .not. present_and_true(quiet) ) then
6436 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6437 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint3pointertimed()

subroutine historygetint3pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13952 of file historyget.f90.

13955 use dc_string, only: tochar, split
13956 use dc_types, only: string, dp
13957 use dc_trace, only: dbgmessage
13958 use dc_url, only: url_chop_iorange, gt_equal
13959 use dc_present, only: present_and_true
13960 ! MPI ライブラリ
13961 ! MPI library
13962 !
13963 use mpi
13964 implicit none
13965 character(*), intent(in):: file, varname
13966 real(DP), intent(in):: time
13967 logical, intent(in), optional:: quiet
13968 integer, pointer :: array(:,:,:)
13969 logical, intent(in), optional:: flag_mpi_split
13970 real(DP), intent(out), optional:: returned_time
13971 logical, intent(out), optional:: flag_time_exist
13972 logical, intent(out), optional:: err
13973 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13974 character(STRING), pointer:: carray (:)
13975 character(STRING):: tname
13976 interface
13977 subroutine historygetint3pointer(&
13978 & file, varname, array, range, quiet, &
13979 & flag_mpi_split, returned_time, flag_time_exist, err)
13980 use dc_types, only: dp
13981 character(*), intent(in):: file
13982 character(*), intent(in):: varname
13983 character(*), intent(in), optional:: range
13984 logical, intent(in), optional:: quiet
13985 logical, intent(in), optional:: flag_mpi_split
13986 real(DP), intent(out), optional:: returned_time
13987 logical, intent(out), optional:: flag_time_exist
13988 logical, intent(out), optional:: err
13989 integer, pointer :: array(:,:,:)
13990 end subroutine historygetint3pointer
13991 end interface
13992 interface
13993 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13994 character(*), intent(in):: file
13995 character(*), intent(in):: varname
13996 character(*), intent(out):: url
13997 character(*), intent(in), optional:: range
13998 logical, intent(out), optional:: flag_time_exist
13999 character(*), intent(out), optional:: time_name
14000 logical, intent(out), optional:: err
14001 end subroutine lookup_growable_url
14002 end interface
14003 interface
14004 function file_rename_mpi( file ) result(result)
14005 use dc_types, only: string
14006 character(*), intent(in):: file
14007 character(STRING):: result
14008 end function file_rename_mpi
14009 end interface
14010 continue
14011 file_work = file
14012 if ( present_and_true( flag_mpi_split ) ) &
14013 & file_work = file_rename_mpi( file_work )
14014 call lookup_growable_url(file = file_work, varname = varname, &
14015 & url = url, &
14016 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14017 call url_chop_iorange( &
14018 & fullname = url, iorange = iorange, remainder = remainder )
14019 call split( str = iorange, carray = carray, sep = gt_equal )
14020 timevar_name = carray(1)
14021 deallocate( carray )
14022 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14023 call historygetint3pointer( file = file, &
14024 & varname = varname, array = array, &
14025 & range = time_range, quiet = quiet, &
14026 & flag_mpi_split = flag_mpi_split, &
14027 & returned_time = returned_time, &
14028 & flag_time_exist = flag_time_exist, &
14029 & err = err )
subroutine historygetint3pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint3pointertimei()

subroutine historygetint3pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17744 of file historyget.f90.

17747 use dc_string, only: tochar, split
17748 use dc_types, only: string, dp
17749 use dc_trace, only: dbgmessage
17750 use dc_url, only: url_chop_iorange, gt_equal
17751 use dc_present, only: present_and_true
17752 ! MPI ライブラリ
17753 ! MPI library
17754 !
17755 use mpi
17756 implicit none
17757 character(*), intent(in):: file, varname
17758 integer, intent(in):: time
17759 logical, intent(in), optional:: quiet
17760 integer, pointer :: array(:,:,:)
17761 logical, intent(in), optional:: flag_mpi_split
17762 real(DP), intent(out), optional:: returned_time
17763 logical, intent(out), optional:: flag_time_exist
17764 logical, intent(out), optional:: err
17765 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17766 character(STRING), pointer:: carray (:)
17767 character(STRING):: tname
17768 interface
17769 subroutine historygetint3pointer(&
17770 & file, varname, array, range, quiet, &
17771 & flag_mpi_split, returned_time, flag_time_exist, err)
17772 use dc_types, only: dp
17773 character(*), intent(in):: file
17774 character(*), intent(in):: varname
17775 character(*), intent(in), optional:: range
17776 logical, intent(in), optional:: quiet
17777 logical, intent(in), optional:: flag_mpi_split
17778 real(DP), intent(out), optional:: returned_time
17779 logical, intent(out), optional:: flag_time_exist
17780 logical, intent(out), optional:: err
17781 integer, pointer :: array(:,:,:)
17782 end subroutine historygetint3pointer
17783 end interface
17784 interface
17785 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17786 character(*), intent(in):: file
17787 character(*), intent(in):: varname
17788 character(*), intent(out):: url
17789 character(*), intent(in), optional:: range
17790 logical, intent(out), optional:: flag_time_exist
17791 character(*), intent(out), optional:: time_name
17792 logical, intent(out), optional:: err
17793 end subroutine lookup_growable_url
17794 end interface
17795 interface
17796 function file_rename_mpi( file ) result(result)
17797 use dc_types, only: string
17798 character(*), intent(in):: file
17799 character(STRING):: result
17800 end function file_rename_mpi
17801 end interface
17802 continue
17803 file_work = file
17804 if ( present_and_true( flag_mpi_split ) ) &
17805 & file_work = file_rename_mpi( file_work )
17806 call lookup_growable_url(file = file_work, varname = varname, &
17807 & url = url, &
17808 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17809 call url_chop_iorange( &
17810 & fullname = url, iorange = iorange, remainder = remainder )
17811 call split( str = iorange, carray = carray, sep = gt_equal )
17812 timevar_name = carray(1)
17813 deallocate( carray )
17814 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17815 call historygetint3pointer( file = file, &
17816 & varname = varname, array = array, &
17817 & range = time_range, quiet = quiet, &
17818 & flag_mpi_split = flag_mpi_split, &
17819 & returned_time = returned_time, &
17820 & flag_time_exist = flag_time_exist, &
17821 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint3pointertimer()

subroutine historygetint3pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10160 of file historyget.f90.

10163 use dc_string, only: tochar, split
10164 use dc_types, only: string, dp, sp
10165 use dc_trace, only: dbgmessage
10166 use dc_url, only: url_chop_iorange, gt_equal
10167 use dc_present, only: present_and_true
10168 ! MPI ライブラリ
10169 ! MPI library
10170 !
10171 use mpi
10172 implicit none
10173 character(*), intent(in):: file, varname
10174 real(SP), intent(in):: time
10175 logical, intent(in), optional:: quiet
10176 integer, pointer :: array(:,:,:)
10177 logical, intent(in), optional:: flag_mpi_split
10178 real(DP), intent(out), optional:: returned_time
10179 logical, intent(out), optional:: flag_time_exist
10180 logical, intent(out), optional:: err
10181 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10182 character(STRING), pointer:: carray (:)
10183 character(STRING):: tname
10184 interface
10185 subroutine historygetint3pointer(&
10186 & file, varname, array, range, quiet, &
10187 & flag_mpi_split, returned_time, flag_time_exist, err)
10188 use dc_types, only: dp
10189 character(*), intent(in):: file
10190 character(*), intent(in):: varname
10191 character(*), intent(in), optional:: range
10192 logical, intent(in), optional:: quiet
10193 logical, intent(in), optional:: flag_mpi_split
10194 real(DP), intent(out), optional:: returned_time
10195 logical, intent(out), optional:: flag_time_exist
10196 logical, intent(out), optional:: err
10197 integer, pointer :: array(:,:,:)
10198 end subroutine historygetint3pointer
10199 end interface
10200 interface
10201 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10202 character(*), intent(in):: file
10203 character(*), intent(in):: varname
10204 character(*), intent(out):: url
10205 character(*), intent(in), optional:: range
10206 logical, intent(out), optional:: flag_time_exist
10207 character(*), intent(out), optional:: time_name
10208 logical, intent(out), optional:: err
10209 end subroutine lookup_growable_url
10210 end interface
10211 interface
10212 function file_rename_mpi( file ) result(result)
10213 use dc_types, only: string
10214 character(*), intent(in):: file
10215 character(STRING):: result
10216 end function file_rename_mpi
10217 end interface
10218 continue
10219 file_work = file
10220 if ( present_and_true( flag_mpi_split ) ) &
10221 & file_work = file_rename_mpi( file_work )
10222 call lookup_growable_url(file = file_work, varname = varname, &
10223 & url = url, &
10224 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10225 call url_chop_iorange( &
10226 & fullname = url, iorange = iorange, remainder = remainder )
10227 call split( str = iorange, carray = carray, sep = gt_equal )
10228 timevar_name = carray(1)
10229 deallocate( carray )
10230 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10231 call historygetint3pointer( file = file, &
10232 & varname = varname, array = array, &
10233 & range = time_range, quiet = quiet, &
10234 & flag_mpi_split = flag_mpi_split, &
10235 & returned_time = returned_time, &
10236 & flag_time_exist = flag_time_exist, &
10237 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint3timed()

subroutine historygetint3timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13320 of file historyget.f90.

13323 use dc_string, only: tochar, split
13324 use dc_types, only: string, dp
13325 use dc_trace, only: dbgmessage
13326 use dc_url, only: url_chop_iorange, gt_equal
13327 use dc_present, only: present_and_true
13328 ! MPI ライブラリ
13329 ! MPI library
13330 !
13331 use mpi
13332 implicit none
13333 character(*), intent(in):: file, varname
13334 real(DP), intent(in):: time
13335 logical, intent(in), optional:: quiet
13336 integer, intent(out) :: array(:,:,:)
13337 logical, intent(in), optional:: flag_mpi_split
13338 real(DP), intent(out), optional:: returned_time
13339 logical, intent(out), optional:: flag_time_exist
13340 logical, intent(out), optional:: err
13341 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13342 character(STRING), pointer:: carray (:)
13343 character(STRING):: tname
13344 interface
13345 subroutine historygetint3(&
13346 & file, varname, array, range, quiet, &
13347 & flag_mpi_split, returned_time, flag_time_exist, err)
13348 use dc_types, only: dp
13349 character(*), intent(in):: file
13350 character(*), intent(in):: varname
13351 character(*), intent(in), optional:: range
13352 logical, intent(in), optional:: quiet
13353 logical, intent(in), optional:: flag_mpi_split
13354 real(DP), intent(out), optional:: returned_time
13355 logical, intent(out), optional:: flag_time_exist
13356 logical, intent(out), optional:: err
13357 integer, intent(out) :: array(:,:,:)
13358 end subroutine historygetint3
13359 end interface
13360 interface
13361 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13362 character(*), intent(in):: file
13363 character(*), intent(in):: varname
13364 character(*), intent(out):: url
13365 character(*), intent(in), optional:: range
13366 logical, intent(out), optional:: flag_time_exist
13367 character(*), intent(out), optional:: time_name
13368 logical, intent(out), optional:: err
13369 end subroutine lookup_growable_url
13370 end interface
13371 interface
13372 function file_rename_mpi( file ) result(result)
13373 use dc_types, only: string
13374 character(*), intent(in):: file
13375 character(STRING):: result
13376 end function file_rename_mpi
13377 end interface
13378 continue
13379 file_work = file
13380 if ( present_and_true( flag_mpi_split ) ) &
13381 & file_work = file_rename_mpi( file_work )
13382 call lookup_growable_url(file = file_work, varname = varname, &
13383 & url = url, &
13384 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13385 call url_chop_iorange( &
13386 & fullname = url, iorange = iorange, remainder = remainder )
13387 call split( str = iorange, carray = carray, sep = gt_equal )
13388 timevar_name = carray(1)
13389 deallocate( carray )
13390 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13391 call historygetint3( file = file, &
13392 & varname = varname, array = array, &
13393 & range = time_range, quiet = quiet, &
13394 & flag_mpi_split = flag_mpi_split, &
13395 & returned_time = returned_time, &
13396 & flag_time_exist = flag_time_exist, &
13397 & err = err )
subroutine historygetint3(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint3timei()

subroutine historygetint3timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17112 of file historyget.f90.

17115 use dc_string, only: tochar, split
17116 use dc_types, only: string, dp
17117 use dc_trace, only: dbgmessage
17118 use dc_url, only: url_chop_iorange, gt_equal
17119 use dc_present, only: present_and_true
17120 ! MPI ライブラリ
17121 ! MPI library
17122 !
17123 use mpi
17124 implicit none
17125 character(*), intent(in):: file, varname
17126 integer, intent(in):: time
17127 logical, intent(in), optional:: quiet
17128 integer, intent(out) :: array(:,:,:)
17129 logical, intent(in), optional:: flag_mpi_split
17130 real(DP), intent(out), optional:: returned_time
17131 logical, intent(out), optional:: flag_time_exist
17132 logical, intent(out), optional:: err
17133 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17134 character(STRING), pointer:: carray (:)
17135 character(STRING):: tname
17136 interface
17137 subroutine historygetint3(&
17138 & file, varname, array, range, quiet, &
17139 & flag_mpi_split, returned_time, flag_time_exist, err)
17140 use dc_types, only: dp
17141 character(*), intent(in):: file
17142 character(*), intent(in):: varname
17143 character(*), intent(in), optional:: range
17144 logical, intent(in), optional:: quiet
17145 logical, intent(in), optional:: flag_mpi_split
17146 real(DP), intent(out), optional:: returned_time
17147 logical, intent(out), optional:: flag_time_exist
17148 logical, intent(out), optional:: err
17149 integer, intent(out) :: array(:,:,:)
17150 end subroutine historygetint3
17151 end interface
17152 interface
17153 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17154 character(*), intent(in):: file
17155 character(*), intent(in):: varname
17156 character(*), intent(out):: url
17157 character(*), intent(in), optional:: range
17158 logical, intent(out), optional:: flag_time_exist
17159 character(*), intent(out), optional:: time_name
17160 logical, intent(out), optional:: err
17161 end subroutine lookup_growable_url
17162 end interface
17163 interface
17164 function file_rename_mpi( file ) result(result)
17165 use dc_types, only: string
17166 character(*), intent(in):: file
17167 character(STRING):: result
17168 end function file_rename_mpi
17169 end interface
17170 continue
17171 file_work = file
17172 if ( present_and_true( flag_mpi_split ) ) &
17173 & file_work = file_rename_mpi( file_work )
17174 call lookup_growable_url(file = file_work, varname = varname, &
17175 & url = url, &
17176 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17177 call url_chop_iorange( &
17178 & fullname = url, iorange = iorange, remainder = remainder )
17179 call split( str = iorange, carray = carray, sep = gt_equal )
17180 timevar_name = carray(1)
17181 deallocate( carray )
17182 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17183 call historygetint3( file = file, &
17184 & varname = varname, array = array, &
17185 & range = time_range, quiet = quiet, &
17186 & flag_mpi_split = flag_mpi_split, &
17187 & returned_time = returned_time, &
17188 & flag_time_exist = flag_time_exist, &
17189 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint3timer()

subroutine historygetint3timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9528 of file historyget.f90.

9531 use dc_string, only: tochar, split
9532 use dc_types, only: string, dp, sp
9533 use dc_trace, only: dbgmessage
9534 use dc_url, only: url_chop_iorange, gt_equal
9535 use dc_present, only: present_and_true
9536 ! MPI ライブラリ
9537 ! MPI library
9538 !
9539 use mpi
9540 implicit none
9541 character(*), intent(in):: file, varname
9542 real(SP), intent(in):: time
9543 logical, intent(in), optional:: quiet
9544 integer, intent(out) :: array(:,:,:)
9545 logical, intent(in), optional:: flag_mpi_split
9546 real(DP), intent(out), optional:: returned_time
9547 logical, intent(out), optional:: flag_time_exist
9548 logical, intent(out), optional:: err
9549 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9550 character(STRING), pointer:: carray (:)
9551 character(STRING):: tname
9552 interface
9553 subroutine historygetint3(&
9554 & file, varname, array, range, quiet, &
9555 & flag_mpi_split, returned_time, flag_time_exist, err)
9556 use dc_types, only: dp
9557 character(*), intent(in):: file
9558 character(*), intent(in):: varname
9559 character(*), intent(in), optional:: range
9560 logical, intent(in), optional:: quiet
9561 logical, intent(in), optional:: flag_mpi_split
9562 real(DP), intent(out), optional:: returned_time
9563 logical, intent(out), optional:: flag_time_exist
9564 logical, intent(out), optional:: err
9565 integer, intent(out) :: array(:,:,:)
9566 end subroutine historygetint3
9567 end interface
9568 interface
9569 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9570 character(*), intent(in):: file
9571 character(*), intent(in):: varname
9572 character(*), intent(out):: url
9573 character(*), intent(in), optional:: range
9574 logical, intent(out), optional:: flag_time_exist
9575 character(*), intent(out), optional:: time_name
9576 logical, intent(out), optional:: err
9577 end subroutine lookup_growable_url
9578 end interface
9579 interface
9580 function file_rename_mpi( file ) result(result)
9581 use dc_types, only: string
9582 character(*), intent(in):: file
9583 character(STRING):: result
9584 end function file_rename_mpi
9585 end interface
9586 continue
9587 file_work = file
9588 if ( present_and_true( flag_mpi_split ) ) &
9589 & file_work = file_rename_mpi( file_work )
9590 call lookup_growable_url(file = file_work, varname = varname, &
9591 & url = url, &
9592 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9593 call url_chop_iorange( &
9594 & fullname = url, iorange = iorange, remainder = remainder )
9595 call split( str = iorange, carray = carray, sep = gt_equal )
9596 timevar_name = carray(1)
9597 deallocate( carray )
9598 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9599 call historygetint3( file = file, &
9600 & varname = varname, array = array, &
9601 & range = time_range, quiet = quiet, &
9602 & flag_mpi_split = flag_mpi_split, &
9603 & returned_time = returned_time, &
9604 & flag_time_exist = flag_time_exist, &
9605 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint4()

subroutine historygetint4 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 3932 of file historyget.f90.

3934 use gtdata_types, only: gt_variable
3935 use gtdata_generic, only: open, inquire, close, get
3936 use dc_string, only: tochar
3938 use dc_regex, only: match
3939 use dc_types, only: string, dp
3940 use dc_message, only: messagenotify
3943 ! MPI ライブラリ
3944 ! MPI library
3945 use mpi
3946 implicit none
3947 character(*), intent(in):: file
3948 character(*), intent(in):: varname
3949 character(*), intent(in), optional:: range
3950 logical, intent(in), optional:: quiet
3951 logical, intent(in), optional:: flag_mpi_split
3952 real(DP), intent(out), optional:: returned_time ! データの時刻
3953 logical, intent(out), optional:: flag_time_exist
3954 logical, intent(out), optional:: err
3955 integer, intent(out) :: array(:,:,:,:)
3956 integer, allocatable :: array_tmp(:)
3957 integer:: array_allsize
3958 integer:: array_shape(4), data_shape(4), array_shape_check(4)
3959 integer:: allcount
3960 integer:: i, sd
3961 logical:: inq_err
3962 type(GT_VARIABLE):: var
3963 character(STRING):: file_work, url, actual_url
3964 integer:: rank, alldims, array_rank
3965 integer:: domain
3966 character(STRING):: tname
3967 integer:: stat
3968 character(STRING):: cause_c
3969 character(*), parameter :: subname = "HistoryGetInt4"
3970 interface
3971 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3972 character(*), intent(in):: file
3973 character(*), intent(in):: varname
3974 character(*), intent(out):: url
3975 character(*), intent(in), optional:: range
3976 logical, intent(out), optional:: flag_time_exist
3977 character(*), intent(out), optional:: time_name
3978 logical, intent(out), optional:: err
3979 end subroutine lookup_growable_url
3980 end interface
3981 interface
3982 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3983 use dc_types, only: dp
3984 character(*), intent(in) :: url ! 変数 URL
3985 character(*), intent(out), optional :: actual_url
3986 ! 正確な入出力範囲指定
3987 real(DP), intent(out), optional:: returned_time ! データの時刻
3988 character(*), intent(in), optional:: time_name ! 時刻次元の名称
3989 logical, intent(out), optional :: err ! エラーのフラグ
3990 end subroutine actual_iorange_dump
3991 end interface
3992 interface
3993 function file_rename_mpi( file ) result(result)
3994 use dc_types, only: string
3995 character(*), intent(in):: file
3996 character(STRING):: result
3997 end function file_rename_mpi
3998 end interface
3999 continue
4000 cause_c = ''
4001 stat = dc_noerr
4002 file_work = file
4003 array_shape = shape( array )
4004 array_allsize = size( array )
4005 ! ファイル名の変更 (MPI 用)
4006 ! Change filename (for MPI)
4007 !
4008 if ( present_and_true( flag_mpi_split ) ) &
4009 & file_work = file_rename_mpi( file_work )
4010 ! 最新時刻の URL 取得
4011 ! Get URL of latest time
4012 !
4013 call lookup_growable_url(file_work, varname, url, range, &
4014 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4015 if ( present_and_true(err) ) then
4016 stat = gt_enoturl
4017 cause_c = url
4018 goto 999
4019 end if
4020 ! ファイルオープン
4021 ! File open
4022 call open( var, url, err = err )
4023 if ( present_and_true(err) ) then
4024 stat = gt_enoturl
4025 cause_c = url
4026 goto 999
4027 end if
4028 !-------------------------------------------------------------------
4029 ! 配列形状のチェック
4030 ! Check array shape
4031 !-------------------------------------------------------------------
4032 ! 入力ファイル中のデータの次元数
4033 ! Get size of dimesions in data of an input file
4034 !
4035 call inquire( var = var, & ! (in)
4036 & rank = rank, alldims = alldims ) ! (out)
4037 ! 引数の次元数のチェック (縮退されている場合には減らす)
4038 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4039 array_rank = 4
4040 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4041 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4042 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4043 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4044 ! 次元数の比較
4045 ! Compare sizes of dimensions
4046 !
4047 if ( .not. 4 == rank .and. .not. array_rank == rank ) then
4048 if ( .not. present_and_true(quiet) ) then
4049 call messagenotify('W', subname, &
4050 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4051 & i = (/rank, 4/), c1 = trim(url) )
4052 end if
4053 stat = gt_erankmismatch
4054 cause_c = 'array'
4055 goto 999
4056 end if
4057 ! 入力ファイル中のデータの配列形状取得
4058 ! Get shape of data in an input file
4059 call inquire( var = var , dimord = 1, & ! (in)
4060 & allcount = allcount, err = inq_err ) ! (out)
4061 if ( .not. inq_err ) then
4062 data_shape(1) = allcount
4063 else
4064 data_shape(1) = 1
4065 end if
4066 call inquire( var = var , dimord = 2, & ! (in)
4067 & allcount = allcount, err = inq_err ) ! (out)
4068 if ( .not. inq_err ) then
4069 data_shape(2) = allcount
4070 else
4071 data_shape(2) = 1
4072 end if
4073 call inquire( var = var , dimord = 3, & ! (in)
4074 & allcount = allcount, err = inq_err ) ! (out)
4075 if ( .not. inq_err ) then
4076 data_shape(3) = allcount
4077 else
4078 data_shape(3) = 1
4079 end if
4080 call inquire( var = var , dimord = 4, & ! (in)
4081 & allcount = allcount, err = inq_err ) ! (out)
4082 if ( .not. inq_err ) then
4083 data_shape(4) = allcount
4084 else
4085 data_shape(4) = 1
4086 end if
4087 ! 引数の配列形状整形
4088 ! Arrange shape of an argument
4089 !
4090 array_shape_check = array_shape
4091 sd = 1
4092 do i = 1, 4 - 1
4093 if ( array_shape_check(sd) == 1 ) then
4094 array_shape_check(sd:4) = cshift( array_shape_check(sd:4), 1, 1 )
4095 else
4096 sd = sd + 1
4097 end if
4098 end do
4099 ! 配列形状の比較
4100 ! Compare shapes
4101 !
4102 if ( .not. all( array_shape_check == data_shape ) ) then
4103 if ( .not. present_and_true(quiet) ) then
4104 call messagenotify('W', subname, &
4105 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4106 & c1 = trim( url ), &
4107 & c2 = trim( tochar( data_shape(1:rank) ) ), &
4108 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4109 end if
4110 stat = gt_eargsizemismatch
4111 cause_c = 'array'
4112 goto 999
4113 end if
4114 !-------------------------------------
4115 ! データ取得
4116 ! Get data
4117 call inquire( var = var, & ! (in)
4118 & size = domain ) ! (out)
4119 if ( allocated( array_tmp ) ) deallocate( array_tmp )
4120 allocate( array_tmp(array_allsize) )
4121 call get( var, array_tmp, domain )
4122 array = reshape( array_tmp, array_shape )
4123 deallocate( array_tmp )
4124 call close( var )
4125 !-------------------------------------
4126 ! データファイル名と切り出し範囲の印字
4127 ! Print data filename and clipping range
4128 call actual_iorange_dump(url, & ! (in)
4129 & actual_url, returned_time, & ! (out) optional
4130 & time_name = tname, & ! (in) optional
4131 & err = err) ! (out) optional
4132 if ( .not. present_and_true(quiet) ) then
4133 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4134 end if
4135999 continue
4136 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint4pointer()

subroutine historygetint4pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6439 of file historyget.f90.

6441 use gtdata_types, only: gt_variable
6442 use gtdata_generic, only: open, inquire, close, get
6443 use dc_string, only: tochar
6445 use dc_types, only: string, dp
6446 use dc_message, only: messagenotify
6447 use dc_trace, only: dbgmessage
6448 ! MPI ライブラリ
6449 ! MPI library
6450 !
6451 use mpi
6452 implicit none
6453 character(*), intent(in):: file
6454 character(*), intent(in):: varname
6455 character(*), intent(in), optional:: range
6456 logical, intent(in), optional:: quiet
6457 logical, intent(in), optional:: flag_mpi_split
6458 real(DP), intent(out), optional:: returned_time ! データの時刻
6459 logical, intent(out), optional:: flag_time_exist
6460 logical, intent(out), optional:: err
6461 integer, pointer :: array(:,:,:,:) ! (out)
6462 type(GT_VARIABLE):: var
6463 character(STRING):: file_work, url, actual_url
6464 character(STRING):: tname
6465 character(*), parameter :: subname = "HistoryGetInt4Pointer"
6466 interface
6467 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6468 character(*), intent(in):: file
6469 character(*), intent(in):: varname
6470 character(*), intent(out):: url
6471 character(*), intent(in), optional:: range
6472 logical, intent(out), optional:: flag_time_exist
6473 character(*), intent(out), optional:: time_name
6474 logical, intent(out), optional:: err
6475 end subroutine lookup_growable_url
6476 end interface
6477 interface
6478 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6479 use dc_types, only: dp
6480 character(*), intent(in) :: url ! 変数 URL
6481 character(*), intent(out), optional :: actual_url
6482 ! 正確な入出力範囲指定
6483 real(DP), intent(out), optional:: returned_time ! データの時刻
6484 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6485 logical, intent(out), optional :: err ! エラーのフラグ
6486 end subroutine actual_iorange_dump
6487 end interface
6488 interface
6489 function file_rename_mpi( file ) result(result)
6490 use dc_types, only: string
6491 character(*), intent(in):: file
6492 character(STRING):: result
6493 end function file_rename_mpi
6494 end interface
6495 continue
6496 file_work = file
6497 ! ファイル名の変更 (MPI 用)
6498 ! Change filename (for MPI)
6499 !
6500 if ( present_and_true( flag_mpi_split ) ) &
6501 & file_work = file_rename_mpi( file_work )
6502 ! 必要な情報を gtool 変数化
6503 !
6504 call lookup_growable_url(file_work, varname, url, range, &
6505 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6506 call dbgmessage('@ url =%c', c1=trim(url))
6507 ! いよいよデータ取得
6508 !
6509 call open(var, url, err)
6510 call get(var, array, err)
6511 call close(var, err)
6512 call actual_iorange_dump(url, & ! (in)
6513 & actual_url, returned_time, & ! (out) optional
6514 & time_name = tname, & ! (in) optional
6515 & err = err) ! (out) optional
6516 if ( .not. present_and_true(quiet) ) then
6517 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6518 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint4pointertimed()

subroutine historygetint4pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14031 of file historyget.f90.

14034 use dc_string, only: tochar, split
14035 use dc_types, only: string, dp
14036 use dc_trace, only: dbgmessage
14037 use dc_url, only: url_chop_iorange, gt_equal
14038 use dc_present, only: present_and_true
14039 ! MPI ライブラリ
14040 ! MPI library
14041 !
14042 use mpi
14043 implicit none
14044 character(*), intent(in):: file, varname
14045 real(DP), intent(in):: time
14046 logical, intent(in), optional:: quiet
14047 integer, pointer :: array(:,:,:,:)
14048 logical, intent(in), optional:: flag_mpi_split
14049 real(DP), intent(out), optional:: returned_time
14050 logical, intent(out), optional:: flag_time_exist
14051 logical, intent(out), optional:: err
14052 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14053 character(STRING), pointer:: carray (:)
14054 character(STRING):: tname
14055 interface
14056 subroutine historygetint4pointer(&
14057 & file, varname, array, range, quiet, &
14058 & flag_mpi_split, returned_time, flag_time_exist, err)
14059 use dc_types, only: dp
14060 character(*), intent(in):: file
14061 character(*), intent(in):: varname
14062 character(*), intent(in), optional:: range
14063 logical, intent(in), optional:: quiet
14064 logical, intent(in), optional:: flag_mpi_split
14065 real(DP), intent(out), optional:: returned_time
14066 logical, intent(out), optional:: flag_time_exist
14067 logical, intent(out), optional:: err
14068 integer, pointer :: array(:,:,:,:)
14069 end subroutine historygetint4pointer
14070 end interface
14071 interface
14072 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14073 character(*), intent(in):: file
14074 character(*), intent(in):: varname
14075 character(*), intent(out):: url
14076 character(*), intent(in), optional:: range
14077 logical, intent(out), optional:: flag_time_exist
14078 character(*), intent(out), optional:: time_name
14079 logical, intent(out), optional:: err
14080 end subroutine lookup_growable_url
14081 end interface
14082 interface
14083 function file_rename_mpi( file ) result(result)
14084 use dc_types, only: string
14085 character(*), intent(in):: file
14086 character(STRING):: result
14087 end function file_rename_mpi
14088 end interface
14089 continue
14090 file_work = file
14091 if ( present_and_true( flag_mpi_split ) ) &
14092 & file_work = file_rename_mpi( file_work )
14093 call lookup_growable_url(file = file_work, varname = varname, &
14094 & url = url, &
14095 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14096 call url_chop_iorange( &
14097 & fullname = url, iorange = iorange, remainder = remainder )
14098 call split( str = iorange, carray = carray, sep = gt_equal )
14099 timevar_name = carray(1)
14100 deallocate( carray )
14101 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14102 call historygetint4pointer( file = file, &
14103 & varname = varname, array = array, &
14104 & range = time_range, quiet = quiet, &
14105 & flag_mpi_split = flag_mpi_split, &
14106 & returned_time = returned_time, &
14107 & flag_time_exist = flag_time_exist, &
14108 & err = err )
subroutine historygetint4pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint4pointertimei()

subroutine historygetint4pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17823 of file historyget.f90.

17826 use dc_string, only: tochar, split
17827 use dc_types, only: string, dp
17828 use dc_trace, only: dbgmessage
17829 use dc_url, only: url_chop_iorange, gt_equal
17830 use dc_present, only: present_and_true
17831 ! MPI ライブラリ
17832 ! MPI library
17833 !
17834 use mpi
17835 implicit none
17836 character(*), intent(in):: file, varname
17837 integer, intent(in):: time
17838 logical, intent(in), optional:: quiet
17839 integer, pointer :: array(:,:,:,:)
17840 logical, intent(in), optional:: flag_mpi_split
17841 real(DP), intent(out), optional:: returned_time
17842 logical, intent(out), optional:: flag_time_exist
17843 logical, intent(out), optional:: err
17844 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17845 character(STRING), pointer:: carray (:)
17846 character(STRING):: tname
17847 interface
17848 subroutine historygetint4pointer(&
17849 & file, varname, array, range, quiet, &
17850 & flag_mpi_split, returned_time, flag_time_exist, err)
17851 use dc_types, only: dp
17852 character(*), intent(in):: file
17853 character(*), intent(in):: varname
17854 character(*), intent(in), optional:: range
17855 logical, intent(in), optional:: quiet
17856 logical, intent(in), optional:: flag_mpi_split
17857 real(DP), intent(out), optional:: returned_time
17858 logical, intent(out), optional:: flag_time_exist
17859 logical, intent(out), optional:: err
17860 integer, pointer :: array(:,:,:,:)
17861 end subroutine historygetint4pointer
17862 end interface
17863 interface
17864 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17865 character(*), intent(in):: file
17866 character(*), intent(in):: varname
17867 character(*), intent(out):: url
17868 character(*), intent(in), optional:: range
17869 logical, intent(out), optional:: flag_time_exist
17870 character(*), intent(out), optional:: time_name
17871 logical, intent(out), optional:: err
17872 end subroutine lookup_growable_url
17873 end interface
17874 interface
17875 function file_rename_mpi( file ) result(result)
17876 use dc_types, only: string
17877 character(*), intent(in):: file
17878 character(STRING):: result
17879 end function file_rename_mpi
17880 end interface
17881 continue
17882 file_work = file
17883 if ( present_and_true( flag_mpi_split ) ) &
17884 & file_work = file_rename_mpi( file_work )
17885 call lookup_growable_url(file = file_work, varname = varname, &
17886 & url = url, &
17887 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17888 call url_chop_iorange( &
17889 & fullname = url, iorange = iorange, remainder = remainder )
17890 call split( str = iorange, carray = carray, sep = gt_equal )
17891 timevar_name = carray(1)
17892 deallocate( carray )
17893 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17894 call historygetint4pointer( file = file, &
17895 & varname = varname, array = array, &
17896 & range = time_range, quiet = quiet, &
17897 & flag_mpi_split = flag_mpi_split, &
17898 & returned_time = returned_time, &
17899 & flag_time_exist = flag_time_exist, &
17900 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint4pointertimer()

subroutine historygetint4pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10239 of file historyget.f90.

10242 use dc_string, only: tochar, split
10243 use dc_types, only: string, dp, sp
10244 use dc_trace, only: dbgmessage
10245 use dc_url, only: url_chop_iorange, gt_equal
10246 use dc_present, only: present_and_true
10247 ! MPI ライブラリ
10248 ! MPI library
10249 !
10250 use mpi
10251 implicit none
10252 character(*), intent(in):: file, varname
10253 real(SP), intent(in):: time
10254 logical, intent(in), optional:: quiet
10255 integer, pointer :: array(:,:,:,:)
10256 logical, intent(in), optional:: flag_mpi_split
10257 real(DP), intent(out), optional:: returned_time
10258 logical, intent(out), optional:: flag_time_exist
10259 logical, intent(out), optional:: err
10260 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10261 character(STRING), pointer:: carray (:)
10262 character(STRING):: tname
10263 interface
10264 subroutine historygetint4pointer(&
10265 & file, varname, array, range, quiet, &
10266 & flag_mpi_split, returned_time, flag_time_exist, err)
10267 use dc_types, only: dp
10268 character(*), intent(in):: file
10269 character(*), intent(in):: varname
10270 character(*), intent(in), optional:: range
10271 logical, intent(in), optional:: quiet
10272 logical, intent(in), optional:: flag_mpi_split
10273 real(DP), intent(out), optional:: returned_time
10274 logical, intent(out), optional:: flag_time_exist
10275 logical, intent(out), optional:: err
10276 integer, pointer :: array(:,:,:,:)
10277 end subroutine historygetint4pointer
10278 end interface
10279 interface
10280 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10281 character(*), intent(in):: file
10282 character(*), intent(in):: varname
10283 character(*), intent(out):: url
10284 character(*), intent(in), optional:: range
10285 logical, intent(out), optional:: flag_time_exist
10286 character(*), intent(out), optional:: time_name
10287 logical, intent(out), optional:: err
10288 end subroutine lookup_growable_url
10289 end interface
10290 interface
10291 function file_rename_mpi( file ) result(result)
10292 use dc_types, only: string
10293 character(*), intent(in):: file
10294 character(STRING):: result
10295 end function file_rename_mpi
10296 end interface
10297 continue
10298 file_work = file
10299 if ( present_and_true( flag_mpi_split ) ) &
10300 & file_work = file_rename_mpi( file_work )
10301 call lookup_growable_url(file = file_work, varname = varname, &
10302 & url = url, &
10303 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10304 call url_chop_iorange( &
10305 & fullname = url, iorange = iorange, remainder = remainder )
10306 call split( str = iorange, carray = carray, sep = gt_equal )
10307 timevar_name = carray(1)
10308 deallocate( carray )
10309 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10310 call historygetint4pointer( file = file, &
10311 & varname = varname, array = array, &
10312 & range = time_range, quiet = quiet, &
10313 & flag_mpi_split = flag_mpi_split, &
10314 & returned_time = returned_time, &
10315 & flag_time_exist = flag_time_exist, &
10316 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint4timed()

subroutine historygetint4timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13399 of file historyget.f90.

13402 use dc_string, only: tochar, split
13403 use dc_types, only: string, dp
13404 use dc_trace, only: dbgmessage
13405 use dc_url, only: url_chop_iorange, gt_equal
13406 use dc_present, only: present_and_true
13407 ! MPI ライブラリ
13408 ! MPI library
13409 !
13410 use mpi
13411 implicit none
13412 character(*), intent(in):: file, varname
13413 real(DP), intent(in):: time
13414 logical, intent(in), optional:: quiet
13415 integer, intent(out) :: array(:,:,:,:)
13416 logical, intent(in), optional:: flag_mpi_split
13417 real(DP), intent(out), optional:: returned_time
13418 logical, intent(out), optional:: flag_time_exist
13419 logical, intent(out), optional:: err
13420 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13421 character(STRING), pointer:: carray (:)
13422 character(STRING):: tname
13423 interface
13424 subroutine historygetint4(&
13425 & file, varname, array, range, quiet, &
13426 & flag_mpi_split, returned_time, flag_time_exist, err)
13427 use dc_types, only: dp
13428 character(*), intent(in):: file
13429 character(*), intent(in):: varname
13430 character(*), intent(in), optional:: range
13431 logical, intent(in), optional:: quiet
13432 logical, intent(in), optional:: flag_mpi_split
13433 real(DP), intent(out), optional:: returned_time
13434 logical, intent(out), optional:: flag_time_exist
13435 logical, intent(out), optional:: err
13436 integer, intent(out) :: array(:,:,:,:)
13437 end subroutine historygetint4
13438 end interface
13439 interface
13440 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13441 character(*), intent(in):: file
13442 character(*), intent(in):: varname
13443 character(*), intent(out):: url
13444 character(*), intent(in), optional:: range
13445 logical, intent(out), optional:: flag_time_exist
13446 character(*), intent(out), optional:: time_name
13447 logical, intent(out), optional:: err
13448 end subroutine lookup_growable_url
13449 end interface
13450 interface
13451 function file_rename_mpi( file ) result(result)
13452 use dc_types, only: string
13453 character(*), intent(in):: file
13454 character(STRING):: result
13455 end function file_rename_mpi
13456 end interface
13457 continue
13458 file_work = file
13459 if ( present_and_true( flag_mpi_split ) ) &
13460 & file_work = file_rename_mpi( file_work )
13461 call lookup_growable_url(file = file_work, varname = varname, &
13462 & url = url, &
13463 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13464 call url_chop_iorange( &
13465 & fullname = url, iorange = iorange, remainder = remainder )
13466 call split( str = iorange, carray = carray, sep = gt_equal )
13467 timevar_name = carray(1)
13468 deallocate( carray )
13469 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13470 call historygetint4( file = file, &
13471 & varname = varname, array = array, &
13472 & range = time_range, quiet = quiet, &
13473 & flag_mpi_split = flag_mpi_split, &
13474 & returned_time = returned_time, &
13475 & flag_time_exist = flag_time_exist, &
13476 & err = err )
subroutine historygetint4(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint4timei()

subroutine historygetint4timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17191 of file historyget.f90.

17194 use dc_string, only: tochar, split
17195 use dc_types, only: string, dp
17196 use dc_trace, only: dbgmessage
17197 use dc_url, only: url_chop_iorange, gt_equal
17198 use dc_present, only: present_and_true
17199 ! MPI ライブラリ
17200 ! MPI library
17201 !
17202 use mpi
17203 implicit none
17204 character(*), intent(in):: file, varname
17205 integer, intent(in):: time
17206 logical, intent(in), optional:: quiet
17207 integer, intent(out) :: array(:,:,:,:)
17208 logical, intent(in), optional:: flag_mpi_split
17209 real(DP), intent(out), optional:: returned_time
17210 logical, intent(out), optional:: flag_time_exist
17211 logical, intent(out), optional:: err
17212 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17213 character(STRING), pointer:: carray (:)
17214 character(STRING):: tname
17215 interface
17216 subroutine historygetint4(&
17217 & file, varname, array, range, quiet, &
17218 & flag_mpi_split, returned_time, flag_time_exist, err)
17219 use dc_types, only: dp
17220 character(*), intent(in):: file
17221 character(*), intent(in):: varname
17222 character(*), intent(in), optional:: range
17223 logical, intent(in), optional:: quiet
17224 logical, intent(in), optional:: flag_mpi_split
17225 real(DP), intent(out), optional:: returned_time
17226 logical, intent(out), optional:: flag_time_exist
17227 logical, intent(out), optional:: err
17228 integer, intent(out) :: array(:,:,:,:)
17229 end subroutine historygetint4
17230 end interface
17231 interface
17232 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17233 character(*), intent(in):: file
17234 character(*), intent(in):: varname
17235 character(*), intent(out):: url
17236 character(*), intent(in), optional:: range
17237 logical, intent(out), optional:: flag_time_exist
17238 character(*), intent(out), optional:: time_name
17239 logical, intent(out), optional:: err
17240 end subroutine lookup_growable_url
17241 end interface
17242 interface
17243 function file_rename_mpi( file ) result(result)
17244 use dc_types, only: string
17245 character(*), intent(in):: file
17246 character(STRING):: result
17247 end function file_rename_mpi
17248 end interface
17249 continue
17250 file_work = file
17251 if ( present_and_true( flag_mpi_split ) ) &
17252 & file_work = file_rename_mpi( file_work )
17253 call lookup_growable_url(file = file_work, varname = varname, &
17254 & url = url, &
17255 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17256 call url_chop_iorange( &
17257 & fullname = url, iorange = iorange, remainder = remainder )
17258 call split( str = iorange, carray = carray, sep = gt_equal )
17259 timevar_name = carray(1)
17260 deallocate( carray )
17261 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17262 call historygetint4( file = file, &
17263 & varname = varname, array = array, &
17264 & range = time_range, quiet = quiet, &
17265 & flag_mpi_split = flag_mpi_split, &
17266 & returned_time = returned_time, &
17267 & flag_time_exist = flag_time_exist, &
17268 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint4timer()

subroutine historygetint4timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9607 of file historyget.f90.

9610 use dc_string, only: tochar, split
9611 use dc_types, only: string, dp, sp
9612 use dc_trace, only: dbgmessage
9613 use dc_url, only: url_chop_iorange, gt_equal
9614 use dc_present, only: present_and_true
9615 ! MPI ライブラリ
9616 ! MPI library
9617 !
9618 use mpi
9619 implicit none
9620 character(*), intent(in):: file, varname
9621 real(SP), intent(in):: time
9622 logical, intent(in), optional:: quiet
9623 integer, intent(out) :: array(:,:,:,:)
9624 logical, intent(in), optional:: flag_mpi_split
9625 real(DP), intent(out), optional:: returned_time
9626 logical, intent(out), optional:: flag_time_exist
9627 logical, intent(out), optional:: err
9628 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9629 character(STRING), pointer:: carray (:)
9630 character(STRING):: tname
9631 interface
9632 subroutine historygetint4(&
9633 & file, varname, array, range, quiet, &
9634 & flag_mpi_split, returned_time, flag_time_exist, err)
9635 use dc_types, only: dp
9636 character(*), intent(in):: file
9637 character(*), intent(in):: varname
9638 character(*), intent(in), optional:: range
9639 logical, intent(in), optional:: quiet
9640 logical, intent(in), optional:: flag_mpi_split
9641 real(DP), intent(out), optional:: returned_time
9642 logical, intent(out), optional:: flag_time_exist
9643 logical, intent(out), optional:: err
9644 integer, intent(out) :: array(:,:,:,:)
9645 end subroutine historygetint4
9646 end interface
9647 interface
9648 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9649 character(*), intent(in):: file
9650 character(*), intent(in):: varname
9651 character(*), intent(out):: url
9652 character(*), intent(in), optional:: range
9653 logical, intent(out), optional:: flag_time_exist
9654 character(*), intent(out), optional:: time_name
9655 logical, intent(out), optional:: err
9656 end subroutine lookup_growable_url
9657 end interface
9658 interface
9659 function file_rename_mpi( file ) result(result)
9660 use dc_types, only: string
9661 character(*), intent(in):: file
9662 character(STRING):: result
9663 end function file_rename_mpi
9664 end interface
9665 continue
9666 file_work = file
9667 if ( present_and_true( flag_mpi_split ) ) &
9668 & file_work = file_rename_mpi( file_work )
9669 call lookup_growable_url(file = file_work, varname = varname, &
9670 & url = url, &
9671 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9672 call url_chop_iorange( &
9673 & fullname = url, iorange = iorange, remainder = remainder )
9674 call split( str = iorange, carray = carray, sep = gt_equal )
9675 timevar_name = carray(1)
9676 deallocate( carray )
9677 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9678 call historygetint4( file = file, &
9679 & varname = varname, array = array, &
9680 & range = time_range, quiet = quiet, &
9681 & flag_mpi_split = flag_mpi_split, &
9682 & returned_time = returned_time, &
9683 & flag_time_exist = flag_time_exist, &
9684 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint5()

subroutine historygetint5 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 4138 of file historyget.f90.

4140 use gtdata_types, only: gt_variable
4141 use gtdata_generic, only: open, inquire, close, get
4142 use dc_string, only: tochar
4144 use dc_regex, only: match
4145 use dc_types, only: string, dp
4146 use dc_message, only: messagenotify
4149 ! MPI ライブラリ
4150 ! MPI library
4151 use mpi
4152 implicit none
4153 character(*), intent(in):: file
4154 character(*), intent(in):: varname
4155 character(*), intent(in), optional:: range
4156 logical, intent(in), optional:: quiet
4157 logical, intent(in), optional:: flag_mpi_split
4158 real(DP), intent(out), optional:: returned_time ! データの時刻
4159 logical, intent(out), optional:: flag_time_exist
4160 logical, intent(out), optional:: err
4161 integer, intent(out) :: array(:,:,:,:,:)
4162 integer, allocatable :: array_tmp(:)
4163 integer:: array_allsize
4164 integer:: array_shape(5), data_shape(5), array_shape_check(5)
4165 integer:: allcount
4166 integer:: i, sd
4167 logical:: inq_err
4168 type(GT_VARIABLE):: var
4169 character(STRING):: file_work, url, actual_url
4170 integer:: rank, alldims, array_rank
4171 integer:: domain
4172 character(STRING):: tname
4173 integer:: stat
4174 character(STRING):: cause_c
4175 character(*), parameter :: subname = "HistoryGetInt5"
4176 interface
4177 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4178 character(*), intent(in):: file
4179 character(*), intent(in):: varname
4180 character(*), intent(out):: url
4181 character(*), intent(in), optional:: range
4182 logical, intent(out), optional:: flag_time_exist
4183 character(*), intent(out), optional:: time_name
4184 logical, intent(out), optional:: err
4185 end subroutine lookup_growable_url
4186 end interface
4187 interface
4188 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4189 use dc_types, only: dp
4190 character(*), intent(in) :: url ! 変数 URL
4191 character(*), intent(out), optional :: actual_url
4192 ! 正確な入出力範囲指定
4193 real(DP), intent(out), optional:: returned_time ! データの時刻
4194 character(*), intent(in), optional:: time_name ! 時刻次元の名称
4195 logical, intent(out), optional :: err ! エラーのフラグ
4196 end subroutine actual_iorange_dump
4197 end interface
4198 interface
4199 function file_rename_mpi( file ) result(result)
4200 use dc_types, only: string
4201 character(*), intent(in):: file
4202 character(STRING):: result
4203 end function file_rename_mpi
4204 end interface
4205 continue
4206 cause_c = ''
4207 stat = dc_noerr
4208 file_work = file
4209 array_shape = shape( array )
4210 array_allsize = size( array )
4211 ! ファイル名の変更 (MPI 用)
4212 ! Change filename (for MPI)
4213 !
4214 if ( present_and_true( flag_mpi_split ) ) &
4215 & file_work = file_rename_mpi( file_work )
4216 ! 最新時刻の URL 取得
4217 ! Get URL of latest time
4218 !
4219 call lookup_growable_url(file_work, varname, url, range, &
4220 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4221 if ( present_and_true(err) ) then
4222 stat = gt_enoturl
4223 cause_c = url
4224 goto 999
4225 end if
4226 ! ファイルオープン
4227 ! File open
4228 call open( var, url, err = err )
4229 if ( present_and_true(err) ) then
4230 stat = gt_enoturl
4231 cause_c = url
4232 goto 999
4233 end if
4234 !-------------------------------------------------------------------
4235 ! 配列形状のチェック
4236 ! Check array shape
4237 !-------------------------------------------------------------------
4238 ! 入力ファイル中のデータの次元数
4239 ! Get size of dimesions in data of an input file
4240 !
4241 call inquire( var = var, & ! (in)
4242 & rank = rank, alldims = alldims ) ! (out)
4243 ! 引数の次元数のチェック (縮退されている場合には減らす)
4244 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4245 array_rank = 5
4246 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4247 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4248 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4249 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4250 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
4251 ! 次元数の比較
4252 ! Compare sizes of dimensions
4253 !
4254 if ( .not. 5 == rank .and. .not. array_rank == rank ) then
4255 if ( .not. present_and_true(quiet) ) then
4256 call messagenotify('W', subname, &
4257 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4258 & i = (/rank, 5/), c1 = trim(url) )
4259 end if
4260 stat = gt_erankmismatch
4261 cause_c = 'array'
4262 goto 999
4263 end if
4264 ! 入力ファイル中のデータの配列形状取得
4265 ! Get shape of data in an input file
4266 call inquire( var = var , dimord = 1, & ! (in)
4267 & allcount = allcount, err = inq_err ) ! (out)
4268 if ( .not. inq_err ) then
4269 data_shape(1) = allcount
4270 else
4271 data_shape(1) = 1
4272 end if
4273 call inquire( var = var , dimord = 2, & ! (in)
4274 & allcount = allcount, err = inq_err ) ! (out)
4275 if ( .not. inq_err ) then
4276 data_shape(2) = allcount
4277 else
4278 data_shape(2) = 1
4279 end if
4280 call inquire( var = var , dimord = 3, & ! (in)
4281 & allcount = allcount, err = inq_err ) ! (out)
4282 if ( .not. inq_err ) then
4283 data_shape(3) = allcount
4284 else
4285 data_shape(3) = 1
4286 end if
4287 call inquire( var = var , dimord = 4, & ! (in)
4288 & allcount = allcount, err = inq_err ) ! (out)
4289 if ( .not. inq_err ) then
4290 data_shape(4) = allcount
4291 else
4292 data_shape(4) = 1
4293 end if
4294 call inquire( var = var , dimord = 5, & ! (in)
4295 & allcount = allcount, err = inq_err ) ! (out)
4296 if ( .not. inq_err ) then
4297 data_shape(5) = allcount
4298 else
4299 data_shape(5) = 1
4300 end if
4301 ! 引数の配列形状整形
4302 ! Arrange shape of an argument
4303 !
4304 array_shape_check = array_shape
4305 sd = 1
4306 do i = 1, 5 - 1
4307 if ( array_shape_check(sd) == 1 ) then
4308 array_shape_check(sd:5) = cshift( array_shape_check(sd:5), 1, 1 )
4309 else
4310 sd = sd + 1
4311 end if
4312 end do
4313 ! 配列形状の比較
4314 ! Compare shapes
4315 !
4316 if ( .not. all( array_shape_check == data_shape ) ) then
4317 if ( .not. present_and_true(quiet) ) then
4318 call messagenotify('W', subname, &
4319 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4320 & c1 = trim( url ), &
4321 & c2 = trim( tochar( data_shape(1:rank) ) ), &
4322 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4323 end if
4324 stat = gt_eargsizemismatch
4325 cause_c = 'array'
4326 goto 999
4327 end if
4328 !-------------------------------------
4329 ! データ取得
4330 ! Get data
4331 call inquire( var = var, & ! (in)
4332 & size = domain ) ! (out)
4333 if ( allocated( array_tmp ) ) deallocate( array_tmp )
4334 allocate( array_tmp(array_allsize) )
4335 call get( var, array_tmp, domain )
4336 array = reshape( array_tmp, array_shape )
4337 deallocate( array_tmp )
4338 call close( var )
4339 !-------------------------------------
4340 ! データファイル名と切り出し範囲の印字
4341 ! Print data filename and clipping range
4342 call actual_iorange_dump(url, & ! (in)
4343 & actual_url, returned_time, & ! (out) optional
4344 & time_name = tname, & ! (in) optional
4345 & err = err) ! (out) optional
4346 if ( .not. present_and_true(quiet) ) then
4347 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4348 end if
4349999 continue
4350 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint5pointer()

subroutine historygetint5pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6520 of file historyget.f90.

6522 use gtdata_types, only: gt_variable
6523 use gtdata_generic, only: open, inquire, close, get
6524 use dc_string, only: tochar
6526 use dc_types, only: string, dp
6527 use dc_message, only: messagenotify
6528 use dc_trace, only: dbgmessage
6529 ! MPI ライブラリ
6530 ! MPI library
6531 !
6532 use mpi
6533 implicit none
6534 character(*), intent(in):: file
6535 character(*), intent(in):: varname
6536 character(*), intent(in), optional:: range
6537 logical, intent(in), optional:: quiet
6538 logical, intent(in), optional:: flag_mpi_split
6539 real(DP), intent(out), optional:: returned_time ! データの時刻
6540 logical, intent(out), optional:: flag_time_exist
6541 logical, intent(out), optional:: err
6542 integer, pointer :: array(:,:,:,:,:) ! (out)
6543 type(GT_VARIABLE):: var
6544 character(STRING):: file_work, url, actual_url
6545 character(STRING):: tname
6546 character(*), parameter :: subname = "HistoryGetInt5Pointer"
6547 interface
6548 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6549 character(*), intent(in):: file
6550 character(*), intent(in):: varname
6551 character(*), intent(out):: url
6552 character(*), intent(in), optional:: range
6553 logical, intent(out), optional:: flag_time_exist
6554 character(*), intent(out), optional:: time_name
6555 logical, intent(out), optional:: err
6556 end subroutine lookup_growable_url
6557 end interface
6558 interface
6559 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6560 use dc_types, only: dp
6561 character(*), intent(in) :: url ! 変数 URL
6562 character(*), intent(out), optional :: actual_url
6563 ! 正確な入出力範囲指定
6564 real(DP), intent(out), optional:: returned_time ! データの時刻
6565 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6566 logical, intent(out), optional :: err ! エラーのフラグ
6567 end subroutine actual_iorange_dump
6568 end interface
6569 interface
6570 function file_rename_mpi( file ) result(result)
6571 use dc_types, only: string
6572 character(*), intent(in):: file
6573 character(STRING):: result
6574 end function file_rename_mpi
6575 end interface
6576 continue
6577 file_work = file
6578 ! ファイル名の変更 (MPI 用)
6579 ! Change filename (for MPI)
6580 !
6581 if ( present_and_true( flag_mpi_split ) ) &
6582 & file_work = file_rename_mpi( file_work )
6583 ! 必要な情報を gtool 変数化
6584 !
6585 call lookup_growable_url(file_work, varname, url, range, &
6586 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6587 call dbgmessage('@ url =%c', c1=trim(url))
6588 ! いよいよデータ取得
6589 !
6590 call open(var, url, err)
6591 call get(var, array, err)
6592 call close(var, err)
6593 call actual_iorange_dump(url, & ! (in)
6594 & actual_url, returned_time, & ! (out) optional
6595 & time_name = tname, & ! (in) optional
6596 & err = err) ! (out) optional
6597 if ( .not. present_and_true(quiet) ) then
6598 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6599 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint5pointertimed()

subroutine historygetint5pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14110 of file historyget.f90.

14113 use dc_string, only: tochar, split
14114 use dc_types, only: string, dp
14115 use dc_trace, only: dbgmessage
14116 use dc_url, only: url_chop_iorange, gt_equal
14117 use dc_present, only: present_and_true
14118 ! MPI ライブラリ
14119 ! MPI library
14120 !
14121 use mpi
14122 implicit none
14123 character(*), intent(in):: file, varname
14124 real(DP), intent(in):: time
14125 logical, intent(in), optional:: quiet
14126 integer, pointer :: array(:,:,:,:,:)
14127 logical, intent(in), optional:: flag_mpi_split
14128 real(DP), intent(out), optional:: returned_time
14129 logical, intent(out), optional:: flag_time_exist
14130 logical, intent(out), optional:: err
14131 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14132 character(STRING), pointer:: carray (:)
14133 character(STRING):: tname
14134 interface
14135 subroutine historygetint5pointer(&
14136 & file, varname, array, range, quiet, &
14137 & flag_mpi_split, returned_time, flag_time_exist, err)
14138 use dc_types, only: dp
14139 character(*), intent(in):: file
14140 character(*), intent(in):: varname
14141 character(*), intent(in), optional:: range
14142 logical, intent(in), optional:: quiet
14143 logical, intent(in), optional:: flag_mpi_split
14144 real(DP), intent(out), optional:: returned_time
14145 logical, intent(out), optional:: flag_time_exist
14146 logical, intent(out), optional:: err
14147 integer, pointer :: array(:,:,:,:,:)
14148 end subroutine historygetint5pointer
14149 end interface
14150 interface
14151 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14152 character(*), intent(in):: file
14153 character(*), intent(in):: varname
14154 character(*), intent(out):: url
14155 character(*), intent(in), optional:: range
14156 logical, intent(out), optional:: flag_time_exist
14157 character(*), intent(out), optional:: time_name
14158 logical, intent(out), optional:: err
14159 end subroutine lookup_growable_url
14160 end interface
14161 interface
14162 function file_rename_mpi( file ) result(result)
14163 use dc_types, only: string
14164 character(*), intent(in):: file
14165 character(STRING):: result
14166 end function file_rename_mpi
14167 end interface
14168 continue
14169 file_work = file
14170 if ( present_and_true( flag_mpi_split ) ) &
14171 & file_work = file_rename_mpi( file_work )
14172 call lookup_growable_url(file = file_work, varname = varname, &
14173 & url = url, &
14174 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14175 call url_chop_iorange( &
14176 & fullname = url, iorange = iorange, remainder = remainder )
14177 call split( str = iorange, carray = carray, sep = gt_equal )
14178 timevar_name = carray(1)
14179 deallocate( carray )
14180 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14181 call historygetint5pointer( file = file, &
14182 & varname = varname, array = array, &
14183 & range = time_range, quiet = quiet, &
14184 & flag_mpi_split = flag_mpi_split, &
14185 & returned_time = returned_time, &
14186 & flag_time_exist = flag_time_exist, &
14187 & err = err )
subroutine historygetint5pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint5pointertimei()

subroutine historygetint5pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17902 of file historyget.f90.

17905 use dc_string, only: tochar, split
17906 use dc_types, only: string, dp
17907 use dc_trace, only: dbgmessage
17908 use dc_url, only: url_chop_iorange, gt_equal
17909 use dc_present, only: present_and_true
17910 ! MPI ライブラリ
17911 ! MPI library
17912 !
17913 use mpi
17914 implicit none
17915 character(*), intent(in):: file, varname
17916 integer, intent(in):: time
17917 logical, intent(in), optional:: quiet
17918 integer, pointer :: array(:,:,:,:,:)
17919 logical, intent(in), optional:: flag_mpi_split
17920 real(DP), intent(out), optional:: returned_time
17921 logical, intent(out), optional:: flag_time_exist
17922 logical, intent(out), optional:: err
17923 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17924 character(STRING), pointer:: carray (:)
17925 character(STRING):: tname
17926 interface
17927 subroutine historygetint5pointer(&
17928 & file, varname, array, range, quiet, &
17929 & flag_mpi_split, returned_time, flag_time_exist, err)
17930 use dc_types, only: dp
17931 character(*), intent(in):: file
17932 character(*), intent(in):: varname
17933 character(*), intent(in), optional:: range
17934 logical, intent(in), optional:: quiet
17935 logical, intent(in), optional:: flag_mpi_split
17936 real(DP), intent(out), optional:: returned_time
17937 logical, intent(out), optional:: flag_time_exist
17938 logical, intent(out), optional:: err
17939 integer, pointer :: array(:,:,:,:,:)
17940 end subroutine historygetint5pointer
17941 end interface
17942 interface
17943 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17944 character(*), intent(in):: file
17945 character(*), intent(in):: varname
17946 character(*), intent(out):: url
17947 character(*), intent(in), optional:: range
17948 logical, intent(out), optional:: flag_time_exist
17949 character(*), intent(out), optional:: time_name
17950 logical, intent(out), optional:: err
17951 end subroutine lookup_growable_url
17952 end interface
17953 interface
17954 function file_rename_mpi( file ) result(result)
17955 use dc_types, only: string
17956 character(*), intent(in):: file
17957 character(STRING):: result
17958 end function file_rename_mpi
17959 end interface
17960 continue
17961 file_work = file
17962 if ( present_and_true( flag_mpi_split ) ) &
17963 & file_work = file_rename_mpi( file_work )
17964 call lookup_growable_url(file = file_work, varname = varname, &
17965 & url = url, &
17966 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17967 call url_chop_iorange( &
17968 & fullname = url, iorange = iorange, remainder = remainder )
17969 call split( str = iorange, carray = carray, sep = gt_equal )
17970 timevar_name = carray(1)
17971 deallocate( carray )
17972 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17973 call historygetint5pointer( file = file, &
17974 & varname = varname, array = array, &
17975 & range = time_range, quiet = quiet, &
17976 & flag_mpi_split = flag_mpi_split, &
17977 & returned_time = returned_time, &
17978 & flag_time_exist = flag_time_exist, &
17979 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint5pointertimer()

subroutine historygetint5pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10318 of file historyget.f90.

10321 use dc_string, only: tochar, split
10322 use dc_types, only: string, dp, sp
10323 use dc_trace, only: dbgmessage
10324 use dc_url, only: url_chop_iorange, gt_equal
10325 use dc_present, only: present_and_true
10326 ! MPI ライブラリ
10327 ! MPI library
10328 !
10329 use mpi
10330 implicit none
10331 character(*), intent(in):: file, varname
10332 real(SP), intent(in):: time
10333 logical, intent(in), optional:: quiet
10334 integer, pointer :: array(:,:,:,:,:)
10335 logical, intent(in), optional:: flag_mpi_split
10336 real(DP), intent(out), optional:: returned_time
10337 logical, intent(out), optional:: flag_time_exist
10338 logical, intent(out), optional:: err
10339 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10340 character(STRING), pointer:: carray (:)
10341 character(STRING):: tname
10342 interface
10343 subroutine historygetint5pointer(&
10344 & file, varname, array, range, quiet, &
10345 & flag_mpi_split, returned_time, flag_time_exist, err)
10346 use dc_types, only: dp
10347 character(*), intent(in):: file
10348 character(*), intent(in):: varname
10349 character(*), intent(in), optional:: range
10350 logical, intent(in), optional:: quiet
10351 logical, intent(in), optional:: flag_mpi_split
10352 real(DP), intent(out), optional:: returned_time
10353 logical, intent(out), optional:: flag_time_exist
10354 logical, intent(out), optional:: err
10355 integer, pointer :: array(:,:,:,:,:)
10356 end subroutine historygetint5pointer
10357 end interface
10358 interface
10359 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10360 character(*), intent(in):: file
10361 character(*), intent(in):: varname
10362 character(*), intent(out):: url
10363 character(*), intent(in), optional:: range
10364 logical, intent(out), optional:: flag_time_exist
10365 character(*), intent(out), optional:: time_name
10366 logical, intent(out), optional:: err
10367 end subroutine lookup_growable_url
10368 end interface
10369 interface
10370 function file_rename_mpi( file ) result(result)
10371 use dc_types, only: string
10372 character(*), intent(in):: file
10373 character(STRING):: result
10374 end function file_rename_mpi
10375 end interface
10376 continue
10377 file_work = file
10378 if ( present_and_true( flag_mpi_split ) ) &
10379 & file_work = file_rename_mpi( file_work )
10380 call lookup_growable_url(file = file_work, varname = varname, &
10381 & url = url, &
10382 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10383 call url_chop_iorange( &
10384 & fullname = url, iorange = iorange, remainder = remainder )
10385 call split( str = iorange, carray = carray, sep = gt_equal )
10386 timevar_name = carray(1)
10387 deallocate( carray )
10388 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10389 call historygetint5pointer( file = file, &
10390 & varname = varname, array = array, &
10391 & range = time_range, quiet = quiet, &
10392 & flag_mpi_split = flag_mpi_split, &
10393 & returned_time = returned_time, &
10394 & flag_time_exist = flag_time_exist, &
10395 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint5timed()

subroutine historygetint5timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13478 of file historyget.f90.

13481 use dc_string, only: tochar, split
13482 use dc_types, only: string, dp
13483 use dc_trace, only: dbgmessage
13484 use dc_url, only: url_chop_iorange, gt_equal
13485 use dc_present, only: present_and_true
13486 ! MPI ライブラリ
13487 ! MPI library
13488 !
13489 use mpi
13490 implicit none
13491 character(*), intent(in):: file, varname
13492 real(DP), intent(in):: time
13493 logical, intent(in), optional:: quiet
13494 integer, intent(out) :: array(:,:,:,:,:)
13495 logical, intent(in), optional:: flag_mpi_split
13496 real(DP), intent(out), optional:: returned_time
13497 logical, intent(out), optional:: flag_time_exist
13498 logical, intent(out), optional:: err
13499 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13500 character(STRING), pointer:: carray (:)
13501 character(STRING):: tname
13502 interface
13503 subroutine historygetint5(&
13504 & file, varname, array, range, quiet, &
13505 & flag_mpi_split, returned_time, flag_time_exist, err)
13506 use dc_types, only: dp
13507 character(*), intent(in):: file
13508 character(*), intent(in):: varname
13509 character(*), intent(in), optional:: range
13510 logical, intent(in), optional:: quiet
13511 logical, intent(in), optional:: flag_mpi_split
13512 real(DP), intent(out), optional:: returned_time
13513 logical, intent(out), optional:: flag_time_exist
13514 logical, intent(out), optional:: err
13515 integer, intent(out) :: array(:,:,:,:,:)
13516 end subroutine historygetint5
13517 end interface
13518 interface
13519 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13520 character(*), intent(in):: file
13521 character(*), intent(in):: varname
13522 character(*), intent(out):: url
13523 character(*), intent(in), optional:: range
13524 logical, intent(out), optional:: flag_time_exist
13525 character(*), intent(out), optional:: time_name
13526 logical, intent(out), optional:: err
13527 end subroutine lookup_growable_url
13528 end interface
13529 interface
13530 function file_rename_mpi( file ) result(result)
13531 use dc_types, only: string
13532 character(*), intent(in):: file
13533 character(STRING):: result
13534 end function file_rename_mpi
13535 end interface
13536 continue
13537 file_work = file
13538 if ( present_and_true( flag_mpi_split ) ) &
13539 & file_work = file_rename_mpi( file_work )
13540 call lookup_growable_url(file = file_work, varname = varname, &
13541 & url = url, &
13542 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13543 call url_chop_iorange( &
13544 & fullname = url, iorange = iorange, remainder = remainder )
13545 call split( str = iorange, carray = carray, sep = gt_equal )
13546 timevar_name = carray(1)
13547 deallocate( carray )
13548 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13549 call historygetint5( file = file, &
13550 & varname = varname, array = array, &
13551 & range = time_range, quiet = quiet, &
13552 & flag_mpi_split = flag_mpi_split, &
13553 & returned_time = returned_time, &
13554 & flag_time_exist = flag_time_exist, &
13555 & err = err )
subroutine historygetint5(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint5timei()

subroutine historygetint5timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17270 of file historyget.f90.

17273 use dc_string, only: tochar, split
17274 use dc_types, only: string, dp
17275 use dc_trace, only: dbgmessage
17276 use dc_url, only: url_chop_iorange, gt_equal
17277 use dc_present, only: present_and_true
17278 ! MPI ライブラリ
17279 ! MPI library
17280 !
17281 use mpi
17282 implicit none
17283 character(*), intent(in):: file, varname
17284 integer, intent(in):: time
17285 logical, intent(in), optional:: quiet
17286 integer, intent(out) :: array(:,:,:,:,:)
17287 logical, intent(in), optional:: flag_mpi_split
17288 real(DP), intent(out), optional:: returned_time
17289 logical, intent(out), optional:: flag_time_exist
17290 logical, intent(out), optional:: err
17291 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17292 character(STRING), pointer:: carray (:)
17293 character(STRING):: tname
17294 interface
17295 subroutine historygetint5(&
17296 & file, varname, array, range, quiet, &
17297 & flag_mpi_split, returned_time, flag_time_exist, err)
17298 use dc_types, only: dp
17299 character(*), intent(in):: file
17300 character(*), intent(in):: varname
17301 character(*), intent(in), optional:: range
17302 logical, intent(in), optional:: quiet
17303 logical, intent(in), optional:: flag_mpi_split
17304 real(DP), intent(out), optional:: returned_time
17305 logical, intent(out), optional:: flag_time_exist
17306 logical, intent(out), optional:: err
17307 integer, intent(out) :: array(:,:,:,:,:)
17308 end subroutine historygetint5
17309 end interface
17310 interface
17311 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17312 character(*), intent(in):: file
17313 character(*), intent(in):: varname
17314 character(*), intent(out):: url
17315 character(*), intent(in), optional:: range
17316 logical, intent(out), optional:: flag_time_exist
17317 character(*), intent(out), optional:: time_name
17318 logical, intent(out), optional:: err
17319 end subroutine lookup_growable_url
17320 end interface
17321 interface
17322 function file_rename_mpi( file ) result(result)
17323 use dc_types, only: string
17324 character(*), intent(in):: file
17325 character(STRING):: result
17326 end function file_rename_mpi
17327 end interface
17328 continue
17329 file_work = file
17330 if ( present_and_true( flag_mpi_split ) ) &
17331 & file_work = file_rename_mpi( file_work )
17332 call lookup_growable_url(file = file_work, varname = varname, &
17333 & url = url, &
17334 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17335 call url_chop_iorange( &
17336 & fullname = url, iorange = iorange, remainder = remainder )
17337 call split( str = iorange, carray = carray, sep = gt_equal )
17338 timevar_name = carray(1)
17339 deallocate( carray )
17340 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17341 call historygetint5( file = file, &
17342 & varname = varname, array = array, &
17343 & range = time_range, quiet = quiet, &
17344 & flag_mpi_split = flag_mpi_split, &
17345 & returned_time = returned_time, &
17346 & flag_time_exist = flag_time_exist, &
17347 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint5timer()

subroutine historygetint5timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9686 of file historyget.f90.

9689 use dc_string, only: tochar, split
9690 use dc_types, only: string, dp, sp
9691 use dc_trace, only: dbgmessage
9692 use dc_url, only: url_chop_iorange, gt_equal
9693 use dc_present, only: present_and_true
9694 ! MPI ライブラリ
9695 ! MPI library
9696 !
9697 use mpi
9698 implicit none
9699 character(*), intent(in):: file, varname
9700 real(SP), intent(in):: time
9701 logical, intent(in), optional:: quiet
9702 integer, intent(out) :: array(:,:,:,:,:)
9703 logical, intent(in), optional:: flag_mpi_split
9704 real(DP), intent(out), optional:: returned_time
9705 logical, intent(out), optional:: flag_time_exist
9706 logical, intent(out), optional:: err
9707 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9708 character(STRING), pointer:: carray (:)
9709 character(STRING):: tname
9710 interface
9711 subroutine historygetint5(&
9712 & file, varname, array, range, quiet, &
9713 & flag_mpi_split, returned_time, flag_time_exist, err)
9714 use dc_types, only: dp
9715 character(*), intent(in):: file
9716 character(*), intent(in):: varname
9717 character(*), intent(in), optional:: range
9718 logical, intent(in), optional:: quiet
9719 logical, intent(in), optional:: flag_mpi_split
9720 real(DP), intent(out), optional:: returned_time
9721 logical, intent(out), optional:: flag_time_exist
9722 logical, intent(out), optional:: err
9723 integer, intent(out) :: array(:,:,:,:,:)
9724 end subroutine historygetint5
9725 end interface
9726 interface
9727 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9728 character(*), intent(in):: file
9729 character(*), intent(in):: varname
9730 character(*), intent(out):: url
9731 character(*), intent(in), optional:: range
9732 logical, intent(out), optional:: flag_time_exist
9733 character(*), intent(out), optional:: time_name
9734 logical, intent(out), optional:: err
9735 end subroutine lookup_growable_url
9736 end interface
9737 interface
9738 function file_rename_mpi( file ) result(result)
9739 use dc_types, only: string
9740 character(*), intent(in):: file
9741 character(STRING):: result
9742 end function file_rename_mpi
9743 end interface
9744 continue
9745 file_work = file
9746 if ( present_and_true( flag_mpi_split ) ) &
9747 & file_work = file_rename_mpi( file_work )
9748 call lookup_growable_url(file = file_work, varname = varname, &
9749 & url = url, &
9750 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9751 call url_chop_iorange( &
9752 & fullname = url, iorange = iorange, remainder = remainder )
9753 call split( str = iorange, carray = carray, sep = gt_equal )
9754 timevar_name = carray(1)
9755 deallocate( carray )
9756 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9757 call historygetint5( file = file, &
9758 & varname = varname, array = array, &
9759 & range = time_range, quiet = quiet, &
9760 & flag_mpi_split = flag_mpi_split, &
9761 & returned_time = returned_time, &
9762 & flag_time_exist = flag_time_exist, &
9763 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint6()

subroutine historygetint6 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 4352 of file historyget.f90.

4354 use gtdata_types, only: gt_variable
4355 use gtdata_generic, only: open, inquire, close, get
4356 use dc_string, only: tochar
4358 use dc_regex, only: match
4359 use dc_types, only: string, dp
4360 use dc_message, only: messagenotify
4363 ! MPI ライブラリ
4364 ! MPI library
4365 use mpi
4366 implicit none
4367 character(*), intent(in):: file
4368 character(*), intent(in):: varname
4369 character(*), intent(in), optional:: range
4370 logical, intent(in), optional:: quiet
4371 logical, intent(in), optional:: flag_mpi_split
4372 real(DP), intent(out), optional:: returned_time ! データの時刻
4373 logical, intent(out), optional:: flag_time_exist
4374 logical, intent(out), optional:: err
4375 integer, intent(out) :: array(:,:,:,:,:,:)
4376 integer, allocatable :: array_tmp(:)
4377 integer:: array_allsize
4378 integer:: array_shape(6), data_shape(6), array_shape_check(6)
4379 integer:: allcount
4380 integer:: i, sd
4381 logical:: inq_err
4382 type(GT_VARIABLE):: var
4383 character(STRING):: file_work, url, actual_url
4384 integer:: rank, alldims, array_rank
4385 integer:: domain
4386 character(STRING):: tname
4387 integer:: stat
4388 character(STRING):: cause_c
4389 character(*), parameter :: subname = "HistoryGetInt6"
4390 interface
4391 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4392 character(*), intent(in):: file
4393 character(*), intent(in):: varname
4394 character(*), intent(out):: url
4395 character(*), intent(in), optional:: range
4396 logical, intent(out), optional:: flag_time_exist
4397 character(*), intent(out), optional:: time_name
4398 logical, intent(out), optional:: err
4399 end subroutine lookup_growable_url
4400 end interface
4401 interface
4402 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4403 use dc_types, only: dp
4404 character(*), intent(in) :: url ! 変数 URL
4405 character(*), intent(out), optional :: actual_url
4406 ! 正確な入出力範囲指定
4407 real(DP), intent(out), optional:: returned_time ! データの時刻
4408 character(*), intent(in), optional:: time_name ! 時刻次元の名称
4409 logical, intent(out), optional :: err ! エラーのフラグ
4410 end subroutine actual_iorange_dump
4411 end interface
4412 interface
4413 function file_rename_mpi( file ) result(result)
4414 use dc_types, only: string
4415 character(*), intent(in):: file
4416 character(STRING):: result
4417 end function file_rename_mpi
4418 end interface
4419 continue
4420 cause_c = ''
4421 stat = dc_noerr
4422 file_work = file
4423 array_shape = shape( array )
4424 array_allsize = size( array )
4425 ! ファイル名の変更 (MPI 用)
4426 ! Change filename (for MPI)
4427 !
4428 if ( present_and_true( flag_mpi_split ) ) &
4429 & file_work = file_rename_mpi( file_work )
4430 ! 最新時刻の URL 取得
4431 ! Get URL of latest time
4432 !
4433 call lookup_growable_url(file_work, varname, url, range, &
4434 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4435 if ( present_and_true(err) ) then
4436 stat = gt_enoturl
4437 cause_c = url
4438 goto 999
4439 end if
4440 ! ファイルオープン
4441 ! File open
4442 call open( var, url, err = err )
4443 if ( present_and_true(err) ) then
4444 stat = gt_enoturl
4445 cause_c = url
4446 goto 999
4447 end if
4448 !-------------------------------------------------------------------
4449 ! 配列形状のチェック
4450 ! Check array shape
4451 !-------------------------------------------------------------------
4452 ! 入力ファイル中のデータの次元数
4453 ! Get size of dimesions in data of an input file
4454 !
4455 call inquire( var = var, & ! (in)
4456 & rank = rank, alldims = alldims ) ! (out)
4457 ! 引数の次元数のチェック (縮退されている場合には減らす)
4458 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4459 array_rank = 6
4460 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4461 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4462 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4463 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4464 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
4465 if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
4466 ! 次元数の比較
4467 ! Compare sizes of dimensions
4468 !
4469 if ( .not. 6 == rank .and. .not. array_rank == rank ) then
4470 if ( .not. present_and_true(quiet) ) then
4471 call messagenotify('W', subname, &
4472 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4473 & i = (/rank, 6/), c1 = trim(url) )
4474 end if
4475 stat = gt_erankmismatch
4476 cause_c = 'array'
4477 goto 999
4478 end if
4479 ! 入力ファイル中のデータの配列形状取得
4480 ! Get shape of data in an input file
4481 call inquire( var = var , dimord = 1, & ! (in)
4482 & allcount = allcount, err = inq_err ) ! (out)
4483 if ( .not. inq_err ) then
4484 data_shape(1) = allcount
4485 else
4486 data_shape(1) = 1
4487 end if
4488 call inquire( var = var , dimord = 2, & ! (in)
4489 & allcount = allcount, err = inq_err ) ! (out)
4490 if ( .not. inq_err ) then
4491 data_shape(2) = allcount
4492 else
4493 data_shape(2) = 1
4494 end if
4495 call inquire( var = var , dimord = 3, & ! (in)
4496 & allcount = allcount, err = inq_err ) ! (out)
4497 if ( .not. inq_err ) then
4498 data_shape(3) = allcount
4499 else
4500 data_shape(3) = 1
4501 end if
4502 call inquire( var = var , dimord = 4, & ! (in)
4503 & allcount = allcount, err = inq_err ) ! (out)
4504 if ( .not. inq_err ) then
4505 data_shape(4) = allcount
4506 else
4507 data_shape(4) = 1
4508 end if
4509 call inquire( var = var , dimord = 5, & ! (in)
4510 & allcount = allcount, err = inq_err ) ! (out)
4511 if ( .not. inq_err ) then
4512 data_shape(5) = allcount
4513 else
4514 data_shape(5) = 1
4515 end if
4516 call inquire( var = var , dimord = 6, & ! (in)
4517 & allcount = allcount, err = inq_err ) ! (out)
4518 if ( .not. inq_err ) then
4519 data_shape(6) = allcount
4520 else
4521 data_shape(6) = 1
4522 end if
4523 ! 引数の配列形状整形
4524 ! Arrange shape of an argument
4525 !
4526 array_shape_check = array_shape
4527 sd = 1
4528 do i = 1, 6 - 1
4529 if ( array_shape_check(sd) == 1 ) then
4530 array_shape_check(sd:6) = cshift( array_shape_check(sd:6), 1, 1 )
4531 else
4532 sd = sd + 1
4533 end if
4534 end do
4535 ! 配列形状の比較
4536 ! Compare shapes
4537 !
4538 if ( .not. all( array_shape_check == data_shape ) ) then
4539 if ( .not. present_and_true(quiet) ) then
4540 call messagenotify('W', subname, &
4541 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4542 & c1 = trim( url ), &
4543 & c2 = trim( tochar( data_shape(1:rank) ) ), &
4544 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4545 end if
4546 stat = gt_eargsizemismatch
4547 cause_c = 'array'
4548 goto 999
4549 end if
4550 !-------------------------------------
4551 ! データ取得
4552 ! Get data
4553 call inquire( var = var, & ! (in)
4554 & size = domain ) ! (out)
4555 if ( allocated( array_tmp ) ) deallocate( array_tmp )
4556 allocate( array_tmp(array_allsize) )
4557 call get( var, array_tmp, domain )
4558 array = reshape( array_tmp, array_shape )
4559 deallocate( array_tmp )
4560 call close( var )
4561 !-------------------------------------
4562 ! データファイル名と切り出し範囲の印字
4563 ! Print data filename and clipping range
4564 call actual_iorange_dump(url, & ! (in)
4565 & actual_url, returned_time, & ! (out) optional
4566 & time_name = tname, & ! (in) optional
4567 & err = err) ! (out) optional
4568 if ( .not. present_and_true(quiet) ) then
4569 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4570 end if
4571999 continue
4572 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint6pointer()

subroutine historygetint6pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6601 of file historyget.f90.

6603 use gtdata_types, only: gt_variable
6604 use gtdata_generic, only: open, inquire, close, get
6605 use dc_string, only: tochar
6607 use dc_types, only: string, dp
6608 use dc_message, only: messagenotify
6609 use dc_trace, only: dbgmessage
6610 ! MPI ライブラリ
6611 ! MPI library
6612 !
6613 use mpi
6614 implicit none
6615 character(*), intent(in):: file
6616 character(*), intent(in):: varname
6617 character(*), intent(in), optional:: range
6618 logical, intent(in), optional:: quiet
6619 logical, intent(in), optional:: flag_mpi_split
6620 real(DP), intent(out), optional:: returned_time ! データの時刻
6621 logical, intent(out), optional:: flag_time_exist
6622 logical, intent(out), optional:: err
6623 integer, pointer :: array(:,:,:,:,:,:) ! (out)
6624 type(GT_VARIABLE):: var
6625 character(STRING):: file_work, url, actual_url
6626 character(STRING):: tname
6627 character(*), parameter :: subname = "HistoryGetInt6Pointer"
6628 interface
6629 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6630 character(*), intent(in):: file
6631 character(*), intent(in):: varname
6632 character(*), intent(out):: url
6633 character(*), intent(in), optional:: range
6634 logical, intent(out), optional:: flag_time_exist
6635 character(*), intent(out), optional:: time_name
6636 logical, intent(out), optional:: err
6637 end subroutine lookup_growable_url
6638 end interface
6639 interface
6640 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6641 use dc_types, only: dp
6642 character(*), intent(in) :: url ! 変数 URL
6643 character(*), intent(out), optional :: actual_url
6644 ! 正確な入出力範囲指定
6645 real(DP), intent(out), optional:: returned_time ! データの時刻
6646 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6647 logical, intent(out), optional :: err ! エラーのフラグ
6648 end subroutine actual_iorange_dump
6649 end interface
6650 interface
6651 function file_rename_mpi( file ) result(result)
6652 use dc_types, only: string
6653 character(*), intent(in):: file
6654 character(STRING):: result
6655 end function file_rename_mpi
6656 end interface
6657 continue
6658 file_work = file
6659 ! ファイル名の変更 (MPI 用)
6660 ! Change filename (for MPI)
6661 !
6662 if ( present_and_true( flag_mpi_split ) ) &
6663 & file_work = file_rename_mpi( file_work )
6664 ! 必要な情報を gtool 変数化
6665 !
6666 call lookup_growable_url(file_work, varname, url, range, &
6667 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6668 call dbgmessage('@ url =%c', c1=trim(url))
6669 ! いよいよデータ取得
6670 !
6671 call open(var, url, err)
6672 call get(var, array, err)
6673 call close(var, err)
6674 call actual_iorange_dump(url, & ! (in)
6675 & actual_url, returned_time, & ! (out) optional
6676 & time_name = tname, & ! (in) optional
6677 & err = err) ! (out) optional
6678 if ( .not. present_and_true(quiet) ) then
6679 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6680 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint6pointertimed()

subroutine historygetint6pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14189 of file historyget.f90.

14192 use dc_string, only: tochar, split
14193 use dc_types, only: string, dp
14194 use dc_trace, only: dbgmessage
14195 use dc_url, only: url_chop_iorange, gt_equal
14196 use dc_present, only: present_and_true
14197 ! MPI ライブラリ
14198 ! MPI library
14199 !
14200 use mpi
14201 implicit none
14202 character(*), intent(in):: file, varname
14203 real(DP), intent(in):: time
14204 logical, intent(in), optional:: quiet
14205 integer, pointer :: array(:,:,:,:,:,:)
14206 logical, intent(in), optional:: flag_mpi_split
14207 real(DP), intent(out), optional:: returned_time
14208 logical, intent(out), optional:: flag_time_exist
14209 logical, intent(out), optional:: err
14210 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14211 character(STRING), pointer:: carray (:)
14212 character(STRING):: tname
14213 interface
14214 subroutine historygetint6pointer(&
14215 & file, varname, array, range, quiet, &
14216 & flag_mpi_split, returned_time, flag_time_exist, err)
14217 use dc_types, only: dp
14218 character(*), intent(in):: file
14219 character(*), intent(in):: varname
14220 character(*), intent(in), optional:: range
14221 logical, intent(in), optional:: quiet
14222 logical, intent(in), optional:: flag_mpi_split
14223 real(DP), intent(out), optional:: returned_time
14224 logical, intent(out), optional:: flag_time_exist
14225 logical, intent(out), optional:: err
14226 integer, pointer :: array(:,:,:,:,:,:)
14227 end subroutine historygetint6pointer
14228 end interface
14229 interface
14230 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14231 character(*), intent(in):: file
14232 character(*), intent(in):: varname
14233 character(*), intent(out):: url
14234 character(*), intent(in), optional:: range
14235 logical, intent(out), optional:: flag_time_exist
14236 character(*), intent(out), optional:: time_name
14237 logical, intent(out), optional:: err
14238 end subroutine lookup_growable_url
14239 end interface
14240 interface
14241 function file_rename_mpi( file ) result(result)
14242 use dc_types, only: string
14243 character(*), intent(in):: file
14244 character(STRING):: result
14245 end function file_rename_mpi
14246 end interface
14247 continue
14248 file_work = file
14249 if ( present_and_true( flag_mpi_split ) ) &
14250 & file_work = file_rename_mpi( file_work )
14251 call lookup_growable_url(file = file_work, varname = varname, &
14252 & url = url, &
14253 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14254 call url_chop_iorange( &
14255 & fullname = url, iorange = iorange, remainder = remainder )
14256 call split( str = iorange, carray = carray, sep = gt_equal )
14257 timevar_name = carray(1)
14258 deallocate( carray )
14259 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14260 call historygetint6pointer( file = file, &
14261 & varname = varname, array = array, &
14262 & range = time_range, quiet = quiet, &
14263 & flag_mpi_split = flag_mpi_split, &
14264 & returned_time = returned_time, &
14265 & flag_time_exist = flag_time_exist, &
14266 & err = err )
subroutine historygetint6pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint6pointertimei()

subroutine historygetint6pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17981 of file historyget.f90.

17984 use dc_string, only: tochar, split
17985 use dc_types, only: string, dp
17986 use dc_trace, only: dbgmessage
17987 use dc_url, only: url_chop_iorange, gt_equal
17988 use dc_present, only: present_and_true
17989 ! MPI ライブラリ
17990 ! MPI library
17991 !
17992 use mpi
17993 implicit none
17994 character(*), intent(in):: file, varname
17995 integer, intent(in):: time
17996 logical, intent(in), optional:: quiet
17997 integer, pointer :: array(:,:,:,:,:,:)
17998 logical, intent(in), optional:: flag_mpi_split
17999 real(DP), intent(out), optional:: returned_time
18000 logical, intent(out), optional:: flag_time_exist
18001 logical, intent(out), optional:: err
18002 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
18003 character(STRING), pointer:: carray (:)
18004 character(STRING):: tname
18005 interface
18006 subroutine historygetint6pointer(&
18007 & file, varname, array, range, quiet, &
18008 & flag_mpi_split, returned_time, flag_time_exist, err)
18009 use dc_types, only: dp
18010 character(*), intent(in):: file
18011 character(*), intent(in):: varname
18012 character(*), intent(in), optional:: range
18013 logical, intent(in), optional:: quiet
18014 logical, intent(in), optional:: flag_mpi_split
18015 real(DP), intent(out), optional:: returned_time
18016 logical, intent(out), optional:: flag_time_exist
18017 logical, intent(out), optional:: err
18018 integer, pointer :: array(:,:,:,:,:,:)
18019 end subroutine historygetint6pointer
18020 end interface
18021 interface
18022 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
18023 character(*), intent(in):: file
18024 character(*), intent(in):: varname
18025 character(*), intent(out):: url
18026 character(*), intent(in), optional:: range
18027 logical, intent(out), optional:: flag_time_exist
18028 character(*), intent(out), optional:: time_name
18029 logical, intent(out), optional:: err
18030 end subroutine lookup_growable_url
18031 end interface
18032 interface
18033 function file_rename_mpi( file ) result(result)
18034 use dc_types, only: string
18035 character(*), intent(in):: file
18036 character(STRING):: result
18037 end function file_rename_mpi
18038 end interface
18039 continue
18040 file_work = file
18041 if ( present_and_true( flag_mpi_split ) ) &
18042 & file_work = file_rename_mpi( file_work )
18043 call lookup_growable_url(file = file_work, varname = varname, &
18044 & url = url, &
18045 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
18046 call url_chop_iorange( &
18047 & fullname = url, iorange = iorange, remainder = remainder )
18048 call split( str = iorange, carray = carray, sep = gt_equal )
18049 timevar_name = carray(1)
18050 deallocate( carray )
18051 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
18052 call historygetint6pointer( file = file, &
18053 & varname = varname, array = array, &
18054 & range = time_range, quiet = quiet, &
18055 & flag_mpi_split = flag_mpi_split, &
18056 & returned_time = returned_time, &
18057 & flag_time_exist = flag_time_exist, &
18058 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint6pointertimer()

subroutine historygetint6pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10397 of file historyget.f90.

10400 use dc_string, only: tochar, split
10401 use dc_types, only: string, dp, sp
10402 use dc_trace, only: dbgmessage
10403 use dc_url, only: url_chop_iorange, gt_equal
10404 use dc_present, only: present_and_true
10405 ! MPI ライブラリ
10406 ! MPI library
10407 !
10408 use mpi
10409 implicit none
10410 character(*), intent(in):: file, varname
10411 real(SP), intent(in):: time
10412 logical, intent(in), optional:: quiet
10413 integer, pointer :: array(:,:,:,:,:,:)
10414 logical, intent(in), optional:: flag_mpi_split
10415 real(DP), intent(out), optional:: returned_time
10416 logical, intent(out), optional:: flag_time_exist
10417 logical, intent(out), optional:: err
10418 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10419 character(STRING), pointer:: carray (:)
10420 character(STRING):: tname
10421 interface
10422 subroutine historygetint6pointer(&
10423 & file, varname, array, range, quiet, &
10424 & flag_mpi_split, returned_time, flag_time_exist, err)
10425 use dc_types, only: dp
10426 character(*), intent(in):: file
10427 character(*), intent(in):: varname
10428 character(*), intent(in), optional:: range
10429 logical, intent(in), optional:: quiet
10430 logical, intent(in), optional:: flag_mpi_split
10431 real(DP), intent(out), optional:: returned_time
10432 logical, intent(out), optional:: flag_time_exist
10433 logical, intent(out), optional:: err
10434 integer, pointer :: array(:,:,:,:,:,:)
10435 end subroutine historygetint6pointer
10436 end interface
10437 interface
10438 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10439 character(*), intent(in):: file
10440 character(*), intent(in):: varname
10441 character(*), intent(out):: url
10442 character(*), intent(in), optional:: range
10443 logical, intent(out), optional:: flag_time_exist
10444 character(*), intent(out), optional:: time_name
10445 logical, intent(out), optional:: err
10446 end subroutine lookup_growable_url
10447 end interface
10448 interface
10449 function file_rename_mpi( file ) result(result)
10450 use dc_types, only: string
10451 character(*), intent(in):: file
10452 character(STRING):: result
10453 end function file_rename_mpi
10454 end interface
10455 continue
10456 file_work = file
10457 if ( present_and_true( flag_mpi_split ) ) &
10458 & file_work = file_rename_mpi( file_work )
10459 call lookup_growable_url(file = file_work, varname = varname, &
10460 & url = url, &
10461 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10462 call url_chop_iorange( &
10463 & fullname = url, iorange = iorange, remainder = remainder )
10464 call split( str = iorange, carray = carray, sep = gt_equal )
10465 timevar_name = carray(1)
10466 deallocate( carray )
10467 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10468 call historygetint6pointer( file = file, &
10469 & varname = varname, array = array, &
10470 & range = time_range, quiet = quiet, &
10471 & flag_mpi_split = flag_mpi_split, &
10472 & returned_time = returned_time, &
10473 & flag_time_exist = flag_time_exist, &
10474 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint6timed()

subroutine historygetint6timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13557 of file historyget.f90.

13560 use dc_string, only: tochar, split
13561 use dc_types, only: string, dp
13562 use dc_trace, only: dbgmessage
13563 use dc_url, only: url_chop_iorange, gt_equal
13564 use dc_present, only: present_and_true
13565 ! MPI ライブラリ
13566 ! MPI library
13567 !
13568 use mpi
13569 implicit none
13570 character(*), intent(in):: file, varname
13571 real(DP), intent(in):: time
13572 logical, intent(in), optional:: quiet
13573 integer, intent(out) :: array(:,:,:,:,:,:)
13574 logical, intent(in), optional:: flag_mpi_split
13575 real(DP), intent(out), optional:: returned_time
13576 logical, intent(out), optional:: flag_time_exist
13577 logical, intent(out), optional:: err
13578 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13579 character(STRING), pointer:: carray (:)
13580 character(STRING):: tname
13581 interface
13582 subroutine historygetint6(&
13583 & file, varname, array, range, quiet, &
13584 & flag_mpi_split, returned_time, flag_time_exist, err)
13585 use dc_types, only: dp
13586 character(*), intent(in):: file
13587 character(*), intent(in):: varname
13588 character(*), intent(in), optional:: range
13589 logical, intent(in), optional:: quiet
13590 logical, intent(in), optional:: flag_mpi_split
13591 real(DP), intent(out), optional:: returned_time
13592 logical, intent(out), optional:: flag_time_exist
13593 logical, intent(out), optional:: err
13594 integer, intent(out) :: array(:,:,:,:,:,:)
13595 end subroutine historygetint6
13596 end interface
13597 interface
13598 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13599 character(*), intent(in):: file
13600 character(*), intent(in):: varname
13601 character(*), intent(out):: url
13602 character(*), intent(in), optional:: range
13603 logical, intent(out), optional:: flag_time_exist
13604 character(*), intent(out), optional:: time_name
13605 logical, intent(out), optional:: err
13606 end subroutine lookup_growable_url
13607 end interface
13608 interface
13609 function file_rename_mpi( file ) result(result)
13610 use dc_types, only: string
13611 character(*), intent(in):: file
13612 character(STRING):: result
13613 end function file_rename_mpi
13614 end interface
13615 continue
13616 file_work = file
13617 if ( present_and_true( flag_mpi_split ) ) &
13618 & file_work = file_rename_mpi( file_work )
13619 call lookup_growable_url(file = file_work, varname = varname, &
13620 & url = url, &
13621 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13622 call url_chop_iorange( &
13623 & fullname = url, iorange = iorange, remainder = remainder )
13624 call split( str = iorange, carray = carray, sep = gt_equal )
13625 timevar_name = carray(1)
13626 deallocate( carray )
13627 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13628 call historygetint6( file = file, &
13629 & varname = varname, array = array, &
13630 & range = time_range, quiet = quiet, &
13631 & flag_mpi_split = flag_mpi_split, &
13632 & returned_time = returned_time, &
13633 & flag_time_exist = flag_time_exist, &
13634 & err = err )
subroutine historygetint6(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint6timei()

subroutine historygetint6timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17349 of file historyget.f90.

17352 use dc_string, only: tochar, split
17353 use dc_types, only: string, dp
17354 use dc_trace, only: dbgmessage
17355 use dc_url, only: url_chop_iorange, gt_equal
17356 use dc_present, only: present_and_true
17357 ! MPI ライブラリ
17358 ! MPI library
17359 !
17360 use mpi
17361 implicit none
17362 character(*), intent(in):: file, varname
17363 integer, intent(in):: time
17364 logical, intent(in), optional:: quiet
17365 integer, intent(out) :: array(:,:,:,:,:,:)
17366 logical, intent(in), optional:: flag_mpi_split
17367 real(DP), intent(out), optional:: returned_time
17368 logical, intent(out), optional:: flag_time_exist
17369 logical, intent(out), optional:: err
17370 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17371 character(STRING), pointer:: carray (:)
17372 character(STRING):: tname
17373 interface
17374 subroutine historygetint6(&
17375 & file, varname, array, range, quiet, &
17376 & flag_mpi_split, returned_time, flag_time_exist, err)
17377 use dc_types, only: dp
17378 character(*), intent(in):: file
17379 character(*), intent(in):: varname
17380 character(*), intent(in), optional:: range
17381 logical, intent(in), optional:: quiet
17382 logical, intent(in), optional:: flag_mpi_split
17383 real(DP), intent(out), optional:: returned_time
17384 logical, intent(out), optional:: flag_time_exist
17385 logical, intent(out), optional:: err
17386 integer, intent(out) :: array(:,:,:,:,:,:)
17387 end subroutine historygetint6
17388 end interface
17389 interface
17390 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17391 character(*), intent(in):: file
17392 character(*), intent(in):: varname
17393 character(*), intent(out):: url
17394 character(*), intent(in), optional:: range
17395 logical, intent(out), optional:: flag_time_exist
17396 character(*), intent(out), optional:: time_name
17397 logical, intent(out), optional:: err
17398 end subroutine lookup_growable_url
17399 end interface
17400 interface
17401 function file_rename_mpi( file ) result(result)
17402 use dc_types, only: string
17403 character(*), intent(in):: file
17404 character(STRING):: result
17405 end function file_rename_mpi
17406 end interface
17407 continue
17408 file_work = file
17409 if ( present_and_true( flag_mpi_split ) ) &
17410 & file_work = file_rename_mpi( file_work )
17411 call lookup_growable_url(file = file_work, varname = varname, &
17412 & url = url, &
17413 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17414 call url_chop_iorange( &
17415 & fullname = url, iorange = iorange, remainder = remainder )
17416 call split( str = iorange, carray = carray, sep = gt_equal )
17417 timevar_name = carray(1)
17418 deallocate( carray )
17419 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17420 call historygetint6( file = file, &
17421 & varname = varname, array = array, &
17422 & range = time_range, quiet = quiet, &
17423 & flag_mpi_split = flag_mpi_split, &
17424 & returned_time = returned_time, &
17425 & flag_time_exist = flag_time_exist, &
17426 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint6timer()

subroutine historygetint6timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9765 of file historyget.f90.

9768 use dc_string, only: tochar, split
9769 use dc_types, only: string, dp, sp
9770 use dc_trace, only: dbgmessage
9771 use dc_url, only: url_chop_iorange, gt_equal
9772 use dc_present, only: present_and_true
9773 ! MPI ライブラリ
9774 ! MPI library
9775 !
9776 use mpi
9777 implicit none
9778 character(*), intent(in):: file, varname
9779 real(SP), intent(in):: time
9780 logical, intent(in), optional:: quiet
9781 integer, intent(out) :: array(:,:,:,:,:,:)
9782 logical, intent(in), optional:: flag_mpi_split
9783 real(DP), intent(out), optional:: returned_time
9784 logical, intent(out), optional:: flag_time_exist
9785 logical, intent(out), optional:: err
9786 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9787 character(STRING), pointer:: carray (:)
9788 character(STRING):: tname
9789 interface
9790 subroutine historygetint6(&
9791 & file, varname, array, range, quiet, &
9792 & flag_mpi_split, returned_time, flag_time_exist, err)
9793 use dc_types, only: dp
9794 character(*), intent(in):: file
9795 character(*), intent(in):: varname
9796 character(*), intent(in), optional:: range
9797 logical, intent(in), optional:: quiet
9798 logical, intent(in), optional:: flag_mpi_split
9799 real(DP), intent(out), optional:: returned_time
9800 logical, intent(out), optional:: flag_time_exist
9801 logical, intent(out), optional:: err
9802 integer, intent(out) :: array(:,:,:,:,:,:)
9803 end subroutine historygetint6
9804 end interface
9805 interface
9806 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9807 character(*), intent(in):: file
9808 character(*), intent(in):: varname
9809 character(*), intent(out):: url
9810 character(*), intent(in), optional:: range
9811 logical, intent(out), optional:: flag_time_exist
9812 character(*), intent(out), optional:: time_name
9813 logical, intent(out), optional:: err
9814 end subroutine lookup_growable_url
9815 end interface
9816 interface
9817 function file_rename_mpi( file ) result(result)
9818 use dc_types, only: string
9819 character(*), intent(in):: file
9820 character(STRING):: result
9821 end function file_rename_mpi
9822 end interface
9823 continue
9824 file_work = file
9825 if ( present_and_true( flag_mpi_split ) ) &
9826 & file_work = file_rename_mpi( file_work )
9827 call lookup_growable_url(file = file_work, varname = varname, &
9828 & url = url, &
9829 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9830 call url_chop_iorange( &
9831 & fullname = url, iorange = iorange, remainder = remainder )
9832 call split( str = iorange, carray = carray, sep = gt_equal )
9833 timevar_name = carray(1)
9834 deallocate( carray )
9835 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9836 call historygetint6( file = file, &
9837 & varname = varname, array = array, &
9838 & range = time_range, quiet = quiet, &
9839 & flag_mpi_split = flag_mpi_split, &
9840 & returned_time = returned_time, &
9841 & flag_time_exist = flag_time_exist, &
9842 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint7()

subroutine historygetint7 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 4574 of file historyget.f90.

4576 use gtdata_types, only: gt_variable
4577 use gtdata_generic, only: open, inquire, close, get
4578 use dc_string, only: tochar
4580 use dc_regex, only: match
4581 use dc_types, only: string, dp
4582 use dc_message, only: messagenotify
4585 ! MPI ライブラリ
4586 ! MPI library
4587 use mpi
4588 implicit none
4589 character(*), intent(in):: file
4590 character(*), intent(in):: varname
4591 character(*), intent(in), optional:: range
4592 logical, intent(in), optional:: quiet
4593 logical, intent(in), optional:: flag_mpi_split
4594 real(DP), intent(out), optional:: returned_time ! データの時刻
4595 logical, intent(out), optional:: flag_time_exist
4596 logical, intent(out), optional:: err
4597 integer, intent(out) :: array(:,:,:,:,:,:,:)
4598 integer, allocatable :: array_tmp(:)
4599 integer:: array_allsize
4600 integer:: array_shape(7), data_shape(7), array_shape_check(7)
4601 integer:: allcount
4602 integer:: i, sd
4603 logical:: inq_err
4604 type(GT_VARIABLE):: var
4605 character(STRING):: file_work, url, actual_url
4606 integer:: rank, alldims, array_rank
4607 integer:: domain
4608 character(STRING):: tname
4609 integer:: stat
4610 character(STRING):: cause_c
4611 character(*), parameter :: subname = "HistoryGetInt7"
4612 interface
4613 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
4614 character(*), intent(in):: file
4615 character(*), intent(in):: varname
4616 character(*), intent(out):: url
4617 character(*), intent(in), optional:: range
4618 logical, intent(out), optional:: flag_time_exist
4619 character(*), intent(out), optional:: time_name
4620 logical, intent(out), optional:: err
4621 end subroutine lookup_growable_url
4622 end interface
4623 interface
4624 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
4625 use dc_types, only: dp
4626 character(*), intent(in) :: url ! 変数 URL
4627 character(*), intent(out), optional :: actual_url
4628 ! 正確な入出力範囲指定
4629 real(DP), intent(out), optional:: returned_time ! データの時刻
4630 character(*), intent(in), optional:: time_name ! 時刻次元の名称
4631 logical, intent(out), optional :: err ! エラーのフラグ
4632 end subroutine actual_iorange_dump
4633 end interface
4634 interface
4635 function file_rename_mpi( file ) result(result)
4636 use dc_types, only: string
4637 character(*), intent(in):: file
4638 character(STRING):: result
4639 end function file_rename_mpi
4640 end interface
4641 continue
4642 cause_c = ''
4643 stat = dc_noerr
4644 file_work = file
4645 array_shape = shape( array )
4646 array_allsize = size( array )
4647 ! ファイル名の変更 (MPI 用)
4648 ! Change filename (for MPI)
4649 !
4650 if ( present_and_true( flag_mpi_split ) ) &
4651 & file_work = file_rename_mpi( file_work )
4652 ! 最新時刻の URL 取得
4653 ! Get URL of latest time
4654 !
4655 call lookup_growable_url(file_work, varname, url, range, &
4656 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
4657 if ( present_and_true(err) ) then
4658 stat = gt_enoturl
4659 cause_c = url
4660 goto 999
4661 end if
4662 ! ファイルオープン
4663 ! File open
4664 call open( var, url, err = err )
4665 if ( present_and_true(err) ) then
4666 stat = gt_enoturl
4667 cause_c = url
4668 goto 999
4669 end if
4670 !-------------------------------------------------------------------
4671 ! 配列形状のチェック
4672 ! Check array shape
4673 !-------------------------------------------------------------------
4674 ! 入力ファイル中のデータの次元数
4675 ! Get size of dimesions in data of an input file
4676 !
4677 call inquire( var = var, & ! (in)
4678 & rank = rank, alldims = alldims ) ! (out)
4679 ! 引数の次元数のチェック (縮退されている場合には減らす)
4680 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
4681 array_rank = 7
4682 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
4683 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
4684 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
4685 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
4686 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
4687 if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
4688 if ( size( array, 7 ) == 1 ) array_rank = array_rank - 1
4689 ! 次元数の比較
4690 ! Compare sizes of dimensions
4691 !
4692 if ( .not. 7 == rank .and. .not. array_rank == rank ) then
4693 if ( .not. present_and_true(quiet) ) then
4694 call messagenotify('W', subname, &
4695 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
4696 & i = (/rank, 7/), c1 = trim(url) )
4697 end if
4698 stat = gt_erankmismatch
4699 cause_c = 'array'
4700 goto 999
4701 end if
4702 ! 入力ファイル中のデータの配列形状取得
4703 ! Get shape of data in an input file
4704 call inquire( var = var , dimord = 1, & ! (in)
4705 & allcount = allcount, err = inq_err ) ! (out)
4706 if ( .not. inq_err ) then
4707 data_shape(1) = allcount
4708 else
4709 data_shape(1) = 1
4710 end if
4711 call inquire( var = var , dimord = 2, & ! (in)
4712 & allcount = allcount, err = inq_err ) ! (out)
4713 if ( .not. inq_err ) then
4714 data_shape(2) = allcount
4715 else
4716 data_shape(2) = 1
4717 end if
4718 call inquire( var = var , dimord = 3, & ! (in)
4719 & allcount = allcount, err = inq_err ) ! (out)
4720 if ( .not. inq_err ) then
4721 data_shape(3) = allcount
4722 else
4723 data_shape(3) = 1
4724 end if
4725 call inquire( var = var , dimord = 4, & ! (in)
4726 & allcount = allcount, err = inq_err ) ! (out)
4727 if ( .not. inq_err ) then
4728 data_shape(4) = allcount
4729 else
4730 data_shape(4) = 1
4731 end if
4732 call inquire( var = var , dimord = 5, & ! (in)
4733 & allcount = allcount, err = inq_err ) ! (out)
4734 if ( .not. inq_err ) then
4735 data_shape(5) = allcount
4736 else
4737 data_shape(5) = 1
4738 end if
4739 call inquire( var = var , dimord = 6, & ! (in)
4740 & allcount = allcount, err = inq_err ) ! (out)
4741 if ( .not. inq_err ) then
4742 data_shape(6) = allcount
4743 else
4744 data_shape(6) = 1
4745 end if
4746 call inquire( var = var , dimord = 7, & ! (in)
4747 & allcount = allcount, err = inq_err ) ! (out)
4748 if ( .not. inq_err ) then
4749 data_shape(7) = allcount
4750 else
4751 data_shape(7) = 1
4752 end if
4753 ! 引数の配列形状整形
4754 ! Arrange shape of an argument
4755 !
4756 array_shape_check = array_shape
4757 sd = 1
4758 do i = 1, 7 - 1
4759 if ( array_shape_check(sd) == 1 ) then
4760 array_shape_check(sd:7) = cshift( array_shape_check(sd:7), 1, 1 )
4761 else
4762 sd = sd + 1
4763 end if
4764 end do
4765 ! 配列形状の比較
4766 ! Compare shapes
4767 !
4768 if ( .not. all( array_shape_check == data_shape ) ) then
4769 if ( .not. present_and_true(quiet) ) then
4770 call messagenotify('W', subname, &
4771 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
4772 & c1 = trim( url ), &
4773 & c2 = trim( tochar( data_shape(1:rank) ) ), &
4774 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
4775 end if
4776 stat = gt_eargsizemismatch
4777 cause_c = 'array'
4778 goto 999
4779 end if
4780 !-------------------------------------
4781 ! データ取得
4782 ! Get data
4783 call inquire( var = var, & ! (in)
4784 & size = domain ) ! (out)
4785 if ( allocated( array_tmp ) ) deallocate( array_tmp )
4786 allocate( array_tmp(array_allsize) )
4787 call get( var, array_tmp, domain )
4788 array = reshape( array_tmp, array_shape )
4789 deallocate( array_tmp )
4790 call close( var )
4791 !-------------------------------------
4792 ! データファイル名と切り出し範囲の印字
4793 ! Print data filename and clipping range
4794 call actual_iorange_dump(url, & ! (in)
4795 & actual_url, returned_time, & ! (out) optional
4796 & time_name = tname, & ! (in) optional
4797 & err = err) ! (out) optional
4798 if ( .not. present_and_true(quiet) ) then
4799 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
4800 end if
4801999 continue
4802 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint7pointer()

subroutine historygetint7pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6682 of file historyget.f90.

6684 use gtdata_types, only: gt_variable
6685 use gtdata_generic, only: open, inquire, close, get
6686 use dc_string, only: tochar
6688 use dc_types, only: string, dp
6689 use dc_message, only: messagenotify
6690 use dc_trace, only: dbgmessage
6691 ! MPI ライブラリ
6692 ! MPI library
6693 !
6694 use mpi
6695 implicit none
6696 character(*), intent(in):: file
6697 character(*), intent(in):: varname
6698 character(*), intent(in), optional:: range
6699 logical, intent(in), optional:: quiet
6700 logical, intent(in), optional:: flag_mpi_split
6701 real(DP), intent(out), optional:: returned_time ! データの時刻
6702 logical, intent(out), optional:: flag_time_exist
6703 logical, intent(out), optional:: err
6704 integer, pointer :: array(:,:,:,:,:,:,:) ! (out)
6705 type(GT_VARIABLE):: var
6706 character(STRING):: file_work, url, actual_url
6707 character(STRING):: tname
6708 character(*), parameter :: subname = "HistoryGetInt7Pointer"
6709 interface
6710 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6711 character(*), intent(in):: file
6712 character(*), intent(in):: varname
6713 character(*), intent(out):: url
6714 character(*), intent(in), optional:: range
6715 logical, intent(out), optional:: flag_time_exist
6716 character(*), intent(out), optional:: time_name
6717 logical, intent(out), optional:: err
6718 end subroutine lookup_growable_url
6719 end interface
6720 interface
6721 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6722 use dc_types, only: dp
6723 character(*), intent(in) :: url ! 変数 URL
6724 character(*), intent(out), optional :: actual_url
6725 ! 正確な入出力範囲指定
6726 real(DP), intent(out), optional:: returned_time ! データの時刻
6727 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6728 logical, intent(out), optional :: err ! エラーのフラグ
6729 end subroutine actual_iorange_dump
6730 end interface
6731 interface
6732 function file_rename_mpi( file ) result(result)
6733 use dc_types, only: string
6734 character(*), intent(in):: file
6735 character(STRING):: result
6736 end function file_rename_mpi
6737 end interface
6738 continue
6739 file_work = file
6740 ! ファイル名の変更 (MPI 用)
6741 ! Change filename (for MPI)
6742 !
6743 if ( present_and_true( flag_mpi_split ) ) &
6744 & file_work = file_rename_mpi( file_work )
6745 ! 必要な情報を gtool 変数化
6746 !
6747 call lookup_growable_url(file_work, varname, url, range, &
6748 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6749 call dbgmessage('@ url =%c', c1=trim(url))
6750 ! いよいよデータ取得
6751 !
6752 call open(var, url, err)
6753 call get(var, array, err)
6754 call close(var, err)
6755 call actual_iorange_dump(url, & ! (in)
6756 & actual_url, returned_time, & ! (out) optional
6757 & time_name = tname, & ! (in) optional
6758 & err = err) ! (out) optional
6759 if ( .not. present_and_true(quiet) ) then
6760 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6761 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), and dc_types::string.

Here is the call graph for this function:

◆ historygetint7pointertimed()

subroutine historygetint7pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 14268 of file historyget.f90.

14271 use dc_string, only: tochar, split
14272 use dc_types, only: string, dp
14273 use dc_trace, only: dbgmessage
14274 use dc_url, only: url_chop_iorange, gt_equal
14275 use dc_present, only: present_and_true
14276 ! MPI ライブラリ
14277 ! MPI library
14278 !
14279 use mpi
14280 implicit none
14281 character(*), intent(in):: file, varname
14282 real(DP), intent(in):: time
14283 logical, intent(in), optional:: quiet
14284 integer, pointer :: array(:,:,:,:,:,:,:)
14285 logical, intent(in), optional:: flag_mpi_split
14286 real(DP), intent(out), optional:: returned_time
14287 logical, intent(out), optional:: flag_time_exist
14288 logical, intent(out), optional:: err
14289 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
14290 character(STRING), pointer:: carray (:)
14291 character(STRING):: tname
14292 interface
14293 subroutine historygetint7pointer(&
14294 & file, varname, array, range, quiet, &
14295 & flag_mpi_split, returned_time, flag_time_exist, err)
14296 use dc_types, only: dp
14297 character(*), intent(in):: file
14298 character(*), intent(in):: varname
14299 character(*), intent(in), optional:: range
14300 logical, intent(in), optional:: quiet
14301 logical, intent(in), optional:: flag_mpi_split
14302 real(DP), intent(out), optional:: returned_time
14303 logical, intent(out), optional:: flag_time_exist
14304 logical, intent(out), optional:: err
14305 integer, pointer :: array(:,:,:,:,:,:,:)
14306 end subroutine historygetint7pointer
14307 end interface
14308 interface
14309 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
14310 character(*), intent(in):: file
14311 character(*), intent(in):: varname
14312 character(*), intent(out):: url
14313 character(*), intent(in), optional:: range
14314 logical, intent(out), optional:: flag_time_exist
14315 character(*), intent(out), optional:: time_name
14316 logical, intent(out), optional:: err
14317 end subroutine lookup_growable_url
14318 end interface
14319 interface
14320 function file_rename_mpi( file ) result(result)
14321 use dc_types, only: string
14322 character(*), intent(in):: file
14323 character(STRING):: result
14324 end function file_rename_mpi
14325 end interface
14326 continue
14327 file_work = file
14328 if ( present_and_true( flag_mpi_split ) ) &
14329 & file_work = file_rename_mpi( file_work )
14330 call lookup_growable_url(file = file_work, varname = varname, &
14331 & url = url, &
14332 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
14333 call url_chop_iorange( &
14334 & fullname = url, iorange = iorange, remainder = remainder )
14335 call split( str = iorange, carray = carray, sep = gt_equal )
14336 timevar_name = carray(1)
14337 deallocate( carray )
14338 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
14339 call historygetint7pointer( file = file, &
14340 & varname = varname, array = array, &
14341 & range = time_range, quiet = quiet, &
14342 & flag_mpi_split = flag_mpi_split, &
14343 & returned_time = returned_time, &
14344 & flag_time_exist = flag_time_exist, &
14345 & err = err )
subroutine historygetint7pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint7pointertimei()

subroutine historygetint7pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 18060 of file historyget.f90.

18063 use dc_string, only: tochar, split
18064 use dc_types, only: string, dp
18065 use dc_trace, only: dbgmessage
18066 use dc_url, only: url_chop_iorange, gt_equal
18067 use dc_present, only: present_and_true
18068 ! MPI ライブラリ
18069 ! MPI library
18070 !
18071 use mpi
18072 implicit none
18073 character(*), intent(in):: file, varname
18074 integer, intent(in):: time
18075 logical, intent(in), optional:: quiet
18076 integer, pointer :: array(:,:,:,:,:,:,:)
18077 logical, intent(in), optional:: flag_mpi_split
18078 real(DP), intent(out), optional:: returned_time
18079 logical, intent(out), optional:: flag_time_exist
18080 logical, intent(out), optional:: err
18081 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
18082 character(STRING), pointer:: carray (:)
18083 character(STRING):: tname
18084 interface
18085 subroutine historygetint7pointer(&
18086 & file, varname, array, range, quiet, &
18087 & flag_mpi_split, returned_time, flag_time_exist, err)
18088 use dc_types, only: dp
18089 character(*), intent(in):: file
18090 character(*), intent(in):: varname
18091 character(*), intent(in), optional:: range
18092 logical, intent(in), optional:: quiet
18093 logical, intent(in), optional:: flag_mpi_split
18094 real(DP), intent(out), optional:: returned_time
18095 logical, intent(out), optional:: flag_time_exist
18096 logical, intent(out), optional:: err
18097 integer, pointer :: array(:,:,:,:,:,:,:)
18098 end subroutine historygetint7pointer
18099 end interface
18100 interface
18101 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
18102 character(*), intent(in):: file
18103 character(*), intent(in):: varname
18104 character(*), intent(out):: url
18105 character(*), intent(in), optional:: range
18106 logical, intent(out), optional:: flag_time_exist
18107 character(*), intent(out), optional:: time_name
18108 logical, intent(out), optional:: err
18109 end subroutine lookup_growable_url
18110 end interface
18111 interface
18112 function file_rename_mpi( file ) result(result)
18113 use dc_types, only: string
18114 character(*), intent(in):: file
18115 character(STRING):: result
18116 end function file_rename_mpi
18117 end interface
18118 continue
18119 file_work = file
18120 if ( present_and_true( flag_mpi_split ) ) &
18121 & file_work = file_rename_mpi( file_work )
18122 call lookup_growable_url(file = file_work, varname = varname, &
18123 & url = url, &
18124 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
18125 call url_chop_iorange( &
18126 & fullname = url, iorange = iorange, remainder = remainder )
18127 call split( str = iorange, carray = carray, sep = gt_equal )
18128 timevar_name = carray(1)
18129 deallocate( carray )
18130 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
18131 call historygetint7pointer( file = file, &
18132 & varname = varname, array = array, &
18133 & range = time_range, quiet = quiet, &
18134 & flag_mpi_split = flag_mpi_split, &
18135 & returned_time = returned_time, &
18136 & flag_time_exist = flag_time_exist, &
18137 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint7pointertimer()

subroutine historygetint7pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 10476 of file historyget.f90.

10479 use dc_string, only: tochar, split
10480 use dc_types, only: string, dp, sp
10481 use dc_trace, only: dbgmessage
10482 use dc_url, only: url_chop_iorange, gt_equal
10483 use dc_present, only: present_and_true
10484 ! MPI ライブラリ
10485 ! MPI library
10486 !
10487 use mpi
10488 implicit none
10489 character(*), intent(in):: file, varname
10490 real(SP), intent(in):: time
10491 logical, intent(in), optional:: quiet
10492 integer, pointer :: array(:,:,:,:,:,:,:)
10493 logical, intent(in), optional:: flag_mpi_split
10494 real(DP), intent(out), optional:: returned_time
10495 logical, intent(out), optional:: flag_time_exist
10496 logical, intent(out), optional:: err
10497 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
10498 character(STRING), pointer:: carray (:)
10499 character(STRING):: tname
10500 interface
10501 subroutine historygetint7pointer(&
10502 & file, varname, array, range, quiet, &
10503 & flag_mpi_split, returned_time, flag_time_exist, err)
10504 use dc_types, only: dp
10505 character(*), intent(in):: file
10506 character(*), intent(in):: varname
10507 character(*), intent(in), optional:: range
10508 logical, intent(in), optional:: quiet
10509 logical, intent(in), optional:: flag_mpi_split
10510 real(DP), intent(out), optional:: returned_time
10511 logical, intent(out), optional:: flag_time_exist
10512 logical, intent(out), optional:: err
10513 integer, pointer :: array(:,:,:,:,:,:,:)
10514 end subroutine historygetint7pointer
10515 end interface
10516 interface
10517 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
10518 character(*), intent(in):: file
10519 character(*), intent(in):: varname
10520 character(*), intent(out):: url
10521 character(*), intent(in), optional:: range
10522 logical, intent(out), optional:: flag_time_exist
10523 character(*), intent(out), optional:: time_name
10524 logical, intent(out), optional:: err
10525 end subroutine lookup_growable_url
10526 end interface
10527 interface
10528 function file_rename_mpi( file ) result(result)
10529 use dc_types, only: string
10530 character(*), intent(in):: file
10531 character(STRING):: result
10532 end function file_rename_mpi
10533 end interface
10534 continue
10535 file_work = file
10536 if ( present_and_true( flag_mpi_split ) ) &
10537 & file_work = file_rename_mpi( file_work )
10538 call lookup_growable_url(file = file_work, varname = varname, &
10539 & url = url, &
10540 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
10541 call url_chop_iorange( &
10542 & fullname = url, iorange = iorange, remainder = remainder )
10543 call split( str = iorange, carray = carray, sep = gt_equal )
10544 timevar_name = carray(1)
10545 deallocate( carray )
10546 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
10547 call historygetint7pointer( file = file, &
10548 & varname = varname, array = array, &
10549 & range = time_range, quiet = quiet, &
10550 & flag_mpi_split = flag_mpi_split, &
10551 & returned_time = returned_time, &
10552 & flag_time_exist = flag_time_exist, &
10553 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint7timed()

subroutine historygetint7timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13636 of file historyget.f90.

13639 use dc_string, only: tochar, split
13640 use dc_types, only: string, dp
13641 use dc_trace, only: dbgmessage
13642 use dc_url, only: url_chop_iorange, gt_equal
13643 use dc_present, only: present_and_true
13644 ! MPI ライブラリ
13645 ! MPI library
13646 !
13647 use mpi
13648 implicit none
13649 character(*), intent(in):: file, varname
13650 real(DP), intent(in):: time
13651 logical, intent(in), optional:: quiet
13652 integer, intent(out) :: array(:,:,:,:,:,:,:)
13653 logical, intent(in), optional:: flag_mpi_split
13654 real(DP), intent(out), optional:: returned_time
13655 logical, intent(out), optional:: flag_time_exist
13656 logical, intent(out), optional:: err
13657 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13658 character(STRING), pointer:: carray (:)
13659 character(STRING):: tname
13660 interface
13661 subroutine historygetint7(&
13662 & file, varname, array, range, quiet, &
13663 & flag_mpi_split, returned_time, flag_time_exist, err)
13664 use dc_types, only: dp
13665 character(*), intent(in):: file
13666 character(*), intent(in):: varname
13667 character(*), intent(in), optional:: range
13668 logical, intent(in), optional:: quiet
13669 logical, intent(in), optional:: flag_mpi_split
13670 real(DP), intent(out), optional:: returned_time
13671 logical, intent(out), optional:: flag_time_exist
13672 logical, intent(out), optional:: err
13673 integer, intent(out) :: array(:,:,:,:,:,:,:)
13674 end subroutine historygetint7
13675 end interface
13676 interface
13677 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13678 character(*), intent(in):: file
13679 character(*), intent(in):: varname
13680 character(*), intent(out):: url
13681 character(*), intent(in), optional:: range
13682 logical, intent(out), optional:: flag_time_exist
13683 character(*), intent(out), optional:: time_name
13684 logical, intent(out), optional:: err
13685 end subroutine lookup_growable_url
13686 end interface
13687 interface
13688 function file_rename_mpi( file ) result(result)
13689 use dc_types, only: string
13690 character(*), intent(in):: file
13691 character(STRING):: result
13692 end function file_rename_mpi
13693 end interface
13694 continue
13695 file_work = file
13696 if ( present_and_true( flag_mpi_split ) ) &
13697 & file_work = file_rename_mpi( file_work )
13698 call lookup_growable_url(file = file_work, varname = varname, &
13699 & url = url, &
13700 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13701 call url_chop_iorange( &
13702 & fullname = url, iorange = iorange, remainder = remainder )
13703 call split( str = iorange, carray = carray, sep = gt_equal )
13704 timevar_name = carray(1)
13705 deallocate( carray )
13706 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13707 call historygetint7( file = file, &
13708 & varname = varname, array = array, &
13709 & range = time_range, quiet = quiet, &
13710 & flag_mpi_split = flag_mpi_split, &
13711 & returned_time = returned_time, &
13712 & flag_time_exist = flag_time_exist, &
13713 & err = err )
subroutine historygetint7(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint7timei()

subroutine historygetint7timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 17428 of file historyget.f90.

17431 use dc_string, only: tochar, split
17432 use dc_types, only: string, dp
17433 use dc_trace, only: dbgmessage
17434 use dc_url, only: url_chop_iorange, gt_equal
17435 use dc_present, only: present_and_true
17436 ! MPI ライブラリ
17437 ! MPI library
17438 !
17439 use mpi
17440 implicit none
17441 character(*), intent(in):: file, varname
17442 integer, intent(in):: time
17443 logical, intent(in), optional:: quiet
17444 integer, intent(out) :: array(:,:,:,:,:,:,:)
17445 logical, intent(in), optional:: flag_mpi_split
17446 real(DP), intent(out), optional:: returned_time
17447 logical, intent(out), optional:: flag_time_exist
17448 logical, intent(out), optional:: err
17449 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
17450 character(STRING), pointer:: carray (:)
17451 character(STRING):: tname
17452 interface
17453 subroutine historygetint7(&
17454 & file, varname, array, range, quiet, &
17455 & flag_mpi_split, returned_time, flag_time_exist, err)
17456 use dc_types, only: dp
17457 character(*), intent(in):: file
17458 character(*), intent(in):: varname
17459 character(*), intent(in), optional:: range
17460 logical, intent(in), optional:: quiet
17461 logical, intent(in), optional:: flag_mpi_split
17462 real(DP), intent(out), optional:: returned_time
17463 logical, intent(out), optional:: flag_time_exist
17464 logical, intent(out), optional:: err
17465 integer, intent(out) :: array(:,:,:,:,:,:,:)
17466 end subroutine historygetint7
17467 end interface
17468 interface
17469 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
17470 character(*), intent(in):: file
17471 character(*), intent(in):: varname
17472 character(*), intent(out):: url
17473 character(*), intent(in), optional:: range
17474 logical, intent(out), optional:: flag_time_exist
17475 character(*), intent(out), optional:: time_name
17476 logical, intent(out), optional:: err
17477 end subroutine lookup_growable_url
17478 end interface
17479 interface
17480 function file_rename_mpi( file ) result(result)
17481 use dc_types, only: string
17482 character(*), intent(in):: file
17483 character(STRING):: result
17484 end function file_rename_mpi
17485 end interface
17486 continue
17487 file_work = file
17488 if ( present_and_true( flag_mpi_split ) ) &
17489 & file_work = file_rename_mpi( file_work )
17490 call lookup_growable_url(file = file_work, varname = varname, &
17491 & url = url, &
17492 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
17493 call url_chop_iorange( &
17494 & fullname = url, iorange = iorange, remainder = remainder )
17495 call split( str = iorange, carray = carray, sep = gt_equal )
17496 timevar_name = carray(1)
17497 deallocate( carray )
17498 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
17499 call historygetint7( file = file, &
17500 & varname = varname, array = array, &
17501 & range = time_range, quiet = quiet, &
17502 & flag_mpi_split = flag_mpi_split, &
17503 & returned_time = returned_time, &
17504 & flag_time_exist = flag_time_exist, &
17505 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetint7timer()

subroutine historygetint7timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
integer, dimension(:,:,:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9844 of file historyget.f90.

9847 use dc_string, only: tochar, split
9848 use dc_types, only: string, dp, sp
9849 use dc_trace, only: dbgmessage
9850 use dc_url, only: url_chop_iorange, gt_equal
9851 use dc_present, only: present_and_true
9852 ! MPI ライブラリ
9853 ! MPI library
9854 !
9855 use mpi
9856 implicit none
9857 character(*), intent(in):: file, varname
9858 real(SP), intent(in):: time
9859 logical, intent(in), optional:: quiet
9860 integer, intent(out) :: array(:,:,:,:,:,:,:)
9861 logical, intent(in), optional:: flag_mpi_split
9862 real(DP), intent(out), optional:: returned_time
9863 logical, intent(out), optional:: flag_time_exist
9864 logical, intent(out), optional:: err
9865 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9866 character(STRING), pointer:: carray (:)
9867 character(STRING):: tname
9868 interface
9869 subroutine historygetint7(&
9870 & file, varname, array, range, quiet, &
9871 & flag_mpi_split, returned_time, flag_time_exist, err)
9872 use dc_types, only: dp
9873 character(*), intent(in):: file
9874 character(*), intent(in):: varname
9875 character(*), intent(in), optional:: range
9876 logical, intent(in), optional:: quiet
9877 logical, intent(in), optional:: flag_mpi_split
9878 real(DP), intent(out), optional:: returned_time
9879 logical, intent(out), optional:: flag_time_exist
9880 logical, intent(out), optional:: err
9881 integer, intent(out) :: array(:,:,:,:,:,:,:)
9882 end subroutine historygetint7
9883 end interface
9884 interface
9885 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9886 character(*), intent(in):: file
9887 character(*), intent(in):: varname
9888 character(*), intent(out):: url
9889 character(*), intent(in), optional:: range
9890 logical, intent(out), optional:: flag_time_exist
9891 character(*), intent(out), optional:: time_name
9892 logical, intent(out), optional:: err
9893 end subroutine lookup_growable_url
9894 end interface
9895 interface
9896 function file_rename_mpi( file ) result(result)
9897 use dc_types, only: string
9898 character(*), intent(in):: file
9899 character(STRING):: result
9900 end function file_rename_mpi
9901 end interface
9902 continue
9903 file_work = file
9904 if ( present_and_true( flag_mpi_split ) ) &
9905 & file_work = file_rename_mpi( file_work )
9906 call lookup_growable_url(file = file_work, varname = varname, &
9907 & url = url, &
9908 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9909 call url_chop_iorange( &
9910 & fullname = url, iorange = iorange, remainder = remainder )
9911 call split( str = iorange, carray = carray, sep = gt_equal )
9912 timevar_name = carray(1)
9913 deallocate( carray )
9914 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9915 call historygetint7( file = file, &
9916 & varname = varname, array = array, &
9917 & range = time_range, quiet = quiet, &
9918 & flag_mpi_split = flag_mpi_split, &
9919 & returned_time = returned_time, &
9920 & flag_time_exist = flag_time_exist, &
9921 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetint7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal0()

subroutine historygetreal0 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 1662 of file historyget.f90.

1664 use gtdata_types, only: gt_variable
1665 use gtdata_generic, only: open, inquire, close, get
1666 use dc_string, only: tochar
1668 use dc_regex, only: match
1669 use dc_types, only: string, dp, sp
1670 use dc_message, only: messagenotify
1672 ! MPI ライブラリ
1673 ! MPI library
1674 use mpi
1675 implicit none
1676 character(*), intent(in):: file
1677 character(*), intent(in):: varname
1678 character(*), intent(in), optional:: range
1679 logical, intent(in), optional:: quiet
1680 logical, intent(in), optional:: flag_mpi_split
1681 real(DP), intent(out), optional:: returned_time ! データの時刻
1682 logical, intent(out), optional:: flag_time_exist
1683 logical, intent(out), optional:: err
1684 real(SP), intent(out) :: array
1685 real(SP) :: array_tmp(1)
1686 type(GT_VARIABLE):: var
1687 character(STRING):: file_work, url, actual_url
1688 integer:: rank, alldims, array_rank
1689 integer:: domain
1690 character(STRING):: tname
1691 integer:: stat
1692 character(STRING):: cause_c
1693 character(*), parameter :: subname = "HistoryGetReal0"
1694 interface
1695 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1696 character(*), intent(in):: file
1697 character(*), intent(in):: varname
1698 character(*), intent(out):: url
1699 character(*), intent(in), optional:: range
1700 logical, intent(out), optional:: flag_time_exist
1701 character(*), intent(out), optional:: time_name
1702 logical, intent(out), optional:: err
1703 end subroutine lookup_growable_url
1704 end interface
1705 interface
1706 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1707 use dc_types, only: dp
1708 character(*), intent(in) :: url ! 変数 URL
1709 character(*), intent(out), optional :: actual_url
1710 ! 正確な入出力範囲指定
1711 real(DP), intent(out), optional:: returned_time ! データの時刻
1712 character(*), intent(in), optional:: time_name ! 時刻次元の名称
1713 logical, intent(out), optional :: err ! エラーのフラグ
1714 end subroutine actual_iorange_dump
1715 end interface
1716 interface
1717 function file_rename_mpi( file ) result(result)
1718 use dc_types, only: string
1719 character(*), intent(in):: file
1720 character(STRING):: result
1721 end function file_rename_mpi
1722 end interface
1723 continue
1724 cause_c = ''
1725 stat = dc_noerr
1726 file_work = file
1727 ! ファイル名の変更 (MPI 用)
1728 ! Change filename (for MPI)
1729 !
1730 if ( present_and_true( flag_mpi_split ) ) &
1731 & file_work = file_rename_mpi( file_work )
1732 ! 最新時刻の URL 取得
1733 ! Get URL of latest time
1734 !
1735 call lookup_growable_url(file_work, varname, url, range, &
1736 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1737 if ( present_and_true(err) ) then
1738 stat = gt_enoturl
1739 cause_c = url
1740 goto 999
1741 end if
1742 ! ファイルオープン
1743 ! File open
1744 call open( var, url, err = err )
1745 if ( present_and_true(err) ) then
1746 stat = gt_enoturl
1747 cause_c = url
1748 goto 999
1749 end if
1750 !-------------------------------------------------------------------
1751 ! 配列形状のチェック
1752 ! Check array shape
1753 !-------------------------------------------------------------------
1754 ! 入力ファイル中のデータの次元数
1755 ! Get size of dimesions in data of an input file
1756 !
1757 call inquire( var = var, & ! (in)
1758 & rank = rank, alldims = alldims ) ! (out)
1759 ! 引数の次元数のチェック (縮退されている場合には減らす)
1760 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1761 array_rank = 0
1762 ! 次元数の比較
1763 ! Compare sizes of dimensions
1764 !
1765 if ( .not. 0 == rank .and. .not. array_rank == rank ) then
1766 if ( .not. present_and_true(quiet) ) then
1767 call messagenotify('W', subname, &
1768 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1769 & i = (/rank, 0/), c1 = trim(url) )
1770 end if
1771 stat = gt_erankmismatch
1772 cause_c = 'array'
1773 goto 999
1774 end if
1775 ! 入力ファイル中のデータの配列形状取得
1776 ! Get shape of data in an input file
1777 !-------------------------------------
1778 ! データ取得
1779 ! Get data
1780 call inquire( var = var, & ! (in)
1781 & size = domain ) ! (out)
1782 call get( var = var, & ! (inout)
1783 & nvalue = domain, & ! (in)
1784 & value = array_tmp) ! (out)
1785 array = array_tmp(1)
1786 call close( var )
1787 !-------------------------------------
1788 ! データファイル名と切り出し範囲の印字
1789 ! Print data filename and clipping range
1790 call actual_iorange_dump(url, & ! (in)
1791 & actual_url, returned_time, & ! (out) optional
1792 & time_name = tname, & ! (in) optional
1793 & err = err) ! (out) optional
1794 if ( .not. present_and_true(quiet) ) then
1795 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1796 end if
1797999 continue
1798 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal0pointer()

subroutine historygetreal0pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5457 of file historyget.f90.

5459 use gtdata_types, only: gt_variable
5460 use gtdata_generic, only: open, inquire, close, get
5461 use dc_string, only: tochar
5463 use dc_types, only: string, dp, sp
5464 use dc_message, only: messagenotify
5465 use dc_trace, only: dbgmessage
5466 ! MPI ライブラリ
5467 ! MPI library
5468 !
5469 use mpi
5470 implicit none
5471 character(*), intent(in):: file
5472 character(*), intent(in):: varname
5473 character(*), intent(in), optional:: range
5474 logical, intent(in), optional:: quiet
5475 logical, intent(in), optional:: flag_mpi_split
5476 real(DP), intent(out), optional:: returned_time ! データの時刻
5477 logical, intent(out), optional:: flag_time_exist
5478 logical, intent(out), optional:: err
5479 integer:: domain
5480 real(SP), pointer :: array ! (out)
5481 real(SP), target :: array_tmp(1)
5482 type(GT_VARIABLE):: var
5483 character(STRING):: file_work, url, actual_url
5484 character(STRING):: tname
5485 character(*), parameter :: subname = "HistoryGetReal0Pointer"
5486 interface
5487 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5488 character(*), intent(in):: file
5489 character(*), intent(in):: varname
5490 character(*), intent(out):: url
5491 character(*), intent(in), optional:: range
5492 logical, intent(out), optional:: flag_time_exist
5493 character(*), intent(out), optional:: time_name
5494 logical, intent(out), optional:: err
5495 end subroutine lookup_growable_url
5496 end interface
5497 interface
5498 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5499 use dc_types, only: dp
5500 character(*), intent(in) :: url ! 変数 URL
5501 character(*), intent(out), optional :: actual_url
5502 ! 正確な入出力範囲指定
5503 real(DP), intent(out), optional:: returned_time ! データの時刻
5504 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5505 logical, intent(out), optional :: err ! エラーのフラグ
5506 end subroutine actual_iorange_dump
5507 end interface
5508 interface
5509 function file_rename_mpi( file ) result(result)
5510 use dc_types, only: string
5511 character(*), intent(in):: file
5512 character(STRING):: result
5513 end function file_rename_mpi
5514 end interface
5515 continue
5516 file_work = file
5517 ! ファイル名の変更 (MPI 用)
5518 ! Change filename (for MPI)
5519 !
5520 if ( present_and_true( flag_mpi_split ) ) &
5521 & file_work = file_rename_mpi( file_work )
5522 ! 必要な情報を gtool 変数化
5523 !
5524 call lookup_growable_url(file_work, varname, url, range, &
5525 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5526 allocate(array)
5527 call dbgmessage('@ url =%c', c1=trim(url))
5528 ! いよいよデータ取得
5529 !
5530 call open(var, url, err)
5531 call inquire(var=var, size=domain)
5532 call get(var, array_tmp, domain, err)
5533 array = array_tmp(1)
5534 call close(var, err)
5535 call actual_iorange_dump(url, & ! (in)
5536 & actual_url, returned_time, & ! (out) optional
5537 & time_name = tname, & ! (in) optional
5538 & err = err) ! (out) optional
5539 if ( .not. present_and_true(quiet) ) then
5540 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5541 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal0pointertimed()

subroutine historygetreal0pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12451 of file historyget.f90.

12454 use dc_string, only: tochar, split
12455 use dc_types, only: string, dp, sp
12456 use dc_trace, only: dbgmessage
12457 use dc_url, only: url_chop_iorange, gt_equal
12458 use dc_present, only: present_and_true
12459 ! MPI ライブラリ
12460 ! MPI library
12461 !
12462 use mpi
12463 implicit none
12464 character(*), intent(in):: file, varname
12465 real(DP), intent(in):: time
12466 logical, intent(in), optional:: quiet
12467 real(SP), pointer :: array
12468 logical, intent(in), optional:: flag_mpi_split
12469 real(DP), intent(out), optional:: returned_time
12470 logical, intent(out), optional:: flag_time_exist
12471 logical, intent(out), optional:: err
12472 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12473 character(STRING), pointer:: carray (:)
12474 character(STRING):: tname
12475 interface
12476 subroutine historygetreal0pointer(&
12477 & file, varname, array, range, quiet, &
12478 & flag_mpi_split, returned_time, flag_time_exist, err)
12479 use dc_types, only: dp, sp
12480 character(*), intent(in):: file
12481 character(*), intent(in):: varname
12482 character(*), intent(in), optional:: range
12483 logical, intent(in), optional:: quiet
12484 logical, intent(in), optional:: flag_mpi_split
12485 real(DP), intent(out), optional:: returned_time
12486 logical, intent(out), optional:: flag_time_exist
12487 logical, intent(out), optional:: err
12488 real(SP), pointer :: array
12489 end subroutine historygetreal0pointer
12490 end interface
12491 interface
12492 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12493 character(*), intent(in):: file
12494 character(*), intent(in):: varname
12495 character(*), intent(out):: url
12496 character(*), intent(in), optional:: range
12497 logical, intent(out), optional:: flag_time_exist
12498 character(*), intent(out), optional:: time_name
12499 logical, intent(out), optional:: err
12500 end subroutine lookup_growable_url
12501 end interface
12502 interface
12503 function file_rename_mpi( file ) result(result)
12504 use dc_types, only: string
12505 character(*), intent(in):: file
12506 character(STRING):: result
12507 end function file_rename_mpi
12508 end interface
12509 continue
12510 file_work = file
12511 if ( present_and_true( flag_mpi_split ) ) &
12512 & file_work = file_rename_mpi( file_work )
12513 call lookup_growable_url(file = file_work, varname = varname, &
12514 & url = url, &
12515 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12516 call url_chop_iorange( &
12517 & fullname = url, iorange = iorange, remainder = remainder )
12518 call split( str = iorange, carray = carray, sep = gt_equal )
12519 timevar_name = carray(1)
12520 deallocate( carray )
12521 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12522 call historygetreal0pointer( file = file, &
12523 & varname = varname, array = array, &
12524 & range = time_range, quiet = quiet, &
12525 & flag_mpi_split = flag_mpi_split, &
12526 & returned_time = returned_time, &
12527 & flag_time_exist = flag_time_exist, &
12528 & err = err )
subroutine historygetreal0pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal0pointertimei()

subroutine historygetreal0pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16243 of file historyget.f90.

16246 use dc_string, only: tochar, split
16247 use dc_types, only: string, dp, sp
16248 use dc_trace, only: dbgmessage
16249 use dc_url, only: url_chop_iorange, gt_equal
16250 use dc_present, only: present_and_true
16251 ! MPI ライブラリ
16252 ! MPI library
16253 !
16254 use mpi
16255 implicit none
16256 character(*), intent(in):: file, varname
16257 integer, intent(in):: time
16258 logical, intent(in), optional:: quiet
16259 real(SP), pointer :: array
16260 logical, intent(in), optional:: flag_mpi_split
16261 real(DP), intent(out), optional:: returned_time
16262 logical, intent(out), optional:: flag_time_exist
16263 logical, intent(out), optional:: err
16264 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16265 character(STRING), pointer:: carray (:)
16266 character(STRING):: tname
16267 interface
16268 subroutine historygetreal0pointer(&
16269 & file, varname, array, range, quiet, &
16270 & flag_mpi_split, returned_time, flag_time_exist, err)
16271 use dc_types, only: dp, sp
16272 character(*), intent(in):: file
16273 character(*), intent(in):: varname
16274 character(*), intent(in), optional:: range
16275 logical, intent(in), optional:: quiet
16276 logical, intent(in), optional:: flag_mpi_split
16277 real(DP), intent(out), optional:: returned_time
16278 logical, intent(out), optional:: flag_time_exist
16279 logical, intent(out), optional:: err
16280 real(SP), pointer :: array
16281 end subroutine historygetreal0pointer
16282 end interface
16283 interface
16284 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16285 character(*), intent(in):: file
16286 character(*), intent(in):: varname
16287 character(*), intent(out):: url
16288 character(*), intent(in), optional:: range
16289 logical, intent(out), optional:: flag_time_exist
16290 character(*), intent(out), optional:: time_name
16291 logical, intent(out), optional:: err
16292 end subroutine lookup_growable_url
16293 end interface
16294 interface
16295 function file_rename_mpi( file ) result(result)
16296 use dc_types, only: string
16297 character(*), intent(in):: file
16298 character(STRING):: result
16299 end function file_rename_mpi
16300 end interface
16301 continue
16302 file_work = file
16303 if ( present_and_true( flag_mpi_split ) ) &
16304 & file_work = file_rename_mpi( file_work )
16305 call lookup_growable_url(file = file_work, varname = varname, &
16306 & url = url, &
16307 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16308 call url_chop_iorange( &
16309 & fullname = url, iorange = iorange, remainder = remainder )
16310 call split( str = iorange, carray = carray, sep = gt_equal )
16311 timevar_name = carray(1)
16312 deallocate( carray )
16313 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16314 call historygetreal0pointer( file = file, &
16315 & varname = varname, array = array, &
16316 & range = time_range, quiet = quiet, &
16317 & flag_mpi_split = flag_mpi_split, &
16318 & returned_time = returned_time, &
16319 & flag_time_exist = flag_time_exist, &
16320 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal0pointertimer()

subroutine historygetreal0pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8659 of file historyget.f90.

8662 use dc_string, only: tochar, split
8663 use dc_types, only: string, dp, sp
8664 use dc_trace, only: dbgmessage
8665 use dc_url, only: url_chop_iorange, gt_equal
8666 use dc_present, only: present_and_true
8667 ! MPI ライブラリ
8668 ! MPI library
8669 !
8670 use mpi
8671 implicit none
8672 character(*), intent(in):: file, varname
8673 real(SP), intent(in):: time
8674 logical, intent(in), optional:: quiet
8675 real(SP), pointer :: array
8676 logical, intent(in), optional:: flag_mpi_split
8677 real(DP), intent(out), optional:: returned_time
8678 logical, intent(out), optional:: flag_time_exist
8679 logical, intent(out), optional:: err
8680 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8681 character(STRING), pointer:: carray (:)
8682 character(STRING):: tname
8683 interface
8684 subroutine historygetreal0pointer(&
8685 & file, varname, array, range, quiet, &
8686 & flag_mpi_split, returned_time, flag_time_exist, err)
8687 use dc_types, only: dp, sp
8688 character(*), intent(in):: file
8689 character(*), intent(in):: varname
8690 character(*), intent(in), optional:: range
8691 logical, intent(in), optional:: quiet
8692 logical, intent(in), optional:: flag_mpi_split
8693 real(DP), intent(out), optional:: returned_time
8694 logical, intent(out), optional:: flag_time_exist
8695 logical, intent(out), optional:: err
8696 real(SP), pointer :: array
8697 end subroutine historygetreal0pointer
8698 end interface
8699 interface
8700 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8701 character(*), intent(in):: file
8702 character(*), intent(in):: varname
8703 character(*), intent(out):: url
8704 character(*), intent(in), optional:: range
8705 logical, intent(out), optional:: flag_time_exist
8706 character(*), intent(out), optional:: time_name
8707 logical, intent(out), optional:: err
8708 end subroutine lookup_growable_url
8709 end interface
8710 interface
8711 function file_rename_mpi( file ) result(result)
8712 use dc_types, only: string
8713 character(*), intent(in):: file
8714 character(STRING):: result
8715 end function file_rename_mpi
8716 end interface
8717 continue
8718 file_work = file
8719 if ( present_and_true( flag_mpi_split ) ) &
8720 & file_work = file_rename_mpi( file_work )
8721 call lookup_growable_url(file = file_work, varname = varname, &
8722 & url = url, &
8723 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8724 call url_chop_iorange( &
8725 & fullname = url, iorange = iorange, remainder = remainder )
8726 call split( str = iorange, carray = carray, sep = gt_equal )
8727 timevar_name = carray(1)
8728 deallocate( carray )
8729 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8730 call historygetreal0pointer( file = file, &
8731 & varname = varname, array = array, &
8732 & range = time_range, quiet = quiet, &
8733 & flag_mpi_split = flag_mpi_split, &
8734 & returned_time = returned_time, &
8735 & flag_time_exist = flag_time_exist, &
8736 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal0pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal0timed()

subroutine historygetreal0timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11819 of file historyget.f90.

11822 use dc_string, only: tochar, split
11823 use dc_types, only: string, dp, sp
11824 use dc_trace, only: dbgmessage
11825 use dc_url, only: url_chop_iorange, gt_equal
11826 use dc_present, only: present_and_true
11827 ! MPI ライブラリ
11828 ! MPI library
11829 !
11830 use mpi
11831 implicit none
11832 character(*), intent(in):: file, varname
11833 real(DP), intent(in):: time
11834 logical, intent(in), optional:: quiet
11835 real(SP), intent(out) :: array
11836 logical, intent(in), optional:: flag_mpi_split
11837 real(DP), intent(out), optional:: returned_time
11838 logical, intent(out), optional:: flag_time_exist
11839 logical, intent(out), optional:: err
11840 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11841 character(STRING), pointer:: carray (:)
11842 character(STRING):: tname
11843 interface
11844 subroutine historygetreal0(&
11845 & file, varname, array, range, quiet, &
11846 & flag_mpi_split, returned_time, flag_time_exist, err)
11847 use dc_types, only: dp, sp
11848 character(*), intent(in):: file
11849 character(*), intent(in):: varname
11850 character(*), intent(in), optional:: range
11851 logical, intent(in), optional:: quiet
11852 logical, intent(in), optional:: flag_mpi_split
11853 real(DP), intent(out), optional:: returned_time
11854 logical, intent(out), optional:: flag_time_exist
11855 logical, intent(out), optional:: err
11856 real(SP), intent(out) :: array
11857 end subroutine historygetreal0
11858 end interface
11859 interface
11860 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11861 character(*), intent(in):: file
11862 character(*), intent(in):: varname
11863 character(*), intent(out):: url
11864 character(*), intent(in), optional:: range
11865 logical, intent(out), optional:: flag_time_exist
11866 character(*), intent(out), optional:: time_name
11867 logical, intent(out), optional:: err
11868 end subroutine lookup_growable_url
11869 end interface
11870 interface
11871 function file_rename_mpi( file ) result(result)
11872 use dc_types, only: string
11873 character(*), intent(in):: file
11874 character(STRING):: result
11875 end function file_rename_mpi
11876 end interface
11877 continue
11878 file_work = file
11879 if ( present_and_true( flag_mpi_split ) ) &
11880 & file_work = file_rename_mpi( file_work )
11881 call lookup_growable_url(file = file_work, varname = varname, &
11882 & url = url, &
11883 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11884 call url_chop_iorange( &
11885 & fullname = url, iorange = iorange, remainder = remainder )
11886 call split( str = iorange, carray = carray, sep = gt_equal )
11887 timevar_name = carray(1)
11888 deallocate( carray )
11889 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11890 call historygetreal0( file = file, &
11891 & varname = varname, array = array, &
11892 & range = time_range, quiet = quiet, &
11893 & flag_mpi_split = flag_mpi_split, &
11894 & returned_time = returned_time, &
11895 & flag_time_exist = flag_time_exist, &
11896 & err = err )
subroutine historygetreal0(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal0timei()

subroutine historygetreal0timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15611 of file historyget.f90.

15614 use dc_string, only: tochar, split
15615 use dc_types, only: string, dp, sp
15616 use dc_trace, only: dbgmessage
15617 use dc_url, only: url_chop_iorange, gt_equal
15618 use dc_present, only: present_and_true
15619 ! MPI ライブラリ
15620 ! MPI library
15621 !
15622 use mpi
15623 implicit none
15624 character(*), intent(in):: file, varname
15625 integer, intent(in):: time
15626 logical, intent(in), optional:: quiet
15627 real(SP), intent(out) :: array
15628 logical, intent(in), optional:: flag_mpi_split
15629 real(DP), intent(out), optional:: returned_time
15630 logical, intent(out), optional:: flag_time_exist
15631 logical, intent(out), optional:: err
15632 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15633 character(STRING), pointer:: carray (:)
15634 character(STRING):: tname
15635 interface
15636 subroutine historygetreal0(&
15637 & file, varname, array, range, quiet, &
15638 & flag_mpi_split, returned_time, flag_time_exist, err)
15639 use dc_types, only: dp, sp
15640 character(*), intent(in):: file
15641 character(*), intent(in):: varname
15642 character(*), intent(in), optional:: range
15643 logical, intent(in), optional:: quiet
15644 logical, intent(in), optional:: flag_mpi_split
15645 real(DP), intent(out), optional:: returned_time
15646 logical, intent(out), optional:: flag_time_exist
15647 logical, intent(out), optional:: err
15648 real(SP), intent(out) :: array
15649 end subroutine historygetreal0
15650 end interface
15651 interface
15652 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15653 character(*), intent(in):: file
15654 character(*), intent(in):: varname
15655 character(*), intent(out):: url
15656 character(*), intent(in), optional:: range
15657 logical, intent(out), optional:: flag_time_exist
15658 character(*), intent(out), optional:: time_name
15659 logical, intent(out), optional:: err
15660 end subroutine lookup_growable_url
15661 end interface
15662 interface
15663 function file_rename_mpi( file ) result(result)
15664 use dc_types, only: string
15665 character(*), intent(in):: file
15666 character(STRING):: result
15667 end function file_rename_mpi
15668 end interface
15669 continue
15670 file_work = file
15671 if ( present_and_true( flag_mpi_split ) ) &
15672 & file_work = file_rename_mpi( file_work )
15673 call lookup_growable_url(file = file_work, varname = varname, &
15674 & url = url, &
15675 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15676 call url_chop_iorange( &
15677 & fullname = url, iorange = iorange, remainder = remainder )
15678 call split( str = iorange, carray = carray, sep = gt_equal )
15679 timevar_name = carray(1)
15680 deallocate( carray )
15681 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15682 call historygetreal0( file = file, &
15683 & varname = varname, array = array, &
15684 & range = time_range, quiet = quiet, &
15685 & flag_mpi_split = flag_mpi_split, &
15686 & returned_time = returned_time, &
15687 & flag_time_exist = flag_time_exist, &
15688 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal0timer()

subroutine historygetreal0timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8027 of file historyget.f90.

8030 use dc_string, only: tochar, split
8031 use dc_types, only: string, dp, sp
8032 use dc_trace, only: dbgmessage
8033 use dc_url, only: url_chop_iorange, gt_equal
8034 use dc_present, only: present_and_true
8035 ! MPI ライブラリ
8036 ! MPI library
8037 !
8038 use mpi
8039 implicit none
8040 character(*), intent(in):: file, varname
8041 real(SP), intent(in):: time
8042 logical, intent(in), optional:: quiet
8043 real(SP), intent(out) :: array
8044 logical, intent(in), optional:: flag_mpi_split
8045 real(DP), intent(out), optional:: returned_time
8046 logical, intent(out), optional:: flag_time_exist
8047 logical, intent(out), optional:: err
8048 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8049 character(STRING), pointer:: carray (:)
8050 character(STRING):: tname
8051 interface
8052 subroutine historygetreal0(&
8053 & file, varname, array, range, quiet, &
8054 & flag_mpi_split, returned_time, flag_time_exist, err)
8055 use dc_types, only: dp, sp
8056 character(*), intent(in):: file
8057 character(*), intent(in):: varname
8058 character(*), intent(in), optional:: range
8059 logical, intent(in), optional:: quiet
8060 logical, intent(in), optional:: flag_mpi_split
8061 real(DP), intent(out), optional:: returned_time
8062 logical, intent(out), optional:: flag_time_exist
8063 logical, intent(out), optional:: err
8064 real(SP), intent(out) :: array
8065 end subroutine historygetreal0
8066 end interface
8067 interface
8068 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8069 character(*), intent(in):: file
8070 character(*), intent(in):: varname
8071 character(*), intent(out):: url
8072 character(*), intent(in), optional:: range
8073 logical, intent(out), optional:: flag_time_exist
8074 character(*), intent(out), optional:: time_name
8075 logical, intent(out), optional:: err
8076 end subroutine lookup_growable_url
8077 end interface
8078 interface
8079 function file_rename_mpi( file ) result(result)
8080 use dc_types, only: string
8081 character(*), intent(in):: file
8082 character(STRING):: result
8083 end function file_rename_mpi
8084 end interface
8085 continue
8086 file_work = file
8087 if ( present_and_true( flag_mpi_split ) ) &
8088 & file_work = file_rename_mpi( file_work )
8089 call lookup_growable_url(file = file_work, varname = varname, &
8090 & url = url, &
8091 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8092 call url_chop_iorange( &
8093 & fullname = url, iorange = iorange, remainder = remainder )
8094 call split( str = iorange, carray = carray, sep = gt_equal )
8095 timevar_name = carray(1)
8096 deallocate( carray )
8097 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8098 call historygetreal0( file = file, &
8099 & varname = varname, array = array, &
8100 & range = time_range, quiet = quiet, &
8101 & flag_mpi_split = flag_mpi_split, &
8102 & returned_time = returned_time, &
8103 & flag_time_exist = flag_time_exist, &
8104 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal0(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal1()

subroutine historygetreal1 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 1800 of file historyget.f90.

1802 use gtdata_types, only: gt_variable
1803 use gtdata_generic, only: open, inquire, close, get
1804 use dc_string, only: tochar
1806 use dc_regex, only: match
1807 use dc_types, only: string, dp, sp
1808 use dc_message, only: messagenotify
1811 ! MPI ライブラリ
1812 ! MPI library
1813 use mpi
1814 implicit none
1815 character(*), intent(in):: file
1816 character(*), intent(in):: varname
1817 character(*), intent(in), optional:: range
1818 logical, intent(in), optional:: quiet
1819 logical, intent(in), optional:: flag_mpi_split
1820 real(DP), intent(out), optional:: returned_time ! データの時刻
1821 logical, intent(out), optional:: flag_time_exist
1822 logical, intent(out), optional:: err
1823 real(SP), intent(out) :: array(:)
1824 real(SP), allocatable :: array_tmp(:)
1825 integer:: array_allsize
1826 integer:: array_shape(1), data_shape(1), array_shape_check(1)
1827 integer:: allcount
1828 logical:: inq_err
1829 type(GT_VARIABLE):: var
1830 character(STRING):: file_work, url, actual_url
1831 integer:: rank, alldims, array_rank
1832 integer:: domain
1833 character(STRING):: tname
1834 integer:: stat
1835 character(STRING):: cause_c
1836 character(*), parameter :: subname = "HistoryGetReal1"
1837 interface
1838 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
1839 character(*), intent(in):: file
1840 character(*), intent(in):: varname
1841 character(*), intent(out):: url
1842 character(*), intent(in), optional:: range
1843 logical, intent(out), optional:: flag_time_exist
1844 character(*), intent(out), optional:: time_name
1845 logical, intent(out), optional:: err
1846 end subroutine lookup_growable_url
1847 end interface
1848 interface
1849 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
1850 use dc_types, only: dp
1851 character(*), intent(in) :: url ! 変数 URL
1852 character(*), intent(out), optional :: actual_url
1853 ! 正確な入出力範囲指定
1854 real(DP), intent(out), optional:: returned_time ! データの時刻
1855 character(*), intent(in), optional:: time_name ! 時刻次元の名称
1856 logical, intent(out), optional :: err ! エラーのフラグ
1857 end subroutine actual_iorange_dump
1858 end interface
1859 interface
1860 function file_rename_mpi( file ) result(result)
1861 use dc_types, only: string
1862 character(*), intent(in):: file
1863 character(STRING):: result
1864 end function file_rename_mpi
1865 end interface
1866 continue
1867 cause_c = ''
1868 stat = dc_noerr
1869 file_work = file
1870 array_shape = shape( array )
1871 array_allsize = size( array )
1872 ! ファイル名の変更 (MPI 用)
1873 ! Change filename (for MPI)
1874 !
1875 if ( present_and_true( flag_mpi_split ) ) &
1876 & file_work = file_rename_mpi( file_work )
1877 ! 最新時刻の URL 取得
1878 ! Get URL of latest time
1879 !
1880 call lookup_growable_url(file_work, varname, url, range, &
1881 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
1882 if ( present_and_true(err) ) then
1883 stat = gt_enoturl
1884 cause_c = url
1885 goto 999
1886 end if
1887 ! ファイルオープン
1888 ! File open
1889 call open( var, url, err = err )
1890 if ( present_and_true(err) ) then
1891 stat = gt_enoturl
1892 cause_c = url
1893 goto 999
1894 end if
1895 !-------------------------------------------------------------------
1896 ! 配列形状のチェック
1897 ! Check array shape
1898 !-------------------------------------------------------------------
1899 ! 入力ファイル中のデータの次元数
1900 ! Get size of dimesions in data of an input file
1901 !
1902 call inquire( var = var, & ! (in)
1903 & rank = rank, alldims = alldims ) ! (out)
1904 ! 引数の次元数のチェック (縮退されている場合には減らす)
1905 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
1906 array_rank = 1
1907 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
1908 ! 次元数の比較
1909 ! Compare sizes of dimensions
1910 !
1911 if ( .not. 1 == rank .and. .not. array_rank == rank ) then
1912 if ( .not. present_and_true(quiet) ) then
1913 call messagenotify('W', subname, &
1914 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
1915 & i = (/rank, 1/), c1 = trim(url) )
1916 end if
1917 stat = gt_erankmismatch
1918 cause_c = 'array'
1919 goto 999
1920 end if
1921 ! 入力ファイル中のデータの配列形状取得
1922 ! Get shape of data in an input file
1923 call inquire( var = var , dimord = 1, & ! (in)
1924 & allcount = allcount, err = inq_err ) ! (out)
1925 if ( .not. inq_err ) then
1926 data_shape(1) = allcount
1927 else
1928 data_shape(1) = 1
1929 end if
1930 ! 引数の配列形状整形
1931 ! Arrange shape of an argument
1932 !
1933 array_shape_check = array_shape
1934 ! 配列形状の比較
1935 ! Compare shapes
1936 !
1937 if ( .not. all( array_shape_check == data_shape ) ) then
1938 if ( .not. present_and_true(quiet) ) then
1939 call messagenotify('W', subname, &
1940 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
1941 & c1 = trim( url ), &
1942 & c2 = trim( tochar( data_shape(1:rank) ) ), &
1943 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
1944 end if
1945 stat = gt_eargsizemismatch
1946 cause_c = 'array'
1947 goto 999
1948 end if
1949 !-------------------------------------
1950 ! データ取得
1951 ! Get data
1952 call inquire( var = var, & ! (in)
1953 & size = domain ) ! (out)
1954 if ( allocated( array_tmp ) ) deallocate( array_tmp )
1955 allocate( array_tmp(array_allsize) )
1956 call get( var, array_tmp, domain )
1957 array = reshape( array_tmp, array_shape )
1958 deallocate( array_tmp )
1959 call close( var )
1960 !-------------------------------------
1961 ! データファイル名と切り出し範囲の印字
1962 ! Print data filename and clipping range
1963 call actual_iorange_dump(url, & ! (in)
1964 & actual_url, returned_time, & ! (out) optional
1965 & time_name = tname, & ! (in) optional
1966 & err = err) ! (out) optional
1967 if ( .not. present_and_true(quiet) ) then
1968 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
1969 end if
1970999 continue
1971 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal1pointer()

subroutine historygetreal1pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5543 of file historyget.f90.

5545 use gtdata_types, only: gt_variable
5546 use gtdata_generic, only: open, inquire, close, get
5547 use dc_string, only: tochar
5549 use dc_types, only: string, dp, sp
5550 use dc_message, only: messagenotify
5551 use dc_trace, only: dbgmessage
5552 ! MPI ライブラリ
5553 ! MPI library
5554 !
5555 use mpi
5556 implicit none
5557 character(*), intent(in):: file
5558 character(*), intent(in):: varname
5559 character(*), intent(in), optional:: range
5560 logical, intent(in), optional:: quiet
5561 logical, intent(in), optional:: flag_mpi_split
5562 real(DP), intent(out), optional:: returned_time ! データの時刻
5563 logical, intent(out), optional:: flag_time_exist
5564 logical, intent(out), optional:: err
5565 real(SP), pointer :: array(:) ! (out)
5566 type(GT_VARIABLE):: var
5567 character(STRING):: file_work, url, actual_url
5568 character(STRING):: tname
5569 character(*), parameter :: subname = "HistoryGetReal1Pointer"
5570 interface
5571 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5572 character(*), intent(in):: file
5573 character(*), intent(in):: varname
5574 character(*), intent(out):: url
5575 character(*), intent(in), optional:: range
5576 logical, intent(out), optional:: flag_time_exist
5577 character(*), intent(out), optional:: time_name
5578 logical, intent(out), optional:: err
5579 end subroutine lookup_growable_url
5580 end interface
5581 interface
5582 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5583 use dc_types, only: dp
5584 character(*), intent(in) :: url ! 変数 URL
5585 character(*), intent(out), optional :: actual_url
5586 ! 正確な入出力範囲指定
5587 real(DP), intent(out), optional:: returned_time ! データの時刻
5588 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5589 logical, intent(out), optional :: err ! エラーのフラグ
5590 end subroutine actual_iorange_dump
5591 end interface
5592 interface
5593 function file_rename_mpi( file ) result(result)
5594 use dc_types, only: string
5595 character(*), intent(in):: file
5596 character(STRING):: result
5597 end function file_rename_mpi
5598 end interface
5599 continue
5600 file_work = file
5601 ! ファイル名の変更 (MPI 用)
5602 ! Change filename (for MPI)
5603 !
5604 if ( present_and_true( flag_mpi_split ) ) &
5605 & file_work = file_rename_mpi( file_work )
5606 ! 必要な情報を gtool 変数化
5607 !
5608 call lookup_growable_url(file_work, varname, url, range, &
5609 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5610 call dbgmessage('@ url =%c', c1=trim(url))
5611 ! いよいよデータ取得
5612 !
5613 call open(var, url, err)
5614 call get(var, array, err)
5615 call close(var, err)
5616 call actual_iorange_dump(url, & ! (in)
5617 & actual_url, returned_time, & ! (out) optional
5618 & time_name = tname, & ! (in) optional
5619 & err = err) ! (out) optional
5620 if ( .not. present_and_true(quiet) ) then
5621 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5622 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal1pointertimed()

subroutine historygetreal1pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12530 of file historyget.f90.

12533 use dc_string, only: tochar, split
12534 use dc_types, only: string, dp, sp
12535 use dc_trace, only: dbgmessage
12536 use dc_url, only: url_chop_iorange, gt_equal
12537 use dc_present, only: present_and_true
12538 ! MPI ライブラリ
12539 ! MPI library
12540 !
12541 use mpi
12542 implicit none
12543 character(*), intent(in):: file, varname
12544 real(DP), intent(in):: time
12545 logical, intent(in), optional:: quiet
12546 real(SP), pointer :: array(:)
12547 logical, intent(in), optional:: flag_mpi_split
12548 real(DP), intent(out), optional:: returned_time
12549 logical, intent(out), optional:: flag_time_exist
12550 logical, intent(out), optional:: err
12551 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12552 character(STRING), pointer:: carray (:)
12553 character(STRING):: tname
12554 interface
12555 subroutine historygetreal1pointer(&
12556 & file, varname, array, range, quiet, &
12557 & flag_mpi_split, returned_time, flag_time_exist, err)
12558 use dc_types, only: dp, sp
12559 character(*), intent(in):: file
12560 character(*), intent(in):: varname
12561 character(*), intent(in), optional:: range
12562 logical, intent(in), optional:: quiet
12563 logical, intent(in), optional:: flag_mpi_split
12564 real(DP), intent(out), optional:: returned_time
12565 logical, intent(out), optional:: flag_time_exist
12566 logical, intent(out), optional:: err
12567 real(SP), pointer :: array(:)
12568 end subroutine historygetreal1pointer
12569 end interface
12570 interface
12571 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12572 character(*), intent(in):: file
12573 character(*), intent(in):: varname
12574 character(*), intent(out):: url
12575 character(*), intent(in), optional:: range
12576 logical, intent(out), optional:: flag_time_exist
12577 character(*), intent(out), optional:: time_name
12578 logical, intent(out), optional:: err
12579 end subroutine lookup_growable_url
12580 end interface
12581 interface
12582 function file_rename_mpi( file ) result(result)
12583 use dc_types, only: string
12584 character(*), intent(in):: file
12585 character(STRING):: result
12586 end function file_rename_mpi
12587 end interface
12588 continue
12589 file_work = file
12590 if ( present_and_true( flag_mpi_split ) ) &
12591 & file_work = file_rename_mpi( file_work )
12592 call lookup_growable_url(file = file_work, varname = varname, &
12593 & url = url, &
12594 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12595 call url_chop_iorange( &
12596 & fullname = url, iorange = iorange, remainder = remainder )
12597 call split( str = iorange, carray = carray, sep = gt_equal )
12598 timevar_name = carray(1)
12599 deallocate( carray )
12600 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12601 call historygetreal1pointer( file = file, &
12602 & varname = varname, array = array, &
12603 & range = time_range, quiet = quiet, &
12604 & flag_mpi_split = flag_mpi_split, &
12605 & returned_time = returned_time, &
12606 & flag_time_exist = flag_time_exist, &
12607 & err = err )
subroutine historygetreal1pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal1pointertimei()

subroutine historygetreal1pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16322 of file historyget.f90.

16325 use dc_string, only: tochar, split
16326 use dc_types, only: string, dp, sp
16327 use dc_trace, only: dbgmessage
16328 use dc_url, only: url_chop_iorange, gt_equal
16329 use dc_present, only: present_and_true
16330 ! MPI ライブラリ
16331 ! MPI library
16332 !
16333 use mpi
16334 implicit none
16335 character(*), intent(in):: file, varname
16336 integer, intent(in):: time
16337 logical, intent(in), optional:: quiet
16338 real(SP), pointer :: array(:)
16339 logical, intent(in), optional:: flag_mpi_split
16340 real(DP), intent(out), optional:: returned_time
16341 logical, intent(out), optional:: flag_time_exist
16342 logical, intent(out), optional:: err
16343 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16344 character(STRING), pointer:: carray (:)
16345 character(STRING):: tname
16346 interface
16347 subroutine historygetreal1pointer(&
16348 & file, varname, array, range, quiet, &
16349 & flag_mpi_split, returned_time, flag_time_exist, err)
16350 use dc_types, only: dp, sp
16351 character(*), intent(in):: file
16352 character(*), intent(in):: varname
16353 character(*), intent(in), optional:: range
16354 logical, intent(in), optional:: quiet
16355 logical, intent(in), optional:: flag_mpi_split
16356 real(DP), intent(out), optional:: returned_time
16357 logical, intent(out), optional:: flag_time_exist
16358 logical, intent(out), optional:: err
16359 real(SP), pointer :: array(:)
16360 end subroutine historygetreal1pointer
16361 end interface
16362 interface
16363 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16364 character(*), intent(in):: file
16365 character(*), intent(in):: varname
16366 character(*), intent(out):: url
16367 character(*), intent(in), optional:: range
16368 logical, intent(out), optional:: flag_time_exist
16369 character(*), intent(out), optional:: time_name
16370 logical, intent(out), optional:: err
16371 end subroutine lookup_growable_url
16372 end interface
16373 interface
16374 function file_rename_mpi( file ) result(result)
16375 use dc_types, only: string
16376 character(*), intent(in):: file
16377 character(STRING):: result
16378 end function file_rename_mpi
16379 end interface
16380 continue
16381 file_work = file
16382 if ( present_and_true( flag_mpi_split ) ) &
16383 & file_work = file_rename_mpi( file_work )
16384 call lookup_growable_url(file = file_work, varname = varname, &
16385 & url = url, &
16386 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16387 call url_chop_iorange( &
16388 & fullname = url, iorange = iorange, remainder = remainder )
16389 call split( str = iorange, carray = carray, sep = gt_equal )
16390 timevar_name = carray(1)
16391 deallocate( carray )
16392 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16393 call historygetreal1pointer( file = file, &
16394 & varname = varname, array = array, &
16395 & range = time_range, quiet = quiet, &
16396 & flag_mpi_split = flag_mpi_split, &
16397 & returned_time = returned_time, &
16398 & flag_time_exist = flag_time_exist, &
16399 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal1pointertimer()

subroutine historygetreal1pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8738 of file historyget.f90.

8741 use dc_string, only: tochar, split
8742 use dc_types, only: string, dp, sp
8743 use dc_trace, only: dbgmessage
8744 use dc_url, only: url_chop_iorange, gt_equal
8745 use dc_present, only: present_and_true
8746 ! MPI ライブラリ
8747 ! MPI library
8748 !
8749 use mpi
8750 implicit none
8751 character(*), intent(in):: file, varname
8752 real(SP), intent(in):: time
8753 logical, intent(in), optional:: quiet
8754 real(SP), pointer :: array(:)
8755 logical, intent(in), optional:: flag_mpi_split
8756 real(DP), intent(out), optional:: returned_time
8757 logical, intent(out), optional:: flag_time_exist
8758 logical, intent(out), optional:: err
8759 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8760 character(STRING), pointer:: carray (:)
8761 character(STRING):: tname
8762 interface
8763 subroutine historygetreal1pointer(&
8764 & file, varname, array, range, quiet, &
8765 & flag_mpi_split, returned_time, flag_time_exist, err)
8766 use dc_types, only: dp, sp
8767 character(*), intent(in):: file
8768 character(*), intent(in):: varname
8769 character(*), intent(in), optional:: range
8770 logical, intent(in), optional:: quiet
8771 logical, intent(in), optional:: flag_mpi_split
8772 real(DP), intent(out), optional:: returned_time
8773 logical, intent(out), optional:: flag_time_exist
8774 logical, intent(out), optional:: err
8775 real(SP), pointer :: array(:)
8776 end subroutine historygetreal1pointer
8777 end interface
8778 interface
8779 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8780 character(*), intent(in):: file
8781 character(*), intent(in):: varname
8782 character(*), intent(out):: url
8783 character(*), intent(in), optional:: range
8784 logical, intent(out), optional:: flag_time_exist
8785 character(*), intent(out), optional:: time_name
8786 logical, intent(out), optional:: err
8787 end subroutine lookup_growable_url
8788 end interface
8789 interface
8790 function file_rename_mpi( file ) result(result)
8791 use dc_types, only: string
8792 character(*), intent(in):: file
8793 character(STRING):: result
8794 end function file_rename_mpi
8795 end interface
8796 continue
8797 file_work = file
8798 if ( present_and_true( flag_mpi_split ) ) &
8799 & file_work = file_rename_mpi( file_work )
8800 call lookup_growable_url(file = file_work, varname = varname, &
8801 & url = url, &
8802 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8803 call url_chop_iorange( &
8804 & fullname = url, iorange = iorange, remainder = remainder )
8805 call split( str = iorange, carray = carray, sep = gt_equal )
8806 timevar_name = carray(1)
8807 deallocate( carray )
8808 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8809 call historygetreal1pointer( file = file, &
8810 & varname = varname, array = array, &
8811 & range = time_range, quiet = quiet, &
8812 & flag_mpi_split = flag_mpi_split, &
8813 & returned_time = returned_time, &
8814 & flag_time_exist = flag_time_exist, &
8815 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal1pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal1timed()

subroutine historygetreal1timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11898 of file historyget.f90.

11901 use dc_string, only: tochar, split
11902 use dc_types, only: string, dp, sp
11903 use dc_trace, only: dbgmessage
11904 use dc_url, only: url_chop_iorange, gt_equal
11905 use dc_present, only: present_and_true
11906 ! MPI ライブラリ
11907 ! MPI library
11908 !
11909 use mpi
11910 implicit none
11911 character(*), intent(in):: file, varname
11912 real(DP), intent(in):: time
11913 logical, intent(in), optional:: quiet
11914 real(SP), intent(out) :: array(:)
11915 logical, intent(in), optional:: flag_mpi_split
11916 real(DP), intent(out), optional:: returned_time
11917 logical, intent(out), optional:: flag_time_exist
11918 logical, intent(out), optional:: err
11919 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11920 character(STRING), pointer:: carray (:)
11921 character(STRING):: tname
11922 interface
11923 subroutine historygetreal1(&
11924 & file, varname, array, range, quiet, &
11925 & flag_mpi_split, returned_time, flag_time_exist, err)
11926 use dc_types, only: dp, sp
11927 character(*), intent(in):: file
11928 character(*), intent(in):: varname
11929 character(*), intent(in), optional:: range
11930 logical, intent(in), optional:: quiet
11931 logical, intent(in), optional:: flag_mpi_split
11932 real(DP), intent(out), optional:: returned_time
11933 logical, intent(out), optional:: flag_time_exist
11934 logical, intent(out), optional:: err
11935 real(SP), intent(out) :: array(:)
11936 end subroutine historygetreal1
11937 end interface
11938 interface
11939 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
11940 character(*), intent(in):: file
11941 character(*), intent(in):: varname
11942 character(*), intent(out):: url
11943 character(*), intent(in), optional:: range
11944 logical, intent(out), optional:: flag_time_exist
11945 character(*), intent(out), optional:: time_name
11946 logical, intent(out), optional:: err
11947 end subroutine lookup_growable_url
11948 end interface
11949 interface
11950 function file_rename_mpi( file ) result(result)
11951 use dc_types, only: string
11952 character(*), intent(in):: file
11953 character(STRING):: result
11954 end function file_rename_mpi
11955 end interface
11956 continue
11957 file_work = file
11958 if ( present_and_true( flag_mpi_split ) ) &
11959 & file_work = file_rename_mpi( file_work )
11960 call lookup_growable_url(file = file_work, varname = varname, &
11961 & url = url, &
11962 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
11963 call url_chop_iorange( &
11964 & fullname = url, iorange = iorange, remainder = remainder )
11965 call split( str = iorange, carray = carray, sep = gt_equal )
11966 timevar_name = carray(1)
11967 deallocate( carray )
11968 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
11969 call historygetreal1( file = file, &
11970 & varname = varname, array = array, &
11971 & range = time_range, quiet = quiet, &
11972 & flag_mpi_split = flag_mpi_split, &
11973 & returned_time = returned_time, &
11974 & flag_time_exist = flag_time_exist, &
11975 & err = err )
subroutine historygetreal1(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal1timei()

subroutine historygetreal1timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15690 of file historyget.f90.

15693 use dc_string, only: tochar, split
15694 use dc_types, only: string, dp, sp
15695 use dc_trace, only: dbgmessage
15696 use dc_url, only: url_chop_iorange, gt_equal
15697 use dc_present, only: present_and_true
15698 ! MPI ライブラリ
15699 ! MPI library
15700 !
15701 use mpi
15702 implicit none
15703 character(*), intent(in):: file, varname
15704 integer, intent(in):: time
15705 logical, intent(in), optional:: quiet
15706 real(SP), intent(out) :: array(:)
15707 logical, intent(in), optional:: flag_mpi_split
15708 real(DP), intent(out), optional:: returned_time
15709 logical, intent(out), optional:: flag_time_exist
15710 logical, intent(out), optional:: err
15711 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15712 character(STRING), pointer:: carray (:)
15713 character(STRING):: tname
15714 interface
15715 subroutine historygetreal1(&
15716 & file, varname, array, range, quiet, &
15717 & flag_mpi_split, returned_time, flag_time_exist, err)
15718 use dc_types, only: dp, sp
15719 character(*), intent(in):: file
15720 character(*), intent(in):: varname
15721 character(*), intent(in), optional:: range
15722 logical, intent(in), optional:: quiet
15723 logical, intent(in), optional:: flag_mpi_split
15724 real(DP), intent(out), optional:: returned_time
15725 logical, intent(out), optional:: flag_time_exist
15726 logical, intent(out), optional:: err
15727 real(SP), intent(out) :: array(:)
15728 end subroutine historygetreal1
15729 end interface
15730 interface
15731 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15732 character(*), intent(in):: file
15733 character(*), intent(in):: varname
15734 character(*), intent(out):: url
15735 character(*), intent(in), optional:: range
15736 logical, intent(out), optional:: flag_time_exist
15737 character(*), intent(out), optional:: time_name
15738 logical, intent(out), optional:: err
15739 end subroutine lookup_growable_url
15740 end interface
15741 interface
15742 function file_rename_mpi( file ) result(result)
15743 use dc_types, only: string
15744 character(*), intent(in):: file
15745 character(STRING):: result
15746 end function file_rename_mpi
15747 end interface
15748 continue
15749 file_work = file
15750 if ( present_and_true( flag_mpi_split ) ) &
15751 & file_work = file_rename_mpi( file_work )
15752 call lookup_growable_url(file = file_work, varname = varname, &
15753 & url = url, &
15754 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15755 call url_chop_iorange( &
15756 & fullname = url, iorange = iorange, remainder = remainder )
15757 call split( str = iorange, carray = carray, sep = gt_equal )
15758 timevar_name = carray(1)
15759 deallocate( carray )
15760 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15761 call historygetreal1( file = file, &
15762 & varname = varname, array = array, &
15763 & range = time_range, quiet = quiet, &
15764 & flag_mpi_split = flag_mpi_split, &
15765 & returned_time = returned_time, &
15766 & flag_time_exist = flag_time_exist, &
15767 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal1timer()

subroutine historygetreal1timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8106 of file historyget.f90.

8109 use dc_string, only: tochar, split
8110 use dc_types, only: string, dp, sp
8111 use dc_trace, only: dbgmessage
8112 use dc_url, only: url_chop_iorange, gt_equal
8113 use dc_present, only: present_and_true
8114 ! MPI ライブラリ
8115 ! MPI library
8116 !
8117 use mpi
8118 implicit none
8119 character(*), intent(in):: file, varname
8120 real(SP), intent(in):: time
8121 logical, intent(in), optional:: quiet
8122 real(SP), intent(out) :: array(:)
8123 logical, intent(in), optional:: flag_mpi_split
8124 real(DP), intent(out), optional:: returned_time
8125 logical, intent(out), optional:: flag_time_exist
8126 logical, intent(out), optional:: err
8127 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8128 character(STRING), pointer:: carray (:)
8129 character(STRING):: tname
8130 interface
8131 subroutine historygetreal1(&
8132 & file, varname, array, range, quiet, &
8133 & flag_mpi_split, returned_time, flag_time_exist, err)
8134 use dc_types, only: dp, sp
8135 character(*), intent(in):: file
8136 character(*), intent(in):: varname
8137 character(*), intent(in), optional:: range
8138 logical, intent(in), optional:: quiet
8139 logical, intent(in), optional:: flag_mpi_split
8140 real(DP), intent(out), optional:: returned_time
8141 logical, intent(out), optional:: flag_time_exist
8142 logical, intent(out), optional:: err
8143 real(SP), intent(out) :: array(:)
8144 end subroutine historygetreal1
8145 end interface
8146 interface
8147 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8148 character(*), intent(in):: file
8149 character(*), intent(in):: varname
8150 character(*), intent(out):: url
8151 character(*), intent(in), optional:: range
8152 logical, intent(out), optional:: flag_time_exist
8153 character(*), intent(out), optional:: time_name
8154 logical, intent(out), optional:: err
8155 end subroutine lookup_growable_url
8156 end interface
8157 interface
8158 function file_rename_mpi( file ) result(result)
8159 use dc_types, only: string
8160 character(*), intent(in):: file
8161 character(STRING):: result
8162 end function file_rename_mpi
8163 end interface
8164 continue
8165 file_work = file
8166 if ( present_and_true( flag_mpi_split ) ) &
8167 & file_work = file_rename_mpi( file_work )
8168 call lookup_growable_url(file = file_work, varname = varname, &
8169 & url = url, &
8170 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8171 call url_chop_iorange( &
8172 & fullname = url, iorange = iorange, remainder = remainder )
8173 call split( str = iorange, carray = carray, sep = gt_equal )
8174 timevar_name = carray(1)
8175 deallocate( carray )
8176 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8177 call historygetreal1( file = file, &
8178 & varname = varname, array = array, &
8179 & range = time_range, quiet = quiet, &
8180 & flag_mpi_split = flag_mpi_split, &
8181 & returned_time = returned_time, &
8182 & flag_time_exist = flag_time_exist, &
8183 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal1(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal2()

subroutine historygetreal2 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 1973 of file historyget.f90.

1975 use gtdata_types, only: gt_variable
1976 use gtdata_generic, only: open, inquire, close, get
1977 use dc_string, only: tochar
1979 use dc_regex, only: match
1980 use dc_types, only: string, dp, sp
1981 use dc_message, only: messagenotify
1984 ! MPI ライブラリ
1985 ! MPI library
1986 use mpi
1987 implicit none
1988 character(*), intent(in):: file
1989 character(*), intent(in):: varname
1990 character(*), intent(in), optional:: range
1991 logical, intent(in), optional:: quiet
1992 logical, intent(in), optional:: flag_mpi_split
1993 real(DP), intent(out), optional:: returned_time ! データの時刻
1994 logical, intent(out), optional:: flag_time_exist
1995 logical, intent(out), optional:: err
1996 real(SP), intent(out) :: array(:,:)
1997 real(SP), allocatable :: array_tmp(:)
1998 integer:: array_allsize
1999 integer:: array_shape(2), data_shape(2), array_shape_check(2)
2000 integer:: allcount
2001 integer:: i, sd
2002 logical:: inq_err
2003 type(GT_VARIABLE):: var
2004 character(STRING):: file_work, url, actual_url
2005 integer:: rank, alldims, array_rank
2006 integer:: domain
2007 character(STRING):: tname
2008 integer:: stat
2009 character(STRING):: cause_c
2010 character(*), parameter :: subname = "HistoryGetReal2"
2011 interface
2012 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2013 character(*), intent(in):: file
2014 character(*), intent(in):: varname
2015 character(*), intent(out):: url
2016 character(*), intent(in), optional:: range
2017 logical, intent(out), optional:: flag_time_exist
2018 character(*), intent(out), optional:: time_name
2019 logical, intent(out), optional:: err
2020 end subroutine lookup_growable_url
2021 end interface
2022 interface
2023 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2024 use dc_types, only: dp
2025 character(*), intent(in) :: url ! 変数 URL
2026 character(*), intent(out), optional :: actual_url
2027 ! 正確な入出力範囲指定
2028 real(DP), intent(out), optional:: returned_time ! データの時刻
2029 character(*), intent(in), optional:: time_name ! 時刻次元の名称
2030 logical, intent(out), optional :: err ! エラーのフラグ
2031 end subroutine actual_iorange_dump
2032 end interface
2033 interface
2034 function file_rename_mpi( file ) result(result)
2035 use dc_types, only: string
2036 character(*), intent(in):: file
2037 character(STRING):: result
2038 end function file_rename_mpi
2039 end interface
2040 continue
2041 cause_c = ''
2042 stat = dc_noerr
2043 file_work = file
2044 array_shape = shape( array )
2045 array_allsize = size( array )
2046 ! ファイル名の変更 (MPI 用)
2047 ! Change filename (for MPI)
2048 !
2049 if ( present_and_true( flag_mpi_split ) ) &
2050 & file_work = file_rename_mpi( file_work )
2051 ! 最新時刻の URL 取得
2052 ! Get URL of latest time
2053 !
2054 call lookup_growable_url(file_work, varname, url, range, &
2055 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2056 if ( present_and_true(err) ) then
2057 stat = gt_enoturl
2058 cause_c = url
2059 goto 999
2060 end if
2061 ! ファイルオープン
2062 ! File open
2063 call open( var, url, err = err )
2064 if ( present_and_true(err) ) then
2065 stat = gt_enoturl
2066 cause_c = url
2067 goto 999
2068 end if
2069 !-------------------------------------------------------------------
2070 ! 配列形状のチェック
2071 ! Check array shape
2072 !-------------------------------------------------------------------
2073 ! 入力ファイル中のデータの次元数
2074 ! Get size of dimesions in data of an input file
2075 !
2076 call inquire( var = var, & ! (in)
2077 & rank = rank, alldims = alldims ) ! (out)
2078 ! 引数の次元数のチェック (縮退されている場合には減らす)
2079 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2080 array_rank = 2
2081 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2082 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2083 ! 次元数の比較
2084 ! Compare sizes of dimensions
2085 !
2086 if ( .not. 2 == rank .and. .not. array_rank == rank ) then
2087 if ( .not. present_and_true(quiet) ) then
2088 call messagenotify('W', subname, &
2089 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2090 & i = (/rank, 2/), c1 = trim(url) )
2091 end if
2092 stat = gt_erankmismatch
2093 cause_c = 'array'
2094 goto 999
2095 end if
2096 ! 入力ファイル中のデータの配列形状取得
2097 ! Get shape of data in an input file
2098 call inquire( var = var , dimord = 1, & ! (in)
2099 & allcount = allcount, err = inq_err ) ! (out)
2100 if ( .not. inq_err ) then
2101 data_shape(1) = allcount
2102 else
2103 data_shape(1) = 1
2104 end if
2105 call inquire( var = var , dimord = 2, & ! (in)
2106 & allcount = allcount, err = inq_err ) ! (out)
2107 if ( .not. inq_err ) then
2108 data_shape(2) = allcount
2109 else
2110 data_shape(2) = 1
2111 end if
2112 ! 引数の配列形状整形
2113 ! Arrange shape of an argument
2114 !
2115 array_shape_check = array_shape
2116 sd = 1
2117 do i = 1, 2 - 1
2118 if ( array_shape_check(sd) == 1 ) then
2119 array_shape_check(sd:2) = cshift( array_shape_check(sd:2), 1, 1 )
2120 else
2121 sd = sd + 1
2122 end if
2123 end do
2124 ! 配列形状の比較
2125 ! Compare shapes
2126 !
2127 if ( .not. all( array_shape_check == data_shape ) ) then
2128 if ( .not. present_and_true(quiet) ) then
2129 call messagenotify('W', subname, &
2130 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2131 & c1 = trim( url ), &
2132 & c2 = trim( tochar( data_shape(1:rank) ) ), &
2133 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2134 end if
2135 stat = gt_eargsizemismatch
2136 cause_c = 'array'
2137 goto 999
2138 end if
2139 !-------------------------------------
2140 ! データ取得
2141 ! Get data
2142 call inquire( var = var, & ! (in)
2143 & size = domain ) ! (out)
2144 if ( allocated( array_tmp ) ) deallocate( array_tmp )
2145 allocate( array_tmp(array_allsize) )
2146 call get( var, array_tmp, domain )
2147 array = reshape( array_tmp, array_shape )
2148 deallocate( array_tmp )
2149 call close( var )
2150 !-------------------------------------
2151 ! データファイル名と切り出し範囲の印字
2152 ! Print data filename and clipping range
2153 call actual_iorange_dump(url, & ! (in)
2154 & actual_url, returned_time, & ! (out) optional
2155 & time_name = tname, & ! (in) optional
2156 & err = err) ! (out) optional
2157 if ( .not. present_and_true(quiet) ) then
2158 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2159 end if
2160999 continue
2161 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal2pointer()

subroutine historygetreal2pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5624 of file historyget.f90.

5626 use gtdata_types, only: gt_variable
5627 use gtdata_generic, only: open, inquire, close, get
5628 use dc_string, only: tochar
5630 use dc_types, only: string, dp, sp
5631 use dc_message, only: messagenotify
5632 use dc_trace, only: dbgmessage
5633 ! MPI ライブラリ
5634 ! MPI library
5635 !
5636 use mpi
5637 implicit none
5638 character(*), intent(in):: file
5639 character(*), intent(in):: varname
5640 character(*), intent(in), optional:: range
5641 logical, intent(in), optional:: quiet
5642 logical, intent(in), optional:: flag_mpi_split
5643 real(DP), intent(out), optional:: returned_time ! データの時刻
5644 logical, intent(out), optional:: flag_time_exist
5645 logical, intent(out), optional:: err
5646 real(SP), pointer :: array(:,:) ! (out)
5647 type(GT_VARIABLE):: var
5648 character(STRING):: file_work, url, actual_url
5649 character(STRING):: tname
5650 character(*), parameter :: subname = "HistoryGetReal2Pointer"
5651 interface
5652 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5653 character(*), intent(in):: file
5654 character(*), intent(in):: varname
5655 character(*), intent(out):: url
5656 character(*), intent(in), optional:: range
5657 logical, intent(out), optional:: flag_time_exist
5658 character(*), intent(out), optional:: time_name
5659 logical, intent(out), optional:: err
5660 end subroutine lookup_growable_url
5661 end interface
5662 interface
5663 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5664 use dc_types, only: dp
5665 character(*), intent(in) :: url ! 変数 URL
5666 character(*), intent(out), optional :: actual_url
5667 ! 正確な入出力範囲指定
5668 real(DP), intent(out), optional:: returned_time ! データの時刻
5669 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5670 logical, intent(out), optional :: err ! エラーのフラグ
5671 end subroutine actual_iorange_dump
5672 end interface
5673 interface
5674 function file_rename_mpi( file ) result(result)
5675 use dc_types, only: string
5676 character(*), intent(in):: file
5677 character(STRING):: result
5678 end function file_rename_mpi
5679 end interface
5680 continue
5681 file_work = file
5682 ! ファイル名の変更 (MPI 用)
5683 ! Change filename (for MPI)
5684 !
5685 if ( present_and_true( flag_mpi_split ) ) &
5686 & file_work = file_rename_mpi( file_work )
5687 ! 必要な情報を gtool 変数化
5688 !
5689 call lookup_growable_url(file_work, varname, url, range, &
5690 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5691 call dbgmessage('@ url =%c', c1=trim(url))
5692 ! いよいよデータ取得
5693 !
5694 call open(var, url, err)
5695 call get(var, array, err)
5696 call close(var, err)
5697 call actual_iorange_dump(url, & ! (in)
5698 & actual_url, returned_time, & ! (out) optional
5699 & time_name = tname, & ! (in) optional
5700 & err = err) ! (out) optional
5701 if ( .not. present_and_true(quiet) ) then
5702 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5703 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal2pointertimed()

subroutine historygetreal2pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12609 of file historyget.f90.

12612 use dc_string, only: tochar, split
12613 use dc_types, only: string, dp, sp
12614 use dc_trace, only: dbgmessage
12615 use dc_url, only: url_chop_iorange, gt_equal
12616 use dc_present, only: present_and_true
12617 ! MPI ライブラリ
12618 ! MPI library
12619 !
12620 use mpi
12621 implicit none
12622 character(*), intent(in):: file, varname
12623 real(DP), intent(in):: time
12624 logical, intent(in), optional:: quiet
12625 real(SP), pointer :: array(:,:)
12626 logical, intent(in), optional:: flag_mpi_split
12627 real(DP), intent(out), optional:: returned_time
12628 logical, intent(out), optional:: flag_time_exist
12629 logical, intent(out), optional:: err
12630 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12631 character(STRING), pointer:: carray (:)
12632 character(STRING):: tname
12633 interface
12634 subroutine historygetreal2pointer(&
12635 & file, varname, array, range, quiet, &
12636 & flag_mpi_split, returned_time, flag_time_exist, err)
12637 use dc_types, only: dp, sp
12638 character(*), intent(in):: file
12639 character(*), intent(in):: varname
12640 character(*), intent(in), optional:: range
12641 logical, intent(in), optional:: quiet
12642 logical, intent(in), optional:: flag_mpi_split
12643 real(DP), intent(out), optional:: returned_time
12644 logical, intent(out), optional:: flag_time_exist
12645 logical, intent(out), optional:: err
12646 real(SP), pointer :: array(:,:)
12647 end subroutine historygetreal2pointer
12648 end interface
12649 interface
12650 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12651 character(*), intent(in):: file
12652 character(*), intent(in):: varname
12653 character(*), intent(out):: url
12654 character(*), intent(in), optional:: range
12655 logical, intent(out), optional:: flag_time_exist
12656 character(*), intent(out), optional:: time_name
12657 logical, intent(out), optional:: err
12658 end subroutine lookup_growable_url
12659 end interface
12660 interface
12661 function file_rename_mpi( file ) result(result)
12662 use dc_types, only: string
12663 character(*), intent(in):: file
12664 character(STRING):: result
12665 end function file_rename_mpi
12666 end interface
12667 continue
12668 file_work = file
12669 if ( present_and_true( flag_mpi_split ) ) &
12670 & file_work = file_rename_mpi( file_work )
12671 call lookup_growable_url(file = file_work, varname = varname, &
12672 & url = url, &
12673 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12674 call url_chop_iorange( &
12675 & fullname = url, iorange = iorange, remainder = remainder )
12676 call split( str = iorange, carray = carray, sep = gt_equal )
12677 timevar_name = carray(1)
12678 deallocate( carray )
12679 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12680 call historygetreal2pointer( file = file, &
12681 & varname = varname, array = array, &
12682 & range = time_range, quiet = quiet, &
12683 & flag_mpi_split = flag_mpi_split, &
12684 & returned_time = returned_time, &
12685 & flag_time_exist = flag_time_exist, &
12686 & err = err )
subroutine historygetreal2pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal2pointertimei()

subroutine historygetreal2pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16401 of file historyget.f90.

16404 use dc_string, only: tochar, split
16405 use dc_types, only: string, dp, sp
16406 use dc_trace, only: dbgmessage
16407 use dc_url, only: url_chop_iorange, gt_equal
16408 use dc_present, only: present_and_true
16409 ! MPI ライブラリ
16410 ! MPI library
16411 !
16412 use mpi
16413 implicit none
16414 character(*), intent(in):: file, varname
16415 integer, intent(in):: time
16416 logical, intent(in), optional:: quiet
16417 real(SP), pointer :: array(:,:)
16418 logical, intent(in), optional:: flag_mpi_split
16419 real(DP), intent(out), optional:: returned_time
16420 logical, intent(out), optional:: flag_time_exist
16421 logical, intent(out), optional:: err
16422 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16423 character(STRING), pointer:: carray (:)
16424 character(STRING):: tname
16425 interface
16426 subroutine historygetreal2pointer(&
16427 & file, varname, array, range, quiet, &
16428 & flag_mpi_split, returned_time, flag_time_exist, err)
16429 use dc_types, only: dp, sp
16430 character(*), intent(in):: file
16431 character(*), intent(in):: varname
16432 character(*), intent(in), optional:: range
16433 logical, intent(in), optional:: quiet
16434 logical, intent(in), optional:: flag_mpi_split
16435 real(DP), intent(out), optional:: returned_time
16436 logical, intent(out), optional:: flag_time_exist
16437 logical, intent(out), optional:: err
16438 real(SP), pointer :: array(:,:)
16439 end subroutine historygetreal2pointer
16440 end interface
16441 interface
16442 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16443 character(*), intent(in):: file
16444 character(*), intent(in):: varname
16445 character(*), intent(out):: url
16446 character(*), intent(in), optional:: range
16447 logical, intent(out), optional:: flag_time_exist
16448 character(*), intent(out), optional:: time_name
16449 logical, intent(out), optional:: err
16450 end subroutine lookup_growable_url
16451 end interface
16452 interface
16453 function file_rename_mpi( file ) result(result)
16454 use dc_types, only: string
16455 character(*), intent(in):: file
16456 character(STRING):: result
16457 end function file_rename_mpi
16458 end interface
16459 continue
16460 file_work = file
16461 if ( present_and_true( flag_mpi_split ) ) &
16462 & file_work = file_rename_mpi( file_work )
16463 call lookup_growable_url(file = file_work, varname = varname, &
16464 & url = url, &
16465 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16466 call url_chop_iorange( &
16467 & fullname = url, iorange = iorange, remainder = remainder )
16468 call split( str = iorange, carray = carray, sep = gt_equal )
16469 timevar_name = carray(1)
16470 deallocate( carray )
16471 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16472 call historygetreal2pointer( file = file, &
16473 & varname = varname, array = array, &
16474 & range = time_range, quiet = quiet, &
16475 & flag_mpi_split = flag_mpi_split, &
16476 & returned_time = returned_time, &
16477 & flag_time_exist = flag_time_exist, &
16478 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal2pointertimer()

subroutine historygetreal2pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8817 of file historyget.f90.

8820 use dc_string, only: tochar, split
8821 use dc_types, only: string, dp, sp
8822 use dc_trace, only: dbgmessage
8823 use dc_url, only: url_chop_iorange, gt_equal
8824 use dc_present, only: present_and_true
8825 ! MPI ライブラリ
8826 ! MPI library
8827 !
8828 use mpi
8829 implicit none
8830 character(*), intent(in):: file, varname
8831 real(SP), intent(in):: time
8832 logical, intent(in), optional:: quiet
8833 real(SP), pointer :: array(:,:)
8834 logical, intent(in), optional:: flag_mpi_split
8835 real(DP), intent(out), optional:: returned_time
8836 logical, intent(out), optional:: flag_time_exist
8837 logical, intent(out), optional:: err
8838 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8839 character(STRING), pointer:: carray (:)
8840 character(STRING):: tname
8841 interface
8842 subroutine historygetreal2pointer(&
8843 & file, varname, array, range, quiet, &
8844 & flag_mpi_split, returned_time, flag_time_exist, err)
8845 use dc_types, only: dp, sp
8846 character(*), intent(in):: file
8847 character(*), intent(in):: varname
8848 character(*), intent(in), optional:: range
8849 logical, intent(in), optional:: quiet
8850 logical, intent(in), optional:: flag_mpi_split
8851 real(DP), intent(out), optional:: returned_time
8852 logical, intent(out), optional:: flag_time_exist
8853 logical, intent(out), optional:: err
8854 real(SP), pointer :: array(:,:)
8855 end subroutine historygetreal2pointer
8856 end interface
8857 interface
8858 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8859 character(*), intent(in):: file
8860 character(*), intent(in):: varname
8861 character(*), intent(out):: url
8862 character(*), intent(in), optional:: range
8863 logical, intent(out), optional:: flag_time_exist
8864 character(*), intent(out), optional:: time_name
8865 logical, intent(out), optional:: err
8866 end subroutine lookup_growable_url
8867 end interface
8868 interface
8869 function file_rename_mpi( file ) result(result)
8870 use dc_types, only: string
8871 character(*), intent(in):: file
8872 character(STRING):: result
8873 end function file_rename_mpi
8874 end interface
8875 continue
8876 file_work = file
8877 if ( present_and_true( flag_mpi_split ) ) &
8878 & file_work = file_rename_mpi( file_work )
8879 call lookup_growable_url(file = file_work, varname = varname, &
8880 & url = url, &
8881 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8882 call url_chop_iorange( &
8883 & fullname = url, iorange = iorange, remainder = remainder )
8884 call split( str = iorange, carray = carray, sep = gt_equal )
8885 timevar_name = carray(1)
8886 deallocate( carray )
8887 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8888 call historygetreal2pointer( file = file, &
8889 & varname = varname, array = array, &
8890 & range = time_range, quiet = quiet, &
8891 & flag_mpi_split = flag_mpi_split, &
8892 & returned_time = returned_time, &
8893 & flag_time_exist = flag_time_exist, &
8894 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal2pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal2timed()

subroutine historygetreal2timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 11977 of file historyget.f90.

11980 use dc_string, only: tochar, split
11981 use dc_types, only: string, dp, sp
11982 use dc_trace, only: dbgmessage
11983 use dc_url, only: url_chop_iorange, gt_equal
11984 use dc_present, only: present_and_true
11985 ! MPI ライブラリ
11986 ! MPI library
11987 !
11988 use mpi
11989 implicit none
11990 character(*), intent(in):: file, varname
11991 real(DP), intent(in):: time
11992 logical, intent(in), optional:: quiet
11993 real(SP), intent(out) :: array(:,:)
11994 logical, intent(in), optional:: flag_mpi_split
11995 real(DP), intent(out), optional:: returned_time
11996 logical, intent(out), optional:: flag_time_exist
11997 logical, intent(out), optional:: err
11998 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
11999 character(STRING), pointer:: carray (:)
12000 character(STRING):: tname
12001 interface
12002 subroutine historygetreal2(&
12003 & file, varname, array, range, quiet, &
12004 & flag_mpi_split, returned_time, flag_time_exist, err)
12005 use dc_types, only: dp, sp
12006 character(*), intent(in):: file
12007 character(*), intent(in):: varname
12008 character(*), intent(in), optional:: range
12009 logical, intent(in), optional:: quiet
12010 logical, intent(in), optional:: flag_mpi_split
12011 real(DP), intent(out), optional:: returned_time
12012 logical, intent(out), optional:: flag_time_exist
12013 logical, intent(out), optional:: err
12014 real(SP), intent(out) :: array(:,:)
12015 end subroutine historygetreal2
12016 end interface
12017 interface
12018 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12019 character(*), intent(in):: file
12020 character(*), intent(in):: varname
12021 character(*), intent(out):: url
12022 character(*), intent(in), optional:: range
12023 logical, intent(out), optional:: flag_time_exist
12024 character(*), intent(out), optional:: time_name
12025 logical, intent(out), optional:: err
12026 end subroutine lookup_growable_url
12027 end interface
12028 interface
12029 function file_rename_mpi( file ) result(result)
12030 use dc_types, only: string
12031 character(*), intent(in):: file
12032 character(STRING):: result
12033 end function file_rename_mpi
12034 end interface
12035 continue
12036 file_work = file
12037 if ( present_and_true( flag_mpi_split ) ) &
12038 & file_work = file_rename_mpi( file_work )
12039 call lookup_growable_url(file = file_work, varname = varname, &
12040 & url = url, &
12041 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12042 call url_chop_iorange( &
12043 & fullname = url, iorange = iorange, remainder = remainder )
12044 call split( str = iorange, carray = carray, sep = gt_equal )
12045 timevar_name = carray(1)
12046 deallocate( carray )
12047 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12048 call historygetreal2( file = file, &
12049 & varname = varname, array = array, &
12050 & range = time_range, quiet = quiet, &
12051 & flag_mpi_split = flag_mpi_split, &
12052 & returned_time = returned_time, &
12053 & flag_time_exist = flag_time_exist, &
12054 & err = err )
subroutine historygetreal2(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal2timei()

subroutine historygetreal2timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15769 of file historyget.f90.

15772 use dc_string, only: tochar, split
15773 use dc_types, only: string, dp, sp
15774 use dc_trace, only: dbgmessage
15775 use dc_url, only: url_chop_iorange, gt_equal
15776 use dc_present, only: present_and_true
15777 ! MPI ライブラリ
15778 ! MPI library
15779 !
15780 use mpi
15781 implicit none
15782 character(*), intent(in):: file, varname
15783 integer, intent(in):: time
15784 logical, intent(in), optional:: quiet
15785 real(SP), intent(out) :: array(:,:)
15786 logical, intent(in), optional:: flag_mpi_split
15787 real(DP), intent(out), optional:: returned_time
15788 logical, intent(out), optional:: flag_time_exist
15789 logical, intent(out), optional:: err
15790 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15791 character(STRING), pointer:: carray (:)
15792 character(STRING):: tname
15793 interface
15794 subroutine historygetreal2(&
15795 & file, varname, array, range, quiet, &
15796 & flag_mpi_split, returned_time, flag_time_exist, err)
15797 use dc_types, only: dp, sp
15798 character(*), intent(in):: file
15799 character(*), intent(in):: varname
15800 character(*), intent(in), optional:: range
15801 logical, intent(in), optional:: quiet
15802 logical, intent(in), optional:: flag_mpi_split
15803 real(DP), intent(out), optional:: returned_time
15804 logical, intent(out), optional:: flag_time_exist
15805 logical, intent(out), optional:: err
15806 real(SP), intent(out) :: array(:,:)
15807 end subroutine historygetreal2
15808 end interface
15809 interface
15810 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15811 character(*), intent(in):: file
15812 character(*), intent(in):: varname
15813 character(*), intent(out):: url
15814 character(*), intent(in), optional:: range
15815 logical, intent(out), optional:: flag_time_exist
15816 character(*), intent(out), optional:: time_name
15817 logical, intent(out), optional:: err
15818 end subroutine lookup_growable_url
15819 end interface
15820 interface
15821 function file_rename_mpi( file ) result(result)
15822 use dc_types, only: string
15823 character(*), intent(in):: file
15824 character(STRING):: result
15825 end function file_rename_mpi
15826 end interface
15827 continue
15828 file_work = file
15829 if ( present_and_true( flag_mpi_split ) ) &
15830 & file_work = file_rename_mpi( file_work )
15831 call lookup_growable_url(file = file_work, varname = varname, &
15832 & url = url, &
15833 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15834 call url_chop_iorange( &
15835 & fullname = url, iorange = iorange, remainder = remainder )
15836 call split( str = iorange, carray = carray, sep = gt_equal )
15837 timevar_name = carray(1)
15838 deallocate( carray )
15839 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15840 call historygetreal2( file = file, &
15841 & varname = varname, array = array, &
15842 & range = time_range, quiet = quiet, &
15843 & flag_mpi_split = flag_mpi_split, &
15844 & returned_time = returned_time, &
15845 & flag_time_exist = flag_time_exist, &
15846 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal2timer()

subroutine historygetreal2timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8185 of file historyget.f90.

8188 use dc_string, only: tochar, split
8189 use dc_types, only: string, dp, sp
8190 use dc_trace, only: dbgmessage
8191 use dc_url, only: url_chop_iorange, gt_equal
8192 use dc_present, only: present_and_true
8193 ! MPI ライブラリ
8194 ! MPI library
8195 !
8196 use mpi
8197 implicit none
8198 character(*), intent(in):: file, varname
8199 real(SP), intent(in):: time
8200 logical, intent(in), optional:: quiet
8201 real(SP), intent(out) :: array(:,:)
8202 logical, intent(in), optional:: flag_mpi_split
8203 real(DP), intent(out), optional:: returned_time
8204 logical, intent(out), optional:: flag_time_exist
8205 logical, intent(out), optional:: err
8206 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8207 character(STRING), pointer:: carray (:)
8208 character(STRING):: tname
8209 interface
8210 subroutine historygetreal2(&
8211 & file, varname, array, range, quiet, &
8212 & flag_mpi_split, returned_time, flag_time_exist, err)
8213 use dc_types, only: dp, sp
8214 character(*), intent(in):: file
8215 character(*), intent(in):: varname
8216 character(*), intent(in), optional:: range
8217 logical, intent(in), optional:: quiet
8218 logical, intent(in), optional:: flag_mpi_split
8219 real(DP), intent(out), optional:: returned_time
8220 logical, intent(out), optional:: flag_time_exist
8221 logical, intent(out), optional:: err
8222 real(SP), intent(out) :: array(:,:)
8223 end subroutine historygetreal2
8224 end interface
8225 interface
8226 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8227 character(*), intent(in):: file
8228 character(*), intent(in):: varname
8229 character(*), intent(out):: url
8230 character(*), intent(in), optional:: range
8231 logical, intent(out), optional:: flag_time_exist
8232 character(*), intent(out), optional:: time_name
8233 logical, intent(out), optional:: err
8234 end subroutine lookup_growable_url
8235 end interface
8236 interface
8237 function file_rename_mpi( file ) result(result)
8238 use dc_types, only: string
8239 character(*), intent(in):: file
8240 character(STRING):: result
8241 end function file_rename_mpi
8242 end interface
8243 continue
8244 file_work = file
8245 if ( present_and_true( flag_mpi_split ) ) &
8246 & file_work = file_rename_mpi( file_work )
8247 call lookup_growable_url(file = file_work, varname = varname, &
8248 & url = url, &
8249 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8250 call url_chop_iorange( &
8251 & fullname = url, iorange = iorange, remainder = remainder )
8252 call split( str = iorange, carray = carray, sep = gt_equal )
8253 timevar_name = carray(1)
8254 deallocate( carray )
8255 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8256 call historygetreal2( file = file, &
8257 & varname = varname, array = array, &
8258 & range = time_range, quiet = quiet, &
8259 & flag_mpi_split = flag_mpi_split, &
8260 & returned_time = returned_time, &
8261 & flag_time_exist = flag_time_exist, &
8262 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal2(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal3()

subroutine historygetreal3 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 2163 of file historyget.f90.

2165 use gtdata_types, only: gt_variable
2166 use gtdata_generic, only: open, inquire, close, get
2167 use dc_string, only: tochar
2169 use dc_regex, only: match
2170 use dc_types, only: string, dp, sp
2171 use dc_message, only: messagenotify
2174 ! MPI ライブラリ
2175 ! MPI library
2176 use mpi
2177 implicit none
2178 character(*), intent(in):: file
2179 character(*), intent(in):: varname
2180 character(*), intent(in), optional:: range
2181 logical, intent(in), optional:: quiet
2182 logical, intent(in), optional:: flag_mpi_split
2183 real(DP), intent(out), optional:: returned_time ! データの時刻
2184 logical, intent(out), optional:: flag_time_exist
2185 logical, intent(out), optional:: err
2186 real(SP), intent(out) :: array(:,:,:)
2187 real(SP), allocatable :: array_tmp(:)
2188 integer:: array_allsize
2189 integer:: array_shape(3), data_shape(3), array_shape_check(3)
2190 integer:: allcount
2191 integer:: i, sd
2192 logical:: inq_err
2193 type(GT_VARIABLE):: var
2194 character(STRING):: file_work, url, actual_url
2195 integer:: rank, alldims, array_rank
2196 integer:: domain
2197 character(STRING):: tname
2198 integer:: stat
2199 character(STRING):: cause_c
2200 character(*), parameter :: subname = "HistoryGetReal3"
2201 interface
2202 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2203 character(*), intent(in):: file
2204 character(*), intent(in):: varname
2205 character(*), intent(out):: url
2206 character(*), intent(in), optional:: range
2207 logical, intent(out), optional:: flag_time_exist
2208 character(*), intent(out), optional:: time_name
2209 logical, intent(out), optional:: err
2210 end subroutine lookup_growable_url
2211 end interface
2212 interface
2213 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2214 use dc_types, only: dp
2215 character(*), intent(in) :: url ! 変数 URL
2216 character(*), intent(out), optional :: actual_url
2217 ! 正確な入出力範囲指定
2218 real(DP), intent(out), optional:: returned_time ! データの時刻
2219 character(*), intent(in), optional:: time_name ! 時刻次元の名称
2220 logical, intent(out), optional :: err ! エラーのフラグ
2221 end subroutine actual_iorange_dump
2222 end interface
2223 interface
2224 function file_rename_mpi( file ) result(result)
2225 use dc_types, only: string
2226 character(*), intent(in):: file
2227 character(STRING):: result
2228 end function file_rename_mpi
2229 end interface
2230 continue
2231 cause_c = ''
2232 stat = dc_noerr
2233 file_work = file
2234 array_shape = shape( array )
2235 array_allsize = size( array )
2236 ! ファイル名の変更 (MPI 用)
2237 ! Change filename (for MPI)
2238 !
2239 if ( present_and_true( flag_mpi_split ) ) &
2240 & file_work = file_rename_mpi( file_work )
2241 ! 最新時刻の URL 取得
2242 ! Get URL of latest time
2243 !
2244 call lookup_growable_url(file_work, varname, url, range, &
2245 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2246 if ( present_and_true(err) ) then
2247 stat = gt_enoturl
2248 cause_c = url
2249 goto 999
2250 end if
2251 ! ファイルオープン
2252 ! File open
2253 call open( var, url, err = err )
2254 if ( present_and_true(err) ) then
2255 stat = gt_enoturl
2256 cause_c = url
2257 goto 999
2258 end if
2259 !-------------------------------------------------------------------
2260 ! 配列形状のチェック
2261 ! Check array shape
2262 !-------------------------------------------------------------------
2263 ! 入力ファイル中のデータの次元数
2264 ! Get size of dimesions in data of an input file
2265 !
2266 call inquire( var = var, & ! (in)
2267 & rank = rank, alldims = alldims ) ! (out)
2268 ! 引数の次元数のチェック (縮退されている場合には減らす)
2269 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2270 array_rank = 3
2271 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2272 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2273 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2274 ! 次元数の比較
2275 ! Compare sizes of dimensions
2276 !
2277 if ( .not. 3 == rank .and. .not. array_rank == rank ) then
2278 if ( .not. present_and_true(quiet) ) then
2279 call messagenotify('W', subname, &
2280 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2281 & i = (/rank, 3/), c1 = trim(url) )
2282 end if
2283 stat = gt_erankmismatch
2284 cause_c = 'array'
2285 goto 999
2286 end if
2287 ! 入力ファイル中のデータの配列形状取得
2288 ! Get shape of data in an input file
2289 call inquire( var = var , dimord = 1, & ! (in)
2290 & allcount = allcount, err = inq_err ) ! (out)
2291 if ( .not. inq_err ) then
2292 data_shape(1) = allcount
2293 else
2294 data_shape(1) = 1
2295 end if
2296 call inquire( var = var , dimord = 2, & ! (in)
2297 & allcount = allcount, err = inq_err ) ! (out)
2298 if ( .not. inq_err ) then
2299 data_shape(2) = allcount
2300 else
2301 data_shape(2) = 1
2302 end if
2303 call inquire( var = var , dimord = 3, & ! (in)
2304 & allcount = allcount, err = inq_err ) ! (out)
2305 if ( .not. inq_err ) then
2306 data_shape(3) = allcount
2307 else
2308 data_shape(3) = 1
2309 end if
2310 ! 引数の配列形状整形
2311 ! Arrange shape of an argument
2312 !
2313 array_shape_check = array_shape
2314 sd = 1
2315 do i = 1, 3 - 1
2316 if ( array_shape_check(sd) == 1 ) then
2317 array_shape_check(sd:3) = cshift( array_shape_check(sd:3), 1, 1 )
2318 else
2319 sd = sd + 1
2320 end if
2321 end do
2322 ! 配列形状の比較
2323 ! Compare shapes
2324 !
2325 if ( .not. all( array_shape_check == data_shape ) ) then
2326 if ( .not. present_and_true(quiet) ) then
2327 call messagenotify('W', subname, &
2328 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2329 & c1 = trim( url ), &
2330 & c2 = trim( tochar( data_shape(1:rank) ) ), &
2331 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2332 end if
2333 stat = gt_eargsizemismatch
2334 cause_c = 'array'
2335 goto 999
2336 end if
2337 !-------------------------------------
2338 ! データ取得
2339 ! Get data
2340 call inquire( var = var, & ! (in)
2341 & size = domain ) ! (out)
2342 if ( allocated( array_tmp ) ) deallocate( array_tmp )
2343 allocate( array_tmp(array_allsize) )
2344 call get( var, array_tmp, domain )
2345 array = reshape( array_tmp, array_shape )
2346 deallocate( array_tmp )
2347 call close( var )
2348 !-------------------------------------
2349 ! データファイル名と切り出し範囲の印字
2350 ! Print data filename and clipping range
2351 call actual_iorange_dump(url, & ! (in)
2352 & actual_url, returned_time, & ! (out) optional
2353 & time_name = tname, & ! (in) optional
2354 & err = err) ! (out) optional
2355 if ( .not. present_and_true(quiet) ) then
2356 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2357 end if
2358999 continue
2359 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal3pointer()

subroutine historygetreal3pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5705 of file historyget.f90.

5707 use gtdata_types, only: gt_variable
5708 use gtdata_generic, only: open, inquire, close, get
5709 use dc_string, only: tochar
5711 use dc_types, only: string, dp, sp
5712 use dc_message, only: messagenotify
5713 use dc_trace, only: dbgmessage
5714 ! MPI ライブラリ
5715 ! MPI library
5716 !
5717 use mpi
5718 implicit none
5719 character(*), intent(in):: file
5720 character(*), intent(in):: varname
5721 character(*), intent(in), optional:: range
5722 logical, intent(in), optional:: quiet
5723 logical, intent(in), optional:: flag_mpi_split
5724 real(DP), intent(out), optional:: returned_time ! データの時刻
5725 logical, intent(out), optional:: flag_time_exist
5726 logical, intent(out), optional:: err
5727 real(SP), pointer :: array(:,:,:) ! (out)
5728 type(GT_VARIABLE):: var
5729 character(STRING):: file_work, url, actual_url
5730 character(STRING):: tname
5731 character(*), parameter :: subname = "HistoryGetReal3Pointer"
5732 interface
5733 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5734 character(*), intent(in):: file
5735 character(*), intent(in):: varname
5736 character(*), intent(out):: url
5737 character(*), intent(in), optional:: range
5738 logical, intent(out), optional:: flag_time_exist
5739 character(*), intent(out), optional:: time_name
5740 logical, intent(out), optional:: err
5741 end subroutine lookup_growable_url
5742 end interface
5743 interface
5744 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5745 use dc_types, only: dp
5746 character(*), intent(in) :: url ! 変数 URL
5747 character(*), intent(out), optional :: actual_url
5748 ! 正確な入出力範囲指定
5749 real(DP), intent(out), optional:: returned_time ! データの時刻
5750 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5751 logical, intent(out), optional :: err ! エラーのフラグ
5752 end subroutine actual_iorange_dump
5753 end interface
5754 interface
5755 function file_rename_mpi( file ) result(result)
5756 use dc_types, only: string
5757 character(*), intent(in):: file
5758 character(STRING):: result
5759 end function file_rename_mpi
5760 end interface
5761 continue
5762 file_work = file
5763 ! ファイル名の変更 (MPI 用)
5764 ! Change filename (for MPI)
5765 !
5766 if ( present_and_true( flag_mpi_split ) ) &
5767 & file_work = file_rename_mpi( file_work )
5768 ! 必要な情報を gtool 変数化
5769 !
5770 call lookup_growable_url(file_work, varname, url, range, &
5771 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5772 call dbgmessage('@ url =%c', c1=trim(url))
5773 ! いよいよデータ取得
5774 !
5775 call open(var, url, err)
5776 call get(var, array, err)
5777 call close(var, err)
5778 call actual_iorange_dump(url, & ! (in)
5779 & actual_url, returned_time, & ! (out) optional
5780 & time_name = tname, & ! (in) optional
5781 & err = err) ! (out) optional
5782 if ( .not. present_and_true(quiet) ) then
5783 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5784 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal3pointertimed()

subroutine historygetreal3pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12688 of file historyget.f90.

12691 use dc_string, only: tochar, split
12692 use dc_types, only: string, dp, sp
12693 use dc_trace, only: dbgmessage
12694 use dc_url, only: url_chop_iorange, gt_equal
12695 use dc_present, only: present_and_true
12696 ! MPI ライブラリ
12697 ! MPI library
12698 !
12699 use mpi
12700 implicit none
12701 character(*), intent(in):: file, varname
12702 real(DP), intent(in):: time
12703 logical, intent(in), optional:: quiet
12704 real(SP), pointer :: array(:,:,:)
12705 logical, intent(in), optional:: flag_mpi_split
12706 real(DP), intent(out), optional:: returned_time
12707 logical, intent(out), optional:: flag_time_exist
12708 logical, intent(out), optional:: err
12709 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12710 character(STRING), pointer:: carray (:)
12711 character(STRING):: tname
12712 interface
12713 subroutine historygetreal3pointer(&
12714 & file, varname, array, range, quiet, &
12715 & flag_mpi_split, returned_time, flag_time_exist, err)
12716 use dc_types, only: dp, sp
12717 character(*), intent(in):: file
12718 character(*), intent(in):: varname
12719 character(*), intent(in), optional:: range
12720 logical, intent(in), optional:: quiet
12721 logical, intent(in), optional:: flag_mpi_split
12722 real(DP), intent(out), optional:: returned_time
12723 logical, intent(out), optional:: flag_time_exist
12724 logical, intent(out), optional:: err
12725 real(SP), pointer :: array(:,:,:)
12726 end subroutine historygetreal3pointer
12727 end interface
12728 interface
12729 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12730 character(*), intent(in):: file
12731 character(*), intent(in):: varname
12732 character(*), intent(out):: url
12733 character(*), intent(in), optional:: range
12734 logical, intent(out), optional:: flag_time_exist
12735 character(*), intent(out), optional:: time_name
12736 logical, intent(out), optional:: err
12737 end subroutine lookup_growable_url
12738 end interface
12739 interface
12740 function file_rename_mpi( file ) result(result)
12741 use dc_types, only: string
12742 character(*), intent(in):: file
12743 character(STRING):: result
12744 end function file_rename_mpi
12745 end interface
12746 continue
12747 file_work = file
12748 if ( present_and_true( flag_mpi_split ) ) &
12749 & file_work = file_rename_mpi( file_work )
12750 call lookup_growable_url(file = file_work, varname = varname, &
12751 & url = url, &
12752 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12753 call url_chop_iorange( &
12754 & fullname = url, iorange = iorange, remainder = remainder )
12755 call split( str = iorange, carray = carray, sep = gt_equal )
12756 timevar_name = carray(1)
12757 deallocate( carray )
12758 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12759 call historygetreal3pointer( file = file, &
12760 & varname = varname, array = array, &
12761 & range = time_range, quiet = quiet, &
12762 & flag_mpi_split = flag_mpi_split, &
12763 & returned_time = returned_time, &
12764 & flag_time_exist = flag_time_exist, &
12765 & err = err )
subroutine historygetreal3pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal3pointertimei()

subroutine historygetreal3pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16480 of file historyget.f90.

16483 use dc_string, only: tochar, split
16484 use dc_types, only: string, dp, sp
16485 use dc_trace, only: dbgmessage
16486 use dc_url, only: url_chop_iorange, gt_equal
16487 use dc_present, only: present_and_true
16488 ! MPI ライブラリ
16489 ! MPI library
16490 !
16491 use mpi
16492 implicit none
16493 character(*), intent(in):: file, varname
16494 integer, intent(in):: time
16495 logical, intent(in), optional:: quiet
16496 real(SP), pointer :: array(:,:,:)
16497 logical, intent(in), optional:: flag_mpi_split
16498 real(DP), intent(out), optional:: returned_time
16499 logical, intent(out), optional:: flag_time_exist
16500 logical, intent(out), optional:: err
16501 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16502 character(STRING), pointer:: carray (:)
16503 character(STRING):: tname
16504 interface
16505 subroutine historygetreal3pointer(&
16506 & file, varname, array, range, quiet, &
16507 & flag_mpi_split, returned_time, flag_time_exist, err)
16508 use dc_types, only: dp, sp
16509 character(*), intent(in):: file
16510 character(*), intent(in):: varname
16511 character(*), intent(in), optional:: range
16512 logical, intent(in), optional:: quiet
16513 logical, intent(in), optional:: flag_mpi_split
16514 real(DP), intent(out), optional:: returned_time
16515 logical, intent(out), optional:: flag_time_exist
16516 logical, intent(out), optional:: err
16517 real(SP), pointer :: array(:,:,:)
16518 end subroutine historygetreal3pointer
16519 end interface
16520 interface
16521 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16522 character(*), intent(in):: file
16523 character(*), intent(in):: varname
16524 character(*), intent(out):: url
16525 character(*), intent(in), optional:: range
16526 logical, intent(out), optional:: flag_time_exist
16527 character(*), intent(out), optional:: time_name
16528 logical, intent(out), optional:: err
16529 end subroutine lookup_growable_url
16530 end interface
16531 interface
16532 function file_rename_mpi( file ) result(result)
16533 use dc_types, only: string
16534 character(*), intent(in):: file
16535 character(STRING):: result
16536 end function file_rename_mpi
16537 end interface
16538 continue
16539 file_work = file
16540 if ( present_and_true( flag_mpi_split ) ) &
16541 & file_work = file_rename_mpi( file_work )
16542 call lookup_growable_url(file = file_work, varname = varname, &
16543 & url = url, &
16544 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16545 call url_chop_iorange( &
16546 & fullname = url, iorange = iorange, remainder = remainder )
16547 call split( str = iorange, carray = carray, sep = gt_equal )
16548 timevar_name = carray(1)
16549 deallocate( carray )
16550 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16551 call historygetreal3pointer( file = file, &
16552 & varname = varname, array = array, &
16553 & range = time_range, quiet = quiet, &
16554 & flag_mpi_split = flag_mpi_split, &
16555 & returned_time = returned_time, &
16556 & flag_time_exist = flag_time_exist, &
16557 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal3pointertimer()

subroutine historygetreal3pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8896 of file historyget.f90.

8899 use dc_string, only: tochar, split
8900 use dc_types, only: string, dp, sp
8901 use dc_trace, only: dbgmessage
8902 use dc_url, only: url_chop_iorange, gt_equal
8903 use dc_present, only: present_and_true
8904 ! MPI ライブラリ
8905 ! MPI library
8906 !
8907 use mpi
8908 implicit none
8909 character(*), intent(in):: file, varname
8910 real(SP), intent(in):: time
8911 logical, intent(in), optional:: quiet
8912 real(SP), pointer :: array(:,:,:)
8913 logical, intent(in), optional:: flag_mpi_split
8914 real(DP), intent(out), optional:: returned_time
8915 logical, intent(out), optional:: flag_time_exist
8916 logical, intent(out), optional:: err
8917 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8918 character(STRING), pointer:: carray (:)
8919 character(STRING):: tname
8920 interface
8921 subroutine historygetreal3pointer(&
8922 & file, varname, array, range, quiet, &
8923 & flag_mpi_split, returned_time, flag_time_exist, err)
8924 use dc_types, only: dp, sp
8925 character(*), intent(in):: file
8926 character(*), intent(in):: varname
8927 character(*), intent(in), optional:: range
8928 logical, intent(in), optional:: quiet
8929 logical, intent(in), optional:: flag_mpi_split
8930 real(DP), intent(out), optional:: returned_time
8931 logical, intent(out), optional:: flag_time_exist
8932 logical, intent(out), optional:: err
8933 real(SP), pointer :: array(:,:,:)
8934 end subroutine historygetreal3pointer
8935 end interface
8936 interface
8937 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8938 character(*), intent(in):: file
8939 character(*), intent(in):: varname
8940 character(*), intent(out):: url
8941 character(*), intent(in), optional:: range
8942 logical, intent(out), optional:: flag_time_exist
8943 character(*), intent(out), optional:: time_name
8944 logical, intent(out), optional:: err
8945 end subroutine lookup_growable_url
8946 end interface
8947 interface
8948 function file_rename_mpi( file ) result(result)
8949 use dc_types, only: string
8950 character(*), intent(in):: file
8951 character(STRING):: result
8952 end function file_rename_mpi
8953 end interface
8954 continue
8955 file_work = file
8956 if ( present_and_true( flag_mpi_split ) ) &
8957 & file_work = file_rename_mpi( file_work )
8958 call lookup_growable_url(file = file_work, varname = varname, &
8959 & url = url, &
8960 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8961 call url_chop_iorange( &
8962 & fullname = url, iorange = iorange, remainder = remainder )
8963 call split( str = iorange, carray = carray, sep = gt_equal )
8964 timevar_name = carray(1)
8965 deallocate( carray )
8966 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8967 call historygetreal3pointer( file = file, &
8968 & varname = varname, array = array, &
8969 & range = time_range, quiet = quiet, &
8970 & flag_mpi_split = flag_mpi_split, &
8971 & returned_time = returned_time, &
8972 & flag_time_exist = flag_time_exist, &
8973 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal3pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal3timed()

subroutine historygetreal3timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12056 of file historyget.f90.

12059 use dc_string, only: tochar, split
12060 use dc_types, only: string, dp, sp
12061 use dc_trace, only: dbgmessage
12062 use dc_url, only: url_chop_iorange, gt_equal
12063 use dc_present, only: present_and_true
12064 ! MPI ライブラリ
12065 ! MPI library
12066 !
12067 use mpi
12068 implicit none
12069 character(*), intent(in):: file, varname
12070 real(DP), intent(in):: time
12071 logical, intent(in), optional:: quiet
12072 real(SP), intent(out) :: array(:,:,:)
12073 logical, intent(in), optional:: flag_mpi_split
12074 real(DP), intent(out), optional:: returned_time
12075 logical, intent(out), optional:: flag_time_exist
12076 logical, intent(out), optional:: err
12077 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12078 character(STRING), pointer:: carray (:)
12079 character(STRING):: tname
12080 interface
12081 subroutine historygetreal3(&
12082 & file, varname, array, range, quiet, &
12083 & flag_mpi_split, returned_time, flag_time_exist, err)
12084 use dc_types, only: dp, sp
12085 character(*), intent(in):: file
12086 character(*), intent(in):: varname
12087 character(*), intent(in), optional:: range
12088 logical, intent(in), optional:: quiet
12089 logical, intent(in), optional:: flag_mpi_split
12090 real(DP), intent(out), optional:: returned_time
12091 logical, intent(out), optional:: flag_time_exist
12092 logical, intent(out), optional:: err
12093 real(SP), intent(out) :: array(:,:,:)
12094 end subroutine historygetreal3
12095 end interface
12096 interface
12097 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12098 character(*), intent(in):: file
12099 character(*), intent(in):: varname
12100 character(*), intent(out):: url
12101 character(*), intent(in), optional:: range
12102 logical, intent(out), optional:: flag_time_exist
12103 character(*), intent(out), optional:: time_name
12104 logical, intent(out), optional:: err
12105 end subroutine lookup_growable_url
12106 end interface
12107 interface
12108 function file_rename_mpi( file ) result(result)
12109 use dc_types, only: string
12110 character(*), intent(in):: file
12111 character(STRING):: result
12112 end function file_rename_mpi
12113 end interface
12114 continue
12115 file_work = file
12116 if ( present_and_true( flag_mpi_split ) ) &
12117 & file_work = file_rename_mpi( file_work )
12118 call lookup_growable_url(file = file_work, varname = varname, &
12119 & url = url, &
12120 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12121 call url_chop_iorange( &
12122 & fullname = url, iorange = iorange, remainder = remainder )
12123 call split( str = iorange, carray = carray, sep = gt_equal )
12124 timevar_name = carray(1)
12125 deallocate( carray )
12126 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12127 call historygetreal3( file = file, &
12128 & varname = varname, array = array, &
12129 & range = time_range, quiet = quiet, &
12130 & flag_mpi_split = flag_mpi_split, &
12131 & returned_time = returned_time, &
12132 & flag_time_exist = flag_time_exist, &
12133 & err = err )
subroutine historygetreal3(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal3timei()

subroutine historygetreal3timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15848 of file historyget.f90.

15851 use dc_string, only: tochar, split
15852 use dc_types, only: string, dp, sp
15853 use dc_trace, only: dbgmessage
15854 use dc_url, only: url_chop_iorange, gt_equal
15855 use dc_present, only: present_and_true
15856 ! MPI ライブラリ
15857 ! MPI library
15858 !
15859 use mpi
15860 implicit none
15861 character(*), intent(in):: file, varname
15862 integer, intent(in):: time
15863 logical, intent(in), optional:: quiet
15864 real(SP), intent(out) :: array(:,:,:)
15865 logical, intent(in), optional:: flag_mpi_split
15866 real(DP), intent(out), optional:: returned_time
15867 logical, intent(out), optional:: flag_time_exist
15868 logical, intent(out), optional:: err
15869 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15870 character(STRING), pointer:: carray (:)
15871 character(STRING):: tname
15872 interface
15873 subroutine historygetreal3(&
15874 & file, varname, array, range, quiet, &
15875 & flag_mpi_split, returned_time, flag_time_exist, err)
15876 use dc_types, only: dp, sp
15877 character(*), intent(in):: file
15878 character(*), intent(in):: varname
15879 character(*), intent(in), optional:: range
15880 logical, intent(in), optional:: quiet
15881 logical, intent(in), optional:: flag_mpi_split
15882 real(DP), intent(out), optional:: returned_time
15883 logical, intent(out), optional:: flag_time_exist
15884 logical, intent(out), optional:: err
15885 real(SP), intent(out) :: array(:,:,:)
15886 end subroutine historygetreal3
15887 end interface
15888 interface
15889 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15890 character(*), intent(in):: file
15891 character(*), intent(in):: varname
15892 character(*), intent(out):: url
15893 character(*), intent(in), optional:: range
15894 logical, intent(out), optional:: flag_time_exist
15895 character(*), intent(out), optional:: time_name
15896 logical, intent(out), optional:: err
15897 end subroutine lookup_growable_url
15898 end interface
15899 interface
15900 function file_rename_mpi( file ) result(result)
15901 use dc_types, only: string
15902 character(*), intent(in):: file
15903 character(STRING):: result
15904 end function file_rename_mpi
15905 end interface
15906 continue
15907 file_work = file
15908 if ( present_and_true( flag_mpi_split ) ) &
15909 & file_work = file_rename_mpi( file_work )
15910 call lookup_growable_url(file = file_work, varname = varname, &
15911 & url = url, &
15912 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15913 call url_chop_iorange( &
15914 & fullname = url, iorange = iorange, remainder = remainder )
15915 call split( str = iorange, carray = carray, sep = gt_equal )
15916 timevar_name = carray(1)
15917 deallocate( carray )
15918 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15919 call historygetreal3( file = file, &
15920 & varname = varname, array = array, &
15921 & range = time_range, quiet = quiet, &
15922 & flag_mpi_split = flag_mpi_split, &
15923 & returned_time = returned_time, &
15924 & flag_time_exist = flag_time_exist, &
15925 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal3timer()

subroutine historygetreal3timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8264 of file historyget.f90.

8267 use dc_string, only: tochar, split
8268 use dc_types, only: string, dp, sp
8269 use dc_trace, only: dbgmessage
8270 use dc_url, only: url_chop_iorange, gt_equal
8271 use dc_present, only: present_and_true
8272 ! MPI ライブラリ
8273 ! MPI library
8274 !
8275 use mpi
8276 implicit none
8277 character(*), intent(in):: file, varname
8278 real(SP), intent(in):: time
8279 logical, intent(in), optional:: quiet
8280 real(SP), intent(out) :: array(:,:,:)
8281 logical, intent(in), optional:: flag_mpi_split
8282 real(DP), intent(out), optional:: returned_time
8283 logical, intent(out), optional:: flag_time_exist
8284 logical, intent(out), optional:: err
8285 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8286 character(STRING), pointer:: carray (:)
8287 character(STRING):: tname
8288 interface
8289 subroutine historygetreal3(&
8290 & file, varname, array, range, quiet, &
8291 & flag_mpi_split, returned_time, flag_time_exist, err)
8292 use dc_types, only: dp, sp
8293 character(*), intent(in):: file
8294 character(*), intent(in):: varname
8295 character(*), intent(in), optional:: range
8296 logical, intent(in), optional:: quiet
8297 logical, intent(in), optional:: flag_mpi_split
8298 real(DP), intent(out), optional:: returned_time
8299 logical, intent(out), optional:: flag_time_exist
8300 logical, intent(out), optional:: err
8301 real(SP), intent(out) :: array(:,:,:)
8302 end subroutine historygetreal3
8303 end interface
8304 interface
8305 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8306 character(*), intent(in):: file
8307 character(*), intent(in):: varname
8308 character(*), intent(out):: url
8309 character(*), intent(in), optional:: range
8310 logical, intent(out), optional:: flag_time_exist
8311 character(*), intent(out), optional:: time_name
8312 logical, intent(out), optional:: err
8313 end subroutine lookup_growable_url
8314 end interface
8315 interface
8316 function file_rename_mpi( file ) result(result)
8317 use dc_types, only: string
8318 character(*), intent(in):: file
8319 character(STRING):: result
8320 end function file_rename_mpi
8321 end interface
8322 continue
8323 file_work = file
8324 if ( present_and_true( flag_mpi_split ) ) &
8325 & file_work = file_rename_mpi( file_work )
8326 call lookup_growable_url(file = file_work, varname = varname, &
8327 & url = url, &
8328 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8329 call url_chop_iorange( &
8330 & fullname = url, iorange = iorange, remainder = remainder )
8331 call split( str = iorange, carray = carray, sep = gt_equal )
8332 timevar_name = carray(1)
8333 deallocate( carray )
8334 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8335 call historygetreal3( file = file, &
8336 & varname = varname, array = array, &
8337 & range = time_range, quiet = quiet, &
8338 & flag_mpi_split = flag_mpi_split, &
8339 & returned_time = returned_time, &
8340 & flag_time_exist = flag_time_exist, &
8341 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal3(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal4()

subroutine historygetreal4 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 2361 of file historyget.f90.

2363 use gtdata_types, only: gt_variable
2364 use gtdata_generic, only: open, inquire, close, get
2365 use dc_string, only: tochar
2367 use dc_regex, only: match
2368 use dc_types, only: string, dp, sp
2369 use dc_message, only: messagenotify
2372 ! MPI ライブラリ
2373 ! MPI library
2374 use mpi
2375 implicit none
2376 character(*), intent(in):: file
2377 character(*), intent(in):: varname
2378 character(*), intent(in), optional:: range
2379 logical, intent(in), optional:: quiet
2380 logical, intent(in), optional:: flag_mpi_split
2381 real(DP), intent(out), optional:: returned_time ! データの時刻
2382 logical, intent(out), optional:: flag_time_exist
2383 logical, intent(out), optional:: err
2384 real(SP), intent(out) :: array(:,:,:,:)
2385 real(SP), allocatable :: array_tmp(:)
2386 integer:: array_allsize
2387 integer:: array_shape(4), data_shape(4), array_shape_check(4)
2388 integer:: allcount
2389 integer:: i, sd
2390 logical:: inq_err
2391 type(GT_VARIABLE):: var
2392 character(STRING):: file_work, url, actual_url
2393 integer:: rank, alldims, array_rank
2394 integer:: domain
2395 character(STRING):: tname
2396 integer:: stat
2397 character(STRING):: cause_c
2398 character(*), parameter :: subname = "HistoryGetReal4"
2399 interface
2400 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2401 character(*), intent(in):: file
2402 character(*), intent(in):: varname
2403 character(*), intent(out):: url
2404 character(*), intent(in), optional:: range
2405 logical, intent(out), optional:: flag_time_exist
2406 character(*), intent(out), optional:: time_name
2407 logical, intent(out), optional:: err
2408 end subroutine lookup_growable_url
2409 end interface
2410 interface
2411 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2412 use dc_types, only: dp
2413 character(*), intent(in) :: url ! 変数 URL
2414 character(*), intent(out), optional :: actual_url
2415 ! 正確な入出力範囲指定
2416 real(DP), intent(out), optional:: returned_time ! データの時刻
2417 character(*), intent(in), optional:: time_name ! 時刻次元の名称
2418 logical, intent(out), optional :: err ! エラーのフラグ
2419 end subroutine actual_iorange_dump
2420 end interface
2421 interface
2422 function file_rename_mpi( file ) result(result)
2423 use dc_types, only: string
2424 character(*), intent(in):: file
2425 character(STRING):: result
2426 end function file_rename_mpi
2427 end interface
2428 continue
2429 cause_c = ''
2430 stat = dc_noerr
2431 file_work = file
2432 array_shape = shape( array )
2433 array_allsize = size( array )
2434 ! ファイル名の変更 (MPI 用)
2435 ! Change filename (for MPI)
2436 !
2437 if ( present_and_true( flag_mpi_split ) ) &
2438 & file_work = file_rename_mpi( file_work )
2439 ! 最新時刻の URL 取得
2440 ! Get URL of latest time
2441 !
2442 call lookup_growable_url(file_work, varname, url, range, &
2443 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2444 if ( present_and_true(err) ) then
2445 stat = gt_enoturl
2446 cause_c = url
2447 goto 999
2448 end if
2449 ! ファイルオープン
2450 ! File open
2451 call open( var, url, err = err )
2452 if ( present_and_true(err) ) then
2453 stat = gt_enoturl
2454 cause_c = url
2455 goto 999
2456 end if
2457 !-------------------------------------------------------------------
2458 ! 配列形状のチェック
2459 ! Check array shape
2460 !-------------------------------------------------------------------
2461 ! 入力ファイル中のデータの次元数
2462 ! Get size of dimesions in data of an input file
2463 !
2464 call inquire( var = var, & ! (in)
2465 & rank = rank, alldims = alldims ) ! (out)
2466 ! 引数の次元数のチェック (縮退されている場合には減らす)
2467 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2468 array_rank = 4
2469 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2470 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2471 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2472 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
2473 ! 次元数の比較
2474 ! Compare sizes of dimensions
2475 !
2476 if ( .not. 4 == rank .and. .not. array_rank == rank ) then
2477 if ( .not. present_and_true(quiet) ) then
2478 call messagenotify('W', subname, &
2479 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2480 & i = (/rank, 4/), c1 = trim(url) )
2481 end if
2482 stat = gt_erankmismatch
2483 cause_c = 'array'
2484 goto 999
2485 end if
2486 ! 入力ファイル中のデータの配列形状取得
2487 ! Get shape of data in an input file
2488 call inquire( var = var , dimord = 1, & ! (in)
2489 & allcount = allcount, err = inq_err ) ! (out)
2490 if ( .not. inq_err ) then
2491 data_shape(1) = allcount
2492 else
2493 data_shape(1) = 1
2494 end if
2495 call inquire( var = var , dimord = 2, & ! (in)
2496 & allcount = allcount, err = inq_err ) ! (out)
2497 if ( .not. inq_err ) then
2498 data_shape(2) = allcount
2499 else
2500 data_shape(2) = 1
2501 end if
2502 call inquire( var = var , dimord = 3, & ! (in)
2503 & allcount = allcount, err = inq_err ) ! (out)
2504 if ( .not. inq_err ) then
2505 data_shape(3) = allcount
2506 else
2507 data_shape(3) = 1
2508 end if
2509 call inquire( var = var , dimord = 4, & ! (in)
2510 & allcount = allcount, err = inq_err ) ! (out)
2511 if ( .not. inq_err ) then
2512 data_shape(4) = allcount
2513 else
2514 data_shape(4) = 1
2515 end if
2516 ! 引数の配列形状整形
2517 ! Arrange shape of an argument
2518 !
2519 array_shape_check = array_shape
2520 sd = 1
2521 do i = 1, 4 - 1
2522 if ( array_shape_check(sd) == 1 ) then
2523 array_shape_check(sd:4) = cshift( array_shape_check(sd:4), 1, 1 )
2524 else
2525 sd = sd + 1
2526 end if
2527 end do
2528 ! 配列形状の比較
2529 ! Compare shapes
2530 !
2531 if ( .not. all( array_shape_check == data_shape ) ) then
2532 if ( .not. present_and_true(quiet) ) then
2533 call messagenotify('W', subname, &
2534 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2535 & c1 = trim( url ), &
2536 & c2 = trim( tochar( data_shape(1:rank) ) ), &
2537 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2538 end if
2539 stat = gt_eargsizemismatch
2540 cause_c = 'array'
2541 goto 999
2542 end if
2543 !-------------------------------------
2544 ! データ取得
2545 ! Get data
2546 call inquire( var = var, & ! (in)
2547 & size = domain ) ! (out)
2548 if ( allocated( array_tmp ) ) deallocate( array_tmp )
2549 allocate( array_tmp(array_allsize) )
2550 call get( var, array_tmp, domain )
2551 array = reshape( array_tmp, array_shape )
2552 deallocate( array_tmp )
2553 call close( var )
2554 !-------------------------------------
2555 ! データファイル名と切り出し範囲の印字
2556 ! Print data filename and clipping range
2557 call actual_iorange_dump(url, & ! (in)
2558 & actual_url, returned_time, & ! (out) optional
2559 & time_name = tname, & ! (in) optional
2560 & err = err) ! (out) optional
2561 if ( .not. present_and_true(quiet) ) then
2562 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2563 end if
2564999 continue
2565 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal4pointer()

subroutine historygetreal4pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5786 of file historyget.f90.

5788 use gtdata_types, only: gt_variable
5789 use gtdata_generic, only: open, inquire, close, get
5790 use dc_string, only: tochar
5792 use dc_types, only: string, dp, sp
5793 use dc_message, only: messagenotify
5794 use dc_trace, only: dbgmessage
5795 ! MPI ライブラリ
5796 ! MPI library
5797 !
5798 use mpi
5799 implicit none
5800 character(*), intent(in):: file
5801 character(*), intent(in):: varname
5802 character(*), intent(in), optional:: range
5803 logical, intent(in), optional:: quiet
5804 logical, intent(in), optional:: flag_mpi_split
5805 real(DP), intent(out), optional:: returned_time ! データの時刻
5806 logical, intent(out), optional:: flag_time_exist
5807 logical, intent(out), optional:: err
5808 real(SP), pointer :: array(:,:,:,:) ! (out)
5809 type(GT_VARIABLE):: var
5810 character(STRING):: file_work, url, actual_url
5811 character(STRING):: tname
5812 character(*), parameter :: subname = "HistoryGetReal4Pointer"
5813 interface
5814 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5815 character(*), intent(in):: file
5816 character(*), intent(in):: varname
5817 character(*), intent(out):: url
5818 character(*), intent(in), optional:: range
5819 logical, intent(out), optional:: flag_time_exist
5820 character(*), intent(out), optional:: time_name
5821 logical, intent(out), optional:: err
5822 end subroutine lookup_growable_url
5823 end interface
5824 interface
5825 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5826 use dc_types, only: dp
5827 character(*), intent(in) :: url ! 変数 URL
5828 character(*), intent(out), optional :: actual_url
5829 ! 正確な入出力範囲指定
5830 real(DP), intent(out), optional:: returned_time ! データの時刻
5831 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5832 logical, intent(out), optional :: err ! エラーのフラグ
5833 end subroutine actual_iorange_dump
5834 end interface
5835 interface
5836 function file_rename_mpi( file ) result(result)
5837 use dc_types, only: string
5838 character(*), intent(in):: file
5839 character(STRING):: result
5840 end function file_rename_mpi
5841 end interface
5842 continue
5843 file_work = file
5844 ! ファイル名の変更 (MPI 用)
5845 ! Change filename (for MPI)
5846 !
5847 if ( present_and_true( flag_mpi_split ) ) &
5848 & file_work = file_rename_mpi( file_work )
5849 ! 必要な情報を gtool 変数化
5850 !
5851 call lookup_growable_url(file_work, varname, url, range, &
5852 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5853 call dbgmessage('@ url =%c', c1=trim(url))
5854 ! いよいよデータ取得
5855 !
5856 call open(var, url, err)
5857 call get(var, array, err)
5858 call close(var, err)
5859 call actual_iorange_dump(url, & ! (in)
5860 & actual_url, returned_time, & ! (out) optional
5861 & time_name = tname, & ! (in) optional
5862 & err = err) ! (out) optional
5863 if ( .not. present_and_true(quiet) ) then
5864 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5865 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal4pointertimed()

subroutine historygetreal4pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12767 of file historyget.f90.

12770 use dc_string, only: tochar, split
12771 use dc_types, only: string, dp, sp
12772 use dc_trace, only: dbgmessage
12773 use dc_url, only: url_chop_iorange, gt_equal
12774 use dc_present, only: present_and_true
12775 ! MPI ライブラリ
12776 ! MPI library
12777 !
12778 use mpi
12779 implicit none
12780 character(*), intent(in):: file, varname
12781 real(DP), intent(in):: time
12782 logical, intent(in), optional:: quiet
12783 real(SP), pointer :: array(:,:,:,:)
12784 logical, intent(in), optional:: flag_mpi_split
12785 real(DP), intent(out), optional:: returned_time
12786 logical, intent(out), optional:: flag_time_exist
12787 logical, intent(out), optional:: err
12788 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12789 character(STRING), pointer:: carray (:)
12790 character(STRING):: tname
12791 interface
12792 subroutine historygetreal4pointer(&
12793 & file, varname, array, range, quiet, &
12794 & flag_mpi_split, returned_time, flag_time_exist, err)
12795 use dc_types, only: dp, sp
12796 character(*), intent(in):: file
12797 character(*), intent(in):: varname
12798 character(*), intent(in), optional:: range
12799 logical, intent(in), optional:: quiet
12800 logical, intent(in), optional:: flag_mpi_split
12801 real(DP), intent(out), optional:: returned_time
12802 logical, intent(out), optional:: flag_time_exist
12803 logical, intent(out), optional:: err
12804 real(SP), pointer :: array(:,:,:,:)
12805 end subroutine historygetreal4pointer
12806 end interface
12807 interface
12808 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12809 character(*), intent(in):: file
12810 character(*), intent(in):: varname
12811 character(*), intent(out):: url
12812 character(*), intent(in), optional:: range
12813 logical, intent(out), optional:: flag_time_exist
12814 character(*), intent(out), optional:: time_name
12815 logical, intent(out), optional:: err
12816 end subroutine lookup_growable_url
12817 end interface
12818 interface
12819 function file_rename_mpi( file ) result(result)
12820 use dc_types, only: string
12821 character(*), intent(in):: file
12822 character(STRING):: result
12823 end function file_rename_mpi
12824 end interface
12825 continue
12826 file_work = file
12827 if ( present_and_true( flag_mpi_split ) ) &
12828 & file_work = file_rename_mpi( file_work )
12829 call lookup_growable_url(file = file_work, varname = varname, &
12830 & url = url, &
12831 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12832 call url_chop_iorange( &
12833 & fullname = url, iorange = iorange, remainder = remainder )
12834 call split( str = iorange, carray = carray, sep = gt_equal )
12835 timevar_name = carray(1)
12836 deallocate( carray )
12837 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12838 call historygetreal4pointer( file = file, &
12839 & varname = varname, array = array, &
12840 & range = time_range, quiet = quiet, &
12841 & flag_mpi_split = flag_mpi_split, &
12842 & returned_time = returned_time, &
12843 & flag_time_exist = flag_time_exist, &
12844 & err = err )
subroutine historygetreal4pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal4pointertimei()

subroutine historygetreal4pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16559 of file historyget.f90.

16562 use dc_string, only: tochar, split
16563 use dc_types, only: string, dp, sp
16564 use dc_trace, only: dbgmessage
16565 use dc_url, only: url_chop_iorange, gt_equal
16566 use dc_present, only: present_and_true
16567 ! MPI ライブラリ
16568 ! MPI library
16569 !
16570 use mpi
16571 implicit none
16572 character(*), intent(in):: file, varname
16573 integer, intent(in):: time
16574 logical, intent(in), optional:: quiet
16575 real(SP), pointer :: array(:,:,:,:)
16576 logical, intent(in), optional:: flag_mpi_split
16577 real(DP), intent(out), optional:: returned_time
16578 logical, intent(out), optional:: flag_time_exist
16579 logical, intent(out), optional:: err
16580 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16581 character(STRING), pointer:: carray (:)
16582 character(STRING):: tname
16583 interface
16584 subroutine historygetreal4pointer(&
16585 & file, varname, array, range, quiet, &
16586 & flag_mpi_split, returned_time, flag_time_exist, err)
16587 use dc_types, only: dp, sp
16588 character(*), intent(in):: file
16589 character(*), intent(in):: varname
16590 character(*), intent(in), optional:: range
16591 logical, intent(in), optional:: quiet
16592 logical, intent(in), optional:: flag_mpi_split
16593 real(DP), intent(out), optional:: returned_time
16594 logical, intent(out), optional:: flag_time_exist
16595 logical, intent(out), optional:: err
16596 real(SP), pointer :: array(:,:,:,:)
16597 end subroutine historygetreal4pointer
16598 end interface
16599 interface
16600 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16601 character(*), intent(in):: file
16602 character(*), intent(in):: varname
16603 character(*), intent(out):: url
16604 character(*), intent(in), optional:: range
16605 logical, intent(out), optional:: flag_time_exist
16606 character(*), intent(out), optional:: time_name
16607 logical, intent(out), optional:: err
16608 end subroutine lookup_growable_url
16609 end interface
16610 interface
16611 function file_rename_mpi( file ) result(result)
16612 use dc_types, only: string
16613 character(*), intent(in):: file
16614 character(STRING):: result
16615 end function file_rename_mpi
16616 end interface
16617 continue
16618 file_work = file
16619 if ( present_and_true( flag_mpi_split ) ) &
16620 & file_work = file_rename_mpi( file_work )
16621 call lookup_growable_url(file = file_work, varname = varname, &
16622 & url = url, &
16623 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16624 call url_chop_iorange( &
16625 & fullname = url, iorange = iorange, remainder = remainder )
16626 call split( str = iorange, carray = carray, sep = gt_equal )
16627 timevar_name = carray(1)
16628 deallocate( carray )
16629 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16630 call historygetreal4pointer( file = file, &
16631 & varname = varname, array = array, &
16632 & range = time_range, quiet = quiet, &
16633 & flag_mpi_split = flag_mpi_split, &
16634 & returned_time = returned_time, &
16635 & flag_time_exist = flag_time_exist, &
16636 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal4pointertimer()

subroutine historygetreal4pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8975 of file historyget.f90.

8978 use dc_string, only: tochar, split
8979 use dc_types, only: string, dp, sp
8980 use dc_trace, only: dbgmessage
8981 use dc_url, only: url_chop_iorange, gt_equal
8982 use dc_present, only: present_and_true
8983 ! MPI ライブラリ
8984 ! MPI library
8985 !
8986 use mpi
8987 implicit none
8988 character(*), intent(in):: file, varname
8989 real(SP), intent(in):: time
8990 logical, intent(in), optional:: quiet
8991 real(SP), pointer :: array(:,:,:,:)
8992 logical, intent(in), optional:: flag_mpi_split
8993 real(DP), intent(out), optional:: returned_time
8994 logical, intent(out), optional:: flag_time_exist
8995 logical, intent(out), optional:: err
8996 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8997 character(STRING), pointer:: carray (:)
8998 character(STRING):: tname
8999 interface
9000 subroutine historygetreal4pointer(&
9001 & file, varname, array, range, quiet, &
9002 & flag_mpi_split, returned_time, flag_time_exist, err)
9003 use dc_types, only: dp, sp
9004 character(*), intent(in):: file
9005 character(*), intent(in):: varname
9006 character(*), intent(in), optional:: range
9007 logical, intent(in), optional:: quiet
9008 logical, intent(in), optional:: flag_mpi_split
9009 real(DP), intent(out), optional:: returned_time
9010 logical, intent(out), optional:: flag_time_exist
9011 logical, intent(out), optional:: err
9012 real(SP), pointer :: array(:,:,:,:)
9013 end subroutine historygetreal4pointer
9014 end interface
9015 interface
9016 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9017 character(*), intent(in):: file
9018 character(*), intent(in):: varname
9019 character(*), intent(out):: url
9020 character(*), intent(in), optional:: range
9021 logical, intent(out), optional:: flag_time_exist
9022 character(*), intent(out), optional:: time_name
9023 logical, intent(out), optional:: err
9024 end subroutine lookup_growable_url
9025 end interface
9026 interface
9027 function file_rename_mpi( file ) result(result)
9028 use dc_types, only: string
9029 character(*), intent(in):: file
9030 character(STRING):: result
9031 end function file_rename_mpi
9032 end interface
9033 continue
9034 file_work = file
9035 if ( present_and_true( flag_mpi_split ) ) &
9036 & file_work = file_rename_mpi( file_work )
9037 call lookup_growable_url(file = file_work, varname = varname, &
9038 & url = url, &
9039 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9040 call url_chop_iorange( &
9041 & fullname = url, iorange = iorange, remainder = remainder )
9042 call split( str = iorange, carray = carray, sep = gt_equal )
9043 timevar_name = carray(1)
9044 deallocate( carray )
9045 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9046 call historygetreal4pointer( file = file, &
9047 & varname = varname, array = array, &
9048 & range = time_range, quiet = quiet, &
9049 & flag_mpi_split = flag_mpi_split, &
9050 & returned_time = returned_time, &
9051 & flag_time_exist = flag_time_exist, &
9052 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal4pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal4timed()

subroutine historygetreal4timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12135 of file historyget.f90.

12138 use dc_string, only: tochar, split
12139 use dc_types, only: string, dp, sp
12140 use dc_trace, only: dbgmessage
12141 use dc_url, only: url_chop_iorange, gt_equal
12142 use dc_present, only: present_and_true
12143 ! MPI ライブラリ
12144 ! MPI library
12145 !
12146 use mpi
12147 implicit none
12148 character(*), intent(in):: file, varname
12149 real(DP), intent(in):: time
12150 logical, intent(in), optional:: quiet
12151 real(SP), intent(out) :: array(:,:,:,:)
12152 logical, intent(in), optional:: flag_mpi_split
12153 real(DP), intent(out), optional:: returned_time
12154 logical, intent(out), optional:: flag_time_exist
12155 logical, intent(out), optional:: err
12156 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12157 character(STRING), pointer:: carray (:)
12158 character(STRING):: tname
12159 interface
12160 subroutine historygetreal4(&
12161 & file, varname, array, range, quiet, &
12162 & flag_mpi_split, returned_time, flag_time_exist, err)
12163 use dc_types, only: dp, sp
12164 character(*), intent(in):: file
12165 character(*), intent(in):: varname
12166 character(*), intent(in), optional:: range
12167 logical, intent(in), optional:: quiet
12168 logical, intent(in), optional:: flag_mpi_split
12169 real(DP), intent(out), optional:: returned_time
12170 logical, intent(out), optional:: flag_time_exist
12171 logical, intent(out), optional:: err
12172 real(SP), intent(out) :: array(:,:,:,:)
12173 end subroutine historygetreal4
12174 end interface
12175 interface
12176 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12177 character(*), intent(in):: file
12178 character(*), intent(in):: varname
12179 character(*), intent(out):: url
12180 character(*), intent(in), optional:: range
12181 logical, intent(out), optional:: flag_time_exist
12182 character(*), intent(out), optional:: time_name
12183 logical, intent(out), optional:: err
12184 end subroutine lookup_growable_url
12185 end interface
12186 interface
12187 function file_rename_mpi( file ) result(result)
12188 use dc_types, only: string
12189 character(*), intent(in):: file
12190 character(STRING):: result
12191 end function file_rename_mpi
12192 end interface
12193 continue
12194 file_work = file
12195 if ( present_and_true( flag_mpi_split ) ) &
12196 & file_work = file_rename_mpi( file_work )
12197 call lookup_growable_url(file = file_work, varname = varname, &
12198 & url = url, &
12199 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12200 call url_chop_iorange( &
12201 & fullname = url, iorange = iorange, remainder = remainder )
12202 call split( str = iorange, carray = carray, sep = gt_equal )
12203 timevar_name = carray(1)
12204 deallocate( carray )
12205 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12206 call historygetreal4( file = file, &
12207 & varname = varname, array = array, &
12208 & range = time_range, quiet = quiet, &
12209 & flag_mpi_split = flag_mpi_split, &
12210 & returned_time = returned_time, &
12211 & flag_time_exist = flag_time_exist, &
12212 & err = err )
subroutine historygetreal4(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal4timei()

subroutine historygetreal4timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 15927 of file historyget.f90.

15930 use dc_string, only: tochar, split
15931 use dc_types, only: string, dp, sp
15932 use dc_trace, only: dbgmessage
15933 use dc_url, only: url_chop_iorange, gt_equal
15934 use dc_present, only: present_and_true
15935 ! MPI ライブラリ
15936 ! MPI library
15937 !
15938 use mpi
15939 implicit none
15940 character(*), intent(in):: file, varname
15941 integer, intent(in):: time
15942 logical, intent(in), optional:: quiet
15943 real(SP), intent(out) :: array(:,:,:,:)
15944 logical, intent(in), optional:: flag_mpi_split
15945 real(DP), intent(out), optional:: returned_time
15946 logical, intent(out), optional:: flag_time_exist
15947 logical, intent(out), optional:: err
15948 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
15949 character(STRING), pointer:: carray (:)
15950 character(STRING):: tname
15951 interface
15952 subroutine historygetreal4(&
15953 & file, varname, array, range, quiet, &
15954 & flag_mpi_split, returned_time, flag_time_exist, err)
15955 use dc_types, only: dp, sp
15956 character(*), intent(in):: file
15957 character(*), intent(in):: varname
15958 character(*), intent(in), optional:: range
15959 logical, intent(in), optional:: quiet
15960 logical, intent(in), optional:: flag_mpi_split
15961 real(DP), intent(out), optional:: returned_time
15962 logical, intent(out), optional:: flag_time_exist
15963 logical, intent(out), optional:: err
15964 real(SP), intent(out) :: array(:,:,:,:)
15965 end subroutine historygetreal4
15966 end interface
15967 interface
15968 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
15969 character(*), intent(in):: file
15970 character(*), intent(in):: varname
15971 character(*), intent(out):: url
15972 character(*), intent(in), optional:: range
15973 logical, intent(out), optional:: flag_time_exist
15974 character(*), intent(out), optional:: time_name
15975 logical, intent(out), optional:: err
15976 end subroutine lookup_growable_url
15977 end interface
15978 interface
15979 function file_rename_mpi( file ) result(result)
15980 use dc_types, only: string
15981 character(*), intent(in):: file
15982 character(STRING):: result
15983 end function file_rename_mpi
15984 end interface
15985 continue
15986 file_work = file
15987 if ( present_and_true( flag_mpi_split ) ) &
15988 & file_work = file_rename_mpi( file_work )
15989 call lookup_growable_url(file = file_work, varname = varname, &
15990 & url = url, &
15991 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
15992 call url_chop_iorange( &
15993 & fullname = url, iorange = iorange, remainder = remainder )
15994 call split( str = iorange, carray = carray, sep = gt_equal )
15995 timevar_name = carray(1)
15996 deallocate( carray )
15997 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
15998 call historygetreal4( file = file, &
15999 & varname = varname, array = array, &
16000 & range = time_range, quiet = quiet, &
16001 & flag_mpi_split = flag_mpi_split, &
16002 & returned_time = returned_time, &
16003 & flag_time_exist = flag_time_exist, &
16004 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal4timer()

subroutine historygetreal4timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8343 of file historyget.f90.

8346 use dc_string, only: tochar, split
8347 use dc_types, only: string, dp, sp
8348 use dc_trace, only: dbgmessage
8349 use dc_url, only: url_chop_iorange, gt_equal
8350 use dc_present, only: present_and_true
8351 ! MPI ライブラリ
8352 ! MPI library
8353 !
8354 use mpi
8355 implicit none
8356 character(*), intent(in):: file, varname
8357 real(SP), intent(in):: time
8358 logical, intent(in), optional:: quiet
8359 real(SP), intent(out) :: array(:,:,:,:)
8360 logical, intent(in), optional:: flag_mpi_split
8361 real(DP), intent(out), optional:: returned_time
8362 logical, intent(out), optional:: flag_time_exist
8363 logical, intent(out), optional:: err
8364 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8365 character(STRING), pointer:: carray (:)
8366 character(STRING):: tname
8367 interface
8368 subroutine historygetreal4(&
8369 & file, varname, array, range, quiet, &
8370 & flag_mpi_split, returned_time, flag_time_exist, err)
8371 use dc_types, only: dp, sp
8372 character(*), intent(in):: file
8373 character(*), intent(in):: varname
8374 character(*), intent(in), optional:: range
8375 logical, intent(in), optional:: quiet
8376 logical, intent(in), optional:: flag_mpi_split
8377 real(DP), intent(out), optional:: returned_time
8378 logical, intent(out), optional:: flag_time_exist
8379 logical, intent(out), optional:: err
8380 real(SP), intent(out) :: array(:,:,:,:)
8381 end subroutine historygetreal4
8382 end interface
8383 interface
8384 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8385 character(*), intent(in):: file
8386 character(*), intent(in):: varname
8387 character(*), intent(out):: url
8388 character(*), intent(in), optional:: range
8389 logical, intent(out), optional:: flag_time_exist
8390 character(*), intent(out), optional:: time_name
8391 logical, intent(out), optional:: err
8392 end subroutine lookup_growable_url
8393 end interface
8394 interface
8395 function file_rename_mpi( file ) result(result)
8396 use dc_types, only: string
8397 character(*), intent(in):: file
8398 character(STRING):: result
8399 end function file_rename_mpi
8400 end interface
8401 continue
8402 file_work = file
8403 if ( present_and_true( flag_mpi_split ) ) &
8404 & file_work = file_rename_mpi( file_work )
8405 call lookup_growable_url(file = file_work, varname = varname, &
8406 & url = url, &
8407 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8408 call url_chop_iorange( &
8409 & fullname = url, iorange = iorange, remainder = remainder )
8410 call split( str = iorange, carray = carray, sep = gt_equal )
8411 timevar_name = carray(1)
8412 deallocate( carray )
8413 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8414 call historygetreal4( file = file, &
8415 & varname = varname, array = array, &
8416 & range = time_range, quiet = quiet, &
8417 & flag_mpi_split = flag_mpi_split, &
8418 & returned_time = returned_time, &
8419 & flag_time_exist = flag_time_exist, &
8420 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal4(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal5()

subroutine historygetreal5 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 2567 of file historyget.f90.

2569 use gtdata_types, only: gt_variable
2570 use gtdata_generic, only: open, inquire, close, get
2571 use dc_string, only: tochar
2573 use dc_regex, only: match
2574 use dc_types, only: string, dp, sp
2575 use dc_message, only: messagenotify
2578 ! MPI ライブラリ
2579 ! MPI library
2580 use mpi
2581 implicit none
2582 character(*), intent(in):: file
2583 character(*), intent(in):: varname
2584 character(*), intent(in), optional:: range
2585 logical, intent(in), optional:: quiet
2586 logical, intent(in), optional:: flag_mpi_split
2587 real(DP), intent(out), optional:: returned_time ! データの時刻
2588 logical, intent(out), optional:: flag_time_exist
2589 logical, intent(out), optional:: err
2590 real(SP), intent(out) :: array(:,:,:,:,:)
2591 real(SP), allocatable :: array_tmp(:)
2592 integer:: array_allsize
2593 integer:: array_shape(5), data_shape(5), array_shape_check(5)
2594 integer:: allcount
2595 integer:: i, sd
2596 logical:: inq_err
2597 type(GT_VARIABLE):: var
2598 character(STRING):: file_work, url, actual_url
2599 integer:: rank, alldims, array_rank
2600 integer:: domain
2601 character(STRING):: tname
2602 integer:: stat
2603 character(STRING):: cause_c
2604 character(*), parameter :: subname = "HistoryGetReal5"
2605 interface
2606 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2607 character(*), intent(in):: file
2608 character(*), intent(in):: varname
2609 character(*), intent(out):: url
2610 character(*), intent(in), optional:: range
2611 logical, intent(out), optional:: flag_time_exist
2612 character(*), intent(out), optional:: time_name
2613 logical, intent(out), optional:: err
2614 end subroutine lookup_growable_url
2615 end interface
2616 interface
2617 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2618 use dc_types, only: dp
2619 character(*), intent(in) :: url ! 変数 URL
2620 character(*), intent(out), optional :: actual_url
2621 ! 正確な入出力範囲指定
2622 real(DP), intent(out), optional:: returned_time ! データの時刻
2623 character(*), intent(in), optional:: time_name ! 時刻次元の名称
2624 logical, intent(out), optional :: err ! エラーのフラグ
2625 end subroutine actual_iorange_dump
2626 end interface
2627 interface
2628 function file_rename_mpi( file ) result(result)
2629 use dc_types, only: string
2630 character(*), intent(in):: file
2631 character(STRING):: result
2632 end function file_rename_mpi
2633 end interface
2634 continue
2635 cause_c = ''
2636 stat = dc_noerr
2637 file_work = file
2638 array_shape = shape( array )
2639 array_allsize = size( array )
2640 ! ファイル名の変更 (MPI 用)
2641 ! Change filename (for MPI)
2642 !
2643 if ( present_and_true( flag_mpi_split ) ) &
2644 & file_work = file_rename_mpi( file_work )
2645 ! 最新時刻の URL 取得
2646 ! Get URL of latest time
2647 !
2648 call lookup_growable_url(file_work, varname, url, range, &
2649 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2650 if ( present_and_true(err) ) then
2651 stat = gt_enoturl
2652 cause_c = url
2653 goto 999
2654 end if
2655 ! ファイルオープン
2656 ! File open
2657 call open( var, url, err = err )
2658 if ( present_and_true(err) ) then
2659 stat = gt_enoturl
2660 cause_c = url
2661 goto 999
2662 end if
2663 !-------------------------------------------------------------------
2664 ! 配列形状のチェック
2665 ! Check array shape
2666 !-------------------------------------------------------------------
2667 ! 入力ファイル中のデータの次元数
2668 ! Get size of dimesions in data of an input file
2669 !
2670 call inquire( var = var, & ! (in)
2671 & rank = rank, alldims = alldims ) ! (out)
2672 ! 引数の次元数のチェック (縮退されている場合には減らす)
2673 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2674 array_rank = 5
2675 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2676 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2677 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2678 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
2679 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
2680 ! 次元数の比較
2681 ! Compare sizes of dimensions
2682 !
2683 if ( .not. 5 == rank .and. .not. array_rank == rank ) then
2684 if ( .not. present_and_true(quiet) ) then
2685 call messagenotify('W', subname, &
2686 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2687 & i = (/rank, 5/), c1 = trim(url) )
2688 end if
2689 stat = gt_erankmismatch
2690 cause_c = 'array'
2691 goto 999
2692 end if
2693 ! 入力ファイル中のデータの配列形状取得
2694 ! Get shape of data in an input file
2695 call inquire( var = var , dimord = 1, & ! (in)
2696 & allcount = allcount, err = inq_err ) ! (out)
2697 if ( .not. inq_err ) then
2698 data_shape(1) = allcount
2699 else
2700 data_shape(1) = 1
2701 end if
2702 call inquire( var = var , dimord = 2, & ! (in)
2703 & allcount = allcount, err = inq_err ) ! (out)
2704 if ( .not. inq_err ) then
2705 data_shape(2) = allcount
2706 else
2707 data_shape(2) = 1
2708 end if
2709 call inquire( var = var , dimord = 3, & ! (in)
2710 & allcount = allcount, err = inq_err ) ! (out)
2711 if ( .not. inq_err ) then
2712 data_shape(3) = allcount
2713 else
2714 data_shape(3) = 1
2715 end if
2716 call inquire( var = var , dimord = 4, & ! (in)
2717 & allcount = allcount, err = inq_err ) ! (out)
2718 if ( .not. inq_err ) then
2719 data_shape(4) = allcount
2720 else
2721 data_shape(4) = 1
2722 end if
2723 call inquire( var = var , dimord = 5, & ! (in)
2724 & allcount = allcount, err = inq_err ) ! (out)
2725 if ( .not. inq_err ) then
2726 data_shape(5) = allcount
2727 else
2728 data_shape(5) = 1
2729 end if
2730 ! 引数の配列形状整形
2731 ! Arrange shape of an argument
2732 !
2733 array_shape_check = array_shape
2734 sd = 1
2735 do i = 1, 5 - 1
2736 if ( array_shape_check(sd) == 1 ) then
2737 array_shape_check(sd:5) = cshift( array_shape_check(sd:5), 1, 1 )
2738 else
2739 sd = sd + 1
2740 end if
2741 end do
2742 ! 配列形状の比較
2743 ! Compare shapes
2744 !
2745 if ( .not. all( array_shape_check == data_shape ) ) then
2746 if ( .not. present_and_true(quiet) ) then
2747 call messagenotify('W', subname, &
2748 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2749 & c1 = trim( url ), &
2750 & c2 = trim( tochar( data_shape(1:rank) ) ), &
2751 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2752 end if
2753 stat = gt_eargsizemismatch
2754 cause_c = 'array'
2755 goto 999
2756 end if
2757 !-------------------------------------
2758 ! データ取得
2759 ! Get data
2760 call inquire( var = var, & ! (in)
2761 & size = domain ) ! (out)
2762 if ( allocated( array_tmp ) ) deallocate( array_tmp )
2763 allocate( array_tmp(array_allsize) )
2764 call get( var, array_tmp, domain )
2765 array = reshape( array_tmp, array_shape )
2766 deallocate( array_tmp )
2767 call close( var )
2768 !-------------------------------------
2769 ! データファイル名と切り出し範囲の印字
2770 ! Print data filename and clipping range
2771 call actual_iorange_dump(url, & ! (in)
2772 & actual_url, returned_time, & ! (out) optional
2773 & time_name = tname, & ! (in) optional
2774 & err = err) ! (out) optional
2775 if ( .not. present_and_true(quiet) ) then
2776 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2777 end if
2778999 continue
2779 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal5pointer()

subroutine historygetreal5pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5867 of file historyget.f90.

5869 use gtdata_types, only: gt_variable
5870 use gtdata_generic, only: open, inquire, close, get
5871 use dc_string, only: tochar
5873 use dc_types, only: string, dp, sp
5874 use dc_message, only: messagenotify
5875 use dc_trace, only: dbgmessage
5876 ! MPI ライブラリ
5877 ! MPI library
5878 !
5879 use mpi
5880 implicit none
5881 character(*), intent(in):: file
5882 character(*), intent(in):: varname
5883 character(*), intent(in), optional:: range
5884 logical, intent(in), optional:: quiet
5885 logical, intent(in), optional:: flag_mpi_split
5886 real(DP), intent(out), optional:: returned_time ! データの時刻
5887 logical, intent(out), optional:: flag_time_exist
5888 logical, intent(out), optional:: err
5889 real(SP), pointer :: array(:,:,:,:,:) ! (out)
5890 type(GT_VARIABLE):: var
5891 character(STRING):: file_work, url, actual_url
5892 character(STRING):: tname
5893 character(*), parameter :: subname = "HistoryGetReal5Pointer"
5894 interface
5895 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5896 character(*), intent(in):: file
5897 character(*), intent(in):: varname
5898 character(*), intent(out):: url
5899 character(*), intent(in), optional:: range
5900 logical, intent(out), optional:: flag_time_exist
5901 character(*), intent(out), optional:: time_name
5902 logical, intent(out), optional:: err
5903 end subroutine lookup_growable_url
5904 end interface
5905 interface
5906 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5907 use dc_types, only: dp
5908 character(*), intent(in) :: url ! 変数 URL
5909 character(*), intent(out), optional :: actual_url
5910 ! 正確な入出力範囲指定
5911 real(DP), intent(out), optional:: returned_time ! データの時刻
5912 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5913 logical, intent(out), optional :: err ! エラーのフラグ
5914 end subroutine actual_iorange_dump
5915 end interface
5916 interface
5917 function file_rename_mpi( file ) result(result)
5918 use dc_types, only: string
5919 character(*), intent(in):: file
5920 character(STRING):: result
5921 end function file_rename_mpi
5922 end interface
5923 continue
5924 file_work = file
5925 ! ファイル名の変更 (MPI 用)
5926 ! Change filename (for MPI)
5927 !
5928 if ( present_and_true( flag_mpi_split ) ) &
5929 & file_work = file_rename_mpi( file_work )
5930 ! 必要な情報を gtool 変数化
5931 !
5932 call lookup_growable_url(file_work, varname, url, range, &
5933 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
5934 call dbgmessage('@ url =%c', c1=trim(url))
5935 ! いよいよデータ取得
5936 !
5937 call open(var, url, err)
5938 call get(var, array, err)
5939 call close(var, err)
5940 call actual_iorange_dump(url, & ! (in)
5941 & actual_url, returned_time, & ! (out) optional
5942 & time_name = tname, & ! (in) optional
5943 & err = err) ! (out) optional
5944 if ( .not. present_and_true(quiet) ) then
5945 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
5946 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal5pointertimed()

subroutine historygetreal5pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12846 of file historyget.f90.

12849 use dc_string, only: tochar, split
12850 use dc_types, only: string, dp, sp
12851 use dc_trace, only: dbgmessage
12852 use dc_url, only: url_chop_iorange, gt_equal
12853 use dc_present, only: present_and_true
12854 ! MPI ライブラリ
12855 ! MPI library
12856 !
12857 use mpi
12858 implicit none
12859 character(*), intent(in):: file, varname
12860 real(DP), intent(in):: time
12861 logical, intent(in), optional:: quiet
12862 real(SP), pointer :: array(:,:,:,:,:)
12863 logical, intent(in), optional:: flag_mpi_split
12864 real(DP), intent(out), optional:: returned_time
12865 logical, intent(out), optional:: flag_time_exist
12866 logical, intent(out), optional:: err
12867 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12868 character(STRING), pointer:: carray (:)
12869 character(STRING):: tname
12870 interface
12871 subroutine historygetreal5pointer(&
12872 & file, varname, array, range, quiet, &
12873 & flag_mpi_split, returned_time, flag_time_exist, err)
12874 use dc_types, only: dp, sp
12875 character(*), intent(in):: file
12876 character(*), intent(in):: varname
12877 character(*), intent(in), optional:: range
12878 logical, intent(in), optional:: quiet
12879 logical, intent(in), optional:: flag_mpi_split
12880 real(DP), intent(out), optional:: returned_time
12881 logical, intent(out), optional:: flag_time_exist
12882 logical, intent(out), optional:: err
12883 real(SP), pointer :: array(:,:,:,:,:)
12884 end subroutine historygetreal5pointer
12885 end interface
12886 interface
12887 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12888 character(*), intent(in):: file
12889 character(*), intent(in):: varname
12890 character(*), intent(out):: url
12891 character(*), intent(in), optional:: range
12892 logical, intent(out), optional:: flag_time_exist
12893 character(*), intent(out), optional:: time_name
12894 logical, intent(out), optional:: err
12895 end subroutine lookup_growable_url
12896 end interface
12897 interface
12898 function file_rename_mpi( file ) result(result)
12899 use dc_types, only: string
12900 character(*), intent(in):: file
12901 character(STRING):: result
12902 end function file_rename_mpi
12903 end interface
12904 continue
12905 file_work = file
12906 if ( present_and_true( flag_mpi_split ) ) &
12907 & file_work = file_rename_mpi( file_work )
12908 call lookup_growable_url(file = file_work, varname = varname, &
12909 & url = url, &
12910 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12911 call url_chop_iorange( &
12912 & fullname = url, iorange = iorange, remainder = remainder )
12913 call split( str = iorange, carray = carray, sep = gt_equal )
12914 timevar_name = carray(1)
12915 deallocate( carray )
12916 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12917 call historygetreal5pointer( file = file, &
12918 & varname = varname, array = array, &
12919 & range = time_range, quiet = quiet, &
12920 & flag_mpi_split = flag_mpi_split, &
12921 & returned_time = returned_time, &
12922 & flag_time_exist = flag_time_exist, &
12923 & err = err )
subroutine historygetreal5pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal5pointertimei()

subroutine historygetreal5pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16638 of file historyget.f90.

16641 use dc_string, only: tochar, split
16642 use dc_types, only: string, dp, sp
16643 use dc_trace, only: dbgmessage
16644 use dc_url, only: url_chop_iorange, gt_equal
16645 use dc_present, only: present_and_true
16646 ! MPI ライブラリ
16647 ! MPI library
16648 !
16649 use mpi
16650 implicit none
16651 character(*), intent(in):: file, varname
16652 integer, intent(in):: time
16653 logical, intent(in), optional:: quiet
16654 real(SP), pointer :: array(:,:,:,:,:)
16655 logical, intent(in), optional:: flag_mpi_split
16656 real(DP), intent(out), optional:: returned_time
16657 logical, intent(out), optional:: flag_time_exist
16658 logical, intent(out), optional:: err
16659 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16660 character(STRING), pointer:: carray (:)
16661 character(STRING):: tname
16662 interface
16663 subroutine historygetreal5pointer(&
16664 & file, varname, array, range, quiet, &
16665 & flag_mpi_split, returned_time, flag_time_exist, err)
16666 use dc_types, only: dp, sp
16667 character(*), intent(in):: file
16668 character(*), intent(in):: varname
16669 character(*), intent(in), optional:: range
16670 logical, intent(in), optional:: quiet
16671 logical, intent(in), optional:: flag_mpi_split
16672 real(DP), intent(out), optional:: returned_time
16673 logical, intent(out), optional:: flag_time_exist
16674 logical, intent(out), optional:: err
16675 real(SP), pointer :: array(:,:,:,:,:)
16676 end subroutine historygetreal5pointer
16677 end interface
16678 interface
16679 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16680 character(*), intent(in):: file
16681 character(*), intent(in):: varname
16682 character(*), intent(out):: url
16683 character(*), intent(in), optional:: range
16684 logical, intent(out), optional:: flag_time_exist
16685 character(*), intent(out), optional:: time_name
16686 logical, intent(out), optional:: err
16687 end subroutine lookup_growable_url
16688 end interface
16689 interface
16690 function file_rename_mpi( file ) result(result)
16691 use dc_types, only: string
16692 character(*), intent(in):: file
16693 character(STRING):: result
16694 end function file_rename_mpi
16695 end interface
16696 continue
16697 file_work = file
16698 if ( present_and_true( flag_mpi_split ) ) &
16699 & file_work = file_rename_mpi( file_work )
16700 call lookup_growable_url(file = file_work, varname = varname, &
16701 & url = url, &
16702 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16703 call url_chop_iorange( &
16704 & fullname = url, iorange = iorange, remainder = remainder )
16705 call split( str = iorange, carray = carray, sep = gt_equal )
16706 timevar_name = carray(1)
16707 deallocate( carray )
16708 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16709 call historygetreal5pointer( file = file, &
16710 & varname = varname, array = array, &
16711 & range = time_range, quiet = quiet, &
16712 & flag_mpi_split = flag_mpi_split, &
16713 & returned_time = returned_time, &
16714 & flag_time_exist = flag_time_exist, &
16715 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal5pointertimer()

subroutine historygetreal5pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9054 of file historyget.f90.

9057 use dc_string, only: tochar, split
9058 use dc_types, only: string, dp, sp
9059 use dc_trace, only: dbgmessage
9060 use dc_url, only: url_chop_iorange, gt_equal
9061 use dc_present, only: present_and_true
9062 ! MPI ライブラリ
9063 ! MPI library
9064 !
9065 use mpi
9066 implicit none
9067 character(*), intent(in):: file, varname
9068 real(SP), intent(in):: time
9069 logical, intent(in), optional:: quiet
9070 real(SP), pointer :: array(:,:,:,:,:)
9071 logical, intent(in), optional:: flag_mpi_split
9072 real(DP), intent(out), optional:: returned_time
9073 logical, intent(out), optional:: flag_time_exist
9074 logical, intent(out), optional:: err
9075 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9076 character(STRING), pointer:: carray (:)
9077 character(STRING):: tname
9078 interface
9079 subroutine historygetreal5pointer(&
9080 & file, varname, array, range, quiet, &
9081 & flag_mpi_split, returned_time, flag_time_exist, err)
9082 use dc_types, only: dp, sp
9083 character(*), intent(in):: file
9084 character(*), intent(in):: varname
9085 character(*), intent(in), optional:: range
9086 logical, intent(in), optional:: quiet
9087 logical, intent(in), optional:: flag_mpi_split
9088 real(DP), intent(out), optional:: returned_time
9089 logical, intent(out), optional:: flag_time_exist
9090 logical, intent(out), optional:: err
9091 real(SP), pointer :: array(:,:,:,:,:)
9092 end subroutine historygetreal5pointer
9093 end interface
9094 interface
9095 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9096 character(*), intent(in):: file
9097 character(*), intent(in):: varname
9098 character(*), intent(out):: url
9099 character(*), intent(in), optional:: range
9100 logical, intent(out), optional:: flag_time_exist
9101 character(*), intent(out), optional:: time_name
9102 logical, intent(out), optional:: err
9103 end subroutine lookup_growable_url
9104 end interface
9105 interface
9106 function file_rename_mpi( file ) result(result)
9107 use dc_types, only: string
9108 character(*), intent(in):: file
9109 character(STRING):: result
9110 end function file_rename_mpi
9111 end interface
9112 continue
9113 file_work = file
9114 if ( present_and_true( flag_mpi_split ) ) &
9115 & file_work = file_rename_mpi( file_work )
9116 call lookup_growable_url(file = file_work, varname = varname, &
9117 & url = url, &
9118 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9119 call url_chop_iorange( &
9120 & fullname = url, iorange = iorange, remainder = remainder )
9121 call split( str = iorange, carray = carray, sep = gt_equal )
9122 timevar_name = carray(1)
9123 deallocate( carray )
9124 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9125 call historygetreal5pointer( file = file, &
9126 & varname = varname, array = array, &
9127 & range = time_range, quiet = quiet, &
9128 & flag_mpi_split = flag_mpi_split, &
9129 & returned_time = returned_time, &
9130 & flag_time_exist = flag_time_exist, &
9131 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal5pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal5timed()

subroutine historygetreal5timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12214 of file historyget.f90.

12217 use dc_string, only: tochar, split
12218 use dc_types, only: string, dp, sp
12219 use dc_trace, only: dbgmessage
12220 use dc_url, only: url_chop_iorange, gt_equal
12221 use dc_present, only: present_and_true
12222 ! MPI ライブラリ
12223 ! MPI library
12224 !
12225 use mpi
12226 implicit none
12227 character(*), intent(in):: file, varname
12228 real(DP), intent(in):: time
12229 logical, intent(in), optional:: quiet
12230 real(SP), intent(out) :: array(:,:,:,:,:)
12231 logical, intent(in), optional:: flag_mpi_split
12232 real(DP), intent(out), optional:: returned_time
12233 logical, intent(out), optional:: flag_time_exist
12234 logical, intent(out), optional:: err
12235 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12236 character(STRING), pointer:: carray (:)
12237 character(STRING):: tname
12238 interface
12239 subroutine historygetreal5(&
12240 & file, varname, array, range, quiet, &
12241 & flag_mpi_split, returned_time, flag_time_exist, err)
12242 use dc_types, only: dp, sp
12243 character(*), intent(in):: file
12244 character(*), intent(in):: varname
12245 character(*), intent(in), optional:: range
12246 logical, intent(in), optional:: quiet
12247 logical, intent(in), optional:: flag_mpi_split
12248 real(DP), intent(out), optional:: returned_time
12249 logical, intent(out), optional:: flag_time_exist
12250 logical, intent(out), optional:: err
12251 real(SP), intent(out) :: array(:,:,:,:,:)
12252 end subroutine historygetreal5
12253 end interface
12254 interface
12255 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12256 character(*), intent(in):: file
12257 character(*), intent(in):: varname
12258 character(*), intent(out):: url
12259 character(*), intent(in), optional:: range
12260 logical, intent(out), optional:: flag_time_exist
12261 character(*), intent(out), optional:: time_name
12262 logical, intent(out), optional:: err
12263 end subroutine lookup_growable_url
12264 end interface
12265 interface
12266 function file_rename_mpi( file ) result(result)
12267 use dc_types, only: string
12268 character(*), intent(in):: file
12269 character(STRING):: result
12270 end function file_rename_mpi
12271 end interface
12272 continue
12273 file_work = file
12274 if ( present_and_true( flag_mpi_split ) ) &
12275 & file_work = file_rename_mpi( file_work )
12276 call lookup_growable_url(file = file_work, varname = varname, &
12277 & url = url, &
12278 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12279 call url_chop_iorange( &
12280 & fullname = url, iorange = iorange, remainder = remainder )
12281 call split( str = iorange, carray = carray, sep = gt_equal )
12282 timevar_name = carray(1)
12283 deallocate( carray )
12284 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12285 call historygetreal5( file = file, &
12286 & varname = varname, array = array, &
12287 & range = time_range, quiet = quiet, &
12288 & flag_mpi_split = flag_mpi_split, &
12289 & returned_time = returned_time, &
12290 & flag_time_exist = flag_time_exist, &
12291 & err = err )
subroutine historygetreal5(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal5timei()

subroutine historygetreal5timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16006 of file historyget.f90.

16009 use dc_string, only: tochar, split
16010 use dc_types, only: string, dp, sp
16011 use dc_trace, only: dbgmessage
16012 use dc_url, only: url_chop_iorange, gt_equal
16013 use dc_present, only: present_and_true
16014 ! MPI ライブラリ
16015 ! MPI library
16016 !
16017 use mpi
16018 implicit none
16019 character(*), intent(in):: file, varname
16020 integer, intent(in):: time
16021 logical, intent(in), optional:: quiet
16022 real(SP), intent(out) :: array(:,:,:,:,:)
16023 logical, intent(in), optional:: flag_mpi_split
16024 real(DP), intent(out), optional:: returned_time
16025 logical, intent(out), optional:: flag_time_exist
16026 logical, intent(out), optional:: err
16027 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16028 character(STRING), pointer:: carray (:)
16029 character(STRING):: tname
16030 interface
16031 subroutine historygetreal5(&
16032 & file, varname, array, range, quiet, &
16033 & flag_mpi_split, returned_time, flag_time_exist, err)
16034 use dc_types, only: dp, sp
16035 character(*), intent(in):: file
16036 character(*), intent(in):: varname
16037 character(*), intent(in), optional:: range
16038 logical, intent(in), optional:: quiet
16039 logical, intent(in), optional:: flag_mpi_split
16040 real(DP), intent(out), optional:: returned_time
16041 logical, intent(out), optional:: flag_time_exist
16042 logical, intent(out), optional:: err
16043 real(SP), intent(out) :: array(:,:,:,:,:)
16044 end subroutine historygetreal5
16045 end interface
16046 interface
16047 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16048 character(*), intent(in):: file
16049 character(*), intent(in):: varname
16050 character(*), intent(out):: url
16051 character(*), intent(in), optional:: range
16052 logical, intent(out), optional:: flag_time_exist
16053 character(*), intent(out), optional:: time_name
16054 logical, intent(out), optional:: err
16055 end subroutine lookup_growable_url
16056 end interface
16057 interface
16058 function file_rename_mpi( file ) result(result)
16059 use dc_types, only: string
16060 character(*), intent(in):: file
16061 character(STRING):: result
16062 end function file_rename_mpi
16063 end interface
16064 continue
16065 file_work = file
16066 if ( present_and_true( flag_mpi_split ) ) &
16067 & file_work = file_rename_mpi( file_work )
16068 call lookup_growable_url(file = file_work, varname = varname, &
16069 & url = url, &
16070 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16071 call url_chop_iorange( &
16072 & fullname = url, iorange = iorange, remainder = remainder )
16073 call split( str = iorange, carray = carray, sep = gt_equal )
16074 timevar_name = carray(1)
16075 deallocate( carray )
16076 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16077 call historygetreal5( file = file, &
16078 & varname = varname, array = array, &
16079 & range = time_range, quiet = quiet, &
16080 & flag_mpi_split = flag_mpi_split, &
16081 & returned_time = returned_time, &
16082 & flag_time_exist = flag_time_exist, &
16083 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal5timer()

subroutine historygetreal5timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8422 of file historyget.f90.

8425 use dc_string, only: tochar, split
8426 use dc_types, only: string, dp, sp
8427 use dc_trace, only: dbgmessage
8428 use dc_url, only: url_chop_iorange, gt_equal
8429 use dc_present, only: present_and_true
8430 ! MPI ライブラリ
8431 ! MPI library
8432 !
8433 use mpi
8434 implicit none
8435 character(*), intent(in):: file, varname
8436 real(SP), intent(in):: time
8437 logical, intent(in), optional:: quiet
8438 real(SP), intent(out) :: array(:,:,:,:,:)
8439 logical, intent(in), optional:: flag_mpi_split
8440 real(DP), intent(out), optional:: returned_time
8441 logical, intent(out), optional:: flag_time_exist
8442 logical, intent(out), optional:: err
8443 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8444 character(STRING), pointer:: carray (:)
8445 character(STRING):: tname
8446 interface
8447 subroutine historygetreal5(&
8448 & file, varname, array, range, quiet, &
8449 & flag_mpi_split, returned_time, flag_time_exist, err)
8450 use dc_types, only: dp, sp
8451 character(*), intent(in):: file
8452 character(*), intent(in):: varname
8453 character(*), intent(in), optional:: range
8454 logical, intent(in), optional:: quiet
8455 logical, intent(in), optional:: flag_mpi_split
8456 real(DP), intent(out), optional:: returned_time
8457 logical, intent(out), optional:: flag_time_exist
8458 logical, intent(out), optional:: err
8459 real(SP), intent(out) :: array(:,:,:,:,:)
8460 end subroutine historygetreal5
8461 end interface
8462 interface
8463 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8464 character(*), intent(in):: file
8465 character(*), intent(in):: varname
8466 character(*), intent(out):: url
8467 character(*), intent(in), optional:: range
8468 logical, intent(out), optional:: flag_time_exist
8469 character(*), intent(out), optional:: time_name
8470 logical, intent(out), optional:: err
8471 end subroutine lookup_growable_url
8472 end interface
8473 interface
8474 function file_rename_mpi( file ) result(result)
8475 use dc_types, only: string
8476 character(*), intent(in):: file
8477 character(STRING):: result
8478 end function file_rename_mpi
8479 end interface
8480 continue
8481 file_work = file
8482 if ( present_and_true( flag_mpi_split ) ) &
8483 & file_work = file_rename_mpi( file_work )
8484 call lookup_growable_url(file = file_work, varname = varname, &
8485 & url = url, &
8486 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8487 call url_chop_iorange( &
8488 & fullname = url, iorange = iorange, remainder = remainder )
8489 call split( str = iorange, carray = carray, sep = gt_equal )
8490 timevar_name = carray(1)
8491 deallocate( carray )
8492 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8493 call historygetreal5( file = file, &
8494 & varname = varname, array = array, &
8495 & range = time_range, quiet = quiet, &
8496 & flag_mpi_split = flag_mpi_split, &
8497 & returned_time = returned_time, &
8498 & flag_time_exist = flag_time_exist, &
8499 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal5(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal6()

subroutine historygetreal6 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 2781 of file historyget.f90.

2783 use gtdata_types, only: gt_variable
2784 use gtdata_generic, only: open, inquire, close, get
2785 use dc_string, only: tochar
2787 use dc_regex, only: match
2788 use dc_types, only: string, dp, sp
2789 use dc_message, only: messagenotify
2792 ! MPI ライブラリ
2793 ! MPI library
2794 use mpi
2795 implicit none
2796 character(*), intent(in):: file
2797 character(*), intent(in):: varname
2798 character(*), intent(in), optional:: range
2799 logical, intent(in), optional:: quiet
2800 logical, intent(in), optional:: flag_mpi_split
2801 real(DP), intent(out), optional:: returned_time ! データの時刻
2802 logical, intent(out), optional:: flag_time_exist
2803 logical, intent(out), optional:: err
2804 real(SP), intent(out) :: array(:,:,:,:,:,:)
2805 real(SP), allocatable :: array_tmp(:)
2806 integer:: array_allsize
2807 integer:: array_shape(6), data_shape(6), array_shape_check(6)
2808 integer:: allcount
2809 integer:: i, sd
2810 logical:: inq_err
2811 type(GT_VARIABLE):: var
2812 character(STRING):: file_work, url, actual_url
2813 integer:: rank, alldims, array_rank
2814 integer:: domain
2815 character(STRING):: tname
2816 integer:: stat
2817 character(STRING):: cause_c
2818 character(*), parameter :: subname = "HistoryGetReal6"
2819 interface
2820 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
2821 character(*), intent(in):: file
2822 character(*), intent(in):: varname
2823 character(*), intent(out):: url
2824 character(*), intent(in), optional:: range
2825 logical, intent(out), optional:: flag_time_exist
2826 character(*), intent(out), optional:: time_name
2827 logical, intent(out), optional:: err
2828 end subroutine lookup_growable_url
2829 end interface
2830 interface
2831 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
2832 use dc_types, only: dp
2833 character(*), intent(in) :: url ! 変数 URL
2834 character(*), intent(out), optional :: actual_url
2835 ! 正確な入出力範囲指定
2836 real(DP), intent(out), optional:: returned_time ! データの時刻
2837 character(*), intent(in), optional:: time_name ! 時刻次元の名称
2838 logical, intent(out), optional :: err ! エラーのフラグ
2839 end subroutine actual_iorange_dump
2840 end interface
2841 interface
2842 function file_rename_mpi( file ) result(result)
2843 use dc_types, only: string
2844 character(*), intent(in):: file
2845 character(STRING):: result
2846 end function file_rename_mpi
2847 end interface
2848 continue
2849 cause_c = ''
2850 stat = dc_noerr
2851 file_work = file
2852 array_shape = shape( array )
2853 array_allsize = size( array )
2854 ! ファイル名の変更 (MPI 用)
2855 ! Change filename (for MPI)
2856 !
2857 if ( present_and_true( flag_mpi_split ) ) &
2858 & file_work = file_rename_mpi( file_work )
2859 ! 最新時刻の URL 取得
2860 ! Get URL of latest time
2861 !
2862 call lookup_growable_url(file_work, varname, url, range, &
2863 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
2864 if ( present_and_true(err) ) then
2865 stat = gt_enoturl
2866 cause_c = url
2867 goto 999
2868 end if
2869 ! ファイルオープン
2870 ! File open
2871 call open( var, url, err = err )
2872 if ( present_and_true(err) ) then
2873 stat = gt_enoturl
2874 cause_c = url
2875 goto 999
2876 end if
2877 !-------------------------------------------------------------------
2878 ! 配列形状のチェック
2879 ! Check array shape
2880 !-------------------------------------------------------------------
2881 ! 入力ファイル中のデータの次元数
2882 ! Get size of dimesions in data of an input file
2883 !
2884 call inquire( var = var, & ! (in)
2885 & rank = rank, alldims = alldims ) ! (out)
2886 ! 引数の次元数のチェック (縮退されている場合には減らす)
2887 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
2888 array_rank = 6
2889 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
2890 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
2891 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
2892 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
2893 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
2894 if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
2895 ! 次元数の比較
2896 ! Compare sizes of dimensions
2897 !
2898 if ( .not. 6 == rank .and. .not. array_rank == rank ) then
2899 if ( .not. present_and_true(quiet) ) then
2900 call messagenotify('W', subname, &
2901 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
2902 & i = (/rank, 6/), c1 = trim(url) )
2903 end if
2904 stat = gt_erankmismatch
2905 cause_c = 'array'
2906 goto 999
2907 end if
2908 ! 入力ファイル中のデータの配列形状取得
2909 ! Get shape of data in an input file
2910 call inquire( var = var , dimord = 1, & ! (in)
2911 & allcount = allcount, err = inq_err ) ! (out)
2912 if ( .not. inq_err ) then
2913 data_shape(1) = allcount
2914 else
2915 data_shape(1) = 1
2916 end if
2917 call inquire( var = var , dimord = 2, & ! (in)
2918 & allcount = allcount, err = inq_err ) ! (out)
2919 if ( .not. inq_err ) then
2920 data_shape(2) = allcount
2921 else
2922 data_shape(2) = 1
2923 end if
2924 call inquire( var = var , dimord = 3, & ! (in)
2925 & allcount = allcount, err = inq_err ) ! (out)
2926 if ( .not. inq_err ) then
2927 data_shape(3) = allcount
2928 else
2929 data_shape(3) = 1
2930 end if
2931 call inquire( var = var , dimord = 4, & ! (in)
2932 & allcount = allcount, err = inq_err ) ! (out)
2933 if ( .not. inq_err ) then
2934 data_shape(4) = allcount
2935 else
2936 data_shape(4) = 1
2937 end if
2938 call inquire( var = var , dimord = 5, & ! (in)
2939 & allcount = allcount, err = inq_err ) ! (out)
2940 if ( .not. inq_err ) then
2941 data_shape(5) = allcount
2942 else
2943 data_shape(5) = 1
2944 end if
2945 call inquire( var = var , dimord = 6, & ! (in)
2946 & allcount = allcount, err = inq_err ) ! (out)
2947 if ( .not. inq_err ) then
2948 data_shape(6) = allcount
2949 else
2950 data_shape(6) = 1
2951 end if
2952 ! 引数の配列形状整形
2953 ! Arrange shape of an argument
2954 !
2955 array_shape_check = array_shape
2956 sd = 1
2957 do i = 1, 6 - 1
2958 if ( array_shape_check(sd) == 1 ) then
2959 array_shape_check(sd:6) = cshift( array_shape_check(sd:6), 1, 1 )
2960 else
2961 sd = sd + 1
2962 end if
2963 end do
2964 ! 配列形状の比較
2965 ! Compare shapes
2966 !
2967 if ( .not. all( array_shape_check == data_shape ) ) then
2968 if ( .not. present_and_true(quiet) ) then
2969 call messagenotify('W', subname, &
2970 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
2971 & c1 = trim( url ), &
2972 & c2 = trim( tochar( data_shape(1:rank) ) ), &
2973 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
2974 end if
2975 stat = gt_eargsizemismatch
2976 cause_c = 'array'
2977 goto 999
2978 end if
2979 !-------------------------------------
2980 ! データ取得
2981 ! Get data
2982 call inquire( var = var, & ! (in)
2983 & size = domain ) ! (out)
2984 if ( allocated( array_tmp ) ) deallocate( array_tmp )
2985 allocate( array_tmp(array_allsize) )
2986 call get( var, array_tmp, domain )
2987 array = reshape( array_tmp, array_shape )
2988 deallocate( array_tmp )
2989 call close( var )
2990 !-------------------------------------
2991 ! データファイル名と切り出し範囲の印字
2992 ! Print data filename and clipping range
2993 call actual_iorange_dump(url, & ! (in)
2994 & actual_url, returned_time, & ! (out) optional
2995 & time_name = tname, & ! (in) optional
2996 & err = err) ! (out) optional
2997 if ( .not. present_and_true(quiet) ) then
2998 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
2999 end if
3000999 continue
3001 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal6pointer()

subroutine historygetreal6pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 5948 of file historyget.f90.

5950 use gtdata_types, only: gt_variable
5951 use gtdata_generic, only: open, inquire, close, get
5952 use dc_string, only: tochar
5954 use dc_types, only: string, dp, sp
5955 use dc_message, only: messagenotify
5956 use dc_trace, only: dbgmessage
5957 ! MPI ライブラリ
5958 ! MPI library
5959 !
5960 use mpi
5961 implicit none
5962 character(*), intent(in):: file
5963 character(*), intent(in):: varname
5964 character(*), intent(in), optional:: range
5965 logical, intent(in), optional:: quiet
5966 logical, intent(in), optional:: flag_mpi_split
5967 real(DP), intent(out), optional:: returned_time ! データの時刻
5968 logical, intent(out), optional:: flag_time_exist
5969 logical, intent(out), optional:: err
5970 real(SP), pointer :: array(:,:,:,:,:,:) ! (out)
5971 type(GT_VARIABLE):: var
5972 character(STRING):: file_work, url, actual_url
5973 character(STRING):: tname
5974 character(*), parameter :: subname = "HistoryGetReal6Pointer"
5975 interface
5976 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
5977 character(*), intent(in):: file
5978 character(*), intent(in):: varname
5979 character(*), intent(out):: url
5980 character(*), intent(in), optional:: range
5981 logical, intent(out), optional:: flag_time_exist
5982 character(*), intent(out), optional:: time_name
5983 logical, intent(out), optional:: err
5984 end subroutine lookup_growable_url
5985 end interface
5986 interface
5987 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
5988 use dc_types, only: dp
5989 character(*), intent(in) :: url ! 変数 URL
5990 character(*), intent(out), optional :: actual_url
5991 ! 正確な入出力範囲指定
5992 real(DP), intent(out), optional:: returned_time ! データの時刻
5993 character(*), intent(in), optional:: time_name ! 時刻次元の名称
5994 logical, intent(out), optional :: err ! エラーのフラグ
5995 end subroutine actual_iorange_dump
5996 end interface
5997 interface
5998 function file_rename_mpi( file ) result(result)
5999 use dc_types, only: string
6000 character(*), intent(in):: file
6001 character(STRING):: result
6002 end function file_rename_mpi
6003 end interface
6004 continue
6005 file_work = file
6006 ! ファイル名の変更 (MPI 用)
6007 ! Change filename (for MPI)
6008 !
6009 if ( present_and_true( flag_mpi_split ) ) &
6010 & file_work = file_rename_mpi( file_work )
6011 ! 必要な情報を gtool 変数化
6012 !
6013 call lookup_growable_url(file_work, varname, url, range, &
6014 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6015 call dbgmessage('@ url =%c', c1=trim(url))
6016 ! いよいよデータ取得
6017 !
6018 call open(var, url, err)
6019 call get(var, array, err)
6020 call close(var, err)
6021 call actual_iorange_dump(url, & ! (in)
6022 & actual_url, returned_time, & ! (out) optional
6023 & time_name = tname, & ! (in) optional
6024 & err = err) ! (out) optional
6025 if ( .not. present_and_true(quiet) ) then
6026 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6027 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal6pointertimed()

subroutine historygetreal6pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12925 of file historyget.f90.

12928 use dc_string, only: tochar, split
12929 use dc_types, only: string, dp, sp
12930 use dc_trace, only: dbgmessage
12931 use dc_url, only: url_chop_iorange, gt_equal
12932 use dc_present, only: present_and_true
12933 ! MPI ライブラリ
12934 ! MPI library
12935 !
12936 use mpi
12937 implicit none
12938 character(*), intent(in):: file, varname
12939 real(DP), intent(in):: time
12940 logical, intent(in), optional:: quiet
12941 real(SP), pointer :: array(:,:,:,:,:,:)
12942 logical, intent(in), optional:: flag_mpi_split
12943 real(DP), intent(out), optional:: returned_time
12944 logical, intent(out), optional:: flag_time_exist
12945 logical, intent(out), optional:: err
12946 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12947 character(STRING), pointer:: carray (:)
12948 character(STRING):: tname
12949 interface
12950 subroutine historygetreal6pointer(&
12951 & file, varname, array, range, quiet, &
12952 & flag_mpi_split, returned_time, flag_time_exist, err)
12953 use dc_types, only: dp, sp
12954 character(*), intent(in):: file
12955 character(*), intent(in):: varname
12956 character(*), intent(in), optional:: range
12957 logical, intent(in), optional:: quiet
12958 logical, intent(in), optional:: flag_mpi_split
12959 real(DP), intent(out), optional:: returned_time
12960 logical, intent(out), optional:: flag_time_exist
12961 logical, intent(out), optional:: err
12962 real(SP), pointer :: array(:,:,:,:,:,:)
12963 end subroutine historygetreal6pointer
12964 end interface
12965 interface
12966 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12967 character(*), intent(in):: file
12968 character(*), intent(in):: varname
12969 character(*), intent(out):: url
12970 character(*), intent(in), optional:: range
12971 logical, intent(out), optional:: flag_time_exist
12972 character(*), intent(out), optional:: time_name
12973 logical, intent(out), optional:: err
12974 end subroutine lookup_growable_url
12975 end interface
12976 interface
12977 function file_rename_mpi( file ) result(result)
12978 use dc_types, only: string
12979 character(*), intent(in):: file
12980 character(STRING):: result
12981 end function file_rename_mpi
12982 end interface
12983 continue
12984 file_work = file
12985 if ( present_and_true( flag_mpi_split ) ) &
12986 & file_work = file_rename_mpi( file_work )
12987 call lookup_growable_url(file = file_work, varname = varname, &
12988 & url = url, &
12989 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12990 call url_chop_iorange( &
12991 & fullname = url, iorange = iorange, remainder = remainder )
12992 call split( str = iorange, carray = carray, sep = gt_equal )
12993 timevar_name = carray(1)
12994 deallocate( carray )
12995 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12996 call historygetreal6pointer( file = file, &
12997 & varname = varname, array = array, &
12998 & range = time_range, quiet = quiet, &
12999 & flag_mpi_split = flag_mpi_split, &
13000 & returned_time = returned_time, &
13001 & flag_time_exist = flag_time_exist, &
13002 & err = err )
subroutine historygetreal6pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal6pointertimei()

subroutine historygetreal6pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16717 of file historyget.f90.

16720 use dc_string, only: tochar, split
16721 use dc_types, only: string, dp, sp
16722 use dc_trace, only: dbgmessage
16723 use dc_url, only: url_chop_iorange, gt_equal
16724 use dc_present, only: present_and_true
16725 ! MPI ライブラリ
16726 ! MPI library
16727 !
16728 use mpi
16729 implicit none
16730 character(*), intent(in):: file, varname
16731 integer, intent(in):: time
16732 logical, intent(in), optional:: quiet
16733 real(SP), pointer :: array(:,:,:,:,:,:)
16734 logical, intent(in), optional:: flag_mpi_split
16735 real(DP), intent(out), optional:: returned_time
16736 logical, intent(out), optional:: flag_time_exist
16737 logical, intent(out), optional:: err
16738 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16739 character(STRING), pointer:: carray (:)
16740 character(STRING):: tname
16741 interface
16742 subroutine historygetreal6pointer(&
16743 & file, varname, array, range, quiet, &
16744 & flag_mpi_split, returned_time, flag_time_exist, err)
16745 use dc_types, only: dp, sp
16746 character(*), intent(in):: file
16747 character(*), intent(in):: varname
16748 character(*), intent(in), optional:: range
16749 logical, intent(in), optional:: quiet
16750 logical, intent(in), optional:: flag_mpi_split
16751 real(DP), intent(out), optional:: returned_time
16752 logical, intent(out), optional:: flag_time_exist
16753 logical, intent(out), optional:: err
16754 real(SP), pointer :: array(:,:,:,:,:,:)
16755 end subroutine historygetreal6pointer
16756 end interface
16757 interface
16758 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16759 character(*), intent(in):: file
16760 character(*), intent(in):: varname
16761 character(*), intent(out):: url
16762 character(*), intent(in), optional:: range
16763 logical, intent(out), optional:: flag_time_exist
16764 character(*), intent(out), optional:: time_name
16765 logical, intent(out), optional:: err
16766 end subroutine lookup_growable_url
16767 end interface
16768 interface
16769 function file_rename_mpi( file ) result(result)
16770 use dc_types, only: string
16771 character(*), intent(in):: file
16772 character(STRING):: result
16773 end function file_rename_mpi
16774 end interface
16775 continue
16776 file_work = file
16777 if ( present_and_true( flag_mpi_split ) ) &
16778 & file_work = file_rename_mpi( file_work )
16779 call lookup_growable_url(file = file_work, varname = varname, &
16780 & url = url, &
16781 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16782 call url_chop_iorange( &
16783 & fullname = url, iorange = iorange, remainder = remainder )
16784 call split( str = iorange, carray = carray, sep = gt_equal )
16785 timevar_name = carray(1)
16786 deallocate( carray )
16787 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16788 call historygetreal6pointer( file = file, &
16789 & varname = varname, array = array, &
16790 & range = time_range, quiet = quiet, &
16791 & flag_mpi_split = flag_mpi_split, &
16792 & returned_time = returned_time, &
16793 & flag_time_exist = flag_time_exist, &
16794 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal6pointertimer()

subroutine historygetreal6pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9133 of file historyget.f90.

9136 use dc_string, only: tochar, split
9137 use dc_types, only: string, dp, sp
9138 use dc_trace, only: dbgmessage
9139 use dc_url, only: url_chop_iorange, gt_equal
9140 use dc_present, only: present_and_true
9141 ! MPI ライブラリ
9142 ! MPI library
9143 !
9144 use mpi
9145 implicit none
9146 character(*), intent(in):: file, varname
9147 real(SP), intent(in):: time
9148 logical, intent(in), optional:: quiet
9149 real(SP), pointer :: array(:,:,:,:,:,:)
9150 logical, intent(in), optional:: flag_mpi_split
9151 real(DP), intent(out), optional:: returned_time
9152 logical, intent(out), optional:: flag_time_exist
9153 logical, intent(out), optional:: err
9154 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9155 character(STRING), pointer:: carray (:)
9156 character(STRING):: tname
9157 interface
9158 subroutine historygetreal6pointer(&
9159 & file, varname, array, range, quiet, &
9160 & flag_mpi_split, returned_time, flag_time_exist, err)
9161 use dc_types, only: dp, sp
9162 character(*), intent(in):: file
9163 character(*), intent(in):: varname
9164 character(*), intent(in), optional:: range
9165 logical, intent(in), optional:: quiet
9166 logical, intent(in), optional:: flag_mpi_split
9167 real(DP), intent(out), optional:: returned_time
9168 logical, intent(out), optional:: flag_time_exist
9169 logical, intent(out), optional:: err
9170 real(SP), pointer :: array(:,:,:,:,:,:)
9171 end subroutine historygetreal6pointer
9172 end interface
9173 interface
9174 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9175 character(*), intent(in):: file
9176 character(*), intent(in):: varname
9177 character(*), intent(out):: url
9178 character(*), intent(in), optional:: range
9179 logical, intent(out), optional:: flag_time_exist
9180 character(*), intent(out), optional:: time_name
9181 logical, intent(out), optional:: err
9182 end subroutine lookup_growable_url
9183 end interface
9184 interface
9185 function file_rename_mpi( file ) result(result)
9186 use dc_types, only: string
9187 character(*), intent(in):: file
9188 character(STRING):: result
9189 end function file_rename_mpi
9190 end interface
9191 continue
9192 file_work = file
9193 if ( present_and_true( flag_mpi_split ) ) &
9194 & file_work = file_rename_mpi( file_work )
9195 call lookup_growable_url(file = file_work, varname = varname, &
9196 & url = url, &
9197 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9198 call url_chop_iorange( &
9199 & fullname = url, iorange = iorange, remainder = remainder )
9200 call split( str = iorange, carray = carray, sep = gt_equal )
9201 timevar_name = carray(1)
9202 deallocate( carray )
9203 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9204 call historygetreal6pointer( file = file, &
9205 & varname = varname, array = array, &
9206 & range = time_range, quiet = quiet, &
9207 & flag_mpi_split = flag_mpi_split, &
9208 & returned_time = returned_time, &
9209 & flag_time_exist = flag_time_exist, &
9210 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal6pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal6timed()

subroutine historygetreal6timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12293 of file historyget.f90.

12296 use dc_string, only: tochar, split
12297 use dc_types, only: string, dp, sp
12298 use dc_trace, only: dbgmessage
12299 use dc_url, only: url_chop_iorange, gt_equal
12300 use dc_present, only: present_and_true
12301 ! MPI ライブラリ
12302 ! MPI library
12303 !
12304 use mpi
12305 implicit none
12306 character(*), intent(in):: file, varname
12307 real(DP), intent(in):: time
12308 logical, intent(in), optional:: quiet
12309 real(SP), intent(out) :: array(:,:,:,:,:,:)
12310 logical, intent(in), optional:: flag_mpi_split
12311 real(DP), intent(out), optional:: returned_time
12312 logical, intent(out), optional:: flag_time_exist
12313 logical, intent(out), optional:: err
12314 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12315 character(STRING), pointer:: carray (:)
12316 character(STRING):: tname
12317 interface
12318 subroutine historygetreal6(&
12319 & file, varname, array, range, quiet, &
12320 & flag_mpi_split, returned_time, flag_time_exist, err)
12321 use dc_types, only: dp, sp
12322 character(*), intent(in):: file
12323 character(*), intent(in):: varname
12324 character(*), intent(in), optional:: range
12325 logical, intent(in), optional:: quiet
12326 logical, intent(in), optional:: flag_mpi_split
12327 real(DP), intent(out), optional:: returned_time
12328 logical, intent(out), optional:: flag_time_exist
12329 logical, intent(out), optional:: err
12330 real(SP), intent(out) :: array(:,:,:,:,:,:)
12331 end subroutine historygetreal6
12332 end interface
12333 interface
12334 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12335 character(*), intent(in):: file
12336 character(*), intent(in):: varname
12337 character(*), intent(out):: url
12338 character(*), intent(in), optional:: range
12339 logical, intent(out), optional:: flag_time_exist
12340 character(*), intent(out), optional:: time_name
12341 logical, intent(out), optional:: err
12342 end subroutine lookup_growable_url
12343 end interface
12344 interface
12345 function file_rename_mpi( file ) result(result)
12346 use dc_types, only: string
12347 character(*), intent(in):: file
12348 character(STRING):: result
12349 end function file_rename_mpi
12350 end interface
12351 continue
12352 file_work = file
12353 if ( present_and_true( flag_mpi_split ) ) &
12354 & file_work = file_rename_mpi( file_work )
12355 call lookup_growable_url(file = file_work, varname = varname, &
12356 & url = url, &
12357 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12358 call url_chop_iorange( &
12359 & fullname = url, iorange = iorange, remainder = remainder )
12360 call split( str = iorange, carray = carray, sep = gt_equal )
12361 timevar_name = carray(1)
12362 deallocate( carray )
12363 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12364 call historygetreal6( file = file, &
12365 & varname = varname, array = array, &
12366 & range = time_range, quiet = quiet, &
12367 & flag_mpi_split = flag_mpi_split, &
12368 & returned_time = returned_time, &
12369 & flag_time_exist = flag_time_exist, &
12370 & err = err )
subroutine historygetreal6(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal6timei()

subroutine historygetreal6timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16085 of file historyget.f90.

16088 use dc_string, only: tochar, split
16089 use dc_types, only: string, dp, sp
16090 use dc_trace, only: dbgmessage
16091 use dc_url, only: url_chop_iorange, gt_equal
16092 use dc_present, only: present_and_true
16093 ! MPI ライブラリ
16094 ! MPI library
16095 !
16096 use mpi
16097 implicit none
16098 character(*), intent(in):: file, varname
16099 integer, intent(in):: time
16100 logical, intent(in), optional:: quiet
16101 real(SP), intent(out) :: array(:,:,:,:,:,:)
16102 logical, intent(in), optional:: flag_mpi_split
16103 real(DP), intent(out), optional:: returned_time
16104 logical, intent(out), optional:: flag_time_exist
16105 logical, intent(out), optional:: err
16106 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16107 character(STRING), pointer:: carray (:)
16108 character(STRING):: tname
16109 interface
16110 subroutine historygetreal6(&
16111 & file, varname, array, range, quiet, &
16112 & flag_mpi_split, returned_time, flag_time_exist, err)
16113 use dc_types, only: dp, sp
16114 character(*), intent(in):: file
16115 character(*), intent(in):: varname
16116 character(*), intent(in), optional:: range
16117 logical, intent(in), optional:: quiet
16118 logical, intent(in), optional:: flag_mpi_split
16119 real(DP), intent(out), optional:: returned_time
16120 logical, intent(out), optional:: flag_time_exist
16121 logical, intent(out), optional:: err
16122 real(SP), intent(out) :: array(:,:,:,:,:,:)
16123 end subroutine historygetreal6
16124 end interface
16125 interface
16126 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16127 character(*), intent(in):: file
16128 character(*), intent(in):: varname
16129 character(*), intent(out):: url
16130 character(*), intent(in), optional:: range
16131 logical, intent(out), optional:: flag_time_exist
16132 character(*), intent(out), optional:: time_name
16133 logical, intent(out), optional:: err
16134 end subroutine lookup_growable_url
16135 end interface
16136 interface
16137 function file_rename_mpi( file ) result(result)
16138 use dc_types, only: string
16139 character(*), intent(in):: file
16140 character(STRING):: result
16141 end function file_rename_mpi
16142 end interface
16143 continue
16144 file_work = file
16145 if ( present_and_true( flag_mpi_split ) ) &
16146 & file_work = file_rename_mpi( file_work )
16147 call lookup_growable_url(file = file_work, varname = varname, &
16148 & url = url, &
16149 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16150 call url_chop_iorange( &
16151 & fullname = url, iorange = iorange, remainder = remainder )
16152 call split( str = iorange, carray = carray, sep = gt_equal )
16153 timevar_name = carray(1)
16154 deallocate( carray )
16155 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16156 call historygetreal6( file = file, &
16157 & varname = varname, array = array, &
16158 & range = time_range, quiet = quiet, &
16159 & flag_mpi_split = flag_mpi_split, &
16160 & returned_time = returned_time, &
16161 & flag_time_exist = flag_time_exist, &
16162 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal6timer()

subroutine historygetreal6timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8501 of file historyget.f90.

8504 use dc_string, only: tochar, split
8505 use dc_types, only: string, dp, sp
8506 use dc_trace, only: dbgmessage
8507 use dc_url, only: url_chop_iorange, gt_equal
8508 use dc_present, only: present_and_true
8509 ! MPI ライブラリ
8510 ! MPI library
8511 !
8512 use mpi
8513 implicit none
8514 character(*), intent(in):: file, varname
8515 real(SP), intent(in):: time
8516 logical, intent(in), optional:: quiet
8517 real(SP), intent(out) :: array(:,:,:,:,:,:)
8518 logical, intent(in), optional:: flag_mpi_split
8519 real(DP), intent(out), optional:: returned_time
8520 logical, intent(out), optional:: flag_time_exist
8521 logical, intent(out), optional:: err
8522 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8523 character(STRING), pointer:: carray (:)
8524 character(STRING):: tname
8525 interface
8526 subroutine historygetreal6(&
8527 & file, varname, array, range, quiet, &
8528 & flag_mpi_split, returned_time, flag_time_exist, err)
8529 use dc_types, only: dp, sp
8530 character(*), intent(in):: file
8531 character(*), intent(in):: varname
8532 character(*), intent(in), optional:: range
8533 logical, intent(in), optional:: quiet
8534 logical, intent(in), optional:: flag_mpi_split
8535 real(DP), intent(out), optional:: returned_time
8536 logical, intent(out), optional:: flag_time_exist
8537 logical, intent(out), optional:: err
8538 real(SP), intent(out) :: array(:,:,:,:,:,:)
8539 end subroutine historygetreal6
8540 end interface
8541 interface
8542 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8543 character(*), intent(in):: file
8544 character(*), intent(in):: varname
8545 character(*), intent(out):: url
8546 character(*), intent(in), optional:: range
8547 logical, intent(out), optional:: flag_time_exist
8548 character(*), intent(out), optional:: time_name
8549 logical, intent(out), optional:: err
8550 end subroutine lookup_growable_url
8551 end interface
8552 interface
8553 function file_rename_mpi( file ) result(result)
8554 use dc_types, only: string
8555 character(*), intent(in):: file
8556 character(STRING):: result
8557 end function file_rename_mpi
8558 end interface
8559 continue
8560 file_work = file
8561 if ( present_and_true( flag_mpi_split ) ) &
8562 & file_work = file_rename_mpi( file_work )
8563 call lookup_growable_url(file = file_work, varname = varname, &
8564 & url = url, &
8565 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8566 call url_chop_iorange( &
8567 & fullname = url, iorange = iorange, remainder = remainder )
8568 call split( str = iorange, carray = carray, sep = gt_equal )
8569 timevar_name = carray(1)
8570 deallocate( carray )
8571 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8572 call historygetreal6( file = file, &
8573 & varname = varname, array = array, &
8574 & range = time_range, quiet = quiet, &
8575 & flag_mpi_split = flag_mpi_split, &
8576 & returned_time = returned_time, &
8577 & flag_time_exist = flag_time_exist, &
8578 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal6(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal7()

subroutine historygetreal7 ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), intent(out)  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 3003 of file historyget.f90.

3005 use gtdata_types, only: gt_variable
3006 use gtdata_generic, only: open, inquire, close, get
3007 use dc_string, only: tochar
3009 use dc_regex, only: match
3010 use dc_types, only: string, dp, sp
3011 use dc_message, only: messagenotify
3014 ! MPI ライブラリ
3015 ! MPI library
3016 use mpi
3017 implicit none
3018 character(*), intent(in):: file
3019 character(*), intent(in):: varname
3020 character(*), intent(in), optional:: range
3021 logical, intent(in), optional:: quiet
3022 logical, intent(in), optional:: flag_mpi_split
3023 real(DP), intent(out), optional:: returned_time ! データの時刻
3024 logical, intent(out), optional:: flag_time_exist
3025 logical, intent(out), optional:: err
3026 real(SP), intent(out) :: array(:,:,:,:,:,:,:)
3027 real(SP), allocatable :: array_tmp(:)
3028 integer:: array_allsize
3029 integer:: array_shape(7), data_shape(7), array_shape_check(7)
3030 integer:: allcount
3031 integer:: i, sd
3032 logical:: inq_err
3033 type(GT_VARIABLE):: var
3034 character(STRING):: file_work, url, actual_url
3035 integer:: rank, alldims, array_rank
3036 integer:: domain
3037 character(STRING):: tname
3038 integer:: stat
3039 character(STRING):: cause_c
3040 character(*), parameter :: subname = "HistoryGetReal7"
3041 interface
3042 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
3043 character(*), intent(in):: file
3044 character(*), intent(in):: varname
3045 character(*), intent(out):: url
3046 character(*), intent(in), optional:: range
3047 logical, intent(out), optional:: flag_time_exist
3048 character(*), intent(out), optional:: time_name
3049 logical, intent(out), optional:: err
3050 end subroutine lookup_growable_url
3051 end interface
3052 interface
3053 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
3054 use dc_types, only: dp
3055 character(*), intent(in) :: url ! 変数 URL
3056 character(*), intent(out), optional :: actual_url
3057 ! 正確な入出力範囲指定
3058 real(DP), intent(out), optional:: returned_time ! データの時刻
3059 character(*), intent(in), optional:: time_name ! 時刻次元の名称
3060 logical, intent(out), optional :: err ! エラーのフラグ
3061 end subroutine actual_iorange_dump
3062 end interface
3063 interface
3064 function file_rename_mpi( file ) result(result)
3065 use dc_types, only: string
3066 character(*), intent(in):: file
3067 character(STRING):: result
3068 end function file_rename_mpi
3069 end interface
3070 continue
3071 cause_c = ''
3072 stat = dc_noerr
3073 file_work = file
3074 array_shape = shape( array )
3075 array_allsize = size( array )
3076 ! ファイル名の変更 (MPI 用)
3077 ! Change filename (for MPI)
3078 !
3079 if ( present_and_true( flag_mpi_split ) ) &
3080 & file_work = file_rename_mpi( file_work )
3081 ! 最新時刻の URL 取得
3082 ! Get URL of latest time
3083 !
3084 call lookup_growable_url(file_work, varname, url, range, &
3085 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
3086 if ( present_and_true(err) ) then
3087 stat = gt_enoturl
3088 cause_c = url
3089 goto 999
3090 end if
3091 ! ファイルオープン
3092 ! File open
3093 call open( var, url, err = err )
3094 if ( present_and_true(err) ) then
3095 stat = gt_enoturl
3096 cause_c = url
3097 goto 999
3098 end if
3099 !-------------------------------------------------------------------
3100 ! 配列形状のチェック
3101 ! Check array shape
3102 !-------------------------------------------------------------------
3103 ! 入力ファイル中のデータの次元数
3104 ! Get size of dimesions in data of an input file
3105 !
3106 call inquire( var = var, & ! (in)
3107 & rank = rank, alldims = alldims ) ! (out)
3108 ! 引数の次元数のチェック (縮退されている場合には減らす)
3109 ! Check size of dimensions of an argument (If any dimension degenerated, size of dimensions is decreased)
3110 array_rank = 7
3111 if ( size( array, 1 ) == 1 ) array_rank = array_rank - 1
3112 if ( size( array, 2 ) == 1 ) array_rank = array_rank - 1
3113 if ( size( array, 3 ) == 1 ) array_rank = array_rank - 1
3114 if ( size( array, 4 ) == 1 ) array_rank = array_rank - 1
3115 if ( size( array, 5 ) == 1 ) array_rank = array_rank - 1
3116 if ( size( array, 6 ) == 1 ) array_rank = array_rank - 1
3117 if ( size( array, 7 ) == 1 ) array_rank = array_rank - 1
3118 ! 次元数の比較
3119 ! Compare sizes of dimensions
3120 !
3121 if ( .not. 7 == rank .and. .not. array_rank == rank ) then
3122 if ( .not. present_and_true(quiet) ) then
3123 call messagenotify('W', subname, &
3124 & 'Rank of data (%c) is "%d", rank of argument is "%d"', &
3125 & i = (/rank, 7/), c1 = trim(url) )
3126 end if
3127 stat = gt_erankmismatch
3128 cause_c = 'array'
3129 goto 999
3130 end if
3131 ! 入力ファイル中のデータの配列形状取得
3132 ! Get shape of data in an input file
3133 call inquire( var = var , dimord = 1, & ! (in)
3134 & allcount = allcount, err = inq_err ) ! (out)
3135 if ( .not. inq_err ) then
3136 data_shape(1) = allcount
3137 else
3138 data_shape(1) = 1
3139 end if
3140 call inquire( var = var , dimord = 2, & ! (in)
3141 & allcount = allcount, err = inq_err ) ! (out)
3142 if ( .not. inq_err ) then
3143 data_shape(2) = allcount
3144 else
3145 data_shape(2) = 1
3146 end if
3147 call inquire( var = var , dimord = 3, & ! (in)
3148 & allcount = allcount, err = inq_err ) ! (out)
3149 if ( .not. inq_err ) then
3150 data_shape(3) = allcount
3151 else
3152 data_shape(3) = 1
3153 end if
3154 call inquire( var = var , dimord = 4, & ! (in)
3155 & allcount = allcount, err = inq_err ) ! (out)
3156 if ( .not. inq_err ) then
3157 data_shape(4) = allcount
3158 else
3159 data_shape(4) = 1
3160 end if
3161 call inquire( var = var , dimord = 5, & ! (in)
3162 & allcount = allcount, err = inq_err ) ! (out)
3163 if ( .not. inq_err ) then
3164 data_shape(5) = allcount
3165 else
3166 data_shape(5) = 1
3167 end if
3168 call inquire( var = var , dimord = 6, & ! (in)
3169 & allcount = allcount, err = inq_err ) ! (out)
3170 if ( .not. inq_err ) then
3171 data_shape(6) = allcount
3172 else
3173 data_shape(6) = 1
3174 end if
3175 call inquire( var = var , dimord = 7, & ! (in)
3176 & allcount = allcount, err = inq_err ) ! (out)
3177 if ( .not. inq_err ) then
3178 data_shape(7) = allcount
3179 else
3180 data_shape(7) = 1
3181 end if
3182 ! 引数の配列形状整形
3183 ! Arrange shape of an argument
3184 !
3185 array_shape_check = array_shape
3186 sd = 1
3187 do i = 1, 7 - 1
3188 if ( array_shape_check(sd) == 1 ) then
3189 array_shape_check(sd:7) = cshift( array_shape_check(sd:7), 1, 1 )
3190 else
3191 sd = sd + 1
3192 end if
3193 end do
3194 ! 配列形状の比較
3195 ! Compare shapes
3196 !
3197 if ( .not. all( array_shape_check == data_shape ) ) then
3198 if ( .not. present_and_true(quiet) ) then
3199 call messagenotify('W', subname, &
3200 & 'Shape of data (%c) is (%c), shape of argument is (%c)', &
3201 & c1 = trim( url ), &
3202 & c2 = trim( tochar( data_shape(1:rank) ) ), &
3203 & c3 = trim( tochar( array_shape_check(1:rank) ) ) )
3204 end if
3205 stat = gt_eargsizemismatch
3206 cause_c = 'array'
3207 goto 999
3208 end if
3209 !-------------------------------------
3210 ! データ取得
3211 ! Get data
3212 call inquire( var = var, & ! (in)
3213 & size = domain ) ! (out)
3214 if ( allocated( array_tmp ) ) deallocate( array_tmp )
3215 allocate( array_tmp(array_allsize) )
3216 call get( var, array_tmp, domain )
3217 array = reshape( array_tmp, array_shape )
3218 deallocate( array_tmp )
3219 call close( var )
3220 !-------------------------------------
3221 ! データファイル名と切り出し範囲の印字
3222 ! Print data filename and clipping range
3223 call actual_iorange_dump(url, & ! (in)
3224 & actual_url, returned_time, & ! (out) optional
3225 & time_name = tname, & ! (in) optional
3226 & err = err) ! (out) optional
3227 if ( .not. present_and_true(quiet) ) then
3228 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url), rank_mpi = -1)
3229 end if
3230999 continue
3231 call storeerror(stat, subname, err, cause_c)

References actual_iorange_dump(), dc_error::dc_noerr, dc_types::dp, file_rename_mpi(), dc_error::gt_eargsizemismatch, dc_error::gt_enoturl, dc_error::gt_erankmismatch, lookup_growable_url(), dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_types::sp, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ historygetreal7pointer()

subroutine historygetreal7pointer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), pointer  array,
character(*), intent(in), optional  range,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 6029 of file historyget.f90.

6031 use gtdata_types, only: gt_variable
6032 use gtdata_generic, only: open, inquire, close, get
6033 use dc_string, only: tochar
6035 use dc_types, only: string, dp, sp
6036 use dc_message, only: messagenotify
6037 use dc_trace, only: dbgmessage
6038 ! MPI ライブラリ
6039 ! MPI library
6040 !
6041 use mpi
6042 implicit none
6043 character(*), intent(in):: file
6044 character(*), intent(in):: varname
6045 character(*), intent(in), optional:: range
6046 logical, intent(in), optional:: quiet
6047 logical, intent(in), optional:: flag_mpi_split
6048 real(DP), intent(out), optional:: returned_time ! データの時刻
6049 logical, intent(out), optional:: flag_time_exist
6050 logical, intent(out), optional:: err
6051 real(SP), pointer :: array(:,:,:,:,:,:,:) ! (out)
6052 type(GT_VARIABLE):: var
6053 character(STRING):: file_work, url, actual_url
6054 character(STRING):: tname
6055 character(*), parameter :: subname = "HistoryGetReal7Pointer"
6056 interface
6057 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
6058 character(*), intent(in):: file
6059 character(*), intent(in):: varname
6060 character(*), intent(out):: url
6061 character(*), intent(in), optional:: range
6062 logical, intent(out), optional:: flag_time_exist
6063 character(*), intent(out), optional:: time_name
6064 logical, intent(out), optional:: err
6065 end subroutine lookup_growable_url
6066 end interface
6067 interface
6068 subroutine actual_iorange_dump(url, actual_url, returned_time, time_name, err)
6069 use dc_types, only: dp
6070 character(*), intent(in) :: url ! 変数 URL
6071 character(*), intent(out), optional :: actual_url
6072 ! 正確な入出力範囲指定
6073 real(DP), intent(out), optional:: returned_time ! データの時刻
6074 character(*), intent(in), optional:: time_name ! 時刻次元の名称
6075 logical, intent(out), optional :: err ! エラーのフラグ
6076 end subroutine actual_iorange_dump
6077 end interface
6078 interface
6079 function file_rename_mpi( file ) result(result)
6080 use dc_types, only: string
6081 character(*), intent(in):: file
6082 character(STRING):: result
6083 end function file_rename_mpi
6084 end interface
6085 continue
6086 file_work = file
6087 ! ファイル名の変更 (MPI 用)
6088 ! Change filename (for MPI)
6089 !
6090 if ( present_and_true( flag_mpi_split ) ) &
6091 & file_work = file_rename_mpi( file_work )
6092 ! 必要な情報を gtool 変数化
6093 !
6094 call lookup_growable_url(file_work, varname, url, range, &
6095 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
6096 call dbgmessage('@ url =%c', c1=trim(url))
6097 ! いよいよデータ取得
6098 !
6099 call open(var, url, err)
6100 call get(var, array, err)
6101 call close(var, err)
6102 call actual_iorange_dump(url, & ! (in)
6103 & actual_url, returned_time, & ! (out) optional
6104 & time_name = tname, & ! (in) optional
6105 & err = err) ! (out) optional
6106 if ( .not. present_and_true(quiet) ) then
6107 call messagenotify('M', subname, 'Input %c', c1=trim(actual_url))
6108 end if

References actual_iorange_dump(), dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, and dc_types::string.

Here is the call graph for this function:

◆ historygetreal7pointertimed()

subroutine historygetreal7pointertimed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), pointer  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 13004 of file historyget.f90.

13007 use dc_string, only: tochar, split
13008 use dc_types, only: string, dp, sp
13009 use dc_trace, only: dbgmessage
13010 use dc_url, only: url_chop_iorange, gt_equal
13011 use dc_present, only: present_and_true
13012 ! MPI ライブラリ
13013 ! MPI library
13014 !
13015 use mpi
13016 implicit none
13017 character(*), intent(in):: file, varname
13018 real(DP), intent(in):: time
13019 logical, intent(in), optional:: quiet
13020 real(SP), pointer :: array(:,:,:,:,:,:,:)
13021 logical, intent(in), optional:: flag_mpi_split
13022 real(DP), intent(out), optional:: returned_time
13023 logical, intent(out), optional:: flag_time_exist
13024 logical, intent(out), optional:: err
13025 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
13026 character(STRING), pointer:: carray (:)
13027 character(STRING):: tname
13028 interface
13029 subroutine historygetreal7pointer(&
13030 & file, varname, array, range, quiet, &
13031 & flag_mpi_split, returned_time, flag_time_exist, err)
13032 use dc_types, only: dp, sp
13033 character(*), intent(in):: file
13034 character(*), intent(in):: varname
13035 character(*), intent(in), optional:: range
13036 logical, intent(in), optional:: quiet
13037 logical, intent(in), optional:: flag_mpi_split
13038 real(DP), intent(out), optional:: returned_time
13039 logical, intent(out), optional:: flag_time_exist
13040 logical, intent(out), optional:: err
13041 real(SP), pointer :: array(:,:,:,:,:,:,:)
13042 end subroutine historygetreal7pointer
13043 end interface
13044 interface
13045 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
13046 character(*), intent(in):: file
13047 character(*), intent(in):: varname
13048 character(*), intent(out):: url
13049 character(*), intent(in), optional:: range
13050 logical, intent(out), optional:: flag_time_exist
13051 character(*), intent(out), optional:: time_name
13052 logical, intent(out), optional:: err
13053 end subroutine lookup_growable_url
13054 end interface
13055 interface
13056 function file_rename_mpi( file ) result(result)
13057 use dc_types, only: string
13058 character(*), intent(in):: file
13059 character(STRING):: result
13060 end function file_rename_mpi
13061 end interface
13062 continue
13063 file_work = file
13064 if ( present_and_true( flag_mpi_split ) ) &
13065 & file_work = file_rename_mpi( file_work )
13066 call lookup_growable_url(file = file_work, varname = varname, &
13067 & url = url, &
13068 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
13069 call url_chop_iorange( &
13070 & fullname = url, iorange = iorange, remainder = remainder )
13071 call split( str = iorange, carray = carray, sep = gt_equal )
13072 timevar_name = carray(1)
13073 deallocate( carray )
13074 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
13075 call historygetreal7pointer( file = file, &
13076 & varname = varname, array = array, &
13077 & range = time_range, quiet = quiet, &
13078 & flag_mpi_split = flag_mpi_split, &
13079 & returned_time = returned_time, &
13080 & flag_time_exist = flag_time_exist, &
13081 & err = err )
subroutine historygetreal7pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal7pointertimei()

subroutine historygetreal7pointertimei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), pointer  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16796 of file historyget.f90.

16799 use dc_string, only: tochar, split
16800 use dc_types, only: string, dp, sp
16801 use dc_trace, only: dbgmessage
16802 use dc_url, only: url_chop_iorange, gt_equal
16803 use dc_present, only: present_and_true
16804 ! MPI ライブラリ
16805 ! MPI library
16806 !
16807 use mpi
16808 implicit none
16809 character(*), intent(in):: file, varname
16810 integer, intent(in):: time
16811 logical, intent(in), optional:: quiet
16812 real(SP), pointer :: array(:,:,:,:,:,:,:)
16813 logical, intent(in), optional:: flag_mpi_split
16814 real(DP), intent(out), optional:: returned_time
16815 logical, intent(out), optional:: flag_time_exist
16816 logical, intent(out), optional:: err
16817 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16818 character(STRING), pointer:: carray (:)
16819 character(STRING):: tname
16820 interface
16821 subroutine historygetreal7pointer(&
16822 & file, varname, array, range, quiet, &
16823 & flag_mpi_split, returned_time, flag_time_exist, err)
16824 use dc_types, only: dp, sp
16825 character(*), intent(in):: file
16826 character(*), intent(in):: varname
16827 character(*), intent(in), optional:: range
16828 logical, intent(in), optional:: quiet
16829 logical, intent(in), optional:: flag_mpi_split
16830 real(DP), intent(out), optional:: returned_time
16831 logical, intent(out), optional:: flag_time_exist
16832 logical, intent(out), optional:: err
16833 real(SP), pointer :: array(:,:,:,:,:,:,:)
16834 end subroutine historygetreal7pointer
16835 end interface
16836 interface
16837 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16838 character(*), intent(in):: file
16839 character(*), intent(in):: varname
16840 character(*), intent(out):: url
16841 character(*), intent(in), optional:: range
16842 logical, intent(out), optional:: flag_time_exist
16843 character(*), intent(out), optional:: time_name
16844 logical, intent(out), optional:: err
16845 end subroutine lookup_growable_url
16846 end interface
16847 interface
16848 function file_rename_mpi( file ) result(result)
16849 use dc_types, only: string
16850 character(*), intent(in):: file
16851 character(STRING):: result
16852 end function file_rename_mpi
16853 end interface
16854 continue
16855 file_work = file
16856 if ( present_and_true( flag_mpi_split ) ) &
16857 & file_work = file_rename_mpi( file_work )
16858 call lookup_growable_url(file = file_work, varname = varname, &
16859 & url = url, &
16860 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16861 call url_chop_iorange( &
16862 & fullname = url, iorange = iorange, remainder = remainder )
16863 call split( str = iorange, carray = carray, sep = gt_equal )
16864 timevar_name = carray(1)
16865 deallocate( carray )
16866 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16867 call historygetreal7pointer( file = file, &
16868 & varname = varname, array = array, &
16869 & range = time_range, quiet = quiet, &
16870 & flag_mpi_split = flag_mpi_split, &
16871 & returned_time = returned_time, &
16872 & flag_time_exist = flag_time_exist, &
16873 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal7pointertimer()

subroutine historygetreal7pointertimer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), pointer  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 9212 of file historyget.f90.

9215 use dc_string, only: tochar, split
9216 use dc_types, only: string, dp, sp
9217 use dc_trace, only: dbgmessage
9218 use dc_url, only: url_chop_iorange, gt_equal
9219 use dc_present, only: present_and_true
9220 ! MPI ライブラリ
9221 ! MPI library
9222 !
9223 use mpi
9224 implicit none
9225 character(*), intent(in):: file, varname
9226 real(SP), intent(in):: time
9227 logical, intent(in), optional:: quiet
9228 real(SP), pointer :: array(:,:,:,:,:,:,:)
9229 logical, intent(in), optional:: flag_mpi_split
9230 real(DP), intent(out), optional:: returned_time
9231 logical, intent(out), optional:: flag_time_exist
9232 logical, intent(out), optional:: err
9233 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
9234 character(STRING), pointer:: carray (:)
9235 character(STRING):: tname
9236 interface
9237 subroutine historygetreal7pointer(&
9238 & file, varname, array, range, quiet, &
9239 & flag_mpi_split, returned_time, flag_time_exist, err)
9240 use dc_types, only: dp, sp
9241 character(*), intent(in):: file
9242 character(*), intent(in):: varname
9243 character(*), intent(in), optional:: range
9244 logical, intent(in), optional:: quiet
9245 logical, intent(in), optional:: flag_mpi_split
9246 real(DP), intent(out), optional:: returned_time
9247 logical, intent(out), optional:: flag_time_exist
9248 logical, intent(out), optional:: err
9249 real(SP), pointer :: array(:,:,:,:,:,:,:)
9250 end subroutine historygetreal7pointer
9251 end interface
9252 interface
9253 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
9254 character(*), intent(in):: file
9255 character(*), intent(in):: varname
9256 character(*), intent(out):: url
9257 character(*), intent(in), optional:: range
9258 logical, intent(out), optional:: flag_time_exist
9259 character(*), intent(out), optional:: time_name
9260 logical, intent(out), optional:: err
9261 end subroutine lookup_growable_url
9262 end interface
9263 interface
9264 function file_rename_mpi( file ) result(result)
9265 use dc_types, only: string
9266 character(*), intent(in):: file
9267 character(STRING):: result
9268 end function file_rename_mpi
9269 end interface
9270 continue
9271 file_work = file
9272 if ( present_and_true( flag_mpi_split ) ) &
9273 & file_work = file_rename_mpi( file_work )
9274 call lookup_growable_url(file = file_work, varname = varname, &
9275 & url = url, &
9276 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
9277 call url_chop_iorange( &
9278 & fullname = url, iorange = iorange, remainder = remainder )
9279 call split( str = iorange, carray = carray, sep = gt_equal )
9280 timevar_name = carray(1)
9281 deallocate( carray )
9282 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
9283 call historygetreal7pointer( file = file, &
9284 & varname = varname, array = array, &
9285 & range = time_range, quiet = quiet, &
9286 & flag_mpi_split = flag_mpi_split, &
9287 & returned_time = returned_time, &
9288 & flag_time_exist = flag_time_exist, &
9289 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal7pointer(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal7timed()

subroutine historygetreal7timed ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), intent(out)  array,
real(dp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 12372 of file historyget.f90.

12375 use dc_string, only: tochar, split
12376 use dc_types, only: string, dp, sp
12377 use dc_trace, only: dbgmessage
12378 use dc_url, only: url_chop_iorange, gt_equal
12379 use dc_present, only: present_and_true
12380 ! MPI ライブラリ
12381 ! MPI library
12382 !
12383 use mpi
12384 implicit none
12385 character(*), intent(in):: file, varname
12386 real(DP), intent(in):: time
12387 logical, intent(in), optional:: quiet
12388 real(SP), intent(out) :: array(:,:,:,:,:,:,:)
12389 logical, intent(in), optional:: flag_mpi_split
12390 real(DP), intent(out), optional:: returned_time
12391 logical, intent(out), optional:: flag_time_exist
12392 logical, intent(out), optional:: err
12393 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
12394 character(STRING), pointer:: carray (:)
12395 character(STRING):: tname
12396 interface
12397 subroutine historygetreal7(&
12398 & file, varname, array, range, quiet, &
12399 & flag_mpi_split, returned_time, flag_time_exist, err)
12400 use dc_types, only: dp, sp
12401 character(*), intent(in):: file
12402 character(*), intent(in):: varname
12403 character(*), intent(in), optional:: range
12404 logical, intent(in), optional:: quiet
12405 logical, intent(in), optional:: flag_mpi_split
12406 real(DP), intent(out), optional:: returned_time
12407 logical, intent(out), optional:: flag_time_exist
12408 logical, intent(out), optional:: err
12409 real(SP), intent(out) :: array(:,:,:,:,:,:,:)
12410 end subroutine historygetreal7
12411 end interface
12412 interface
12413 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
12414 character(*), intent(in):: file
12415 character(*), intent(in):: varname
12416 character(*), intent(out):: url
12417 character(*), intent(in), optional:: range
12418 logical, intent(out), optional:: flag_time_exist
12419 character(*), intent(out), optional:: time_name
12420 logical, intent(out), optional:: err
12421 end subroutine lookup_growable_url
12422 end interface
12423 interface
12424 function file_rename_mpi( file ) result(result)
12425 use dc_types, only: string
12426 character(*), intent(in):: file
12427 character(STRING):: result
12428 end function file_rename_mpi
12429 end interface
12430 continue
12431 file_work = file
12432 if ( present_and_true( flag_mpi_split ) ) &
12433 & file_work = file_rename_mpi( file_work )
12434 call lookup_growable_url(file = file_work, varname = varname, &
12435 & url = url, &
12436 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
12437 call url_chop_iorange( &
12438 & fullname = url, iorange = iorange, remainder = remainder )
12439 call split( str = iorange, carray = carray, sep = gt_equal )
12440 timevar_name = carray(1)
12441 deallocate( carray )
12442 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
12443 call historygetreal7( file = file, &
12444 & varname = varname, array = array, &
12445 & range = time_range, quiet = quiet, &
12446 & flag_mpi_split = flag_mpi_split, &
12447 & returned_time = returned_time, &
12448 & flag_time_exist = flag_time_exist, &
12449 & err = err )
subroutine historygetreal7(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal7timei()

subroutine historygetreal7timei ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), intent(out)  array,
integer, intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 16164 of file historyget.f90.

16167 use dc_string, only: tochar, split
16168 use dc_types, only: string, dp, sp
16169 use dc_trace, only: dbgmessage
16170 use dc_url, only: url_chop_iorange, gt_equal
16171 use dc_present, only: present_and_true
16172 ! MPI ライブラリ
16173 ! MPI library
16174 !
16175 use mpi
16176 implicit none
16177 character(*), intent(in):: file, varname
16178 integer, intent(in):: time
16179 logical, intent(in), optional:: quiet
16180 real(SP), intent(out) :: array(:,:,:,:,:,:,:)
16181 logical, intent(in), optional:: flag_mpi_split
16182 real(DP), intent(out), optional:: returned_time
16183 logical, intent(out), optional:: flag_time_exist
16184 logical, intent(out), optional:: err
16185 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
16186 character(STRING), pointer:: carray (:)
16187 character(STRING):: tname
16188 interface
16189 subroutine historygetreal7(&
16190 & file, varname, array, range, quiet, &
16191 & flag_mpi_split, returned_time, flag_time_exist, err)
16192 use dc_types, only: dp, sp
16193 character(*), intent(in):: file
16194 character(*), intent(in):: varname
16195 character(*), intent(in), optional:: range
16196 logical, intent(in), optional:: quiet
16197 logical, intent(in), optional:: flag_mpi_split
16198 real(DP), intent(out), optional:: returned_time
16199 logical, intent(out), optional:: flag_time_exist
16200 logical, intent(out), optional:: err
16201 real(SP), intent(out) :: array(:,:,:,:,:,:,:)
16202 end subroutine historygetreal7
16203 end interface
16204 interface
16205 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
16206 character(*), intent(in):: file
16207 character(*), intent(in):: varname
16208 character(*), intent(out):: url
16209 character(*), intent(in), optional:: range
16210 logical, intent(out), optional:: flag_time_exist
16211 character(*), intent(out), optional:: time_name
16212 logical, intent(out), optional:: err
16213 end subroutine lookup_growable_url
16214 end interface
16215 interface
16216 function file_rename_mpi( file ) result(result)
16217 use dc_types, only: string
16218 character(*), intent(in):: file
16219 character(STRING):: result
16220 end function file_rename_mpi
16221 end interface
16222 continue
16223 file_work = file
16224 if ( present_and_true( flag_mpi_split ) ) &
16225 & file_work = file_rename_mpi( file_work )
16226 call lookup_growable_url(file = file_work, varname = varname, &
16227 & url = url, &
16228 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
16229 call url_chop_iorange( &
16230 & fullname = url, iorange = iorange, remainder = remainder )
16231 call split( str = iorange, carray = carray, sep = gt_equal )
16232 timevar_name = carray(1)
16233 deallocate( carray )
16234 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
16235 call historygetreal7( file = file, &
16236 & varname = varname, array = array, &
16237 & range = time_range, quiet = quiet, &
16238 & flag_mpi_split = flag_mpi_split, &
16239 & returned_time = returned_time, &
16240 & flag_time_exist = flag_time_exist, &
16241 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ historygetreal7timer()

subroutine historygetreal7timer ( character(*), intent(in)  file,
character(*), intent(in)  varname,
real(sp), dimension(:,:,:,:,:,:,:), intent(out)  array,
real(sp), intent(in)  time,
logical, intent(in), optional  quiet,
logical, intent(in), optional  flag_mpi_split,
real(dp), intent(out), optional  returned_time,
logical, intent(out), optional  flag_time_exist,
logical, intent(out), optional  err 
)

Definition at line 8580 of file historyget.f90.

8583 use dc_string, only: tochar, split
8584 use dc_types, only: string, dp, sp
8585 use dc_trace, only: dbgmessage
8586 use dc_url, only: url_chop_iorange, gt_equal
8587 use dc_present, only: present_and_true
8588 ! MPI ライブラリ
8589 ! MPI library
8590 !
8591 use mpi
8592 implicit none
8593 character(*), intent(in):: file, varname
8594 real(SP), intent(in):: time
8595 logical, intent(in), optional:: quiet
8596 real(SP), intent(out) :: array(:,:,:,:,:,:,:)
8597 logical, intent(in), optional:: flag_mpi_split
8598 real(DP), intent(out), optional:: returned_time
8599 logical, intent(out), optional:: flag_time_exist
8600 logical, intent(out), optional:: err
8601 character(STRING):: file_work, url, iorange, remainder, timevar_name, time_range
8602 character(STRING), pointer:: carray (:)
8603 character(STRING):: tname
8604 interface
8605 subroutine historygetreal7(&
8606 & file, varname, array, range, quiet, &
8607 & flag_mpi_split, returned_time, flag_time_exist, err)
8608 use dc_types, only: dp, sp
8609 character(*), intent(in):: file
8610 character(*), intent(in):: varname
8611 character(*), intent(in), optional:: range
8612 logical, intent(in), optional:: quiet
8613 logical, intent(in), optional:: flag_mpi_split
8614 real(DP), intent(out), optional:: returned_time
8615 logical, intent(out), optional:: flag_time_exist
8616 logical, intent(out), optional:: err
8617 real(SP), intent(out) :: array(:,:,:,:,:,:,:)
8618 end subroutine historygetreal7
8619 end interface
8620 interface
8621 subroutine lookup_growable_url(file, varname, url, range, flag_time_exist, time_name, err)
8622 character(*), intent(in):: file
8623 character(*), intent(in):: varname
8624 character(*), intent(out):: url
8625 character(*), intent(in), optional:: range
8626 logical, intent(out), optional:: flag_time_exist
8627 character(*), intent(out), optional:: time_name
8628 logical, intent(out), optional:: err
8629 end subroutine lookup_growable_url
8630 end interface
8631 interface
8632 function file_rename_mpi( file ) result(result)
8633 use dc_types, only: string
8634 character(*), intent(in):: file
8635 character(STRING):: result
8636 end function file_rename_mpi
8637 end interface
8638 continue
8639 file_work = file
8640 if ( present_and_true( flag_mpi_split ) ) &
8641 & file_work = file_rename_mpi( file_work )
8642 call lookup_growable_url(file = file_work, varname = varname, &
8643 & url = url, &
8644 & flag_time_exist = flag_time_exist, time_name = tname, err = err)
8645 call url_chop_iorange( &
8646 & fullname = url, iorange = iorange, remainder = remainder )
8647 call split( str = iorange, carray = carray, sep = gt_equal )
8648 timevar_name = carray(1)
8649 deallocate( carray )
8650 time_range = trim(timevar_name) // gt_equal // trim(tochar(time))
8651 call historygetreal7( file = file, &
8652 & varname = varname, array = array, &
8653 & range = time_range, quiet = quiet, &
8654 & flag_mpi_split = flag_mpi_split, &
8655 & returned_time = returned_time, &
8656 & flag_time_exist = flag_time_exist, &
8657 & err = err )

References dc_trace::dbgmessage(), dc_types::dp, file_rename_mpi(), dc_url::gt_equal, historygetreal7(), lookup_growable_url(), dc_present::present_and_true(), dc_types::sp, dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function:

◆ lookup_growable_url()

subroutine lookup_growable_url ( character(*), intent(in)  file,
character(*), intent(in)  varname,
character(*), intent(out)  url,
character(*), intent(in), optional  range,
logical, intent(out), optional  flag_time_exist,
character(*), intent(out), optional  time_name,
logical, intent(out), optional  err 
)

Definition at line 18139 of file historyget.f90.

18144 !
18145 ! file の変数 varname が依存する次元の内, 時間の次元
18146 ! (growable == .TRUE. のもの, つまり無制限次元) の変数名,
18147 ! およびその最後の値を取得し, gtool 変数化
18148 ! ("file@varname,time=10.5" みたいな) して返す.
18149 !
18150 ! * もしも varname が次元変数である場合は「time=」を付けずに返す.
18151 ! * range を与えた場合, 以下のチェックを行った後, それを gtool4
18152 ! 変数の iorange 部分に付加する.
18153 ! * range に空文字が与えられた場合, range が与えられない場合と
18154 ! 同じ動作をする.
18155 ! * range 内に時間次元が設定されていない場合は, 自動的に
18156 ! 時間次元に関する iorange ("time=0.5") が指定される.
18157 ! * 数値のみの文字列 (例: "20", "10.354") が与えられる場合,
18158 ! エラーを生じる.
18159 !
18160 ! *flag_time_exist* が与えられる場合には, 得られるデータに
18161 ! 時刻次元が含まれる場合には .true. を, 含まれない場合は
18162 ! .false. を返す.
18163 ! *time_name* が与えられる場合には, 得られるデータに
18164 ! 時刻次元が含まれる場合にはその時刻次元変数名を,
18165 ! 含まれない場合には空文字を返す.
18166 !
18167 use gtdata_types, only: gt_variable
18168 use gtdata_generic, only: open, close, inquire
18170 use dc_string, only: tochar
18171 use dc_error, only: storeerror, dc_noerr, &
18172 & nf90_einval, gt_enotvar, gt_ebadgt4commagraphy
18175 use dc_regex, only: match
18176 use dc_types, only: string
18177 use dc_trace, only: beginsub, endsub, dbgmessage
18178 character(*), intent(in) :: file ! ファイル名
18179 character(*), intent(in) :: varname ! 変数名
18180 character(*), intent(out) :: url ! gtool変数化した文字列
18181 character(*), intent(in), optional:: range ! 範囲限定や一点切り出し指定
18182 logical, intent(out), optional:: flag_time_exist ! 時刻次元の存在の有無
18183 character(*), intent(out), optional:: time_name ! 時刻次元の名称
18184 logical, intent(out), optional :: err ! エラーのフラグ
18185 !
18186 type(GT_VARIABLE) :: var
18187 type(GT_VARIABLE), allocatable :: dimvar(:)
18188 character(STRING) :: time_url, tname, time_iorange
18189 character(STRING) :: iorange, cause_c
18190 logical:: growable, nounlimited
18191 integer:: allcount, timecount, nd, i, stat
18192 integer:: regex_stat, regex_len
18193 character(*), parameter :: subname = "lookup_growable_url"
18194continue
18195 call beginsub(subname, '<file=%c varname=%c range=%c>', &
18196 & c1=trim(file), c2=trim(varname), &
18197 & c3=trim(present_select('', 'no-range', range)))
18198 stat = dc_noerr
18199 cause_c = ""
18200 url = ""
18201 ! 引数の正当性をチェック
18202 if (.not. present_and_not_empty(file)) then
18203 stat = nf90_einval
18204 cause_c = '"file" is not specified'
18205 goto 999
18206 elseif (.not. present_and_not_empty(varname)) then
18207 stat = nf90_einval
18208 cause_c = '"varname" is not specified'
18209 goto 999
18210 end if
18211 ! 時刻次元の変数名, およびその最終時刻の
18212 ! 探査のために file@varname を open (まだデータを取得しない)
18213 call open(var, urlmerge(file, varname), err = err)
18214 if ( present_and_true(err) ) then
18215 stat = gt_enotvar
18216 goto 999
18217 end if
18218 ! 次元の数を取得
18219 call inquire(var=var, alldims=nd)
18220 call dbgmessage('@ alldims = %d', i=(/nd/))
18221 if (allocated(dimvar)) then
18222 deallocate(dimvar)
18223 end if
18224 allocate(dimvar(nd))
18225 !
18226 ! 変数が無制限変数を持たない場合, もしくは変数自体が
18227 ! 無制限次元変数である場合には, それに関する iorange を
18228 ! 付けないで返すよう, フラグを立てる.
18229 ! それ以外は .false. にする.
18230 nounlimited = .true.
18231 !
18232 ! 各次元毎に情報を取得し, growable == .TRUE. のもの (つまりは時間)
18233 ! の変数名 (tname) を取得する.
18234 call dbgmessage('[%c: growable-dim-search]', c1=trim(subname))
18235 tname = ''
18236 do, i = 1, nd
18237 call open(var = dimvar(i), & ! (out)
18238 & source_var = var, dimord = i, & ! (in)
18239 & count_compact = .true., & ! (in)
18240 & err = err) ! (out) optional
18241 ! まずは変数入り gtool4 変数を time_url に取得
18242 call inquire(var = dimvar(i), & ! (in)
18243 & growable = growable, & ! (out)
18244 & allcount = allcount, url = time_url) ! (out)
18245 call dbgmessage(' [dim=d>: growable=<%y>: url=<%c>]', &
18246 & i = (/i/), l = (/growable/), c1 = trim(time_url))
18247 ! 変数部分だけ分離
18248 call urlsplit( fullname = time_url, & ! (in)
18249 & var = tname) ! (out)
18250 ! 無制限次元で, かつ開こうとする変数自体が無制限次元でない場合
18251 !
18252 if ( growable .and. trim(tname) /= trim(varname) ) then
18253 ! 総数 = 最後の数を timecount に
18254 !
18255 timecount = allcount
18256 nounlimited = .false.
18257 endif
18258 call close(dimvar(i))
18259 ! 時刻次元が見つかった場合にはループを抜ける
18260 !
18261 if ( .not. nounlimited ) then
18262 exit
18263 ! 時刻次元ではない場合, tname を空に
18264 !
18265 else
18266 tname = ''
18267 end if
18268 end do
18269 ! 探査を終了したので閉じる
18270 call close(var)
18271 if (stat /= dc_noerr) then
18272 goto 999
18273 end if
18274 ! 時刻次元名を返す
18275 !
18276 if ( present(time_name) ) time_name = tname
18277 ! 時刻部分の iorange を作成しておく.
18278 ! 格子点情報で取得されているので, 頭に "^" を付加する.
18279 if (nounlimited) then
18280 time_iorange = ''
18281 if ( present(flag_time_exist) ) flag_time_exist = .false.
18282!!$ if ( present(returned_time) ) returned_time = 0.
18283 else
18284 time_iorange = trim(tname) // gt_equal // &
18285 & gt_circumflex // adjustl(tochar(timecount))
18286 if ( present(flag_time_exist) ) flag_time_exist = .true.
18287!!$ if ( present(returned_time) ) then
18288!!$ returned_time =
18289!!$ end if
18290 end if
18291 ! iorange を指定する.
18292 ! 時刻に関しては, range が存在しない場合には
18293 ! 自動取得した最後の時刻を付加する.
18294 ! range が存在する場合, "=" が含まれなければ, gtool4 のコンマ記法
18295 ! として不適切としてエラーを生じる.
18296 ! "=" が含まれる場合, iorange としてそのまま iorange になる.
18297 ! ただし, その iorange に時刻次元が含まれない場合,
18298 ! やはり先ほど自動取得した値が付加される.
18299 ! 当然, 時刻次元が存在しない場合には付加しない.
18300 if (.not. present_and_not_empty(range)) then
18301 iorange = time_iorange
18302 else
18303 ! range がコンマ記法になっているか, "=" があるかどうかで調べる
18304 call match(gt_equal, range, regex_len, regex_stat)
18305 ! コンマ記法になってない場合は無制限次元の値と判定
18306 if (regex_stat < 0) then
18307 cause_c = range
18309 goto 999
18310!!$ iorange = trim(tname) // GT_EQUAL // adjustl(range)
18311 else
18312 ! コンマ記法になっている場合, まずその中に無制限次元が
18313 ! 存在しているか調べ, 存在してない場合のみ time_iorange を
18314 ! 付加する.
18315 if (trim(urlsearchiorange(range, tname)) /= "") then
18316 iorange = range
18317 else
18318 if (trim(time_iorange) /= "") then
18319 iorange = range // gt_comma // time_iorange
18320 else
18321 iorange = range
18322 end if
18323 end if
18324 end if
18325 endif
18326 call dbgmessage('@ iorange=%c', c1=trim(iorange))
18327 ! file, varname, iorange を gtool変数化
18328 ! (「file@varname,time=10.5」のように)
18329 url = urlmerge(file, varname, '', iorange)
18330999 continue
18331 call storeerror(stat, subname, err, cause_c)
18332 call endsub(subname, '<url=%c>', c1=trim(url))
integer, parameter, public gt_ebadgt4commagraphy
Definition dc_error.f90:526
integer, parameter, public gt_enotvar
Definition dc_error.f90:512
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:476
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:599
character, parameter, public gt_circumflex
Definition dc_url.f90:106

References dc_trace::beginsub(), dc_trace::dbgmessage(), dc_error::dc_noerr, dc_trace::endsub(), dc_url::gt_circumflex, dc_url::gt_comma, dc_error::gt_ebadgt4commagraphy, dc_error::gt_enotvar, dc_url::gt_equal, dc_regex::match(), dc_present::present_and_not_empty(), dc_present::present_and_true(), dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function: