libsim  Versione8.0.0

◆ 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.

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

Generated with Doxygen.