28 INTEGER(GRIDMAN_SP) :: npoints,ncells,nvertex,i,j,k,
30 INTEGER :: ierr,res,itmp
31 REAL(GRIDMAN_DP),
ALLOCATABLE :: x(:,:)
32 INTEGER(GRIDMAN_SP),
ALLOCATABLE :: ifirst(:),lvertex(:),ivertex(:)
33 INTEGER,
ALLOCATABLE :: ctype(:)
34 CHARACTER*32 :: dataname(3)
35 REAL(GRIDMAN_DP),
ALLOCATABLE :: cell_scalars(:,:),
37 r cell_vectors(:,:,:),
38 r point_vectors(:,:,:)
39 INTEGER,
PARAMETER :: ntor=4
40 REAL(GRIDMAN_DP) :: alpha(ntor+1),da
49 CALL grid_example1(grid,ierr)
50 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
56 s grid,grid%NCELLS,0,0,0,0,ierr)
57 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
60 s ifirst,lvertex,ivertex,ctype,ierr,0)
61 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
66 s npoints,ncells,nvertex,2,
67 s x,ifirst,lvertex,ivertex,ctype,
70 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (1)"
71 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
72 stop
"TEST_VTK TERMINATED"
78 s npoints,ncells,nvertex,2,
79 s x,ifirst,lvertex,ivertex,ctype,
82 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (2)"
83 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
84 stop
"TEST_VTK TERMINATED"
91 s npoints,ncells,nvertex,2,
92 s x,ifirst,lvertex,ivertex,ctype,
95 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (3)"
96 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
97 stop
"TEST_VTK TERMINATED"
105 ALLOCATE(cell_scalars(grid%NCELLS,2))
109 dataname(1)=
'CellNumbers'
111 s npoints,ncells,nvertex,2,
112 s x,ifirst,lvertex,ivertex,ctype,
113 s -1,0,0,0,ierr,cell_scalar=cell_scalars)
115 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (4)"
116 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
117 stop
"TEST_VTK TERMINATED"
121 s grid,grid%NCELLS,1,0,0,0,ierr,
122 s cell_scalar=cell_scalars,csname=dataname)
123 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
129 dataname(2)=
'MinusCellNumbers'
131 s grid,grid%NCELLS,2,0,0,0,ierr,
132 s cell_scalar=cell_scalars,csname=dataname)
138 ALLOCATE(point_scalars(grid%NPOINTS,2))
142 dataname(1)=
'PointNumbers'
144 s npoints,ncells,nvertex,2,
145 s x,ifirst,lvertex,ivertex,ctype,
146 s 0,0,-1,0,ierr,point_scalar=point_scalars)
148 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (5)"
149 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
150 stop
"TEST_VTK TERMINATED"
154 s grid,grid%NCELLS,0,0,1,0,ierr,
155 s point_scalar=point_scalars,psname=dataname)
156 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
160 point_scalars(i,2)=-i
162 dataname(2)=
'MinusPointNumbers'
164 s grid,grid%NCELLS,0,0,2,0,ierr,
165 s point_scalar=point_scalars,psname=dataname)
166 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
172 ALLOCATE(cell_vectors(2,grid%NCELLS,2))
174 cell_vectors(1,i,1)=100.
175 cell_vectors(2,i,1)=100.
177 dataname(1)=
'45degVector'
179 s npoints,ncells,nvertex,2,
180 s x,ifirst,lvertex,ivertex,ctype,
181 s 0,0,0,0,ierr,cell_vector=cell_vectors)
183 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (6)"
184 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
185 stop
"TEST_VTK TERMINATED"
188 s grid,grid%NCELLS,0,1,0,0,ierr,
189 s cell_vector=cell_vectors,cvname=dataname)
190 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
194 cell_vectors(1,i,2)=-100.
195 cell_vectors(2,i,2)=-100.
197 dataname(2)=
'minus45degVector'
199 s grid,grid%NCELLS,0,2,0,0,ierr,
200 s cell_vector=cell_vectors,cvname=dataname)
201 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
207 ALLOCATE(point_vectors(2,grid%NPOINTS,2))
209 point_vectors(1,i,1)=100.
210 point_vectors(2,i,1)=0.
212 dataname(1)=
'Horizontal'
214 s npoints,ncells,nvertex,2,
215 s x,ifirst,lvertex,ivertex,ctype,
216 s 0,0,0,0,ierr,point_vector=point_vectors)
218 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (7)"
219 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
220 stop
"TEST_VTK TERMINATED"
223 s grid,grid%NCELLS,0,0,0,1,ierr,
224 s point_vector=point_vectors,pvname=dataname)
225 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
229 point_vectors(1,i,2)=0.
230 point_vectors(2,i,2)=100.
232 dataname(2)=
'Vertical'
235 s grid,grid%NCELLS,0,0,0,2,ierr,
236 s point_vector=point_vectors,pvname=dataname)
237 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
244 s
'Grid + cell scalars + cell vectors',
245 s grid,grid%NCELLS,2,2,0,0,ierr,
246 s cell_scalar=cell_scalars,
247 s cell_vector=cell_vectors)
248 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
255 s
'Grid + cell scalars & vectors + point scalars & vectors',
256 s npoints,ncells,nvertex,2,
257 s x,ifirst,lvertex,ivertex,ctype,
259 s cell_scalar=cell_scalars,
260 s cell_vector=cell_vectors,
261 s point_scalar=point_scalars,
262 s point_vector=point_vectors)
263 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
266 s
'Grid + cell scalars & vectors + point scalars & vectors',
267 s grid,grid%NCELLS,2,2,2,2,ierr,
268 s cell_scalar=cell_scalars,
269 s cell_vector=cell_vectors,
270 s point_scalar=point_scalars,
271 s point_vector=point_vectors)
272 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
281 alpha(i)=alpha(i-1)+da
284 DEALLOCATE(ifirst,lvertex,ivertex,ctype)
286 s ifirst,lvertex,ivertex,ctype,ierr,
289 WRITE(*,*)
"ERRROR detected GRIDMAN_VTK_WRITE (8)"
290 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
291 stop
"TEST_VTK TERMINATED"
299 IF(grid%CELLS(1,19).EQ.10) grid%CELLS(1,19)=0
300 IF(grid%CELLS(2,19).EQ.10) grid%CELLS(2,19)=0
301 IF(grid%CELLS(1,20).EQ.10) grid%CELLS(1,20)=0
302 IF(grid%CELLS(2,20).EQ.10) grid%CELLS(2,20)=0
304 IF(ierr.NE.0) stop
"TEST_VRK TERMINATED"
306 IF(ierr.NE.0) stop
"TEST_VRK TERMINATED"
307 DEALLOCATE(grid%CELLINDEX)
311 IF(res.NE.0.OR.ierr.GT.0) stop
"TEST_VRK TERMINATED"
314 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
315 IF(ncount.NE.12)
THEN
316 WRITE(*,*)
" ERROR in GRIDMAN_GRID_COUNT"
317 WRITE(*,*)
" Expected value NTCOUNT=12, NTCOUNT ",ncount
318 stop
"TEST_VRK TERMINATED"
324 s ifirst,lvertex,ivertex,ctype,ierr,0)
325 IF(ierr.NE.0) stop
"TEST_VRK TERMINATED"
327 s
'Grid with free edges + point scalars & vectors',
328 s npoints,ncells,nvertex,2,
329 s x,ifirst,lvertex,ivertex,ctype,
331 s point_scalar=point_scalars,
332 s point_vector=point_vectors)
333 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
336 DEALLOCATE(ifirst,lvertex,ivertex,ctype)
338 s ifirst,lvertex,ivertex,ctype,ierr,
340 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
348 s npoints,ncells,nvertex,3,
349 s x,ifirst,lvertex,ivertex,ctype,
351 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
356 s npoints,ncells,nvertex,3,
357 s x,ifirst,lvertex,ivertex,ctype,
360 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (9)"
361 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
362 stop
"TEST_VTK TERMINATED"
369 s npoints,ncells,nvertex,3,
370 s x,ifirst,lvertex,ivertex,ctype,
373 WRITE(*,*)
"ERRROR detected in GRIDMAN_VTK_WRITE (9)"
374 WRITE(*,*)
" Expected value IERR=100, IERR ",ierr
375 stop
"TEST_VTK TERMINATED"
383 DEALLOCATE(cell_scalars)
384 ALLOCATE(cell_scalars(ncells,2))
385 ncells0=int(ncells/ntor)
394 dataname(1)=
'2DCellNumbers'
395 dataname(2)=
'3DCellNumbers'
397 DEALLOCATE(ifirst,lvertex,ivertex,ctype)
399 s ifirst,lvertex,ivertex,ctype,ierr,
401 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
404 s
'Toroidal Grid + cell scalar',
405 s npoints,ncells,nvertex,3,
406 s x,ifirst,lvertex,ivertex,ctype,
408 s cell_scalar=cell_scalars,csname=dataname)
409 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
415 DEALLOCATE(cell_vectors)
416 ALLOCATE(cell_vectors(3,ncells,2))
421 cell_vectors(1,k,1)=1.0
422 cell_vectors(2,k,1)=0.5
423 cell_vectors(3,k,1)=0.5
424 cell_vectors(1,k,2)=1.0*i
425 cell_vectors(2,k,2)=0.5*i
426 cell_vectors(3,k,2)=0.5*i
429 dataname(1)=
'ConstCellVectors'
430 dataname(2)=
'VarCellVectors'
432 s npoints,ncells,nvertex,3,
433 s x,ifirst,lvertex,ivertex,ctype,
435 s cell_vector=cell_vectors,cvname=dataname)
436 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
442 DEALLOCATE(point_scalars)
443 ALLOCATE(point_scalars(grid%NPOINTS*(ntor+1),2))
452 dataname(1)=
'2DPointScalars'
453 dataname(2)=
'3DPointScalars'
455 s
'Toroidal Grid + point scalars',
456 s npoints,ncells,nvertex,3,
457 s x,ifirst,lvertex,ivertex,ctype,
459 s point_scalar=point_scalars,psname=dataname)
460 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
466 DEALLOCATE(point_vectors)
467 ALLOCATE(point_vectors(3,grid%NPOINTS*(ntor+1),2))
472 point_vectors(1,k,1)=1.0
473 point_vectors(2,k,1)=2.0
474 point_vectors(3,k,1)=3.0
475 point_vectors(1,k,2)=1.0*i
476 point_vectors(2,k,2)=2.0*i
477 point_vectors(3,k,2)=3.0*i
480 DEALLOCATE(cell_scalars)
481 dataname(1)=
'ConstPointVectors'
482 dataname(2)=
'VarPointVectors'
484 DEALLOCATE(ifirst,lvertex,ivertex,ctype)
486 s ifirst,lvertex,ivertex,ctype,ierr,
488 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
491 s
'Toroidal Grid + point vectors',
492 s npoints,ncells,nvertex,3,
493 s x,ifirst,lvertex,ivertex,ctype,
495 s point_vector=point_vectors,pvname=dataname)
496 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
502 IF(ierr.NE.0) stop
"TEST_VRK TERMINATED"
504 IF(ierr.NE.0) stop
"TEST_VRK TERMINATED"
505 DEALLOCATE(grid%EDGEINDEX)
510 s grid,grid%NCELLS,0,0,0,0,ierr)
511 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
515 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
516 ALLOCATE(cell_scalars(ncount,1))
520 DO i=grid%NCELLS+1,ncount
523 dataname(1)=
'CellNumbers'
525 s grid,ncount,1,0,0,0,ierr,
526 s cell_scalar=cell_scalars,csname=dataname)
527 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
531 ALLOCATE(grid%CELLINDEX(grid%NCELLINDEX))
533 c grid%NCELLS-1,ierr)
534 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
535 grid%CELLINDEX(1)%INDEXES(0,:)=(/1,2,3,5,6,7,8,9/)
536 grid%CELLINDEX(1)%INDEXES(1,:)=(/0,1,2,3,4,5,6,7/)
537 grid%CELLINDEX(1)%INDEXES(2,:)=(/1,1,1,2,2,2,2,2/)
538 grid%CELLINDEX(1)%DESCRIPTION=
'2D'
539 grid%CELLINDEX(1)%COLUMNS(1)=
'IX'
540 grid%CELLINDEX(1)%COLUMNS(2)=
'IY'
543 s grid,ncount,0,0,0,0,ierr)
544 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
548 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
549 DEALLOCATE(grid%CELLINDEX)
551 ALLOCATE(grid%CELLINDEX(grid%NCELLINDEX))
553 c grid%NCELLS-1,ierr)
554 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
555 grid%CELLINDEX(1)%INDEXES(0,:)=(/1,2,3,5,6,7,8,9/)
556 grid%CELLINDEX(1)%INDEXES(1,:)=(/0,1,2,3,4,5,6,7/)
557 grid%CELLINDEX(1)%INDEXES(2,:)=(/1,1,1,2,2,2,2,2/)
558 grid%CELLINDEX(1)%INDEXES(2,:)=(/1,1,1,2,2,2,2,2/)
559 grid%CELLINDEX(1)%DESCRIPTION=
'2D'
560 grid%CELLINDEX(1)%COLUMNS(1)=
'IX'
561 grid%CELLINDEX(1)%COLUMNS(2)=
'IY'
564 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
565 grid%CELLINDEX(2)%INDEXES(0,:)=(/1,2,3,4,5,6,7,8,9/)
566 grid%CELLINDEX(2)%INDEXES(1,:)=(/0,1,2,3,4,5,6,7,8/)
567 grid%CELLINDEX(2)%INDEXES(2,:)=(/1,1,1,3,3,3,4,4,4/)
568 grid%CELLINDEX(1)%INDEXES(2,:)=(/1,1,1,2,2,2,2,2/)
569 grid%CELLINDEX(2)%DESCRIPTION=
'2D'
570 grid%CELLINDEX(2)%COLUMNS(1)=
'IX'
571 grid%CELLINDEX(2)%COLUMNS(2)=
'IY'
574 s grid,ncount,0,0,0,0,ierr)
575 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
579 ALLOCATE(grid%EDGEINDEX(grid%NEDGEINDEX))
581 c grid%NEDGES-2,ierr)
582 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
583 DO ie=1,grid%EDGEINDEX(1)%NELEMENTS
584 grid%EDGEINDEX(1)%INDEXES(0,ie)=ie+2
585 grid%EDGEINDEX(1)%INDEXES(1,ie)=ie
586 grid%EDGEINDEX(1)%INDEXES(2,ie)=ie*ie
588 grid%EDGEINDEX(1)%DESCRIPTION=
'2D'
589 grid%EDGEINDEX(1)%COLUMNS(1)=
'IP'
590 grid%EDGEINDEX(1)%COLUMNS(2)=
'IR'
593 s grid,ncount,0,0,0,0,ierr)
594 IF(ierr.NE.0) stop
"TEST_VTK TERMINATED"
598 s grid,ncount,1,0,0,0,ierr,
599 s cell_scalar=cell_scalars,csname=dataname)
601 WRITE(*,*)
"TEST_VTK COMPLETED"
logical, save, public gridman_check
Switch to enforce extra checks of input parameters.
Explicit interfaces to GRIDMAN subroutines and functions.
subroutine gridman_grid_count(GRID, NCOUNT, IERR)
Return the number of cells plus the number of edges not belonging to any cell.
subroutine gridman_grid2d_check(GRID, RES, IERR)
Check correctness of the 2D grid object.
Data-type which describes a grid as a set of edges, methods in grid.f.
subroutine gridman_vtk_grid2d_write(FNAME, HEADER, GRID, NELEMENTS, NCS, NCV, NPS, NPV, IERR, CELL_SCALAR, CSNAME, CELL_VECTOR, CVNAME, POINT_SCALAR, PSNAME, POINT_VECTOR, PVNAME)
Write 2D grid and data in VTK ASCII legacy format.
subroutine gridman_index_allocate(INDEX, NINDEX, NELEMENTS, IERR)
Allocate index object.
Definition of data types, global constants and variables.
subroutine gridman_index_deallocate(INDEX, IERR)
Allocate index object.
subroutine gridman_2dgrid2vtk(GRID, NPOINTS, NCELLS, NVERTEX, X, IFIRST, LVERTEX, IVERTEX, CTYPE, IERR, NTHETA, THETA)
Convert 2D grid into VTK format.