|
◆ 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 1293 del file vol7d_class_compute.F90.
1294 if (deltat < deltato) then 1295 this%voldatir(indana, indtime, indlevel, indtimerange, inddativarr, indnetwork) = & 1296 this%voldatir(indana, iindtime, indlevel, indtimerange, inddativarr, indnetwork) 1310 END SUBROUTINE vol7d_fill_data 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 1323 lstart = datetime_miss 1324 lstop = datetime_miss 1326 CALL vol7d_alloc_vol(this) 1327 IF ( SIZE(this%time) == 0) RETURN 1328 CALL vol7d_smart_sort(this, lsort_time=.true.) 1330 IF ( PRESENT(start)) THEN 1331 IF ( c_e(start)) THEN 1334 lstart = this%time(1) 1337 lstart = this%time(1) 1339 IF ( PRESENT(stopp)) THEN 1340 IF ( c_e(stopp)) THEN 1343 lstop = this%time( SIZE(this%time)) 1346 lstop = this%time( SIZE(this%time)) 1349 END SUBROUTINE safe_start_stop 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 1363 character(len=1) :: type 1365 TYPE(vol7d_var) :: var 1366 LOGICAL, allocatable :: ltime(:),ltimerange(:),lana(:),lnetwork(:) 1367 logical, allocatable :: maschera(:) 1370 allocate(ltime( size(this%time))) 1371 allocate(ltimerange( size(this%timerange))) 1372 allocate(lana( size(this%ana))) 1373 allocate(lnetwork( size(this%network)))
|