corrrection in energies (no trash)
[unres4.git] / source / unres / io.f90
index ae6e636..ab5dc2a 100644 (file)
 !      integer :: rescode
 !      double precision x(maxvar)
       character(len=256) :: pdbfile
-      character(len=480) :: weightcard
+      character(len=800) :: weightcard
       character(len=80) :: weightcard_t!,ucase
 !      integer,dimension(:),allocatable :: itype_pdb   !(maxres)
 !      common /pizda/ itype_pdb
       call reada(weightcard,'WTURN6',wturn6,1.0D0)
       call reada(weightcard,'WSCCOR',wsccor,1.0D0)
       call reada(weightcard,'WSTRAIN',wstrain,1.0D0)
+      call reada(weightcard,'WVDWPP_NUCL',wvdwpp_nucl,0.0D0)
+      call reada(weightcard,'WELPP',welpp,0.0d0)
+      call reada(weightcard,'WVDWPSB',wvdwpsb,0.0d0)
+      call reada(weightcard,'WELPSB',welpsb,0.0D0)
+      call reada(weightcard,'WVDWSB',wvdwsb,0.0d0)
+      call reada(weightcard,'WELSB',welsb,0.0D0)
+      call reada(weightcard,'WBOND_NUCL',wbond_nucl,0.0D0)
+      call reada(weightcard,'WANG_NUCL',wang_nucl,0.0D0)
+      call reada(weightcard,'WSBLOC',wsbloc,0.0D0)
+      call reada(weightcard,'WTOR_NUCL',wtor_nucl,0.0D0)
+      call reada(weightcard,'WTORD_NUCL',wtor_d_nucl,0.0D0)
+      call reada(weightcard,'WCORR_NUCL',wcorr_nucl,0.0D0)
+      call reada(weightcard,'WCORR3_NUCL',wcorr3_nucl,0.0D0)
       call reada(weightcard,'WBOND',wbond,1.0D0)
       call reada(weightcard,'WTOR',wtor,1.0D0)
       call reada(weightcard,'WTORD',wtor_d,1.0D0)
       call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
       call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
       call reada(weightcard,'TEMP0',temp0,300.0d0)
+      call reada(weightcard,'WSCBASE',wscbase,0.0D0)
       if (index(weightcard,'SOFT').gt.0) ipot=6
+      call reada(weightcard,'WBOND_NUCL',wbond_nucl,0.0D0)
+      call reada(weightcard,'WCATCAT',wcatcat,0.0d0)
+      call reada(weightcard,'WCATPROT',wcatprot,0.0d0)
+      call reada(weightcard,'WPEPBASE',wpepbase,1.0d0)
+      call reada(weightcard,'WSCPHO',wscpho,0.0d0)
+      call reada(weightcard,'WPEPPHO',wpeppho,0.0d0)
+
 ! 12/1/95 Added weight for the multi-body term WCORR
       call reada(weightcard,'WCORRH',wcorr,1.0D0)
       if (wcorr4.gt.0.0d0) wcorr=wcorr4
         nnt=nstart_sup
         nct=nstart_sup+nsup-1
 !el        if(.not.allocated(icont_ref))
-        allocate(icont_ref(2,12*nres)) ! maxcont=12*maxres
+        allocate(icont_ref(2,(nres/2)*nres)) ! maxcont=12*maxres
         call contact(.false.,ncont_ref,icont_ref,co)
 
         if (sideadd) then 
       if (indpdb.eq.0) then
       nres_molec(:)=0
         allocate(sequence(maxres,5))
-
-     if (protein) then
+!      itype(:,:)=0
+      itmp=0
+      if (protein) then
 ! Read sequence if not taken from the pdb file.
         molec=1
         read (inp,*) nres_molec(molec)
-!        print *,'nres=',nres
+        print *,'nres=',nres
         if (iscode.gt.0) then
           read (inp,'(80a1)') (sequence(i,molec)(1:1),i=1,nres_molec(molec))
         else
           read (inp,'(20(1x,a3))') (sequence(i,molec),i=1,nres_molec(molec))
         endif
+!        read(inp,*) weightcard_t
+!        print *,"po seq" weightcard_t
 ! Convert sequence to numeric code
         
         do i=1,nres_molec(molec)
+          itmp=itmp+1
           itype(i,1)=rescode(i,sequence(i,molec),iscode,molec)
+          print *,itype(i,1)
+          
         enddo
        endif
+!        read(inp,*) weightcard_t
+!        print *,"po seq", weightcard_t
+
        if (nucleic) then
 ! Read sequence if not taken from the pdb file.
         molec=2
 ! Convert sequence to numeric code
 
         do i=1,nres_molec(molec)
-          istype(i)=sugarcode(sequence(i,molec)(1:1),i)
-          itype(i,1)=rescode(i,sequence(i,molec)(2:2),iscode,molec)
+          itmp=itmp+1
+          istype(itmp)=sugarcode(sequence(i,molec)(1:1),i)
+          itype(itmp,molec)=rescode(i,sequence(i,molec)(2:2),iscode,molec)
         enddo
        endif
 
 ! Convert sequence to numeric code
         print *,nres_molec(molec) 
         do i=1,nres_molec(molec)
-          itype(i,1)=rescode(i,sequence(i,molec),iscode,molec)
+          itmp=itmp+1
+          print *,itmp,"itmp"
+          itype(itmp,molec)=rescode(i,sequence(i,molec),iscode,molec)
         enddo
        endif
        nres=0
        enddo
        
 ! Assign initial virtual bond lengths
-!elwrite(iout,*) "test_alloc"
+        if(.not.allocated(molnum)) then
+         allocate(molnum(nres+1))
+         itmp=0
+        do i=1,5
+               do j=1,nres_molec(i)
+               itmp=itmp+1
+              molnum(itmp)=i
+               enddo
+         enddo
+!        print *,nres_molec(i)
+        endif
         if(.not.allocated(vbld)) allocate(vbld(2*nres))
-!elwrite(iout,*) "test_alloc"
         if(.not.allocated(vbld_inv)) allocate(vbld_inv(2*nres))
-!elwrite(iout,*) "test_alloc"
         do i=2,nres
           vbld(i)=vbl
           vbld_inv(i)=vblinv
         enddo
         do i=2,nres-1
-          vbld(i+nres)=dsc(iabs(itype(i,1)))
-          vbld_inv(i+nres)=dsc_inv(iabs(itype(i,1)))
+          print *, "molnum",molnum(i),itype(i,molnum(i)) 
+          vbld(i+nres)=dsc(iabs(itype(i,molnum(i))))
+          vbld_inv(i+nres)=dsc_inv(iabs(itype(i,molnum(i))))
 !          write (iout,*) "i",i," itype",itype(i,1),
 !     &      " dsc",dsc(itype(i,1))," vbld",vbld(i),vbld(i+nres)
         enddo
       enddo
       if(me.eq.king.or..not.out1file)then
        write (iout,*) "ITEL"
+       print *,nres,"nres"
        do i=1,nres-1
          write (iout,*) i,itype(i,1),itel(i)
        enddo
       endif
       call read_bridge
 !--------------------------------
+       print *,"tu dochodze"
 ! znamy nres oraz nss można zaalokowac potrzebne tablice
       call alloc_geo_arrays
       call alloc_ener_arrays
       endif
 #endif
       nct=nres
-!d      print *,'NNT=',NNT,' NCT=',NCT
-      if (itype(1,1).eq.ntyp1) nnt=2
-      if (itype(nres,1).eq.ntyp1) nct=nct-1
+      print *,'NNT=',NNT,' NCT=',NCT
+      if (itype(1,molnum(1)).eq.ntyp1_molec(molnum(1))) nnt=2
+      if (itype(nres,molnum(nres)).eq.ntyp1_molec(molnum(nres))) nct=nct-1
       if (pdbref) then
         if(me.eq.king.or..not.out1file) &
          write (iout,'(a,i3)') 'nsup=',nsup
              ((c(l,k+nres),l=1,3),k=nnt,nct)
             write (iout,*) "Exit READ_CART"
             write (iout,'(8f10.5)') &
-             ((c(l,k),l=1,3),k=1,nres),&
+             ((c(l,k),l=1,3),k=1,nres)
+            write (iout,'(8f10.5)') &
              ((c(l,k+nres),l=1,3),k=nnt,nct)
             call int_from_cart1(.true.)
             write (iout,*) "Finish INT_TO_CART"
          do i=2,nres-1
           alph(i)=110d0*deg2rad
          enddo
-!elwrite (iout,*)"alph(i)*deg2rad",(alph(i), i=1,nres)
          do i=2,nres-1
           omeg(i)=-120d0*deg2rad
           if (itype(i,1).le.0) omeg(i)=-omeg(i)
         call read_threadbase
       endif
       call setup_var
-!elwrite (iout,*)"alph(i)*deg2rad",(alph(i), i=1,nres)
       if (me.eq.king .or. .not. out1file) &
        call intout
-!elwrite (iout,*)"alph(i)*rad2deg",(alph(i)*rad2deg, i=1,nres)
       if (ns.gt.0 .and. (me.eq.king .or. .not.out1file) ) then
         write (iout,'(/a,i3,a)') &
         'The chain contains',ns,' disulfide-bridging cysteines.'