libsim  Versione8.0.0

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

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 
693 ELSE
694 
695  ALLOCATE(map_ttr(SIZE(otime),SIZE(otimerange)))
696  do_itimerange2: DO l = 1, SIZE(itimerange)
697  IF (.NOT.mask_timerange(l)) cycle do_itimerange2
698  do_itime2: DO k = 1, SIZE(itime)
699  CALL time_timerange_get_period(itime(k), itimerange(l), &
700  time_definition, pstart1, pend1, reftime1)
701  do_otimerange2: DO j = 1, SIZE(otimerange)
702  do_otime2: DO i = 1, SIZE(otime)
703  CALL time_timerange_get_period_pop(otime(i), otimerange(j), step, &

Generated with Doxygen.