hdiff output

r32740/finalio.f90 2017-06-07 17:30:15.231754894 +0100 r32739/finalio.f90 2017-06-07 17:30:16.119766567 +0100
 25:        AMBER12_WRITE_XYZ 25:        AMBER12_WRITE_XYZ
 26:   USE OPEP_INTERFACE_MOD, ONLY: OPEP_FINISH, OPEP_WRITE_PDB 26:   USE OPEP_INTERFACE_MOD, ONLY: OPEP_FINISH, OPEP_WRITE_PDB
 27:   USE QMODULE 27:   USE QMODULE
 28:   USE MODCHARMM 28:   USE MODCHARMM
 29:   USE AMHGLOBALS, ONLY:NMRES,IRES 29:   USE AMHGLOBALS, ONLY:NMRES,IRES
 30:   USE BGUPMOD 30:   USE BGUPMOD
 31:   USE PERMU 31:   USE PERMU
 32:   USE MODHESS, ONLY : HESS, MASSWT 32:   USE MODHESS, ONLY : HESS, MASSWT
 33:   USE CONVEX_POLYHEDRA_MODULE, ONLY: VIEW_POLYHEDRA 33:   USE CONVEX_POLYHEDRA_MODULE, ONLY: VIEW_POLYHEDRA
 34:   USE LJ_GAUSS_MOD, ONLY: VIEW_LJ_GAUSS 34:   USE LJ_GAUSS_MOD, ONLY: VIEW_LJ_GAUSS
 35:   USE ORBITALS_MOD, ONLY: ORBITALS_FINISH 
 36:  35: 
 37:   IMPLICIT NONE 36:   IMPLICIT NONE
 38:  37: 
 39:   !   MCP 38:   !   MCP
 40:   INTEGER III, I3,  GLY_COUNT, ID, NUMCRD, NUMPRO, NCPHST, GETUNIT, AMHUNIT1, LUNIT, NSYMOPS, NCLOSE 39:   INTEGER III, I3,  GLY_COUNT, ID, NUMCRD, NUMPRO, NCPHST, GETUNIT, AMHUNIT1, LUNIT, NSYMOPS, NCLOSE
 41:   INTEGER J1, J2, J3, J4, J5, MYUNIT2, I1, NDUMMY, MYUNIT3, NRBS1, NRBS2, LJGOUNIT, MJ2, REORDERUNIT 40:   INTEGER J1, J2, J3, J4, J5, MYUNIT2, I1, NDUMMY, MYUNIT3, NRBS1, NRBS2, LJGOUNIT, MJ2, REORDERUNIT
 42:   DOUBLE PRECISION RBCOORDS(NRBSITES*3), DCOORDS(3*NATOMS), EDUMMY, ITDET, DIST 41:   DOUBLE PRECISION RBCOORDS(NRBSITES*3), DCOORDS(3*NATOMS), EDUMMY, ITDET, DIST
 43:   ! 42:   !
 44:   !ds656> Symmetry detection for clusters on a substrate... 43:   !ds656> Symmetry detection for clusters on a substrate...
 45:   INTEGER :: ISITES(MIEF_NSITES), NSITES, COMBO_N 44:   INTEGER :: ISITES(MIEF_NSITES), NSITES, COMBO_N
1742:   ENDIF1741:   ENDIF
1743: 1742: 
1744:   IF(ALLOCATED(DBNAME)) DEALLOCATE(DBNAME)1743:   IF(ALLOCATED(DBNAME)) DEALLOCATE(DBNAME)
1745: 1744: 
1746:   IF (AMBER12T) THEN1745:   IF (AMBER12T) THEN
1747:      CALL AMBER12_FINISH()1746:      CALL AMBER12_FINISH()
1748:   END IF1747:   END IF
1749: 1748: 
1750:   IF (OPEPT) CALL OPEP_FINISH()1749:   IF (OPEPT) CALL OPEP_FINISH()
1751: 1750: 
1752:   IF (ORBITALS) CALL ORBITALS_FINISH() 
1753:  
1754:   CALL CPU_TIME(TEND)1751:   CALL CPU_TIME(TEND)
1755:   WRITE(MYUNIT,"(A,F18.1,A)") "time elapsed ", TEND - TSTART, " seconds"1752:   WRITE(MYUNIT,"(A,F18.1,A)") "time elapsed ", TEND - TSTART, " seconds"
1756:   WRITE(MYUNIT,"(A,I18)") "Number of potential calls ", NPCALL1753:   WRITE(MYUNIT,"(A,I18)") "Number of potential calls ", NPCALL
1757:   RETURN1754:   RETURN
1758: 1755: 
1759: END SUBROUTINE FINALIO1756: END SUBROUTINE FINALIO
1760: 1757: 
1761: SUBROUTINE AMBERDUMP(J1,QMINP)1758: SUBROUTINE AMBERDUMP(J1,QMINP)
1762:     USE COMMONS1759:     USE COMMONS
1763:     USE MODAMBER1760:     USE MODAMBER


r32740/GMIN.tex 2017-06-07 17:30:15.007751941 +0100 r32739/GMIN.tex 2017-06-07 17:30:15.895763618 +0100
1396: \item {\it OEINT \/}: interaction energy between 2 peptides will be used as an order parameter---requires 1396: \item {\it OEINT \/}: interaction energy between 2 peptides will be used as an order parameter---requires 
1397: further documentation.1397: further documentation.
1398: 1398: 
1399: \item {\it OHCELL \/}: allow point group operations for a cubic1399: \item {\it OHCELL \/}: allow point group operations for a cubic
1400: supercell in subroutine {\tt minpermdist.f90} permutational distance minimisation.1400: supercell in subroutine {\tt minpermdist.f90} permutational distance minimisation.
1401: 1401: 
1402: \item {\it OPEP option\/}: specifies the use of the OPEP poetential, {\it option\/} is either PROTEIN or RNA. The following additional files are needed:1402: \item {\it OPEP option\/}: specifies the use of the OPEP poetential, {\it option\/} is either PROTEIN or RNA. The following additional files are needed:
1403: {\textrm conf\_initiale.pdb}, which contains the starting configuration and the atom information, {\textrm OPEP\_params}, which can contain additional settings for example for debugging,1403: {\textrm conf\_initiale.pdb}, which contains the starting configuration and the atom information, {\textrm OPEP\_params}, which can contain additional settings for example for debugging,
1404: {\textrm ichain.dat}, {\textrm scale.dat}, {\textrm cutoffs.dat}, {\textrm parametres.top} and {\textrm parametres.list}, which are the generic OPEP files. 1404: {\textrm ichain.dat}, {\textrm scale.dat}, {\textrm cutoffs.dat}, {\textrm parametres.top} and {\textrm parametres.list}, which are the generic OPEP files. 
1405: 1405: 
1406: \item {\it ORBITALS \/}: orbital localisation rotation potential. 
1407:  
1408: \item {\it ORGYR \/}: radius of gyration will be calculated as an order parameter---requires 1406: \item {\it ORGYR \/}: radius of gyration will be calculated as an order parameter---requires 
1409: further documentation.1407: further documentation.
1410: 1408: 
1411: \item {\it OSASA \/}: order parameter---requires documentation.1409: \item {\it OSASA \/}: order parameter---requires documentation.
1412: 1410: 
1413: \item {\it P46\/}: specifies a 46-bead three-colour model polypeptide.1411: \item {\it P46\/}: specifies a 46-bead three-colour model polypeptide.
1414: See also the {\it BLN} keyword, which implements this potential in a more1412: See also the {\it BLN} keyword, which implements this potential in a more
1415: general way and uses unit bond lengths.1413: general way and uses unit bond lengths.
1416: 1414: 
1417: \item {\it PACHECO\/}: specifies the intermolecular Pacheco-Ramelho potential for C$_{60}$.1415: \item {\it PACHECO\/}: specifies the intermolecular Pacheco-Ramelho potential for C$_{60}$.


r32740/keywords.f 2017-06-07 17:30:15.451757780 +0100 r32739/keywords.f 2017-06-07 17:30:16.339769459 +0100
1212:       SQNM_DEBUGT=.FALSE.1212:       SQNM_DEBUGT=.FALSE.
1213:       SQNM_DEBUGRUN=0 !defaul 0 means debug all runs1213:       SQNM_DEBUGRUN=0 !defaul 0 means debug all runs
1214:       SQNM_DEBUGLEVEL=0 !how much debug data to print 1214:       SQNM_DEBUGLEVEL=0 !how much debug data to print 
1215:       SQNM_WRITEMAX=10 !how many lines to print out. default is 101215:       SQNM_WRITEMAX=10 !how many lines to print out. default is 10
1216:       SQNM_BIOT=.TRUE.1216:       SQNM_BIOT=.TRUE.
1217: 1217: 
1218: ! OPEP stuff1218: ! OPEP stuff
1219:       OPEPT = .FALSE.1219:       OPEPT = .FALSE.
1220:       OPEP_RNAT = .FALSE.1220:       OPEP_RNAT = .FALSE.
1221: 1221: 
1222: ! cs675 ORBITALS stuff 
1223:       ORBITALS = .FALSE. 
1224:       ORBVAREXPONENT = -1!default to easily identifiable (quasi-)nonsense value. 
1225:  
1226:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)1222:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)
1227: 1223: 
1228: !      OPEN (5,FILE='data',STATUS='OLD')1224: !      OPEN (5,FILE='data',STATUS='OLD')
1229: 1225: 
1230: !190   CALL INPUT(END,5)1226: !190   CALL INPUT(END,5)
1231: 190   CALL INPUT(END, DATA_UNIT)1227: 190   CALL INPUT(END, DATA_UNIT)
1232:       IF (.NOT. END) THEN1228:       IF (.NOT. END) THEN
1233:         CALL READU(WORD)1229:         CALL READU(WORD)
1234:       ENDIF1230:       ENDIF
1235:       IF (END .OR. WORD .EQ. 'STOP') THEN1231:       IF (END .OR. WORD .EQ. 'STOP') THEN


r32740/orbitals.f90 2017-06-07 17:30:15.671760674 +0100 r32739/orbitals.f90 2017-06-07 17:30:16.687774036 +0100
 11:         USE COMMONS, ONLY: R2INTS, DIPINTS, ORBVAREXPONENT 11:         USE COMMONS, ONLY: R2INTS, DIPINTS, ORBVAREXPONENT
 12:  12: 
 13:         INTEGER, INTENT(OUT) :: NORBS, NROTS 13:         INTEGER, INTENT(OUT) :: NORBS, NROTS
 14:  14: 
 15:         INTEGER :: ORB_FILE_UNIT 15:         INTEGER :: ORB_FILE_UNIT
 16:  16: 
 17:         CHARACTER (LEN=10) :: WORD 17:         CHARACTER (LEN=10) :: WORD
 18:  18: 
 19:         LOGICAL :: END 19:         LOGICAL :: END
 20:  20: 
 21:         ! First check we've initialised sensibly. 
 22:         IF (ORBVAREXPONENT.LT.1) THEN 
 23:             STOP 'Need to set penalty function exponent to a positive value.' 
 24:         END IF 
 25:  
 26:         NORBS = -1 
 27:  
 28:         CALL CHECK_FILE_EXISTS('INTEGRALS_INFO', EX=.TRUE.) 
 29:  
 30:         CALL FILE_OPEN('INTEGRALS_INFO',ORB_FILE_UNIT,.FALSE.) 21:         CALL FILE_OPEN('INTEGRALS_INFO',ORB_FILE_UNIT,.FALSE.)
 31:         CALL INPUT(END, ORB_FILE_UNIT) 22:         CALL INPUT(END, ORB_FILE_UNIT)
 32:  23: 
 33:         CALL READI(NORBS) 24:         CALL READI(NORBS)
 34:         NROTS = NORBS * (NORBS - 1) / 2 25:         NROTS = NORBS * (NORBS - 1) / 2
 35:         !PRINT '(A,3I10)','NORBS,NROTS,ORBVAREXPONENT=',NORBS,NROTS,ORBVAREXPONENT 
 36:  26: 
 37:         IF (NORBS.LT.1) THEN 27:         !PRINT '(A,3I10)','NORBS,NROTS,ORBVAREXPONENT=',NORBS,NROTS,ORBVAREXPONENT
 38:             STOP 'Could not successfully read the system information from file.' 
 39:         ELSE IF (NROTS.LT.1) THEN 
 40:             STOP 'We appear to have no possible orbital rotations.' 
 41:         END IF 
 42:  28: 
 43:         CLOSE(ORB_FILE_UNIT) 29:         CLOSE(ORB_FILE_UNIT)
 44:  30: 
 45:         ALLOCATE(R2INTS(NORBS,NORBS)) 31:         ALLOCATE(R2INTS(NORBS,NORBS))
 46:         ALLOCATE(DIPINTS(3,NORBS,NORBS)) 32:         ALLOCATE(DIPINTS(3,NORBS,NORBS))
 47:  33: 
 48:         !PRINT '(A)','R2' 34:         !PRINT '(A)','R2'
 49:         CALL READ_INTEGRALS('INTEGRALS_R2.csv', NORBS, R2INTS(:,:)) 35:         CALL READ_INTEGRALS('INTEGRALS_R2.csv', NORBS, R2INTS(:,:))
 50:         !PRINT '(A)','X' 36:         !PRINT '(A)','X'
 51:         CALL READ_INTEGRALS('INTEGRALS_X.csv', NORBS, DIPINTS(1,:,:)) 37:         CALL READ_INTEGRALS('INTEGRALS_X.csv', NORBS, DIPINTS(1,:,:))
 52:         !PRINT '(A)','Y' 38:         !PRINT '(A)','Y'
 53:         CALL READ_INTEGRALS('INTEGRALS_Y.csv', NORBS, DIPINTS(2,:,:)) 39:         CALL READ_INTEGRALS('INTEGRALS_Y.csv', NORBS, DIPINTS(2,:,:))
 54:         !PRINT '(A)','Z' 40:         !PRINT '(A)','Z'
 55:         CALL READ_INTEGRALS('INTEGRALS_Z.csv', NORBS, DIPINTS(3,:,:)) 41:         CALL READ_INTEGRALS('INTEGRALS_Z.csv', NORBS, DIPINTS(3,:,:))
 56:  42: 
  43: 
 57:     END SUBROUTINE ORBITALS_INIT 44:     END SUBROUTINE ORBITALS_INIT
 58:  45: 
 59:     SUBROUTINE READ_INTEGRALS(INT_FILENAME, NORBS, INTS) 46:     SUBROUTINE READ_INTEGRALS(INT_FILENAME, NORBS, INTS)
 60:  47: 
 61:         ! Given filename of intergral files reads the integrals within 48:         ! Given filename of intergral files reads the integrals within
 62:         ! it into the array INTS. Integrals are assumed to always have 49:         ! it into the array INTS. Integrals are assumed to always have
 63:         ! dimension NORBSxNORBS. 50:         ! dimension NORBSxNORBS.
 64:  51: 
 65:         CHARACTER (LEN=*), INTENT(IN) :: INT_FILENAME 52:         CHARACTER (LEN=*), INTENT(IN) :: INT_FILENAME
 66:         INTEGER, INTENT(IN) :: NORBS 53:         INTEGER, INTENT(IN) :: NORBS
 67:         DOUBLE PRECISION, INTENT(OUT) :: INTS(NORBS, NORBS) 54:         DOUBLE PRECISION, INTENT(OUT) :: INTS(NORBS, NORBS)
 68:         CHARACTER (LEN=32) :: CALCID 55:         CHARACTER (LEN=32) :: CALCID
 69:         INTEGER :: INT_FILE_UNIT, I 56:         INTEGER :: INT_FILE_UNIT, I
 70:         LOGICAL :: END 57:         LOGICAL :: END
 71:  58: 
 72:         CALL CHECK_FILE_EXISTS(INT_FILENAME, EX=.TRUE.) 
 73:         CALL FILE_OPEN(INT_FILENAME,INT_FILE_UNIT,.FALSE.) 59:         CALL FILE_OPEN(INT_FILENAME,INT_FILE_UNIT,.FALSE.)
 74:         CALL INPUT(END, INT_FILE_UNIT) 60:         CALL INPUT(END, INT_FILE_UNIT)
 75:         CALL READU(CALCID) 61:         CALL READU(CALCID)
 76:         !PRINT '(A,I10,X,A)','INT_FILE_UNIT,CALCID=',INT_FILE_UNIT,CALCID 62:         !PRINT '(A,I10,X,A)','INT_FILE_UNIT,CALCID=',INT_FILE_UNIT,CALCID
 77:         !PRINT '(A,I10,A)','NORBS=',NORBS 63:         !PRINT '(A,I10,A)','NORBS=',NORBS
 78:  64: 
 79:         DO I = 1, NORBS 65:         DO I = 1, NORBS
 80:            READ(INT_FILE_UNIT,*) INTS(I,1:NORBS)  66:            READ(INT_FILE_UNIT,*) INTS(I,1:NORBS) 
 81:            !PRINT *,INTS(I,1:NORBS) 67:            !PRINT *,INTS(I,1:NORBS)
 82:         END DO 68:         END DO
108:             ORBVAR(I) = -SUM(ORBDIPOLES(1:3,I)**2) 94:             ORBVAR(I) = -SUM(ORBDIPOLES(1:3,I)**2)
109:             DO J = 1, NORBS 95:             DO J = 1, NORBS
110:                 DO K = 1, NORBS 96:                 DO K = 1, NORBS
111:                     ORBVAR(I)=ORBVAR(I)+R2INTS(J,K)*ROTATION(I,J)*ROTATION(I,K) 97:                     ORBVAR(I)=ORBVAR(I)+R2INTS(J,K)*ROTATION(I,J)*ROTATION(I,K)
112:                 END DO 98:                 END DO
113:             END DO 99:             END DO
114:             !PRINT *,'ORBITAL',I,',ORBVAR=',ORBVAR(I),',DIPOLES=',ORBDIPOLES(1:3,I)100:             !PRINT *,'ORBITAL',I,',ORBVAR=',ORBVAR(I),',DIPOLES=',ORBDIPOLES(1:3,I)
115: 101: 
116:         END DO102:         END DO
117: 103: 
 104: 
118:         !PRINT *,'ORBVARS=',ORBVAR105:         !PRINT *,'ORBVARS=',ORBVAR
119:         !PRINT *,'ORBVARSEXP=',ORBVAR**ORBVAREXPONENT106:         !PRINT *,'ORBVARSEXP=',ORBVAR**ORBVAREXPONENT
120: 107: 
121:         LOCALITY = SUM(ORBVAR ** ORBVAREXPONENT)108:         LOCALITY = SUM(ORBVAR ** ORBVAREXPONENT)
122: 109: 
123:         !PRINT *,'LOCALITY=',LOCALITY110:         !PRINT *,'LOCALITY=',LOCALITY
124: 111: 
125:         IF (GTEST) THEN112:         IF (GTEST) THEN
126:             !PRINT *,'ORBDIPOLES='113:             !PRINT *,'ORBDIPOLES='
127:             !DO J = 1,3114:             !DO J = 1,3
128:             !    PRINT *,ORBDIPOLES(J,1:NORBS)115:             !    PRINT *,ORBDIPOLES(J,1:NORBS)
129:             !END DO116:             !END DO
130: 117: 
131:             CALL GET_INDIVIDUAL_DERIVATIVES(ROTATION, ORBDIPOLES, IND_ORBVAR_DERIV)118:             CALL GET_INDIVIDUAL_DERIVATIVES(ROTATION, ORBDIPOLES, IND_ORBVAR_DERIV)
132:             !PRINT *,'IND_ORBVAR_DERIV='119:             !PRINT *,'IND_ORBVAR_DERIV='
133:             !DO J = 1,NORBS120:             !DO J = 1,NORBS
134:             !    PRINT *, IND_ORBVAR_DERIV(J,1:NORBS)121:             !    PRINT *, IND_ORBVAR_DERIV(J,1:NORBS)
135:             !END DO122:             !END DO
136: 123: 
 124: 
137:             CALL GET_PENALTY_DERIVATIVES(IND_ORBVAR_DERIV, ORBVAR, PENALTY_DERIV)125:             CALL GET_PENALTY_DERIVATIVES(IND_ORBVAR_DERIV, ORBVAR, PENALTY_DERIV)
138: 126: 
139:             !PRINT *,'PEN_DERIV='127:             !PRINT *,'PEN_DERIV='
140:             !DO J = 1,NORBS128:             !DO J = 1,NORBS
141:             !    PRINT *, PENALTY_DERIV(J,1:NORBS)129:             !    PRINT *, PENALTY_DERIV(J,1:NORBS)
142:             !END DO130:             !END DO
143: 131: 
144:             DO I = 1, NROTS132:             DO I = 1, NROTS
145:                 CALL GET_ROTATION_DERIVATIVE(X, I, ROT_DERIV)133:                 CALL GET_ROTATION_DERIVATIVE(X, I, ROT_DERIV)
146:                 !PRINT *,'ROT_DERIV='134:                 !PRINT *,'ROT_DERIV='
186: 174: 
187:         USE COMMONS, ONLY: NROTS, NORBS175:         USE COMMONS, ONLY: NROTS, NORBS
188: 176: 
189:         DOUBLE PRECISION, INTENT(IN) :: COORDS(NROTS)177:         DOUBLE PRECISION, INTENT(IN) :: COORDS(NROTS)
190: 178: 
191:         DOUBLE PRECISION, INTENT(OUT) :: ROTATION(NORBS,NORBS)179:         DOUBLE PRECISION, INTENT(OUT) :: ROTATION(NORBS,NORBS)
192:         DOUBLE PRECISION :: NEXT_ROT(NORBS,NORBS)180:         DOUBLE PRECISION :: NEXT_ROT(NORBS,NORBS)
193: 181: 
194:         INTEGER :: I, J, TRIIND182:         INTEGER :: I, J, TRIIND
195: 183: 
196:         ROTATION(1:NORBS,1:NORBS) = 0.0184:         ROTATION(:,:) = 0.0
197: 185: 
198:         DO TRIIND = 1, NORBS186:         DO TRIIND = 1, NORBS
199:             ROTATION(TRIIND, TRIIND) = 1.0187:             ROTATION(TRIIND, TRIIND) = 1.0
200:         END DO188:         END DO
201: 189: 
202:         DO TRIIND = 1, NROTS190:         DO TRIIND = 1, NROTS
203:             CALL DECODE_TRIIND(TRIIND, I, J)191:             CALL DECODE_TRIIND(TRIIND, I, J)
204:             CALL GET_GIVENS_ROTATION(I,J,COORDS(TRIIND),NEXT_ROT)192:             CALL GET_GIVENS_ROTATION(I,J,COORDS(TRIIND),NEXT_ROT)
205:             ROTATION = MATMUL(ROTATION,NEXT_ROT)193:             ROTATION = MATMUL(ROTATION,NEXT_ROT)
206:         END DO194:         END DO
215:         USE COMMONS, ONLY: NROTS, NORBS203:         USE COMMONS, ONLY: NROTS, NORBS
216: 204: 
217:         DOUBLE PRECISION, INTENT(IN) :: COORDS(NROTS)205:         DOUBLE PRECISION, INTENT(IN) :: COORDS(NROTS)
218:         INTEGER, INTENT(IN) :: DERIVTRIIND206:         INTEGER, INTENT(IN) :: DERIVTRIIND
219: 207: 
220:         DOUBLE PRECISION, INTENT(OUT) :: DERIV_ROTATION(NORBS,NORBS)208:         DOUBLE PRECISION, INTENT(OUT) :: DERIV_ROTATION(NORBS,NORBS)
221: 209: 
222:         DOUBLE PRECISION :: NEXT_ROT(NORBS,NORBS)210:         DOUBLE PRECISION :: NEXT_ROT(NORBS,NORBS)
223:         INTEGER :: TRIIND, I, J211:         INTEGER :: TRIIND, I, J
224: 212: 
225:         DERIV_ROTATION(1:NORBS,1:NORBS) = 0.0213:         DERIV_ROTATION(:,:) = 0.0
226: 214: 
227:         DO TRIIND = 1, NORBS215:         DO TRIIND = 1, NORBS
228:             DERIV_ROTATION(TRIIND, TRIIND) = 1.0216:             DERIV_ROTATION(TRIIND, TRIIND) = 1.0
229:         END DO217:         END DO
230: 218: 
231:         DO TRIIND = 1, NROTS219:         DO TRIIND = 1, NROTS
232:             CALL DECODE_TRIIND(TRIIND, I, J)220:             CALL DECODE_TRIIND(TRIIND, I, J)
233:             IF (TRIIND.EQ.DERIVTRIIND) THEN221:             IF (TRIIND.EQ.DERIVTRIIND) THEN
234:                 CALL GET_DERIVATIVE_GIVENS_ROTATION(I,J,COORDS(TRIIND),NEXT_ROT)222:                 CALL GET_DERIVATIVE_GIVENS_ROTATION(I,J,COORDS(TRIIND),NEXT_ROT)
235:             ELSE223:             ELSE
399:         DOUBLE PRECISION, INTENT(IN) :: CURRENT_ROTATION(NORBS, NORBS), CURRENT_DIP(3,NORBS)387:         DOUBLE PRECISION, INTENT(IN) :: CURRENT_ROTATION(NORBS, NORBS), CURRENT_DIP(3,NORBS)
400: 388: 
401:         DOUBLE PRECISION, INTENT(OUT) :: DERIVATIVE389:         DOUBLE PRECISION, INTENT(OUT) :: DERIVATIVE
402: 390: 
403:         INTEGER,INTENT(IN) :: NEW_ORB, ORIG_ORB391:         INTEGER,INTENT(IN) :: NEW_ORB, ORIG_ORB
404: 392: 
405:         INTEGER :: OTHER_ORIG_ORB393:         INTEGER :: OTHER_ORIG_ORB
406: 394: 
407:         DOUBLE PRECISION :: CONTRIB395:         DOUBLE PRECISION :: CONTRIB
408: 396: 
409:         DERIVATIVE = 0.0397:         DERIVATIVE = 0
410: 398: 
411:         DO OTHER_ORIG_ORB = 1, NORBS399:         DO OTHER_ORIG_ORB = 1, NORBS
412:             CONTRIB = 2 * CURRENT_ROTATION(NEW_ORB,OTHER_ORIG_ORB)*R2INTS(ORIG_ORB, OTHER_ORIG_ORB)400:             CONTRIB = 2 * CURRENT_ROTATION(NEW_ORB,OTHER_ORIG_ORB)*R2INTS(ORIG_ORB, OTHER_ORIG_ORB)
413: 401: 
414:             DERIVATIVE = DERIVATIVE + CONTRIB402:             DERIVATIVE = DERIVATIVE + CONTRIB
415: 403: 
416: 404: 
417:             CONTRIB = 4 * CURRENT_ROTATION(NEW_ORB,OTHER_ORIG_ORB)*&405:             CONTRIB = 4 * CURRENT_ROTATION(NEW_ORB,OTHER_ORIG_ORB)*&
418:                         (CURRENT_DIP(1,NEW_ORB)*DIPINTS(1,ORIG_ORB,OTHER_ORIG_ORB)&406:                         (CURRENT_DIP(1,NEW_ORB)*DIPINTS(1,ORIG_ORB,OTHER_ORIG_ORB)&
419:                         +CURRENT_DIP(2,NEW_ORB)*DIPINTS(2,ORIG_ORB,OTHER_ORIG_ORB)&407:                         +CURRENT_DIP(2,NEW_ORB)*DIPINTS(2,ORIG_ORB,OTHER_ORIG_ORB)&
441: 429: 
442:         DO ORIG_ORB = 1, NORBS430:         DO ORIG_ORB = 1, NORBS
443:             DO NEW_ORB = 1, NORBS431:             DO NEW_ORB = 1, NORBS
444:                 PENALTY_DERIVATIVES(ORIG_ORB, NEW_ORB) = &432:                 PENALTY_DERIVATIVES(ORIG_ORB, NEW_ORB) = &
445:                     ORBVAREXPONENT * IND_ORBVAR_DERIV(NEW_ORB,ORIG_ORB) * ORB_VAR(NEW_ORB) ** (ORBVAREXPONENT-1)433:                     ORBVAREXPONENT * IND_ORBVAR_DERIV(NEW_ORB,ORIG_ORB) * ORB_VAR(NEW_ORB) ** (ORBVAREXPONENT-1)
446:             END DO434:             END DO
447:         END DO435:         END DO
448: 436: 
449:     END SUBROUTINE GET_PENALTY_DERIVATIVES437:     END SUBROUTINE GET_PENALTY_DERIVATIVES
450: 438: 
451:     SUBROUTINE ORBITALS_FINISH() 
452:  
453:         ! Deallocate arrays in commons. 
454:  
455:         USE COMMONS, ONLY: R2INTS, DIPINTS 
456:  
457:         IF (ALLOCATED(R2INTS)) DEALLOCATE(R2INTS) 
458:         IF (ALLOCATED(DIPINTS)) DEALLOCATE(DIPINTS) 
459:  
460:     END SUBROUTINE ORBITALS_FINISH 
461:  
462:     SUBROUTINE CHECK_FILE_EXISTS(FNAME, EX) 
463:  
464:         ! Check if a file of the given name exists, exit if it does not and EX=.TRUE. 
465:  
466:         LOGICAL :: FILE_EXISTS, TEX 
467:         LOGICAL, INTENT(IN), OPTIONAL :: EX 
468:         CHARACTER(*), INTENT(IN) :: FNAME 
469:  
470:         IF(PRESENT(EX)) THEN 
471:           TEX = EX 
472:         ELSE 
473:           TEX = .FALSE. 
474:         ENDIF 
475: 439: 
476:         INQUIRE(FILE=FNAME, EXIST=FILE_EXISTS)440:     !SUBROUTINE ORBITALS_FINISH()
477:         IF(.NOT. FILE_EXISTS) THEN 
478:           WRITE(*,'(A)') "The file " // TRIM(FNAME) // " does not exist." 
479:           IF(TEX.EQV..TRUE.) THEN 
480:             STOP 
481:           ENDIF 
482:         ENDIF 
483: 441: 
484:     END SUBROUTINE CHECK_FILE_EXISTS442:         ! Deallocate arrays in commons?
485: 443: 
 444:     !END SUBROUTINE ORBITALS_FINISH
486: END MODULE ORBITALS_MOD445: END MODULE ORBITALS_MOD


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0