libsim Versione 7.2.4
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 :: category,ier
64character(len=512):: a_name
65!questa chiamata prende dal launcher il nome univoco
66call l4f_launcher(a_name,a_name_force="qc_convert")
67
68!init di log4fortran
69ier=l4f_init()
70
71!imposta a_name
72category=l4f_category_get(a_name//".main")
73
74call l4f_category_log(category,l4f_info,"inizio")
75
76
77CALL init(v7d)
78
79nana=nperc*cli_nsuperarea
80ntime=12
81
82nlevel=cli_nlevel
83nnetwork=1
84ndativarr=1
85!nanavari=1
86
87call vol7d_alloc (v7d, &
88 nana=nana, ntime=ntime, ntimerange=ntimerange, &
89 nlevel=nlevel, nnetwork=nnetwork, &
90 ndativarr=ndativarr)
91!, nanavari=nanavari)
92
93call vol7d_alloc_vol (v7d,ini=.true.)
94
95
96area(1)="e"
97area(2)="c"
98area(3)="o"
99minuti(1)="15"
100minuti(2)="30"
101minuti(3)="60"
102
103
104inetwork=1
105idativarr=1
106
107call init(v7d%network(inetwork), 'climat')
108call init(v7d%dativar%r(idativarr), btable="B13011")
109!call init(v7d%anavar%i(1), btable="B07001")
110call cli_level_generate(v7d%level)
111
112
113do iarea = 1, cli_nsuperarea
114 do ilevel = 1,cli_nlevel
115 do itimerange=1,ntimerange
116
117 call init(v7d%timerange(itimerange), 1, 0,scadenze(itimerange))
118
119 filename = "pctl_prec_"//minuti(itimerange)//"m_all_"//area(iarea)
120 write (filename(20:) ,"(i1.1)")ilevel-1
121 filename =filename(:20)//".txt"
122 filename="/autofs/nethomes/pavan/cq_emr/percentili/"//filename
123
124 print *, "apro file=",filename
125 open (unit=iunit,file=filename)
126
127 do itime = 1,ntime
128
129 call init(v7d%time(itime), year=1001, month=itime, day=1, hour=0, minute=0)
130
131 do iper = 1,nperc
132
133!!$ lat=cli_superarea_lat(iarea)
134!!$ lon=cli_superarea_lon(iarea)
135
136 lat=0.d0
137 lon=0.d0
138
139 write(ident,'("BOX-",2i2.2)')iarea,iper*10
140 iana=iper+(iarea-1)*nperc
141! iana=iarea+(iper-1)*cli_nsuperarea
142 call init(v7d%ana(iana),lat=lat,lon=lon,ident=ident)
143
144 read (iunit,"(10x,f7.0)") dato
145 if (dato == -999.9) dato=rmiss
146
147! v7d%voldatir(iana,itime,ilevel,itimerange,idativarr,inetwork) = dato
148 v7d%voldatir(iana,itime,ilevel,itimerange,idativarr,inetwork) = ilevel
149
150 end do
151 end do
152
153 close(unit=iunit)
154 end do
155 end do
156end do
157
158open (unit=iunit,file="climaprec.v7d", form='UNFORMATTED', access='STREAM')
159
160call export(v7d,unit=iunit)
161
162close (unit=iunit)
163
164filename="climaprec.bufr"
165call init(v7d_dballe,file=.true.,wipe=.true.,write=.true.,filename=filename,categoryappend="esporto",template="generic")
166call copy(v7d,v7d_dballe%vol7d)
167call export(v7d_dballe)
168call delete(v7d_dballe)
169
170call delete(v7d)
171
172!chiudo il logger
173call l4f_category_delete(category)
174ier=l4f_fini()
175
176end program leggi
Cancellazione.
Definition modqccli.F90:347
Inizializzazione.
Definition modqccli.F90:337
Scrittura su file.
Definition of constants related to I/O units.
Definition io_units.F90:225
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.