libsim  Versione6.3.0

◆ vol7d_reform()

subroutine vol7d_class::vol7d_reform ( type(vol7d), intent(inout)  this,
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,
logical, intent(in), optional  purgeana 
)

Metodo per riformare in varie maniere un oggetto vol7d.

Equivale ad una copia (vedi vol7d_copy) seguita dalla distruzione del volume iniziale e alla sua riassegnazione al volume copiato. Ha senso se almeno uno dei parametri sort, uniq o miss è fornito uguale a .TRUE., altrimenti è solo una perdita di tempo. Può essere utile, ad esempio, per eliminare stazioni o istanti temporali indesiderati, basta assegnare il loro corrispondente elemento del descrittore a valore mancante e chiamare vol7d_reform con miss=.TRUE. .

Parametri
[in,out]thisoggetto da riformare
[in]sortif present and .TRUE., sort all the sortable dimensions
[in]uniquese 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]missse fornito e uguale a .TRUE., gli eventuali elementi dei descrittori uguali al corrispondente valore mancante verranno eliminati dall'oggetto riformato
[in]lsort_timeif present and .TRUE., sort only time dimension (alternative to sort )
[in]lsort_timerangeif present and .TRUE., sort only timerange dimension (alternative to sort )
[in]lsort_levelif present and .TRUE., sort only level dimension (alternative to sort )
[in]ltimese 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]ltimerangecome il precedente per la dimensione timerange
[in]llevelcome il precedente per la dimensione level
[in]lanacome il precedente per la dimensione ana
[in]lnetworkcome il precedente per la dimensione network
[in]lanavarrcome il precedente per tutte le possibili dimensioni variabile
[in]lanavardcome il precedente per tutte le possibili dimensioni variabile
[in]lanavaricome il precedente per tutte le possibili dimensioni variabile
[in]lanavarbcome il precedente per tutte le possibili dimensioni variabile
[in]lanavarccome il precedente per tutte le possibili dimensioni variabile
[in]lanaattrrcome il precedente per tutte le possibili dimensioni variabile
[in]lanaattrdcome il precedente per tutte le possibili dimensioni variabile
[in]lanaattricome il precedente per tutte le possibili dimensioni variabile
[in]lanaattrbcome il precedente per tutte le possibili dimensioni variabile
[in]lanaattrccome il precedente per tutte le possibili dimensioni variabile
[in]lanavarattrrcome il precedente per tutte le possibili dimensioni variabile
[in]lanavarattrdcome il precedente per tutte le possibili dimensioni variabile
[in]lanavarattricome il precedente per tutte le possibili dimensioni variabile
[in]lanavarattrbcome il precedente per tutte le possibili dimensioni variabile
[in]lanavarattrccome il precedente per tutte le possibili dimensioni variabile
[in]ldativarrcome il precedente per tutte le possibili dimensioni variabile
[in]ldativardcome il precedente per tutte le possibili dimensioni variabile
[in]ldativaricome il precedente per tutte le possibili dimensioni variabile
[in]ldativarbcome il precedente per tutte le possibili dimensioni variabile
[in]ldativarccome il precedente per tutte le possibili dimensioni variabile
[in]ldatiattrrcome il precedente per tutte le possibili dimensioni variabile
[in]ldatiattrdcome il precedente per tutte le possibili dimensioni variabile
[in]ldatiattricome il precedente per tutte le possibili dimensioni variabile
[in]ldatiattrbcome il precedente per tutte le possibili dimensioni variabile
[in]ldatiattrccome il precedente per tutte le possibili dimensioni variabile
[in]ldativarattrrcome il precedente per tutte le possibili dimensioni variabile
[in]ldativarattrdcome il precedente per tutte le possibili dimensioni variabile
[in]ldativarattricome il precedente per tutte le possibili dimensioni variabile
[in]ldativarattrbcome il precedente per tutte le possibili dimensioni variabile
[in]ldativarattrccome il precedente per tutte le possibili dimensioni variabile
[in]purgeanaif true remove ana with all data missing

Definizione alla linea 2053 del file vol7d_class.F90.

2053  CALL delete(v7d_tmp)
2054 ENDIF
2055 
2056 
2057 ! Volume solo di dati byte
2058 call vol7d_copy(this, v7d_tmp, &
2059  lanavarr=fv, lanavard=fv, lanavari=fv, lanavarb=acn, lanavarc=fv, &
2060  lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
2061  lanavarattrr=fv, lanavarattrd=fv, lanavarattri=fv, lanavarattrb=fv, lanavarattrc=fv, &
2062  ldativarr=fv, ldativard=fv, ldativari=fv, ldativarb=tv, ldativarc=fv, &
2063  ldatiattrr=fv, ldatiattrd=fv, ldatiattri=fv, ldatiattrb=fv, ldatiattrc=fv, &
2064  ldativarattrr=fv, ldativarattrd=fv, ldativarattri=fv, ldativarattrb=fv, ldativarattrc=fv)
2065 
2066 ! converto a dati reali
2067 IF (ASSOCIATED(v7d_tmp%dativar%b)) THEN
2068 ! alloco i dati reali e vi trasferisco i byte
2069  ALLOCATE(v7d_tmp%voldatir(SIZE(v7d_tmp%voldatib, 1), SIZE(v7d_tmp%voldatib, 2), &
2070  SIZE(v7d_tmp%voldatib, 3), SIZE(v7d_tmp%voldatib, 4), SIZE(v7d_tmp%voldatib, 5), &
2071  SIZE(v7d_tmp%voldatib, 6)))
2072  DO i = 1, SIZE(v7d_tmp%dativar%b)
2073  v7d_tmp%voldatir(:,:,:,:,i,:) = &
2074  realdat(v7d_tmp%voldatib(:,:,:,:,i,:), v7d_tmp%dativar%b(i))
2075  ENDDO
2076  DEALLOCATE(v7d_tmp%voldatib)
2077 ! trasferisco le variabili
2078  v7d_tmp%dativar%r => v7d_tmp%dativar%b
2079  NULLIFY(v7d_tmp%dativar%b)
2080 
2081 ! fondo con il volume definitivo
2082  CALL vol7d_merge(that, v7d_tmp)
2083 ELSE
2084  CALL delete(v7d_tmp)
2085 ENDIF
2086 
2087 
2088 ! Volume solo di dati character
2089 call vol7d_copy(this, v7d_tmp, &
2090  lanavarr=fv, lanavard=fv, lanavari=fv, lanavarb=fv, lanavarc=acn, &
2091  lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
2092  lanavarattrr=fv, lanavarattrd=fv, lanavarattri=fv, lanavarattrb=fv, lanavarattrc=fv, &
2093  ldativarr=fv, ldativard=fv, ldativari=fv, ldativarb=fv, ldativarc=tv, &
2094  ldatiattrr=fv, ldatiattrd=fv, ldatiattri=fv, ldatiattrb=fv, ldatiattrc=fv, &
2095  ldativarattrr=fv, ldativarattrd=fv, ldativarattri=fv, ldativarattrb=fv, ldativarattrc=fv)
2096 
2097 ! converto a dati reali
2098 IF (ASSOCIATED(v7d_tmp%dativar%c)) THEN
2099 ! alloco i dati reali e vi trasferisco i character
2100  ALLOCATE(v7d_tmp%voldatir(SIZE(v7d_tmp%voldatic, 1), SIZE(v7d_tmp%voldatic, 2), &
2101  SIZE(v7d_tmp%voldatic, 3), SIZE(v7d_tmp%voldatic, 4), SIZE(v7d_tmp%voldatic, 5), &
2102  SIZE(v7d_tmp%voldatic, 6)))
2103  DO i = 1, SIZE(v7d_tmp%dativar%c)
2104  v7d_tmp%voldatir(:,:,:,:,i,:) = &
2105  realdat(v7d_tmp%voldatic(:,:,:,:,i,:), v7d_tmp%dativar%c(i))
2106  ENDDO
2107  DEALLOCATE(v7d_tmp%voldatic)
2108 ! trasferisco le variabili
2109  v7d_tmp%dativar%r => v7d_tmp%dativar%c
2110  NULLIFY(v7d_tmp%dativar%c)
2111 
2112 ! fondo con il volume definitivo
2113  CALL vol7d_merge(that, v7d_tmp)
2114 ELSE
2115  CALL delete(v7d_tmp)
Distruttori per le 2 classi.

Generated with Doxygen.