libsim Versione 8.0.0

◆ vol7d_filter()

subroutine 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 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, &

Generated with Doxygen.