libsim  Versione 7.2.4

◆ qcspainit()

subroutine qcspainit ( type(qcspatype), intent(inout)  qcspa,
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  spatialpath,
character(len=*), intent(in), optional  dsne,
character(len=*), intent(in), optional  usere,
character(len=*), intent(in), optional  passworde,
character(len=*), intent(in), optional  dsnspa,
character(len=*), intent(in), optional  userspa,
character(len=*), intent(in), optional  passwordspa,
logical, intent(in), optional  height2level,
character(len=*), optional  operation,
character(len=*), intent(in), optional  categoryappend 
)

Init del controllo di qualità spaziale.

Effettua la lettura dei file e altre operazioni di inizializzazione.

Parametri
[in,out]qcspaOggetto per il controllo spaziale
[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]spatialpathfile with spatial ndi
[in]height2leveluse conventional level starting from station height
[in]categoryappendappennde questo suffisso al namespace category di log4fortran
operationOperation to execute ("gradient"/"run")

Definizione alla linea 355 del file modqcspa.F90.

361 
362 call getval(qcspa%v7d%ana%coord, lon, lat)
363 
364 !print*,"size",size(lon),size(lat)
365 !print*,lat,lon
366 call proj(geoproj,lon,lat,qcspa%co%x,qcspa%co%y)
367 !print*,"size x y ",size(qcspa%x),size(qcspa%y)
368 !print*,qcspa%x,qcspa%y
369 
370 !triangulate
371 status = triangles_compute(qcspa%co,qcspa%tri)
372 
373 !qcspa%nt,qcspa%ipt,qcspa%nl,qcspa%ipl)
374 
375 if (status /= 0) then
376  call l4f_category_log(qcspa%category,l4f_error,"contng error status="//t2c(status))
377  !call raise_error()
378 end if
379 
380 end subroutine qcspatri
381 
382 
384 subroutine qcspaalloc(qcspa)
385  ! pseudo costruttore con distruttore automatico
386 
387 type(qcspatype),intent(in out) :: qcspa
388 
389 integer :: istatt
390 integer :: sh(5)
391 
392 ! se ti sei dimenticato di deallocare ci penso io
393 call qcspadealloc(qcspa)
394 
395 
396 !!$if (associated (qcspa%v7d%dativar%r )) then
397 !!$ nv=size(qcspa%v7d%dativar%r)
398 !!$
399 !!$ allocate(qcspa%valminr(nv),stat=istat)
400 !!$ istatt=istatt+istat
401 !!$ allocate(qcspa%valmaxr(nv),stat=istat)
402 !!$ istatt=istatt+istat
403 !!$
404 !!$ if (istatt /= 0) ier=1
405 !!$
406 !!$end if
407 
408 if (associated(qcspa%data_id_in))then
409  sh=shape(qcspa%data_id_in)
410  allocate (qcspa%data_id_out(sh(1),sh(2),sh(3),sh(4),sh(5)),stat=istatt)
411  if (istatt /= 0)then
412  call l4f_category_log(qcspa%category,l4f_error,"allocate error")
413  call raise_error("allocate error")
414  else
415  qcspa%data_id_out=imiss
416  end if
417 end if
418 
419 if (associated(qcspa%v7d%ana))then
420  qcspa%ndp=size(qcspa%v7d%ana)
421  qcspa%tri = triangles_new(qcspa%ndp)
422  allocate(qcspa%co(qcspa%ndp))
423 end if
424 
425 end subroutine qcspaalloc
426 
427 
429 subroutine qcspadealloc(qcspa)
430  ! pseudo distruttore
431 
432 type(qcspatype),intent(in out) :: qcspa
433 
434 !!$if ( associated ( qcspa%valminr)) then
435 !!$ deallocate(qcspa%valminr)
436 !!$end if
437 !!$
438 !!$if ( associated ( qcspa%valmaxr)) then
439 !!$ deallocate(qcspa%valmaxr)
440 !!$end if
441 
442 if (associated(qcspa%data_id_out)) then
443  deallocate (qcspa%data_id_out)
444  nullify (qcspa%data_id_out)
445 end if
446 call delete(qcspa%tri)
447 if (associated(qcspa%co)) deallocate(qcspa%co)
448 
449 end subroutine qcspadealloc
450 
451 
453 
454 
455 subroutine qcspadelete(qcspa)
456  ! decostruttore a mezzo
457 type(qcspatype),intent(in out) :: qcspa
458 
459 call qcspadealloc(qcspa)
460 
461 call delete(qcspa%qccli)
462 
463 qcspa%ndp=imiss
464 
465 !delete logger
466 call l4f_category_delete(qcspa%category)
467 
468 return
469 end subroutine qcspadelete
470 
471 
474 
475 SUBROUTINE quaconspa (qcspa,timetollerance,noborder,battrinv,battrcli,battrout,&
476  anamask,timemask,levelmask,timerangemask,varmask,networkmask)
477 
478 
479 type(qcspatype),intent(in out) :: qcspa
480 type(timedelta),intent(in) :: timetollerance
481 logical,intent(in),optional :: noborder
482 character (len=10) ,intent(in),optional :: battrinv !< attributo invalidated in input
483 character (len=10) ,intent(in),optional :: battrcli !< attributo con la confidenza climatologica in input
484 character (len=10) ,intent(in),optional :: battrout !< attributo con la confidenza spaziale in output
485 logical ,intent(in),optional :: anamask(:)
486 logical ,intent(in),optional :: timemask(:)
487 logical ,intent(in),optional :: levelmask(:)
488 logical ,intent(in),optional :: timerangemask(:)
489 logical ,intent(in),optional :: varmask(:)
490 logical ,intent(in),optional :: networkmask(:)
491 
492  !REAL(kind=fp_geo) :: lat,lon
493  !local
494 integer :: indbattrinv,indbattrcli,indbattrout
495 logical :: anamaskl(size(qcspa%v7d%ana)), timemaskl(size(qcspa%v7d%time)), levelmaskl(size(qcspa%v7d%level)), &
496  timerangemaskl(size(qcspa%v7d%timerange)), varmaskl(size(qcspa%v7d%dativar%r)), networkmaskl(size(qcspa%v7d%network))
497 
498 integer :: indana , indtime ,indlevel ,indtimerange ,inddativarr, indnetwork,indnet
499 integer :: indcana , indctime ,indclevel ,indctimerange ,indcdativarr, indcnetwork
500 real :: datoqui,datola,datila(size(qcspa%v7d%time)),climaquii, climaquif
501  !integer, allocatable :: indcanav(:)

Generated with Doxygen.