447 use dc_date, only:
operator(==),
operator(>),
operator(<), &
451 real(DP),
intent(in):: time
453 integer,
intent(out):: stime_index
456 integer:: stat,
i, startnum, endnum
457 character(STRING):: cause_c
458 character(*),
parameter:: subname =
"HstVarsOutputCheck" 468 do i = saved_tstep, checked_tstepnum
469 if ( saved_time(
i) == time )
then 474 do i = 1, saved_tstep - 1
475 if ( saved_time(
i) == time )
then 483 end do timestepsearch
487 if ( saved_tstep /= 0 .and. checked_tstep_varnum == numvars )
then 491 stime_index = saved_tstep
492 call dbgmessage(
'saved_tstep=<%d> is already checked.', &
493 &
i =(/ saved_tstep /) )
500 if ( saved_tstep /= 0 )
then 501 startnum = checked_tstep_varnum + 1
504 stime_index = saved_tstep
509 if ( save_tstepnum < 2 )
then 511 saved_time(checked_tstepnum) = time
513 saved_tstep = checked_tstepnum
514 stime_index = saved_tstep
516 elseif ( .not. checked_tstepnum < save_tstepnum )
then 517 create_timing_vars(:,1:checked_tstepnum-1) = create_timing_vars(:,2:checked_tstepnum)
518 close_timing_vars(:,1:checked_tstepnum-1) = close_timing_vars(:,2:checked_tstepnum)
519 renew_timing_vars(:,1:checked_tstepnum-1) = renew_timing_vars(:,2:checked_tstepnum)
520 output_timing_vars(:,1:checked_tstepnum-1) = output_timing_vars(:,2:checked_tstepnum)
521 output_timing_avr_vars(:,1:checked_tstepnum-1) = output_timing_avr_vars(:,2:checked_tstepnum)
523 saved_time(1:checked_tstepnum-1) = saved_time(2:checked_tstepnum)
524 saved_time(checked_tstepnum) = time
526 saved_tstep = checked_tstepnum
527 stime_index = saved_tstep
530 checked_tstepnum = checked_tstepnum + 1
531 saved_time(checked_tstepnum) = time
533 saved_tstep = checked_tstepnum
534 stime_index = saved_tstep
538 call dbgmessage(
'numvar=<%d:%d> in saved_tstep=<%d> will be checked from now.', &
539 &
i =(/ startnum, endnum, saved_tstep /) )
550 create_timing_vars(startnum:endnum, checked_tstepnum:checked_tstepnum) = .false.
551 close_timing_vars(startnum:endnum, checked_tstepnum:checked_tstepnum) = .false.
552 renew_timing_vars(startnum:endnum, checked_tstepnum:checked_tstepnum) = .false.
553 output_timing_vars(startnum:endnum, checked_tstepnum:checked_tstepnum) = .false.
554 output_timing_avr_vars(startnum:endnum, checked_tstepnum:checked_tstepnum) = .false.
556 do i = startnum, endnum
558 if ( .not. output_valid_vars(
i) ) cycle
560 if ( origin_time_vars(
i) > time ) cycle
562 if ( origin_time_vars(
i) <= time &
563 & .and. ( terminus_time_vars(
i) < zero_time &
564 & .or. terminus_time_vars(
i) >= time ) &
565 & .and. .not. histaddvar_vars(
i) )
then 567 create_timing_vars(
i,checked_tstepnum) = .true.
569 if ( newfile_inttime_vars(
i) > zero_time )
then 570 newfile_createtime_vars(
i) = time
573 output_timing_vars(
i,checked_tstepnum) = .true.
574 output_timing_avr_vars(
i,checked_tstepnum) = tavr_vars(
i)
578 if ( terminus_time_vars(
i) > zero_time .and. terminus_time_vars(
i) < time )
then 579 close_timing_vars(
i,checked_tstepnum) = .true.
580 output_timing_vars(
i,checked_tstepnum) = .false.
581 output_timing_avr_vars(
i,checked_tstepnum) = .false.
591 if ( newfile_inttime_vars(
i) > zero_time )
then 592 if ( time - newfile_createtime_vars(
i) >= newfile_inttime_vars(
i) )
then 593 renew_timing_vars(
i,checked_tstepnum) = .true.
595 output_timing_vars(
i,checked_tstepnum) = .true.
596 output_timing_avr_vars(
i,checked_tstepnum) = tavr_vars(
i)
602 if ( time - prev_outtime_vars(
i) >= interval_time_vars(
i) )
then 603 output_timing_vars(
i,checked_tstepnum) = .true.
604 output_timing_avr_vars(
i,checked_tstepnum) = tavr_vars(
i)
608 output_timing_vars(
i,checked_tstepnum) = .false.
609 output_timing_avr_vars(
i,checked_tstepnum) = tavr_vars(
i)
613 checked_tstep_varnum = numvars
616 call storeerror(stat, subname, cause_c = cause_c)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_noerr
subroutine historyclose(history, quiet, err)
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)