source: XMLIO_V2/dev/dev_rv/src/xmlio/fake_client/fake_nemo.f90 @ 180

Last change on this file since 180 was 180, checked in by hozdoba, 12 years ago
File size: 18.1 KB
Line 
1! --------------------------------------------------- !
2!          XMLIO SERVER MAIN TEST (NEMO)              !
3! --------------------------------------------------- !
4
5MODULE NEMO_FAKE
6
7   ! Modules de la bibliothÚque xmlioserver
8   USE IXMLIOSERVER
9   USE ISO_C_BINDING
10
11include 'mpif.h'
12
13   CONTAINS
14
15   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
17   SUBROUTINE NEMO_FAKE_ENTRY(comm_client, comm_client_grp, comm_client_server) BIND(C)
18      INTEGER(kind = C_INT), INTENT(IN), VALUE :: comm_client,       & ! communicateur des clients
19                                                  comm_client_grp,   & ! communicateur du groupe de clients
20                                                  comm_client_server   ! communicateur client-serveur
21      REAL(kind = 8), DIMENSION(10000)   :: real_array
22      INTEGER                           :: rankGrp, error
23      INTEGER                           :: ibegin, iend, jbegin, jend, data_ni, data_ibegin
24      TYPE(XDate)                       :: init_date_nemo  = XDate(1985, 03, 15, 17, 35, 00)
25      TYPE(XHandle)                     :: nemo_style_ctxt = NULLHANDLE
26      TYPE(XHandle)                     :: temp_mod   = NULLHANDLE, &
27                                           temp_mod_  = NULLHANDLE, &
28                                           temp_mod__ = NULLHANDLE
29
30
31
32      CALL MPI_COMM_RANK(comm_client, rankGrp, error)
33
34      IF (rankGrp .EQ. 0) THEN
35          PRINT*," Starting NEMO Client Tests ..."
36      END IF
37
38      ! Parsing du document xml de définition à partir d'une faire de caractÚre.
39      CALL xml_parse_string ("<? xml version=1.0 ?><simulation></simulation>")
40
41      !!!!!!!!!!!!!!!!!!!! EXEMPLE RECONSTRUCTION !!!!!!!!!!!!!!!!!!!!!
42
43      ! On crée un nouveau context et on lui associe un handle.
44      CALL context_create(context_hdl   = nemo_style_ctxt, &
45                          context_id    = "nemo_style",    &
46                          calendar_type = GREGORIAN,       &
47                          init_date     = init_date_nemo)
48
49      ! ---------> field_definition
50      CALL handle_create(temp_mod, GFIELD,  "field_definition")
51
52      ! Ajout d'un groupe de champ anomyme
53      CALL xml_tree_add(parent_hdl  = temp_mod,        &
54                        parent_type = GFIELD,          &
55                        child_hdl   = temp_mod_,       &
56                        child_type  = GFIELD)
57
58      CALL set_field_attributes(field_hdl = temp_mod_, &
59                                ftype     = GFIELD,    &
60                                unit_     = "SI",      &
61                                prec_     = 8)
62
63      CALL xml_tree_add(parent_hdl  = temp_mod_,       &
64                        parent_type = GFIELD,          &
65                        child_hdl   = temp_mod,        &
66                        child_type  = GFIELD,          &
67                        child_id    = "field_enabled")
68
69      CALL set_field_attributes(field_hdl      = temp_mod,     &
70                                ftype          = GFIELD,       &
71                                operation_     = "instant",    &
72                                enabled_       = .TRUE._1)
73
74      CALL xml_tree_add(parent_hdl  = temp_mod,        &
75                        parent_type = GFIELD,          &
76                        child_hdl   = temp_mod__,      &
77                        child_type  = EFIELD,          &
78                        child_id    = "champ_2D_k8_inst")
79
80      CALL set_field_attributes(field_hdl      = temp_mod__,   &
81                                ftype          = EFIELD,       &
82                                name_          = "champ1",     &
83                                standard_name_ = "lechamp1",   &
84                                long_name_     = "le champ 1", &
85                                domain_ref_    = "simple_domaine0")
86
87      CALL xml_tree_add(parent_hdl  = temp_mod,        &
88                        parent_type = GFIELD,          &
89                        child_hdl   = temp_mod__,      &
90                        child_type  = EFIELD,          &
91                        child_id    = "champ_2D_k4_once_dis")
92
93      CALL set_field_attributes(field_hdl      = temp_mod__,   &
94                                ftype          = EFIELD,       &
95                                prec_          = 4,            &
96                                operation_     = "once",       &
97                                enabled_       = .FALSE._1,    &
98                                name_          = "champ2",     &
99                                standard_name_ = "lechamp2",   &
100                                long_name_     = "le champ 2", &
101                                domain_ref_    = "simple_domaine1")
102
103      CALL xml_tree_add(parent_hdl  = temp_mod,        &
104                        parent_type = GFIELD,          &
105                        child_hdl   = temp_mod__,      &
106                        child_type  = EFIELD,          &
107                        child_id    = "champ_3D_k4_once")
108
109      CALL set_field_attributes(field_hdl      = temp_mod__,   &
110                                ftype          = EFIELD,       &
111                                prec_          = 4,            &
112                                operation_     = "once",       &
113                                name_          = "champ3",     &
114                                standard_name_ = "lechamp3",   &
115                                long_name_     = "le champ 3", &
116                                grid_ref_   = "simple_grille")
117
118      CALL xml_tree_add(parent_hdl  = temp_mod,        &
119                        parent_type = GFIELD,          &
120                        child_hdl   = temp_mod__,      &
121                        child_type  = EFIELD,          &
122                        child_id    = "champ_3D_k8_average")
123
124      CALL set_field_attributes(field_hdl      = temp_mod__,   &
125                                ftype          = EFIELD,       &
126                                prec_          = 8,            &
127                                operation_     = "average",    &
128                                name_          = "champ4",     &
129                                standard_name_ = "lechamp4",   &
130                                long_name_     = "le champ 4", &
131                                grid_ref_   = "simple_grille")
132
133      CALL xml_tree_add(parent_hdl  = temp_mod_,       &
134                        parent_type = GFIELD,          &
135                        child_hdl   = temp_mod,        &
136                        child_type  = GFIELD,          &
137                        child_id    = "field_disabled")
138
139      CALL set_field_attributes(field_hdl  = temp_mod,  &
140                                ftype          = GFIELD,    &
141                                operation_     = "instant", &
142                                enabled_   = .FALSE._1)
143
144      CALL xml_tree_add(parent_hdl  = temp_mod,        &
145                        parent_type = GFIELD,          &
146                        child_hdl   = temp_mod__,      &
147                        child_type  = EFIELD,          &
148                        child_id    = "champ_3D_k8_inst")
149
150      CALL set_field_attributes(field_hdl      = temp_mod__,       &
151                                ftype          = EFIELD,           &
152                                prec_          = 8,                &
153                                name_          = "champ5",         &
154                                standard_name_ = "lechamp5",       &
155                                long_name_     = "le champ 5",     &
156                                domain_ref_    = "simple_domaine", &
157                                axis_ref_      = "simple_axe")
158
159      ! ---------> axis_definition
160      CALL handle_create(temp_mod, GAXIS,  "axis_definition")
161      CALL xml_tree_add(parent_hdl  = temp_mod,   &
162                        parent_type = GAXIS,      &
163                        child_hdl   = temp_mod_,  &
164                        child_type  = GAXIS,      &
165                        child_id    = "all_axis")
166
167      CALL set_axis_attributes(axis_hdl = temp_mod_, &
168                               ftype    = GAXIS,     &
169                               unit_    = "km")
170
171      CALL xml_tree_add(parent_hdl     = temp_mod_,       &
172                        parent_type    = GAXIS,           &
173                        child_hdl      = temp_mod,        &
174                        child_type     = EAXIS,           &
175                        child_id       = "simple_axe")
176
177      CALL set_axis_attributes(axis_hdl       = temp_mod, &
178                               ftype          = EAXIS,    &
179                               name_          = "axe1",   &
180                               standard_name_ = "laxe1",  &
181                               long_name_     = "l axe1", &
182                               size_          = 30,       &
183                               zvalue_        = real_array(1:30))
184
185      ! ---------> domain_definition
186      CALL handle_create(temp_mod, GDOMAIN,  "domain_definition")
187      CALL xml_tree_add(parent_hdl  = temp_mod,   &
188                        parent_type = GDOMAIN,    &
189                        child_hdl   = temp_mod_,  &
190                        child_type  = GDOMAIN,    &
191                        child_id    = "all_domain")
192
193      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
194                        parent_type = GDOMAIN,    &
195                        child_hdl   = temp_mod,   &
196                        child_type  = EDOMAIN,    &
197                        child_id    = "simple_domaine0")
198
199      IF (rankGrp .EQ. 0) THEN
200         ibegin = 1
201         iend   = 51
202         jbegin = 1
203         jend   = 50
204         data_ni     = 50
205         data_ibegin = 0
206      ELSE IF (rankGrp .EQ. 1) THEN
207         ibegin = 50
208         iend   = 100
209         jbegin = 1
210         jend   = 50
211         data_ni     = 50
212         data_ibegin = 1
213      END IF
214
215      CALL set_domain_attributes(domain_hdl     = temp_mod,       &
216                                 ftype          = EDOMAIN,        &
217                                 name_          = "domaine0",     &
218                                 standard_name_ = "ledomaine0",   &
219                                 long_name_     = "le domaine 0", &
220                                 lonvalue_      = real_array(1:((jend-jbegin+1)*(iend-ibegin+1))), &
221                                 latvalue_      = real_array(1:((jend-jbegin+1)*(iend-ibegin+1))), &
222                                 data_dim_      = 2,              &
223                                 ni_glo_        = 100,            &
224                                 nj_glo_        = 50,             &
225                                 ibegin_        = ibegin,         &
226                                 iend_          = iend,           &
227                                 jbegin_        = jbegin,         &
228                                 jend_          = jend,           &
229                                 data_ni_       = data_ni,        &
230                                 data_ibegin_   = data_ibegin)
231
232      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
233                        parent_type = GDOMAIN,    &
234                        child_hdl   = temp_mod,   &
235                        child_type  = EDOMAIN,    &
236                        child_id    = "simple_domaine1")
237
238      IF (rankGrp .EQ. 0) THEN
239         ibegin = 1
240         iend   = 90
241         jbegin = 1
242         jend   = 10       
243      ELSE IF (rankGrp .EQ. 1) THEN
244         ibegin = 1
245         iend   = 90
246         jbegin = 11
247         jend   = 20
248      END IF
249
250      CALL set_domain_attributes(domain_hdl     = temp_mod,       &
251                                 ftype          = EDOMAIN,        &
252                                 name_          = "domaine1",     &
253                                 standard_name_ = "ledomaine0",   &
254                                 long_name_     = "le domaine 1", &
255                                 lonvalue_      = real_array(1:((jend-jbegin+1)*(iend-ibegin+1))), &
256                                 latvalue_      = real_array(1:((jend-jbegin+1)*(iend-ibegin+1))), &
257                                 data_dim_      = 2,              &
258                                 ni_glo_        = 90,             &
259                                 nj_glo_        = 20,             &
260                                 ibegin_        = ibegin,         &
261                                 iend_          = iend,           &
262                                 jbegin_        = jbegin,         &
263                                 jend_          = jend)
264
265      ! ---------> grid_definition
266      CALL handle_create(temp_mod, GGRID, "grid_definition")
267      CALL xml_tree_add(parent_hdl  = temp_mod,   &
268                        parent_type = GGRID,      &
269                        child_hdl   = temp_mod_,  &
270                        child_type  = EGRID,      &
271                        child_id    = "simple_grille")
272
273      CALL set_grid_attributes(grid_hdl     = temp_mod_,         &
274                               ftype        = EGRID,             &
275                               name_        = "grille1",         &
276                               description_ = "la grille 1",     &
277                               domain_ref_  = "simple_domaine1", &
278                               axis_ref_    = "simple_axe")
279
280      ! ---------> file_definition
281      CALL handle_create(temp_mod, GFILE, "file_definition")
282
283      CALL xml_tree_add(parent_hdl  = temp_mod,   &
284                        parent_type = GFILE,      &
285                        child_hdl   = temp_mod_,  &
286                        child_type  = EFILE,      &
287                        child_id    = "simple_fichier1")
288
289      CALL set_file_attributes(file_hdl      = temp_mod_,        &
290                               ftype         = EFILE,            &
291                               name_         = "fichier1",       &
292                               description_  = "mon fichier 1 ", &
293                               output_freq_  = "12h",            &
294                               output_level_ = 3,                &
295                               enabled_      =  .TRUE._1)
296
297      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
298                        parent_type = EFILE,      &
299                        child_hdl   = temp_mod__, &
300                        child_type  = EFIELD)
301
302      CALL set_field_attributes(field_hdl      = temp_mod__,       &
303                                ftype          = EFIELD,           &
304                                field_ref_     = "champ_2D_k8_inst")
305
306      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
307                        parent_type = EFILE,      &
308                        child_hdl   = temp_mod__, &
309                        child_type  = EFIELD)
310
311      CALL set_field_attributes(field_hdl      = temp_mod__,       &
312                                ftype          = EFIELD,           &
313                                field_ref_     = "champ_2D_k4_once_dis")
314
315      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
316                        parent_type = EFILE,      &
317                        child_hdl   = temp_mod__, &
318                        child_type  = EFIELD)
319
320      CALL set_field_attributes(field_hdl      = temp_mod__,       &
321                                ftype          = EFIELD,           &
322                                field_ref_     = "champ_3D_k4_once")
323
324      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
325                        parent_type = EFILE,      &
326                        child_hdl   = temp_mod__, &
327                        child_type  = EFIELD)
328
329      CALL set_field_attributes(field_hdl      = temp_mod__,       &
330                                ftype          = EFIELD,           &
331                                field_ref_     = "champ_3D_k8_average")
332
333      CALL xml_tree_add(parent_hdl  = temp_mod,   &
334                        parent_type = GFILE,      &
335                        child_hdl   = temp_mod_,  &
336                        child_type  = EFILE,      &
337                        child_id    = "simple_fichier2")
338
339      CALL set_file_attributes(file_hdl      = temp_mod_,        &
340                               ftype         = EFILE,            &
341                               name_         = "fichier2",       &
342                               description_  = "mon fichier 2 ", &
343                               output_freq_  = "1d",             &
344                               output_level_ = 3,                &
345                               enabled_      =  .TRUE._1)
346
347      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
348                        parent_type = EFILE,      &
349                        child_hdl   = temp_mod__, &
350                        child_type  = EFIELD)
351
352      CALL set_field_attributes(field_hdl      = temp_mod__,       &
353                                ftype          = EFIELD,           &
354                                field_ref_     = "champ_2D_k8_inst")
355
356      CALL xml_tree_add(parent_hdl  = temp_mod,   &
357                        parent_type = GFILE,      &
358                        child_hdl   = temp_mod_,  &
359                        child_type  = EFILE,      &
360                        child_id    = "simple_fichier3")
361
362      CALL set_file_attributes(file_hdl      = temp_mod_,        &
363                               ftype         = EFILE,            &
364                               name_         = "fichier3",       &
365                               description_  = "mon fichier 3 ", &
366                               output_freq_  = "18h",            &
367                               output_level_ = 5,                &
368                               enabled_      =  .FALSE._1)
369
370      CALL xml_tree_add(parent_hdl  = temp_mod_,  &
371                        parent_type = EFILE,      &
372                        child_hdl   = temp_mod__, &
373                        child_type  = EFIELD)
374
375      CALL set_field_attributes(field_hdl      = temp_mod__,       &
376                                ftype          = EFIELD,           &
377                                field_ref_     = "champ_2D_k8_inst")
378
379      !!!!!!!!!!!!!!!!!!!!!!! Début du traitement !!!!!!!!!!!!!!!!!!!!!
380
381      ! On choisit le context dans lequel on va travailler
382      ! et on commence le traitement des données.
383      CALL dtreatment_start(nemo_style_ctxt, NETCDF4, comm_client_server)
384     
385      CALL dtreatment_end(nemo_style_ctxt)
386
387   END SUBROUTINE NEMO_FAKE_ENTRY
388
389   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
390
391END MODULE NEMO_FAKE
Note: See TracBrowser for help on using the repository browser.