libsim Versione 8.0.0

◆ count_distinct_var6d()

integer function 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 586 del file volgrid6d_var_class.F90.

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

Generated with Doxygen.