Programma esempio semplice per la elaborazione di file grib. Programma che legge uno ad uno i grid contenuti in un file e li elabora producendo un file di output contenente ancora grib
30 integer :: category,ier
31 character(len=512):: a_name,infile=
'../data/in.grb',outfile=
'out.grb'
36 doubleprecision :: ilon=0.,ilat=30.,flon=30.,flat=60.
37 REAL,
ALLOCATABLE :: field(:,:,:),fieldz(:,:,:)
42 integer :: nx=30,ny=30,component_flag=0
43 doubleprecision :: xmin=0., xmax=30., ymin=30., ymax=60.
44 doubleprecision :: latitude_south_pole=-32.5,longitude_south_pole=10.,angle_rotation=0.
45 character(len=80) :: type=
'regular_ll',trans_type=
'inter',sub_type=
'near'
49 call l4f_launcher(a_name,a_name_force=
"demo4")
55 category=l4f_category_get(a_name//
".main")
57 call
l4f_category_log(category,l4f_info,
"transforming from file:"//trim(infile))
58 call
l4f_category_log(category,l4f_info,
"transforming to file:"//trim(outfile))
59 if(trans_type ==
'inter')
then
61 call
init(griddim_out,&
62 proj_type=type,nx=nx,ny=ny, &
63 xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, component_flag=component_flag, &
64 latitude_south_pole=latitude_south_pole,longitude_south_pole=longitude_south_pole,angle_rotation=angle_rotation, &
65 categoryappend=
"regular_ll")
67 call griddim_unproj(griddim_out)
69 print*,
'grid di interpolazione >>>>>>>>>>>>>>>>>>>>'
74 call
init(trans, trans_type=trans_type,sub_type=sub_type, &
75 ilon=ilon,ilat=ilat,flon=flon,flat=flat,&
76 categoryappend=
"trasformation")
78 ifile = grid_file_id_new(trim(infile),
'r')
79 ofile = grid_file_id_new(trim(outfile),
'w')
83 gaid = grid_id_new(ifile)
84 IF (.NOT.
c_e(gaid))
EXIT
88 call
init(gridinfo,gaid=gaid,categoryappend=
"importato")
91 call
display(gridinfo,namespace=
"")
95 ALLOCATE (field(gridinfo%griddim%dim%nx,gridinfo%griddim%dim%ny,1))
99 call
init(grid_trans, trans, in=gridinfo%griddim,out=griddim_out,categoryappend=
"gridtrasformato")
103 ALLOCATE (fieldz(griddim_out%dim%nx,griddim_out%dim%ny,1))
105 call
compute(grid_trans, field, fieldz)
107 call
delete(gridinfo%griddim)
108 call
copy(griddim_out,gridinfo%griddim,categoryappend=
"clonato")
117 call
display(gridinfo,namespace=
"")
119 call
export(gridinfo%gaid,ofile)
123 deallocate (field,fieldz)
136 call l4f_category_delete(category)