libsim Versione 7.2.4
|
◆ 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 2147 del file vol7d_class.F90. 2148 DEALLOCATE(v7d_tmp%voldatid)
2149! trasferisco le variabili
2150 v7d_tmp%dativar%r => v7d_tmp%dativar%d
2151 NULLIFY(v7d_tmp%dativar%d)
2152 ENDIF
2153
2154! fondo con il volume definitivo
2155 CALL vol7d_merge(that, v7d_tmp)
2156ELSE
2157 CALL delete(v7d_tmp)
2158ENDIF
2159
2160
2161! Volume solo di dati interi
2162CALL vol7d_copy(this, v7d_tmp, &
2163 lanavarr=fv, lanavard=fv, lanavari=acn, lanavarb=fv, lanavarc=fv, &
2164 lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
2165 lanavarattrr=fv, lanavarattrd=fv, lanavarattri=fv, lanavarattrb=fv, lanavarattrc=fv, &
2166 ldativarr=fv, ldativard=fv, ldativari=tv, ldativarb=fv, ldativarc=fv, &
2167 ldatiattrr=fv, ldatiattrd=fv, ldatiattri=fv, ldatiattrb=fv, ldatiattrc=fv, &
2168 ldativarattrr=fv, ldativarattrd=fv, ldativarattri=fv, ldativarattrb=fv, ldativarattrc=fv)
2169
2170! converto a dati reali
2171IF (ASSOCIATED(v7d_tmp%anavar%i) .OR. ASSOCIATED(v7d_tmp%dativar%i)) THEN
2172
2173 IF (ASSOCIATED(v7d_tmp%anavar%i)) THEN
2174! alloco i dati reali e vi trasferisco gli interi
2175 ALLOCATE(v7d_tmp%volanar(SIZE(v7d_tmp%volanai, 1), SIZE(v7d_tmp%volanai, 2), &
2176 SIZE(v7d_tmp%volanai, 3)))
2177 DO i = 1, SIZE(v7d_tmp%anavar%i)
2178 v7d_tmp%volanar(:,i,:) = &
2179 realdat(v7d_tmp%volanai(:,i,:), v7d_tmp%anavar%i(i))
2180 ENDDO
2181 DEALLOCATE(v7d_tmp%volanai)
2182! trasferisco le variabili
2183 v7d_tmp%anavar%r => v7d_tmp%anavar%i
2184 NULLIFY(v7d_tmp%anavar%i)
2185 ENDIF
2186
2187 IF (ASSOCIATED(v7d_tmp%dativar%i)) THEN
2188! alloco i dati reali e vi trasferisco gli interi
2189 ALLOCATE(v7d_tmp%voldatir(SIZE(v7d_tmp%voldatii, 1), SIZE(v7d_tmp%voldatii, 2), &
2190 SIZE(v7d_tmp%voldatii, 3), SIZE(v7d_tmp%voldatii, 4), SIZE(v7d_tmp%voldatii, 5), &
2191 SIZE(v7d_tmp%voldatii, 6)))
2192 DO i = 1, SIZE(v7d_tmp%dativar%i)
2193 v7d_tmp%voldatir(:,:,:,:,i,:) = &
2194 realdat(v7d_tmp%voldatii(:,:,:,:,i,:), v7d_tmp%dativar%i(i))
2195 ENDDO
2196 DEALLOCATE(v7d_tmp%voldatii)
2197! trasferisco le variabili
2198 v7d_tmp%dativar%r => v7d_tmp%dativar%i
2199 NULLIFY(v7d_tmp%dativar%i)
2200 ENDIF
2201
2202! fondo con il volume definitivo
2203 CALL vol7d_merge(that, v7d_tmp)
2204ELSE
2205 CALL delete(v7d_tmp)
2206ENDIF
2207
2208
2209! Volume solo di dati byte
2210CALL vol7d_copy(this, v7d_tmp, &
2211 lanavarr=fv, lanavard=fv, lanavari=fv, lanavarb=acn, lanavarc=fv, &
2212 lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
2213 lanavarattrr=fv, lanavarattrd=fv, lanavarattri=fv, lanavarattrb=fv, lanavarattrc=fv, &
2214 ldativarr=fv, ldativard=fv, ldativari=fv, ldativarb=tv, ldativarc=fv, &
2215 ldatiattrr=fv, ldatiattrd=fv, ldatiattri=fv, ldatiattrb=fv, ldatiattrc=fv, &
2216 ldativarattrr=fv, ldativarattrd=fv, ldativarattri=fv, ldativarattrb=fv, ldativarattrc=fv)
2217
2218! converto a dati reali
2219IF (ASSOCIATED(v7d_tmp%anavar%b) .OR. ASSOCIATED(v7d_tmp%dativar%b)) THEN
2220
2221 IF (ASSOCIATED(v7d_tmp%anavar%b)) THEN
2222! alloco i dati reali e vi trasferisco i byte
2223 ALLOCATE(v7d_tmp%volanar(SIZE(v7d_tmp%volanab, 1), SIZE(v7d_tmp%volanab, 2), &
2224 SIZE(v7d_tmp%volanab, 3)))
2225 DO i = 1, SIZE(v7d_tmp%anavar%b)
2226 v7d_tmp%volanar(:,i,:) = &
2227 realdat(v7d_tmp%volanab(:,i,:), v7d_tmp%anavar%b(i))
2228 ENDDO
2229 DEALLOCATE(v7d_tmp%volanab)
2230! trasferisco le variabili
2231 v7d_tmp%anavar%r => v7d_tmp%anavar%b
2232 NULLIFY(v7d_tmp%anavar%b)
2233 ENDIF
2234
2235 IF (ASSOCIATED(v7d_tmp%dativar%b)) THEN
2236! alloco i dati reali e vi trasferisco i byte
2237 ALLOCATE(v7d_tmp%voldatir(SIZE(v7d_tmp%voldatib, 1), SIZE(v7d_tmp%voldatib, 2), &
2238 SIZE(v7d_tmp%voldatib, 3), SIZE(v7d_tmp%voldatib, 4), SIZE(v7d_tmp%voldatib, 5), &
2239 SIZE(v7d_tmp%voldatib, 6)))
2240 DO i = 1, SIZE(v7d_tmp%dativar%b)
2241 v7d_tmp%voldatir(:,:,:,:,i,:) = &
2242 realdat(v7d_tmp%voldatib(:,:,:,:,i,:), v7d_tmp%dativar%b(i))
2243 ENDDO
2244 DEALLOCATE(v7d_tmp%voldatib)
2245! trasferisco le variabili
2246 v7d_tmp%dativar%r => v7d_tmp%dativar%b
2247 NULLIFY(v7d_tmp%dativar%b)
2248 ENDIF
2249
2250! fondo con il volume definitivo
2251 CALL vol7d_merge(that, v7d_tmp)
2252ELSE
2253 CALL delete(v7d_tmp)
2254ENDIF
2255
2256
2257! Volume solo di dati character
2258CALL vol7d_copy(this, v7d_tmp, &
2259 lanavarr=fv, lanavard=fv, lanavari=fv, lanavarb=fv, lanavarc=acn, &
2260 lanaattrr=fv, lanaattrd=fv, lanaattri=fv, lanaattrb=fv, lanaattrc=fv, &
|