hdiff output

r30680/SBM.f 2016-07-06 15:35:53.799471272 +0100 r30679/SBM.f 2016-07-06 15:35:54.143475919 +0100
 12:       INTEGER MAXSEP,MAXSEP1 12:       INTEGER MAXSEP,MAXSEP1
 13:       PARAMETER (MAXSEP1=30) 13:       PARAMETER (MAXSEP1=30)
 14:       LOGICAL NNCINC(NSBMMAX,MAXSEP1) 14:       LOGICAL NNCINC(NSBMMAX,MAXSEP1)
 15:       DOUBLE PRECISION  Rb(2*NSBMMAX), bK(2*NSBMMAX), ANTC(2*NSBMMAX), 15:       DOUBLE PRECISION  Rb(2*NSBMMAX), bK(2*NSBMMAX), ANTC(2*NSBMMAX),
 16:      Q Tk(2*NSBMMAX), PK(3*NSBMMAX), PHISBM(3*NSBMMAX), CONCOEF1(NSBMMAX*5), 16:      Q Tk(2*NSBMMAX), PK(3*NSBMMAX), PHISBM(3*NSBMMAX), CONCOEF1(NSBMMAX*5),
 17:      Q CONCOEF2(NSBMMAX*5),NCswitch,NCcut,SBMCHARGE(NSBMMAX),PREFACTOR,KAPPA,DHswitch,DHcut 17:      Q CONCOEF2(NSBMMAX*5),NCswitch,NCcut,SBMCHARGE(NSBMMAX),PREFACTOR,KAPPA,DHswitch,DHcut
 18:       INTEGER  Ib1(NSBMMAX*2), Ib2(NSBMMAX*2), IT(NSBMMAX*2), JT(NSBMMAX*2), 18:       INTEGER  Ib1(NSBMMAX*2), Ib2(NSBMMAX*2), IT(NSBMMAX*2), JT(NSBMMAX*2),
 19:      Q KT(NSBMMAX*2),IP(NSBMMAX*3), JP(NSBMMAX*3), KP(NSBMMAX*3), 19:      Q KT(NSBMMAX*2),IP(NSBMMAX*3), JP(NSBMMAX*3), KP(NSBMMAX*3),
 20:      Q LP(NSBMMAX*3), IC(NSBMMAX*5), JC(NSBMMAX*5), 20:      Q LP(NSBMMAX*3), IC(NSBMMAX*5), JC(NSBMMAX*5),
 21:      Q PHITYPE(3*NSBMMAX),NBA,NTA,NPA,NC,SBMPRN, SBMPRI(NSBMMAX) 21:      Q PHITYPE(3*NSBMMAX),NBA,NTA,NPA,NC,SBMPRN, SBMPRI(NSBMMAX)
 22:       INTEGER MAXEXCLUSIONS,MAXEXCLUSIONSELEC,NEXCLUDE,NEXCLUDEELEC 22:       INTEGER MAXEXCLUSIONS,NEXCLUDE
 23:       PARAMETER (MAXEXCLUSIONS=20) 23:       PARAMETER (MAXEXCLUSIONS=20)
 24:       PARAMETER (MAXEXCLUSIONSELEC=5) 24:       INTEGER NNEXL1(NSBMMAX*MAXEXCLUSIONS),NNEXL2(NSBMMAX*MAXEXCLUSIONS)
 25:       INTEGER NNEXL1(NSBMMAX*MAXEXCLUSIONS),NNEXL2(NSBMMAX*MAXEXCLUSIONS), 
 26:      Q NNEXL1ELEC(NSBMMAX*MAXEXCLUSIONSELEC),NNEXL2ELEC(NSBMMAX*MAXEXCLUSIONSELEC) 
 27:  25: 
 28:       DOUBLE PRECISION SBMPRK(NSBMMAX,6),SBMPRX(NSBMMAX,3) 26:       DOUBLE PRECISION SBMPRK(NSBMMAX,6),SBMPRX(NSBMMAX,3)
 29:         integer CONTACTTYPE(NSBMMAX*5),SBMCHARGEON(NSBMMAX) 27:         integer CONTACTTYPE(NSBMMAX*5),SBMCHARGEON(NSBMMAX)
 30:         common /double precision/ Rb, bK, ANTC, Tk,PK, PHISBM, 28:         common /double precision/ Rb, bK, ANTC, Tk,PK, PHISBM,
 31:      Q NCswitch,NCcut,STT,SBMCHARGE,PREFACTOR,KAPPA,DHswitch,DHcut, 29:      Q NCswitch,NCcut,STT,SBMCHARGE,PREFACTOR,KAPPA,DHswitch,DHcut,
 32:      Q SBMPRK,SBMPRX,CONCOEF1,CONCOEF2 30:      Q SBMPRK,SBMPRX,CONCOEF1, CONCOEF2
 33:         common /int/ PHITYPE,Ib1,Ib2,IT,JT,KT,IP,JP,KP,LP,IC,JC, 31:         common /int/ PHITYPE, Ib1, Ib2, IT, JT, KT, IP,
 34:      Q NBA,NTA,NPA,NC,CONTACTTYPE,SBMCHARGEON,SBMPRN,SBMPRI,NNEXL1, 32:      Q JP, KP, LP,IC, JC, NBA, NTA, NPA, NC,
 35:      Q NNEXL2,NEXCLUDE,NNEXL1ELEC,NNEXL2ELEC,NEXCLUDEELEC 33:      Q CONTACTTYPE,SBMCHARGEON,SBMPRN,SBMPRI,NNEXL1,NNEXL2,NEXCLUDE
 36:         common /logical/ NNCINC 34:         common /logical/ NNCINC
 37:         MAXSEP=MAXSEP1 35:         MAXSEP=MAXSEP1
 38:  36: 
 39:         if(NATOMS.gt. NSBMMAX)then 37:         if(NATOMS.gt. NSBMMAX)then
 40:         write(*,*) 'TOO MANY ATOMS FOR SBM, change NSBMMAX' 38:         write(*,*) 'TOO MANY ATOMS FOR SBM, change NSBMMAX'
 41:         STOP 39:         STOP
 42:         endif 40:         endif
 43:  41: 
 44:        if(.NOT.CALLED)then 42:        if(.NOT.CALLED)then
 45:         NEXCLUDE=MAXEXCLUSIONS 43:         NEXCLUDE=MAXEXCLUSIONS
 46:         NEXCLUDEELEC=MAXEXCLUSIONS 
 47:         write(*,*) 44:         write(*,*)
 48:         write(*,*)  'Calculations will use a Structure-based SMOG model:' 45:         write(*,*)  'Calculations will use a Structure-based SMOG model:'
 49:         write(*,*)  '   For more information on SMOG models, see:' 
 50:         write(*,*)  '   Software: Noel, et al. PLoS Comput Biol 12, e1004794, 2016.' 46:         write(*,*)  '   Software: Noel, et al. PLoS Comput Biol 12, e1004794, 2016.'
 51:         write(*,*)  '   Model: Whitford, et al. Prot Struct Func Bioinfo 75, 430-441, 2009.' 47:         write(*,*)  '   Model: Whitford, et al. Prot Struct Func Bioinfo 75, 430-441, 2009.'
 52:         write(*,*) 48:         write(*,*)
 53:          49:         
 54:  50: 
 55:        call SBMinit(NATOMS,Ib1,Ib2,Rb,bK,IT,JT,KT,ANTC,Tk,IP,JP,KP,LP, 51:        call SBMinit(NATOMS,Ib1, Ib2,Rb, bK, IT, JT, KT, ANTC, Tk, IP, 
 56:      Q PK,PHITYPE,PHISBM,IC,JC,CONCOEF1,CONCOEF2,NNEXL1,NNEXL2,NEXCLUDE, 52:      Q JP, KP, LP, PK, PHITYPE,PHISBM,IC, JC, CONCOEF1,CONCOEF2, 
 57:      Q NNEXL1ELEC,NNEXL2ELEC,NEXCLUDEELEC,NNCINC,MAXSEP,NBA,NTA,NPA,NC, 53:      Q NNEXL1,NNEXL2,NEXCLUDE,NNCINC,MAXSEP,NBA,NTA,NPA,NC,SBMCHARGE,SBMCHARGEON,NCswitch,NCcut,STT,
 58:      Q SBMCHARGE,SBMCHARGEON,NCswitch,NCcut,STT,NSBMMAX,CONTACTTYPE, 54:      Q NSBMMAX,CONTACTTYPE,PREFACTOR,KAPPA,DHswitch,DHcut,SBMPRN,SBMPRI,SBMPRK,SBMPRX)
 59:      Q PREFACTOR,KAPPA,DHswitch,DHcut,SBMPRN,SBMPRI,SBMPRK,SBMPRX) 
 60:         if(NBA .gt. NSBMMAX*2 .or. NTA .gt. NSBMMAX*2 .or. 55:         if(NBA .gt. NSBMMAX*2 .or. NTA .gt. NSBMMAX*2 .or.
 61:      Q  NPA .gt. NSBMMAX*3 .or. NC .gt. 5*NSBMMAX)then 56:      Q  NPA .gt. NSBMMAX*3 .or. NC .gt. 5*NSBMMAX)then
 62:         write(*,*) 'increase array size' 57:         write(*,*) 'increase array size'
 63:         write(*,*) NBA, NTA,NPA,NC  58:         write(*,*) NBA, NTA,NPA,NC 
 64:         stop 59:         stop
 65:         endif  60:         endif 
 66:         CALLED=.TRUE. 61:         CALLED=.TRUE.
 67:         endIF 62:         endIF
 68:  63: 
 69:  64: 
 70: ! call the energy routine 65: ! call the energy routine
 71:       call calc_energy_SBM(qo,natoms,GRAD,energy,Ib1,Ib2,Rb,bK,IT,JT,KT, 66:       call calc_energy_SBM(qo,natoms,GRAD,energy,Ib1,Ib2,
 72:      Q ANTC,Tk,IP,JP,KP,LP,PK,PHITYPE,PHISBM,IC,JC,CONCOEF1,CONCOEF2,  67:      Q Rb,bK,IT,JT,KT,ANTC,Tk,IP,JP,KP,LP,PK,
 73:      Q NNEXL1,NNEXL2,NEXCLUDE,NNEXL1ELEC,NNEXL2ELEC,NEXCLUDEELEC,NNCINC, 68:      Q PHITYPE,PHISBM,IC,JC,CONCOEF1,CONCOEF2, 
 74:      Q MAXSEP,NBA,NTA,NPA,NC,SBMCHARGE,SBMCHARGEON,NCswitch,STT,NCcut, 69:      Q NNEXL1,NNEXL2,NEXCLUDE,NNCINC,MAXSEP,NBA,NTA,NPA,NC,SBMCHARGE,SBMCHARGEON,
 75:      Q CONTACTTYPE,PREFACTOR,KAPPA,DHswitch,DHcut,SBMPRN,SBMPRI,SBMPRK, 70:      Q NCswitch,STT,NCcut,CONTACTTYPE,PREFACTOR,KAPPA,DHswitch,DHcut,
 76:      Q SBMPRX) 71:      Q SBMPRN,SBMPRI,SBMPRK,SBMPRX)
 77:       IF (STEST) THEN 72:       IF (STEST) THEN
 78:          PRINT '(A)','ERROR - second derivatives not available' 73:          PRINT '(A)','ERROR - second derivatives not available'
 79:          STOP 74:          STOP
 80:       ENDIF 75:       ENDIF
 81:       return 76:       return
 82:       end 77:       end
 83:  78: 
 84:  79: 
 85: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 80: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 86: !* SBMinit() reads the atom positions from file.  If 1 is selected for * 81: !* SBMinit() reads the atom positions from file.  If 1 is selected for *
 87: !* startt then the velocities are assigned, otherwise, they are read   * 82: !* startt then the velocities are assigned, otherwise, they are read   *
 88: !* by selecting 2, or generated by selecting 3                         * 83: !* by selecting 2, or generated by selecting 3                         *
 89: !*********************************************************************** 84: !***********************************************************************
 90:  85: 
 91:       subroutine SBMINIT(NATOMS,Ib1,Ib2,Rb,bK,IT,JT,KT,ANTC,Tk, 86:       subroutine SBMINIT(NATOMS,Ib1,Ib2,Rb,bK,IT,JT,KT,ANTC,Tk,
 92:      Q IP,JP,KP,LP,PK,PHITYPE,PHISBM,IC, JC, CONCOEF1,CONCOEF2,  87:      Q IP,JP,KP,LP,PK,PHITYPE,PHISBM,IC, JC, CONCOEF1,CONCOEF2, 
 93:      Q NNEXL1,NNEXL2,MAXEXCLUSIONS,NNEXL1ELEC,NNEXL2ELEC,MAXEXCLUSIONSELEC, 88:      Q NNEXL1,NNEXL2,MAXEXCLUSIONS,NNCINC,MAXSEP,NBA,NTA,NPA,NC,SBMCHARGE,SBMCHARGEON,NCswitch,
 94:      Q NNCINC,MAXSEP,NBA,NTA,NPA,NC,SBMCHARGE,SBMCHARGEON,NCswitch,NCcut, 89:      Q NCcut,STT,NSBMMAX,CONTACTTYPE,PREFACTOR,KAPPA,DHswitch,DHcut,
 95:      Q STT,NSBMMAX,CONTACTTYPE,PREFACTOR,KAPPA,DHswitch,DHcut,SBMPRN, 90:      Q SBMPRN,SBMPRI,SBMPRK,SBMPRX)
 96:      Q SBMPRI,SBMPRK,SBMPRX) 
 97:       USE KEY 91:       USE KEY
 98:       USE COMMONS, only: ATMASS 92:       USE COMMONS, only: ATMASS
 99:       implicit NONE 93:       implicit NONE
100:  94: 
101:         integer i,j,MaxCon,NATOMS,storage, dummy,ANr, Ib22,Ib21,IT1,JT1, 95:         integer i,j,MaxCon,NATOMS,storage, dummy,  ANr, 
102:      Q KT1,IT2,JT2,KT2,IP1,JP1,KP1,LP1,IP2,JP2,KP2,LP2,nBA1,nTA1,nPA1,  96:      Q  Ib22, Ib21,IT1, JT1, KT1, IT2, JT2, KT2, IP1, JP1,
103:      Q nBA2,nTA2,nPA2,ind1,ind2,ANt,MDT1, MDT2, cl1,cl2,tempi,NSBMMAX, 97:      Q KP1, LP1, IP2, JP2, KP2,
104:      Q MAXEXCLUSIONS,MAXEXCLUSIONSELEC,NT,NTE,MAXSEP,MAXSEPTEMP 98:      Q LP2, nBA1, nTA1, nPA1, nBA2, nTA2, nPA2,  ind1, ind2, ANt,
  99:      Q  MDT1, MDT2, cl1,cl2,tempi,NSBMMAX,MAXEXCLUSIONS,NT,MAXSEP,MAXSEPTEMP
105: 100: 
106:       DOUBLE PRECISION  Rb(2*NSBMMAX), bK(2*NSBMMAX), ANTC(2*NSBMMAX), 101:       DOUBLE PRECISION  Rb(2*NSBMMAX), bK(2*NSBMMAX), ANTC(2*NSBMMAX), 
107:      Q Tk(2*NSBMMAX), PK(3*NSBMMAX), PHISBM(3*NSBMMAX),102:      Q Tk(2*NSBMMAX), PK(3*NSBMMAX), PHISBM(3*NSBMMAX),
108:      Q Sigma, EpsC, NCswitch,NCcut,STT,SBMCHARGE(NATOMS),103:      Q Sigma, EpsC, NCswitch,NCcut,STT,SBMCHARGE(NATOMS),
109:      Q CONCOEF1(5*NSBMMAX),CONCOEF2(5*NSBMMAX) 104:      Q CONCOEF1(5*NSBMMAX),CONCOEF2(5*NSBMMAX) 
110:       INTEGER  Ib1(2*NSBMMAX), Ib2(2*NSBMMAX), IT(2*NSBMMAX), JT(2*NSBMMAX), 105:       INTEGER  Ib1(2*NSBMMAX), Ib2(2*NSBMMAX), IT(2*NSBMMAX), JT(2*NSBMMAX), 
111:      Q KT(2*NSBMMAX),IP(3*NSBMMAX),JP(3*NSBMMAX),KP(3*NSBMMAX),106:      Q KT(2*NSBMMAX),IP(3*NSBMMAX),JP(3*NSBMMAX),KP(3*NSBMMAX),
112:      Q LP(3*NSBMMAX),IC(NSBMMAX*5),JC(NSBMMAX*5), 107:      Q LP(3*NSBMMAX),IC(NSBMMAX*5),JC(NSBMMAX*5), 
113:      Q NBA,NTA,NPA,NC,SBMCHARGEON(NATOMS),BONDTYPE108:      Q NBA,NTA,NPA,NC,SBMCHARGEON(NATOMS),BONDTYPE
114:       INTEGER PHITYPE(3*NSBMMAX),M109:       INTEGER PHITYPE(3*NSBMMAX)
115:       integer AA,BB,ANTEMP110:       integer AA,BB,ANTEMP
116:       INTEGER NNEXL1(NATOMS*MAXEXCLUSIONS)111:       INTEGER NNEXL1(NATOMS*MAXEXCLUSIONS)
117:       INTEGER NNEXL2(NATOMS*MAXEXCLUSIONS)112:       INTEGER NNEXL2(NATOMS*MAXEXCLUSIONS)
118:       INTEGER NNEXL1ELEC(NATOMS*MAXEXCLUSIONSELEC) 
119:       INTEGER NNEXL2ELEC(NATOMS*MAXEXCLUSIONSELEC) 
120:       DOUBLE PRECISION dx,dy,dz113:       DOUBLE PRECISION dx,dy,dz
121:       double precision PI114:       double precision PI
122:       DOUBLE PRECISION RSig, Reps,PREFACTOR,DC,KAPPA,DHswitch,DHcut115:       DOUBLE PRECISION RSig, Reps,PREFACTOR,DC,KAPPA,DHswitch,DHcut
123:       integer CONTACTTYPE(NSBMMAX*5)116:       integer CONTACTTYPE(NSBMMAX*5)
124:       character TMPCHAR117:       character TMPCHAR
125:       integer TMPINT,NUMCHARGES,nexc,I1,I2118:       integer TMPINT,NUMCHARGES,nexc,I1,I2
126:       double precision TMPREAL,concentration119:       double precision TMPREAL,concentration
127:       LOGICAL NNCINC(NATOMS,MAXSEP)120:       LOGICAL NNCINC(NATOMS,MAXSEP)
128: 121: 
129:       INTEGER SBMPRN, SBMPRI(NATOMS),TARR(NATOMS)122:       INTEGER SBMPRN, SBMPRI(NATOMS),TARR(NATOMS)
139: !$    endif132: !$    endif
140: !$OMP END PARALLEL133: !$OMP END PARALLEL
141: 134: 
142: 135: 
143:       DO I=1,NATOMS136:       DO I=1,NATOMS
144:         DO J=1,MAXSEP137:         DO J=1,MAXSEP
145:           NNCINC(I,J)=.TRUE.138:           NNCINC(I,J)=.TRUE.
146:         enddo139:         enddo
147:       enddo140:       enddo
148: 141: 
 142: 
 143: 
149:       pi = 3.14159265358979323846264338327950288419716939937510144:       pi = 3.14159265358979323846264338327950288419716939937510
150:       MaxCon=NATOMS*5145:       MaxCon=NATOMS*5
151:       MAXSEPTEMP=0146:       MAXSEPTEMP=0
152:       do i=1,NATOMS147:       do i=1,NATOMS
153:         NUMOFEXCLUSIONS(I)=0148:         NUMOFEXCLUSIONS(I)=0
154:       enddo149:       enddo
155: 150: 
156: ! These lines read in the parameters.151: ! These lines read in the parameters.
157:         open(30, file='SBM.INP', status='old', access='sequential')152:         open(30, file='SBM.INP', status='old', access='sequential')
158:         write(*,*) 153:         write(*,*) 
274:       do i=1, nexc269:       do i=1, nexc
275:         read(30,*) I1, I2270:         read(30,*) I1, I2
276:         CALL INCLUDEEXCLUSIONS(NATOMS,I1,I2,EXCLUSIONS,NUMOFEXCLUSIONS,MAXEXCLUSIONS,NNCINC,MAXSEP,MAXSEPTEMP)          271:         CALL INCLUDEEXCLUSIONS(NATOMS,I1,I2,EXCLUSIONS,NUMOFEXCLUSIONS,MAXEXCLUSIONS,NNCINC,MAXSEP,MAXSEPTEMP)          
277:       enddo272:       enddo
278: 273: 
279: ! now that we know what to exclude, let's make a static list of pairs to274: ! now that we know what to exclude, let's make a static list of pairs to
280: ! exclude275: ! exclude
281: ! At this point, we will change the meaning of maxexclusions, which is276: ! At this point, we will change the meaning of maxexclusions, which is
282: ! actually NEXCLUDE277: ! actually NEXCLUDE
283:         NT=MAXEXCLUSIONS*NATOMS      278:         NT=MAXEXCLUSIONS*NATOMS      
284:         NTE=MAXEXCLUSIONSELEC*NATOMS       
285:         MAXEXCLUSIONS=0  279:         MAXEXCLUSIONS=0  
286:         MAXEXCLUSIONSELEC=0   
287:         DO I=1,NATOMS280:         DO I=1,NATOMS
288:           DO J=1,NUMOFEXCLUSIONS(I)281:           DO J=1,NUMOFEXCLUSIONS(I)
289:             MAXEXCLUSIONS=MAXEXCLUSIONS+1282:             MAXEXCLUSIONS=MAXEXCLUSIONS+1
290:             IF(MAXEXCLUSIONS .GT. NT)THEN283:             IF(MAXEXCLUSIONS .GT. NT)THEN
291:               write(*,*) 'ERROR: TOO MANY EXCLUSIONS, IN TOTAL.'284:               write(*,*) 'ERROR: TOO MANY EXCLUSIONS, IN TOTAL.'
292:             ENDIF285:             ENDIF
293:             M=EXCLUSIONS(I,J) 
294:             NNEXL1(MAXEXCLUSIONS)=I286:             NNEXL1(MAXEXCLUSIONS)=I
295:             NNEXL2(MAXEXCLUSIONS)=M287:             NNEXL2(MAXEXCLUSIONS)=EXCLUSIONS(I,J)
296:            
297:             IF(SBMCHARGE(I) .NE. 0 .AND. SBMCHARGE(M) .NE. 0)THEN 
298:               MAXEXCLUSIONSELEC=MAXEXCLUSIONSELEC+1 
299:               IF(MAXEXCLUSIONSELEC .GT. NTE)THEN 
300:                 write(*,*) 'ERROR: TOO MANY EXCLUSIONS (ELEC), IN TOTAL.' 
301:               ENDIF 
302:               NNEXL1ELEC(MAXEXCLUSIONSELEC)=I 
303:               NNEXL2ELEC(MAXEXCLUSIONSELEC)=M 
304:             ENDIF 
305:           ENDDO288:           ENDDO
306:         ENDDO289:         ENDDO
307:         STT=reps*rsig**12290:         STT=reps*rsig**12
308: 291: 
309:         do I=1,NATOMS292:         do I=1,NATOMS
310:           TARR(I)=0293:           TARR(I)=0
311:         enddo294:         enddo
312: 295: 
313: ! read in position restraints296: ! read in position restraints
314:        read(30,*) 297:        read(30,*) 
376:           EXCLIST(M,NEXCLUDE(M))=N359:           EXCLIST(M,NEXCLUDE(M))=N
377:         ENDIF360:         ENDIF
378:       ENDIF361:       ENDIF
379:       END362:       END
380: !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^363: !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
381: 364: 
382: 365: 
383: C366: C
384: C Calculate the Forces and energies367: C Calculate the Forces and energies
385: C368: C
386:       subroutine CALC_ENERGY_SBM(qo,natoms,GRAD,energy,Ib1,Ib2,Rb,bK,IT,369:       subroutine CALC_ENERGY_SBM(qo,natoms,GRAD, energy,Ib1, Ib2,
387:      Q JT,KT,ANTC,Tk,IP,JP,KP,LP,PK,PHITYPE,PHISBM,IC,JC,CONCOEF1,370:      Q Rb, bK, IT, JT, KT, ANTC, Tk, IP, JP, KP, LP, PK,
388:      Q CONCOEF2,NNEXL1,NNEXL2,NEXCLUSIONS,NNNEXL1ELEC,NNEXL2ELEC,371:      Q PHITYPE,PHISBM,IC, JC, CONCOEF1,CONCOEF2, 
389:      Q NEXCLUSIONSELEC,NCINC,MAXSEP,NBA,NTA,NPA,NC,SBMCHARGE,SBMCHARGEON,372:      Q NNEXL1,NNEXL2,NEXCLUSIONS,NNCINC,MAXSEP,NBA,NTA,NPA,NC,SBMCHARGE, SBMCHARGEON,NCswitch,
390:      Q NCswitch,STT,NCcut,CONTACTTYPE,PREFACTOR,KAPPA,DHswitch,DHcut,373:      Q STT,NCcut,CONTACTTYPE,PREFACTOR,KAPPA,DHswitch,DHcut,
391:      Q SBMPRN,SBMPRI,SBMPRK,SBMPRX)374:      Q SBMPRN,SBMPRI,SBMPRK,SBMPRX)
392: 375: 
393:       INTEGER I,J,NATOMS,NBA,NTA,NPA,NC,NEXCLUSIONS,MAXSEP,NEXCLUSIONSELEC376:       INTEGER I,J,NATOMS,NBA,NTA,NPA,NC,NEXCLUSIONS,MAXSEP
394: 377: 
395:       DOUBLE PRECISION qo(3*NATOMS), grad(3*NATOMS), ENERGY378:       DOUBLE PRECISION qo(3*NATOMS), grad(3*NATOMS), ENERGY
396:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS)379:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS)
397:       LOGICAL NNCINC(NATOMS,MAXSEP)380:       LOGICAL NNCINC(NATOMS,MAXSEP)
398: 381: 
399:         DOUBLE PRECISION Rb(NBA), bK(NBA), ANTC(NTA), Tk(NTA), PK(NPA), 382:         DOUBLE PRECISION Rb(NBA), bK(NBA), ANTC(NTA), Tk(NTA), PK(NPA), 
400:      Q PHISBM(NPA),CONCOEF1(NC),CONCOEF2(NC),NCswitch,NCcut,STT, 383:      Q PHISBM(NPA),CONCOEF1(NC),CONCOEF2(NC),NCswitch,NCcut,STT, 
401:      Q SBMCHARGE(NATOMS)384:      Q SBMCHARGE(NATOMS)
402:         INTEGER Ib1(NBA),Ib2(NBA),IT(NTA),JT(NTA),KT(NTA),IP(NPA), 385:         INTEGER Ib1(NBA), Ib2(NBA), IT(NTA), JT(NTA), KT(NTA),IP(NPA), 
403:      Q JP(NPA),KP(NPA),LP(NPA),IC(NC),JC(NC),SBMCHARGEON(NATOMS),386:      Q JP(NPA), KP(NPA), LP(NPA), IC(NC), JC(NC),SBMCHARGEON(NATOMS),
404:      Q PHITYPE(NPA),CONTACTTYPE(NC)387:      Q PHITYPE(NPA),CONTACTTYPE(NC)
405:         INTEGER NNEXL1(NEXCLUSIONS)388:         INTEGER NNEXL1(NEXCLUSIONS)
406:         INTEGER NNEXL2(NEXCLUSIONS)389:         INTEGER NNEXL2(NEXCLUSIONS)
407:         INTEGER NNEXL1ELEC(NEXCLUSIONSELEC) 
408:         INTEGER NNEXL2ELEC(NEXCLUSIONSELEC) 
409:       DOUBLE PRECISION dx,dy,dz390:       DOUBLE PRECISION dx,dy,dz
410:       INTEGER SBMPRN, SBMPRI(NATOMS)391:       INTEGER SBMPRN, SBMPRI(NATOMS)
411:       DOUBLE PRECISION SBMPRK(NATOMS,6),SBMPRX(NATOMS,3)392:       DOUBLE PRECISION SBMPRK(NATOMS,6),SBMPRX(NATOMS,3)
412:       do i = 1, natoms393:       do i = 1, natoms
413:         j = (i-1)*3394:         j = (i-1)*3
414:         x(i) = qo(j+1)395:         x(i) = qo(j+1)
415:         y(i) = qo(j+2)396:         y(i) = qo(j+2)
416:         z(i) = qo(j+3)397:         z(i) = qo(j+3)
417:         grad(j+1) = 0.0398:         grad(j+1) = 0.0
418:         grad(j+2) = 0.0399:         grad(j+2) = 0.0
419:         grad(j+3) = 0.0400:         grad(j+3) = 0.0
420:       enddo401:       enddo
421: 402: 
422:       energy = 0.0403:       energy = 0.0
423:       call SBMbonds(x,y,z,grad, energy, natoms,Ib1, Ib2,Rb, bK,NBA)404:       call SBMbonds(x,y,z,grad, energy, natoms,Ib1, Ib2,Rb, bK,NBA)
424:       call SBMangl(x,y,z,grad, energy, natoms,IT,JT,KT,ANTC,Tk,NTA)405:       call SBMangl(x,y,z,grad, energy, natoms,IT,JT,KT,ANTC,Tk,NTA)
425:       call SBMDihedral(x,y,z,grad, energy, natoms,IP,JP,KP,LP,PK,406:       call SBMDihedral(x,y,z,grad, energy, natoms,IP,JP,KP,LP,PK,
426:      Q PHITYPE,PHISBM,NPA)407:      Q PHITYPE,PHISBM,NPA)
427:       call SBMContacts(x,y,z,grad, energy,natoms,IC,JC,CONCOEF1,CONCOEF2,408:       call SBMContacts(x,y,z,grad, energy,natoms,IC,JC, 
428:      Q NC,CONTACTTYPE)409:      Q CONCOEF1,CONCOEF2,NC,CONTACTTYPE)
429:       call SBMNonContacts(x,y,z,grad, energy, natoms,NNEXL1,NNEXL2,410:       call SBMNonContacts(x,y,z,grad, energy, natoms, 
430:      Q NEXCLUSIONS,NNCINC,MAXSEP,NCswitch,NCcut,STT)411:      Q NNEXL1,NNEXL2,NEXCLUSIONS,NNCINC,MAXSEP,NCswitch,NCcut,STT)
431:       call SBMDHELEC(x,y,z,grad,energy,natoms,NNEXL1ELEC,NNEXL2ELEC,412:       call SBMDHELEC(x,y,z,grad, energy, natoms, 
432:      Q NEXCLUSIONSELEC,PREFACTOR,KAPPA,DHswitch,DHcut,SBMCHARGE,SBMCHARGEON)413:      Q NNEXL1,NNEXL2,NEXCLUSIONS,PREFACTOR,KAPPA,DHswitch,DHcut,SBMCHARGE,SBMCHARGEON)
433:       call SBMPR(x,y,z,grad, energy, natoms,SBMPRN,SBMPRI,SBMPRK,SBMPRX)414:       call SBMPR(x,y,z,grad, energy, natoms,SBMPRN,SBMPRI,SBMPRK,SBMPRX)
434: 415: 
435:       end416:       end
436: 417: 
437: 418: 
438: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<419: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
439: !* SBMBonds  computes the hookean force and energy between chosen atoms *420: !* SBMBonds  computes the hookean force and energy between chosen atoms *
440: !***********************************************************************421: !***********************************************************************
441: 422: 
442:       subroutine SBMBonds(x,y,z,grad,energy, natoms,Ib1, Ib2,Rb, bK,NBA)423:       subroutine SBMBonds(x,y,z,grad,energy, natoms,Ib1, Ib2,Rb, bK,NBA)
1034:       implicit NONE1015:       implicit NONE
1035:       double precision kappa,r1016:       double precision kappa,r
1036:       SBMDHVP=-kappa*exp(-kappa*r)/r-exp(-kappa*r)/(r**2)1017:       SBMDHVP=-kappa*exp(-kappa*r)/r-exp(-kappa*r)/(r**2)
1037:       END1018:       END
1038: !****************************************************1019: !****************************************************
1039: 1020: 
1040: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<1021: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1041: !* SBMDHELEC computes the forces due to DH electrostatics        *1022: !* SBMDHELEC computes the forces due to DH electrostatics        *
1042: !**********************************************************************1023: !**********************************************************************
1043: 1024: 
1044:       subroutine SBMDHELEC(x,y,z,grad,energy,natoms,NNEXL1,NNEXL2,1025:       subroutine SBMDHELEC(x,y,z,grad, energy, natoms, 
1045:      Q NEXCLUSIONS,PREFACTOR,KAPPA,DHswitch,DHcut,SBMCHARGE,SBMCHARGEON)1026:      Q NNEXL1,NNEXL2,NEXCLUSIONS,PREFACTOR,KAPPA,DHswitch,DHcut,SBMCHARGE,SBMCHARGEON)
1046: 1027: 
1047:       USE KEY1028:       USE KEY
1048:       implicit NONE1029:       implicit NONE
1049:       integer I, N, J, AN, NATOMS1030:       integer I, N, J, AN, NATOMS
1050: 1031: 
1051: 1032: 
1052:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS),1033:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS),
1053:      Q grad(3*NATOMS), energy,STT,SA,SB,SC,1034:      Q grad(3*NATOMS), energy,STT,SA,SB,SC,
1054:      Q SBMDHVP, SBMDHV1035:      Q SBMDHVP, SBMDHV
1055:       integer C1, C2, C12,ii,jj,kk,k,l,iii,jjj1036:       integer C1, C2, C12,ii,jj,kk,k,l,iii,jjj


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0