|
◆ vol7d_copy()
subroutine vol7d_copy |
( |
type(vol7d), intent(in) | this, |
|
|
type(vol7d), intent(inout) | that, |
|
|
logical, intent(in), optional | sort, |
|
|
logical, intent(in), optional | unique, |
|
|
logical, intent(in), optional | miss, |
|
|
logical, intent(in), optional | lsort_time, |
|
|
logical, intent(in), optional | lsort_timerange, |
|
|
logical, intent(in), optional | lsort_level, |
|
|
logical, dimension(:), intent(in), optional | ltime, |
|
|
logical, dimension(:), intent(in), optional | ltimerange, |
|
|
logical, dimension(:), intent(in), optional | llevel, |
|
|
logical, dimension(:), intent(in), optional | lana, |
|
|
logical, dimension(:), intent(in), optional | lnetwork, |
|
|
logical, dimension(:), intent(in), optional | lanavarr, |
|
|
logical, dimension(:), intent(in), optional | lanavard, |
|
|
logical, dimension(:), intent(in), optional | lanavari, |
|
|
logical, dimension(:), intent(in), optional | lanavarb, |
|
|
logical, dimension(:), intent(in), optional | lanavarc, |
|
|
logical, dimension(:), intent(in), optional | lanaattrr, |
|
|
logical, dimension(:), intent(in), optional | lanaattrd, |
|
|
logical, dimension(:), intent(in), optional | lanaattri, |
|
|
logical, dimension(:), intent(in), optional | lanaattrb, |
|
|
logical, dimension(:), intent(in), optional | lanaattrc, |
|
|
logical, dimension(:), intent(in), optional | lanavarattrr, |
|
|
logical, dimension(:), intent(in), optional | lanavarattrd, |
|
|
logical, dimension(:), intent(in), optional | lanavarattri, |
|
|
logical, dimension(:), intent(in), optional | lanavarattrb, |
|
|
logical, dimension(:), intent(in), optional | lanavarattrc, |
|
|
logical, dimension(:), intent(in), optional | ldativarr, |
|
|
logical, dimension(:), intent(in), optional | ldativard, |
|
|
logical, dimension(:), intent(in), optional | ldativari, |
|
|
logical, dimension(:), intent(in), optional | ldativarb, |
|
|
logical, dimension(:), intent(in), optional | ldativarc, |
|
|
logical, dimension(:), intent(in), optional | ldatiattrr, |
|
|
logical, dimension(:), intent(in), optional | ldatiattrd, |
|
|
logical, dimension(:), intent(in), optional | ldatiattri, |
|
|
logical, dimension(:), intent(in), optional | ldatiattrb, |
|
|
logical, dimension(:), intent(in), optional | ldatiattrc, |
|
|
logical, dimension(:), intent(in), optional | ldativarattrr, |
|
|
logical, dimension(:), intent(in), optional | ldativarattrd, |
|
|
logical, dimension(:), intent(in), optional | ldativarattri, |
|
|
logical, dimension(:), intent(in), optional | ldativarattrb, |
|
|
logical, dimension(:), intent(in), optional | ldativarattrc ) |
Metodo per creare una copia completa e indipendente di un oggetto vol7d.
Questo metodo crea un duplicato di tutti i membri di un oggetto vol7d, con la possibilità di rielaborarlo durante la copia. Se l'oggetto da copiare è vuoto non perde tempo inutile. Attenzione, il codice:
TYPE(vol7d) :: vol1, vol2
...
vol2 = vol1
Costruttore per la classe vol7d.
Classe per la gestione di un volume completo di dati osservati.
fa una cosa diversa rispetto a:
TYPE(vol7d) :: vol1, vol2
...
CALL vol7d_copy(vol1, vol2)
nel primo caso, infatti, l'operatore di assegnazione copia solo i componenti statici di vol1 nei corrispondenti elementi di vol2, mentre i componenti che sono allocati dinamicamente (cioè quelli che in ::vol7d hanno l'attributo POINTER , in pratica quasi tutti) non vengono duplicati, ma per essi vol2 conterrà un puntatore al corrispondente elemento a cui già punta vol1, e quindi eventuali cambiamenti al contenuto di uno dei due oggetti influenzerà il contenuto dell'altro; nel secondo caso, invece, vol1 e vol2 sono, dopo la vol7d_copy, 2 istanze completamente indipendenti, ma uguali tra loro per contenuto, della classe vol7d, e quindi hanno vita indipendente. - Parametri
-
[in] | this | oggetto origine |
[in,out] | that | oggetto destinazione |
[in] | sort | if present and .TRUE., sort all the sortable dimensions |
[in] | unique | se fornito e uguale a .TRUE., gli eventuali elementi duplicati nei descrittori dell'oggetto iniziale verranno collassati in un unico elemento (con eventuale perdita dei dati relativi agli elementi duplicati) |
[in] | miss | se fornito e uguale a .TRUE., gli eventuali elementi dei descrittori uguali al corrispondente valore mancante verranno eliminati dall'oggetto riformato |
[in] | lsort_time | if present and .TRUE., sort only time dimension (alternative to sort ) |
[in] | lsort_timerange | if present and .TRUE., sort only timerange dimension (alternative to sort ) |
[in] | lsort_level | if present and .TRUE., sort only level dimension (alternative to sort ) |
[in] | ltime | se fornito, deve essere un vettore logico della stessa lunghezza di thistime indicante quali elementi della dimensione time mantenere (valori .TRUE.) e quali scartare (valori .FALSE.) nel volume copiato; in alternativa può essere un vettore di lunghezza 1, in tal caso, se .FALSE. , equivale a scartare tutti gli elementi (utile principalmente per le variabili); è compatibile col parametro miss |
[in] | ltimerange | come il precedente per la dimensione timerange |
[in] | llevel | come il precedente per la dimensione level |
[in] | lana | come il precedente per la dimensione ana |
[in] | lnetwork | come il precedente per la dimensione network |
[in] | lanavarr | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavard | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavari | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavarb | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavarc | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanaattrr | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanaattrd | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanaattri | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanaattrb | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanaattrc | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavarattrr | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavarattrd | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavarattri | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavarattrb | come il precedente per tutte le possibili dimensioni variabile |
[in] | lanavarattrc | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarr | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativard | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativari | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarb | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarc | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldatiattrr | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldatiattrd | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldatiattri | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldatiattrb | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldatiattrc | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarattrr | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarattrd | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarattri | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarattrb | come il precedente per tutte le possibili dimensioni variabile |
[in] | ldativarattrc | come il precedente per tutte le possibili dimensioni variabile |
Definizione alla linea 1902 del file vol7d_class.F90.
1911
1919SUBROUTINE vol7d_smart_sort(this, lsort_time, lsort_timerange, lsort_level)
1920TYPE(vol7d),INTENT(INOUT) :: this
1921LOGICAL,OPTIONAL,INTENT(in) :: lsort_time
1922LOGICAL,OPTIONAL,INTENT(in) :: lsort_timerange
1923LOGICAL,OPTIONAL,INTENT(in) :: lsort_level
1924
1925INTEGER :: i
1926LOGICAL :: to_be_sorted
1927
1928to_be_sorted = .false.
1929CALL vol7d_alloc_vol(this)
1930
1931IF (optio_log(lsort_time)) THEN
1932 DO i = 2, SIZE(this%time)
1933 IF (this%time(i) < this%time(i-1)) THEN
1934 to_be_sorted = .true.
1935 EXIT
1936 ENDIF
1937 ENDDO
1938ENDIF
1939IF (optio_log(lsort_timerange)) THEN
1940 DO i = 2, SIZE(this%timerange)
1941 IF (this%timerange(i) < this%timerange(i-1)) THEN
1942 to_be_sorted = .true.
1943 EXIT
1944 ENDIF
1945 ENDDO
1946ENDIF
1947IF (optio_log(lsort_level)) THEN
1948 DO i = 2, SIZE(this%level)
1949 IF (this%level(i) < this%level(i-1)) THEN
1950 to_be_sorted = .true.
1951 EXIT
1952 ENDIF
1953 ENDDO
1954ENDIF
1955
1956IF (to_be_sorted) CALL vol7d_reform(this, &
1957 lsort_time=lsort_time, lsort_timerange=lsort_timerange, lsort_level=lsort_level )
1958
1959END SUBROUTINE vol7d_smart_sort
1960
1968SUBROUTINE vol7d_filter(this, avl, vl, nl, s_d, e_d)
1969TYPE(vol7d),INTENT(inout) :: this
1970CHARACTER(len=*),INTENT(in),OPTIONAL :: avl(:)
1971CHARACTER(len=*),INTENT(in),OPTIONAL :: vl(:)
1972TYPE(vol7d_network),OPTIONAL :: nl(:)
1973TYPE(datetime),INTENT(in),OPTIONAL :: s_d
1974TYPE(datetime),INTENT(in),OPTIONAL :: e_d
1975
1976INTEGER :: i
1977
1978IF (PRESENT(avl)) THEN
1979 IF (SIZE(avl) > 0) THEN
1980
1981 IF (ASSOCIATED(this%anavar%r)) THEN
1982 DO i = 1, SIZE(this%anavar%r)
1983 IF (all(this%anavar%r(i)%btable /= avl)) this%anavar%r(i) = vol7d_var_miss
1984 ENDDO
1985 ENDIF
1986
1987 IF (ASSOCIATED(this%anavar%i)) THEN
1988 DO i = 1, SIZE(this%anavar%i)
1989 IF (all(this%anavar%i(i)%btable /= avl)) this%anavar%i(i) = vol7d_var_miss
1990 ENDDO
1991 ENDIF
1992
1993 IF (ASSOCIATED(this%anavar%b)) THEN
1994 DO i = 1, SIZE(this%anavar%b)
1995 IF (all(this%anavar%b(i)%btable /= avl)) this%anavar%b(i) = vol7d_var_miss
1996 ENDDO
1997 ENDIF
1998
1999 IF (ASSOCIATED(this%anavar%d)) THEN
2000 DO i = 1, SIZE(this%anavar%d)
2001 IF (all(this%anavar%d(i)%btable /= avl)) this%anavar%d(i) = vol7d_var_miss
|