if (rstcount.eq.1000.or.itime.eq.n_timestep) then
open(irest2,file=rest2name,status='unknown')
write(irest2,*) totT,EK,potE,totE,t_bath
- do i=1,2*nres
+ do i=0,2*nres-1
write (irest2,'(3e15.5)') (d_t(j,i),j=1,3)
enddo
- do i=1,2*nres
+ do i=0,2*nres-1
write (irest2,'(3e15.5)') (dc(j,i),j=1,3)
enddo
close(irest2)
integer iran_num
double precision etot
logical fail
+ integer i_start_models(0:nodes-1)
write (iout,*) "init_MD INDPDB",indpdb
d_time0=d_time
c write(iout,*) "d_time", d_time
if (me.eq.king)
& inquire(file=mremd_rst_name,exist=file_exist)
#ifdef MPI
- write (*,*) me," Before broadcast: file_exist",file_exist
+c write (*,*) me," Before broadcast: file_exist",file_exist
call MPI_Bcast(file_exist,1,MPI_LOGICAL,king,CG_COMM,
& IERR)
- write (*,*) me," After broadcast: file_exist",file_exist
+c write (*,*) me," After broadcast: file_exist",file_exist
c inquire(file=mremd_rst_name,exist=file_exist)
#endif
if(me.eq.king.or..not.out1file)
call flush(iout)
endif
endif
- write (iout,*) "init_MD before initial structure REST ",rest
+c write (iout,*) "init_MD before initial structure REST ",rest
+ if(start_from_model .and. (me.eq.king .or. .not. out1file))
+ & write(iout,*) 'START_FROM_MODELS is ON'
+ if(start_from_model .and. rest) then
+ if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
+ write(iout,*)
+ & 'START_FROM_MODELS is OFF because the run is restarted'
+ write(iout,*) 'Remove restart keyword from input'
+ endif
+ endif
+c write (iout,*) "rest ",rest," start_from_model",start_from_model,
+c & " nmodel_start",nmodel_start," preminim",preminim
if (.not.rest) then
122 continue
if (iranconf.ne.0) then
else if (preminim) then
if (start_from_model) then
n_model_try=0
- do while (fail .and. n_model_try.lt.constr_homology)
+ fail=.true.
+ list_model_try=0
+ do while (fail .and. n_model_try.lt.nmodel_start)
+ write (iout,*) "n_model_try",n_model_try
do
- i_model=iran_num(1,constr_homology)
+ i_model=iran_num(1,nmodel_start)
do k=1,n_model_try
if (i_model.eq.list_model_try(k)) exit
enddo
enddo
n_model_try=n_model_try+1
list_model_try(n_model_try)=i_model
- write (iout,*) 'starting from model ',i_model
+ if (me.eq.king .or. .not. out1file)
+ & write (iout,*) 'Trying to start from model ',
+ & pdbfiles_chomo(i_model)(:ilen(pdbfiles_chomo(i_model)))
do i=1,2*nres
do j=1,3
c(j,i)=chomo(j,i,i_model)
call etotal(energia(0))
#endif
enddo
- if (n_model_try.gt.constr_homology) then
+ call MPI_Gather(i_model,1,MPI_INTEGER,i_start_models(0),
+ & 1,MPI_INTEGER,king,CG_COMM,IERROR)
+ if (n_model_try.gt.nmodel_start .and.
+ & (me.eq.king .or. out1file)) then
write (iout,*)
& "All models have irreparable overlaps. Trying randoms starts."
iranconf=1
+ i_model=nmodel_start+1
goto 122
endif
else
#endif
endif
endif
+ if (nmodel_start.gt.0 .and. me.eq.king) then
+ write (iout,'(a)') "Task Starting model"
+ do i=0,nodes-1
+ if (i_start_models(i).gt.nmodel_start) then
+ write (iout,'(i4,2x,a)') i,"RANDOM STRUCTURE"
+ else
+ write(iout,'(i4,2x,a)')i,pdbfiles_chomo(i_start_models(i))
+ & (:ilen(pdbfiles_chomo(i_start_models(i))))
+ endif
+ enddo
+ endif
endif ! .not. rest
call chainbuild_cart
call kinetic(EK)
call verlet_bath
endif
kinetic_T=2.0d0/(dimen3*Rb)*EK
+ write (iout,*) "Initial kinetic energy",EK," kinetic T",kinetic_T
if(me.eq.king.or..not.out1file)then
call cartprint
call intout