@@ -235,71 +235,73 @@ subroutine readxyz (ixyz)
235
235
c
236
236
c for each atom, count and sort its attached atoms
237
237
c
238
- do i = 1 , n
239
- do j = maxval, 1 , - 1
240
- if (i12(j,i) .ne. 0 ) then
241
- n12(i) = j
242
- goto 150
243
- end if
238
+ if (.not. abort) then
239
+ do i = 1 , n
240
+ do j = maxval, 1 , - 1
241
+ if (i12(j,i) .ne. 0 ) then
242
+ n12(i) = j
243
+ goto 150
244
+ end if
245
+ end do
246
+ 150 continue
247
+ call sort (n12(i),i12(1 ,i))
244
248
end do
245
- 150 continue
246
- call sort (n12(i),i12(1 ,i))
247
- end do
248
249
c
249
250
c perform dynamic allocation of some local arrays
250
251
c
251
- nmax = 0
252
- do i = 1 , n
253
- nmax = max (tag(i),nmax)
254
- do j = 1 , n12(i)
255
- nmax = max (i12(j,i),nmax)
252
+ nmax = 0
253
+ do i = 1 , n
254
+ nmax = max (tag(i),nmax)
255
+ do j = 1 , n12(i)
256
+ nmax = max (i12(j,i),nmax)
257
+ end do
256
258
end do
257
- end do
258
- allocate (list(nmax))
259
+ allocate (list(nmax))
259
260
c
260
261
c check for scrambled atom order and attempt to renumber
261
262
c
262
- reorder = .false.
263
- do i = 1 , n
264
- list(tag(i)) = i
265
- if (tag(i) .ne. i) reorder = .true.
266
- end do
267
- if (reorder) then
268
- write (iout,160 )
269
- 160 format (/ ,' READXYZ -- Atom Labels not Sequential,' ,
270
- & ' Attempting to Renumber' )
263
+ reorder = .false.
271
264
do i = 1 , n
272
- tag(i) = i
273
- do j = 1 , n12(i)
274
- i12(j,i) = list(i12(j,i))
275
- end do
276
- call sort (n12(i),i12(1 ,i))
265
+ list(tag(i)) = i
266
+ if (tag(i) .ne. i) reorder = .true.
277
267
end do
278
- end if
268
+ if (reorder) then
269
+ write (iout,160 )
270
+ 160 format (/ ,' READXYZ -- Atom Labels not Sequential,' ,
271
+ & ' Attempting to Renumber' )
272
+ do i = 1 , n
273
+ tag(i) = i
274
+ do j = 1 , n12(i)
275
+ i12(j,i) = list(i12(j,i))
276
+ end do
277
+ call sort (n12(i),i12(1 ,i))
278
+ end do
279
+ end if
279
280
c
280
281
c perform deallocation of some local arrays
281
282
c
282
- deallocate (list)
283
+ deallocate (list)
283
284
c
284
285
c check for atom pairs with identical coordinates
285
286
c
286
- clash = .false.
287
- if (n .le. 10000 ) call chkxyz (clash)
287
+ clash = .false.
288
+ if (n .le. 10000 ) call chkxyz (clash)
288
289
c
289
290
c make sure all atom connectivities are bidirectional
290
291
c
291
- do i = 1 , n
292
- do j = 1 , n12(i)
293
- k = i12(j,i)
294
- do m = 1 , n12(k)
295
- if (i12(m,k) .eq. i) goto 180
292
+ do i = 1 , n
293
+ do j = 1 , n12(i)
294
+ k = i12(j,i)
295
+ do m = 1 , n12(k)
296
+ if (i12(m,k) .eq. i) goto 180
297
+ end do
298
+ write (iout,170 ) k,i
299
+ 170 format (/ ,' READXYZ -- Check Connection of Atoms' ,
300
+ & i9,' and' ,i9)
301
+ call fatal
302
+ 180 continue
296
303
end do
297
- write (iout,170 ) k,i
298
- 170 format (/ ,' READXYZ -- Check Connection of Atoms' ,
299
- & i9,' and' ,i9)
300
- call fatal
301
- 180 continue
302
304
end do
303
- end do
305
+ end if
304
306
return
305
307
end
0 commit comments