+++ /dev/null
- subroutine regularize(ncart,etot,rms,cref0,iretcode)
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.SBRIDGE'
- include 'COMMON.CHAIN'
- include 'COMMON.INTERACT'
- include 'COMMON.HEADER'
- include 'COMMON.IOUNITS'
- include 'COMMON.MINIM'
- double precision przes(3),obrot(3,3),fhpb0(maxdim),varia(maxvar)
- double precision cref0(3,ncart)
- double precision energia(0:n_ene)
- logical non_conv
- link_end0=link_end
- do i=1,nhpb
- fhpb0(i)=forcon(i)
- enddo
- maxit_reg=2
- print *,'Enter REGULARIZE: nnt=',nnt,' nct=',nct,' nsup=',nsup,
- & ' nstart_seq=',nstart_seq,' nstart_sup',nstart_sup
- write (iout,'(/a/)') 'Initial energies:'
- call geom_to_var(nvar,varia)
- call chainbuild
- call etotal(energia(0))
- etot=energia(0)
- call enerprint(energia(0))
- call fitsq(rms,c(1,nstart_seq),cref0(1,nstart_sup-1),
- & nsup,przes,obrot,non_conv)
- write (iout,'(a,f10.5)')
- & 'Enter REGULARIZE: Initial RMS deviation:',dsqrt(dabs(rms))
- write (*,'(a,f10.5)')
- & 'Enter REGULARIZE: Initial RMS deviation:',dsqrt(dabs(rms))
- maxit0=maxit
- maxfun0=maxfun
- rtolf0=rtolf
- maxit=100
- maxfun=200
- rtolf=1.0D-2
- do it=1,maxit_reg
- print *,'Regularization: pass:',it
-C Minimize with distance constraints, gradually relieving the weight.
- call minimize(etot,varia,iretcode,nfun)
- print *,'Etot=',Etot
- if (iretcode.eq.11) return
- call fitsq(rms,c(1,nstart_seq),cref0(1,nstart_sup-1),
- & nsup,przes,obrot,non_conv)
- rms=dsqrt(rms)
- write (iout,'(a,i2,a,f10.5,a,1pe14.5,a,i3/)')
- & 'Finish pass',it,', RMS deviation:',rms,', energy',etot,
- & ' SUMSL convergence',iretcode
- do i=nss+1,nhpb
- forcon(i)=0.1D0*forcon(i)
- enddo
- enddo
-C Turn off the distance constraints and re-minimize energy.
- print *,'Final minimization ... '
- maxit=maxit0
- maxfun=maxfun0
- rtolf=rtolf0
- link_end=min0(link_end,nss)
- call minimize(etot,varia,iretcode,nfun)
- print *,'Etot=',Etot
- call fitsq(rms,c(1,nstart_seq),cref0(1,nstart_sup-1),nsup,
- & przes,obrot,non_conv)
- rms=dsqrt(rms)
- write (iout,'(a,f10.5,a,1pe14.5,a,i3/)')
- & 'Final RMS deviation:',rms,' energy',etot,' SUMSL convergence',
- & iretcode
- link_end=link_end0
- do i=nss+1,nhpb
- forcon(i)=fhpb0(i)
- enddo
- call var_to_geom(nvar,varia)
- call chainbuild
- return
- end