hdiff output

r32058/sqnm.f90 2017-03-09 23:30:07.982670379 +0000 r32057/sqnm.f90 2017-03-09 23:30:08.202673013 +0000
 91:     double precision, parameter :: minalpha=1.0d-15 !used to prevent alpha from getting too small, which may cause underflow 91:     double precision, parameter :: minalpha=1.0d-15 !used to prevent alpha from getting too small, which may cause underflow
 92:     double precision, parameter :: initsteepstepsize=1.0d-3 !initial steepest descent stepsize 92:     double precision, parameter :: initsteepstepsize=1.0d-3 !initial steepest descent stepsize
 93:     double precision, parameter :: cutoffratio=1.0d-4 !cutoff ratio for small eigenvalues for finding significant subspace 93:     double precision, parameter :: cutoffratio=1.0d-4 !cutoff ratio for small eigenvalues for finding significant subspace
 94:     double precision, parameter :: anglecutoff=0.2d0 !cos(angle) cutoff for changing preconditioning with factor alpha  94:     double precision, parameter :: anglecutoff=0.2d0 !cos(angle) cutoff for changing preconditioning with factor alpha 
 95:     integer, parameter :: maxdescents=15 !maximum number of steepest descent steps allowed 95:     integer, parameter :: maxdescents=15 !maximum number of steepest descent steps allowed
 96:     integer, parameter :: maxeeval=100 !maximum number potential calls allowed in a line search 96:     integer, parameter :: maxeeval=100 !maximum number potential calls allowed in a line search
 97:     !**********local variables********** 97:     !**********local variables**********
 98:     integer :: i, j !counters 98:     integer :: i, j !counters
 99:     integer :: nhist=0; !current history length 99:     integer :: nhist=0; !current history length
100:     double precision :: grad(numcoords) !current gradient100:     double precision :: grad(numcoords) !current gradient
101:     double precision :: ediff !difference between new and old energy 
102:     double precision :: pregrad(numcoords) !preconditioned gradient in subspace G101:     double precision :: pregrad(numcoords) !preconditioned gradient in subspace G
103:     double precision :: gradhist(numcoords,nhistmax) !history of gradients102:     double precision :: gradhist(numcoords,nhistmax) !history of gradients
104:     double precision :: xhist(numcoords,nhistmax) !history of gradients103:     double precision :: xhist(numcoords,nhistmax) !history of gradients
105:     integer :: lwork !used for LAPACK function dsyev104:     integer :: lwork !used for LAPACK function dsyev
106:     integer :: ndim !number of dimensions of the significant subspace. 105:     integer :: ndim !number of dimensions of the significant subspace. 
107:     integer, save :: nbonds !number of bonds in the molecule (Used for biomolecules)106:     integer, save :: nbonds !number of bonds in the molecule (Used for biomolecules)
108:     integer :: eeval ! number of potential calls in the linesearch 107:     integer :: eeval ! number of potential calls in the linesearch 
109:     double precision :: maxlambda !the value of 1/(maximum eigenvalue of the overlap matrix)108:     double precision :: maxlambda !the value of 1/(maximum eigenvalue of the overlap matrix)
110:     double precision :: tempval !exactly what you think.109:     double precision :: tempval !exactly what you think.
111:     double precision :: gradperp(numcoords) !portion of gradient perpendicular to preconditioned gradient110:     double precision :: gradperp(numcoords) !portion of gradient perpendicular to preconditioned gradient
770:                 xcoords(:)=oldxcoords(:)769:                 xcoords(:)=oldxcoords(:)
771:             end if 770:             end if 
772:             nhist=0771:             nhist=0
773:             if (alpha>steepstepsize/1.0d1) alpha=max(alpha/1.5d0,minalpha)772:             if (alpha>steepstepsize/1.0d1) alpha=max(alpha/1.5d0,minalpha)
774: 773: 
775:             if (debug_run .and. SQNM_DEBUGLEVEL>=1) then 774:             if (debug_run .and. SQNM_DEBUGLEVEL>=1) then 
776:                 write(*,'(a,g12.5,a,f15.7,a,f12.6,a,f15.12,a,f15.7)') 'Step REJECTED. New angle:', angle, &775:                 write(*,'(a,g12.5,a,f15.7,a,f12.6,a,f15.12,a,f15.7)') 'Step REJECTED. New angle:', angle, &
777:                     ', rms of gradient: ', RMS, ', Energy: ', energy, ', alpha: ', alpha, ', newE: ', enew776:                     ', rms of gradient: ', RMS, ', Energy: ', energy, ', alpha: ', alpha, ', newE: ', enew
778:             end if777:             end if
779:         else accept_check778:         else accept_check
780:             ediff=enew-energy 
781:             if (debug_run .and. SQNM_DEBUGLEVEL>=1) then 779:             if (debug_run .and. SQNM_DEBUGLEVEL>=1) then 
782:                 write(*,'(a,g12.5,a,f15.7,a,f12.6,a,f15.12,a,f14.10)') 'Step ACCEPTED. New angle:', angle, &780:                 write(*,'(a,g12.5,a,f15.7,a,f12.6,a,f15.12,a,f14.10)') 'Step ACCEPTED. New angle:', angle, &
783:                     ', rms of gradient: ', RMS, ',New Energy: ', enew, ', alpha: ', alpha, ', E decrease: ', ediff781:                     ', rms of gradient: ', RMS, ',New Energy: ', enew, ', alpha: ', alpha, ', E decrease: ', enew-energy
784:             end if782:             end if
785:             acceptstep=.true. !step accepted!783:             acceptstep=.true. !step accepted!
786:             !adjust histories, and current coordinates, gradient, and energy.784:             !adjust histories, and current coordinates, gradient, and energy.
787:             energy=enew785:             energy=enew
788:             !first cycle old coordinates by shifting columns. Note that if there is an xcoord that is 786:             !first cycle old coordinates by shifting columns. Note that if there is an xcoord that is 
789:             !nhistmax old, it is deleted. Same for gradients787:             !nhistmax old, it is deleted. Same for gradients
790:             do i=nhistmax-1,1,-1788:             do i=nhistmax-1,1,-1
791:                 xhist(:,i+1)=xhist(:,i)789:                 xhist(:,i+1)=xhist(:,i)
792:                 gradhist(:,i+1)=gradhist(:,i)790:                 gradhist(:,i+1)=gradhist(:,i)
793:             end do791:             end do
794:             !now insert last previous x-coord and grads:792:             !now insert last previous x-coord and grads:
795:             xhist(:,1)=xcoords(:)793:             xhist(:,1)=xcoords(:)
796:             gradhist(:,1)=grad(:)794:             gradhist(:,1)=grad(:)
797:             795:             
798:             grad(:)=newgrad(:)796:             grad(:)=newgrad(:)
799:             xcoords(:)=newxcoords(:)797:             xcoords(:)=newxcoords(:)
800:             !increment history length if allowed 798:             !increment history length if allowed 
801:             if (nhist<nhistmax) nhist=nhist+1799:             if (nhist<nhistmax) nhist=nhist+1
802: 800: 
803:             !algorithm seems to occasionally get stuck with small steps when nhist is high; this resets it801:             !algorithm seems to occasionally get stuck with small steps when nhist is high; this resets it
804:             if ((nhist==nhistmax .and. 1.0d3*ediff/RMS < maxrmsgrad) .or. maxrmsgrad<0.9d-4) nhist=nhist/2802:             if (nhist==nhistmax) nhist=0
805: 803: 
806:             !Adjust alpha804:             !Adjust alpha
807:             !alpha = alpha * alphascale805:             !alpha = alpha * alphascale
808:             if (angle>anglecutoff) then806:             if (angle>anglecutoff) then
809:                 alpha=alpha*alphascale807:                 alpha=alpha*alphascale
810:             else808:             else
811:                 alpha=max(alpha/alphascale, minalpha)809:                 alpha=max(alpha/alphascale, minalpha)
812:             end if810:             end if
813:         end if accept_check811:         end if accept_check
814:         !**********DONE CHECKING FOR STEP ACCEPTANCE**********812:         !**********DONE CHECKING FOR STEP ACCEPTANCE**********


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0