common /gucio/ cm
integer itime
logical ovrtim
+ integer nharp,iharp(4,maxres/3)
c
#ifdef MPI
if (ilen(tmpdir).gt.0)
t_enegrad=0.0d0
t_sdsetup=0.0d0
write (iout,'(20(1h=),a20,20(1h=))') "MD calculation started"
+ write (iout,'(/a)')
+ & "Cartesian coordinates of the initial structure"
+ write (iout,'(a,3(3x,a5),5x,3(3x,a5))')
+ & "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
+ do ires=1,nres
+ write (iout,'(a3,1x,i3,3f8.3,5x,3f8.3)')
+ & restyp(itype(ires)),ires,(c(j,ires),j=1,3),
+ & (c(j,ires+nres),j=1,3)
+ enddo
+ write (iout,'(/a)')
+ & "Initial dC vectors of the chain"
+ write (iout,'(a,3(3x,a5),5x,3(3x,a5))')
+ & "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
+ do ires=1,nres
+ write (iout,'(a3,1x,i3,3f8.3,5x,3f8.3)')
+ & restyp(itype(ires)),ires,(dc(j,ires),j=1,3),
+ & (dc(j,ires+nres),j=1,3)
+ enddo
+ write (iout,'(/a)')
+ & "Initial dC_norm vectors of the chain"
+ write (iout,'(a,3(3x,a5),5x,3(3x,a5))')
+ & "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
+ do ires=1,nres
+ write (iout,'(a3,1x,i3,3f8.3,5x,3f8.3)')
+ & restyp(itype(ires)),ires,(dc_norm(j,ires),j=1,3),
+ & (dc_norm(j,ires+nres),j=1,3)
+ enddo
#ifdef MPI
tt0=MPI_Wtime()
#else
include 'COMMON.NAMES'
include 'COMMON.REMD'
real*8 energia_long(0:n_ene),
- & energia_short(0:n_ene),vcm(3),incr(3)
+ & energia_short(0:n_ene),energia(0:n_ene),vcm(3),incr(3)
double precision cm(3),L(3),xv,sigv,lowb,highb
double precision varia(maxvar)
character*256 qstr
dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
enddo
enddo
+ call etotal(energia(0))
endif
- call chainbuild
+c call chainbuild_cart
+ write (iout,*) "Initial energies"
+ call enerprint(energia(0))
write (iout,*) "PREMINIM ",preminim
if(iranconf.ne.0 .or. preminim) then
if (overlapsc) then
- print *, 'Calling OVERLAP_SC'
+ write (iout,*) 'Calling OVERLAP_SC'
call overlap_sc(fail)
endif
call enerprint(potEcomp)
endif
endif
+ if(iranconf.ne.0) then
+c 8/22/17 AL Loop to produce a low-energy random conformation
+ DO iranmin=1,10
+ if (overlapsc) then
+ if(me.eq.king.or..not.out1file)
+ & write (iout,*) 'Calling OVERLAP_SC'
+ call overlap_sc(fail)
+ endif
+
+ if (searchsc) then
+ call sc_move(2,nres-1,10,1d10,nft_sc,etot)
+ print *,'SC_move',nft_sc,etot
+ if(me.eq.king.or..not.out1file)
+ & write(iout,*) 'SC_move',nft_sc,etot
+ endif
+
+ if(dccart)then
+ print *, 'Calling MINIM_DC'
+ call minim_dc(etot,iretcode,nfun)
+ else
+ call geom_to_var(nvar,varia)
+ print *,'Calling MINIMIZE.'
+ call minimize(etot,varia,iretcode,nfun)
+ call var_to_geom(nvar,varia)
+ endif
+ if(me.eq.king.or..not.out1file)
+ & write(iout,*) 'SUMSL return code is',iretcode,' eval ',nfun
+
+ if (isnan(etot) .or. etot.gt.1.0d4) then
+ write (iout,*) "Energy too large",etot,
+ & " trying another random conformation"
+ do itrial=1,100
+ itmp=1
+ call gen_rand_conf(itmp,*30)
+ goto 40
+ 30 write (iout,*) 'Failed to generate random conformation',
+ & ', itrial=',itrial
+ write (*,*) 'Processor:',me,
+ & ' Failed to generate random conformation',
+ & ' itrial=',itrial
+ call intout
+#ifdef AIX
+ call flush_(iout)
+#else
+ call flush(iout)
+#endif
+ enddo
+ write (iout,'(a,i3,a)') 'Processor:',me,
+ & ' error in generating random conformation.'
+ write (*,'(a,i3,a)') 'Processor:',me,
+ & ' error in generating random conformation.'
+ call flush(iout)
+#ifdef MPI
+ call MPI_Abort(mpi_comm_world,error_msg,ierrcode)
+#else
+ stop
+#endif
+ 40 continue
+ else
+ goto 44
+ endif
+ ENDDO
+
+ write (iout,'(a,i3,a)') 'Processor:',me,
+ & ' failed to generate a low-energy random conformation.'
+ write (*,'(a,i3,a)') 'Processor:',me,
+ & ' failed to generate a low-energy random conformation.'
+ call flush(iout)
+#ifdef MPI
+ call MPI_Abort(mpi_comm_world,error_msg,ierrcode)
+#else
+ stop
+#endif
+ 44 continue
+ endif
endif
call chainbuild_cart
call kinetic(EK)
& "Time step reduced to",d_time,
& " because of too large initial acceleration."
endif
-C if(me.eq.king.or..not.out1file)then
-C write(iout,*) "Potential energy and its components"
-C call enerprint(potEcomp)
+ if(me.eq.king.or..not.out1file)then
+ write(iout,*) "Potential energy and its components"
+ call enerprint(potEcomp)
c write(iout,*) (potEcomp(i),i=0,n_ene)
-C endif
+ endif
potE=potEcomp(0)-potEcomp(20)
totE=EK+potE
itime=0