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

Last change on this file since 134 was 134, checked in by hozdoba, 12 years ago

Pour sauvegarde

File size: 5.1 KB
Line 
1! --------------------------------------------------- !
2! ------------- XMLIO SERVER MAIN TEST  ------------- !
3! --------------------------------------------------- !
4
5MODULE XTYPE
6   IMPLICIT NONE
7
8   ! Ne jamais modifier les valeurs internes de ce type dans le code fortran.
9   TYPE XHandle
10      INTEGER :: dtype
11      INTEGER :: daddr
12   END TYPE XHandle
13
14   TYPE XDate
15      INTEGER :: year, month, day, hour, minute, second
16   END TYPE XDate
17
18   TYPE XDuration
19      REAL(kind = 8) :: year, month, day, hour, minute, second
20   END TYPE XDuration
21
22   ! enum XDType
23   INTEGER, PARAMETER  :: NOTYPE = 0
24   INTEGER, PARAMETER  :: DTREATMENT = 1, DDATE = 2, CALENDAR = 3, ECONTEXT = 4
25   INTEGER, PARAMETER  :: EAXIS = 5 , EDOMAIN = 6 , EFIELD = 7 , EFILE = 8 , EGRID = 9
26   INTEGER, PARAMETER  :: GAXIS = 10, GDOMAIN = 11, GFIELD = 12, GFILE = 13, GGRID = 14
27
28   ! enum XFileType
29   INTEGER, PARAMETER  :: NETCDF4 = 0
30
31   ! Autres constantes
32   TYPE(XHandle)  , PARAMETER :: NULLHANDLE = XHandle(0, 0)
33   TYPE(XDuration), PARAMETER :: NONEDUR    = XDuration(0., 0., 0., 0., 0., 0.)
34
35END MODULE XTYPE
36
37MODULE IXHANDLE
38
39   INTERFACE
40
41      SUBROUTINE xios_handle_create(ret, dtype, idt)
42         USE XTYPE
43         TYPE(XHandle), INTENT(OUT) :: ret
44         INTEGER      , INTENT(IN)  :: dtype
45         CHARACTER*(*), INTENT(IN)  :: idt
46      END SUBROUTINE xios_handle_create
47
48   END INTERFACE
49
50END MODULE IXHANDLE
51
52MODULE IXML
53   IMPLICIT NONE
54   INTERFACE
55
56      SUBROUTINE xios_xml_Parse_File(filename)
57         CHARACTER*(*), INTENT(IN) :: filename
58      END SUBROUTINE xios_xml_Parse_File
59
60      SUBROUTINE xios_xml_Parse_String(xmlcontent)
61         CHARACTER*(*), INTENT(IN) :: xmlcontent
62      END SUBROUTINE xios_xml_Parse_String
63
64   END INTERFACE
65END MODULE IXML
66
67MODULE ICONTEXT
68   IMPLICIT NONE
69   INTERFACE
70
71      SUBROUTINE xios_context_set_current(context, withswap)
72         USE XTYPE
73         TYPE(XHandle),     INTENT(IN) :: context
74         LOGICAL, OPTIONAL, INTENT(IN) :: withswap
75      END SUBROUTINE xios_context_set_current
76
77      SUBROUTINE xios_context_get_current(context)
78         USE XTYPE
79         TYPE(XHandle), INTENT(IN) :: context
80      END SUBROUTINE xios_context_get_current
81
82      SUBROUTINE xios_context_get_calendar(context, calend)
83         USE XTYPE
84         TYPE(XHandle), INTENT(IN)  :: context
85         TYPE(XHandle), INTENT(OUT) :: calend
86      END SUBROUTINE xios_context_get_calendar
87
88   END INTERFACE
89
90END MODULE ICONTEXT
91
92MODULE ICALENDAR
93   IMPLICIT NONE
94   INTERFACE
95
96      SUBROUTINE xios_calendar_set_timestep(calend, dur)
97         USE XTYPE
98         TYPE(XHandle)  , INTENT(IN) :: calend
99         TYPE(XDuration), INTENT(IN) :: dur
100      END SUBROUTINE xios_calendar_set_timestep
101
102   END INTERFACE
103
104END MODULE ICALENDAR
105
106MODULE IDATATREATMENT
107   IMPLICIT NONE
108   INTERFACE
109
110      SUBROUTINE xios_dtreatment_new(dt, context)
111         USE XTYPE
112         TYPE(XHandle), INTENT(OUT) :: dt
113         TYPE(XHandle), INTENT(IN)  :: context
114      END SUBROUTINE xios_dtreatment_new
115
116      SUBROUTINE xios_dtreatment_create_files_and_headers(dt, ftype)
117         USE XTYPE
118         TYPE(XHandle), INTENT(IN) :: dt
119         INTEGER      , INTENT(IN) :: ftype
120      END SUBROUTINE xios_dtreatment_create_files_and_headers
121
122   END INTERFACE
123END MODULE IDATATREATMENT
124
125PROGRAM MAIN
126   USE XTYPE
127   USE IXHANDLE
128   USE IXML
129   USE ICONTEXT
130   USE IDATATREATMENT
131   USE ICALENDAR
132
133   IMPLICIT NONE
134
135   INTEGER         :: compt
136   TYPE(XHandle)   :: context1    = NULLHANDLE
137   TYPE(XHandle)   :: dtreat      = NULLHANDLE
138   TYPE(XHandle)   :: calend      = NULLHANDLE
139   TYPE(XDuration) :: timestep_1h = XDuration(0., 0., 0., 1., 0., 0.)
140
141   ! Parsing du document xml depuis un fichier situé sur le disque.
142   CALL xios_xml_Parse_File("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml")
143
144   ! Le calendrier doit être initialisé ici s'il ne l'a pas déjà été depuis le document xml.
145
146   ! Création d'un handle sur le contexte dans lequel on souhaite travailler, càd 'context1' ici.
147   CALL xios_handle_create(context1, ECONTEXT, "context1")
148   iF ((context1%dtype == 0) .AND. (context1%daddr == 0)) THEN
149      PRINT *, "Impossible de créer un handle sur l'élément context1 !"
150      STOP
151   END IF
152
153   ! ----------- Début du traitement ----------- !
154
155   CALL xios_context_set_current(context1, .TRUE.)
156
157   ! Création et initialisation d'une instance de traitement des données dans 'context1'.
158   CALL xios_dtreatment_new(dtreat, context1)
159   iF ((dtreat%dtype == 0) .AND. (dtreat%daddr == 0)) THEN
160      PRINT *, "Impossible d'initialiser l'instance de traitement !"
161      STOP
162   END IF
163
164   ! Création des fichiers et des entêtes dans le contexte.
165   CALL xios_dtreatment_create_files_and_headers(dtreat, NETCDF4)
166
167   ! On récupére le calendrier associé au contexte en cours de traitement.
168   CALL xios_context_get_calendar(context1, calend)
169   iF ((calend%dtype == 0) .AND. (calend%daddr == 0)) THEN
170      PRINT *, "Impossible de récupérer le calendrier !"
171      STOP
172   END IF
173
174   ! On change la durée du timestep.
175   CALL xios_calendar_set_timestep(calend, timestep_1h)
176
177   ! Exécution de la boucle de calcul-écriture.
178   DO compt = 0, 9
179
180   END DO
181
182END PROGRAM MAIN
Note: See TracBrowser for help on using the repository browser.