! Example program to reduce to one the dimensions of levels and time without loss of data
18 PROGRAM v7ddballe_move_and_collapse
27 TYPE(vol7d_dballe) :: v7d_in,v7d_out
29 integer :: indana,indtime,indlevel,indtimerange,indnetwork
30 integer :: indananew,indtimenew,indlevelnew,indtimerangenew,indnetworknew
31 integer :: inddativar,inddatiattr,inddativarattr
34 CHARACTER(len=80) :: filein=
"../data/in.bufr",fileout=
"../data/out.bufr" 36 character(len=512):: a_name
38 type(l4f_handle) :: category
41 call l4f_launcher(a_name,a_name_force=
"ensascii")
47 category=l4f_category_get_handle(trim(a_name)//
".main")
48 call l4f_category_log(category,l4f_info,
"start")
52 CALL init(v7d_in,filename=filein,file=.true.)
55 CALL init(v7d_out,filename=fileout,write=.true.,wipe=.true.,file=.true.)
61 do indana=1,
size(v7d_in%vol7d%ana)
62 do indtime=2,
size(v7d_in%vol7d%time)
63 do indlevel=2,
size(v7d_in%vol7d%level)
64 do indtimerange=1,
size(v7d_in%vol7d%timerange)
65 do indnetwork=1,
size(v7d_in%vol7d%network)
69 indtimerangenew=indtimerange
70 indnetworknew=indnetwork
72 call move_datac (v7d_in%vol7d,&
73 indana,indtime,indlevel,indtimerange,indnetwork,&
74 indananew,indtimenew,indlevelnew,indtimerangenew,indnetworknew)
83 do indlevel=2,
size(v7d_in%vol7d%level)
84 call init (v7d_in%vol7d%level(indlevel))
87 do indtime=2,
size(v7d_in%vol7d%time)
88 call init (v7d_in%vol7d%time(indtime))
92 call vol7d_copy(v7d_in%vol7d,v7d_out%vol7d,miss=.true.)
96 call init (v7d_out%vol7d%level(1))
97 call init (v7d_out%vol7d%time(1))
104 call l4f_category_log(category,l4f_info,
"end")
105 call l4f_category_delete(category)
108 END PROGRAM v7ddballe_move_and_collapse