|
libsim Versione 8.0.0
|
◆ arrayof_ttr_mapper_remove()
Method for removing elements of the array at a desired position. If necessary, the array is reallocated to reduce space.
Definizione alla linea 647 del file stat_proc_engine.F90. 652 ENDDO
653 CALL packarray(a_dtratio)
654 dtratio => a_dtratio%array
655 CALL sort(dtratio)
656! delete local object keeping the contents
657 CALL delete(a_dtratio, nodealloc=.true.)
658
659#ifdef DEBUG
660 CALL l4f_log(l4f_debug, &
661 'recompute_stat_proc_agg, found '//t2c(size(dtratio))// &
662 ' possible aggregation ratios, from '// &
663 t2c(dtratio(1))//' to '//t2c(dtratio(SIZE(dtratio))))
664#endif
665
666 ALLOCATE(map_ttr(SIZE(otime),SIZE(otimerange)))
667 do_itimerange1: DO l = 1, SIZE(itimerange)
668 IF (.NOT.mask_timerange(l)) cycle do_itimerange1
669 do_itime1: DO k = 1, SIZE(itime)
670 CALL time_timerange_get_period(itime(k), itimerange(l), &
671 time_definition, pstart1, pend1, reftime1)
672 do_otimerange1: DO j = 1, SIZE(otimerange)
673 do_otime1: DO i = 1, SIZE(otime)
674 CALL time_timerange_get_period_pop(otime(i), otimerange(j), step, &
675 time_definition, pstart2, pend2, reftime2)
676 IF (lforecast) THEN
677 IF (reftime1 /= reftime2) cycle do_otime1
678 ENDIF
679
680 IF (pstart1 >= pstart2 .AND. pend1 <= pend2 .AND. &
681 mod(pstart1-pstart2, pend1-pstart1) == timedelta_0) THEN ! useful
682 lmapper%it = k
683 lmapper%itr = l
684 lmapper%extra_info = steps/itimerange(l)%p2 ! dtratio, guaranteed to be integer
685 n = append(map_ttr(i,j), lmapper)
686 cycle do_itime1 ! can contribute only to a single interval
687 ENDIF
688 ENDDO do_otime1
689 ENDDO do_otimerange1
690 ENDDO do_itime1
691 ENDDO do_itimerange1
692
693ELSE
|