! Example program to reduce to one the dimensions of levels and time without loss of data
18 PROGRAM v7ddballe_move_and_collapse
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
37 integer :: category,ier
40 call l4f_launcher(a_name,a_name_force=
"ensascii")
46 category=l4f_category_get(trim(a_name)//
".main")
47 call l4f_category_log(category,l4f_info,
"start")
51 CALL
init(v7d_in,filename=filein,file=.true.)
54 CALL
init(v7d_out,filename=fileout,write=.true.,wipe=.true.,file=.true.)
60 do indana=1,
size(v7d_in%vol7d%ana)
61 do indtime=2,
size(v7d_in%vol7d%time)
62 do indlevel=2,
size(v7d_in%vol7d%level)
63 do indtimerange=1,
size(v7d_in%vol7d%timerange)
64 do indnetwork=1,
size(v7d_in%vol7d%network)
68 indtimerangenew=indtimerange
69 indnetworknew=indnetwork
71 call move_datac(v7d_in%vol7d,&
72 indana,indtime,indlevel,indtimerange,indnetwork,&
73 indananew,indtimenew,indlevelnew,indtimerangenew,indnetworknew)
82 do indlevel=2,
size(v7d_in%vol7d%level)
83 call
init(v7d_in%vol7d%level(indlevel))
86 do indtime=2,
size(v7d_in%vol7d%time)
87 call
init(v7d_in%vol7d%time(indtime))
91 call vol7d_copy(v7d_in%vol7d,v7d_out%vol7d,miss=.true.)
95 call
init(v7d_out%vol7d%level(1))
96 call
init(v7d_out%vol7d%time(1))
103 call l4f_category_log(category,l4f_info,
"end")
104 call l4f_category_delete(category)
107 END PROGRAM v7ddballe_move_and_collapse