libsim  Versione 7.2.4

◆ 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 2157 del file vol7d_class.F90.

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

Generated with Doxygen.