libsim Versione 7.2.1

◆ 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 345 del file modqcspa.F90.

351 latin1_l = 60.d0
352 latin2_l = 30.d0
353 projection_center_flag_l=1
354end if
355
356geoproj = geo_proj_new(proj_type_l, lov_l, zone, xoff, yoff, &
357 longitude_south_pole, latitude_south_pole, angle_rotation, &
358 longitude_stretch_pole, latitude_stretch_pole, stretch_factor, &
359 latin1_l, latin2_l, lad, projection_center_flag_l, &
360 ellips_smaj_axis, ellips_flatt, ellips_type)
361
362call getval(qcspa%v7d%ana%coord, lon, lat)
363
364!print*,"size",size(lon),size(lat)
365!print*,lat,lon
366call 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
371status = triangles_compute(qcspa%co,qcspa%tri)
372
373!qcspa%nt,qcspa%ipt,qcspa%nl,qcspa%ipl)
374
375if (status /= 0) then
376 call l4f_category_log(qcspa%category,l4f_error,"contng error status="//t2c(status))
377 !call raise_error()
378end if
379
380end subroutine qcspatri
381
382
384subroutine qcspaalloc(qcspa)
385 ! pseudo costruttore con distruttore automatico
386
387type(qcspatype),intent(in out) :: qcspa
388
389integer :: istatt
390integer :: sh(5)
391
392! se ti sei dimenticato di deallocare ci penso io
393call 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
408if (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
417end if
418
419if (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))
423end if
424
425end subroutine qcspaalloc
426
427
429subroutine qcspadealloc(qcspa)
430 ! pseudo distruttore
431
432type(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
442if (associated(qcspa%data_id_out)) then
443 deallocate (qcspa%data_id_out)
444 nullify (qcspa%data_id_out)
445end if
446call delete(qcspa%tri)
447if (associated(qcspa%co)) deallocate(qcspa%co)
448
449end subroutine qcspadealloc
450
451
453
454
455subroutine qcspadelete(qcspa)
456 ! decostruttore a mezzo
457type(qcspatype),intent(in out) :: qcspa
458
459call qcspadealloc(qcspa)
460
461call delete(qcspa%qccli)
462
463qcspa%ndp=imiss
464
465!delete logger
466call l4f_category_delete(qcspa%category)
467
468return
469end subroutine qcspadelete
470
471
474
475SUBROUTINE quaconspa (qcspa,timetollerance,noborder,battrinv,battrcli,battrout,&
476 anamask,timemask,levelmask,timerangemask,varmask,networkmask)
477
478
479type(qcspatype),intent(in out) :: qcspa
480type(timedelta),intent(in) :: timetollerance
481logical,intent(in),optional :: noborder
482character (len=10) ,intent(in),optional :: battrinv
483character (len=10) ,intent(in),optional :: battrcli
484character (len=10) ,intent(in),optional :: battrout
485logical ,intent(in),optional :: anamask(:)
486logical ,intent(in),optional :: timemask(:)
487logical ,intent(in),optional :: levelmask(:)
488logical ,intent(in),optional :: timerangemask(:)
489logical ,intent(in),optional :: varmask(:)
490logical ,intent(in),optional :: networkmask(:)
491

Generated with Doxygen.