libsim  Versione 7.2.4

◆ count_distinct_var6d()

integer function volgrid6d_var_class::count_distinct_var6d ( type(volgrid6d_var), dimension(:), intent(in)  vect,
logical, dimension(:), intent(in), optional  mask,
logical, intent(in), optional  back 
)
private

conta gli elementi distinti in vect

Definizione alla linea 597 del file volgrid6d_var_class.F90.

598 100 CONTINUE
599 
600 rewind(un)
601 ALLOCATE(conv_fwd(n),stat=stallo)
602 IF (stallo /= 0) THEN
603  CALL l4f_log(l4f_fatal,"allocating memory")
604  CALL raise_fatal_error()
605 ENDIF
606 
607 conv_fwd(:) = vg6d_v7d_var_conv_miss
608 CALL import_var_conv(un, conv_fwd)
609 CLOSE(un)
610 
611 ! backward, bufr to grib
612 un = open_package_file('vargrib2bufr.csv', filetype_data)
613 ! use the same file for now
614 !un = open_package_file('varbufr2grib.csv', filetype_data)
615 n=0
616 DO WHILE(.true.)
617  READ(un,*,END=300)
618  n = n + 1
619 ENDDO
620 
621 300 CONTINUE
622 
623 rewind(un)
624 ALLOCATE(conv_bwd(n),stat=stallo)
625 IF (stallo /= 0) THEN
626  CALL l4f_log(l4f_fatal,"allocating memory")
627  CALL raise_fatal_error()
628 end if
629 
630 conv_bwd(:) = vg6d_v7d_var_conv_miss
631 CALL import_var_conv(un, conv_bwd)
632 DO i = 1, n
633  conv_bwd(i)%c_func%a = 1./conv_bwd(i)%c_func%a
634  conv_bwd(i)%c_func%b = - conv_bwd(i)%c_func%b
635 ENDDO
636 CLOSE(un)
637 
638 CONTAINS
639 
640 SUBROUTINE import_var_conv(un, conv_type)
641 INTEGER, INTENT(in) :: un
642 TYPE(vg6d_v7d_var_conv), INTENT(out) :: conv_type(:)
643 
644 INTEGER :: i
645 TYPE(csv_record) :: csv
646 CHARACTER(len=1024) :: line
647 CHARACTER(len=10) :: btable
648 INTEGER :: centre, category, number, discipline
649 
650 DO i = 1, SIZE(conv_type)
651  READ(un,'(A)',END=200)line
652  CALL init(csv, line)
653  CALL csv_record_getfield(csv, btable)
654  CALL csv_record_getfield(csv) ! skip fields for description and unit,
655  CALL csv_record_getfield(csv) ! they correspond to grib information, not bufr Btable
656  CALL init(conv_type(i)%v7d_var, btable=btable)
657 
658  CALL csv_record_getfield(csv, centre)
659  CALL csv_record_getfield(csv, category)
660  CALL csv_record_getfield(csv, number)
661  CALL csv_record_getfield(csv, discipline)
662  CALL init(conv_type(i)%vg6d_var, centre=centre, category=category, &
663  number=number, discipline=discipline) ! controllare l'ordine
664 
665  CALL csv_record_getfield(csv, conv_type(i)%c_func%a)
666  CALL csv_record_getfield(csv, conv_type(i)%c_func%b)

Generated with Doxygen.