libsim  Versione7.1.6
example_vg6d_7.f90

Programma trasformazione da vol7d a volgrid6d

1 ! Copyright (C) 2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
2 ! authors:
3 ! Davide Cesari <dcesari@arpa.emr.it>
4 ! Paolo Patruno <ppatruno@arpa.emr.it>
5 
6 ! This program is free software; you can redistribute it and/or
7 ! modify it under the terms of the GNU General Public License as
8 ! published by the Free Software Foundation; either version 2 of
9 ! the License, or (at your option) any later version.
10 
11 ! This program is distributed in the hope that it will be useful,
12 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ! GNU General Public License for more details.
15 
16 ! You should have received a copy of the GNU General Public License
17 ! along with this program. If not, see <http://www.gnu.org/licenses/>.
18 program demo7
19 
20 use log4fortran
22 use grid_class
25 USE vol7d_class
26 USE grid_id_class
27 
28 implicit none
29 
30 integer :: category,ier
31 character(len=512):: a_name,filename="out.bufr"
32 type (volgrid6d),pointer :: volgrid(:)
33 type(transform_def) :: trans
34 TYPE(vol7d_dballe) :: v7d_import
35 type(griddim_def) :: griddim_out
36 
37 integer :: nx=40,ny=40,component_flag=0
38 type(grid_id) :: gaid_template
39 doubleprecision :: xmin=0., xmax=30., ymin=30., ymax=60.
40 doubleprecision :: latitude_south_pole=-32.5,longitude_south_pole=10.,angle_rotation=0.
41 character(len=80) :: type='regular_ll',trans_type='inter',sub_type='linear'
42 
43 !questa chiamata prende dal launcher il nome univoco
44 call l4f_launcher(a_name,a_name_force="demo7")
45 
46 !init di log4fortran
47 ier=l4f_init()
48 
49 !imposta a_name
50 category=l4f_category_get(a_name//".main")
51 
52 call l4f_category_log(category,l4f_info,"inizio")
53 
54 allocate (volgrid(1))
55 
56 call init(griddim_out,&
57  proj_type=type,nx=nx,ny=ny, &
58  xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, component_flag=component_flag, &
59  latitude_south_pole=latitude_south_pole,longitude_south_pole=longitude_south_pole,angle_rotation=angle_rotation, &
60  categoryappend=type)
61 
62 call griddim_unproj(griddim_out)
63 
64 print*,'grid di interpolazione >>>>>>>>>>>>>>>>>>>>'
65 call display(griddim_out)
66 
67 gaid_template = grid_id_new(grib_api_template="regular_ll_sfc_grib1")
68 
69 !trasformation object
70 call init(trans, trans_type=trans_type,sub_type=sub_type, categoryappend="trasformation")
71 
72 ! Chiamo il costruttore della classe vol7d_dballe per il mio oggetto in import
73 CALL init(v7d_import,file=.true.,write=.false.,filename=filename,&
74  categoryappend="importBUFR",format="BUFR")
75 
76 call import(v7d_import,var=(/"B12101"/),varkind=(/"r"/))
77 
78 call display(v7d_import%vol7d)
79 
80 call l4f_category_log(category,l4f_info,"trasformato")
81 call transform(trans,griddim_out, vol7d_in=v7d_import%vol7d, &
82  volgrid6d_out=volgrid(1), gaid_template=gaid_template, &
83  categoryappend="trasform->")
84 
85 call l4f_category_log(category,l4f_info,"export to GRIB")
86 CALL export(volgrid, 'examp[le_v7d.grb', gaid_template=gaid_template,&
87  categoryappend="volume scritto")
88 
89 if (associated(volgrid)) call delete(volgrid)
90 
91 call l4f_category_log(category,l4f_info,"terminato")
92 
93 call delete(v7d_import)
94 
95 !chiudo il logger
96 call l4f_category_delete(category)
97 ier=l4f_fini()
98 
99 end program demo7

Generated with Doxygen.