libsim  Versione 7.1.6

◆ 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 591 del file volgrid6d_var_class.F90.

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

Generated with Doxygen.