31 REAL(GRIDMAN_DP),
ALLOCATABLE :: vol(:),vol0(:),volt(:),
33 REAL(GRIDMAN_DP) :: v,vt
34 INTEGER(GRIDMAN_SP) :: ie,icell,icell0
38 CALL grid_example4(grid,ierr)
39 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
45 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
47 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
49 ALLOCATE(vol(grid%NCELLS),vol0(grid%NCELLS),volt(tria%NCELLS))
51 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
53 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
58 WRITE(*,*)
"ERROR in GRIDMAN_GRID2D_TRIANG ",
59 w
" mismatch of volumes"
60 WRITE(*,*)
" V, VT ",v,vt
61 stop
"TEST_TRIANG TERMINATED"
64 ALLOCATE(sarea(grid%NEDGES),sareat(tria%NEDGES))
66 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
68 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
74 IF(tria%EDGEINDEX(1)%NELEMENTS.NE.grid%NEDGES)
THEN
75 WRITE(*,*)
"ERROR in GRIDMAN_GRID2D_TRIANG: ",
76 w
"the generated edge index is wrong"
77 WRITE(*,*)
" NELEMENTS, NEDGES ",
78 w tria%EDGEINDEX(1)%NELEMENTS,grid%NEDGES
79 stop
"TEST_TRIANG TERMINATED"
82 c tria%EDGEINDEX(1),res,ierr)
83 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
85 WRITE(*,*)
"ERROR in GRIDMAN_GRID2D_TRIANG: ",
86 w
"old and new indices must be equal"
87 stop
"TEST_TRIANG TERMINATED"
91 c tria%EDGEINDEX(2),res,ierr)
92 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
94 WRITE(*,*)
"ERROR in GRIDMAN_GRID2D_TRIANG: ",
95 w
"old and new indices must be equal"
96 stop
"TEST_TRIANG TERMINATED"
100 IF(tria%CELLINDEX(1)%NELEMENTS.NE.tria%NCELLS)
THEN
101 WRITE(*,*)
"ERROR in GRIDMAN_GRID2D_TRIANG: ",
102 w
"the generated cell index is wrong"
103 WRITE(*,*)
" NELEMENTS, NCELLS ",
104 w tria%EDGEINDEX(1)%NELEMENTS,tria%NCELLS
105 stop
"TEST_TRIANG TERMINATED"
108 DO ie=1,tria%CELLINDEX(1)%NELEMENTS
109 icell=tria%CELLINDEX(1)%INDEXES(0,ie)
110 icell0=tria%CELLINDEX(1)%INDEXES(1,ie)
111 vol0(icell0)=vol0(icell0)+volt(icell)
113 DO icell=1,grid%NCELLS
114 IF(abs(vol(icell)-vol0(icell)).GT.
gridman_tol)
THEN
115 WRITE(*,*)
"ERROR in GRIDMAN_GRID2D_TRIANG: ",
116 w
"incorrect cell index - mismatch of volumes"
117 WRITE(*,*)
" ICELL0, VOL, VOL0 ",icell,vol(icell),vol0(icell)
118 stop
"TEST_TRIANG TERMINATED"
122 c tria%CELLINDEX(2),res,ierr)
123 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
125 WRITE(*,*)
"ERROR in GRIDMAN_GRID2D_TRIANG: ",
126 w
"cell indices must be equal"
127 stop
"TEST_TRIANG TERMINATED"
130 CALL gridman_grid_write(grid,
'grid.grd',ierr)
131 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
133 CALL gridman_grid_write(tria,
'tria.grd',ierr)
134 IF(ierr.NE.0) stop
"TEST_TRIANG TERMINATED"
136 WRITE(*,*)
"TEST_TRIANG COMPLETED"
138 END PROGRAM test_triang
logical, save, public gridman_check
Switch to enforce extra checks of input parameters.
real(gridman_dp), save, public gridman_tol
Tolerance parameter which is used to compare two real numbers.
subroutine gridman_grid2d_cylvolumes(GRID, VCELLS, IERR, ANGLE)
Calculate cylindrical cell volumes.
Explicit interfaces to GRIDMAN subroutines and functions.
subroutine gridman_index_compare(INDEX1, INDEX2, RES, IERR)
Compare two index objects.
subroutine gridman_grid2d_cylareas(GRID, SEDGES, IERR, ANGLE)
Calculate cylindrical areas of the cell edges.
Data-type which describes a grid as a set of edges, methods in grid.f.
subroutine gridman_grid2d_triang(TRIA, GRID, IERR)
Triangulation of 2D grid.
logical, save, public gridman_dbg
Switch for debugging mode.
Definition of data types, global constants and variables.