|
libsim Versione 8.0.0
|
◆ vol7d_filter()
Filter the contents of a volume keeping only desired data. This subroutine filters a vol7d object by keeping only a subset of the data contained. It can keep only times within a specified interval, only station networks contained in a list and only specified station or data variables. If a filter parameter is not provided, no filtering will take place according to that criterion. The volume is reallocated keeping only the desired data.
Definizione alla linea 2148 del file vol7d_class.F90. 2149 DEALLOCATE(v7d_tmp%voldatid)
2150! trasferisco le variabili
2151 v7d_tmp%dativar%r => v7d_tmp%dativar%d
2152 NULLIFY(v7d_tmp%dativar%d)
2153 ENDIF
2154
2155! fondo con il volume definitivo
2156 CALL vol7d_merge(that, v7d_tmp)
2157ELSE
2158 CALL delete(v7d_tmp)
2159ENDIF
2160
2161
2162! Volume solo di dati interi
2163CALL vol7d_copy(this, v7d_tmp, &
2164 lanavarr=fv, lanavard=fv, lanavari=acn, lanavarb=fv, lanavarc=fv, &
2165 lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
2166 lanavarattrr=fv, lanavarattrd=fv, lanavarattri=fv, lanavarattrb=fv, lanavarattrc=fv, &
2167 ldativarr=fv, ldativard=fv, ldativari=tv, ldativarb=fv, ldativarc=fv, &
2168 ldatiattrr=fv, ldatiattrd=fv, ldatiattri=fv, ldatiattrb=fv, ldatiattrc=fv, &
2169 ldativarattrr=fv, ldativarattrd=fv, ldativarattri=fv, ldativarattrb=fv, ldativarattrc=fv)
2170
2171! converto a dati reali
2172IF (ASSOCIATED(v7d_tmp%anavar%i) .OR. ASSOCIATED(v7d_tmp%dativar%i)) THEN
2173
2174 IF (ASSOCIATED(v7d_tmp%anavar%i)) THEN
2175! alloco i dati reali e vi trasferisco gli interi
2176 ALLOCATE(v7d_tmp%volanar(SIZE(v7d_tmp%volanai, 1), SIZE(v7d_tmp%volanai, 2), &
2177 SIZE(v7d_tmp%volanai, 3)))
2178 DO i = 1, SIZE(v7d_tmp%anavar%i)
2179 v7d_tmp%volanar(:,i,:) = &
2180 realdat(v7d_tmp%volanai(:,i,:), v7d_tmp%anavar%i(i))
2181 ENDDO
2182 DEALLOCATE(v7d_tmp%volanai)
2183! trasferisco le variabili
2184 v7d_tmp%anavar%r => v7d_tmp%anavar%i
2185 NULLIFY(v7d_tmp%anavar%i)
2186 ENDIF
2187
2188 IF (ASSOCIATED(v7d_tmp%dativar%i)) THEN
2189! alloco i dati reali e vi trasferisco gli interi
2190 ALLOCATE(v7d_tmp%voldatir(SIZE(v7d_tmp%voldatii, 1), SIZE(v7d_tmp%voldatii, 2), &
2191 SIZE(v7d_tmp%voldatii, 3), SIZE(v7d_tmp%voldatii, 4), SIZE(v7d_tmp%voldatii, 5), &
2192 SIZE(v7d_tmp%voldatii, 6)))
2193 DO i = 1, SIZE(v7d_tmp%dativar%i)
2194 v7d_tmp%voldatir(:,:,:,:,i,:) = &
2195 realdat(v7d_tmp%voldatii(:,:,:,:,i,:), v7d_tmp%dativar%i(i))
2196 ENDDO
2197 DEALLOCATE(v7d_tmp%voldatii)
2198! trasferisco le variabili
2199 v7d_tmp%dativar%r => v7d_tmp%dativar%i
2200 NULLIFY(v7d_tmp%dativar%i)
2201 ENDIF
2202
2203! fondo con il volume definitivo
2204 CALL vol7d_merge(that, v7d_tmp)
2205ELSE
2206 CALL delete(v7d_tmp)
2207ENDIF
2208
2209
2210! Volume solo di dati byte
2211CALL vol7d_copy(this, v7d_tmp, &
2212 lanavarr=fv, lanavard=fv, lanavari=fv, lanavarb=acn, lanavarc=fv, &
2213 lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
2214 lanavarattrr=fv, lanavarattrd=fv, lanavarattri=fv, lanavarattrb=fv, lanavarattrc=fv, &
2215 ldativarr=fv, ldativard=fv, ldativari=fv, ldativarb=tv, ldativarc=fv, &
2216 ldatiattrr=fv, ldatiattrd=fv, ldatiattri=fv, ldatiattrb=fv, ldatiattrc=fv, &
2217 ldativarattrr=fv, ldativarattrd=fv, ldativarattri=fv, ldativarattrb=fv, ldativarattrc=fv)
2218
2219! converto a dati reali
2220IF (ASSOCIATED(v7d_tmp%anavar%b) .OR. ASSOCIATED(v7d_tmp%dativar%b)) THEN
2221
2222 IF (ASSOCIATED(v7d_tmp%anavar%b)) THEN
2223! alloco i dati reali e vi trasferisco i byte
2224 ALLOCATE(v7d_tmp%volanar(SIZE(v7d_tmp%volanab, 1), SIZE(v7d_tmp%volanab, 2), &
2225 SIZE(v7d_tmp%volanab, 3)))
2226 DO i = 1, SIZE(v7d_tmp%anavar%b)
2227 v7d_tmp%volanar(:,i,:) = &
2228 realdat(v7d_tmp%volanab(:,i,:), v7d_tmp%anavar%b(i))
2229 ENDDO
2230 DEALLOCATE(v7d_tmp%volanab)
2231! trasferisco le variabili
2232 v7d_tmp%anavar%r => v7d_tmp%anavar%b
2233 NULLIFY(v7d_tmp%anavar%b)
2234 ENDIF
2235
2236 IF (ASSOCIATED(v7d_tmp%dativar%b)) THEN
2237! alloco i dati reali e vi trasferisco i byte
2238 ALLOCATE(v7d_tmp%voldatir(SIZE(v7d_tmp%voldatib, 1), SIZE(v7d_tmp%voldatib, 2), &
2239 SIZE(v7d_tmp%voldatib, 3), SIZE(v7d_tmp%voldatib, 4), SIZE(v7d_tmp%voldatib, 5), &
2240 SIZE(v7d_tmp%voldatib, 6)))
2241 DO i = 1, SIZE(v7d_tmp%dativar%b)
2242 v7d_tmp%voldatir(:,:,:,:,i,:) = &
2243 realdat(v7d_tmp%voldatib(:,:,:,:,i,:), v7d_tmp%dativar%b(i))
2244 ENDDO
2245 DEALLOCATE(v7d_tmp%voldatib)
2246! trasferisco le variabili
2247 v7d_tmp%dativar%r => v7d_tmp%dativar%b
2248 NULLIFY(v7d_tmp%dativar%b)
2249 ENDIF
2250
2251! fondo con il volume definitivo
2252 CALL vol7d_merge(that, v7d_tmp)
2253ELSE
2254 CALL delete(v7d_tmp)
2255ENDIF
2256
2257
2258! Volume solo di dati character
2259CALL vol7d_copy(this, v7d_tmp, &
2260 lanavarr=fv, lanavard=fv, lanavari=fv, lanavarb=fv, lanavarc=acn, &
2261 lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
|