libsim  Versione7.2.3

◆ qcteminit()

subroutine modqctem::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 
)
private

Init del controllo di qualità temporale.

Effettua la lettura dei file e altre operazioni di inizializzazione.

Parametri
[in,out]qctemOggetto per il controllo temporale
[in]v7dIl volume Vol7d da controllare
[in]varvariabili da importare secondo la tabella B locale o relativi alias
[in,out]coordmincoordinate minime e massime che definiscono il rettangolo di estrazione per l'importazione
[in,out]coordmaxcoordinate minime e massime che definiscono il rettangolo di estrazione per l'importazione
[in]timeiestremi temporali (inizio e fine) dell'estrazione per l'importazione
[in]timefestremi temporali (inizio e fine) dell'estrazione per l'importazione
[in]data_id_inIndici dei dati in DB
[in]extremepathfile con il volume del extreme
[in]temporalpathfile with spatial ndi
[in]height2leveluse conventional level starting from station height
operationOperation to execute ("gradient"/"run")
[in]timeconfidencemax time for data correlation in sec
[in]categoryappendaggiunge questo suffisso al namespace category di log4fortran

Definizione alla linea 338 del file modqctem.F90.

338 
339 subroutine qctemdelete(qctem)
340  ! decostruttore a mezzo
341 type(qctemtype),intent(in out) :: qctem
342 
343 call qctemdealloc(qctem)
344 
345 call delete(qctem%qccli)
346 
347 !delete logger
348 call l4f_category_delete(qctem%category)
349 
350 return
351 end subroutine qctemdelete
352 
353 
356 
357 SUBROUTINE quacontem (qctem,battrinv,battrcli,battrout,&
358  anamask,timemask,levelmask,timerangemask,varmask,networkmask)
359 
360 
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(:)
371 
372  !REAL(kind=fp_geo) :: lat,lon
373 integer :: asec
374  !local
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))
378 
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
382  !integer, allocatable :: indcanav(:)
383 
384  !TYPE(vol7d_ana) :: ana
385 TYPE(datetime) :: time,prima, ora, dopo
386 TYPE(vol7d_network):: network
387 type(timedelta) :: td
388 
389 double precision :: gradprima,graddopo,grad
390  !call qctem_validate (qctem)
391 character(len=512) :: filename
392 logical :: exist
393 integer :: ind
394 
395 !localize optional parameter
396 if (present(battrinv))then
397  indbattrinv = index_c(qctem%v7d%datiattr%b(:)%btable, battrinv)
398 else
399  indbattrinv = index_c(qctem%v7d%datiattr%b(:)%btable, qcattrvarsbtables(1))
400 end if
401 
402 if (present(battrcli))then
403  indbattrcli = index_c(qctem%v7d%datiattr%b(:)%btable, battrcli)
404 else
405  indbattrcli = index_c(qctem%v7d%datiattr%b(:)%btable, qcattrvarsbtables(2))
406 end if
407 
408 if (present(battrout))then
409  indbattrout = index_c(qctem%v7d%datiattr%b(:)%btable, battrout)
410 else
411  indbattrout = index_c(qctem%v7d%datiattr%b(:)%btable, qcattrvarsbtables(3))
412 end if
413 
414 
415 ! some checks on input
416 !if (indbattrinv <=0 .or. indbattrcli <= 0 .or. indbattrout <= 0 ) then
417 if (indbattrout <= 0 ) then
418 
419  call l4f_category_log(qctem%category,l4f_error,"error finding attribute index for output")
420  call raise_error()
421 
422 end if
423 
424 if (qctem%operation == "gradient") then
425 
426  !check for gradient operation
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")
431  call raise_error()
432  end if
433 
434  !check for data to check
435  if ( size(qctem%v7d%time) < 1 ) then
436  call l4f_category_log(qctem%category,l4f_info,"no data present for gradient operation")
437  return
438  end if
439 end if
440 
441  ! set other local variable from optional parameter
442 if(present(anamask)) then
443  anamaskl = anamask
444 else
445  anamaskl = .true.
446 endif
447 if(present(timemask)) then
448  timemaskl = timemask
449 else
450  timemaskl = .true.
451 endif
452 if(present(levelmask)) then
453  levelmaskl = levelmask
454 else
455  levelmaskl = .true.
456 endif
457 if(present(timerangemask)) then
458  timerangemaskl = timerangemask
459 else
460  timerangemaskl = .true.
461 endif
462 if(present(varmask)) then
463  varmaskl = varmask
464 else
465  varmaskl = .true.
466 endif
467 if(present(networkmask)) then
468  networkmaskl = networkmask
469 else
470  networkmaskl = .true.
471 endif
472 
473 ! do not touch data that will not in/validated by QC
474 qctem%v7d%voldatiattrb(:,:,:,:,:,:,indbattrout)=ibmiss
475 
476 ! normalize data in space and time
477 call vol7d_normalize_data(qctem%qccli)
478 
479 
480 ! compute some index for temporal clima
481 !! compute the conventional generic datetime
482 !!cyclicdt = cyclicdatetime_new(chardate="/////////") !TMMGGhhmm
483 time=cyclicdatetime_to_conventional(cyclicdatetime_new(chardate="/////////")) !TMMGGhhmm
484 !!call init(time, year=1007, month=1, day=1, hour=01, minute=01)
485 
486 
487 if (qctem%operation == "run") then

Generated with Doxygen.