|
◆ vol7d_compute_stat_proc_metamorph()
subroutine vol7d_class_compute::vol7d_compute_stat_proc_metamorph |
( |
type(vol7d), intent(inout) |
this, |
|
|
type(vol7d), intent(out) |
that, |
|
|
integer, intent(in) |
stat_proc_input, |
|
|
integer, intent(in) |
stat_proc |
|
) |
| |
Specialized method for statistically processing a set of data by integration/differentiation.
This method performs statistical processing by integrating (accumulating) in time values representing time-average rates or fluxes, (stat_proc_input=0 stat_proc=1) or by transforming a time-integrated (accumulated) value in a time-average rate or flux (stat_proc_input=1 stat_proc=0). Analysis/observation or forecast timeranges are processed. The only operation performed is respectively multiplying or dividing the values by the length of the time interval in seconds.
The output that vol7d object contains elements from the original volume this satisfying the conditions
Output data will have timerange of type stat_proc (1 or 0) and p1 and p2 equal to the corresponding input values. The supported statistical processing methods (parameter stat_proc) are:
Input volume may have any value of thistime_definition, and that value will be conserved in the output volume. - Parametri
-
[in,out] | this | volume providing data to be recomputed, it is not modified by the method, apart from performing a vol7d_alloc_vol on it |
[out] | that | output volume which will contain the recomputed data |
[in] | stat_proc_input | type of statistical processing of data that has to be processed (from grib2 table), only data having timerange of this type will be processed, the actual statistical processing performed and which will appear in the output volume, is however determined by stat_proc argument |
[in] | stat_proc | type of statistical processing to be recomputed (from grib2 table), data in output volume that will have a timerange of this type |
Definizione alla linea 1196 del file vol7d_class_compute.F90.
1197 DO i5 = 1, SIZE(this%dativar%d)
1200 DO n1 = SIZE(dtratio), 1, -1
1201 IF (dtratio(n1) <= 0) cycle
1203 DO n = 1, map_ttr(i,j)%arraysize
1204 IF (map_ttr(i,j)%array(n)%extra_info == dtratio(n1)) THEN
1205 IF (c_e(this%voldatid(i1,map_ttr(i,j)%array(n)%it,i3
1206 map_ttr(i,j)%array(n)%itr,i5,i6))) THEN
1207 ttr_mask(map_ttr(i,j)%array(n)%it, &
1208 map_ttr(i,j)%array(n)%itr) = .true.
1213 ndtr = count(ttr_mask)
1214 frac_c = real(ndtr)/real(dtratio(n1))
1216 IF (ndtr > 0 .AND. frac_c >= max(lfrac_valid, frac_m)) THEN
1218 SELECT CASE(stat_proc)
1220 that%voldatid(i1,i,i3,j,i5,i6) = &
1221 sum(this%voldatid(i1,:,i3,:,i5,i6), &
1224 that%voldatid(i1,i,i3,j,i5,i6) = &
1225 sum(this%voldatid(i1,:,i3,:,i5,i6), &
1228 that%voldatid(i1,i,i3,j,i5,i6) = &
1229 maxval(this%voldatid(i1,:,i3,:,i5,i6), &
1232 that%voldatid(i1,i,i3,j,i5,i6) = &
1233 minval(this%voldatid(i1,:,i3,:,i5,i6), &
1236 that%voldatid(i1,i,i3,j,i5,i6) = &
1238 reshape(this%voldatid(i1,:,i3,:,i5,i6), shape=linshape
1239 mask=reshape(ttr_mask, shape=linshape))
1248 CALL delete(map_ttr(i,j))
1253 DEALLOCATE(ttr_mask)
1255 END SUBROUTINE vol7d_recompute_stat_proc_agg_multiv
|