libsim Versione 7.2.4
|
◆ 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 641 del file stat_proc_engine.F90. 646 do_otimerange1: DO j = 1, SIZE(otimerange)
647 do_otime1: DO i = 1, SIZE(otime)
648 CALL time_timerange_get_period_pop(otime(i), otimerange(j), step, &
649 time_definition, pstart2, pend2, reftime2)
650 IF (lforecast) THEN
651 IF (reftime1 /= reftime2) cycle do_otime1
652 ENDIF
653
654 IF (pstart1 >= pstart2 .AND. pend1 <= pend2 .AND. &
655 mod(pstart1-pstart2, pend1-pstart1) == timedelta_0) THEN ! useful
656 lmapper%it = k
657 lmapper%itr = l
658 lmapper%extra_info = steps/itimerange(l)%p2 ! dtratio, guaranteed to be integer
659 n = append(map_ttr(i,j), lmapper)
660 cycle do_itime1 ! can contribute only to a single interval
661 ENDIF
662 ENDDO do_otime1
663 ENDDO do_otimerange1
664 ENDDO do_itime1
665 ENDDO do_itimerange1
666
667ELSE
668
669 ALLOCATE(map_ttr(SIZE(otime),SIZE(otimerange)))
670 do_itimerange2: DO l = 1, SIZE(itimerange)
671 IF (.NOT.mask_timerange(l)) cycle do_itimerange2
672 do_itime2: DO k = 1, SIZE(itime)
673 CALL time_timerange_get_period(itime(k), itimerange(l), &
674 time_definition, pstart1, pend1, reftime1)
675 do_otimerange2: DO j = 1, SIZE(otimerange)
676 do_otime2: DO i = 1, SIZE(otime)
677 CALL time_timerange_get_period_pop(otime(i), otimerange(j), step, &
678 time_definition, pstart2, pend2, reftime2)
679 IF (lforecast) THEN
680 IF (reftime1 /= reftime2) cycle do_otime2
681 ENDIF
682
683 IF (climat_behavior .AND. pstart1 == pstart2) cycle do_otime2
684 IF (pstart1 >= pstart2 .AND. pend1 <= pend2) THEN ! useful
685 lmapper%it = k
686 lmapper%itr = l
687 IF (pstart1 == pstart2) THEN
|