reading from extended mutliple sequence
[unres4.git] / source / unres / control.F90
index f45a88e..87a0793 100644 (file)
 !      enddo !iblock
 
 !      do i=1,maxres
-!      itype(i)=0
+!      itype(i,1)=0
 !      itel(i)=0
 !      enddo
 ! Initialize the bridge arrays
       else
         call int_bounds(ndih_constr,idihconstr_start,idihconstr_end)
       endif
+      if (ntheta_constr.eq.0) then
+        ithetaconstr_start=1
+        ithetaconstr_end=0
+      else
+        call int_bounds &
+       (ntheta_constr,ithetaconstr_start,ithetaconstr_end)
+      endif
+
 !      nsumgrad=(nres-nnt)*(nres-nnt+1)/2
 !      nlen=nres-nnt+1
       nsumgrad=(nres-nnt)*(nres-nnt+1)/2
       iphi1_end=nres
       idihconstr_start=1
       idihconstr_end=ndih_constr
+      ithetaconstr_start=1
+      ithetaconstr_end=ntheta_constr
       iphid_start=iphi_start
       iphid_end=iphi_end-1
       itau_start=4
       nside=0
       do i=2,nres-1
 #ifdef WHAM_RUN
-        if (itype(i).ne.10) then
+        if (itype(i,1).ne.10) then
 #else
-        if (itype(i).ne.10 .and. itype(i).ne.ntyp1) then
+        if (itype(i,1).ne.10 .and. itype(i,1).ne.ntyp1) then
 #endif
          nside=nside+1
           ialph(i,1)=nvar+nside
 !-----------------------------------------------------------------------------
 ! rescode.f
 !-----------------------------------------------------------------------------
-      integer function rescode(iseq,nam,itype)
+      integer function rescode(iseq,nam,itype,molecule)
 
       use io_base, only: ucase
 !      implicit real*8 (a-h,o-z)
 !      include 'COMMON.IOUNITS'
       character(len=3) :: nam  !,ucase
       integer :: iseq,itype,i
-
+      integer :: molecule
+      print *,molecule,nam
+      if (molecule.eq.1) then 
       if (itype.eq.0) then
 
-      do i=-ntyp1,ntyp1
-        if (ucase(nam).eq.restyp(i)) then
+      do i=-ntyp1_molec(molecule),ntyp1_molec(molecule)
+        if (ucase(nam).eq.restyp(i,molecule)) then
           rescode=i
           return
         endif
 
       else
 
-      do i=-ntyp1,ntyp1
+      do i=-ntyp1_molec(molecule),ntyp1_molec(molecule)
         if (nam(1:1).eq.onelet(i)) then
           rescode=i
           return  
       enddo
 
       endif
+      else if (molecule.eq.2) then
+      do i=1,ntyp1_molec(molecule)
+        if (nam(1:1).eq.restyp(i,molecule)) then
+          rescode=i
+          return
+        endif
+      enddo
+      else if (molecule.eq.3) then
+       write(iout,*) "SUGAR not yet implemented"
+       stop
+      else if (molecule.eq.4) then
+       write(iout,*) "Explicit LIPID not yet implemented"
+       stop
+      else if (molecule.eq.5) then
+      do i=1,ntyp1_molec(molecule)
+        print *,i,restyp(i,molecule)
+        if (ucase(nam).eq.restyp(i,molecule)) then
+          rescode=i
+          return
+        endif
+      enddo
+      else   
+       write(iout,*) "molecule not defined"
+      endif
       write (iout,10) iseq,nam
       stop
    10 format ('**** Error - residue',i4,' has an unresolved name ',a3)
       end function rescode
+      integer function sugarcode(sugar,ires)
+      character sugar
+      integer ires
+      if (sugar.eq.'D') then
+        sugarcode=1
+      else if (sugar.eq.' ') then
+        sugarcode=2
+      else
+        write (iout,*) 'UNKNOWN sugar type for residue',ires,' ',sugar
+        stop
+      endif
+      return
+      end function sugarcode
+
 !-----------------------------------------------------------------------------
 ! timing.F
 !-----------------------------------------------------------------------------