|
◆ vol7d_recompute_stat_proc_agg_multiv()
subroutine vol7d_class_compute::vol7d_recompute_stat_proc_agg_multiv |
( |
type(vol7d), intent(inout) |
this, |
|
|
type(vol7d), intent(out) |
that, |
|
|
type(timedelta), intent(in) |
step, |
|
|
type(datetime), intent(in), optional |
start, |
|
|
real, intent(in), optional |
frac_valid, |
|
|
integer, intent(in) |
multiv_proc |
|
) |
| |
- 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] | step | length of the step over which the statistical processing is performed |
[in] | start | start of statistical processing interval |
[in] | frac_valid | minimum fraction of valid data required for considering acceptable a recomputed value, default=1. |
[in] | multiv_proc | index of multivariate specific operation |
Definizione alla linea 1280 del file vol7d_class_compute.F90.
1280 TYPE(datetime), INTENT(in), OPTIONAL :: stopp 1281 TYPE(cyclicdatetime), INTENT(in), OPTIONAL :: cyclicdt 1283 TYPE(cyclicdatetime) :: lcyclicdt 1284 TYPE(datetime) :: counter, lstart, lstop 1285 INTEGER :: i, naddtime 1287 CALL safe_start_stop(this, lstart, lstop, start, stopp) 1288 IF (.NOT. c_e(lstart) .OR. .NOT. c_e(lstop) .OR. .NOT. c_e(step)) RETURN 1290 lcyclicdt=cyclicdatetime_miss 1291 if ( present(cyclicdt)) then 1292 if(c_e(cyclicdt)) lcyclicdt=cyclicdt 1295 CALL l4f_log(l4f_info, 'vol7d_fill_time: time interval '//trim(to_char(lstart))// & 1296 ' '//trim(to_char(lstop))) 1303 naddcount: DO WHILE(counter <= lstop) 1304 DO WHILE(i <= SIZE(this%time)) 1305 IF (counter < this%time(i)) THEN 1308 ELSE IF (counter == this%time(i) .OR. .NOT. counter == lcyclicdt) THEN 1309 counter = counter + step 1314 naddtime = naddtime + 1 1315 counter = counter + step 1328 IF (naddtime > 0) THEN 1331 CALL vol7d_alloc(that, ntime=naddtime) 1332 CALL vol7d_alloc_vol(that) 1338 naddadd: DO WHILE(counter <= lstop) 1339 DO WHILE(i <= SIZE(this%time)) 1340 IF (counter < this%time(i)) THEN 1343 ELSE IF (counter == this%time(i) .OR. .NOT. counter == lcyclicdt) THEN 1344 counter = counter + step 1349 naddtime = naddtime + 1 1350 that%time(naddtime) = counter 1351 counter = counter + step 1354 CALL vol7d_append(that, this, sort=.true.) 1359 CALL vol7d_copy(this, that, sort=.true.) 1363 END SUBROUTINE vol7d_fill_time 1377 SUBROUTINE vol7d_filter_time(this, that, step, start, stopp, cyclicdt) 1378 TYPE(vol7d), INTENT(inout) :: this 1379 TYPE(vol7d), INTENT(inout) :: that 1380 TYPE(timedelta), INTENT(in), optional :: step 1381 TYPE(datetime), INTENT(in), OPTIONAL :: start 1382 TYPE(datetime), INTENT(in), OPTIONAL :: stopp 1383 TYPE(cyclicdatetime), INTENT(in), OPTIONAL :: cyclicdt 1385 TYPE(datetime) :: lstart, lstop 1386 LOGICAL, ALLOCATABLE :: time_mask(:) 1388 CALL safe_start_stop(this, lstart, lstop, start, stopp) 1389 IF (.NOT. c_e(lstart) .OR. .NOT. c_e(lstop)) RETURN 1391 CALL l4f_log(l4f_info, 'vol7d_filter_time: time interval '//trim(to_char(lstart))// & 1392 ' '//trim(to_char(lstop))) 1394 ALLOCATE(time_mask( SIZE(this%time))) 1396 time_mask = this%time >= lstart .AND. this%time <= lstop 1398 IF ( PRESENT(cyclicdt)) THEN 1399 IF (c_e(cyclicdt)) THEN 1400 time_mask = time_mask .AND. this%time == cyclicdt 1404 IF ( PRESENT(step)) THEN 1406 time_mask = time_mask .AND. mod(this%time - lstart, step) == timedelta_0 1410 CALL vol7d_copy(this,that, ltime=time_mask) 1412 DEALLOCATE(time_mask) 1414 END SUBROUTINE vol7d_filter_time 1420 SUBROUTINE vol7d_fill_data(this, step, start, stopp, tolerance) 1421 TYPE(vol7d), INTENT(inout) :: this 1422 TYPE(timedelta), INTENT(in) :: step 1423 TYPE(datetime), INTENT(in), OPTIONAL :: start 1424 TYPE(datetime), INTENT(in), OPTIONAL :: stopp 1425 TYPE(timedelta), INTENT(in), optional :: tolerance 1427 TYPE(datetime) :: lstart, lstop 1428 integer :: indana , indtime ,indlevel ,indtimerange ,inddativarr, indnetwork, iindtime 1429 type(timedelta) :: deltato,deltat, ltolerance 1431 CALL safe_start_stop(this, lstart, lstop, start, stopp) 1432 IF (.NOT. c_e(lstart) .OR. .NOT. c_e(lstop)) RETURN 1434 CALL l4f_log(l4f_info, 'vol7d_fill_data: time interval '//trim(to_char(lstart))// & 1435 ' '//trim(to_char(lstop))) 1440 if ( present(tolerance)) then 1441 if (c_e(tolerance)) ltolerance=tolerance 1445 do indtime=1, size(this%time) 1447 IF (this%time(indtime) < lstart .OR. this%time(indtime) > lstop .OR. & 1448 mod(this%time(indtime) - lstart, step) /= timedelta_0) cycle 1449 do indtimerange=1, size(this%timerange) 1450 if (this%timerange(indtimerange)%timerange /= 254) cycle 1451 do indnetwork=1, size(this%network) 1452 do inddativarr=1, size(this%dativar%r) 1453 do indlevel=1, size(this%level) 1454 do indana=1, size(this%ana)
|