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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18program leggi
19
20
21
22
26USE io_units
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 :: ier
64type(l4f_handle) :: category
65character(len=512):: a_name
66
67call l4f_launcher(a_name,a_name_force="qc_convert")
68
69
70ier=l4f_init()
71
72
73category=l4f_category_get_handle(a_name//".main")
74
75call l4f_category_log(category,l4f_info,"inizio")
76
77
79
80nana=nperc*cli_nsuperarea
81ntime=12
82
83nlevel=cli_nlevel
84nnetwork=1
85ndativarr=1
86
87
88call vol7d_alloc (v7d, &
89 nana=nana, ntime=ntime, ntimerange=ntimerange, &
90 nlevel=nlevel, nnetwork=nnetwork, &
91 ndativarr=ndativarr)
92
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
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
135
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
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
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)
170
172
173
174call l4f_category_delete(category)
175ier=l4f_fini()
176
177end program leggi
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