libsim Versione 7.2.6

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

Generated with Doxygen.