GRIDMAN
grid managment library
test_addsurf.f
Go to the documentation of this file.
1 C> @file tests/test_addsurf.f
2 C> Unit tests of subroutines from formats/addsurf.f and convert/addsurf.f
3 C GRIDMAN, grid managment library. Author: Vladislav Kotov, v.kotov@fz-juelich.de
4 
5 ! Copyright (c) 2017 Forschungszentrum Juelich GmbH
6 ! Vladislav Kotov
7 !
8 ! This file is part of GRIDMAN.
9 !
10 ! GRIDMAN is free software: you can redistribute it and/or modify
11 ! it under the terms of the GNU General Public License as published by
12 ! the Free Software Foundation, either version 3 of the License, or
13 ! (at your option) any later version.
14 !
15 ! GRIDMAN is distributed in the hope that it will be useful,
16 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ! GNU General Public License for more details.
19 !
20 ! You should have received a copy of the GNU General Public License
21 ! along with GRIDMAN. If not, see <http://www.gnu.org/licenses/>.
22 
23  PROGRAM test_addsurf
24  USE gridman
25  USE gridman_lib
26  IMPLICIT NONE
27 
28  INTEGER(GRIDMAN_SP) :: nsurf,ip1,ip2,i
29  INTEGER :: res,ierr
30  REAL(GRIDMAN_DP),ALLOCATABLE :: x(:,:),y(:,:),s(:),vn(:,:)
31  INTEGER(GRIDMAN_SP),ALLOCATABLE :: isrf(:)
32  TYPE(gridman_grid) :: grid,grid2
33  REAL(GRIDMAN_DP) :: vol(1),xcn(2,1),x1,y1,x2,y2
34  LOGICAL :: ltmp(1)
35 
36  gridman_check=.true.
37 
38  CALL gridman_addsurf2d_read(grid,'./input/iterm.carre.105',ierr)
39  IF(ierr.NE.100) THEN
40  WRITE(*,*) "ERROR after GRIDMAN_ADDSURF2D_READ_ARRAY"
41  WRITE(*,*) "Expected value IERR=100, IERR ",ierr
42  stop "TEST_ADDSURF TERMINATED"
43  END IF
44 
45  CALL gridman_addsurf2d_read(grid,'./input/input.eir.corrupt',ierr)
46  IF(ierr.NE.300) THEN
47  WRITE(*,*) "ERROR after GRIDMAN_ADDSURF2D_READ_ARRAY"
48  WRITE(*,*) "Expected value IERR=300, IERR ",ierr
49  stop "TEST_ADDSURF TERMINATED"
50  END IF
51 
52  CALL gridman_addsurf2d_read('./input/input.eir',
53  c nsurf,x,y,isrf,ierr)
54  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
55  CALL gridman_addsurf2grid_2d(grid,nsurf,x,y,isrf,ierr)
56  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
57 
58  CALL gridman_addsurf2d_read(grid,'./input/input.eir',ierr)
59  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
60 
61  IF(grid%NEDGES.NE.180_gridman_sp) THEN
62  WRITE(*,*) "ERROR after GRIDMAN_ADDSURF2D_READ"
63  WRITE(*,*) "Expected value NEDGES=180, NEDGES ",grid%NEDGES
64  stop "TEST_ADDSURF TERMINATED"
65  END IF
66 
67  ip1=grid%POINTS(1,180)
68  ip2=grid%POINTS(2,180)
69  x1=grid%X(1,ip1)
70  y1=grid%X(2,ip1)
71  x2=grid%X(1,ip2)
72  y2=grid%X(2,ip2)
73  IF(abs(x1-491.389000000000).GT.gridman_tol*abs(x1).OR.
74  f abs(y1+394.193000000000).GT.gridman_tol*abs(y1).OR.
75  f abs(x2-481.061000000000).GT.gridman_tol*abs(x2).OR.
76  f abs(y2+390.124000000000).GT.gridman_tol*abs(y2)) THEN
77  WRITE(*,*) "ERROR after GRIDMAN_ADDSURF2D_READ: ",
78  w "wrong coordinates"
79  WRITE(*,*) " X1, Y1, X2, Y2 ",x1,y1,x2,y2
80  WRITE(*,*) "Expected ", 491.389,-394.193,481.061,-390.124
81  stop "TEST_ADDSURF TERMINATED"
82  END IF
83 
84  IF(grid%EDGEINDEX(1)%NELEMENTS.NE.grid%NEDGES) THEN
85  WRITE(*,*) "ERROR after GRIDMAN_ADDSURF2D_READ: ",
86  w "wrong index"
87  WRITE(*,*) " NELEMENETS, NEDGES ",
88  w grid%EDGEINDEX(1)%NELEMENTS,grid%NEDGES
89  stop "TEST_ADDSURF TERMINATED"
90  END IF
91  DO i=1,grid%EDGEINDEX(1)%NELEMENTS
92  ip1=grid%EDGEINDEX(1)%INDEXES(0,i)
93  ip2=grid%EDGEINDEX(1)%INDEXES(1,i)
94  IF(ip1.NE.i.OR.ip2.NE.i) THEN
95  WRITE(*,*) "ERROR after GRIDMAN_ADDSURF2D_READ: ",
96  w "wrong index"
97  WRITE(*,*) " IE, IEDGE, IADD ",i,ip1,ip2
98  stop "TEST_ADDSURF TERMINATED"
99  END IF
100  END DO
101 
102 cc DO I=1,GRID%NEDGES
103 cc WRITE(*,*) " ISRF ",I
104 cc IP1=GRID%POINTS(1,1,I)
105 cc IP2=GRID%POINTS(1,2,I)
106 cc WRITE(*,*) " X1, Y1 ",GRID%X1(IP1),GRID%X2(IP1)
107 cc WRITE(*,*) " X2, Y2 ",GRID%X1(IP2),GRID%X2(IP2)
108 cc END DO
109 
110  ALLOCATE(s(grid%NEDGES))
111  CALL gridman_grid2d_cylareas(grid,s,ierr)
112  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
113 
114  CALL gridman_grid2d_cylvolumes(grid,vol,ierr)
115  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
116 
117  CALL gridman_grid2d_center(grid,xcn,ierr)
118  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
119 
120  ALLOCATE(vn(2,grid%NEDGES))
121  CALL gridman_grid2d_norm(grid,vn,ierr)
122  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
123 
124  CALL gridman_grid2d_isconvex(grid,ltmp,ierr)
125  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
126 
127  CALL gridman_grid2d_crossect(grid,vol,ierr)
128  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
129 
130  CALL gridman_grid_write(grid,'addsrf.grd',ierr)
131  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
132 
133  CALL gridman_grid_copy(grid2,grid,ierr)
134  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
135 
136  CALL gridman_grid_write(grid,'addsrf.grd',ierr)
137  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
138 
139  CALL gridman_grid_read(grid,'addsrf.grd',ierr)
140  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
141 
142  CALL gridman_grid_compare(grid,grid2,res,ierr)
143  IF(ierr.NE.0) stop "TEST_ADDSURF TERMINATED"
144 
145  IF(res.NE.0) THEN
146  WRITE(*,*) "ERROR after GRIDMAN_GRID_READ"
147  WRITE(*,*) "Expected value RES=0, RES ",res
148  stop "TEST_ADDSURF TERMINATED"
149  END IF
150 
151  WRITE(*,*) "TEST_ADDSURF COMPLETED"
152 
153  END PROGRAM test_addsurf
logical, save, public gridman_check
Switch to enforce extra checks of input parameters.
Definition: gridman.f:133
real(gridman_dp), save, public gridman_tol
Tolerance parameter which is used to compare two real numbers.
Definition: gridman.f:127
subroutine gridman_grid2d_cylvolumes(GRID, VCELLS, IERR, ANGLE)
Calculate cylindrical cell volumes.
Definition: grid2d.f:1018
Explicit interfaces to GRIDMAN subroutines and functions.
Definition: gridman.f:251
subroutine gridman_addsurf2grid_2d(GRID, NSURF, X, Y, ISRF, IERR)
Convert planar EIRENE Additional Surfaces into grid object.
Definition: addsurf.f:31
subroutine gridman_grid2d_cylareas(GRID, SEDGES, IERR, ANGLE)
Calculate cylindrical areas of the cell edges.
Definition: grid2d.f:944
Data-type which describes a grid as a set of edges, methods in grid.f.
Definition: gridman.f:168
subroutine gridman_grid2d_center(GRID, XCN, IERR)
Calculate coordinates of the cell centers.
Definition: grid2d.f:559
subroutine gridman_grid2d_isconvex(GRID, ISCONVEX, IERR)
Find if cells are convex polygons or not.
Definition: grid2d.f:830
subroutine gridman_grid_copy(GRID2, GRID1, IERR)
Create a copy of the grid object.
Definition: grid1.f:981
subroutine gridman_grid2d_norm(GRID, VN, IERR)
Calculate unit normal vectors to grid edges.
Definition: grid2d.f:692
Definition of data types, global constants and variables.
Definition: gridman.f:83
subroutine gridman_grid2d_crossect(GRID, SCELLS, IERR)
Calculate cross section area of the cells.
Definition: grid2d.f:483
subroutine gridman_grid_compare(GRID1, GRID2, RES, IERR)
Compare two grid objects.
Definition: grid1.f:1068