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

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