|
◆ qcteminit()
subroutine qcteminit |
( |
type(qctemtype), intent(inout) |
qctem, |
|
|
type (vol7d), intent(in), target |
v7d, |
|
|
character(len=*), dimension(:), intent(in) |
var, |
|
|
type(datetime), intent(in), optional |
timei, |
|
|
type(datetime), intent(in), optional |
timef, |
|
|
type(geo_coord), intent(inout), optional |
coordmin, |
|
|
type(geo_coord), intent(inout), optional |
coordmax, |
|
|
integer, dimension(:,:,:,:,:), intent(in), optional, target |
data_id_in, |
|
|
character(len=*), intent(in), optional |
extremepath, |
|
|
character(len=*), intent(in), optional |
temporalpath, |
|
|
character(len=*), intent(in), optional |
dsne, |
|
|
character(len=*), intent(in), optional |
usere, |
|
|
character(len=*), intent(in), optional |
passworde, |
|
|
character(len=*), intent(in), optional |
dsntem, |
|
|
character(len=*), intent(in), optional |
usertem, |
|
|
character(len=*), intent(in), optional |
passwordtem, |
|
|
logical, intent(in), optional |
height2level, |
|
|
character(len=*), optional |
operation, |
|
|
integer, intent(in), optional |
timeconfidence, |
|
|
character(len=*), intent(in), optional |
categoryappend |
|
) |
| |
Init del controllo di qualità temporale.
Effettua la lettura dei file e altre operazioni di inizializzazione. - Parametri
-
[in,out] | qctem | Oggetto per il controllo temporale |
[in] | v7d | Il volume Vol7d da controllare |
[in] | var | variabili da importare secondo la tabella B locale o relativi alias |
[in,out] | coordmin | coordinate minime e massime che definiscono il rettangolo di estrazione per l'importazione |
[in,out] | coordmax | coordinate minime e massime che definiscono il rettangolo di estrazione per l'importazione |
[in] | timei | estremi temporali (inizio e fine) dell'estrazione per l'importazione |
[in] | timef | estremi temporali (inizio e fine) dell'estrazione per l'importazione |
[in] | data_id_in | Indici dei dati in DB |
[in] | extremepath | file con il volume del extreme |
[in] | temporalpath | file with spatial ndi |
[in] | height2level | use conventional level starting from station height |
| operation | Operation to execute ("gradient"/"run") |
[in] | timeconfidence | max time for data correlation in sec |
[in] | categoryappend | aggiunge questo suffisso al namespace category di log4fortran |
Definizione alla linea 328 del file modqctem.F90.
339 subroutine qctemdelete(qctem)
341 type(qctemtype), intent(in out) :: qctem
343 call qctemdealloc(qctem)
345 call delete(qctem%qccli)
348 call l4f_category_delete(qctem%category)
351 end subroutine qctemdelete
357 SUBROUTINE quacontem (qctem,battrinv,battrcli,battrout,&
358 anamask,timemask,levelmask,timerangemask,varmask,networkmask)
361 type(qctemtype), intent(in out) :: qctem
362 character (len=10) , intent(in), optional :: battrinv
363 character (len=10) , intent(in), optional :: battrcli
364 character (len=10) , intent(in), optional :: battrout
365 logical , intent(in), optional :: anamask(:)
366 logical , intent(in), optional :: timemask(:)
367 logical , intent(in), optional :: levelmask(:)
368 logical , intent(in), optional :: timerangemask(:)
369 logical , intent(in), optional :: varmask(:)
370 logical , intent(in), optional :: networkmask(:)
375 integer :: indbattrinv,indbattrcli,indbattrout,grunit
376 logical :: anamaskl(size(qctem%v7d%ana)), timemaskl(size(qctem%v7d%time)), levelmaskl(size(qctem%v7d%level)), &
377 timerangemaskl(size(qctem%v7d%timerange)), varmaskl(size(qctem%v7d%dativar%r)), networkmaskl(size(qctem%v7d%network))
379 integer :: indana , indtime ,indlevel ,indtimerange ,inddativarr, indnetwork,indtimenear
380 integer :: indcana , indctime ,indclevel ,indctimerange ,indcdativarr, indcnetwork, indcnetworks, indcnetworkg
381 real :: datoqui,datoprima,datodopo,climaquii, climaquif
385 TYPE(datetime) :: time,prima, ora, dopo
386 TYPE(vol7d_network):: network
387 type(timedelta) :: td
389 double precision :: gradprima,graddopo,grad
391 character(len=512) :: filename
396 if ( present(battrinv)) then
397 indbattrinv = index_c(qctem%v7d%datiattr%b(:)%btable, battrinv)
399 indbattrinv = index_c(qctem%v7d%datiattr%b(:)%btable, qcattrvarsbtables(1))
402 if ( present(battrcli)) then
403 indbattrcli = index_c(qctem%v7d%datiattr%b(:)%btable, battrcli)
405 indbattrcli = index_c(qctem%v7d%datiattr%b(:)%btable, qcattrvarsbtables(2))
408 if ( present(battrout)) then
409 indbattrout = index_c(qctem%v7d%datiattr%b(:)%btable, battrout)
411 indbattrout = index_c(qctem%v7d%datiattr%b(:)%btable, qcattrvarsbtables(3))
417 if (indbattrout <= 0 ) then
419 call l4f_category_log(qctem%category,l4f_error, "error finding attribute index for output")
424 if (qctem%operation == "gradient") then
427 if ( size(qctem%v7d%level) > 1 .or.&
428 size(qctem%v7d%timerange) > 1 .or.&
429 size(qctem%v7d%dativar%r) > 1 ) then
430 call l4f_category_log(qctem%category,l4f_error, "gradient operation manage one level/timerange/var only")
435 if ( size(qctem%v7d%time) < 1 ) then
436 call l4f_category_log(qctem%category,l4f_info, "no data present for gradient operation")
442 if( present(anamask)) then
447 if( present(timemask)) then
452 if( present(levelmask)) then
453 levelmaskl = levelmask
457 if( present(timerangemask)) then
458 timerangemaskl = timerangemask
460 timerangemaskl = .true.
462 if( present(varmask)) then
467 if( present(networkmask)) then
468 networkmaskl = networkmask
470 networkmaskl = .true.
474 qctem%v7d%voldatiattrb(:,:,:,:,:,:,indbattrout)=ibmiss
477 call vol7d_normalize_data(qctem%qccli)
483 time=cyclicdatetime_to_conventional(cyclicdatetime_new(chardate= "/////////"))
|