32 u gridman_dbg,gridman_unit,gridman_check
40 INTEGER(GRIDMAN_SP),
INTENT(IN) :: NSURF
42 REAL(GRIDMAN_DP),
INTENT(IN) :: X(2,nsurf)
44 REAL(GRIDMAN_DP),
INTENT(IN) :: Y(2,nsurf)
46 INTEGER(GRIDMAN_SP),
INTENT(IN) :: ISRF(nsurf)
48 INTEGER,
INTENT(OUT) :: IERR
50 INTEGER(GRIDMAN_SP) :: I
54 f
WRITE(gridman_unit,*)
"Starting GRIDMAN_ADDSURF2GRID_2D"
59 WRITE(gridman_unit,*)
"ERROR in GRIDMAN_ADDSURF2GRID_2D: ",
60 w
"incorrect number of edges"
61 WRITE(gridman_unit,*)
" NSURF ",nsurf
67 c 0_gridman_sp,ierr,1,0)
68 IF(ierr.NE.0)
GOTO 100
70 IF(ierr.NE.0)
GOTO 200
74 grid%POINTS(1,i)=2*i-1
76 grid%X(1,2*i-1)=x(1,i)
77 grid%X(2,2*i-1)=y(1,i)
80 grid%EDGEINDEX(1)%INDEXES(0,i)=i
81 grid%EDGEINDEX(1)%INDEXES(1,i)=isrf(i)
85 grid%UNIT2SI=1e-2_gridman_dp
86 grid%UNITS=
'CENTIMETER'
88 grid%DESCRIPTION=
'EIRENE planar Additional Surfaces'
89 grid%EDGEINDEX(1)%DESCRIPTION=
"Index of EIRENE Additional Surface"
90 grid%EDGEINDEX(1)%COLUMNS(1)=
'EIRENE_ADDSURF'
92 IF(gridman_check)
THEN
94 IF(res.NE.0.OR.ierr.GT.0)
THEN
96 WRITE(gridman_unit,*)
"ERROR in GRIDMAN_ADDSURF2GRID_2D: ",
97 w
"the resulting grid is incorrect"
103 f
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF2GRID_2D finished"
106 100
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF2GRID_2D terminated"
108 200
WRITE(gridman_unit,*)
"ERROR in GRIDMAN_ADDSURF2GRID_2D: ",
109 w
"cannot allocate edge index"
129 u gridman_dbg,gridman_unit
136 CHARACTER(*),
INTENT(IN) :: FNAME
138 INTEGER,
INTENT(OUT) :: IERR
140 INTEGER(GRIDMAN_SP) :: NSURF
142 INTEGER(GRIDMAN_SP),
ALLOCATABLE :: ISRF(:)
143 REAL(GRIDMAN_DP),
ALLOCATABLE :: X(:,:),Y(:,:)
146 f
WRITE(gridman_unit,*)
"Starting GRIDMAN_ADDSURF2D_READ_GRID"
151 IF(ierr.NE.0)
GOTO 100
154 IF(ierr.NE.0)
GOTO 100
156 IF(
ALLOCATED(x))
DEALLOCATE(x,stat=st)
157 IF(
ALLOCATED(y))
DEALLOCATE(y,stat=st)
158 IF(
ALLOCATED(isrf))
DEALLOCATE(isrf,stat=st)
161 f
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF2D_READ_GRID finished"
165 100
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF2D_READ_GRID terminated"
166 IF(
ALLOCATED(x))
DEALLOCATE(x,stat=st)
167 IF(
ALLOCATED(y))
DEALLOCATE(y,stat=st)
168 IF(
ALLOCATED(isrf))
DEALLOCATE(isrf,stat=st)
182 u gridman_dbg,gridman_unit,gridman_check
189 INTEGER(GRIDMAN_SP),
INTENT(IN) :: NSURF
191 REAL(GRIDMAN_DP),
INTENT(IN) :: X(3,nsurf)
193 REAL(GRIDMAN_DP),
INTENT(IN) :: Y(3,nsurf)
195 REAL(GRIDMAN_DP),
INTENT(IN) :: Z(3,nsurf)
197 INTEGER(GRIDMAN_SP),
INTENT(IN) :: ISRF(nsurf)
199 INTEGER,
INTENT(OUT) :: IERR
201 INTEGER(GRIDMAN_SP) :: I
205 f
WRITE(gridman_unit,*)
"Starting GRIDMAN_ADDSURF2GRID_3D"
210 WRITE(gridman_unit,*)
"ERROR in GRIDMAN_ADDSURF2GRID_3D: ",
211 w
"incorrect number of edges"
212 WRITE(gridman_unit,*)
" NSURF ",nsurf
218 a 0_gridman_sp,ierr,1,0)
219 IF(ierr.NE.0)
GOTO 100
221 IF(ierr.NE.0)
GOTO 200
225 grid%POINTS(1,i)=3*i-2
226 grid%POINTS(2,i)=3*i-1
228 grid%X(1,3*i-2)=x(1,i)
229 grid%X(2,3*i-2)=y(1,i)
230 grid%X(3,3*i-2)=z(1,i)
231 grid%X(1,3*i-1)=x(2,i)
232 grid%X(2,3*i-1)=y(2,i)
233 grid%X(3,3*i-1)=z(2,i)
237 grid%EDGEINDEX(1)%INDEXES(0,i)=i
238 grid%EDGEINDEX(1)%INDEXES(1,i)=isrf(i)
242 grid%UNIT2SI=1e-2_gridman_dp
243 grid%UNITS=
'CENIMETER'
245 grid%DESCRIPTION=
'EIRENE triangular Additional Surfaces'
246 grid%EDGEINDEX(1)%DESCRIPTION=
"Index of EIRENE Additional Surface"
247 grid%EDGEINDEX(1)%COLUMNS(1)=
'EIRENE_ADDSURF'
249 IF(gridman_check)
THEN
251 IF(res.NE.0.OR.ierr.GT.0)
THEN
253 WRITE(gridman_unit,*)
"ERROR in GRIDMAN_ADDSURF2GRID_3D: ",
254 w
"the resulting grid is incorrect"
260 f
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF2GRID_3D finished"
263 100
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF2GRID_3D terminated"
265 200
WRITE(gridman_unit,*)
"ERROR in GRIDMAN_ADDSURF2GRID_3D: ",
266 w
"cannot allocate edge index"
285 u gridman_dbg,gridman_unit
292 CHARACTER(*),
INTENT(IN) :: FNAME
294 INTEGER,
INTENT(OUT) :: IERR
296 INTEGER(GRIDMAN_SP) :: NSURF
298 INTEGER(GRIDMAN_SP) ,
ALLOCATABLE :: ISRF(:)
299 REAL(GRIDMAN_DP),
ALLOCATABLE :: X(:,:),Y(:,:),Z(:,:)
302 f
WRITE(gridman_unit,*)
"Starting GRIDMAN_ADDSURF3D_READ_GRID"
307 IF(ierr.NE.0)
GOTO 100
310 IF(ierr.NE.0)
GOTO 100
312 IF(
ALLOCATED(x))
DEALLOCATE(x,stat=st)
313 IF(
ALLOCATED(y))
DEALLOCATE(y,stat=st)
314 IF(
ALLOCATED(z))
DEALLOCATE(z,stat=st)
315 IF(
ALLOCATED(isrf))
DEALLOCATE(isrf,stat=st)
318 f
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF3D_READ_GRID finished"
322 100
WRITE(gridman_unit,*)
"GRIDMAN_ADDSURF3D_READ_GRID terminated"
323 IF(
ALLOCATED(x))
DEALLOCATE(x,stat=st)
324 IF(
ALLOCATED(y))
DEALLOCATE(y,stat=st)
325 IF(
ALLOCATED(z))
DEALLOCATE(z,stat=st)
326 IF(
ALLOCATED(isrf))
DEALLOCATE(isrf,stat=st)
subroutine gridman_grid_check(GRID, RES, IERR)
Check consistency of the grid data.
integer, parameter, public gridman_dp
Kind parameter for real numbers.
subroutine gridman_addsurf2d_read_grid(GRID, FNAME, IERR)
Read planar EIRENE Additional Surfaces and convert them into (2D) grid object.
Explicit interfaces to GRIDMAN subroutines and functions.
subroutine gridman_addsurf2grid_2d(GRID, NSURF, X, Y, ISRF, IERR)
Convert planar EIRENE Additional Surfaces into grid object.
subroutine gridman_grid_allocate(GRID, TYPE, NEDGES, NPOINTS, NCELLS, IERR, NEDGEINDEX, NCELLINDEX)
Allocate GRIDMAN_GRID object.
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_grid_deallocate(GRID, IERR)
Deallocate grid object.
subroutine gridman_index_allocate(INDEX, NINDEX, NELEMENTS, IERR)
Allocate index object.
subroutine gridman_addsurf3d_read_grid(GRID, FNAME, IERR)
Read triangular EIRENE Additional Surfaces and convert them into (3D) grid object.
subroutine gridman_addsurf2grid_3d(GRID, NSURF, X, Y, Z, ISRF, IERR)
Convert triangular elements (EIRENE additional surfaces) into (3D) grid object.
Definition of data types, global constants and variables.
integer, parameter, public gridman_sp
Kind parameter for integer numbers.