libsim Versione 7.2.4

◆ arrayof_ttr_mapper_remove()

subroutine, private arrayof_ttr_mapper_remove ( type(arrayof_ttr_mapper) this,
integer, intent(in), optional nelem,
integer, intent(in), optional pos )
private

Method for removing elements of the array at a desired position.

If necessary, the array is reallocated to reduce space.

Parametri
thisarray object in which an element has to be removed
[in]nelemnumber of elements to remove, if not provided, a single element is removed
[in]posposition of the element to be removed, if it is out of range, it is clipped, if it is not provided, objects are removed at the end

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

Generated with Doxygen.