libsim  Versione8.0.0

◆ vol7d_filter()

subroutine vol7d_class::vol7d_filter ( type(vol7d), intent(inout)  this,
character(len=*), dimension(:), intent(in), optional  avl,
character(len=*), dimension(:), intent(in), optional  vl,
type(vol7d_network), dimension(:), optional  nl,
type(datetime), intent(in), optional  s_d,
type(datetime), intent(in), optional  e_d 
)

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.

Parametri
[in,out]thisvolume to be filtered
[in]avllist of station variables to be kept, if not provided or of zero length, all variables are kept
[in]vllist of data variables to be kept, if not provided or of zero length, all variables are kept
nllist of station networks to be kept, if not provided or of zero length, all networks are kept
[in]s_dinitial time interval for time filtering, if not provided or equal to missing data no lower limit is imposed
[in]e_dfinal time interval for time filtering, if not provided or equal to missing data no upper limit is imposed

Definizione alla linea 2159 del file vol7d_class.F90.

2159 ENDIF
2160 
2161 
2162 ! Volume solo di dati interi
2163 CALL 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
2172 IF (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)
2205 ELSE
2206  CALL delete(v7d_tmp)
2207 ENDIF
2208 
2209 
2210 ! Volume solo di dati byte
2211 CALL 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
2220 IF (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)
2253 ELSE
2254  CALL delete(v7d_tmp)
2255 ENDIF
2256 
2257 
2258 ! Volume solo di dati character
2259 CALL 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, &
2262  lanavarattrr=fv, lanavarattrd=fv, lanavarattri=fv, lanavarattrb=fv, lanavarattrc=fv, &
2263  ldativarr=fv, ldativard=fv, ldativari=fv, ldativarb=fv, ldativarc=tv, &
2264  ldatiattrr=fv, ldatiattrd=fv, ldatiattri=fv, ldatiattrb=fv, ldatiattrc=fv, &
2265  ldativarattrr=fv, ldativarattrd=fv, ldativarattri=fv, ldativarattrb=fv, ldativarattrc=fv)
2266 
2267 ! converto a dati reali
2268 IF (ASSOCIATED(v7d_tmp%anavar%c) .OR. ASSOCIATED(v7d_tmp%dativar%c)) THEN
2269 
2270  IF (ASSOCIATED(v7d_tmp%anavar%c)) THEN
2271 ! alloco i dati reali e vi trasferisco i character

Generated with Doxygen.