1 subroutine regularize(ncart,etot,rms,cref0,iretcode)
2 implicit real*8 (a-h,o-z)
4 include 'COMMON.SBRIDGE'
6 include 'COMMON.INTERACT'
7 include 'COMMON.HEADER'
8 include 'COMMON.IOUNITS'
10 double precision przes(3),obrot(3,3),fhpb0(maxdim_cont),
12 double precision cref0(3,ncart)
13 double precision energia(0:n_ene)
20 print *,'Enter REGULARIZE: nnt=',nnt,' nct=',nct,' nsup=',nsup,
21 & ' nstart_seq=',nstart_seq,' nstart_sup',nstart_sup
22 write (iout,'(/a/)') 'Initial energies:'
23 call geom_to_var(nvar,varia)
25 call etotal(energia(0))
27 call enerprint(energia(0))
28 call fitsq(rms,c(1,nstart_seq),cref0(1,nstart_sup-1),
29 & nsup,przes,obrot,non_conv)
30 write (iout,'(a,f10.5)')
31 & 'Enter REGULARIZE: Initial RMS deviation:',dsqrt(dabs(rms))
33 & 'Enter REGULARIZE: Initial RMS deviation:',dsqrt(dabs(rms))
41 print *,'Regularization: pass:',it
42 C Minimize with distance constraints, gradually relieving the weight.
43 call minimize(etot,varia,iretcode,nfun)
45 if (iretcode.eq.11) return
46 call fitsq(rms,c(1,nstart_seq),cref0(1,nstart_sup-1),
47 & nsup,przes,obrot,non_conv)
49 write (iout,'(a,i2,a,f10.5,a,1pe14.5,a,i3/)')
50 & 'Finish pass',it,', RMS deviation:',rms,', energy',etot,
51 & ' SUMSL convergence',iretcode
53 forcon(i)=0.1D0*forcon(i)
56 C Turn off the distance constraints and re-minimize energy.
57 print *,'Final minimization ... '
61 link_end=min0(link_end,nss)
62 call minimize(etot,varia,iretcode,nfun)
64 call fitsq(rms,c(1,nstart_seq),cref0(1,nstart_sup-1),nsup,
65 & przes,obrot,non_conv)
67 write (iout,'(a,f10.5,a,1pe14.5,a,i3/)')
68 & 'Final RMS deviation:',rms,' energy',etot,' SUMSL convergence',
74 call var_to_geom(nvar,varia)