+++ /dev/null
- module map_
-!-----------------------------------------------------------------------------
- use io_units
- use names
- use geometry_data
- use control_data
- use energy_data
- use map_data
- implicit none
-!-----------------------------------------------------------------------------
-!
-!
-!-----------------------------------------------------------------------------
- contains
-!-----------------------------------------------------------------------------
-! check_sc_map.f
-!-----------------------------------------------------------------------------
- subroutine check_sc_map
-! Subroutine is checking if the fitted function which describs sc_rot_pot
-! is correct, printing, alpha,beta, energy, data - for some known theta.
-! theta angle is read from the input file. Sc_rot_pot are printed
-! for the second residue in sequance.
- use geometry, only:chainbuild
- use energy, only:vec_and_deriv,esc
-! include 'DIMENSIONS'
-! include 'COMMON.VAR'
-! include 'COMMON.GEO'
-! include 'COMMON.INTERACT'
- real(kind=8) :: xx,yy,zz,al,om
- real(kind=8) :: escloc, escloc_min
- real(kind=8),dimension(50000) :: escloc_ene,alph_plot,beta_plot
- integer,dimension(5000) :: al_plot,be_plot
- integer :: iialph, iibet,it
-
-!el local variables
- integer :: i,j
-
- write (2,*) "Side-chain-rotamer potential energy map!!!!"
- escloc_min = 1000000.00
-! it=itype(2)
- i = 0
- do iialph=0,18
- do iibet=-18,18
- i = i + 1
- al = iialph*10.0d0*deg2rad
- om = iibet*10.0d0*deg2rad
- zz = dcos(al)
- xx = -dsin(al)*dcos(om)
- yy = -dsin(al)*dsin(om)
- alph(2)=dacos(xx)
- omeg(2)=-datan2(zz,yy)
- al_plot(i)=alph(2)*rad2deg
- be_plot(i)=omeg(2)*rad2deg
-! write(2,*) alph(2)*rad2deg, omeg(2)*rad2deg
- alph_plot(i) = al*rad2deg
- beta_plot(i) = om*rad2deg
- call chainbuild
- call vec_and_deriv
- call esc(escloc)
- escloc_ene(i) = escloc
- if (escloc_min.gt.escloc_ene(i)) escloc_min=escloc_ene(i)
- enddo
- enddo
-! write (2,*) "escloc_min = ", escloc_min
- print *,"i",i
- do j = 1,i
- write (2,'(3f10.3,2i9,f12.5)') alph_plot(j), &
- beta_plot(j),theta(3)*rad2deg, al_plot(j),be_plot(j),&
- escloc_ene(j) !- escloc_min
- enddo
- return
- end subroutine check_sc_map
-!-----------------------------------------------------------------------------
-! map.f
-!-----------------------------------------------------------------------------
- subroutine map
-
- use geometry, only:chainbuild,geom_to_var
- use energy
- use minimm, only:minimize
-! implicit real*8 (a-h,o-z)
-! include 'DIMENSIONS'
-! include 'COMMON.MAP'
-! include 'COMMON.VAR'
-! include 'COMMON.GEO'
-! include 'COMMON.DERIV'
-! include 'COMMON.IOUNITS'
-! include 'COMMON.NAMES'
-! include 'COMMON.CONTROL'
-! include 'COMMON.TORCNSTR'
- real(kind=8) :: energia(0:n_ene)
- character(len=5) :: angid(4)=reshape((/'PHI ','THETA','ALPHA',&
- 'OMEGA'/),shape(angid))
- real(kind=8) :: ang_list(10)
-!el real(kind=8),dimension(6*nres) :: g,x !(maxvar) (maxvar=6*maxres)
- real(kind=8),dimension(:),allocatable :: g,x !(maxvar) (maxvar=6*maxres)
- integer :: nn(10)
-!el local variables
- integer :: i,iii,ii,j,k,nmax,ntot,nf,iretcode,nfun
- real(kind=8) :: etot,gnorm!,fdum
- integer,dimension(1) :: uiparm
- real(kind=8),dimension(1) :: urparm
- allocate(x(6*nres),g(6*nres))
-
- write (iout,'(a,i3,a)')'Energy map constructed in the following ',&
- nmap,' groups of variables:'
- do i=1,nmap
- write (iout,'(2a,i3,a,i3)') angid(kang(i)),' of residues ',&
- res1(i),' to ',res2(i)
- enddo
- nmax=nstep(1)
- do i=2,nmap
- if (nmax.lt.nstep(i)) nmax=nstep(i)
- enddo
- ntot=nmax**nmap
- iii=0
- write (istat,'(1h#,a14,29a15)') (" ",k=1,nmap),&
- (ename(print_order(k)),k=1,nprint_ene),"ETOT","GNORM"
- do i=0,ntot-1
- ii=i
- do j=1,nmap
- nn(j)=mod(ii,nmax)+1
- ii=ii/nmax
- enddo
- do j=1,nmap
- if (nn(j).gt.nstep(j)) goto 10
- enddo
- iii=iii+1
-!d write (iout,*) i,iii,(nn(j),j=1,nmap)
- do j=1,nmap
- ang_list(j)=ang_from(j) &
- +(nn(j)-1)*(ang_to(j)-ang_from(j))/nstep(j)
- do k=res1(j),res2(j)
- goto (1,2,3,4), kang(j)
- 1 phi(k)=deg2rad*ang_list(j)
- if (minim) phi0(k-res1(j)+1)=deg2rad*ang_list(j)
- goto 5
- 2 theta(k)=deg2rad*ang_list(j)
- goto 5
- 3 alph(k)=deg2rad*ang_list(j)
- goto 5
- 4 omeg(k)=deg2rad*ang_list(j)
- 5 continue
- enddo ! k
- enddo ! j
- call chainbuild
- if (minim) then
- call geom_to_var(nvar,x)
- call minimize(etot,x,iretcode,nfun)
- print *,'SUMSL return code is',iretcode,' eval ',nfun
-! call intout
- else
- call zerograd
- call geom_to_var(nvar,x)
- endif
- call etotal(energia)
- etot = energia(0)
- nf=1
- nfl=3
- call gradient(nvar,x,nf,g,uiparm,urparm,fdum)
- gnorm=0.0d0
- do k=1,nvar
- gnorm=gnorm+g(k)**2
- enddo
- etot=energia(0)
-
- gnorm=dsqrt(gnorm)
-! write (iout,'(6(1pe15.5))') (ang_list(k),k=1,nmap),etot,gnorm
- write (istat,'(30e15.5)') (ang_list(k),k=1,nmap),&
- (energia(print_order(ii)),ii=1,nprint_ene),etot,gnorm
-! write (iout,*) 'POINT',I,' ANGLES:',(ang_list(k),k=1,nmap)
-! call intout
-! call enerprint(energia)
- 10 continue
- enddo ! i
-! deallocate(x,g)
- return
- end subroutine map
-!-----------------------------------------------------------------------------
- subroutine alloc_map_arrays
-
-! commom.map
-! common /mapp/
- allocate(kang(nmap),res1(nmap),res2(nmap),nstep(nmap)) !(maxvar)
- allocate(ang_from(nmap),ang_to(nmap)) !(maxvar)
-
- return
- end subroutine alloc_map_arrays
-!-----------------------------------------------------------------------------
-!-----------------------------------------------------------------------------
- end module map_