1 | ! --------------------------------------------------- ! |
---|
2 | ! XMLIO SERVER MAIN TEST ! |
---|
3 | ! --------------------------------------------------- ! |
---|
4 | |
---|
5 | PROGRAM MAIN |
---|
6 | USE IXHANDLE |
---|
7 | USE IXML |
---|
8 | USE IXMLTREE |
---|
9 | USE ICONTEXT |
---|
10 | USE ICALENDAR |
---|
11 | USE IEXTENDED |
---|
12 | USE IDATATREATMENT |
---|
13 | |
---|
14 | INTEGER :: compt = 0 |
---|
15 | |
---|
16 | TYPE(XHandle) :: nemo_style_ctxt = NULLHANDLE, & |
---|
17 | orchidee_style_ctxt = NULLHANDLE, & |
---|
18 | lmdz_style_ctxt = NULLHANDLE |
---|
19 | |
---|
20 | TYPE(XHandle) :: temp_mod = NULLHANDLE, & |
---|
21 | temp_mod_ = NULLHANDLE |
---|
22 | |
---|
23 | ! Axes verticaux |
---|
24 | REAL(kind = 8), DIMENSION(10) :: vaxis = (/(i, i=1, 10)/) |
---|
25 | !vvaxis = (/(i, i=1, 5)/) |
---|
26 | |
---|
27 | ! Domaines horizontaux |
---|
28 | REAL(kind = 8), DIMENSION(20) :: lonrect_orch0 = (/(i, i=11, 30)/),& |
---|
29 | latrect_orch0 = (/(i, i=11, 30)/) |
---|
30 | |
---|
31 | REAL(kind = 8), DIMENSION(10,10) :: loncurv_nemo0 = 1, & |
---|
32 | latcurv_nemo0 = 1 |
---|
33 | |
---|
34 | ! Les durées |
---|
35 | TYPE(XDuration) :: timestep_1h = XDuration(0., 0., 0., 1., 0., 0.) |
---|
36 | !timestep_2h = XDuration(0., 0., 0., 2., 0., 0.) |
---|
37 | |
---|
38 | ! Les masques |
---|
39 | LOGICAL(kind = 1), DIMENSION(20, 20) :: mask0 = .TRUE._1 |
---|
40 | |
---|
41 | CHARACTER(len = *), PARAMETER :: filename = & |
---|
42 | "/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml" |
---|
43 | |
---|
44 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
45 | |
---|
46 | ! Parsing du document xml depuis un fichier situé sur le disque. |
---|
47 | CALL xml_Parse_File(filename) |
---|
48 | |
---|
49 | ! Création de handle sur les contextes exstants dans lequels on souhaite travailler. |
---|
50 | CALL handle_create(nemo_style_ctxt, ECONTEXT, "nemo_style") |
---|
51 | CALL context_set_current(nemo_style_ctxt) |
---|
52 | |
---|
53 | CALL handle_create(temp_mod, EDOMAIN, "domaine0") |
---|
54 | CALL xml_domain_addAttribut(domain_hdl = temp_mod, & |
---|
55 | lonvalue_curv = loncurv_nemo0, & |
---|
56 | latvalue_curv = latcurv_nemo0, & |
---|
57 | domtype = "curvilinear") |
---|
58 | |
---|
59 | CALL handle_create(lmdz_style_ctxt, ECONTEXT, "lmdz_style") |
---|
60 | CALL context_set_current(lmdz_style_ctxt) |
---|
61 | |
---|
62 | !!!!!!!!!!!!!!!!!!!! EXEMPLE RECONSTRUCTION !!!!!!!!!!!!!!!!!!!!! |
---|
63 | ! On crée un nouveau context et on lui associe un handle. |
---|
64 | CALL context_create(context_hdl = orchidee_style_ctxt, & |
---|
65 | context_id = "orchidee_style", & |
---|
66 | calendar_type = GREGORIAN) |
---|
67 | |
---|
68 | ! ---------> field_définition |
---|
69 | CALL handle_create(temp_mod, GFIELD, "field_definition") |
---|
70 | CALL xml_tree_add(parent_hdl = temp_mod, & |
---|
71 | child_hdl = temp_mod_, & |
---|
72 | child_type = GFIELD, & |
---|
73 | child_id = "ss_fieldgroup") |
---|
74 | CALL xml_group_field_addAttribut(gfield_hdl = temp_mod_, & |
---|
75 | flevel = 1, & |
---|
76 | fprec = 4, & |
---|
77 | fenabled = .TRUE._1) |
---|
78 | CALL xml_tree_add(parent_hdl = temp_mod_, & |
---|
79 | child_hdl = temp_mod , & |
---|
80 | child_type = EFIELD, & |
---|
81 | child_id = "field0") |
---|
82 | CALL xml_field_addAttribut(field_hdl = temp_mod, & |
---|
83 | fname = "field0_name", & |
---|
84 | fstandard_name = "field0_sname", & |
---|
85 | flong_name = "field0_lname", & |
---|
86 | funit = "Pa", & |
---|
87 | foperation = "inst", & |
---|
88 | ffreq_op = timestep_1h, & |
---|
89 | fgrid_ref = "grid0") |
---|
90 | ! ---------> axis_définition |
---|
91 | CALL handle_create(temp_mod, GAXIS, "axis_definition") |
---|
92 | CALL xml_tree_add(parent_hdl = temp_mod, & |
---|
93 | child_hdl = temp_mod_, & |
---|
94 | child_type = GAXIS, & |
---|
95 | child_id = "ss_axisgroup") |
---|
96 | CALL xml_group_axis_addAttribut(gaxis_hdl = temp_mod_, & |
---|
97 | aunit = "SI") |
---|
98 | CALL xml_tree_add(parent_hdl = temp_mod_, & |
---|
99 | child_hdl = temp_mod , & |
---|
100 | child_type = EAXIS, & |
---|
101 | child_id = "axis0") |
---|
102 | CALL xml_axis_addAttribut(axis_hdl = temp_mod, & |
---|
103 | aname = "saxev", & |
---|
104 | astandard_name = "saxev", & |
---|
105 | along_name = "Simple axe vertical",& |
---|
106 | avalue = vaxis) |
---|
107 | |
---|
108 | ! ---------> domain_définition |
---|
109 | CALL handle_create(temp_mod, GDOMAIN, "domain_definition") |
---|
110 | CALL xml_tree_add(parent_hdl = temp_mod, & |
---|
111 | child_hdl = temp_mod_, & |
---|
112 | child_type = GDOMAIN, & |
---|
113 | child_id = "ss_domaingroup") |
---|
114 | CALL xml_group_domain_addAttribut(gdomain_hdl = temp_mod_, & |
---|
115 | ni_glo = 40, & |
---|
116 | nj_glo = 40) |
---|
117 | CALL xml_tree_add(parent_hdl = temp_mod_, & |
---|
118 | child_hdl = temp_mod , & |
---|
119 | child_type = EDOMAIN, & |
---|
120 | child_id = "domain0") |
---|
121 | CALL xml_domain_addAttribut(domain_hdl = temp_mod, & |
---|
122 | dname = "Compressee", & |
---|
123 | dstandard_name = "DomOrchTest", & |
---|
124 | dlong_name = "Test type orchidee", & |
---|
125 | ibegin = 10, & |
---|
126 | iend = 31, & |
---|
127 | jbegin = 10, & |
---|
128 | jend = 31, & |
---|
129 | mask = mask0, & |
---|
130 | data_dim = 1, & |
---|
131 | data_ni = 400, & |
---|
132 | data_ibegin = 1, & |
---|
133 | lonvalue_rect = lonrect_orch0, & |
---|
134 | latvalue_rect = latrect_orch0, & |
---|
135 | domtype = "rectilinear") |
---|
136 | |
---|
137 | ! ---------> file_définition |
---|
138 | CALL handle_create(temp_mod, GFILE, "file_definition") |
---|
139 | CALL xml_tree_add(parent_hdl = temp_mod, & |
---|
140 | child_hdl = temp_mod_, & |
---|
141 | child_type = GFILE) |
---|
142 | CALL xml_group_file_addAttribut(gfile_hdl = temp_mod_, & |
---|
143 | fofreq = timestep_1h, & |
---|
144 | folevel = 2, & |
---|
145 | fenabled = .TRUE._1) |
---|
146 | CALL xml_tree_add(parent_hdl = temp_mod_, & |
---|
147 | child_hdl = temp_mod , & |
---|
148 | child_type = EFILE, & |
---|
149 | child_id = "file0") |
---|
150 | CALL xml_file_addAttribut(file_hdl = temp_mod, & |
---|
151 | fname = "data/orchidee_test.nc", & |
---|
152 | fdescription = "Test sur grille type orchidee") |
---|
153 | CALL xml_tree_add(parent_hdl = temp_mod , & |
---|
154 | child_hdl = temp_mod_, & |
---|
155 | child_type = EFIELD) |
---|
156 | CALL xml_field_addAttribut(field_hdl = temp_mod_, & |
---|
157 | ffield_ref = "field0") |
---|
158 | |
---|
159 | ! ---------> grid_définition |
---|
160 | CALL handle_create(temp_mod, GGRID, "grid_definition") |
---|
161 | CALL xml_tree_add(parent_hdl = temp_mod, & |
---|
162 | child_hdl = temp_mod_, & |
---|
163 | child_type = GGRID, & |
---|
164 | child_id = "ss_gridgroup") |
---|
165 | CALL xml_group_grid_addAttribut(ggrid_hdl = temp_mod_, & |
---|
166 | gdomain_ref = "domain0", & |
---|
167 | gaxis_ref = "axis0"); |
---|
168 | CALL xml_tree_add(parent_hdl = temp_mod_, & |
---|
169 | child_hdl = temp_mod , & |
---|
170 | child_type = EGRID, & |
---|
171 | child_id = "grid0") |
---|
172 | CALL xml_grid_addAttribut(grid_hdl = temp_mod, & |
---|
173 | gname = "GRectiCompressee", & |
---|
174 | gdescription = "Grille orchidee"); |
---|
175 | |
---|
176 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
177 | |
---|
178 | ! Affichage de l'arbre xml au niveau de la sortie. |
---|
179 | CALL xml_tree_show("xmlio_tree_prev.log") |
---|
180 | ! CALL xml_tree_show() |
---|
181 | |
---|
182 | ! ----------- Début du traitement ----------- ! |
---|
183 | ! On choisit le context dans lequel on va travailler et on commence le traitement des données. |
---|
184 | CALL dtreatment_start(orchidee_style_ctxt, NETCDF4) |
---|
185 | |
---|
186 | ! Exécution de la boucle de calcul-écriture. |
---|
187 | DO compt = 0, 9 |
---|
188 | |
---|
189 | END DO |
---|
190 | |
---|
191 | ! Affichage de l'arbre xml au niveau de la sortie. |
---|
192 | CALL xml_tree_show("xmlio_tree_next.log") |
---|
193 | |
---|
194 | END PROGRAM MAIN |
---|