X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2FMD.F90;h=de0c4ab00c3328f8f20b74407e4c77f414c8cff2;hb=127919826a8abf12faa553258fc8d47b97a69497;hp=a03ce09fa0e1c14eb9c7bf460914581ec49896c4;hpb=d078e021535389d9b5a48b81a90e151b8978c724;p=unres4.git diff --git a/source/unres/MD.F90 b/source/unres/MD.F90 index a03ce09..de0c4ab 100644 --- a/source/unres/MD.F90 +++ b/source/unres/MD.F90 @@ -1114,17 +1114,17 @@ integer :: count,rstcount !ilen, !el external ilen character(len=50) :: tytul - integer :: maxcount_scale = 20 + integer :: maxcount_scale = 30 !el common /gucio/ cm !el real(kind=8),dimension(6*nres) :: stochforcvec !(MAXRES6) maxres6=6*maxres !el common /stochcalc/ stochforcvec integer :: itime,icount_scale,itime_scal,i,j,ifac_time - logical :: scale + logical :: scalel real(kind=8) :: epdrift,tt0,fac_time ! if (.not.allocated(stochforcvec)) allocate(stochforcvec(6*nres)) !(MAXRES6) maxres6=6*maxres - scale=.true. + scalel=.true. icount_scale=0 if (lang.eq.1) then call sddir_precalc @@ -1141,8 +1141,9 @@ #endif endif itime_scal=0 - do while (scale) + do while (scalel) icount_scale=icount_scale+1 +! write(iout,*) "icount_scale",icount_scale,scalel if (icount_scale.gt.maxcount_scale) then write (iout,*) & "ERROR: too many attempts at scaling down the time step. ",& @@ -1204,7 +1205,8 @@ call etotal(potEcomp) ! AL 4/17/17: Reduce the steps if NaNs occurred. if (potEcomp(0).gt.0.99e18 .or. isnan(potEcomp(0)).gt.0) then - d_time=d_time/2 + d_time=d_time/10.0 +! write (iout,*) "Tu jest problem",potEcomp(0),d_time cycle endif ! end change @@ -1230,9 +1232,13 @@ call max_accel amax=amax/(itime_scal+1)**2 call predict_edrift(epdrift) +! write(iout,*) "amax=",amax,damax,epdrift,edriftmax,amax/(itime_scal+1) + scalel=.false. +! write (iout,*) "before enter if",scalel,icount_scale if (amax/(itime_scal+1).gt.damax .or. epdrift.gt.edriftmax) then +! write(iout,*) "I enter if" ! Maximum acceleration or maximum predicted energy drift exceeded, rescale the time step - scale=.true. + scalel=.true. ifac_time=dmax1(dlog(amax/damax),dlog(epdrift/edriftmax)) & /dlog(2.0d0)+1 itime_scal=itime_scal+ifac_time @@ -1348,7 +1354,6 @@ endif #endif endif - scale=.false. endif enddo ! Calculate the kinetic and the total energy and the kinetic temperature @@ -2555,6 +2560,7 @@ if(dccart)then print *, 'Calling MINIM_DC' call minim_dc(etot,iretcode,nfun) + call int_from_cart1(.false.) else call geom_to_var(nvar,varia) print *,'Calling MINIMIZE.'