X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2Fsrc_MD-M%2FMD_A-MTS.F;h=070476d62d0e50fbc6c5b682beceecd69c36c530;hb=3bbe70e61b849f1590734ab7792fa88d495916db;hp=deef97cce7e8826679a80788b821ab965b989ab3;hpb=3c5e1a8829ff84c0725642015445f4debd4ecc0a;p=unres.git diff --git a/source/unres/src_MD-M/MD_A-MTS.F b/source/unres/src_MD-M/MD_A-MTS.F index deef97c..070476d 100644 --- a/source/unres/src_MD-M/MD_A-MTS.F +++ b/source/unres/src_MD-M/MD_A-MTS.F @@ -1633,11 +1633,11 @@ c Removing the velocity of the center of mass enddo enddo endif - call chainbuild +c call chainbuild_cart write (iout,*) "PREMINIM ",preminim - if(iranconf.ne.0 .or. preminim) then + if(iranconf.eq.0 .and. preminim) then if (overlapsc) then - print *, 'Calling OVERLAP_SC' + write (iout,*) 'Calling OVERLAP_SC' call overlap_sc(fail) endif @@ -1664,6 +1664,81 @@ c Removing the velocity of the center of mass 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) @@ -1700,11 +1775,11 @@ c Removing the velocity of the center of mass & "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