Il primo volume viene confrontato col secondo; nel secondo volume ovunque i dati confrontati siano coincidenti viene impostato valore mancante.
2503 lfilename=trim(arg)//
".v7d" 2504 if (
index(arg,
'/',back=.true.) > 0) lfilename=lfilename(
index(arg,
'/',back=.true.)+1 : )
2506 if (
present(filename))
then 2507 if (filename /=
"")
then 2512 if (
present(filename_auto))filename_auto=lfilename
2515 inquire(unit=lunit,opened=opened)
2516 if (.not. opened)
then 2523 OPEN(unit=lunit, file=lfilename, form=
'UNFORMATTED', access=
'STREAM')
2524 CALL l4f_log(l4f_info,
'opened: '//trim(lfilename))
2527 if (
associated(this%ana)) nana=
size(this%ana)
2528 if (
associated(this%time)) ntime=
size(this%time)
2529 if (
associated(this%timerange)) ntimerange=
size(this%timerange)
2530 if (
associated(this%level)) nlevel=
size(this%level)
2531 if (
associated(this%network)) nnetwork=
size(this%network)
2533 if (
associated(this%dativar%r)) ndativarr=
size(this%dativar%r)
2534 if (
associated(this%dativar%i)) ndativari=
size(this%dativar%i)
2535 if (
associated(this%dativar%b)) ndativarb=
size(this%dativar%b)
2536 if (
associated(this%dativar%d)) ndativard=
size(this%dativar%d)
2537 if (
associated(this%dativar%c)) ndativarc=
size(this%dativar%c)
2539 if (
associated(this%datiattr%r)) ndatiattrr=
size(this%datiattr%r)
2540 if (
associated(this%datiattr%i)) ndatiattri=
size(this%datiattr%i)
2541 if (
associated(this%datiattr%b)) ndatiattrb=
size(this%datiattr%b)
2542 if (
associated(this%datiattr%d)) ndatiattrd=
size(this%datiattr%d)
2543 if (
associated(this%datiattr%c)) ndatiattrc=
size(this%datiattr%c)
2545 if (
associated(this%dativarattr%r)) ndativarattrr=
size(this%dativarattr%r)
2546 if (
associated(this%dativarattr%i)) ndativarattri=
size(this%dativarattr%i)
2547 if (
associated(this%dativarattr%b)) ndativarattrb=
size(this%dativarattr%b)
2548 if (
associated(this%dativarattr%d)) ndativarattrd=
size(this%dativarattr%d)
2549 if (
associated(this%dativarattr%c)) ndativarattrc=
size(this%dativarattr%c)
2551 if (
associated(this%anavar%r)) nanavarr=
size(this%anavar%r)
2552 if (
associated(this%anavar%i)) nanavari=
size(this%anavar%i)
2553 if (
associated(this%anavar%b)) nanavarb=
size(this%anavar%b)
2554 if (
associated(this%anavar%d)) nanavard=
size(this%anavar%d)
2555 if (
associated(this%anavar%c)) nanavarc=
size(this%anavar%c)
2557 if (
associated(this%anaattr%r)) nanaattrr=
size(this%anaattr%r)
2558 if (
associated(this%anaattr%i)) nanaattri=
size(this%anaattr%i)
2559 if (
associated(this%anaattr%b)) nanaattrb=
size(this%anaattr%b)
2560 if (
associated(this%anaattr%d)) nanaattrd=
size(this%anaattr%d)
2561 if (
associated(this%anaattr%c)) nanaattrc=
size(this%anaattr%c)
2563 if (
associated(this%anavarattr%r)) nanavarattrr=
size(this%anavarattr%r)
2564 if (
associated(this%anavarattr%i)) nanavarattri=
size(this%anavarattr%i)
2565 if (
associated(this%anavarattr%b)) nanavarattrb=
size(this%anavarattr%b)
2566 if (
associated(this%anavarattr%d)) nanavarattrd=
size(this%anavarattr%d)
2567 if (
associated(this%anavarattr%c)) nanavarattrc=
size(this%anavarattr%c)
2569 write(unit=lunit)ldescription
2570 write(unit=lunit)tarray
2573 nana, ntime, ntimerange, nlevel, nnetwork, &
2574 ndativarr, ndativari, ndativarb, ndativard, ndativarc,&
2575 ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc,&
2576 ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc,&
2577 nanavarr, nanavari, nanavarb, nanavard, nanavarc,&
2578 nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc,&
2579 nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc, &
2580 this%time_definition
2587 if (
associated(this%ana))
call write_unit(this%ana, lunit)
2588 if (
associated(this%time))
call write_unit(this%time, lunit)
2589 if (
associated(this%level))
write(unit=lunit)this%level
2590 if (
associated(this%timerange))
write(unit=lunit)this%timerange
2591 if (
associated(this%network))
write(unit=lunit)this%network
2596 if (
associated(this%anavar%r))
write(unit=lunit)this%anavar%r
2597 if (
associated(this%anavar%i))
write(unit=lunit)this%anavar%i
2598 if (
associated(this%anavar%b))
write(unit=lunit)this%anavar%b
2599 if (
associated(this%anavar%d))
write(unit=lunit)this%anavar%d
2600 if (
associated(this%anavar%c))
write(unit=lunit)this%anavar%c
2602 if (
associated(this%anaattr%r))
write(unit=lunit)this%anaattr%r
2603 if (
associated(this%anaattr%i))
write(unit=lunit)this%anaattr%i
2604 if (
associated(this%anaattr%b))
write(unit=lunit)this%anaattr%b
2605 if (
associated(this%anaattr%d))
write(unit=lunit)this%anaattr%d
2606 if (
associated(this%anaattr%c))
write(unit=lunit)this%anaattr%c
2608 if (
associated(this%anavarattr%r))
write(unit=lunit)this%anavarattr%r
2609 if (
associated(this%anavarattr%i))
write(unit=lunit)this%anavarattr%i
2610 if (
associated(this%anavarattr%b))
write(unit=lunit)this%anavarattr%b
2611 if (
associated(this%anavarattr%d))
write(unit=lunit)this%anavarattr%d
2612 if (
associated(this%anavarattr%c))
write(unit=lunit)this%anavarattr%c
2614 if (
associated(this%dativar%r))
write(unit=lunit)this%dativar%r
2615 if (
associated(this%dativar%i))
write(unit=lunit)this%dativar%i
2616 if (
associated(this%dativar%b))
write(unit=lunit)this%dativar%b
2617 if (
associated(this%dativar%d))
write(unit=lunit)this%dativar%d
2618 if (
associated(this%dativar%c))
write(unit=lunit)this%dativar%c
2620 if (
associated(this%datiattr%r))
write(unit=lunit)this%datiattr%r
2621 if (
associated(this%datiattr%i))
write(unit=lunit)this%datiattr%i
2622 if (
associated(this%datiattr%b))
write(unit=lunit)this%datiattr%b
2623 if (
associated(this%datiattr%d))
write(unit=lunit)this%datiattr%d
2624 if (
associated(this%datiattr%c))
write(unit=lunit)this%datiattr%c
2626 if (
associated(this%dativarattr%r))
write(unit=lunit)this%dativarattr%r
2627 if (
associated(this%dativarattr%i))
write(unit=lunit)this%dativarattr%i
2628 if (
associated(this%dativarattr%b))
write(unit=lunit)this%dativarattr%b
2629 if (
associated(this%dativarattr%d))
write(unit=lunit)this%dativarattr%d
2630 if (
associated(this%dativarattr%c))
write(unit=lunit)this%dativarattr%c
2634 if (
associated(this%volanar))
write(unit=lunit)this%volanar
2635 if (
associated(this%volanaattrr))
write(unit=lunit)this%volanaattrr
2636 if (
associated(this%voldatir))
write(unit=lunit)this%voldatir
2637 if (
associated(this%voldatiattrr))
write(unit=lunit)this%voldatiattrr
2639 if (
associated(this%volanai))
write(unit=lunit)this%volanai
2640 if (
associated(this%volanaattri))
write(unit=lunit)this%volanaattri
2641 if (
associated(this%voldatii))
write(unit=lunit)this%voldatii
2642 if (
associated(this%voldatiattri))
write(unit=lunit)this%voldatiattri
2644 if (
associated(this%volanab))
write(unit=lunit)this%volanab
2645 if (
associated(this%volanaattrb))
write(unit=lunit)this%volanaattrb
2646 if (
associated(this%voldatib))
write(unit=lunit)this%voldatib
2647 if (
associated(this%voldatiattrb))
write(unit=lunit)this%voldatiattrb
2649 if (
associated(this%volanad))
write(unit=lunit)this%volanad
2650 if (
associated(this%volanaattrd))
write(unit=lunit)this%volanaattrd
2651 if (
associated(this%voldatid))
write(unit=lunit)this%voldatid
2652 if (
associated(this%voldatiattrd))
write(unit=lunit)this%voldatiattrd
2654 if (
associated(this%volanac))
write(unit=lunit)this%volanac
2655 if (
associated(this%volanaattrc))
write(unit=lunit)this%volanaattrc
2656 if (
associated(this%voldatic))
write(unit=lunit)this%voldatic
2657 if (
associated(this%voldatiattrc))
write(unit=lunit)this%voldatiattrc
2659 if (.not.
present(unit))
close(unit=lunit)
2661 end subroutine vol7d_write_on_file
2672 subroutine vol7d_read_from_file (this,unit,filename,description,tarray,filename_auto)
2674 TYPE(vol7d),
INTENT(OUT) :: this
2675 integer,
intent(inout),
optional :: unit
2676 character(len=*),
INTENT(in),
optional :: filename
2677 character(len=*),
intent(out),
optional :: filename_auto
2678 character(len=*),
INTENT(out),
optional :: description
2679 integer,
intent(out),
optional :: tarray(8)
2682 integer :: nana, ntime, ntimerange, nlevel, nnetwork, &
2683 ndativarr, ndativari, ndativarb, ndativard, ndativarc,&
2684 ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc,&
2685 ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc,&
2686 nanavarr, nanavari, nanavarb, nanavard, nanavarc,&
2687 nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc,&
2688 nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc
2690 character(len=254) :: ldescription,lfilename,arg
2691 integer :: ltarray(8),lunit,ios
2692 logical :: opened,exist
2697 if (.not.
present(unit))
then 2708 lfilename=trim(arg)//
".v7d" 2709 if (
index(arg,
'/',back=.true.) > 0) lfilename=lfilename(
index(arg,
'/',back=.true.)+1 : )
2711 if (
present(filename))
then 2712 if (filename /=
"")
then 2717 if (
present(filename_auto))filename_auto=lfilename
2720 inquire(unit=lunit,opened=opened)
2721 IF (.NOT. opened)
THEN 2722 inquire(file=lfilename,exist=exist)
2723 IF (.NOT.exist)
THEN 2724 CALL l4f_log(l4f_fatal, &
2725 'in vol7d_read_from_file, file does not exists, cannot open')
2726 CALL raise_fatal_error()
2728 OPEN(unit=lunit, file=lfilename, form=
'UNFORMATTED', access=
'STREAM', &
2729 status=
'OLD', action=
'READ')
2730 CALL l4f_log(l4f_info,
'opened: '//trim(lfilename))
2735 read(unit=lunit,iostat=ios)ldescription
2738 call vol7d_alloc (this)
2739 call vol7d_alloc_vol (this)
2740 if (
present(description))description=ldescription
2741 if (
present(tarray))tarray=ltarray
2742 if (.not.
present(unit))
close(unit=lunit)
2745 read(unit=lunit)ltarray
2747 CALL l4f_log(l4f_info,
'Reading vol7d from file')
2748 CALL l4f_log(l4f_info,
'description: '//trim(ldescription))
2749 CALL l4f_log(l4f_info,
'written on '//trim(to_char(ltarray(1)))//
' '// &
2750 trim(to_char(ltarray(2)))//
' '//trim(to_char(ltarray(3))))
2752 if (
present(description))description=ldescription
2753 if (
present(tarray))tarray=ltarray
2756 nana, ntime, ntimerange, nlevel, nnetwork, &
2757 ndativarr, ndativari, ndativarb, ndativard, ndativarc,&
2758 ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc,&
2759 ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc,&
2760 nanavarr, nanavari, nanavarb, nanavard, nanavarc,&
2761 nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc,&
2762 nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc, &
2763 this%time_definition
2765 call vol7d_alloc (this, &
2766 nana=nana, ntime=ntime, ntimerange=ntimerange, nlevel=nlevel, nnetwork=nnetwork,&
2767 ndativarr=ndativarr, ndativari=ndativari, ndativarb=ndativarb,&
2768 ndativard=ndativard, ndativarc=ndativarc,&
2769 ndatiattrr=ndatiattrr, ndatiattri=ndatiattri, ndatiattrb=ndatiattrb,&
2770 ndatiattrd=ndatiattrd, ndatiattrc=ndatiattrc,&
2771 ndativarattrr=ndativarattrr, ndativarattri=ndativarattri, ndativarattrb=ndativarattrb, &
2772 ndativarattrd=ndativarattrd, ndativarattrc=ndativarattrc,&
2773 nanavarr=nanavarr, nanavari=nanavari, nanavarb=nanavarb, &
2774 nanavard=nanavard, nanavarc=nanavarc,&
2775 nanaattrr=nanaattrr, nanaattri=nanaattri, nanaattrb=nanaattrb,&
2776 nanaattrd=nanaattrd, nanaattrc=nanaattrc,&
2777 nanavarattrr=nanavarattrr, nanavarattri=nanavarattri, nanavarattrb=nanavarattrb, &
2778 nanavarattrd=nanavarattrd, nanavarattrc=nanavarattrc)
2781 if (
associated(this%ana))
call read_unit(this%ana, lunit)
2782 if (
associated(this%time))
call read_unit(this%time, lunit)
2783 if (
associated(this%level))
read(unit=lunit)this%level
2784 if (
associated(this%timerange))
read(unit=lunit)this%timerange
2785 if (
associated(this%network))
read(unit=lunit)this%network
2787 if (
associated(this%anavar%r))
read(unit=lunit)this%anavar%r
2788 if (
associated(this%anavar%i))
read(unit=lunit)this%anavar%i
2789 if (
associated(this%anavar%b))
read(unit=lunit)this%anavar%b
2790 if (
associated(this%anavar%d))
read(unit=lunit)this%anavar%d
2791 if (
associated(this%anavar%c))
read(unit=lunit)this%anavar%c
2793 if (
associated(this%anaattr%r))
read(unit=lunit)this%anaattr%r
2794 if (
associated(this%anaattr%i))
read(unit=lunit)this%anaattr%i
2795 if (
associated(this%anaattr%b))
read(unit=lunit)this%anaattr%b
2796 if (
associated(this%anaattr%d))
read(unit=lunit)this%anaattr%d
2797 if (
associated(this%anaattr%c))
read(unit=lunit)this%anaattr%c
2799 if (
associated(this%anavarattr%r))
read(unit=lunit)this%anavarattr%r
2800 if (
associated(this%anavarattr%i))
read(unit=lunit)this%anavarattr%i
2801 if (
associated(this%anavarattr%b))
read(unit=lunit)this%anavarattr%b
2802 if (
associated(this%anavarattr%d))
read(unit=lunit)this%anavarattr%d
2803 if (
associated(this%anavarattr%c))
read(unit=lunit)this%anavarattr%c
2805 if (
associated(this%dativar%r))
read(unit=lunit)this%dativar%r
2806 if (
associated(this%dativar%i))
read(unit=lunit)this%dativar%i
2807 if (
associated(this%dativar%b))
read(unit=lunit)this%dativar%b
2808 if (
associated(this%dativar%d))
read(unit=lunit)this%dativar%d
2809 if (
associated(this%dativar%c))
read(unit=lunit)this%dativar%c
2811 if (
associated(this%datiattr%r))
read(unit=lunit)this%datiattr%r
2812 if (
associated(this%datiattr%i))
read(unit=lunit)this%datiattr%i
2813 if (
associated(this%datiattr%b))
read(unit=lunit)this%datiattr%b
2814 if (
associated(this%datiattr%d))
read(unit=lunit)this%datiattr%d
2815 if (
associated(this%datiattr%c))
read(unit=lunit)this%datiattr%c
2817 if (
associated(this%dativarattr%r))
read(unit=lunit)this%dativarattr%r
2818 if (
associated(this%dativarattr%i))
read(unit=lunit)this%dativarattr%i
2819 if (
associated(this%dativarattr%b))
read(unit=lunit)this%dativarattr%b
2820 if (
associated(this%dativarattr%d))
read(unit=lunit)this%dativarattr%d
2821 if (
associated(this%dativarattr%c))
read(unit=lunit)this%dativarattr%c
2823 call vol7d_alloc_vol (this)
2827 if (
associated(this%volanar))
read(unit=lunit)this%volanar
2828 if (
associated(this%volanaattrr))
read(unit=lunit)this%volanaattrr
2829 if (
associated(this%voldatir))
read(unit=lunit)this%voldatir
2830 if (
associated(this%voldatiattrr))
read(unit=lunit)this%voldatiattrr
2832 if (
associated(this%volanai))
read(unit=lunit)this%volanai
2833 if (
associated(this%volanaattri))
read(unit=lunit)this%volanaattri
2834 if (
associated(this%voldatii))
read(unit=lunit)this%voldatii
2835 if (
associated(this%voldatiattri))
read(unit=lunit)this%voldatiattri
2837 if (
associated(this%volanab))
read(unit=lunit)this%volanab
2838 if (
associated(this%volanaattrb))
read(unit=lunit)this%volanaattrb
2839 if (
associated(this%voldatib))
read(unit=lunit)this%voldatib
2840 if (
associated(this%voldatiattrb))
read(unit=lunit)this%voldatiattrb
2842 if (
associated(this%volanad))
read(unit=lunit)this%volanad
2843 if (
associated(this%volanaattrd))
read(unit=lunit)this%volanaattrd
2844 if (
associated(this%voldatid))
read(unit=lunit)this%voldatid
2845 if (
associated(this%voldatiattrd))
read(unit=lunit)this%voldatiattrd
2847 if (
associated(this%volanac))
read(unit=lunit)this%volanac
2848 if (
associated(this%volanaattrc))
read(unit=lunit)this%volanaattrc
2849 if (
associated(this%voldatic))
read(unit=lunit)this%voldatic
2850 if (
associated(this%voldatiattrc))
read(unit=lunit)this%voldatiattrc
2852 if (.not.
present(unit))
close(unit=lunit)
2854 end subroutine vol7d_read_from_file
2858 elemental doubleprecision function doubledatd(voldat,var)
2859 doubleprecision,
intent(in) :: voldat
2860 type(vol7d_var),
intent(in) :: var
2864 end function doubledatd
2867 elemental doubleprecision function doubledatr(voldat,var)
2868 real,
intent(in) :: voldat
2869 type(vol7d_var),
intent(in) :: var
2871 if (c_e(voldat))
then 2872 doubledatr=dble(voldat)
2877 end function doubledatr
2880 elemental doubleprecision function doubledati(voldat,var)
2881 integer,
intent(in) :: voldat
2882 type(vol7d_var),
intent(in) :: var
2884 if (c_e(voldat))
then 2885 if (c_e(var%scalefactor))
then 2886 doubledati=dble(voldat)/10.d0**var%scalefactor
2888 doubledati=dble(voldat)
2894 end function doubledati
2897 elemental doubleprecision function doubledatb(voldat,var)
2898 integer(kind=int_b),
intent(in) :: voldat
2899 type(vol7d_var),
intent(in) :: var
2901 if (c_e(voldat))
then 2902 if (c_e(var%scalefactor))
then 2903 doubledatb=dble(voldat)/10.d0**var%scalefactor
2905 doubledatb=dble(voldat)
2911 end function doubledatb
2914 elemental doubleprecision function doubledatc(voldat,var)
2915 CHARACTER(len=vol7d_cdatalen),
intent(in) :: voldat
2916 type(vol7d_var),
intent(in) :: var
2918 doubledatc = c2d(voldat)
2919 if (c_e(doubledatc) .and. c_e(var%scalefactor))
then 2920 doubledatc=doubledatc/10.d0**var%scalefactor
2923 end function doubledatc
2927 elemental integer function integerdatd(voldat,var)
2928 doubleprecision,
intent(in) :: voldat
2929 type(vol7d_var),
intent(in) :: var
2931 if (c_e(voldat))
then 2932 if (c_e(var%scalefactor))
then 2933 integerdatd=nint(voldat*10d0**var%scalefactor)
2935 integerdatd=nint(voldat)
2941 end function integerdatd
2944 elemental integer function integerdatr(voldat,var)
2945 real,
intent(in) :: voldat
2946 type(vol7d_var),
intent(in) :: var
2948 if (c_e(voldat))
then 2949 if (c_e(var%scalefactor))
then 2950 integerdatr=nint(voldat*10d0**var%scalefactor)
2952 integerdatr=nint(voldat)
2958 end function integerdatr
2961 elemental integer function integerdati(voldat,var)
2962 integer,
intent(in) :: voldat
2963 type(vol7d_var),
intent(in) :: var
2967 end function integerdati
2970 elemental integer function integerdatb(voldat,var)
2971 integer(kind=int_b),
intent(in) :: voldat
2972 type(vol7d_var),
intent(in) :: var
2974 if (c_e(voldat))
then 2980 end function integerdatb
2983 elemental integer function integerdatc(voldat,var)
2984 CHARACTER(len=vol7d_cdatalen),
intent(in) :: voldat
2985 type(vol7d_var),
intent(in) :: var
2987 integerdatc=c2i(voldat)
2989 end function integerdatc
2993 elemental real function realdatd(voldat,var)
2994 doubleprecision,
intent(in) :: voldat
2995 type(vol7d_var),
intent(in) :: var
2997 if (c_e(voldat))
then 2998 realdatd=
real(voldat)
3003 end function realdatd
3006 elemental real function realdatr(voldat,var)
3007 real,
intent(in) :: voldat
3008 type(vol7d_var),
intent(in) :: var
3012 end function realdatr
3015 elemental real function realdati(voldat,var)
3016 integer,
intent(in) :: voldat
3017 type(vol7d_var),
intent(in) :: var
3019 if (c_e(voldat))
then 3020 if (c_e(var%scalefactor))
then 3021 realdati=float(voldat)/10.**var%scalefactor
3023 realdati=float(voldat)
3029 end function realdati
3032 elemental real function realdatb(voldat,var)
3033 integer(kind=int_b),
intent(in) :: voldat
3034 type(vol7d_var),
intent(in) :: var
3036 if (c_e(voldat))
then 3037 if (c_e(var%scalefactor))
then 3038 realdatb=float(voldat)/10**var%scalefactor
3040 realdatb=float(voldat)
3046 end function realdatb
3049 elemental real function realdatc(voldat,var)
3050 CHARACTER(len=vol7d_cdatalen),
intent(in) :: voldat
3051 type(vol7d_var),
intent(in) :: var
3053 realdatc=c2r(voldat)
3054 if (c_e(realdatc) .and. c_e(var%scalefactor))
then 3055 realdatc=realdatc/10.**var%scalefactor
3058 end function realdatc
3066 FUNCTION realanavol(this, var)
RESULT(vol)
3067 TYPE(vol7d),
INTENT(in) :: this
3068 TYPE(vol7d_var),
INTENT(in) :: var
3069 REAL :: vol(SIZE(this%ana),size(this%network))
3071 CHARACTER(len=1) :: dtype
3075 indvar =
index(this%anavar, var, type=dtype)
3077 IF (indvar > 0)
THEN 3080 vol = realdat(this%volanad(:,indvar,:), var)
3082 vol = this%volanar(:,indvar,:)
3084 vol = realdat(this%volanai(:,indvar,:), var)
3086 vol = realdat(this%volanab(:,indvar,:), var)
3088 vol = realdat(this%volanac(:,indvar,:), var)
3096 END FUNCTION realanavol
3104 FUNCTION integeranavol(this, var)
RESULT(vol)
3105 TYPE(vol7d),
INTENT(in) :: this
3106 TYPE(vol7d_var),
INTENT(in) :: var
3107 INTEGER :: vol(SIZE(this%ana),size(this%network))
3109 CHARACTER(len=1) :: dtype
3113 indvar =
index(this%anavar, var, type=dtype)
3115 IF (indvar > 0)
THEN 3118 vol = integerdat(this%volanad(:,indvar,:), var)
3120 vol = integerdat(this%volanar(:,indvar,:), var)
3122 vol = this%volanai(:,indvar,:)
3124 vol = integerdat(this%volanab(:,indvar,:), var)
3126 vol = integerdat(this%volanac(:,indvar,:), var)
3134 END FUNCTION integeranavol
3142 subroutine move_datac (v7d,&
3143 indana,indtime,indlevel,indtimerange,indnetwork,&
3144 indananew,indtimenew,indlevelnew,indtimerangenew,indnetworknew)
3146 TYPE(vol7d),
intent(inout) :: v7d
3148 integer,
intent(in) :: indana,indtime,indlevel,indtimerange,indnetwork
3149 integer,
intent(in) :: indananew,indtimenew,indlevelnew,indtimerangenew,indnetworknew
3150 integer :: inddativar,inddativarattr
3153 do inddativar=1,
size(v7d%dativar%c)
3155 if (c_e(v7d%voldatic(indana,indtime,indlevel,indtimerange,inddativar,indnetwork)) .and. &
3156 .not. c_e(v7d%voldatic(indananew,indtimenew,indlevelnew,indtimerangenew,inddativar,indnetworknew))&
3161 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativar,indnetworknew) = &
3163 (indana,indtime,indlevel,indtimerange,inddativar,indnetwork)
3167 if (
associated (v7d%dativarattr%i))
then 3168 inddativarattr =
index(v7d%dativarattr%i,v7d%dativar%c(inddativar))
3169 if (inddativarattr > 0 )
then 3171 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativarattr,indnetworknew,:) = &
3173 (indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,:)
3177 if (
associated (v7d%dativarattr%r))
then 3178 inddativarattr =
index(v7d%dativarattr%r,v7d%dativar%c(inddativar))
3179 if (inddativarattr > 0 )
then 3181 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativarattr,indnetworknew,:) = &
3183 (indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,:)
3187 if (
associated (v7d%dativarattr%d))
then 3188 inddativarattr =
index(v7d%dativarattr%d,v7d%dativar%c(inddativar))
3189 if (inddativarattr > 0 )
then 3191 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativarattr,indnetworknew,:) = &
3193 (indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,:)
3197 if (
associated (v7d%dativarattr%b))
then 3198 inddativarattr =
index(v7d%dativarattr%b,v7d%dativar%c(inddativar))
3199 if (inddativarattr > 0 )
then 3201 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativarattr,indnetworknew,:) = &
3203 (indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,:)
3207 if (
associated (v7d%dativarattr%c))
then 3208 inddativarattr =
index(v7d%dativarattr%c,v7d%dativar%c(inddativar))
3209 if (inddativarattr > 0 )
then 3211 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativarattr,indnetworknew,:) = &
3213 (indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,:)
3221 end subroutine move_datac
3228 subroutine move_datar (v7d,&
3229 indana,indtime,indlevel,indtimerange,indnetwork,&
3230 indananew,indtimenew,indlevelnew,indtimerangenew,indnetworknew)
3232 TYPE(vol7d),
intent(inout) :: v7d
3234 integer,
intent(in) :: indana,indtime,indlevel,indtimerange,indnetwork
3235 integer,
intent(in) :: indananew,indtimenew,indlevelnew,indtimerangenew,indnetworknew
3236 integer :: inddativar,inddativarattr
3239 do inddativar=1,
size(v7d%dativar%r)
3241 if (c_e(v7d%voldatir(indana,indtime,indlevel,indtimerange,inddativar,indnetwork)) .and. &
3242 .not. c_e(v7d%voldatir(indananew,indtimenew,indlevelnew,indtimerangenew,inddativar,indnetworknew))&
3247 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativar,indnetworknew) = &
3249 (indana,indtime,indlevel,indtimerange,inddativar,indnetwork)
3253 if (
associated (v7d%dativarattr%i))
then 3254 inddativarattr =
index(v7d%dativarattr%i,v7d%dativar%r(inddativar))
3255 if (inddativarattr > 0 )
then 3257 (indananew,indtimenew,indlevelnew,indtimerangenew,inddativarattr,indnetworknew,:) = &