libsim  Versione 7.2.6

◆ arrayof_ttr_mapper_remove()

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

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 651 del file stat_proc_engine.F90.

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 
667 ELSE
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
688  lmapper%extra_info = 1 ! start of interval
689  ELSE IF (pend1 == pend2) THEN
690  lmapper%extra_info = 2 ! end of interval
691  ELSE
692  lmapper%extra_info = imiss
693  ENDIF
694  lmapper%time = pstart1 ! = pend1, order by time?
695  n = insert_sorted(map_ttr(i,j), lmapper, .true., .true.)
696 ! no CYCLE, a single input can contribute to multiple output intervals
697  ENDIF

Generated with Doxygen.