gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
historyget.f90
Go to the documentation of this file.
1! -*- coding: utf-8; mode: f90 -*-
2!-------------------------------------------------------------------------------------
3! Copyright (c) 2000-2026 Gtool Development Group. All rights reserved.
4!-------------------------------------------------------------------------------------
5! ** Important**
6!
7! This file is generated from ../../../../../src/gtool/gtool_history/historyget.erb by ERB included Ruby 3.3.8.
8! Please do not edit this file directly. @see "../../../../../src/gtool/gtool_history/historyget.erb"
9!-------------------------------------------------------------------------------------
30 !
91subroutine historygetdouble0(file, varname, array, range, &
92 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
228end subroutine historygetdouble0
229subroutine historygetdouble1(file, varname, array, range, &
230 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
401end subroutine historygetdouble1
402subroutine historygetdouble2(file, varname, array, range, &
403 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
591end subroutine historygetdouble2
592subroutine historygetdouble3(file, varname, array, range, &
593 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
789end subroutine historygetdouble3
790subroutine historygetdouble4(file, varname, array, range, &
791 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
995end subroutine historygetdouble4
996subroutine historygetdouble5(file, varname, array, range, &
997 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
1209end subroutine historygetdouble5
1210subroutine historygetdouble6(file, varname, array, range, &
1211 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
1431end subroutine historygetdouble6
1432subroutine historygetdouble7(file, varname, array, range, &
1433 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
1661end subroutine historygetdouble7
1662subroutine historygetreal0(file, varname, array, range, &
1663 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
1799end subroutine historygetreal0
1800subroutine historygetreal1(file, varname, array, range, &
1801 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
1972end subroutine historygetreal1
1973subroutine historygetreal2(file, varname, array, range, &
1974 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
2162end subroutine historygetreal2
2163subroutine historygetreal3(file, varname, array, range, &
2164 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
2360end subroutine historygetreal3
2361subroutine historygetreal4(file, varname, array, range, &
2362 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
2566end subroutine historygetreal4
2567subroutine historygetreal5(file, varname, array, range, &
2568 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
2780end subroutine historygetreal5
2781subroutine historygetreal6(file, varname, array, range, &
2782 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
3002end subroutine historygetreal6
3003subroutine historygetreal7(file, varname, array, range, &
3004 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
3232end subroutine historygetreal7
3233subroutine historygetint0(file, varname, array, range, &
3234 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
3370end subroutine historygetint0
3371subroutine historygetint1(file, varname, array, range, &
3372 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
3543end subroutine historygetint1
3544subroutine historygetint2(file, varname, array, range, &
3545 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
3733end subroutine historygetint2
3734subroutine historygetint3(file, varname, array, range, &
3735 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
3931end subroutine historygetint3
3932subroutine historygetint4(file, varname, array, range, &
3933 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
4137end subroutine historygetint4
4138subroutine historygetint5(file, varname, array, range, &
4139 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
4351end subroutine historygetint5
4352subroutine historygetint6(file, varname, array, range, &
4353 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
4573end subroutine historygetint6
4574subroutine historygetint7(file, varname, array, range, &
4575 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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)
4803end subroutine historygetint7
4804subroutine historygetdouble0pointer(file, varname, array, range, &
4805 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
4889end subroutine historygetdouble0pointer
4890subroutine historygetdouble1pointer(file, varname, array, range, &
4891 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
4970end subroutine historygetdouble1pointer
4971subroutine historygetdouble2pointer(file, varname, array, range, &
4972 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5051end subroutine historygetdouble2pointer
5052subroutine historygetdouble3pointer(file, varname, array, range, &
5053 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5132end subroutine historygetdouble3pointer
5133subroutine historygetdouble4pointer(file, varname, array, range, &
5134 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5213end subroutine historygetdouble4pointer
5214subroutine historygetdouble5pointer(file, varname, array, range, &
5215 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5294end subroutine historygetdouble5pointer
5295subroutine historygetdouble6pointer(file, varname, array, range, &
5296 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5375end subroutine historygetdouble6pointer
5376subroutine historygetdouble7pointer(file, varname, array, range, &
5377 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5456end subroutine historygetdouble7pointer
5457subroutine historygetreal0pointer(file, varname, array, range, &
5458 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5542end subroutine historygetreal0pointer
5543subroutine historygetreal1pointer(file, varname, array, range, &
5544 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5623end subroutine historygetreal1pointer
5624subroutine historygetreal2pointer(file, varname, array, range, &
5625 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5704end subroutine historygetreal2pointer
5705subroutine historygetreal3pointer(file, varname, array, range, &
5706 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5785end subroutine historygetreal3pointer
5786subroutine historygetreal4pointer(file, varname, array, range, &
5787 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5866end subroutine historygetreal4pointer
5867subroutine historygetreal5pointer(file, varname, array, range, &
5868 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
5947end subroutine historygetreal5pointer
5948subroutine historygetreal6pointer(file, varname, array, range, &
5949 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6028end subroutine historygetreal6pointer
6029subroutine historygetreal7pointer(file, varname, array, range, &
6030 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6109end subroutine historygetreal7pointer
6110subroutine historygetint0pointer(file, varname, array, range, &
6111 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6195end subroutine historygetint0pointer
6196subroutine historygetint1pointer(file, varname, array, range, &
6197 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6276end subroutine historygetint1pointer
6277subroutine historygetint2pointer(file, varname, array, range, &
6278 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6357end subroutine historygetint2pointer
6358subroutine historygetint3pointer(file, varname, array, range, &
6359 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6438end subroutine historygetint3pointer
6439subroutine historygetint4pointer(file, varname, array, range, &
6440 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6519end subroutine historygetint4pointer
6520subroutine historygetint5pointer(file, varname, array, range, &
6521 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6600end subroutine historygetint5pointer
6601subroutine historygetint6pointer(file, varname, array, range, &
6602 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6681end subroutine historygetint6pointer
6682subroutine historygetint7pointer(file, varname, array, range, &
6683 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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
6762end subroutine historygetint7pointer
6764 & file, varname, array, time, &
6765 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
6841end subroutine historygetdouble0timer
6843 & file, varname, array, time, &
6844 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
6920end subroutine historygetdouble1timer
6922 & file, varname, array, time, &
6923 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
6999end subroutine historygetdouble2timer
7001 & file, varname, array, time, &
7002 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7078end subroutine historygetdouble3timer
7080 & file, varname, array, time, &
7081 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7157end subroutine historygetdouble4timer
7159 & file, varname, array, time, &
7160 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7236end subroutine historygetdouble5timer
7238 & file, varname, array, time, &
7239 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7315end subroutine historygetdouble6timer
7317 & file, varname, array, time, &
7318 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7394end subroutine historygetdouble7timer
7396 & file, varname, array, time, &
7397 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7473end subroutine historygetdouble0pointertimer
7475 & file, varname, array, time, &
7476 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7552end subroutine historygetdouble1pointertimer
7554 & file, varname, array, time, &
7555 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7631end subroutine historygetdouble2pointertimer
7633 & file, varname, array, time, &
7634 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7710end subroutine historygetdouble3pointertimer
7712 & file, varname, array, time, &
7713 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7789end subroutine historygetdouble4pointertimer
7791 & file, varname, array, time, &
7792 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7868end subroutine historygetdouble5pointertimer
7870 & file, varname, array, time, &
7871 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
7947end subroutine historygetdouble6pointertimer
7949 & file, varname, array, time, &
7950 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8026end subroutine historygetdouble7pointertimer
8028 & file, varname, array, time, &
8029 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8105end subroutine historygetreal0timer
8107 & file, varname, array, time, &
8108 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8184end subroutine historygetreal1timer
8186 & file, varname, array, time, &
8187 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8263end subroutine historygetreal2timer
8265 & file, varname, array, time, &
8266 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8342end subroutine historygetreal3timer
8344 & file, varname, array, time, &
8345 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8421end subroutine historygetreal4timer
8423 & file, varname, array, time, &
8424 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8500end subroutine historygetreal5timer
8502 & file, varname, array, time, &
8503 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8579end subroutine historygetreal6timer
8581 & file, varname, array, time, &
8582 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8658end subroutine historygetreal7timer
8660 & file, varname, array, time, &
8661 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8737end subroutine historygetreal0pointertimer
8739 & file, varname, array, time, &
8740 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8816end subroutine historygetreal1pointertimer
8818 & file, varname, array, time, &
8819 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8895end subroutine historygetreal2pointertimer
8897 & file, varname, array, time, &
8898 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
8974end subroutine historygetreal3pointertimer
8976 & file, varname, array, time, &
8977 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9053end subroutine historygetreal4pointertimer
9055 & file, varname, array, time, &
9056 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9132end subroutine historygetreal5pointertimer
9134 & file, varname, array, time, &
9135 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9211end subroutine historygetreal6pointertimer
9213 & file, varname, array, time, &
9214 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9290end subroutine historygetreal7pointertimer
9292 & file, varname, array, time, &
9293 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9369end subroutine historygetint0timer
9371 & file, varname, array, time, &
9372 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9448end subroutine historygetint1timer
9450 & file, varname, array, time, &
9451 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9527end subroutine historygetint2timer
9529 & file, varname, array, time, &
9530 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9606end subroutine historygetint3timer
9608 & file, varname, array, time, &
9609 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9685end subroutine historygetint4timer
9687 & file, varname, array, time, &
9688 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9764end subroutine historygetint5timer
9766 & file, varname, array, time, &
9767 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9843end subroutine historygetint6timer
9845 & file, varname, array, time, &
9846 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
9922end subroutine historygetint7timer
9924 & file, varname, array, time, &
9925 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10001end subroutine historygetint0pointertimer
10003 & file, varname, array, time, &
10004 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10080end subroutine historygetint1pointertimer
10082 & file, varname, array, time, &
10083 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10159end subroutine historygetint2pointertimer
10161 & file, varname, array, time, &
10162 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10238end subroutine historygetint3pointertimer
10240 & file, varname, array, time, &
10241 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10317end subroutine historygetint4pointertimer
10319 & file, varname, array, time, &
10320 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10396end subroutine historygetint5pointertimer
10398 & file, varname, array, time, &
10399 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10475end subroutine historygetint6pointertimer
10477 & file, varname, array, time, &
10478 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10554end subroutine historygetint7pointertimer
10556 & file, varname, array, time, &
10557 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10633end subroutine historygetdouble0timed
10635 & file, varname, array, time, &
10636 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10712end subroutine historygetdouble1timed
10714 & file, varname, array, time, &
10715 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10791end subroutine historygetdouble2timed
10793 & file, varname, array, time, &
10794 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10870end subroutine historygetdouble3timed
10872 & file, varname, array, time, &
10873 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
10949end subroutine historygetdouble4timed
10951 & file, varname, array, time, &
10952 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11028end subroutine historygetdouble5timed
11030 & file, varname, array, time, &
11031 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11107end subroutine historygetdouble6timed
11109 & file, varname, array, time, &
11110 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11186end subroutine historygetdouble7timed
11188 & file, varname, array, time, &
11189 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11265end subroutine historygetdouble0pointertimed
11267 & file, varname, array, time, &
11268 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11344end subroutine historygetdouble1pointertimed
11346 & file, varname, array, time, &
11347 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11423end subroutine historygetdouble2pointertimed
11425 & file, varname, array, time, &
11426 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11502end subroutine historygetdouble3pointertimed
11504 & file, varname, array, time, &
11505 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11581end subroutine historygetdouble4pointertimed
11583 & file, varname, array, time, &
11584 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11660end subroutine historygetdouble5pointertimed
11662 & file, varname, array, time, &
11663 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11739end subroutine historygetdouble6pointertimed
11741 & file, varname, array, time, &
11742 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11818end subroutine historygetdouble7pointertimed
11820 & file, varname, array, time, &
11821 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11897end subroutine historygetreal0timed
11899 & file, varname, array, time, &
11900 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
11976end subroutine historygetreal1timed
11978 & file, varname, array, time, &
11979 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12055end subroutine historygetreal2timed
12057 & file, varname, array, time, &
12058 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12134end subroutine historygetreal3timed
12136 & file, varname, array, time, &
12137 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12213end subroutine historygetreal4timed
12215 & file, varname, array, time, &
12216 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12292end subroutine historygetreal5timed
12294 & file, varname, array, time, &
12295 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12371end subroutine historygetreal6timed
12373 & file, varname, array, time, &
12374 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12450end subroutine historygetreal7timed
12452 & file, varname, array, time, &
12453 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12529end subroutine historygetreal0pointertimed
12531 & file, varname, array, time, &
12532 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12608end subroutine historygetreal1pointertimed
12610 & file, varname, array, time, &
12611 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12687end subroutine historygetreal2pointertimed
12689 & file, varname, array, time, &
12690 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12766end subroutine historygetreal3pointertimed
12768 & file, varname, array, time, &
12769 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12845end subroutine historygetreal4pointertimed
12847 & file, varname, array, time, &
12848 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
12924end subroutine historygetreal5pointertimed
12926 & file, varname, array, time, &
12927 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13003end subroutine historygetreal6pointertimed
13005 & file, varname, array, time, &
13006 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13082end subroutine historygetreal7pointertimed
13084 & file, varname, array, time, &
13085 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13161end subroutine historygetint0timed
13163 & file, varname, array, time, &
13164 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13240end subroutine historygetint1timed
13242 & file, varname, array, time, &
13243 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13319end subroutine historygetint2timed
13321 & file, varname, array, time, &
13322 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13398end subroutine historygetint3timed
13400 & file, varname, array, time, &
13401 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13477end subroutine historygetint4timed
13479 & file, varname, array, time, &
13480 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13556end subroutine historygetint5timed
13558 & file, varname, array, time, &
13559 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13635end subroutine historygetint6timed
13637 & file, varname, array, time, &
13638 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13714end subroutine historygetint7timed
13716 & file, varname, array, time, &
13717 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13793end subroutine historygetint0pointertimed
13795 & file, varname, array, time, &
13796 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13872end subroutine historygetint1pointertimed
13874 & file, varname, array, time, &
13875 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
13951end subroutine historygetint2pointertimed
13953 & file, varname, array, time, &
13954 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14030end subroutine historygetint3pointertimed
14032 & file, varname, array, time, &
14033 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14109end subroutine historygetint4pointertimed
14111 & file, varname, array, time, &
14112 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14188end subroutine historygetint5pointertimed
14190 & file, varname, array, time, &
14191 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14267end subroutine historygetint6pointertimed
14269 & file, varname, array, time, &
14270 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14346end subroutine historygetint7pointertimed
14348 & file, varname, array, time, &
14349 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14425end subroutine historygetdouble0timei
14427 & file, varname, array, time, &
14428 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14504end subroutine historygetdouble1timei
14506 & file, varname, array, time, &
14507 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14583end subroutine historygetdouble2timei
14585 & file, varname, array, time, &
14586 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14662end subroutine historygetdouble3timei
14664 & file, varname, array, time, &
14665 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14741end subroutine historygetdouble4timei
14743 & file, varname, array, time, &
14744 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14820end subroutine historygetdouble5timei
14822 & file, varname, array, time, &
14823 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14899end subroutine historygetdouble6timei
14901 & file, varname, array, time, &
14902 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
14978end subroutine historygetdouble7timei
14980 & file, varname, array, time, &
14981 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15057end subroutine historygetdouble0pointertimei
15059 & file, varname, array, time, &
15060 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15136end subroutine historygetdouble1pointertimei
15138 & file, varname, array, time, &
15139 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15215end subroutine historygetdouble2pointertimei
15217 & file, varname, array, time, &
15218 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15294end subroutine historygetdouble3pointertimei
15296 & file, varname, array, time, &
15297 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15373end subroutine historygetdouble4pointertimei
15375 & file, varname, array, time, &
15376 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15452end subroutine historygetdouble5pointertimei
15454 & file, varname, array, time, &
15455 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15531end subroutine historygetdouble6pointertimei
15533 & file, varname, array, time, &
15534 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15610end subroutine historygetdouble7pointertimei
15612 & file, varname, array, time, &
15613 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15689end subroutine historygetreal0timei
15691 & file, varname, array, time, &
15692 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15768end subroutine historygetreal1timei
15770 & file, varname, array, time, &
15771 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15847end subroutine historygetreal2timei
15849 & file, varname, array, time, &
15850 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
15926end subroutine historygetreal3timei
15928 & file, varname, array, time, &
15929 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16005end subroutine historygetreal4timei
16007 & file, varname, array, time, &
16008 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16084end subroutine historygetreal5timei
16086 & file, varname, array, time, &
16087 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16163end subroutine historygetreal6timei
16165 & file, varname, array, time, &
16166 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16242end subroutine historygetreal7timei
16244 & file, varname, array, time, &
16245 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16321end subroutine historygetreal0pointertimei
16323 & file, varname, array, time, &
16324 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16400end subroutine historygetreal1pointertimei
16402 & file, varname, array, time, &
16403 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16479end subroutine historygetreal2pointertimei
16481 & file, varname, array, time, &
16482 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16558end subroutine historygetreal3pointertimei
16560 & file, varname, array, time, &
16561 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16637end subroutine historygetreal4pointertimei
16639 & file, varname, array, time, &
16640 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16716end subroutine historygetreal5pointertimei
16718 & file, varname, array, time, &
16719 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16795end subroutine historygetreal6pointertimei
16797 & file, varname, array, time, &
16798 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16874end subroutine historygetreal7pointertimei
16876 & file, varname, array, time, &
16877 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
16953end subroutine historygetint0timei
16955 & file, varname, array, time, &
16956 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17032end subroutine historygetint1timei
17034 & file, varname, array, time, &
17035 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17111end subroutine historygetint2timei
17113 & file, varname, array, time, &
17114 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17190end subroutine historygetint3timei
17192 & file, varname, array, time, &
17193 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17269end subroutine historygetint4timei
17271 & file, varname, array, time, &
17272 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17348end subroutine historygetint5timei
17350 & file, varname, array, time, &
17351 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17427end subroutine historygetint6timei
17429 & file, varname, array, time, &
17430 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17506end subroutine historygetint7timei
17508 & file, varname, array, time, &
17509 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17585end subroutine historygetint0pointertimei
17587 & file, varname, array, time, &
17588 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17664end subroutine historygetint1pointertimei
17666 & file, varname, array, time, &
17667 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17743end subroutine historygetint2pointertimei
17745 & file, varname, array, time, &
17746 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17822end subroutine historygetint3pointertimei
17824 & file, varname, array, time, &
17825 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17901end subroutine historygetint4pointertimei
17903 & file, varname, array, time, &
17904 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
17980end subroutine historygetint5pointertimei
17982 & file, varname, array, time, &
17983 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
18059end subroutine historygetint6pointertimei
18061 & file, varname, array, time, &
18062 & quiet, flag_mpi_split, returned_time, flag_time_exist, err)
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 )
18138end subroutine historygetint7pointertimei
18140 & file, varname, & ! (in)
18141 & url, & ! (out)
18142 & range, & ! (in) optional
18143 & flag_time_exist, time_name, err) ! (out) optional
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))
18333end subroutine lookup_growable_url
18334subroutine actual_iorange_dump( url, & ! (in)
18335 & actual_url, returned_time, & ! (out) optional
18336 & time_name, & ! (in) optional
18337 & err ) ! (out) optional
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)
18428end subroutine actual_iorange_dump
18429function file_rename_mpi( file ) result(result)
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
18468end function file_rename_mpi
subroutine historygetint1timed(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 historygetdouble2timer(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 historygetreal2pointertimer(file, varname, array, time, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble1(file, varname, array, range, 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 historygetreal1timei(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 historygetdouble2pointertimed(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 historygetint5pointertimed(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 historygetreal3timer(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 historygetint1pointertimei(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 historygetint4timei(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 historygetdouble2timed(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 historygetdouble5timed(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 historygetdouble6timei(file, varname, array, time, 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 historygetreal0timer(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 historygetreal3pointertimer(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 historygetreal5pointer(file, varname, array, range, 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 historygetint3timer(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 historygetreal2timed(file, varname, array, time, 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 historygetreal4timer(file, varname, array, time, 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 historygetint2pointertimei(file, varname, array, time, 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 historygetreal0pointertimei(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 historygetint5timer(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 historygetint0pointer(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 historygetreal4pointertimed(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 historygetreal1pointertimer(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 historygetint0timei(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 historygetreal6timer(file, varname, array, time, 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 historygetint3(file, varname, array, range, 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 historygetreal0pointer(file, varname, array, range, 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 historygetdouble5timer(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 historygetint4pointer(file, varname, array, range, 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 historygetint5pointertimei(file, varname, array, time, 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 actual_iorange_dump(url, actual_url, returned_time, time_name, err)
subroutine historygetint6timei(file, varname, array, time, 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 historygetint5timei(file, varname, array, time, 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 historygetreal7timed(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 historygetreal2pointertimei(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 historygetint3pointer(file, varname, array, range, 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 historygetdouble3(file, varname, array, range, 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 historygetreal3timei(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 historygetreal3pointertimed(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 historygetdouble4pointertimer(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 historygetdouble1pointer(file, varname, array, range, 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 historygetreal1pointertimed(file, varname, array, time, 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 historygetreal7pointertimei(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 historygetint3timei(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 historygetdouble7pointertimed(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 historygetdouble2pointertimer(file, varname, array, time, 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 historygetreal7timei(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 historygetint1timer(file, varname, array, time, 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 historygetreal6pointer(file, varname, array, range, 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 historygetreal7timer(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 historygetint3pointertimer(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 historygetint0timer(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 historygetreal5timed(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 historygetint2pointertimer(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 historygetint0pointertimei(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 historygetint1pointer(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 historygetdouble3pointertimer(file, varname, array, time, 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 historygetint6timed(file, varname, array, time, 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 historygetdouble0timer(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 historygetint1timei(file, varname, array, time, 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 historygetreal2pointertimed(file, varname, array, time, 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 historygetreal5timer(file, varname, array, time, 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 historygetdouble6pointertimer(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 historygetint4timed(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 historygetdouble5pointertimer(file, varname, array, time, 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 historygetreal7pointertimed(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 historygetint4pointertimer(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 historygetint4pointertimei(file, varname, array, time, 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 historygetint2pointer(file, varname, array, range, 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 historygetint6timer(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 historygetint1pointertimed(file, varname, array, time, 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 historygetdouble4timer(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 historygetint7pointertimer(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)
character(string) function file_rename_mpi(file)
subroutine historygetint3pointertimei(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 historygetdouble4pointer(file, varname, array, range, 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 historygetdouble2timei(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 historygetint7(file, varname, array, range, 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 historygetreal7pointer(file, varname, array, range, 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 historygetdouble0pointer(file, varname, array, range, 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 historygetdouble4pointertimed(file, varname, array, time, 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 historygetdouble2pointertimei(file, varname, array, time, 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 historygetint0timed(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 historygetdouble4(file, varname, array, range, 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 historygetdouble3timed(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 historygetreal4timed(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 historygetreal0pointertimer(file, varname, array, time, 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 historygetint6pointertimer(file, varname, array, time, 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 historygetint6pointertimei(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 historygetint1(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 historygetdouble2pointer(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
subroutine historygetdouble0(file, varname, array, range, quiet, flag_mpi_split, returned_time, flag_time_exist, err)
netCDF データを入力します. gtool4 netCDF 規約に基づくデータを想定 していますが, 大抵の netCDF データの入力は可能であると期待されます.
subroutine historygetdouble0timei(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 historygetreal2timer(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 historygetreal5timei(file, varname, array, time, 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 historygetreal6pointertimed(file, varname, array, time, 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 historygetint2timed(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 historygetint2pointertimed(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)
エラー処理用モジュール
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
エラー等を保持
Definition dc_error.f90:468
integer, parameter, public gt_erankmismatch
Definition dc_error.f90:524
integer, parameter, public gt_ebadgt4commagraphy
Definition dc_error.f90:526
integer, parameter, public gt_eargsizemismatch
Definition dc_error.f90:515
integer, parameter, public gt_enotvar
Definition dc_error.f90:512
integer, parameter, public gt_enoturl
Definition dc_error.f90:525
メッセージの出力
省略可能な制御パラメータの判定
logical function, public present_and_not_empty(arg)
logical function, public present_and_true(arg)
シンプルな正規表現関数 'match' を提供します.
Definition dc_regex.f90:62
subroutine, public match(pattern, text, start, length)
Definition dc_regex.f90:469
文字型変数の操作
Definition dc_string.f90:83
character(string) function, public joinchar(carray, expr)
デバッグ時の追跡用モジュール
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:680
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
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public sp
単精度実数型変数
Definition dc_types.f90:82
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition dc_types.f90:128
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:92
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137
変数 URL の文字列解析
Definition dc_url.f90:61
character, parameter, public gt_comma
Definition dc_url.f90:102
subroutine, public url_chop_iorange(fullname, iorange, remainder)
Definition dc_url.f90:301
character, parameter, public gt_equal
Definition dc_url.f90:104
character, parameter, public gt_colon
Definition dc_url.f90:100
character, parameter, public gt_circumflex
Definition dc_url.f90:106