|
◆ 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] | cyclicdt | cyclic date and time |
Definizione alla linea 1474 del file vol7d_class_compute.F90.
1477 do iindtime=indtime-1,1,-1 1479 if (c_e(this%voldatir (indana, iindtime, indlevel, indtimerange, inddativarr, indnetwork ))) then 1480 if (iindtime < indtime) then 1481 deltat=this%time(indtime)-this%time(iindtime) 1482 else if (iindtime > indtime) then 1483 deltat=this%time(iindtime)-this%time(indtime) 1488 if (deltat >= ltolerance) exit 1490 if (deltat < deltato) then 1491 this%voldatir(indana, indtime, indlevel, indtimerange, inddativarr, indnetwork) = & 1492 this%voldatir(indana, iindtime, indlevel, indtimerange, inddativarr, indnetwork) 1506 END SUBROUTINE vol7d_fill_data 1512 SUBROUTINE safe_start_stop(this, lstart, lstop, start, stopp) 1513 TYPE(vol7d), INTENT(inout) :: this 1514 TYPE(datetime), INTENT(out) :: lstart 1515 TYPE(datetime), INTENT(out) :: lstop 1516 TYPE(datetime), INTENT(in), OPTIONAL :: start 1517 TYPE(datetime), INTENT(in), OPTIONAL :: stopp 1519 lstart = datetime_miss 1520 lstop = datetime_miss 1522 CALL vol7d_alloc_vol(this) 1523 IF ( SIZE(this%time) == 0) RETURN 1524 CALL vol7d_smart_sort(this, lsort_time=.true.) 1526 IF ( PRESENT(start)) THEN 1527 IF (c_e(start)) THEN 1530 lstart = this%time(1) 1533 lstart = this%time(1) 1535 IF ( PRESENT(stopp)) THEN 1536 IF (c_e(stopp)) THEN 1539 lstop = this%time( SIZE(this%time)) 1542 lstop = this%time( SIZE(this%time)) 1545 END SUBROUTINE safe_start_stop 1554 SUBROUTINE vol7d_normalize_vcoord(this,that,ana,time,timerange,network) 1555 TYPE(vol7d), INTENT(INOUT) :: this 1556 TYPE(vol7d), INTENT(OUT) :: that 1557 integer, intent(in) :: time,ana,timerange,network 1559 character(len=1) :: type
|