Example to create a grib editionNumber = 2 file from data generated in memory using a grib_api template.
Example to create a grib editionNumber = 2 file from data generated in memory using a grib_api template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23PROGRAM demo9
32IMPLICIT NONE
33
34integer :: category,ier
35character(len=512):: a_name
36TYPE(arrayof_gridinfo) :: gridinfo
37
38type(griddim_def) :: griddim
39
40integer,parameter :: nx=31, ny=16, component_flag=0
41type(grid_id) :: gaid_template
42type(vol7d_level) :: level
43type(vol7d_timerange) :: timerange
44type(volgrid6d_var) :: var
45type(datetime) :: date_time
46doubleprecision :: xmin=0., xmax=30., ymin=35., ymax=50.
47
48character(len=80) :: type='regular_ll'
49REAL :: field(nx,ny)
50INTEGER :: i, j
51
52
53call l4f_launcher(a_name,a_name_force="demo9")
54
55
57
58
59category=l4f_category_get(trim(a_name)//".main")
60
62
63
64CALL insert(gridinfo, nelem=2)
65
66gaid_template = grid_id_new(grib_api_template="regular_ll_sfc_grib1")
67
68CALL grib_set(grid_id_get_gaid(gaid_template), "centre", 80)
69CALL grib_set(grid_id_get_gaid(gaid_template), "jScansPositively", 1)
70
71
72
73CALL init(griddim, proj_type=
type, nx=nx, ny=ny, &
74 xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, component_flag=component_flag, &
75 categoryappend="generated")
76CALL init(date_time, year=2019, month=1, day=20, hour=0, minute=0)
77CALL init(timerange, timerange=254, p1=0, p2=0)
78CALL init(level, level1=1, l1=0, level2=imiss, l2=imiss)
79
80CALL init(var, centre=80, category=2, number=81, discipline=255)
81
82CALL init(gridinfo%array(1), gaid_template, griddim, date_time, timerange, level, &
83 var,
clone=.true., categoryappend=
'inventato')
84
85
86
87field(:nx/2,:) = 1.
88field(nx/2+1,:) = 0.
90
91
92
93CALL init(var, centre=80, category=2, number=8, discipline=255)
94
95CALL init(gridinfo%array(2), gaid_template, griddim, date_time, timerange, level, &
96 var,
clone=.true., categoryappend=
'inventato')
97
98
99
100DO i = 1, nx
101 field(i,:) = max(real(nx/2-i+1)/real(nx/2)*500., 0.)
102ENDDO
104
107CALL export(gridinfo, filename=
'const.grib', categoryappend=
"gridinfo scritto")
108
111
112
113CALL insert(gridinfo, nelem=1)
114
115gaid_template = grid_id_new(grib_api_template="regular_ll_sfc_grib2")
116
117
118CALL init(timerange, timerange=254, p1=6, p2=0)
119CALL init(level, level1=103, l1=2000, level2=imiss, l2=imiss)
120
121CALL init(var, centre=80, category=0, number=0, discipline=0)
122
123CALL init(gridinfo%array(1), gaid_template, griddim, date_time, timerange, level, &
124 var,
clone=.false., categoryappend=
'inventato')
125
126
127CALL grib_set(grid_id_get_gaid(gridinfo%array(1)%gaid), "centre", 80)
128CALL grib_set(grid_id_get_gaid(gridinfo%array(1)%gaid), "jScansPositively", 1)
129
130
131
132DO j = 1, ny
133 DO i = 1, nx
134 field(i,j) = 200. + (i-1)*0.5 + j*15.
135 ENDDO
136ENDDO
138
141CALL export(gridinfo, filename=
't2m.grib', categoryappend=
"gridinfo scritto")
142
144
147
148
149CALL l4f_category_delete(category)
151
152END PROGRAM demo9
Distruttori per le 2 classi.
Costruttori per le classi datetime e timedelta.
Method for inserting elements of the array at a desired position.
Export griddim object to grid_id.
Clone the object, creating a new independent instance of the object exactly equal to the starting one...
Encode a data array into a grid_id object associated to a gridinfo object.
Emit log message for a category with specific priority.
Global log4fortran constructor.
Classi per la gestione delle coordinate temporali.
Module for describing geographically referenced regular grids.
This module defines an abstract interface to different drivers for access to files containing gridded...
Class for managing information about a single gridded georeferenced field, typically imported from an...
classe per la gestione del logging
Classe per la gestione dei livelli verticali in osservazioni meteo e affini.
Classe per la gestione degli intervalli temporali di osservazioni meteo e affini.
Class for managing physical variables in a grib 1/2 fashion.