libsim  Versione6.3.0

◆ vol7d_fill_time()

subroutine vol7d_class_compute::vol7d_fill_time ( type(vol7d), intent(inout)  this,
type(vol7d), intent(inout)  that,
type(timedelta), intent(in)  step,
type(datetime), intent(in), optional  start,
type(datetime), intent(in), optional  stopp,
type(cyclicdatetime), intent(in), optional  cyclicdt 
)

Riempimento dei buchi temporali in un volume.

Questo metodo crea, a partire da un volume originale, un nuovo volume dati in cui la dimensione tempo contiene tutti gli istanti tra start e stopp (o tra il primo e l'ultimo livello temporale) ad intervalli step. Gli eventuali livelli mancanti vengono aggiunti riempiendo le corrispondenti posizioni dei volumi dati con valori mancanti. I livelli temporali che non sono ad intervalli step interi a partire dall'inizio, oppure quelli che giacciono fuori dall'intervallo start:stop non vengono toccati e quindi rimangono immutati nel volume finale (si veda anche la descrizione di vol7d_filter_time). Il volume originale non viene modificato e quindi dovrà essere distrutto da parte del programma chiamante se il suo contenuto non è più richiesto. Attenzione, se necessario la dimensione tempo (vettore thistime del volume this ) viene riordinata, come effetto collaterale della chiamata.

Parametri
[in]cyclicdtcyclic date and time

Definizione alla linea 1293 del file vol7d_class_compute.F90.

1293 
1294  if (deltat < deltato) then
1295  this%voldatir(indana, indtime, indlevel, indtimerange, inddativarr, indnetwork) = &
1296  this%voldatir(indana, iindtime, indlevel, indtimerange, inddativarr, indnetwork)
1297  deltato=deltat
1298  end if
1299  end if
1300  end do
1301 
1302  end if
1303  end do
1304  end do
1305  end do
1306  end do
1307  end do
1308 end do
1309 
1310 END SUBROUTINE vol7d_fill_data
1311 
1312 
1313 ! private utility routine for checking interval and start-stop times
1314 ! in input missing start-stop values are treated as not present
1315 ! in output missing start-stop values mean "do nothing"
1316 SUBROUTINE safe_start_stop(this, lstart, lstop, start, stopp)
1317 TYPE(vol7d),INTENT(inout) :: this
1318 TYPE(datetime),INTENT(out) :: lstart
1319 TYPE(datetime),INTENT(out) :: lstop
1320 TYPE(datetime),INTENT(in),OPTIONAL :: start
1321 TYPE(datetime),INTENT(in),OPTIONAL :: stopp
1322 
1323 lstart = datetime_miss
1324 lstop = datetime_miss
1325 ! initial safety operation
1326 CALL vol7d_alloc_vol(this)
1327 IF (SIZE(this%time) == 0) RETURN ! avoid segmentation fault in case of empty volume
1328 CALL vol7d_smart_sort(this, lsort_time=.true.)
1329 
1330 IF (PRESENT(start)) THEN
1331  IF (c_e(start)) THEN
1332  lstart = start
1333  ELSE
1334  lstart = this%time(1)
1335  ENDIF
1336 ELSE
1337  lstart = this%time(1)
1338 ENDIF
1339 IF (PRESENT(stopp)) THEN
1340  IF (c_e(stopp)) THEN
1341  lstop = stopp
1342  ELSE
1343  lstop = this%time(SIZE(this%time))
1344  ENDIF
1345 ELSE
1346  lstop = this%time(SIZE(this%time))
1347 ENDIF
1348 
1349 END SUBROUTINE safe_start_stop
1350 
1351 
1358 SUBROUTINE vol7d_normalize_vcoord(this,that,ana,time,timerange,network)
1359 TYPE(vol7d),INTENT(INOUT) :: this
1360 TYPE(vol7d),INTENT(OUT) :: that
1361 integer,intent(in) :: time,ana,timerange,network
1362 
1363 character(len=1) :: type
1364 integer :: ind
1365 TYPE(vol7d_var) :: var
1366 LOGICAL,allocatable :: ltime(:),ltimerange(:),lana(:),lnetwork(:)
1367 logical,allocatable :: maschera(:)
1368 
1369 
1370 allocate(ltime(size(this%time)))
1371 allocate(ltimerange(size(this%timerange)))
1372 allocate(lana(size(this%ana)))
1373 allocate(lnetwork(size(this%network)))
1374 
1375 ltime=.false.
1376 ltimerange=.false.
1377 lana=.false.
1378 lnetwork=.false.
1379 

Generated with Doxygen.