libsim Versione 8.0.0
esempio_qc_convert.f90

Programma esempio semplice per la scrittura su file di un volume vol7d.

Programma esempio semplice per la scrittura su file di un volume vol7d Programma che scrive su file un volume vol7d letto da una serie di file ASCII. Questo programma scrive i dati del clima che poi verranno letti da modqccli

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/>.
18program leggi
19
20!legge i dati alla Pavan e li mette unformatted
21
22
25USE modqccli
26USE io_units
27
28IMPLICIT NONE
29
30!INTEGER(kind=int_b) :: clima(area,altezza,mese,per)
31
32!real :: clima(9,12,10,3,3,1)
33
34integer,parameter :: cli_nsuperarea=3
35
36character(len=2) :: minuti(3)
37character(len=1) :: area(3)
38integer :: iarea,iper
39character(len=80) ::filename
40!REAL, PARAMETER :: rmiss = HUGE(1.0)
41
42
43integer :: nana, ntime ,nlevel, ndativarr, nnetwork !,nanavari
44integer :: iana, itime, ilevel, itimerange, idativarr, inetwork
45integer,parameter :: ntimerange=3 ,nperc=9
46TYPE(vol7d) :: v7d
47TYPE(vol7d_dballe) :: v7d_dballe
48!TYPE(vol7d_ana) :: ana(cli_nsuperarea)
49TYPE(datetime) :: time
50TYPE(vol7d_level) :: level(cli_nlevel)
51TYPE(vol7d_timerange) :: timerange(ntimerange)
52TYPE(vol7d_network) :: network
53TYPE(vol7d_var) :: dativar,anavar
54CHARACTER(len=vol7d_ana_lenident) :: ident
55REAL(kind=fp_geo) :: lat,lon
56!integer :: thres_quota(11) = (/-100,100,250,500,750,1000,1250,1500,1750,2000,2250/)
57!integer :: livello(10) = (/50,175,375,625,875,1125,1375,1625,1875,2125/)
58!integer :: livello1(10) = (/-100,100,250,500,750,1000,1250,1500,1750,2000/)
59!integer :: livello2(10) = (/100,250,500,750,1000,1250,1500,1750,2000,2250/)
60integer :: scadenze(ntimerange) = (/900,1800,3600/)
61real :: dato
62integer :: iunit=1
63integer :: ier
64type(l4f_handle) :: category
65character(len=512):: a_name
66!questa chiamata prende dal launcher il nome univoco
67call l4f_launcher(a_name,a_name_force="qc_convert")
68
69!init di log4fortran
70ier=l4f_init()
71
72!imposta a_name
73category=l4f_category_get_handle(a_name//".main")
74
75call l4f_category_log(category,l4f_info,"inizio")
76
77
78CALL init(v7d)
79
80nana=nperc*cli_nsuperarea
81ntime=12
82
83nlevel=cli_nlevel
84nnetwork=1
85ndativarr=1
86!nanavari=1
87
88call vol7d_alloc (v7d, &
89 nana=nana, ntime=ntime, ntimerange=ntimerange, &
90 nlevel=nlevel, nnetwork=nnetwork, &
91 ndativarr=ndativarr)
92!, nanavari=nanavari)
93
94call vol7d_alloc_vol (v7d,ini=.true.)
95
96
97area(1)="e"
98area(2)="c"
99area(3)="o"
100minuti(1)="15"
101minuti(2)="30"
102minuti(3)="60"
103
104
105inetwork=1
106idativarr=1
107
108call init(v7d%network(inetwork), 'climat')
109call init(v7d%dativar%r(idativarr), btable="B13011")
110!call init(v7d%anavar%i(1), btable="B07001")
111call cli_level_generate(v7d%level)
112
113
114do iarea = 1, cli_nsuperarea
115 do ilevel = 1,cli_nlevel
116 do itimerange=1,ntimerange
117
118 call init(v7d%timerange(itimerange), 1, 0,scadenze(itimerange))
119
120 filename = "pctl_prec_"//minuti(itimerange)//"m_all_"//area(iarea)
121 write (filename(20:) ,"(i1.1)")ilevel-1
122 filename =filename(:20)//".txt"
123 filename="/autofs/nethomes/pavan/cq_emr/percentili/"//filename
124
125 print *, "apro file=",filename
126 open (unit=iunit,file=filename)
127
128 do itime = 1,ntime
129
130 call init(v7d%time(itime), year=1001, month=itime, day=1, hour=0, minute=0)
131
132 do iper = 1,nperc
133
134!!$ lat=cli_superarea_lat(iarea)
135!!$ lon=cli_superarea_lon(iarea)
136
137 lat=0.d0
138 lon=0.d0
139
140 write(ident,'("BOX-",2i2.2)')iarea,iper*10
141 iana=iper+(iarea-1)*nperc
142! iana=iarea+(iper-1)*cli_nsuperarea
143 call init(v7d%ana(iana),lat=lat,lon=lon,ident=ident)
144
145 read (iunit,"(10x,f7.0)") dato
146 if (dato == -999.9) dato=rmiss
147
148! v7d%voldatir(iana,itime,ilevel,itimerange,idativarr,inetwork) = dato
149 v7d%voldatir(iana,itime,ilevel,itimerange,idativarr,inetwork) = ilevel
150
151 end do
152 end do
153
154 close(unit=iunit)
155 end do
156 end do
157end do
158
159open (unit=iunit,file="climaprec.v7d", form='UNFORMATTED', access='STREAM')
160
161call export(v7d,unit=iunit)
162
163close (unit=iunit)
164
165filename="climaprec.bufr"
166call init(v7d_dballe,file=.true.,wipe=.true.,write=.true.,filename=filename,categoryappend="esporto",template="generic")
167call copy(v7d,v7d_dballe%vol7d)
168call export(v7d_dballe)
169call delete(v7d_dballe)
170
171call delete(v7d)
172
173!chiudo il logger
174call l4f_category_delete(category)
175ier=l4f_fini()
176
177end program leggi
Cancellazione.
Definition modqccli.F90:347
Inizializzazione.
Definition modqccli.F90:337
Scrittura su file.
Controllo di qualità climatico.
Definition modqccli.F90:295
Classe per la gestione di un volume completo di dati osservati.
classe per import ed export di volumi da e in DB-All.e

Generated with Doxygen.