source: XMLIO_V2/dev/dev_rv/src/XMLIO/main.f90 @ 137

Last change on this file since 137 was 137, checked in by hozdoba, 14 years ago

mise à jour

File size: 9.3 KB
Line 
1! --------------------------------------------------- !
2!               XMLIO SERVER MAIN TEST                !
3! --------------------------------------------------- !
4
5PROGRAM 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
194END PROGRAM MAIN
Note: See TracBrowser for help on using the repository browser.