libsim  Versione7.2.3

◆ 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 498 del file vol7d_dballe_class.F03.

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

Generated with Doxygen.