29 INTEGER :: ierr,res,is,itmp2
30 INTEGER(GRIDMAN_SP),
ALLOCATABLE :: elmap(:)
31 INTEGER(GRIDMAN_SP) ::itmp,n,nmin,nmax,i
32 INTEGER(GRIDMAN_SP) :: elmap_test(8)=(/4,5,6,7,0,1,2,3/)
33 INTEGER(GRIDMAN_SP),
PARAMETER :: n12_1=7,n12_2=7
34 INTEGER(GRIDMAN_SP) :: imap12_1(2,n12_1),imap12_2(2,n12_2)
44 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
46 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_CHECK"
47 WRITE(*,*)
" expected value 1, RES ",res
48 stop
"TEST_INDEX TERMINATED"
53 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
56 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
58 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_CHECK"
59 WRITE(*,*)
" expected value 0, RES ",res
60 stop
"TEST_INDEX TERMINATED"
66 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
68 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_CHECK"
69 WRITE(*,*)
" expected value 2, RES ",res
70 stop
"TEST_INDEX TERMINATED"
77 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
79 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_CHECK"
80 WRITE(*,*)
" expected value 2, RES ",res
81 stop
"TEST_INDEX TERMINATED"
88 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
90 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_CHECK"
91 WRITE(*,*)
" expected value 4, RES ",res
92 stop
"TEST_INDEX TERMINATED"
99 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
101 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_CHECK"
102 WRITE(*,*)
" expected value 4, RES ",res
103 stop
"TEST_INDEX TERMINATED"
113 OPEN(3,file=
'test.ind',status=
'REPLACE',iostat=is)
114 IF(is.NE.0) stop
"ERROR: CAN'T CREATE test.ind"
117 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
119 OPEN(3,file=
'test.ind',status=
'OLD',iostat=is)
120 IF(is.NE.0) stop
"ERROR: CAN'T OPEN test.ind"
123 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
126 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
128 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_COMPARE after READ/WRITE"
129 WRITE(*,*)
" expected value 0, RES ",res
130 stop
"TEST_INDEX TERMINATED"
134 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
136 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
144 ind1%INDEXES(:,1)=(/6,6,7/)
145 ind1%INDEXES(:,2)=(/2,1,1/)
146 ind1%INDEXES(:,3)=(/2,2,1/)
147 ind1%INDEXES(:,4)=(/5,3,2/)
148 ind1%INDEXES(:,5)=(/4,4,3/)
149 ind1%INDEXES(:,6)=(/4,5,3/)
150 ind1%INDEXES(:,7)=(/4,6,3/)
151 ind1%DESCRIPTION=
"2D"
155 OPEN(3,file=
'test.ind',status=
'REPLACE',iostat=is)
156 IF(is.NE.0) stop
"ERROR: CAN'T CREATE test.ind"
159 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
161 OPEN(3,file=
'test.ind',status=
'OLD',iostat=is)
162 IF(is.NE.0) stop
"ERROR: CAN'T OPEN test.ind"
165 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
168 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
170 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_COMPARE"
171 WRITE(*,*)
" expected value 0, RES ",res
172 stop
"TEST_INDEX TERMINATED"
184 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
186 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_COMPARE"
187 WRITE(*,*)
" expected value 1, RES ",res
188 stop
"TEST_INDEX TERMINATED"
195 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
197 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_COMPARE"
198 WRITE(*,*)
" expected value 1, RES ",res
199 stop
"TEST_INDEX TERMINATED"
205 itmp=ind2%INDEXES(0,2)
208 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
210 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_COMPARE"
211 WRITE(*,*)
" expected value 2, RES ",res
212 stop
"TEST_INDEX TERMINATED"
214 ind2%INDEXES(0,2)=itmp
216 itmp=ind1%INDEXES(2,3)
219 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
221 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_COMPARE"
222 WRITE(*,*)
" expected value 3, RES ",res
223 stop
"TEST_INDEX TERMINATED"
225 ind1%INDEXES(2,3)=itmp
227 ind2%DESCRIPTION=
'leer'
229 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
231 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_COMPARE"
232 WRITE(*,*)
" expected value 4, RES ",res
233 stop
"TEST_INDEX TERMINATED"
237 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
245 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_CHECK"
246 WRITE(*,*)
" expected value 150, IERR ",ierr
247 stop
"TEST_INDEX TERMINATED"
250 ind2%INDEXES(:,1)=(/6,1,1/)
251 ind2%INDEXES(:,2)=(/7,2,1/)
252 ind2%INDEXES(:,3)=(/8,2,1/)
253 ind2%INDEXES(:,4)=(/1,2,2/)
254 ind2%INDEXES(:,5)=(/2,4,3/)
255 ind2%INDEXES(:,6)=(/3,5,4/)
256 ind2%INDEXES(:,7)=(/4,6,3/)
258 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
260 WRITE(*,*)
" NMIN, NMAX ",nmin,nmax
264 IF(elmap(i).NE.elmap_test(i))
THEN
265 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_ELMAP: ",
266 w
"incorrect ELMAP generated"
267 WRITE(*,*)
" ELMAP ",elmap
268 stop
"TEST_INDEX TERMINATED"
275 imap12_1(1,:)=(/1,2,3,4,5,6,7/)
276 imap12_1(2,:)=(/1,2,3,4,5,6,7/)
278 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
280 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
282 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_TRANSFORM"
283 WRITE(*,*)
" expected value 0, RES ",res
284 stop
"TEST_INDEX TERMINATED"
288 imap12_2(1,:)=(/2,4,4, 7,6,6,6/)
289 imap12_2(2,:)=(/1,2,3,-1,1,2,3/)
291 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
292 IF(ind2%NELEMENTS.NE.11)
THEN
293 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_TRANSFORM"
294 WRITE(*,*)
" Incorrect resulting index"
295 WRITE(*,*)
" Expected NELEMENTS=11, actual value ",
297 stop
"TEST_INDEX TERMINATED"
299 IF( any( ind2%INDEXES(0,:).NE.
300 f (/1,2,3,1,1,2,3,2,3,2,3/) ) )
THEN
301 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_TRANSFORM"
302 WRITE(*,*)
" Incorrect resulting index"
303 WRITE(*,*)
" IND2%INDEXES(0,:) ",ind2%INDEXES(0,:)
304 WRITE(*,*)
" Expected ",(/1,2,3,1,1,2,3,2,3,2,3/)
305 stop
"TEST_INDEX TERMINATED"
307 IF( any( ind2%INDEXES(1,:).NE.
308 f (/6,6,6,1,2,4,4,5,5,6,6/) ) )
THEN
309 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_TRANSFORM"
310 WRITE(*,*)
" Incorrect resulting index"
311 WRITE(*,*)
" IND2%INDEXES(1,:) ",ind2%INDEXES(1,:)
312 WRITE(*,*)
" Expected ",(/6,6,6,1,2,4,4,5,5,6,6/)
313 stop
"TEST_INDEX TERMINATED"
315 IF( any( ind2%INDEXES(2,:).NE.
316 f (/7,7,7,1,1,3,3,3,3,3,3/) ) )
THEN
317 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_TRANSFORM"
318 WRITE(*,*)
" Incorrect resulting index"
319 WRITE(*,*)
" IND2%INDEXES(2,:) ",ind2%INDEXES(2,:)
320 WRITE(*,*)
" Expected ",(/6,6,6,1,3,4,4,5,5,6,6/)
321 stop
"TEST_INDEX TERMINATED"
324 OPEN(3,file=
'transform.ind',status=
'REPLACE',iostat=is)
325 IF(is.NE.0) stop
"ERROR: CAN'T CREATE transform.ind"
328 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
335 ind0%INDEXES(:,1)=(/6,6,7/)
336 ind0%INDEXES(:,2)=(/2,1,1/)
337 ind0%INDEXES(:,3)=(/2,2,1/)
338 ind0%INDEXES(:,4)=(/5,3,2/)
339 ind0%INDEXES(:,5)=(/4,5,3/)
340 ind0%INDEXES(:,6)=(/4,6,3/)
341 ind0%DESCRIPTION=
"2D"
347 ind1%INDEXES(:,1)=(/6,6,7/)
348 ind1%INDEXES(:,2)=(/2,1,1/)
349 ind1%INDEXES(:,3)=(/2,2,1/)
350 ind1%INDEXES(:,4)=(/5,3,2/)
351 ind1%DESCRIPTION=
"2D"
357 ind2%INDEXES(:,1)=(/2,4,3/)
358 ind2%INDEXES(:,2)=(/4,5,3/)
359 ind2%INDEXES(:,3)=(/4,6,3/)
360 ind2%DESCRIPTION=
"2D"
365 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
367 OPEN(3,file=
'merged.ind',status=
'REPLACE',iostat=is)
368 IF(is.NE.0) stop
"ERROR: CAN'T CREATE merged.ind"
371 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
375 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATE"
377 WRITE(*,*)
"ERORR in GRIDMAN_INDEX_MERGE"
378 WRITE(*,*)
"Indexes must be equal"
379 stop
"TEST_INDEX TERMINATED"
383 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
385 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
388 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
390 IF(ierr.NE.0) stop
"TEST_INDEX TERMINATED"
392 WRITE(*,*)
"TEST_INDEX COMPLETED"
394 END PROGRAM test_index
logical, save, public gridman_check
Switch to enforce extra checks of input parameters.
subroutine gridman_index_create121(INDEX, N, IERR)
Create index table for "one-to-one" mapping.
subroutine gridman_index_check(INDEX, RES, IERR)
Check index object.
Explicit interfaces to GRIDMAN subroutines and functions.
subroutine gridman_index_compare(INDEX1, INDEX2, RES, IERR)
Compare two index objects.
subroutine gridman_index_copy(INDEX2, INDEX1, IERR)
Create a copy of the index object.
subroutine gridman_index_transform(INDEX2, INDEX1, IMAP12, N12, IERR)
Transform indices of elements - IND(0,:)
subroutine gridman_index_allocate(INDEX, NINDEX, NELEMENTS, IERR)
Allocate index object.
logical, save, public gridman_dbg
Switch for debugging mode.
subroutine gridman_index_elmap(ELMAP, NMIN, NMAX, INDEX, IERR)
Create an aray which maps elements into the table of indices.
Data-type which stores indices defined on the grid cells or edges.
subroutine gridman_index_merge(INDEX, INDEX1, INDEX2, IERR)
Merge INDEX2 into INDEX1.
subroutine gridman_index_read(INDEX, IIN, IERR)
Read index object from file.
subroutine gridman_index_write(INDEX, IOUT, IERR)
Save index object in a file.
Definition of data types, global constants and variables.
subroutine gridman_index_deallocate(INDEX, IERR)
Allocate index object.