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
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