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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18program leggi
19
20
21
22
27
28IMPLICIT NONE
29
30
31
32
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
41
42
43integer :: nana, ntime ,nlevel, ndativarr, nnetwork
44integer :: iana, itime, ilevel, itimerange, idativarr, inetwork
45integer,parameter :: ntimerange=3 ,nperc=9
46TYPE(vol7d) :: v7d
47TYPE(vol7d_dballe) :: v7d_dballe
48
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
57
58
59
60integer :: scadenze(ntimerange) = (/900,1800,3600/)
61real :: dato
62integer :: iunit=1
63integer :: category,ier
64character(len=512):: a_name
65
66call l4f_launcher(a_name,a_name_force="qc_convert")
67
68
69ier=l4f_init()
70
71
72category=l4f_category_get(a_name//".main")
73
74call l4f_category_log(category,l4f_info,"inizio")
75
76
78
79nana=nperc*cli_nsuperarea
80ntime=12
81
82nlevel=cli_nlevel
83nnetwork=1
84ndativarr=1
85
86
87call vol7d_alloc (v7d, &
88 nana=nana, ntime=ntime, ntimerange=ntimerange, &
89 nlevel=nlevel, nnetwork=nnetwork, &
90 ndativarr=ndativarr)
91
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
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
134
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
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
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)
169
171
172
173call l4f_category_delete(category)
174ier=l4f_fini()
175
176end program leggi
Definition of constants related to I/O units.
Controllo di qualità climatico.
Classe per la gestione di un volume completo di dati osservati.
classe per import ed export di volumi da e in DB-All.e