The TELEMAC-MASCARET system  trunk
utils_vtk.F
Go to the documentation of this file.
1 ! ************
2  MODULE utils_vtk
3 ! ************
4 !
5 !***********************************************************************
6 ! HERMES V7P0 2015
7 !***********************************************************************
8 !
9 !brief INTERFACES OF VTK PUBLIC SUBROUTINES
10 !
11 !history YOANN AUDOUIN
12 !+ 13/11/2016
13 !+ V7PR2
14 !+ First version
15 !
16 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 !
19  USE hash_table
20  USE lib_vtk_io
21 !
22  IMPLICIT NONE
23 !
24 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25 ! NEW OBJECT RELATED TO MESHES IN A VTK FILE
26  TYPE vtk_info
27  INTEGER :: file_id
28  CHARACTER(LEN=MAXLENFILE) :: file_name
29  CHARACTER(LEN=80) :: title
30  INTEGER, ALLOCATABLE :: cell_type(:)
31  INTEGER, ALLOCATABLE :: connect(:)
32  INTEGER :: nelem, npoin
33  INTEGER :: ivar, nvar
34  INTEGER :: mesh_dim
35  DOUBLE PRECISION, ALLOCATABLE :: x(:)
36  DOUBLE PRECISION, ALLOCATABLE :: y(:)
37  DOUBLE PRECISION, ALLOCATABLE :: z(:)
38  END TYPE vtk_info
39 !
40 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41 !
42  INTEGER :: nfiles = 0
43 !
44 ! HASH TABLE FOR FILES
45  INTEGER :: hash(max_file) = 0
46 !
47  TYPE(vtk_info) :: vtk_obj_tab(max_file)
48 !
49 !-----------------------------------------------------------------------
50 !
51  CONTAINS
52 !
53 !-----------------------------------------------------------------------
54 !
55 !
56  ! CONVERT AN INT INTO A STRING WITH ZEROS
57  SUBROUTINE number2string(RES,VAL)
58 !
59 !brief Fill a 00000000 string with val
60 !
61 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62 !| RES |-->| OUTPUT STRING
63 !| VAL |<--| INTEGER TO CONVERT
64 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66 !
67  IMPLICIT NONE
68 !
69  INTEGER, INTENT(IN) :: VAL
70 !
71  CHARACTER(LEN=8), INTENT(OUT) :: RES
72 !
73  IF(val.LT.10) THEN
74  WRITE(res,'(A7,I1)') '0000000',val
75  ELSE IF(val.LT.100) THEN
76  WRITE(res,'(A6,I2)') '000000',val
77  ELSE IF(val.LT.1000) THEN
78  WRITE(res,'(A5,I3)') '00000',val
79  ELSE IF(val.LT.10000) THEN
80  WRITE(res,'(A4,I4)') '0000',val
81  ELSE IF(val.LT.100000) THEN
82  WRITE(res,'(A3,I5)') '000',val
83  ELSE IF(val.LT.1000000) THEN
84  WRITE(res,'(A2,I6)') '00',val
85  ELSE IF(val.LT.10000000) THEN
86  WRITE(res,'(A1,I7)') '0',val
87  ELSE
88  WRITE(res,'(I8)') val
89  ENDIF
90  END SUBROUTINE number2string
91 !
92 !-----------------------------------------------------------------------
93 !
94  SUBROUTINE open_mesh_vtk(FILE_NAME,FILE_ID,OPEN_MODE,IERR)
95 !
96 !BRIEF OPENS A MESH FILE
97 !
98 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99 !| FILE_NAME |<--| NAME OF THE VTK FILE
100 !| FILE_ID |<--| VTK FILE DESCRIPTOR
101 !| OPEN_MODE |<--| OPENING MODE (READ/READWRITE/WRITE)
102 !| IERR |-->| ERROR TAG
103 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104 !
105  IMPLICIT NONE
106 !
107  CHARACTER(LEN=*), INTENT(IN) :: FILE_NAME
108  INTEGER, INTENT(OUT) :: FILE_ID
109  CHARACTER(LEN=9), INTENT(IN) :: OPEN_MODE
110  INTEGER, INTENT(OUT) :: IERR
111 !
112 #if !defined (DISABLE_VTK)
113  INTEGER :: VTK_ID
114 !
115 !-----------------------------------------------------------------------
116 !
117  SELECT CASE(open_mode)
118  CASE('READ ')
119  ierr = hermes_write_only_err
120  CASE('READWRITE')
121  CASE('WRITE ')
122  CASE DEFAULT
123 ! OPEN MODE IS INVALID
125  END SELECT
126 !
127  CALL get_free_id(file_id)
128 ! CREATE A NEW OBJECT FOR THE NEW VTK FILE
129  CALL add_obj(hash,file_id,vtk_id,ierr)
130  IF(ierr.NE.0) THEN
131  error_message = 'ERROR IN '//
132  & trim(file_name)//': '//
133  & 'OPEN_MESH_MED:ADD_OBJ'
134  RETURN
135  ENDIF
136 !
137  vtk_obj_tab(vtk_id)%FILE_NAME = file_name
138 ! Opening bogus file to secure the id
139  OPEN(unit=file_id,file='bogus.txt',
140  & action='WRITE',iostat=ierr)
141  IF(ierr.NE.0) THEN
142  error_message = 'ERROR IN '//
143  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
144  & 'OPEN_MESH_VTK:BOGUS'
145  RETURN
146  ENDIF
147 !
148 #else
149 !
150 ! VTK LIBRARY NOT LOADED
152 !
153 #endif
154 !
155  RETURN
156  END SUBROUTINE
157 !
158 !-----------------------------------------------------------------------
159 !
160  SUBROUTINE close_mesh_vtk (FILE_ID, IERR)
161 !
162 !BRIEF CLOSES A MESH FILE
163 !
164 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
165 !| FILE_ID |<--| VTK FILE DESCRIPTOR
166 !| IERR |-->| ERROR TAG
167 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
168 !
169  IMPLICIT NONE
170 !
171  INTEGER, INTENT(IN) :: FILE_ID
172  INTEGER, INTENT(OUT) :: IERR
173 !
174  INTEGER VTK_ID
175 !
176 !-----------------------------------------------------------------------
177 !
178 #if !defined (DISABLE_VTK)
179 !
180  CALL get_obj(hash,file_id,vtk_id,ierr)
181  IF(ierr.NE.0) THEN
182  error_message = 'ERROR WITH ID '//i2char(file_id)//': '//
183  & 'CLOSE_MESH_VTK:GET_OBJ'
184  RETURN
185  ENDIF
186 !
187  ! Clearing id in the hash table
188  hash(vtk_id) = 0
189  nfiles = nfiles - 1
190 !
191  ! CLEAN UP OF STRUCTURE
192  DEALLOCATE(vtk_obj_tab(vtk_id)%CONNECT)
193  DEALLOCATE(vtk_obj_tab(vtk_id)%CELL_TYPE)
194  DEALLOCATE(vtk_obj_tab(vtk_id)%X)
195  DEALLOCATE(vtk_obj_tab(vtk_id)%Y)
196  CLOSE(file_id)
197 !
198 #else
199 !
200 ! VTK LIBRARY NOT LOADED
202 !
203 #endif
204 !
205  RETURN
206  END SUBROUTINE
207 !
208 !
209 !-----------------------------------------------------------------------
210 !
211 !
212 !-----------------------------------------------------------------------
213 !
214  SUBROUTINE set_header_vtk(FILE_ID,TITLE,NVAR,IERR)
215 !
216 !BRIEF WRITES THE TITLE OF THE MESH
217 !
218 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
219 !| FILE_ID |<--| VTK FILE DESCRIPTOR
220 !| TITLE |<--| TITLE OF THE MESH
221 !| NVAR |<--| Number of variable
222 !| IERR |-->| ERROR TAG
223 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
224 !
225  IMPLICIT NONE
226 !
227  INTEGER, INTENT(IN) :: FILE_ID
228  INTEGER, INTENT(IN) :: NVAR
229  CHARACTER(LEN=80), INTENT(IN) :: TITLE
230  INTEGER, INTENT(OUT) :: IERR
231 !
232 #if !defined (DISABLE_VTK)
233  INTEGER :: VTK_ID
234 !
235 !-----------------------------------------------------------------------
236 !
237  CALL get_obj(hash,file_id,vtk_id,ierr)
238  IF(ierr.NE.0) THEN
239  error_message = 'ERROR WITH ID '//i2char(file_id)//': '//
240  & 'SET_HEADER_VTK:GET_OBJ'
241  RETURN
242  ENDIF
243 !
244  vtk_obj_tab(vtk_id)%TITLE = title
245  vtk_obj_tab(vtk_id)%NVAR = nvar
246 !
247 #else
248 !
249 ! VTK LIBRARY NOT LOADED
251 !
252 #endif
253  RETURN
254  END SUBROUTINE
255 !
256 !-----------------------------------------------------------------------
257 !
258  SUBROUTINE set_mesh_vtk(FILE_ID,NB_DIM_MESH,TYPE_ELEM,
259  & NDP,NELEM,NPOIN,IKLE,X,Y,IERR)
260 !
261 !BRIEF WRITES A MESH IN A VTK FILE
262 !
263 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
264 !| FILE_ID |<--| VTK FILE DESCRIPTOR
265 !| NB_DIM_PB |<--| NUMBER OF DIMENSION OF THE PHYSICAL DOMAIN
266 !| NB_DIM_MESH |<--| NUMBER OF DIMENSION OF THE MESH
267 !| TYPE_ELEM |<--| TYPE OF THE ELEMENT IN SLF FORMAT
268 !| NDP |<--| NUMBER OF POINTS PER ELEMENT
269 !| NPTFR |<--| NUMBER OF BOUNDARY NODES
270 !| NPTIR |<--| NUMBER OF INTERFACE NODES FOR THE SUB-DOMAIN
271 !| NELEM |<--| TOTAL NUMBER OF ELEMENTS
272 !| NPOIN |<--| TOTAL NUMBER OF NODES
273 !| IKLE |<--| CONNECTIVITY TABLE
274 !| IPOBO |<--| LOGICAL TABLE FOR BOUNDARY NODES
275 !| KNOLG |<--| NODES INDEX TABLE FROM LOCAL TO GLOBAL
276 !| X |<--| X COORDINATES OF THE NODES
277 !| Y |<--| Y COORDINATES OF THE NODES
278 !| NPLAN |<--| NUMBER OF PLANES
279 !| IERR |-->| ERROR TAG
280 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
281 !
282  IMPLICIT NONE
283 !
284  INTEGER, INTENT(IN) :: FILE_ID, NB_DIM_MESH
285  INTEGER, INTENT(IN) :: NELEM, NPOIN, TYPE_ELEM, NDP
286  INTEGER, INTENT(IN) :: IKLE(ndp*nelem)
287  DOUBLE PRECISION, INTENT(IN) :: X(npoin)
288  DOUBLE PRECISION, INTENT(IN) :: Y(npoin)
289  INTEGER, INTENT(OUT) :: IERR
290 !
291 #if !defined (DISABLE_VTK)
292 !
293  INTEGER :: VTK_ID
294  INTEGER :: I,J
295 !
296 !-----------------------------------------------------------------------
297 !
298  CALL get_obj(hash,file_id,vtk_id,ierr)
299  IF(ierr.NE.0) THEN
300  error_message = 'ERROR WITH ID '//i2char(file_id)//': '//
301  & 'SET_MESH_VTK:GET_OBJ'
302  RETURN
303  ENDIF
304 !
305  ! DEFINING THE CELLS TYPE
306  ALLOCATE(vtk_obj_tab(vtk_id)%CELL_TYPE(nelem),stat=ierr)
307  IF(ierr.NE.0) THEN
308  error_message = 'ERROR IN '//
309  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
310  & 'ALLOCATING CELL_TYPE'
311  RETURN
312  ENDIF
313  ! VALUE CHOSEN IN PDF VTK FILE FORMAT (GOOGLE)
314  SELECT CASE(type_elem)
315  CASE(triangle_elt_type)
316  vtk_obj_tab(vtk_id)%CELL_TYPE(:) = 5
317  CASE(quadrangle_elt_type)
318  vtk_obj_tab(vtk_id)%CELL_TYPE(:) = 9
320  vtk_obj_tab(vtk_id)%CELL_TYPE(:) = 10
321  CASE(prism_elt_type)
322  vtk_obj_tab(vtk_id)%CELL_TYPE(:) = 13
323  END SELECT
324  ! BUILDING THE CONNECTION TABLE FOLLOWING THE VTK STANDARD
325  ! FOR EACH CELL :
326  ! FIRST THE NUMBER OF NODES COMPOSING THE CELL
327  ! THEN THE NUMBER OF EACH NODE
328  ! WE NEED TO RENUMBER TO NODES 0 TO NELEM-1
329  ALLOCATE(vtk_obj_tab(vtk_id)%CONNECT(nelem*(ndp+1)),stat=ierr)
330  IF(ierr.NE.0) THEN
331  error_message = 'ERROR IN '//
332  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
333  & 'ALLOCATING CONNECT'
334  RETURN
335  ENDIF
336  DO i=1,nelem
337  vtk_obj_tab(vtk_id)%CONNECT((i-1)*(ndp+1)+1) = ndp
338  DO j=1,ndp
339  vtk_obj_tab(vtk_id)%CONNECT((i-1)*(ndp+1)+j+1) =
340  & ikle((j-1)*nelem+i)-1
341  ENDDO
342  ENDDO
343  vtk_obj_tab(vtk_id)%NELEM = nelem
344  vtk_obj_tab(vtk_id)%NPOIN = npoin
345 
346  ALLOCATE(vtk_obj_tab(vtk_id)%X(npoin),stat=ierr)
347  IF(ierr.NE.0) THEN
348  error_message = 'ERROR IN '//
349  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
350  & 'ALLOCATING X'
351  RETURN
352  ENDIF
353  vtk_obj_tab(vtk_id)%X = x
354  ALLOCATE(vtk_obj_tab(vtk_id)%Y(npoin),stat=ierr)
355  IF(ierr.NE.0) THEN
356  error_message = 'ERROR IN '//
357  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
358  & 'ALLOCATING Y'
359  RETURN
360  ENDIF
361  vtk_obj_tab(vtk_id)%Y = y
362 
363  vtk_obj_tab(vtk_id)%MESH_DIM = nb_dim_mesh
364 !
365 #endif
366 !
367  RETURN
368  END SUBROUTINE
369 !
370 !-----------------------------------------------------------------------
371 !
372  SUBROUTINE add_data_vtk (FILE_ID, VAR_NAME, RECORD,
373  & FIRST_VAR, VAR_VALUE, N, IERR)
374 !
375 !BRIEF WRITE DATA VALUES FOR A GIVEN VARIABLE
376 ! ONLY FOR VALUES WITH DOUBLE PRECISION, ONE COMPONENT AND VALUE
377 ! ON THE NODES
378 !
379 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
380 !| FILE_ID |<--| VTK FILE DESCRIPTOR
381 !| VAR_NAME |<--| NAME OF THE DATA
382 !| RECORD |<--| ITERATION NUMBER
383 !| FIRST_VAR |<--| TRUE IF FIRST VARIABLE
384 !| VAR_VALUE |<--| TABLE OF VARIABLE VALUES
385 !| N |<--| NUMBER OF ELEMENTS
386 !| IERR |-->| ERROR TAG
387 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
388 !
389  IMPLICIT NONE
390 !
391  INTEGER, INTENT(IN) :: FILE_ID, N
392  INTEGER, INTENT(IN) :: RECORD
393  CHARACTER(LEN=32), INTENT(IN) :: VAR_NAME
394  DOUBLE PRECISION, INTENT(IN) :: VAR_VALUE(n)
395  LOGICAL, INTENT(IN) :: FIRST_VAR
396  INTEGER, INTENT(OUT) :: IERR
397 !
398 #if !defined (DISABLE_VTK)
399  INTEGER :: VTK_ID
400  DOUBLE PRECISION, ALLOCATABLE :: Z(:)
401  CHARACTER(LEN=MAXLENFILE) :: FILENAME
402  CHARACTER(LEN=8) :: TIMESTR
403  CHARACTER(LEN=32) :: VAR_NAME_VTK
404 !
405 !-----------------------------------------------------------------------
406 !
407  CALL get_obj(hash,file_id,vtk_id,ierr)
408  IF(ierr.NE.0) THEN
409  error_message = 'ERROR WITH ID '//i2char(file_id)//': '//
410  & 'ADD_DATA:GET_OBJ'
411  RETURN
412  ENDIF
413 !
414  IF(first_var) THEN
415  filename = repeat(' ',maxlenfile)
416  CALL number2string(timestr,record)
417  filename = trim(vtk_obj_tab(vtk_id)%FILE_NAME)//timestr
418  ! INITIALISING THE VTK FILE
419  ierr=vtk_ini('ASCII',filename,vtk_obj_tab(vtk_id)%TITLE,
420  & 'UNSTRUCTURED_GRID')
421  IF(ierr.NE.0) THEN
422  error_message = 'ERROR IN '//
423  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
424  & 'ADD_DATA:VTK_INI'
425  RETURN
426  ENDIF
427  ! WRITTING THE NODES COORDINATES
428  ALLOCATE(z(vtk_obj_tab(vtk_id)%NPOIN),stat=ierr)
429  IF(ierr.NE.0) THEN
430  error_message = 'ERROR IN '//
431  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
432  & 'ALLOCATING Z'
433  RETURN
434  ENDIF
435  IF(vtk_obj_tab(vtk_id)%MESH_DIM.EQ.3) THEN
436  z = var_value
437  ELSE
438  z = 0.d0
439  ENDIF
440  ierr=vtk_geo(vtk_obj_tab(vtk_id)%NPOIN,
441  & vtk_obj_tab(vtk_id)%X,
442  & vtk_obj_tab(vtk_id)%Y,
443  & z)
444  DEALLOCATE(z)
445  IF(ierr.NE.0) THEN
446  error_message = 'ERROR IN '//
447  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
448  & 'ADD_DATA:VTK_GEO'
449  RETURN
450  ENDIF
451  ierr=vtk_con(vtk_obj_tab(vtk_id)%NELEM,
452  & vtk_obj_tab(vtk_id)%CONNECT,
453  & vtk_obj_tab(vtk_id)%CELL_TYPE)
454  IF(ierr.NE.0) THEN
455  error_message = 'ERROR IN '//
456  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
457  & 'ADD_DATA:VTK_CON'
458  RETURN
459  ENDIF
460  ! ADDING THE NUMBER OF NODES ON WHICH THERE IS GONNA BE A
461  ! VARAIBLE HERE EVERY ONE
462  ierr=vtk_dat(vtk_obj_tab(vtk_id)%NPOIN,'node')
463  IF(ierr.NE.0) THEN
464  error_message = 'ERROR IN '//
465  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
466  & 'ADD_DATA:VTK_DAT'
467  RETURN
468  ENDIF
469  ! Initializing variable counter
470  vtk_obj_tab(vtk_id)%IVAR = 0
471  ENDIF
472 
473  ! REMOVE WHITE SPACES IN VAR NAMES
474  ! TO BE READABLE IN PARAVIEW 5.0
475  vtk_obj_tab(vtk_id)%IVAR = vtk_obj_tab(vtk_id)%IVAR + 1
476  var_name_vtk = var_name
477  CALL blanc2uscore(var_name_vtk, len(var_name_vtk))
478  ierr=vtk_var(vtk_obj_tab(vtk_id)%NPOIN, var_name_vtk, var_value)
479  IF(ierr.NE.0) THEN
480  error_message = 'ERROR IN '//
481  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
482  & 'ADD_DATA:VTK_VAR '
483  RETURN
484  ENDIF
485 
486  ! Closing the file after the last varialbe was written
487  IF(vtk_obj_tab(vtk_id)%IVAR.EQ.vtk_obj_tab(vtk_id)%NVAR) THEN
488 ! CLOSE VTK FILE
489  ! CLOSING THE FILE
490  ierr=vtk_end()
491  IF(ierr.NE.0) THEN
492  error_message = 'ERROR IN '//
493  & trim(vtk_obj_tab(vtk_id)%FILE_NAME)//': '//
494  & 'ADD_DATA:VTK_END'
495  RETURN
496  ENDIF
497  ENDIF
498 !
499 #else
500 !
501 ! VTK LIBRARY NOT LOADED
503 !
504 #endif
505  RETURN
506  END SUBROUTINE
507 !
508 !-----------------------------------------------------------------------
509 !
510 !
511 !-----------------------------------------------------------------------
512 !
513  END MODULE utils_vtk
integer, parameter prism_elt_type
integer, parameter hermes_vtk_not_loaded_err
subroutine add_obj(HASH, FILE_ID, HASHED_ID, IERR)
Definition: hash_table.f:66
integer(i4p) function, public vtk_dat(NC_NN, VAR_LOCATION)
Definition: lib_vtk_io.F:1043
subroutine open_mesh_vtk(FILE_NAME, FILE_ID, OPEN_MODE, IERR)
Definition: utils_vtk.F:96
integer, parameter maxlenfile
subroutine get_obj(HASH, FILE_ID, HASHED_ID, IERR)
Definition: hash_table.f:15
integer, parameter triangle_elt_type
Y.AUDOUIN 30/06/2013 V6P3
Definition: lib_vtk_io.F:44
character(len=200) error_message
subroutine number2string(RES, VAL)
Definition: utils_vtk.F:59
integer, parameter hermes_invalid_open_mode_err
integer nfiles
Definition: utils_vtk.F:43
type(vtk_info), dimension(max_file) vtk_obj_tab
Definition: utils_vtk.F:48
subroutine set_mesh_vtk(FILE_ID, NB_DIM_MESH, TYPE_ELEM, NDP, NELEM, NPOIN, IKLE, X, Y, IERR)
Definition: utils_vtk.F:261
integer, parameter max_file
Definition: hash_table.f:7
subroutine set_header_vtk(FILE_ID, TITLE, NVAR, IERR)
Definition: utils_vtk.F:216
integer(i4p) function, public vtk_end()
Definition: lib_vtk_io.F:1651
subroutine close_mesh_vtk(FILE_ID, IERR)
Definition: utils_vtk.F:162
integer, dimension(max_file) hash
Definition: utils_vtk.F:46
integer(i4p) function, public vtk_con(NC, CONNECT, CELL_TYPE)
Definition: lib_vtk_io.F:918
integer, parameter tetrahedron_elt_type
integer, parameter quadrangle_elt_type
integer(i4p) function, public vtk_ini(OUTPUT_FORMAT, FILENAME, TITLE, MESH_TOPOLOGY)
Definition: lib_vtk_io.F:205
integer, parameter hermes_write_only_err
subroutine add_data_vtk(FILE_ID, VAR_NAME, RECORD, FIRST_VAR, VAR_VALUE, N, IERR)
Definition: utils_vtk.F:375