libsim  Versione6.3.0

◆ vol7d_dballe_import_old()

subroutine vol7d_dballe_class::vol7d_dballe_import_old ( type(vol7d_dballe), intent(inout)  this,
character(len=*), dimension(:), intent(in), optional  var,
type(vol7d_network), intent(in), optional  network,
type(geo_coord), intent(inout), optional  coordmin,
type(geo_coord), intent(inout), optional  coordmax,
type(datetime), intent(in), optional  timei,
type(datetime), intent(in), optional  timef,
type(vol7d_level), intent(in), optional  level,
type(vol7d_timerange), intent(in), optional  timerange,
type(vol7d_network), intent(in), optional  set_network,
character(len=*), dimension(:), intent(in), optional  attr,
character(len=*), dimension(:), intent(in), optional  anavar,
character(len=*), dimension(:), intent(in), optional  anaattr,
character(len=*), dimension(:), intent(in), optional  varkind,
character(len=*), dimension(:), intent(in), optional  attrkind,
character(len=*), dimension(:), intent(in), optional  anavarkind,
character(len=*), dimension(:), intent(in), optional  anaattrkind,
logical, intent(in), optional  anaonly,
logical, intent(in), optional  dataonly,
type(vol7d_ana), intent(inout), optional  ana 
)
private

import da DB-all.e

Parametri
[in,out]thisoggetto vol7d_dballe

Definizione alla linea 507 del file vol7d_dballe_class.F03.

507 mydbacoordmax=dbacoord()
508 if (present(coordmax)) mydbacoordmax%geo_coord=coordmax
509 mydbaana=dbaana()
510 if (present(ana)) mydbaana%vol7d_ana=ana
511 mydatetimemin=dbadatetime()
512 if (present(timei)) mydatetimemin%datetime=timei
513 mydatetimemax=dbadatetime()
514 if (present(timef)) mydatetimemax%datetime=timef
515 mydbatimerange=dbatimerange()
516 if (present(timerange)) mydbatimerange%vol7d_timerange=timerange
517 mydbalevel=dbalevel()
518 if (present(level)) mydbalevel%vol7d_level=level
519 mydbanetwork=dbanetwork()
520 if (present(network)) mydbanetwork%vol7d_network=network
521 
522 !!
523 !! here we have options ready for filter
524 !!
525 filter=dbafilter(coordmin=mydbacoordmin,coordmax=mydbacoordmax,ana=mydbaana, &
526  datetimemin=mydatetimemin,datetimemax=mydatetimemax, &
527  timerange=mydbatimerange,level=mydbalevel,network=mydbanetwork,query=query,&
528  vars=vars,starvars=starvars,anavars=anavars,anastarvars=anastarvars,&
529  dataonly=dataonly,anaonly=anaonly)
530 !!$ print *, "filter:"
531 !!$ call filter%display()
532 
533 call import(this,filter,set_network)
534 
535 
536 END SUBROUTINE vol7d_dballe_import_old
537 
538 
539 
541 subroutine vol7d_dballe_import(this,filter,set_network)
542 
543 TYPE(vol7d_dballe),INTENT(inout) :: this
544 type(dbafilter),INTENT(in) :: filter
545 TYPE(vol7d_network),INTENT(in),OPTIONAL :: set_network
546 
547 TYPE(vol7d) :: vol7dtmp
548 type(dbametaanddata),allocatable :: metaanddatav(:)
549 type(dbafilter) :: myfilter
550 
551 CALL l4f_category_log(this%category,l4f_debug,'start import vol7d_dballe')
552 
553 if ( .not. filter%dataonly) then
554  ! ----------------> constant station data
555  myfilter=dbafilter(filter=filter,contextana=.true.,query=cmiss)
556 ! ! set filter
557 ! call this%handle%set(filter=myfilter)
558  ! estrude the data
559  CALL l4f_category_log(this%category,l4f_debug,'start import vol7d_dballe ingest for constant station data')
560 ! call this%handle%ingest(filter=myfilter)
561  call this%handle%ingest(metaanddatav,filter=myfilter)
562  CALL l4f_category_log(this%category,l4f_debug,'end import vol7d_dballe ingest')
563  CALL l4f_category_log(this%category,l4f_debug,'start import vol7d_dballe dba2v7d')
564  call dba2v7d(this%vol7d, metaanddatav,this%time_definition,set_network)
565  CALL l4f_category_log(this%category,l4f_debug,'end import vol7d_dballe dba2v7d')
566 
567  deallocate (metaanddatav)
568 
569 else
570  ! empty volume
571  call init(this%vol7d)
572  call vol7d_alloc(this%vol7d)
573  call vol7d_alloc_vol(this%vol7d)
574 end if
575  ! ----------------> constant station data end
576 
577 if ( .not. filter%anaonly) then
578  ! ----------------> working on data
579  myfilter=dbafilter(filter=filter,contextana=.false.)
580 ! ! set filter
581 ! call this%handle%set(filter=myfilter)
582  ! estrude the data
583 
584  CALL l4f_category_log(this%category,l4f_debug,'start import vol7d_dballe ingest for station data')
585 ! call this%handle%ingest(filter=myfilter)
586  call this%handle%ingest(metaanddatav,filter=myfilter)
587  CALL l4f_category_log(this%category,l4f_debug,'end import vol7d_dballe ingest')
588  CALL l4f_category_log(this%category,l4f_debug,'start import vol7d_dballe dba2v7d')
589  call dba2v7d(vol7dtmp,metaanddatav,this%time_definition,set_network)
590  CALL l4f_category_log(this%category,l4f_debug,'end import vol7d_dballe dba2v7d')
591 
592  deallocate (metaanddatav)
593 
594  CALL vol7d_merge(this%vol7d, vol7dtmp, sort=.true.) ! Smart merge
595 !!$else
596 !!$ ! should we sort separately in case no merge is done?
597 !!$ CALL vol7d_smart_sort(this%vol7d, lsort_time=.TRUE., lsort_timerange=.TRUE., lsort_level=.TRUE.)
598 end if
599 
600 call vol7d_dballe_set_var_du(this%vol7d)
601 
602 
603 #ifdef NONE
604 
605 !!$if (lattr) then
606 !!$
607 !!$ allocate (this%data_id( nana, ntime, nlevel, ntimerange, nnetwork),stat=istat)
608 !!$ if (istat/= 0) THEN
609 !!$ CALL l4f_category_log(this%category,L4F_ERROR,'cannot allocate ' &
610 !!$ //TRIM(to_char(nana*ntime*nlevel*ntimerange*nnetwork))//' data_id elements')
611 !!$ CALL raise_fatal_error()
612 !!$
613 !!$ ENDIF
614 !!$
615 !!$ this%data_id=DBA_MVI
616 !!$
617 !!$else
618 
619 nullify(this%data_id)
620 
621 !!$end if
622 
623 
624  !memorizzo data_id
625 #ifdef DEBUG
626  !CALL l4f_category_log(this%category,L4F_DEBUG,"data_id: "//trim(to_char(buffer(i)%data_id)))
627 #endif
628 
629 this%data_id(indana,indtime,indlevel,indtimerange,indnetwork)=buffer(i)%data_id
630 
631 
632 ier=idba_set(this%handle,"*context_id",buffer(i)%data_id)
633 ier=idba_set(this%handle,"*var_related",buffer(i)%btable)
634  !per ogni dato ora lavoro sugli attributi
635 ier=idba_set(this%handle, "*varlist",starvarlist )
636 ier=idba_voglioancora(this%handle,nn)
637  !print*,buffer(i)%btable," numero attributi",nn
638 
639 #endif
640 
641 CALL l4f_category_log(this%category,l4f_debug,'end import vol7d_dballe')
642 
643 end subroutine vol7d_dballe_import
644 
645 
646 
648 
649 SUBROUTINE vol7d_dballe_delete(this, preserveidbhandle)
650 TYPE(vol7d_dballe) :: this
651 logical,intent(in), optional :: preserveidbhandle
652 
653 call this%handle%delete()
654 
655 if (.not. optio_log(preserveidbhandle)) call this%idbhandle%delete()
656 
657 !!$if (associated(this%data_id)) then
658 !!$ deallocate (this%data_id)
659 !!$ nullify(this%data_id)
660 !!$end if
661 
662 CALL delete(this%vol7d)
663 
664  !chiudo il logger
665 call l4f_category_delete(this%category)
666  !ier=l4f_fini()
667 
668 END SUBROUTINE vol7d_dballe_delete
669 
670 
671 
673 !subroutine dba2v7d(this,metaanddatav,vars,starvars,anavars,anastarvars,time_definition, set_network)
674 subroutine dba2v7d(this,metaanddatav,time_definition, set_network)
675 
676 type(dbametaanddata),intent(inout) :: metaanddatav(:) ! change value in datetime reguard timedefinition
677 TYPE(vol7d),INTENT(inout) :: this
678 integer,INTENT(in),OPTIONAL :: time_definition
679 TYPE(vol7d_network),INTENT(in),OPTIONAL :: set_network
680 type(dbadcv) :: vars
681 type(dbadcv) :: starvars
682 type(dbadcv) :: anavars
683 type(dbadcv) :: anastarvars
684 
685 
686 LOGICAL :: ldegnet
687 integer :: indana,indtime,indlevel,indtimerange,inddativar,indnetwork,indattrvar
688 
689 integer :: nana,ntime,ntimerange,nlevel,nnetwork
690 
691 INTEGER :: i, j, k, n
692 integer :: inddativarattr
693 integer :: nanavar, indanavar,indanavarattr,nanavarattr
694 
695 integer :: ndativarr, ndativari, ndativarb, ndativard, ndativarc
696 integer :: ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc
697 integer :: ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc
698 
699 integer :: nanavarr, nanavari, nanavarb, nanavard, nanavarc
700 integer :: nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc
701 integer :: nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc
702 
703 integer :: ndativar,ndativarattr
704 
705 type(characterlist) :: dativarl,dativarattrl,anavarl,anavarattrl
706 
707 character(len=listcharmaxlen),allocatable :: dativara(:),dativarattra(:),anavara(:),anavarattra(:)
708 logical :: status
709 integer :: ltime_definition
710 
711 type(datetime),allocatable :: tmptime(:)
712 type(vol7d_network),allocatable :: tmpnetwork(:)
713 type(vol7d_level),allocatable :: tmplevel(:)
714 type(vol7d_timerange),allocatable :: tmptimerange(:)
715 type(vol7d_ana),allocatable :: tmpana(:)
716 
717 
718 ltime_definition=optio_i(time_definition)
719 if (.not. c_e(ltime_definition)) ltime_definition = 1
720 
721  ! take in account time_definition
722 if (ltime_definition == 0) then
723  do i =1,size(metaanddatav)
724  metaanddatav(i)%metadata%datetime%datetime = &
725  metaanddatav(i)%metadata%datetime%datetime - &
726  timedelta_new(sec=metaanddatav(i)%metadata%timerange%vol7d_timerange%p1)
727  end do
728 end if
729 
730 
731 IF (PRESENT(set_network)) THEN
732  if (c_e(set_network)) then
733  ldegnet = .true.
734  else
735  ldegnet = .false.
736  end if
737 ELSE
738  ldegnet = .false.
739 ENDIF
740 
741 
742 
743 !!--------------------------------------------------------------------------
744 !! find vars, starvars, anavars, anastarvars
745 !!
746 
747 ! create lists of all
748  ! data
Distruttori per le 2 classi.
Costruttori per le classi datetime e timedelta.

Generated with Doxygen.