hdiff output

r31827/keywords.f 2017-01-26 16:30:13.053192769 +0000 r31826/keywords.f 2017-01-26 16:30:13.361196928 +0000
 31:      &                      SMINDISTSTART, SMINDISTFINISH, natomsina, natomsinb, natomsinc, atomsinalist, atomsinblist, 31:      &                      SMINDISTSTART, SMINDISTFINISH, natomsina, natomsinb, natomsinc, atomsinalist, atomsinblist,
 32:      &                      atomsinclist, atomsinalistlogical, atomsinblistlogical, atomsinclistlogical, ligcartstep, 32:      &                      atomsinclist, atomsinalistlogical, atomsinblistlogical, atomsinclistlogical, ligcartstep,
 33:      &                      ligtransstep, ligmovefreq, amchnmax, amchnmin, amchpmax, amchpmin, rotamert, rotmaxchange, 33:      &                      ligtransstep, ligmovefreq, amchnmax, amchnmin, amchpmax, amchpmin, rotamert, rotmaxchange,
 34:      &                      rotcentre, rotpselect, rotoccuw, rotcutoff, setchiralgeneric, PRMTOP, IGB, RGBMAX, CUT, 34:      &                      rotcentre, rotpselect, rotoccuw, rotcutoff, setchiralgeneric, PRMTOP, IGB, RGBMAX, CUT,
 35:      &                      SALTCON, macroiont, nmacroions, macroiondist 35:      &                      SALTCON, macroiont, nmacroions, macroiondist
 36:       USE modamber 36:       USE modamber
 37:       USE PORFUNCS 37:       USE PORFUNCS
 38:       USE MYGA_PARAMS 38:       USE MYGA_PARAMS
 39:       USE BGUPMOD 39:       USE BGUPMOD
 40:       USE GLJYMOD 40:       USE GLJYMOD
 41:       USE CHIRO_MODULE, ONLY: CHIRO_SIGMA, CHIRO_MU, CHIRO_GAMMA, CHIRO_L, JAR_RADIUS, K_R 41:       USE CHIRO_MODULE, ONLY: CHIRO_SIGMA, CHIRO_MU, CHIRO_GAMMA, CHIRO_L
 42:       USE MBPOLMOD, ONLY: MBPOLINIT 42:       USE MBPOLMOD, ONLY: MBPOLINIT
 43:       USE SWMOD, ONLY: SWINIT, MWINIT 43:       USE SWMOD, ONLY: SWINIT, MWINIT
 44:       USE AMBER12_INTERFACE_MOD, ONLY : AMBER12_SETUP, AMBER12_GET_COORDS, AMBER12_ATOMS, 44:       USE AMBER12_INTERFACE_MOD, ONLY : AMBER12_SETUP, AMBER12_GET_COORDS, AMBER12_ATOMS,
 45:      &                                  AMBER12_RESIDUES, POPULATE_ATOM_DATA 45:      &                                  AMBER12_RESIDUES, POPULATE_ATOM_DATA
 46:       USE CHIRALITY, ONLY : CIS_TRANS_TOL 46:       USE CHIRALITY, ONLY : CIS_TRANS_TOL
 47:       USE ISO_C_BINDING, ONLY: C_NULL_CHAR 47:       USE ISO_C_BINDING, ONLY: C_NULL_CHAR
 48:       USE PARSE_POT_PARAMS, ONLY : PARSE_MGUPTA_PARAMS, PARSE_MSC_PARAMS,  48:       USE PARSE_POT_PARAMS, ONLY : PARSE_MGUPTA_PARAMS, PARSE_MSC_PARAMS, 
 49:      &     PARSE_MLJ_PARAMS 49:      &     PARSE_MLJ_PARAMS
 50:       USE ROTAMER, ONLY: ROTAMER_MOVET, ROTAMER_SCRIPT, ROTAMER_INIT 50:       USE ROTAMER, ONLY: ROTAMER_MOVET, ROTAMER_SCRIPT, ROTAMER_INIT
 51:       USE HINGE_MOVES, ONLY: HINGE_INITIALISE 51:       USE HINGE_MOVES, ONLY: HINGE_INITIALISE
 52:       USE MOLECULAR_DYNAMICS, ONLY : MDT, MD_TSTEP, MD_GAMMA, MD_NWAIT, MD_NFREQ, MD_NSTEPS 52:       USE MOLECULAR_DYNAMICS, ONLY : MDT, MD_TSTEP, MD_GAMMA, MD_NWAIT, MD_NFREQ, MD_NSTEPS
  53:       USE OPEP_INTERFACE_MOD, ONLY : OPEP_INIT
 53:        54:       
 54:       IMPLICIT NONE 55:       IMPLICIT NONE
 55:  56: 
 56:       DOUBLE PRECISION, ALLOCATABLE :: MLPMEAN(:), MLQMEAN(:) 57:       DOUBLE PRECISION, ALLOCATABLE :: MLPMEAN(:), MLQMEAN(:)
 57:       INTEGER ITEM, NITEMS, LOC, LINE, NCR, NERROR, LAST, IX, J1, JP, NPCOUNT, NDUMMY, INDEX, J2, J3, J4 58:       INTEGER ITEM, NITEMS, LOC, LINE, NCR, NERROR, LAST, IX, J1, JP, NPCOUNT, NDUMMY, INDEX, J2, J3, J4
 58:       INTEGER DATA_UNIT 59:       INTEGER DATA_UNIT, FUNIT
 59:       INTEGER MOVABLEATOMINDEX 60:       INTEGER MOVABLEATOMINDEX
 60:       LOGICAL CAT, YESNO, PERMFILE, CONFILE 61:       LOGICAL CAT, YESNO, PERMFILE, CONFILE
 61:       COMMON /BUFINF/ ITEM, NITEMS, LOC(80), LINE, SKIPBL, CLEAR, NCR, 62:       COMMON /BUFINF/ ITEM, NITEMS, LOC(80), LINE, SKIPBL, CLEAR, NCR,
 62:      &                NERROR, ECHO, LAST, CAT 63:      &                NERROR, ECHO, LAST, CAT
 63:        DOUBLE PRECISION XX, ROH, ROM, WTHETA  64:        DOUBLE PRECISION XX, ROH, ROM, WTHETA 
 64:       LOGICAL END, SKIPBL, CLEAR, ECHO 65:       LOGICAL END, SKIPBL, CLEAR, ECHO
 65:       CHARACTER WORD*16,PBC*3,WORD2*10 66:       CHARACTER WORD*16,PBC*3,WORD2*10
 66:       DOUBLE PRECISION EAMLJA0, EAMLJBETA, EAMLJZ0, DUMMY 67:       DOUBLE PRECISION EAMLJA0, EAMLJBETA, EAMLJZ0, DUMMY
 67:       COMMON /EAMLJCOMM/ EAMLJA0, EAMLJBETA, EAMLJZ0 68:       COMMON /EAMLJCOMM/ EAMLJA0, EAMLJBETA, EAMLJZ0
 68:       DOUBLE PRECISION SLENGTH, EPS 69:       DOUBLE PRECISION SLENGTH, EPS
109:       INTEGER VECLINE, VECNUM, RESCOUNT110:       INTEGER VECLINE, VECNUM, RESCOUNT
110: 111: 
111: ! hk286 - DAMPED GROUP MOVES112: ! hk286 - DAMPED GROUP MOVES
112:       DOUBLE PRECISION GROUPATT113:       DOUBLE PRECISION GROUPATT
113: 114: 
114:       CHARACTER(LEN=120), DIMENSION(:,:), ALLOCATABLE :: KEY_WORDS115:       CHARACTER(LEN=120), DIMENSION(:,:), ALLOCATABLE :: KEY_WORDS
115:       DOUBLE PRECISION DUMMY1(NATOMS)116:       DOUBLE PRECISION DUMMY1(NATOMS)
116: 117: 
117:       INTEGER :: MAXNSETS118:       INTEGER :: MAXNSETS
118: 119: 
 120:       CHARACTER(LEN=10) :: OPEP_DUMMY
 121: 
119: !      OPEN(5120, FILE = 'data')122: !      OPEN(5120, FILE = 'data')
120: !      CALL NEW_INPUT(5120, KEY_WORDS)123: !      CALL NEW_INPUT(5120, KEY_WORDS)
121: !      CLOSE(5120)124: !      CLOSE(5120)
122: !      PRINT *, KEY_WORDS125: !      PRINT *, KEY_WORDS
123: 126: 
124:       AAA=0127:       AAA=0
125:       AAB=0128:       AAB=0
126:       ABB=0129:       ABB=0
127:       PAA=0130:       PAA=0
128:       PAB=0131:       PAB=0
534:       GLJY = .FALSE.537:       GLJY = .FALSE.
535:       GLJ_EXP = 6538:       GLJ_EXP = 6
536:       YUK_A = 0.0D0539:       YUK_A = 0.0D0
537:       YUK_XI = 1.0D0540:       YUK_XI = 1.0D0
538:       541:       
539: !     ds656> Molecular Dynamics542: !     ds656> Molecular Dynamics
540:       MDT = .FALSE.543:       MDT = .FALSE.
541:       MD_NSTEPS = 0544:       MD_NSTEPS = 0
542:       MD_NWAIT = 1545:       MD_NWAIT = 1
543:       MD_NFREQ = 100546:       MD_NFREQ = 100
544:       MD_GAMMA = 0.1547:       MD_GAMMA = 0.0
545:       MD_TSTEP = 0.01548:       MD_TSTEP = 0.002
546: 549: 
547:       CHRMMT=.FALSE.550:       CHRMMT=.FALSE.
548:       CHARMMTYPE=1551:       CHARMMTYPE=1
549:       CHARMMDFTBT=.FALSE.552:       CHARMMDFTBT=.FALSE.
550:       ACESOLV=.FALSE.553:       ACESOLV=.FALSE.
551:       ACEUPSTEP=50554:       ACEUPSTEP=50
552:       CHRIGIDTRANST=.FALSE.555:       CHRIGIDTRANST=.FALSE.
553:       CHRIGIDROTT=.FALSE.556:       CHRIGIDROTT=.FALSE.
554:       CHNMIN=0.D0557:       CHNMIN=0.D0
555:       CHNMAX=HUGE(1.0D0)558:       CHNMAX=HUGE(1.0D0)
1143: !     SIGMAHEX=(1.0D0+RADHEX*SQRT((5.0D0+SQRT(5.0D0))/2.0D0))1146: !     SIGMAHEX=(1.0D0+RADHEX*SQRT((5.0D0+SQRT(5.0D0))/2.0D0))
1144: !     SIGMAPH=0.5D0*(SIGMA + SIGMAHEX)1147: !     SIGMAPH=0.5D0*(SIGMA + SIGMAHEX)
1145: !     CAPSIDEPS=0.4D01148: !     CAPSIDEPS=0.4D0
1146: 1149: 
1147: !1150: !
1148: ! Neural network potential1151: ! Neural network potential
1149: !1152: !
1150:       MLP3T=.FALSE.1153:       MLP3T=.FALSE.
1151:       MLPB3T=.FALSE.1154:       MLPB3T=.FALSE.
1152:       MLPB3NEWT=.FALSE.1155:       MLPB3NEWT=.FALSE.
 1156:       MLPVB3T=.FALSE.
 1157:       NOREGBIAS=.FALSE.
1153:       MLPNEWREG=.FALSE.1158:       MLPNEWREG=.FALSE.
1154:       MLPDONE=.FALSE.1159:       MLPDONE=.FALSE.
1155:       MLPNORM=.FALSE.1160:       MLPNORM=.FALSE.
1156:       MLPLAMBDA=0.0D01161:       MLPLAMBDA=0.0D0
1157: !1162: !
1158: ! ML quadratic function1163: ! ML quadratic function
1159: !1164: !
1160:       MLQT=.FALSE.1165:       MLQT=.FALSE.
1161:       MLQPROB=.FALSE.1166:       MLQPROB=.FALSE.
1162:       MLQDONE=.FALSE.1167:       MLQDONE=.FALSE.
1163:       MLQNORM=.FALSE.1168:       MLQNORM=.FALSE.
1164:       MLQLAMBDA=0.0D01169:       MLQLAMBDA=0.0D0
1165:       MLQSTART=11170:       MLQSTART=1
1166: 1171: 
1167:       LJADDT=.FALSE.1172:       LJADDT=.FALSE.
1168:       LJADD2T=.FALSE.1173:       LJADD2T=.FALSE.
1169: 1174: 
1170:       DUMPMQT=.FALSE.1175:       DUMPMQT=.FALSE.
 1176: 
 1177: ! OPEP stuff
 1178:       OPEPT = .FALSE.
 1179:       OPEP_RNAT = .FALSE.
1171:       1180:       
1172:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)1181:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)
1173:       1182:       
1174: !      OPEN (5,FILE='data',STATUS='OLD')1183: !      OPEN (5,FILE='data',STATUS='OLD')
1175: 1184: 
1176: !190   CALL INPUT(END,5)1185: !190   CALL INPUT(END,5)
1177: 190   CALL INPUT(END, DATA_UNIT)1186: 190   CALL INPUT(END, DATA_UNIT)
1178:       IF (.NOT. END) THEN1187:       IF (.NOT. END) THEN
1179:         CALL READU(WORD)1188:         CALL READU(WORD)
1180:       ENDIF1189:       ENDIF
1969:       ELSE IF (WORD.EQ.'CG') THEN1978:       ELSE IF (WORD.EQ.'CG') THEN
1970:          LBFGST=.FALSE.1979:          LBFGST=.FALSE.
1971:          CONJG=.TRUE.1980:          CONJG=.TRUE.
1972: ! 1981: ! 
1973: ! sf344> Start of AMBER-related keywords 1982: ! sf344> Start of AMBER-related keywords 
1974: !1983: !
1975:       ELSE IF (WORD.EQ.'AMBERMDSTEPS') THEN1984:       ELSE IF (WORD.EQ.'AMBERMDSTEPS') THEN
1976:         MDSTEPT = .TRUE.1985:         MDSTEPT = .TRUE.
1977:       ELSE IF (WORD .EQ. 'AMBER12') THEN1986:       ELSE IF (WORD .EQ. 'AMBER12') THEN
1978:         AMBER12T = .TRUE.1987:         AMBER12T = .TRUE.
1979: ! Read the coords from AMBER12 into COORDS(:,1)1988:         IF(.NOT.ALLOCATED(COORDS1)) ALLOCATE(COORDS1(3*NATOMS))
1980:         CALL AMBER12_GET_COORDS(NATOMS, COORDS(:,1))1989:         IF(ALLOCATED(COORDS)) DEALLOCATE(COORDS)
 1990: ! Read the coords from AMBER12 into COORDS1(:)
 1991:         CALL AMBER12_GET_COORDS(NATOMS, COORDS1(:))
 1992:         ALLOCATE(COORDS(3*NATOMS,NPAR))
 1993:         DO J1=1,NPAR
 1994:           COORDS(:,J1) = COORDS1(:)
 1995:         END DO
 1996: 
 1997: 
1981:       ELSE IF (WORD.EQ.'AMBER9') THEN1998:       ELSE IF (WORD.EQ.'AMBER9') THEN
1982:         AMBERT=.TRUE.1999:         AMBERT=.TRUE.
1983:         WRITE(MYUNIT,'(A)') 'keyword> RADIUS set to 999 for AMBER9 run'2000:         WRITE(MYUNIT,'(A)') 'keyword> RADIUS set to 999 for AMBER9 run'
1984:         RADIUS=9992001:         RADIUS=999
1985:         2002:         
1986: !2003: !
1987: ! csw34> if residues are frozen with FREEZERES, call the amber routine2004: ! csw34> if residues are frozen with FREEZERES, call the amber routine
1988: ! to fill the FROZEN array correctly (in amberinterface.f) 2005: ! to fill the FROZEN array correctly (in amberinterface.f) 
1989: !2006: !
1990:         IF (PERMDIST.OR.LOCALPERMDIST.OR.LPERMDIST) THEN2007:         IF (PERMDIST.OR.LOCALPERMDIST.OR.LPERMDIST) THEN
2138:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'2155:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'
2139:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)2156:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)
2140:             DO J1=1,MLPIN2157:             DO J1=1,MLPIN
2141:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)2158:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)
2142:             ENDDO2159:             ENDDO
2143:          ENDIF2160:          ENDIF
2144:          DEALLOCATE(MLPMEAN)2161:          DEALLOCATE(MLPMEAN)
2145:          MLPDONE=.TRUE.2162:          MLPDONE=.TRUE.
2146:       ELSE IF (WORD.EQ.'MLPB3NEW') THEN2163:       ELSE IF (WORD.EQ.'MLPB3NEW') THEN
2147:          MLP3T=.TRUE.2164:          MLP3T=.TRUE.
 2165:          MLPB3T=.TRUE.
2148:          MLPB3NEWT=.TRUE.2166:          MLPB3NEWT=.TRUE.
2149:          CALL READI(MLPIN)      ! number of inputs (data items after outcome)2167:          CALL READI(MLPIN)      ! number of inputs (data items after outcome)
2150:          CALL READI(MLPSTART) ! starting position in data list, not counting outcome2168:          CALL READI(MLPSTART) ! starting position in data list, not counting outcome
2151:          CALL READI(MLPHIDDEN)2169:          CALL READI(MLPHIDDEN)
2152:          CALL READI(MLPOUT)2170:          CALL READI(MLPOUT)
2153:          CALL READI(MLPDATA)2171:          CALL READI(MLPDATA)
2154:          IF (NITEMS.GT.5) CALL READF(MLPLAMBDA)2172:          IF (NITEMS.GT.5) CALL READF(MLPLAMBDA)
2155:          WRITE(MYUNIT,'(A,5I8,G20.10)') 'MLP3 new potential bias nodes and Nin, Ninstart, Nhidden, Nout, Ndata, lambda=',2173:          WRITE(MYUNIT,'(A,5I8,G20.10)') 'MLP3 new potential bias nodes and Nin, Ninstart, Nhidden, Nout, Ndata, lambda=',
2156:      &                                MLPIN,MLPSTART,MLPHIDDEN,MLPOUT,MLPDATA,MLPLAMBDA  2174:      &                                MLPIN,MLPSTART,MLPHIDDEN,MLPOUT,MLPDATA,MLPLAMBDA  
2157:          NMLP=MLPHIDDEN*(MLPIN+MLPOUT)+12175:          NMLP=MLPHIDDEN*(MLPIN+MLPOUT)+1
2175:          IF (MLPNORM) THEN2193:          IF (MLPNORM) THEN
2176:             MLPMEAN(1:MLPIN)=MLPMEAN(1:MLPIN)/MLPDATA 2194:             MLPMEAN(1:MLPIN)=MLPMEAN(1:MLPIN)/MLPDATA 
2177:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'2195:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'
2178:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)2196:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)
2179:             DO J1=1,MLPIN2197:             DO J1=1,MLPIN
2180:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)2198:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)
2181:             ENDDO2199:             ENDDO
2182:          ENDIF2200:          ENDIF
2183:          DEALLOCATE(MLPMEAN)2201:          DEALLOCATE(MLPMEAN)
2184:          MLPDONE=.TRUE.2202:          MLPDONE=.TRUE.
 2203:       ELSE IF (WORD.EQ.'NOREGBIAS') THEN
 2204:          NOREGBIAS=.TRUE.
 2205:       ELSE IF (WORD.EQ.'MLPVB3') THEN
 2206:          MLPVB3T=.TRUE.
 2207:          CALL READI(MLPIN)      ! number of inputs (data items after outcome)
 2208:          CALL READI(MLPSTART) ! starting position in data list, not counting outcome
 2209:          CALL READI(MLPHIDDEN)
 2210:          CALL READI(MLPOUT)
 2211:          CALL READI(MLPDATA)
 2212:          IF (NITEMS.GT.5) CALL READF(MLPLAMBDA)
 2213:          WRITE(MYUNIT,'(A,5I8,G20.10)') ' keywords> MLP3 vector bias nodes and Nin, Ninstart, Nhidden, Nout, Ndata, lambda=',
 2214:      &                                MLPIN,MLPSTART,MLPHIDDEN,MLPOUT,MLPDATA,MLPLAMBDA
 2215:          NMLP=MLPHIDDEN*(MLPIN+MLPOUT)+MLPHIDDEN+MLPOUT
 2216:          IF (NMLP.NE.NATOMS) THEN
 2217:             WRITE(MYUNIT,'(A,2I8)') 'keywords> ERROR *** NATOMS,NMLP=',NATOMS,NMLP
 2218:             STOP
 2219:          ENDIF
 2220:          LUNIT=GETUNIT()
 2221:          OPEN(LUNIT,FILE='MLPdata',STATUS='OLD')
 2222:          ALLOCATE(MLPDAT(MLPDATA,MLPIN),MLPOUTCOME(MLPDATA),MLPMEAN(MLPIN))
 2223:          MLPMEAN(1:MLPIN)=0.0D0
 2224:          DO J1=1,MLPDATA
 2225:             READ(LUNIT,*) MLPOUTCOME(J1),(DUMMY,J2=1,MLPSTART-1),MLPDAT(J1,1:MLPIN)
 2226:             MLPOUTCOME(J1)=MLPOUTCOME(J1)+1 ! to shift the range from 0 to from 1
 2227:             DO J2=1,MLPIN
 2228:                MLPMEAN(J2)=MLPMEAN(J2)+ABS(MLPDAT(J1,J2))
 2229:             ENDDO
 2230:          ENDDO
 2231:          CLOSE(LUNIT)
 2232:          IF (MLPNORM) THEN
 2233:             MLPMEAN(1:MLPIN)=MLPMEAN(1:MLPIN)/MLPDATA
 2234:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'
 2235:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)
 2236:             DO J1=1,MLPIN
 2237:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)
 2238:             ENDDO
 2239:          ENDIF
 2240:          DEALLOCATE(MLPMEAN)
 2241:          MLPDONE=.TRUE.
2185:       ELSE IF (WORD.EQ.'MLPNEWREG') THEN2242:       ELSE IF (WORD.EQ.'MLPNEWREG') THEN
2186:          MLPNEWREG=.TRUE.2243:          MLPNEWREG=.TRUE.
2187:          WRITE(MYUNIT,'(A)') 'keyword> Including reciprocals in regularisation'2244:          WRITE(MYUNIT,'(A)') 'keyword> Including reciprocals in regularisation'
2188: !2245: !
2189: ! MLPNORM directs OPTIM to rescale the input data columns by dividing each one by the2246: ! MLPNORM directs OPTIM to rescale the input data columns by dividing each one by the
2190: ! average of the mean magnitude2247: ! average of the mean magnitude
2191: ! Arranged so that MLPNORM can come before of after MLPB3/MLP32248: ! Arranged so that MLPNORM can come before of after MLPB3/MLP3
2192: !2249: !
2193:       ELSE IF (WORD.EQ.'MLPNORM') THEN2250:       ELSE IF (WORD.EQ.'MLPNORM') THEN
2194:          MLPNORM=.TRUE.2251:          MLPNORM=.TRUE.
2218:          CALL READI(MLQIN)      ! number of inputs (data items after outcome)2275:          CALL READI(MLQIN)      ! number of inputs (data items after outcome)
2219:          CALL READI(MLQSTART) ! starting position in data list, not counting outcome2276:          CALL READI(MLQSTART) ! starting position in data list, not counting outcome
2220:          CALL READI(MLQOUT)2277:          CALL READI(MLQOUT)
2221:          CALL READI(MLQDATA)2278:          CALL READI(MLQDATA)
2222:          IF (NITEMS.GT.4) CALL READF(MLQLAMBDA)2279:          IF (NITEMS.GT.4) CALL READF(MLQLAMBDA)
2223:          WRITE(MYUNIT,'(A,4I8,G20.10)') ' keywords> MLQ Nin, Ninstart, Nout, Ndata, lambda=',2280:          WRITE(MYUNIT,'(A,4I8,G20.10)') ' keywords> MLQ Nin, Ninstart, Nout, Ndata, lambda=',
2224:      &                                MLQIN,MLQSTART,MLQOUT,MLQDATA,MLQLAMBDA2281:      &                                MLQIN,MLQSTART,MLQOUT,MLQDATA,MLQLAMBDA
2225:          NMLQ=MLQOUT*(1+(MLQIN*(MLQIN+3))/2)2282:          NMLQ=MLQOUT*(1+(MLQIN*(MLQIN+3))/2)
2226:          WRITE(MYUNIT,'(A,5I8,G20.10)') ' keywords> MLQ variables=',NMLQ2283:          WRITE(MYUNIT,'(A,5I8,G20.10)') ' keywords> MLQ variables=',NMLQ
2227:          IF (NMLQ.NE.NATOMS) THEN2284:          IF (NMLQ.NE.NATOMS) THEN
2228:             PRINT '(A,2I8)', 'keywords> ERROR *** NATOMS,NMLQ=',NATOMS,NMLQ2285:             WRITE(MYUNIT,'(A,2I8)') 'keywords> ERROR *** NATOMS,NMLQ=',NATOMS,NMLQ
2229:             STOP2286:             STOP
2230:          ENDIF2287:          ENDIF
2231: 2288: 
2232:          LUNIT=GETUNIT()2289:          LUNIT=GETUNIT()
2233:          OPEN(LUNIT,FILE='MLQdata',STATUS='OLD')2290:          OPEN(LUNIT,FILE='MLQdata',STATUS='OLD')
2234:          ALLOCATE(MLQDAT(MLQDATA,MLQIN),MLQOUTCOME(MLQDATA),MLQMEAN(MLQIN))2291:          ALLOCATE(MLQDAT(MLQDATA,MLQIN),MLQOUTCOME(MLQDATA),MLQMEAN(MLQIN))
2235:          MLQMEAN(1:MLQIN)=0.0D02292:          MLQMEAN(1:MLQIN)=0.0D0
2236:          DO J1=1,MLQDATA2293:          DO J1=1,MLQDATA
2237:             READ(LUNIT,*) MLQOUTCOME(J1),(DUMMY,J2=1,MLQSTART-1),MLQDAT(J1,1:MLQIN)2294:             READ(LUNIT,*) MLQOUTCOME(J1),(DUMMY,J2=1,MLQSTART-1),MLQDAT(J1,1:MLQIN)
2238:             MLQOUTCOME(J1)=MLQOUTCOME(J1)+1 ! to shift the range from 0 to from 12295:             MLQOUTCOME(J1)=MLQOUTCOME(J1)+1 ! to shift the range from 0 to from 1
3525:       ELSE IF (WORD.EQ.'FORCERIGID') THEN3582:       ELSE IF (WORD.EQ.'FORCERIGID') THEN
3526:          RIGID=.TRUE.3583:          RIGID=.TRUE.
3527: 3584: 
3528:       ELSE IF (WORD.EQ.'FRAUSI') THEN3585:       ELSE IF (WORD.EQ.'FRAUSI') THEN
3529:          FRAUSIT=.TRUE.3586:          FRAUSIT=.TRUE.
3530: !3587: !
3531: !  Frozen atoms.3588: !  Frozen atoms.
3532: !3589: !
3533:       ELSE IF (WORD.EQ.'FREEZE') THEN3590:       ELSE IF (WORD.EQ.'FREEZE') THEN
3534:          FREEZE=.TRUE.3591:          FREEZE=.TRUE.
3535:          DO J1=1,NITEMS-13592:          ! Two modes of input. First option: frozen atoms are specified on the keyword line
3536:             NFREEZE=NFREEZE+13593:          IF(NITEMS.GT.1) THEN
3537:             CALL READI(NDUMMY)3594:             DO J1=1,NITEMS-1
3538:             FROZEN(NDUMMY)=.TRUE.3595:                NFREEZE=NFREEZE+1
3539:          ENDDO3596:                CALL READI(NDUMMY)
 3597:                FROZEN(NDUMMY)=.TRUE.
 3598:             ENDDO
 3599:          ELSE
 3600:             ! 2nd input mode: frozen atoms are listed in a file called 'frozen'. The first line
 3601:             ! of the file contains the number of frozen atoms, subsequent lines contain atoms to freeze
 3602:             INQUIRE(FILE='frozen',EXIST=YESNO)
 3603:             IF (YESNO) THEN
 3604:                FUNIT=GETUNIT()
 3605:                OPEN(FUNIT,FILE='frozen',STATUS='OLD')
 3606:                READ(FUNIT,*) NFREEZE
 3607:                DO J1=1,NFREEZE
 3608:                   READ(FUNIT,*) NDUMMY
 3609:                   FROZEN(NDUMMY)=.TRUE.
 3610:                ENDDO
 3611:             ELSE
 3612:                WRITE (*,'(A)') ' ERROR: FREEZE specified incorrectly'
 3613:                WRITE(*,*) "Specify frozen atoms either on the keyword line, or in a file called 'frozen'"
 3614:                STOP
 3615:             ENDIF
 3616:          ENDIF
 3617: 
3540:       ELSE IF (WORD.EQ.'FREEZENODES') THEN3618:       ELSE IF (WORD.EQ.'FREEZENODES') THEN
3541:          FREEZENODEST=.TRUE.3619:          FREEZENODEST=.TRUE.
3542:          CALL READF(FREEZETOL)3620:          CALL READF(FREEZETOL)
3543: 3621: 
3544: !3622: !
3545: ! sf344> unfreeze everything at the final quenches3623: ! sf344> unfreeze everything at the final quenches
3546: !3624: !
3547:       ELSE IF (WORD.EQ.'UNFREEZEFINALQ') THEN3625:       ELSE IF (WORD.EQ.'UNFREEZEFINALQ') THEN
3548:         UNFREEZEFINALQ=.TRUE.3626:         UNFREEZEFINALQ=.TRUE.
3549: !3627: !
4872: !  Specify 1D XY PBC potential4950: !  Specify 1D XY PBC potential
4873: !4951: !
4874:       ELSE IF (WORD.EQ.'ONEDPBC') THEN4952:       ELSE IF (WORD.EQ.'ONEDPBC') THEN
4875:          ONEDPBCT=.TRUE.4953:          ONEDPBCT=.TRUE.
4876:          IF (NITEMS.GT.1) CALL READI(NONEDAPBC)4954:          IF (NITEMS.GT.1) CALL READI(NONEDAPBC)
4877:          IF (MOD(NONEDAPBC,3).NE.0) THEN4955:          IF (MOD(NONEDAPBC,3).NE.0) THEN
4878:             WRITE(MYUNIT,'(A)') 'keywords> ERROR *** lattice dimension must be a multiple of three'4956:             WRITE(MYUNIT,'(A)') 'keywords> ERROR *** lattice dimension must be a multiple of three'
4879:             STOP4957:             STOP
4880:          ENDIF4958:          ENDIF
4881: 4959: 
 4960:       ELSE IF (WORD.EQ.'OPEP') THEN
 4961:          OPEPT=.TRUE.
 4962:          CALL READA(OPEP_DUMMY)
 4963:          IF (OPEP_DUMMY.EQ.'RNA') THEN
 4964:             OPEP_RNAT = .TRUE.
 4965:             WRITE(MYUNIT,'(A)') 'keyword> RNA simulation using OPEP'
 4966:          ELSE
 4967:             WRITE(MYUNIT,'(A)') 'keyword> Protein simulation using OPEP'
 4968:          ENDIF
 4969:          IF(.NOT.ALLOCATED(COORDS1)) ALLOCATE(COORDS1(3*NATOMS))
 4970:          IF(ALLOCATED(COORDS)) DEALLOCATE(COORDS)
 4971:          CALL OPEP_INIT(NATOMS, COORDS1(:),OPEP_RNAT)
 4972:          ALLOCATE(COORDS(3*NATOMS,NPAR))
 4973:          DO J1=1,NPAR
 4974:            COORDS(:,J1) = COORDS1(:)
 4975:          END DO
 4976: 
 4977: 
4882: ! hk2864978: ! hk286
4883:       ELSE IF (WORD.EQ.'OPTIMISEROTATION') THEN4979:       ELSE IF (WORD.EQ.'OPTIMISEROTATION') THEN
4884:          RIGIDOPTIMROTAT = .TRUE.4980:          RIGIDOPTIMROTAT = .TRUE.
4885:          CALL READF(OPTIMROTAVALUES(1))4981:          CALL READF(OPTIMROTAVALUES(1))
4886:          CALL READF(OPTIMROTAVALUES(2))4982:          CALL READF(OPTIMROTAVALUES(2))
4887:          CALL READF(OPTIMROTAVALUES(3))4983:          CALL READF(OPTIMROTAVALUES(3))
4888: 4984: 
4889: !4985: !
4890: ! NOT DOCUMENTED4986: ! NOT DOCUMENTED
4891: !4987: !
6079:          CHIROT = .TRUE.6175:          CHIROT = .TRUE.
6080:          RIGID = .TRUE.6176:          RIGID = .TRUE.
6081:          CALL READF(CHIRO_SIGMA)6177:          CALL READF(CHIRO_SIGMA)
6082:          CALL READF(CHIRO_MU)6178:          CALL READF(CHIRO_MU)
6083:          CALL READF(CHIRO_GAMMA)6179:          CALL READF(CHIRO_GAMMA)
6084:          IF (NITEMS > 3) THEN6180:          IF (NITEMS > 3) THEN
6085:              CALL READF(CHIRO_L)6181:              CALL READF(CHIRO_L)
6086:          ELSE6182:          ELSE
6087:              CHIRO_L = 0.D06183:              CHIRO_L = 0.D0
6088:          END IF6184:          END IF
6089:          IF (NITEMS > 4) THEN 
6090:              CALL READF(JAR_RADIUS) 
6091:          ELSE 
6092:              JAR_RADIUS = 0.D0 
6093:          END IF 
6094:          IF (NITEMS > 5) THEN 
6095:              CALL READF(K_R) 
6096:          ELSE 
6097:              K_R = 0.D0 
6098:          END IF 
6099:          CALL INITIALIZE_CHIRO(MYUNIT)6185:          CALL INITIALIZE_CHIRO(MYUNIT)
6100: 6186: 
6101:       ELSE IF (WORD.EQ.'DBP') THEN6187:       ELSE IF (WORD.EQ.'DBP') THEN
6102: 6188: 
6103:          DBPT   = .TRUE.6189:          DBPT   = .TRUE.
6104:          RIGID  = .TRUE.6190:          RIGID  = .TRUE.
6105:          CALL READF(DBEPSBB)6191:          CALL READF(DBEPSBB)
6106:          CALL READF(DBSIGBB)6192:          CALL READF(DBSIGBB)
6107:          CALL READF(DBPMU)6193:          CALL READF(DBPMU)
6108:          IF (NITEMS > 4) THEN6194:          IF (NITEMS > 4) THEN


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0