! analyze an aromatic cycle and returns the index of group substituent ! in o, m and para pozition, beginning to top) SUBROUTINE arom_data(top,group,bond,nca,o_sub,m_sub,p_sub) IMPLICIT NONE INCLUDE 'general.h' CHARACTER(LEN=lgr) :: group(mca) INTEGER :: bond(mca,mca) INTEGER :: top,nca INTEGER :: o_sub(2),m_sub(2),p_sub(2) INTEGER :: no_sub,nm_sub,np_sub INTEGER :: track(mco,mca) INTEGER :: trlen(mco) INTEGER :: ntr,i,j,k o_sub=0 m_sub=0 p_sub=0 no_sub=0 nm_sub=0 np_sub=0 CALL gettrack(bond,top,nca,ntr,track,trlen) ! CALL checktrack(group,track,ntr,trlen,nca) DO k=1,ntr IF (group(track(k,2))(1:1).EQ.'C') THEN ! np_sub=np_sub+1 ! p_sub(np_sub)=track(k,2) ELSE IF (group(track(k,2))(1:1).EQ.'c') THEN IF (group(track(k,3))(1:1).EQ.'C') THEN IF (o_sub(1).NE.track(k,3)) THEN no_sub=no_sub+1 o_sub(no_sub)=track(k,3) ENDIF ELSE IF (group(track(k,3))(1:1).EQ.'c') THEN IF (group(track(k,4))(1:1).EQ.'C') THEN IF (m_sub(1).NE.track(k,4)) THEN nm_sub=nm_sub+1 m_sub(nm_sub)=track(k,4) ENDIF ELSE IF (group(track(k,4))(1:1).EQ.'c') THEN IF (group(track(k,5))(1:1).EQ.'C') THEN IF (p_sub(1).NE.track(k,5)) THEN np_sub=np_sub+1 p_sub(np_sub)=track(k,5) ENDIF ENDIF ENDIF ENDIF ENDIF ENDDO END SUBROUTINE arom_path(i,ntr,track,group,bond,path) IMPLICIT NONE INCLUDE 'general.h' INTEGER,INTENT(in) :: track(mco,mca) INTEGER,INTENT(in) :: bond(mca,mca) INTEGER,INTENT(in) :: ntr,i CHARACTER(LEN=lgr),INTENT(in) :: group(mca) INTEGER,INTENT(out) :: path(6) INTEGER :: j,k path(:)=0 DO k=1,ntr IF ((group(track(k,1))(1:1).EQ.'c').AND. & (track(k,2).NE.i).AND. & (group(track(k,2))(1:1).EQ.'c').AND. & (group(track(k,3))(1:1).EQ.'c').AND. & (group(track(k,4))(1:1).EQ.'c').AND. & (group(track(k,5))(1:1).EQ.'c').AND. & (group(track(k,6))(1:1).EQ.'c').AND. & (bond(track(k,1),track(k,6)).EQ.1)) THEN path(1:6)=track(k,1:6) ENDIF ENDDO END