hdiff output

r30489/keywords.f 2016-05-21 12:30:04.855880822 +0100 r30488/keywords.f 2016-05-21 12:30:05.627891022 +0100
4781:                IF (NITEMS.GT.2) CALL READF(RBCUTOFF)4781:                IF (NITEMS.GT.2) CALL READF(RBCUTOFF)
4782:                IF (NITEMS.GT.3) CALL READI(NRBTRIES)4782:                IF (NITEMS.GT.3) CALL READI(NRBTRIES)
4783:                PRINT '(A)',' keyword> Local rigid body permutational alignment:'4783:                PRINT '(A)',' keyword> Local rigid body permutational alignment:'
4784:                PRINT '(2(A,F12.4),A,I6)','          distance tolerance=',LPDGEOMDIFFTOL,' cutoff=',RBCUTOFF,4784:                PRINT '(2(A,F12.4),A,I6)','          distance tolerance=',LPDGEOMDIFFTOL,' cutoff=',RBCUTOFF,
4785:      &         ' number of passes through alignment phase=',NRBTRIES4785:      &         ' number of passes through alignment phase=',NRBTRIES
4786:             ELSEIF (WORD.EQ.'LPERMDIST') THEN4786:             ELSEIF (WORD.EQ.'LPERMDIST') THEN
4787:                LPERMDIST=.TRUE.4787:                LPERMDIST=.TRUE.
4788:                IF (NITEMS.GT.1) CALL READI(LOCALPERMNEIGH)4788:                IF (NITEMS.GT.1) CALL READI(LOCALPERMNEIGH)
4789:                IF (NITEMS.GT.2) CALL READF(LOCALPERMCUT)4789:                IF (NITEMS.GT.2) CALL READF(LOCALPERMCUT)
4790:                IF (NITEMS.GT.3) CALL READF(LOCALPERMCUT2)4790:                IF (NITEMS.GT.3) CALL READF(LOCALPERMCUT2)
4791:                IF (NITEMS.GT.4) CALL READF(ORBITTOL) 
4792:                ! IF (NITEMS.GT.3) CALL READI(LOCALPERMMAXSEP)4791:                ! IF (NITEMS.GT.3) CALL READI(LOCALPERMMAXSEP)
4793:                PRINT '(A,F15.5)',' keyword> Local permutational alignment: alignment threshold=',LOCALPERMCUT4792:                PRINT '(A,F15.5)',' keyword> Local permutational alignment: alignment threshold=',LOCALPERMCUT
4794:                PRINT '(A,F15.5)',' keyword> Local permutational alignment: alignment cutoff=   ',LOCALPERMCUT24793:                PRINT '(A,F15.5)',' keyword> Local permutational alignment: alignment cutoff=   ',LOCALPERMCUT2
4795:                PRINT '(A,F15.5)',' keyword> Distance tolerance for distinguishing atoms in the same orbit=',ORBITTOL 
4796:             ELSEIF (WORD.EQ.'PERMDIST') THEN4794:             ELSEIF (WORD.EQ.'PERMDIST') THEN
4797:                IF (NITEMS.GT.1) CALL READF(ORBITTOL)4795:                IF (NITEMS.GT.1) CALL READF(ORBITTOL)
4798:                IF (NITEMS.GT.2) CALL READI(MAXNSETS)4796:                IF (NITEMS.GT.2) CALL READI(MAXNSETS)
4799:                PRINT '(A,F15.5)',' keyword> Distance tolerance for distinguishing atoms in the same orbit=',ORBITTOL4797:                PRINT '(A,F15.5)',' keyword> Distance tolerance for distinguishing atoms in the same orbit=',ORBITTOL
4800:                PRINT '(A,I3)',' keyword> Maximum number of secondary sets in perm.allow file=', MAXNSETS4798:                PRINT '(A,I3)',' keyword> Maximum number of secondary sets in perm.allow file=', MAXNSETS
4801:             ENDIF4799:             ENDIF
4802: 4800: 
4803:             INQUIRE(FILE='perm.allow',EXIST=PERMFILE)4801:             INQUIRE(FILE='perm.allow',EXIST=PERMFILE)
4804:             IF (PERMFILE) THEN4802:             IF (PERMFILE) THEN
4805:                OPEN(UNIT=1,FILE='perm.allow',STATUS='OLD')4803:                OPEN(UNIT=1,FILE='perm.allow',STATUS='OLD')


r30489/lopermdist.f90 2016-05-21 12:30:05.047883358 +0100 r30488/lopermdist.f90 2016-05-21 12:30:05.819893561 +0100
 96: !  and is evaluated as a sum of local distances squared for permutable groups. 96: !  and is evaluated as a sum of local distances squared for permutable groups.
 97: !  We return to label 10 after every round of permutational/orientational alignment 97: !  We return to label 10 after every round of permutational/orientational alignment
 98: !  unless we have converged to the identity permutation. 98: !  unless we have converged to the identity permutation.
 99: ! 99: !
100: !  The maximum number of pair exchanges associated with a group is two.100: !  The maximum number of pair exchanges associated with a group is two.
101: ! 101: ! 
102: DO J1=1,NATOMS102: DO J1=1,NATOMS
103:    NEWPERM(J1)=J1103:    NEWPERM(J1)=J1
104: ENDDO104: ENDDO
105: DSUM=0.0D0105: DSUM=0.0D0
106: LOCALPERMNEIGH=MIN(LOCALPERMNEIGH,NATOMS) 
107: 106: 
108: NDUMMY=1107: NDUMMY=1
109: DO J1=1,NPERMGROUP108: DO J1=1,NPERMGROUP
110:    PATOMS=NPERMSIZE(J1)109:    PATOMS=NPERMSIZE(J1)
111: !  PRINT '(A,I6,A,I6)','group ',J1,' size=',NPERMSIZE(J1) 
112: !  PRINT '(A)','members:' 
113: !  DO J2=1,PATOMS 
114: !     PRINT '(20I6)',NEWPERM(PERMGROUP(NDUMMY+J2-1)) 
115: !  ENDDO 
116:    LDBEST(J1)=1.0D100110:    LDBEST(J1)=1.0D100
117:    TRIED(1:NATOMS)=0111:    TRIED(1:NATOMS)=0
118:    DO J2=1,PATOMS112:    DO J2=1,PATOMS
119:       LPERMBEST(J2)=J2113:       LPERMBEST(J2)=J2
120:    ENDDO114:    ENDDO
121:    XA=0.0D0; YA=0.0D0; ZA=0.0D0115:    XA=0.0D0; YA=0.0D0; ZA=0.0D0
122:    XB=0.0D0; YB=0.0D0; ZB=0.0D0116:    XB=0.0D0; YB=0.0D0; ZB=0.0D0
123:    DMEAN(1:LOCALPERMNEIGH)=1.0D100117:    DMEAN(1:LOCALPERMNEIGH)=1.0D100
124:    DO J2=1,PATOMS118:    DO J2=1,PATOMS
125: !     TRIED(NEWPERM(PERMGROUP(NDUMMY+J2-1)))=-1119:       TRIED(NEWPERM(PERMGROUP(NDUMMY+J2-1)))=-1
126:       TRIED(PERMGROUP(NDUMMY+J2-1))=-1 
127:       PDUMMYA(3*(J2-1)+1)=DUMMYA(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+1)120:       PDUMMYA(3*(J2-1)+1)=DUMMYA(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+1)
128:       PDUMMYA(3*(J2-1)+2)=DUMMYA(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+2)121:       PDUMMYA(3*(J2-1)+2)=DUMMYA(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+2)
129:       PDUMMYA(3*(J2-1)+3)=DUMMYA(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+3)122:       PDUMMYA(3*(J2-1)+3)=DUMMYA(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+3)
130: !     PDUMMYB(3*(J2-1)+1)=DUMMYB(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+1)123:       PDUMMYB(3*(J2-1)+1)=DUMMYB(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+1)
131: !     PDUMMYB(3*(J2-1)+2)=DUMMYB(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+2)124:       PDUMMYB(3*(J2-1)+2)=DUMMYB(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+2)
132: !     PDUMMYB(3*(J2-1)+3)=DUMMYB(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+3)125:       PDUMMYB(3*(J2-1)+3)=DUMMYB(3*(NEWPERM(PERMGROUP(NDUMMY+J2-1))-1)+3)
133:       PDUMMYB(3*(J2-1)+1)=DUMMYB(3*(PERMGROUP(NDUMMY+J2-1)-1)+1) 
134:       PDUMMYB(3*(J2-1)+2)=DUMMYB(3*(PERMGROUP(NDUMMY+J2-1)-1)+2) 
135:       PDUMMYB(3*(J2-1)+3)=DUMMYB(3*(PERMGROUP(NDUMMY+J2-1)-1)+3) 
136:       XA=XA+PDUMMYA(3*(J2-1)+1)126:       XA=XA+PDUMMYA(3*(J2-1)+1)
137:       YA=YA+PDUMMYA(3*(J2-1)+2)127:       YA=YA+PDUMMYA(3*(J2-1)+2)
138:       ZA=ZA+PDUMMYA(3*(J2-1)+3)128:       ZA=ZA+PDUMMYA(3*(J2-1)+3)
139:       XB=XB+PDUMMYB(3*(J2-1)+1)129:       XB=XB+PDUMMYB(3*(J2-1)+1)
140:       YB=YB+PDUMMYB(3*(J2-1)+2)130:       YB=YB+PDUMMYB(3*(J2-1)+2)
141:       ZB=ZB+PDUMMYB(3*(J2-1)+3)131:       ZB=ZB+PDUMMYB(3*(J2-1)+3)
142:    ENDDO132:    ENDDO
143:    XA=XA/PATOMS; YA=YA/PATOMS; ZA=ZA/PATOMS133:    XA=XA/PATOMS; YA=YA/PATOMS; ZA=ZA/PATOMS
144:    XB=XB/PATOMS; YB=YB/PATOMS; ZB=ZB/PATOMS134:    XB=XB/PATOMS; YB=YB/PATOMS; ZB=ZB/PATOMS
145:    SPDUMMYA(1:3*PATOMS)=PDUMMYA(1:3*PATOMS)135:    SPDUMMYA(1:3*PATOMS)=PDUMMYA(1:3*PATOMS)
163: !153: !
164: ! Don't allow members of the same permutational group 154: ! Don't allow members of the same permutational group 
165: ! to appear as reference neighbours.155: ! to appear as reference neighbours.
166: !156: !
167:       IF (TRIED(J2).EQ.-1) THEN157:       IF (TRIED(J2).EQ.-1) THEN
168:          XDUMMY=1.0D9158:          XDUMMY=1.0D9
169:       ELSE159:       ELSE
170:          DA=(XA-DUMMYA(3*(NEWPERM(J2)-1)+1))**2 &160:          DA=(XA-DUMMYA(3*(NEWPERM(J2)-1)+1))**2 &
171:   &        +(YA-DUMMYA(3*(NEWPERM(J2)-1)+2))**2 &161:   &        +(YA-DUMMYA(3*(NEWPERM(J2)-1)+2))**2 &
172:   &        +(ZA-DUMMYA(3*(NEWPERM(J2)-1)+3))**2162:   &        +(ZA-DUMMYA(3*(NEWPERM(J2)-1)+3))**2
173: !        DB=(XB-DUMMYB(3*(NEWPERM(J2)-1)+1))**2 &163:          DB=(XB-DUMMYB(3*(NEWPERM(J2)-1)+1))**2 &
174: ! &        +(YB-DUMMYB(3*(NEWPERM(J2)-1)+2))**2 &164:   &        +(YB-DUMMYB(3*(NEWPERM(J2)-1)+2))**2 &
175: ! &        +(ZB-DUMMYB(3*(NEWPERM(J2)-1)+3))**2165:   &        +(ZB-DUMMYB(3*(NEWPERM(J2)-1)+3))**2
176:          DB=(XB-DUMMYB(3*(J2-1)+1))**2 & 
177:   &        +(YB-DUMMYB(3*(J2-1)+2))**2 & 
178:   &        +(ZB-DUMMYB(3*(J2-1)+3))**2 
179:          XDUMMY=(SQRT(DA)+SQRT(DB))/2.0D0166:          XDUMMY=(SQRT(DA)+SQRT(DB))/2.0D0
180:       ENDIF167:       ENDIF
181:       loop1: DO J3=1,J2168:       loop1: DO J3=1,J2
182:          IF (XDUMMY.LT.DMEAN(J3)) THEN169:          IF (XDUMMY.LT.DMEAN(J3)) THEN
183: !170: !
184: ! Move the rest down.171: ! Move the rest down.
185: !172: !
186:             DO J4=J2,J3+1,-1173:             DO J4=J2,J3+1,-1
187:                DMEAN(J4)=DMEAN(J4-1)174:                DMEAN(J4)=DMEAN(J4-1)
188:                SORTLIST(J4)=SORTLIST(J4-1)175:                SORTLIST(J4)=SORTLIST(J4-1)
189:             ENDDO176:             ENDDO
190:             DMEAN(J3)=XDUMMY177:             DMEAN(J3)=XDUMMY
191:             SORTLIST(J3)=J2178:             SORTLIST(J3)=J2
192:             EXIT loop1179:             EXIT loop1
193:          ENDIF180:          ENDIF
194:       ENDDO loop1181:       ENDDO loop1
195:    ENDDO outer1182:    ENDDO outer1
 183: !  IF (J1.EQ.16) THEN
 184: !     PRINT '(A)','SORTLIST:'
 185: !     PRINT '(20I5)',SORTLIST(1:NATOMS)
 186: !     PRINT '(A)','DMEAN:'
 187: !     PRINT '(10G10.4)',DMEAN(1:NATOMS)
 188: !  ENDIF
196: 189: 
197: 71 CONTINUE190: 71 CONTINUE
198:    PDUMMYA(1:3*PATOMS)=SPDUMMYA(1:3*PATOMS)191:    PDUMMYA(1:3*PATOMS)=SPDUMMYA(1:3*PATOMS)
199:    PDUMMYB(1:3*PATOMS)=SPDUMMYB(1:3*PATOMS)192:    PDUMMYB(1:3*PATOMS)=SPDUMMYB(1:3*PATOMS)
200: 193: 
201:    LDBESTATOM=1.0D100194:    LDBESTATOM=1.0D100
202:    NOTHER=0195:    NOTHER=0
203:    DO J2=1,NATOMS196:    DO J2=1,NATOMS
204:       IF (TRIED(J2).EQ.1) THEN197:       IF (TRIED(J2).EQ.1) THEN
205:          NOTHER=NOTHER+1198:          NOTHER=NOTHER+1
249:             PRINT '(A,I6,A)',' lopermdist> ERROR *** Partner atom ',DLIST(NOTHER),' has already been tried'242:             PRINT '(A,I6,A)',' lopermdist> ERROR *** Partner atom ',DLIST(NOTHER),' has already been tried'
250:             STOP243:             STOP
251:          ENDIF244:          ENDIF
252:       ENDDO245:       ENDDO
253:    ENDIF246:    ENDIF
254:    247:    
255:    DO J2=1,NOTHER248:    DO J2=1,NOTHER
256:       PDUMMYA(3*(PATOMS+J2-1)+1)=DUMMYA(3*(NEWPERM(DLIST(J2))-1)+1)249:       PDUMMYA(3*(PATOMS+J2-1)+1)=DUMMYA(3*(NEWPERM(DLIST(J2))-1)+1)
257:       PDUMMYA(3*(PATOMS+J2-1)+2)=DUMMYA(3*(NEWPERM(DLIST(J2))-1)+2)250:       PDUMMYA(3*(PATOMS+J2-1)+2)=DUMMYA(3*(NEWPERM(DLIST(J2))-1)+2)
258:       PDUMMYA(3*(PATOMS+J2-1)+3)=DUMMYA(3*(NEWPERM(DLIST(J2))-1)+3)251:       PDUMMYA(3*(PATOMS+J2-1)+3)=DUMMYA(3*(NEWPERM(DLIST(J2))-1)+3)
259: !     PDUMMYB(3*(PATOMS+J2-1)+1)=DUMMYB(3*(NEWPERM(DLIST(J2))-1)+1)252:       PDUMMYB(3*(PATOMS+J2-1)+1)=DUMMYB(3*(NEWPERM(DLIST(J2))-1)+1)
260: !     PDUMMYB(3*(PATOMS+J2-1)+2)=DUMMYB(3*(NEWPERM(DLIST(J2))-1)+2)253:       PDUMMYB(3*(PATOMS+J2-1)+2)=DUMMYB(3*(NEWPERM(DLIST(J2))-1)+2)
261: !     PDUMMYB(3*(PATOMS+J2-1)+3)=DUMMYB(3*(NEWPERM(DLIST(J2))-1)+3)254:       PDUMMYB(3*(PATOMS+J2-1)+3)=DUMMYB(3*(NEWPERM(DLIST(J2))-1)+3)
262:       PDUMMYB(3*(PATOMS+J2-1)+1)=DUMMYB(3*(DLIST(J2)-1)+1) 
263:       PDUMMYB(3*(PATOMS+J2-1)+2)=DUMMYB(3*(DLIST(J2)-1)+2) 
264:       PDUMMYB(3*(PATOMS+J2-1)+3)=DUMMYB(3*(DLIST(J2)-1)+3) 
265:    ENDDO255:    ENDDO
266: !256: !
267: ! Save PDUMMYA and PDUMMYB for cycling over possible orbits in MYORIENT alignment.257: ! Save PDUMMYA and PDUMMYB for cycling over possible orbits in MYORIENT alignment.
268: !258: !
269:    SPDUMMYA(3*PATOMS+1:3*(PATOMS+NOTHER))=PDUMMYA(3*PATOMS+1:3*(PATOMS+NOTHER))259:    SPDUMMYA(3*PATOMS+1:3*(PATOMS+NOTHER))=PDUMMYA(3*PATOMS+1:3*(PATOMS+NOTHER))
270:    SPDUMMYB(3*PATOMS+1:3*(PATOMS+NOTHER))=PDUMMYB(3*PATOMS+1:3*(PATOMS+NOTHER))260:    SPDUMMYB(3*PATOMS+1:3*(PATOMS+NOTHER))=PDUMMYB(3*PATOMS+1:3*(PATOMS+NOTHER))
271:    NCHOOSEB1=0261:    NCHOOSEB1=0
272: 66 NCHOOSEB1=NCHOOSEB1+1262: 66 NCHOOSEB1=NCHOOSEB1+1
273:    NCHOOSEB2=0263:    NCHOOSEB2=0
274: 31 NCHOOSEB2=NCHOOSEB2+1264: 31 NCHOOSEB2=NCHOOSEB2+1
280: ! Reset the coordinates of the PATOMS+NOTHER atoms in PDUMMYA and PDUMMYB270: ! Reset the coordinates of the PATOMS+NOTHER atoms in PDUMMYA and PDUMMYB
281: ! to the subset of atoms from COORDSA and COORDSB.271: ! to the subset of atoms from COORDSA and COORDSB.
282: !272: !
283:    PDUMMYA(1:3*(PATOMS+NOTHER))=SPDUMMYA(1:3*(PATOMS+NOTHER))273:    PDUMMYA(1:3*(PATOMS+NOTHER))=SPDUMMYA(1:3*(PATOMS+NOTHER))
284:    PDUMMYB(1:3*(PATOMS+NOTHER))=SPDUMMYB(1:3*(PATOMS+NOTHER))274:    PDUMMYB(1:3*(PATOMS+NOTHER))=SPDUMMYB(1:3*(PATOMS+NOTHER))
285: 275: 
286:    CALL MYORIENT(PDUMMYA,DUMMY,NORBIT1,NCHOOSE1,NORBIT2,NCHOOSE2,PATOMS+NOTHER,DEBUG,ROTA,ROTINVA,STOCKT)276:    CALL MYORIENT(PDUMMYA,DUMMY,NORBIT1,NCHOOSE1,NORBIT2,NCHOOSE2,PATOMS+NOTHER,DEBUG,ROTA,ROTINVA,STOCKT)
287:    PDUMMYA(1:3*(PATOMS+NOTHER))=DUMMY(1:3*(PATOMS+NOTHER))277:    PDUMMYA(1:3*(PATOMS+NOTHER))=DUMMY(1:3*(PATOMS+NOTHER))
288:    CALL MYORIENT(PDUMMYB,DUMMY,NORBITB1,NCHOOSEB1,NORBITB2,NCHOOSEB2,PATOMS+NOTHER,DEBUG,ROTB,ROTINVB,STOCKT)278:    CALL MYORIENT(PDUMMYB,DUMMY,NORBITB1,NCHOOSEB1,NORBITB2,NCHOOSEB2,PATOMS+NOTHER,DEBUG,ROTB,ROTINVB,STOCKT)
289:    PDUMMYB(1:3*(PATOMS+NOTHER))=DUMMY(1:3*(PATOMS+NOTHER))279:    PDUMMYB(1:3*(PATOMS+NOTHER))=DUMMY(1:3*(PATOMS+NOTHER))
290:  
291: !280: !
292: ! Optimimise permutational isomer for the standard orientation for the281: ! Optimimise permutational isomer for the standard orientation for the
293: ! current choice of atoms from the possible orbits.282: ! current choice of atoms from the possible orbits.
294: !283: !
295: ! MINPERM does not change PDUMMYB and PDUMMYA.284: ! MINPERM does not change PDUMMYB and PDUMMYA.
296: !285: !
297: ! Note that LDISTANCE is actually the distance squared. LDBEST also has dimensions of286: ! Note that LDISTANCE is actually the distance squared. LDBEST also has dimensions of
298: ! length squared.287: ! length squared.
299: !288: !
300:    LDISTANCE=0.0D0289:    LDISTANCE=0.0D0
301:    CALL MINPERM(PATOMS+NOTHER, PDUMMYB, PDUMMYA, BOXLX, BOXLY, BOXLZ, BULKT, LPERM, LDISTANCE, DIST2, WORSTRAD) 290:    CALL MINPERM(PATOMS+NOTHER, PDUMMYB, PDUMMYA, BOXLX, BOXLY, BOXLZ, BULKT, LPERM, LDISTANCE, DIST2, WORSTRAD) 
302: !  PRINT '(A,I6,A,I6)','for group ',J1,' size=',NPERMSIZE(J1)291: !  PRINT '(A,I6,3G20.10)','J1,LDBEST(J1),LDISTANCE=',J1,LDBEST(J1),LDISTANCE
303: !  PRINT '(A)','original and new atom labels:' 
304: !  DO J2=1,PATOMS 
305: !     PRINT '(2I6)',PERMGROUP(NDUMMY+J2-1),NEWPERM(PERMGROUP(NDUMMY+J2-1)) 
306: !  ENDDO 
307:     
308: !  PRINT '(I6,A)',NOTHER,' other atoms:' 
309: !  PRINT '(A)','original and new other atom labels:' 
310: !  DO J2=1,NOTHER 
311: !     PRINT '(2I6)',DLIST(J2),NEWPERM(DLIST(J2)) 
312: !  ENDDO 
313:  
314: !  PRINT '(A,3I6,3G20.10)','J1,PATOMS,NOTHER,LDBEST(J1),LDISTANCE=',J1,PATOMS,NOTHER,LDBEST(J1),LDISTANCE 
315: !  PRINT '(A,20I6)','LPERM after MINPERM: ',LPERM(1:PATOMS+NOTHER) 
316: 292: 
317:    LDISTANCE=LDISTANCE293:    LDISTANCE=LDISTANCE
318:    DO J2=1,PATOMS294:    DO J2=1,PATOMS
319:       IF (LPERM(J2).GT.PATOMS) THEN295:       IF (LPERM(J2).GT.PATOMS) THEN
320:          LDISTANCE=1.0D300296:          LDISTANCE=1.0D300
321: !        IF (DEBUG) PRINT '(A,I6,A,I6,A)',' lopermdist> For group ',J1,' with ',NOTHER,' neighbours - neighbours mix in' 297: !        IF (DEBUG) PRINT '(A,I6,A,I6,A)',' lopermdist> For group ',J1,' with ',NOTHER,' neighbours - neighbours mix in' 
322: !        IF (DEBUG) PRINT '(A,I6,A,I6)',' lopermdist> atom ',J2,' lperm value is ',LPERM(J2) 
323:          EXIT298:          EXIT
324:       ENDIF299:       ENDIF
325:    ENDDO300:    ENDDO
326: 301: 
 302: !  IF (J1.EQ.16) THEN
 303: !  PRINT '(I6)',PATOMS+NOTHER
 304: !  PRINT '(A,8I6,G20.10)',' PDUMMYB for NO1,NO2,NC1,NC2,NOB1,NOB2,NCB1,NCB2,distance ', &
 305: ! &                                     NORBIT1,NORBIT2,NCHOOSE1,NCHOOSE2,NORBITB1,NORBITB2,NCHOOSEB1,NCHOOSEB2,SQRT(LDISTANCE)
 306: !  PRINT '(A,3G20.10)',('LA ',PDUMMYB(3*(J2-1)+1:3*(J2-1)+3),J2=1,PATOMS+NOTHER)
 307: !  PRINT '(I6)',PATOMS+NOTHER
 308: !  PRINT '(A,8I6,G20.10)',' PDUMMYA for NO1,NO2,NC1,NC2,NOB1,NOB2,NCB1,NCB2,distance ', &
 309: ! &                                     NORBIT1,NORBIT2,NCHOOSE1,NCHOOSE2,NORBITB1,NORBITB2,NCHOOSEB1,NCHOOSEB2,SQRT(LDISTANCE)
 310: !  PRINT '(A,3G20.10)',('LA ',PDUMMYA(3*(J2-1)+1:3*(J2-1)+3),J2=1,PATOMS+NOTHER)
 311: !  ENDIF
327: 312: 
328:    DO J2=1,NOTHER313:    DO J2=1,NOTHER
329:       IF (LPERM(PATOMS+J2).NE.PATOMS+J2) THEN314:       IF (LPERM(PATOMS+J2).NE.PATOMS+J2) THEN
330: !        IF (DEBUG) PRINT '(A,I6,A,I6)',' lopermdist> Atom ',DLIST(J2),' also needs to permute to ',LPERM(PATOMS+J2)315: !        IF (DEBUG) PRINT '(A,I6,A)',' lopermdist> Atom ',DLIST(J2),' also needs to permute'
331:          IF (PERMUTABLE(DLIST(J2))) THEN316:          IF (PERMUTABLE(DLIST(J2))) THEN
332: !           IF (DEBUG) PRINT '(2(A,I6))',' lopermdist> Atom ',DLIST(J2),' belongs to permutable set ', &317: !           IF (DEBUG) PRINT '(2(A,I6))',' lopermdist> Atom ',DLIST(J2),' belongs to permutable set ', &
333: !  &                                INGROUP(DLIST(J2))318: !  &                                INGROUP(DLIST(J2))
334:          ELSE319:          ELSE
335: !           IF (DEBUG) PRINT '(2(A,I6))',' lopermdist> Atom ',DLIST(J2),' is NOT permutable!'320: !           IF (DEBUG) PRINT '(2(A,I6))',' lopermdist> Atom ',DLIST(J2),' is NOT permutable!'
336:             LDISTANCE=1.0D300321:             LDISTANCE=1.0D300
337:          ENDIF322:          ENDIF
338:       ENDIF323:       ENDIF
339:    ENDDO324:    ENDDO
340: !325: !
365:       TRIED(DLIST(NOTHER))=-1350:       TRIED(DLIST(NOTHER))=-1
366:       IF (NADDED.GT.1) THEN351:       IF (NADDED.GT.1) THEN
367: !        IF (DEBUG) THEN352: !        IF (DEBUG) THEN
368: !           PRINT '(A)',' lopermdist> and partner atoms:'353: !           PRINT '(A)',' lopermdist> and partner atoms:'
369: !           PRINT '(20I5)',DLIST(NOTHER-NADDED+1:NOTHER-1)354: !           PRINT '(20I5)',DLIST(NOTHER-NADDED+1:NOTHER-1)
370: !        ENDIF355: !        ENDIF
371:          TRIED(DLIST(NOTHER-NADDED+1:NOTHER-1))=-1356:          TRIED(DLIST(NOTHER-NADDED+1:NOTHER-1))=-1
372:       ENDIF357:       ENDIF
373:       GOTO 71358:       GOTO 71
374:    ELSE359:    ELSE
375: !     IF (DEBUG) PRINT '(A,G20.10,3(A,I6))',' lopermdist> Best distance ',SQRT(LDBESTATOM), &360: !     IF (DEBUG) PRINT '(A,F12.2,3(A,I6))',' lopermdist> Best distance ',SQRT(LDBESTATOM), &
376: ! &                    ' is OK for myorient with atom ',DLIST(NOTHER),' and ',NOTHER,' neighbours' 361: ! &                    ' is OK for myorient with atom ',DLIST(NOTHER),' and ',NOTHER,' neighbours' 
377:       TRIED(DLIST(NOTHER))=1362:       TRIED(DLIST(NOTHER))=1
378:       IF (NADDED.GT.1) THEN363:       IF (NADDED.GT.1) THEN
379: !        IF (DEBUG) THEN364: !        IF (DEBUG) THEN
380: !           PRINT '(A)',' lopermdist> and partner atoms:'365: !           PRINT '(A)',' lopermdist> and partner atoms:'
381: !           PRINT '(20I5)',DLIST(NOTHER-NADDED+1:NOTHER-1)366: !           PRINT '(20I5)',DLIST(NOTHER-NADDED+1:NOTHER-1)
382: !        ENDIF367: !        ENDIF
383:          TRIED(DLIST(NOTHER-NADDED+1:NOTHER-1))=1368:          TRIED(DLIST(NOTHER-NADDED+1:NOTHER-1))=1
384:       ENDIF369:       ENDIF
385: !     IF (DEBUG) THEN 
386: !        PRINT '(A)',' all other atoms:' 
387: !        PRINT '(20I5)',DLIST(1:NOTHER) 
388: !     ENDIF 
389:       LDBEST(J1)=LDBESTATOM370:       LDBEST(J1)=LDBESTATOM
390:       LPERMBEST(1:PATOMS)=LPERMBESTATOM(1:PATOMS)371:       LPERMBEST(1:PATOMS)=LPERMBESTATOM(1:PATOMS)
391: !     PRINT '(A,2G20.10)','Updating permutation: sqrt(LDBEST)=',SQRT(LDBEST(J1))372: !     PRINT '(A,2G20.10)','Updating permutation: sqrt(LDBEST)=',SQRT(LDBEST(J1))
392: !     PRINT '(A,10I6)','LPERMBEST: ',LPERMBEST(1:PATOMS)373: !     PRINT '(A,10I6)','LPERMBEST: ',LPERMBEST(1:PATOMS)
393:    ENDIF374:    ENDIF
394: !375: !
395: ! Add the next eligible atom and try alignment again.376: ! Add the next eligible atom and try alignment again.
396: ! Stop if we already have LOCALPERMNEIGH neighbours.377: ! Stop if we already have LOCALPERMNEIGH neighbours.
397: !378: !
398:    IF (NOTHER.LT.LOCALPERMNEIGH) GOTO 71379:    IF (NOTHER.LT.LOCALPERMNEIGH) GOTO 71
399: 380: 
400: 91 CONTINUE ! jump here when there are no atoms left to try.381: 91 CONTINUE ! jump here when there are no atoms left to try.
401: 382: 
402: !  IF (DEBUG) PRINT '(2(A,I6),A,G15.5)',' lopermdist> For group ',J1,' maximum neighbours=', &383:    IF (DEBUG) PRINT '(2(A,I6),A,G15.5)',' lopermdist> For group ',J1,' maximum neighbours=', &
403: ! &                                      NOTHER,' distance=',SQRT(LDBEST(J1))384:   &                                      NOTHER,' distance=',SQRT(LDBEST(J1))
404: !385: !
405: ! We now have the best permutation for group J1 and standard orientations386: ! We now have the best permutation for group J1 and standard orientations
406: ! based upon all atoms belonging to the two possible orbits that appear387: ! based upon all atoms belonging to the two possible orbits that appear
407: ! for the standard alignment.388: ! for the standard alignment.
408: !389: !
409:    LPERM(1:PATOMS)=LPERMBEST(1:PATOMS)390:    LPERM(1:PATOMS)=LPERMBEST(1:PATOMS)
410: !391: !
411: ! Fill SAVEPERM with NEWPERM, which contains the current best permutation392: ! Fill SAVEPERM with NEWPERM, which contains the current best permutation
412: ! after the previous pass through J1393: ! after the previous pass through J1
413: !394: !
414:    SAVEPERM(1:NATOMS)=NEWPERM(1:NATOMS)395:    SAVEPERM(1:NATOMS)=NEWPERM(1:NATOMS)
415: !396: !
416: ! Update best permutation for atoms in subset J1, specified by PERMGROUP397: ! Update best permutation for atoms in subset J1, specified by PERMGROUP
417: ! with offset NDUMMY (updated below after each pass through J1)398: ! with offset NDUMMY (updated below after each pass through J1)
418: !399: !
419:    DO J2=1,PATOMS400:    DO J2=1,PATOMS
420:       SAVEPERM(PERMGROUP(NDUMMY+J2-1))=NEWPERM(PERMGROUP(NDUMMY+LPERMBEST(J2)-1))401:       SAVEPERM(PERMGROUP(NDUMMY+J2-1))=NEWPERM(PERMGROUP(NDUMMY+LPERMBEST(J2)-1))
421: !     PRINT '(2(A,I6))',' lopermdist> Atom ',NEWPERM(PERMGROUP(NDUMMY+J2-1)), &402: !     PRINT '(2(A,I6))',' lopermdist> Atom ',NEWPERM(PERMGROUP(NDUMMY+LPERMBEST(J2)-1)), &
422: ! &                     ' moves to position ',PERMGROUP(NDUMMY+LPERMBEST(J2)-1)403: ! &                     ' moves to position ',PERMGROUP(NDUMMY+LPERMBEST(J2)-1)
423:    ENDDO404:    ENDDO
424: !  405: !  
425: ! Update permutation of associated atoms, if any.406: ! Update permutation of associated atoms, if any.
426: ! We must do this as we go along, because these atoms could move in more than407: ! We must do this as we go along, because these atoms could move in more than
427: ! one permutational group now.408: ! one permutational group now.
428: ! 409: ! 
429:    IF (NSETS(J1).GT.0) THEN410:    IF (NSETS(J1).GT.0) THEN
430:       DO J2=1,PATOMS411:       DO J2=1,PATOMS
431:          DO J3=1,NSETS(J1)412:          DO J3=1,NSETS(J1)
432:             SAVEPERM(SETS(PERMGROUP(NDUMMY+J2-1),J3))=SETS(NEWPERM(PERMGROUP(NDUMMY+LPERM(J2)-1)),J3)413:             SAVEPERM(SETS(PERMGROUP(NDUMMY+J2-1),J3))=SETS(NEWPERM(PERMGROUP(NDUMMY+LPERM(J2)-1)),J3)
433:          ENDDO414:          ENDDO
434:       ENDDO415:       ENDDO
435:    ENDIF416:    ENDIF
436: !417: !
437: ! Save current optimal permutation in NEWPERM418: ! Save current optimal permutation in NEWPERM
438: !419: !
439:    NEWPERM(1:NATOMS)=SAVEPERM(1:NATOMS)420:    NEWPERM(1:NATOMS)=SAVEPERM(1:NATOMS)
440:    DSUM=DSUM+SQRT(LDBEST(J1))421:    DSUM=DSUM+SQRT(LDBEST(J1))
441: !  PRINT '(A,I6,2(A,F20.10))',' lopermdist> For group ',J1,' best distance=',SQRT(LDBEST(J1)),' total=',DSUM422: !  PRINT '(A,I6,2(A,F20.10))',' lopermdist> For group ',J1,' after myorient distance=',SQRT(LDBEST(J1)),' total=',DSUM
442: !  PRINT '(A)','best permutation is now' 
443: !  PRINT '(20I6)',NEWPERM(1:NATOMS) 
444: 423: 
445: !424: !
446: ! Update NDUMMY, the cumulative offset for PERMGROUP425: ! Update NDUMMY, the cumulative offset for PERMGROUP
447: !426: !
448:    NDUMMY=NDUMMY+NPERMSIZE(J1)427:    NDUMMY=NDUMMY+NPERMSIZE(J1)
449: ENDDO  !  end of loop over groups of permutable atoms428: ENDDO  !  end of loop over groups of permutable atoms
450: !429: !
451: ! NEWPERM(J1) is the atom that moves to position J1 to map COORDSA430: ! NEWPERM(J1) is the atom that moves to position J1 to map COORDSA
452: ! to the current best alignment. 431: ! to the current best alignment. 
453: ! This loop just appears to set SAVEPERM and ALLPERM equal to the current432: ! This loop just appears to set SAVEPERM and ALLPERM equal to the current
479:    DUMMYA(3*(J3-1)+3)=DUMMY(3*(NEWPERM(J3)-1)+3)458:    DUMMYA(3*(J3-1)+3)=DUMMY(3*(NEWPERM(J3)-1)+3)
480: 459: 
481: !  IF (DEBUG) WRITE(*,'(A,I5,A,I5)') ' lopermdist> Overall permutations after MYORIENT alignment:'460: !  IF (DEBUG) WRITE(*,'(A,I5,A,I5)') ' lopermdist> Overall permutations after MYORIENT alignment:'
482:    IF (J3.NE.NEWPERM(J3)) THEN461:    IF (J3.NE.NEWPERM(J3)) THEN
483: !     IF (DEBUG) WRITE(*,'(A,I5,A,I5)') ' lopermdist> Moving position ',NEWPERM(J3),' to ',J3462: !     IF (DEBUG) WRITE(*,'(A,I5,A,I5)') ' lopermdist> Moving position ',NEWPERM(J3),' to ',J3
484:       NPERM=NPERM+1463:       NPERM=NPERM+1
485:    ENDIF464:    ENDIF
486: ENDDO465: ENDDO
487: 466: 
488: DISTANCE=DSUM467: DISTANCE=DSUM
489: ! IF (DEBUG) WRITE(*,'(A,G20.10)') ' lopermdist> After myorient block sum of distances=',DISTANCE468: IF (DEBUG) WRITE(*,'(A,G20.10)') ' lopermdist> After myorient block sum of distances=',DISTANCE
490: !469: !
491: ! Save current best overall distance, permuted version of COORDSA, and permutation.470: ! Save current best overall distance, permuted version of COORDSA, and permutation.
492: !471: !
493: DBEST=DISTANCE472: DBEST=DISTANCE
494: XBEST(1:3*NATOMS)=DUMMYA(1:3*NATOMS)473: XBEST(1:3*NATOMS)=DUMMYA(1:3*NATOMS)
495: BESTPERM(1:NATOMS)=ALLPERM(1:NATOMS)474: BESTPERM(1:NATOMS)=ALLPERM(1:NATOMS)
496: !475: !
497: ! At this point NEWPERM, ALLPERM, SAVEPERM, BESTPERM476: ! At this point NEWPERM, ALLPERM, SAVEPERM, BESTPERM
498: ! are all the same!477: ! are all the same!
499: !478: !
500: ! PRINT '(A)',' lopermdist> NEWPERM, ALLPERM, SAVEPERM, BESTPERM:'479: ! PRINT '(A)',' lopermdist> NEWPERM, ALLPERM, SAVEPERM, BESTPERM:'
501: ! PRINT '(4I6)',(NEWPERM(J1),ALLPERM(J1),SAVEPERM(J1),BESTPERM(J1),J1=1,NATOMS)480: ! PRINT '(4I6)',(NEWPERM(J1),ALLPERM(J1),SAVEPERM(J1),BESTPERM(J1),J1=1,NATOMS)
502: 481: 
503: !!!!!!!!!!!!!!!!!!!!!!! DEBUG482: !!!!!!!!!!!!!!!!!!!!!!! DEBUG
504: !483: !
505: ! Test distance for COORDSA with permutation applied in BESTPERM484: ! Test distance for COORDSA with permutation applied in BESTPERM
506: !485: !
507: !  DO J1=1,NATOMS486:    DO J1=1,NATOMS
508: !     DUMMYA(3*(J1-1)+1)=COORDSA(3*(BESTPERM(J1)-1)+1)487:       DUMMYA(3*(J1-1)+1)=COORDSA(3*(BESTPERM(J1)-1)+1)
509: !     DUMMYA(3*(J1-1)+2)=COORDSA(3*(BESTPERM(J1)-1)+2)488:       DUMMYA(3*(J1-1)+2)=COORDSA(3*(BESTPERM(J1)-1)+2)
510: !     DUMMYA(3*(J1-1)+3)=COORDSA(3*(BESTPERM(J1)-1)+3)489:       DUMMYA(3*(J1-1)+3)=COORDSA(3*(BESTPERM(J1)-1)+3)
511: !  ENDDO490:    ENDDO
512: 491: 
513: !  CALL NEWMINDIST(COORDSB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)492:    CALL NEWMINDIST(COORDSB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)
514: !  CALL NEWMINDIST(COORDSB,XBEST,NATOMS,XDUMMY,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)493:    CALL NEWMINDIST(COORDSB,XBEST,NATOMS,XDUMMY,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)
515: !  IF (DEBUG) WRITE(*,'(A,2G20.10)') & 494:    IF (DEBUG) WRITE(*,'(A,2G20.10)') & 
516: ! &   ' lopermdist> distance check for permuted COORDSA and original COORDSB=',XDUMMY,DISTANCE495:   &   ' lopermdist> distance check for permuted COORDSA and original COORDSB=',XDUMMY,DISTANCE
517: !!!!!!!!!!!!!!!!!!!!!!! DEBUG496: !!!!!!!!!!!!!!!!!!!!!!! DEBUG
518: !497: !
519: ! Now align and reorient the permuted coordinates in COORDSA 498: ! Now align and reorient the permuted coordinates in COORDSA 
520: ! Try using the best locally aligned group of atoms499: ! Try using the best locally aligned group of atoms
521: !500: !
522: CALL NEWMINDIST(DUMMYB,XBEST,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)501: CALL NEWMINDIST(DUMMYB,XBEST,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)
523: IF (DEBUG) PRINT '(A,G20.10)',' lopermdist> after overall alignment distance=',DISTANCE502: IF (DEBUG) PRINT '(A,G20.10)',' lopermdist> after overall alignment distance=',DISTANCE
524: RMATBEST(1:3,1:3)=RMAT(1:3,1:3)503: RMATBEST(1:3,1:3)=RMAT(1:3,1:3)
525: 504: 
526: COORDSA(1:3*NATOMS)=XBEST(1:3*NATOMS) ! finally, best COORDSA should include permutations for DNEB input!505: COORDSA(1:3*NATOMS)=XBEST(1:3*NATOMS) ! finally, best COORDSA should include permutations for DNEB input!


r30489/minpermdist.f90 2016-05-21 12:30:05.239885895 +0100 r30488/minpermdist.f90 2016-05-21 12:30:06.011896095 +0100
814: !     ENDDO814: !     ENDDO
815: !     PRINT '(A,G20.10)',' minpermdist> distance from XBEST to COORDSC=',SQRT(XDUMMY)815: !     PRINT '(A,G20.10)',' minpermdist> distance from XBEST to COORDSC=',SQRT(XDUMMY)
816: !816: !
817: ! Check to see if we can reproduce XBEST !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!817: ! Check to see if we can reproduce XBEST !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
818: 818: 
819: ENDIF819: ENDIF
820: !820: !
821: ! If GEOMDIFFTOL is set too large we could miss the best solution by exiting prematurely. 821: ! If GEOMDIFFTOL is set too large we could miss the best solution by exiting prematurely. 
822: ! Turn off the next line?!822: ! Turn off the next line?!
823: !823: !
824: IF (SQRT(DBEST).LT.GEOMDIFFTOL/1.0D2) GOTO 50824:   IF (SQRT(DBEST).LT.GEOMDIFFTOL/1.0D1) GOTO 50
825: !825: !
826: IF (OHCELLT.AND.(OPNUM.LT.48)) GOTO 25 826: IF (OHCELLT.AND.(OPNUM.LT.48)) GOTO 25 
827: IF (NCHOOSE2.LT.NORBIT2) GOTO 30827: IF (NCHOOSE2.LT.NORBIT2) GOTO 30
828: IF (NCHOOSE1.LT.NORBIT1) GOTO 65828: IF (NCHOOSE1.LT.NORBIT1) GOTO 65
829: IF (NCHOOSEB2.LT.NORBITB2) GOTO 31829: IF (NCHOOSEB2.LT.NORBITB2) GOTO 31
830: IF (NCHOOSEB1.LT.NORBITB1) GOTO 66830: IF (NCHOOSEB1.LT.NORBITB1) GOTO 66
831: !831: !
832: !  Now try the enantiomer (or xz reflected structure for PULLT.OR.EFIELDT.OR.TWOD).832: !  Now try the enantiomer (or xz reflected structure for PULLT.OR.EFIELDT.OR.TWOD).
833: !  The tests for NCHOOSE1 and NCHOOSE2 appear to be redundant!833: !  The tests for NCHOOSE1 and NCHOOSE2 appear to be redundant!
834: !834: !


r30489/output.f90 2016-05-21 12:30:04.659878234 +0100 r30488/output.f90 2016-05-21 12:30:05.431888432 +0100
192:                       ENDIF192:                       ENDIF
193: 193: 
194:                       IF (DESMINT) THEN194:                       IF (DESMINT) THEN
195:                          CALL BFGSTS(NSTEPS,XYZCART(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),  &195:                          CALL BFGSTS(NSTEPS,XYZCART(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),  &
196:                               &       EDUMMY,LGDUMMY,TSCONVERGED,RMS,EVALMIN,EVALMAX,VECS,ITDONE,.TRUE.,PRINTOPTIMIZETS)196:                               &       EDUMMY,LGDUMMY,TSCONVERGED,RMS,EVALMIN,EVALMAX,VECS,ITDONE,.TRUE.,PRINTOPTIMIZETS)
197:                       ELSE197:                       ELSE
198:                          IF (CUDAT) THEN198:                          IF (CUDAT) THEN
199:                             CALL CUDA_BFGSTS_WRAPPER(NSTEPS,XYZ(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),  &199:                             CALL CUDA_BFGSTS_WRAPPER(NSTEPS,XYZ(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),  &
200:                                  &       EDUMMY,TSCONVERGED,RMS,EVALMIN,VECS,ITDONE)200:                                  &       EDUMMY,TSCONVERGED,RMS,EVALMIN,VECS,ITDONE)
201:                          ELSE201:                          ELSE
 202:                             PRINT *,'in output before bfgsts'
202:                             CALL BFGSTS(NSTEPS,XYZ(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),  &203:                             CALL BFGSTS(NSTEPS,XYZ(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),  &
203:                                  &       EDUMMY,LGDUMMY,TSCONVERGED,RMS,EVALMIN,EVALMAX,VECS,ITDONE,.TRUE.,PRINTOPTIMIZETS)204:                                  &       EDUMMY,LGDUMMY,TSCONVERGED,RMS,EVALMIN,EVALMAX,VECS,ITDONE,.TRUE.,PRINTOPTIMIZETS)
 205:                             PRINT *,'in output after bfgsts'
204:                          END IF206:                          END IF
205:                       ENDIF207:                       ENDIF
206:                    ENDIF208:                    ENDIF
207:                 ELSE209:                 ELSE
208:                    IF (DESMINT) THEN210:                    IF (DESMINT) THEN
209:                       CALL EFOL(XYZCART(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),TSCONVERGED, &211:                       CALL EFOL(XYZCART(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),TSCONVERGED, &
210:                            &   NSTEPS,EDUMMY,ITDONE,EVALMIN,DEBUG,DIAG,2)212:                            &   NSTEPS,EDUMMY,ITDONE,EVALMIN,DEBUG,DIAG,2)
211:                    ELSE213:                    ELSE
212:                       CALL EFOL(XYZ(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),TSCONVERGED, &214:                       CALL EFOL(XYZ(NOPT*(TSPOS(J)-1)+1:NOPT*TSPOS(J)),TSCONVERGED, &
213:                            &   NSTEPS,EDUMMY,ITDONE,EVALMIN,DEBUG,DIAG,2)215:                            &   NSTEPS,EDUMMY,ITDONE,EVALMIN,DEBUG,DIAG,2)


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0