iweight=31
izsc=32
#endif
+ ibond_nucl=126
+ ithep_nucl=127
+ irotam_nucl=128
+ itorp_nucl= 129
+ itordp_nucl= 130
+! ielep_nucl= 131
+ isidep_nucl=132
+ iscpp_nucl=133
+
+
+
+ iliptranpar=60
+ itube=61
#if defined(WHAM_RUN) || defined(CLUSTER)
!
! setting the mpi variables for WHAM
! enddo !iblock
! do i=1,maxres
-! itype(i)=0
+! itype(i,1)=0
! itel(i)=0
! enddo
! Initialize the bridge arrays
logical :: scheck,lprint,flag
!el local variables
- integer :: ind_scint=0,ind_scint_old,ii,jj,i,j,iint
-
+ integer :: ind_scint=0,ind_scint_old,ii,jj,i,j,iint,itmp
+ integer :: ind_scint_nucl=0
#ifdef MPI
integer :: my_sc_int(0:nfgtasks-1),my_ele_int(0:nfgtasks-1)
integer :: my_sc_intt(0:nfgtasks),my_ele_intt(0:nfgtasks)
integer :: n_sc_int_tot,my_sc_inde,my_sc_inds,ind_sctint,npept
+ integer :: n_sc_int_tot_nucl,my_sc_inde_nucl,my_sc_inds_nucl, &
+ ind_sctint_nucl,npept_nucl
+
integer :: nele_int_tot,my_ele_inds,my_ele_inde,ind_eleint_old,&
ind_eleint,ijunk,nele_int_tot_vdw,my_ele_inds_vdw,&
my_ele_inde_vdw,ind_eleint_vdw,ind_eleint_vdw_old,&
ind_scpint_old,nsumgrad,nlen,ngrad_start,ngrad_end,&
ierror,k,ierr,iaux,ncheck_to,ncheck_from,ind_typ,&
ichunk,int_index_old
-
+ integer :: nele_int_tot_nucl,my_ele_inds_nucl,my_ele_inde_nucl,&
+ ind_eleint_old_nucl,ind_eleint_nucl,nele_int_tot_vdw_nucl,&
+ my_ele_inds_vdw_nucl,my_ele_inde_vdw_nucl,ind_eleint_vdw_nucl,&
+ ind_eleint_vdw_old_nucl,nscp_int_tot_nucl,my_scp_inds_nucl,&
+ my_scp_inde_nucl,ind_scpint_nucl,ind_scpint_old_nucl
+! integer,dimension(5) :: nct_molec,nnt_molec
!el allocate(itask_cont_from(0:nfgtasks-1)) !(0:max_fg_procs-1)
!el allocate(itask_cont_to(0:nfgtasks-1)) !(0:max_fg_procs-1)
itask_cont_to(i)=fg_rank
enddo
lprint=energy_dec
+ itmp=0
+ do i=1,5
+ if (nres_molec(i).eq.0) cycle
+ itmp=itmp+nres_molec(i)
+ if (itype(itmp,i).eq.ntyp1_molec(i)) then
+ nct_molec(i)=itmp-1
+ else
+ nct_molec(i)=itmp
+ endif
+ enddo
+! nct_molec(1)=nres_molec(1)-1
+ itmp=0
+ do i=2,5
+ itmp=itmp+nres_molec(i-1)
+ if (itype(itmp+1,i).eq.ntyp1_molec(i)) then
+ nnt_molec(i)=itmp+2
+ else
+ nnt_molec(i)=itmp+1
+ endif
+ enddo
+ print *,"nres_molec",nres_molec(:)
+ print *,"nnt_molec",nnt_molec(:)
+ print *,"nct_molec",nct_molec(:)
! lprint=.true.
if (lprint) &
write (iout,*)'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
- n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
+ n_sc_int_tot=(nct_molec(1)-nnt+1)*(nct_molec(1)-nnt)/2-nss
call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
!write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
if (lprint) &
allocate(itask_cont_to_all(0:nfgtasks-1,0:nfgtasks-1))
!el----------
! lprint=.false.
+ print *,"NCT",nct_molec(1),nct
do i=1,nres !el !maxres
nint_gr(i)=0
nscp_gr(i)=0
ind_scint_old=0
!d write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
!d & (ihpb(i),jhpb(i),i=1,nss)
- do i=nnt,nct-1
+! print *,nnt,nct_molec(1)
+ do i=nnt,nct_molec(1)-1
+! print*, "inloop",i
scheck=.false.
if (dyn_ss) goto 10
do ii=1,nss
endif
enddo
10 continue
+! print *,'i=',i,' scheck=',scheck,' jj=',jj
!d write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
if (scheck) then
if (jj.eq.i+1) then
#ifdef MPI
! write (iout,*) 'jj=i+1'
call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
- iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
+ iatsc_s,iatsc_e,i+2,nct_molec(1),nint_gr(i),istart(i,1),iend(i,1),*12)
#else
nint_gr(i)=1
istart(i,1)=i+2
iend(i,1)=nct
#endif
- else if (jj.eq.nct) then
+ else if (jj.eq.nct_molec(1)) then
#ifdef MPI
! write (iout,*) 'jj=nct'
call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
- iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
+ iatsc_s,iatsc_e,i+1,nct_molec(1)-1,nint_gr(i),istart(i,1),iend(i,1),*12)
#else
nint_gr(i)=1
istart(i,1)=i+1
- iend(i,1)=nct-1
+ iend(i,1)=nct_molecule(1)-1
#endif
else
#ifdef MPI
iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
ii=nint_gr(i)+1
call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
- iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
+ iatsc_s,iatsc_e,jj+1,nct_molec(1),nint_gr(i),istart(i,ii),iend(i,ii),*12)
+
#else
nint_gr(i)=2
istart(i,1)=i+1
iend(i,1)=jj-1
istart(i,2)=jj+1
- iend(i,2)=nct
+ iend(i,2)=nct_molec(1)
#endif
endif
else
#ifdef MPI
+! print *,"i for EVDW",iatsc_s,iatsc_e,istart(i,1),iend(i,1),&
+! i+1,nct_molec(1),nint_gr(i),ind_scint,my_sc_inds,my_sc_inde,i
call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
- iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
+ iatsc_s,iatsc_e,i+1,nct_molec(1),nint_gr(i), &
+ istart(i,1),iend(i,1),*12)
+! print *,"i for EVDW",iatsc_s,iatsc_e,istart(i,1),iend(i,1)
#else
nint_gr(i)=1
istart(i,1)=i+1
- iend(i,1)=nct
- ind_scint=ind_scint+nct-i
+ iend(i,1)=nct_molec(1)
+ ind_scint=ind_scint+nct_molec(1)-i
#endif
endif
#ifdef MPI
#endif
enddo
12 continue
+! print *,"i for EVDW",iatsc_s,iatsc_e,istart(i,1),iend(i,1)
+
#ifndef MPI
iatsc_s=nnt
iatsc_e=nct-1
#endif
if (iatsc_s.eq.0) iatsc_s=1
+!----------------- scaling for nucleic acid GB
+ n_sc_int_tot_nucl=(nct_molec(2)-nnt_molec(2)+1)*(nct_molec(2)-nnt_molec(2))/2
+ call int_bounds(n_sc_int_tot_nucl,my_sc_inds_nucl,my_sc_inde_nucl)
+!write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
+ if (lprint) &
+ write (iout,*) 'Processor',fg_rank,' CG group',kolor,&
+ ' absolute rank',MyRank,&
+ ' n_sc_int_tot',n_sc_int_tot_nucl,' my_sc_inds=',my_sc_inds_nucl,&
+ ' my_sc_inde',my_sc_inde_nucl
+ ind_sctint_nucl=0
+ iatsc_s_nucl=0
+ iatsc_e_nucl=0
+ do i=1,nres !el !maxres
+ nint_gr_nucl(i)=0
+ nscp_gr_nucl(i)=0
+ ielstart_nucl(i)=0
+ ielend_nucl(i)=0
+ do j=1,maxint_gr
+ istart_nucl(i,j)=0
+ iend_nucl(i,j)=0
+ iscpstart_nucl(i,j)=0
+ iscpend_nucl(i,j)=0
+ enddo
+ enddo
+ do i=nnt_molec(2),nct_molec(2)-1
+! print*, "inloop2",i
+ call int_partition(ind_scint_nucl,my_sc_inds_nucl,my_sc_inde_nucl,i,&
+ iatsc_s_nucl,iatsc_e_nucl,i+1,nct_molec(2),nint_gr_nucl(i), &
+ istart_nucl(i,1),iend_nucl(i,1),*112)
+ print *,istart_nucl(i,1)
+ enddo
+ 112 continue
+ if (iatsc_s_nucl.eq.0) iatsc_s_nucl=1
+ print *,"tu mam",iatsc_s_nucl,iatsc_e_nucl
+
#ifdef MPI
if (lprint) write (*,*) 'Processor',fg_rank,' CG Group',kolor,&
' absolute rank',myrank,' iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
#endif
+! lprint=.true.
if (lprint) then
write (iout,'(a)') 'Interaction array:'
do i=iatsc_s,iatsc_e
i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
enddo
endif
+! lprint=.false.
+ write (iout,'(a)') 'Interaction array2:'
+ do i=iatsc_s_nucl,iatsc_e_nucl
+ write (iout,'(i3,2(2x,2i4))') &
+ i,(istart_nucl(i,iint),iend_nucl(i,iint),iint=1,nint_gr_nucl(i))
+ enddo
+
ispp=4 !?? wham ispp=2
#ifdef MPI
! Now partition the electrostatic-interaction array
- npept=nct-nnt
+ if (nres_molec(1).eq.0) then
+ npept=0
+ elseif (itype(nres_molec(1),1).eq.ntyp1_molec(1)) then
+ npept=nres_molec(1)-nnt-1
+ else
+ npept=nres_molec(1)-nnt
+ endif
nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
if (lprint) &
iatel_e=0
ind_eleint=0
ind_eleint_old=0
- do i=nnt,nct-3
+! if (itype(nres_molec(1),1).eq.ntyp1_molec(1)) then
+! nct_molec(1)=nres_molec(1)-1
+! else
+! nct_molec(1)=nres_molec(1)
+! endif
+! print *,"nct",nct,nct_molec(1),itype(nres_molec(1),1),ntyp_molec(1)
+ do i=nnt,nct_molec(1)-3
ijunk=0
call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,&
- iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
+ iatel_s,iatel_e,i+ispp,nct_molec(1)-1,ijunk,ielstart(i),ielend(i),*13)
enddo ! i
13 continue
if (iatel_s.eq.0) iatel_s=1
+!----------now nucleic acid
+! if (itype(nres_molec(2),2).eq.ntyp1_molec(2)) then
+ npept_nucl=nct_molec(2)-nnt_molec(2)
+! else
+! npept_nucl=nct_molec(2)-nnt_molec(2)
+! endif
+ nele_int_tot_nucl=(npept_nucl-ispp)*(npept_nucl-ispp+1)/2
+ call int_bounds(nele_int_tot_nucl,my_ele_inds_nucl,my_ele_inde_nucl)
+ if (lprint) &
+ write (*,*) 'Processor',fg_rank,' CG group',kolor,&
+ ' absolute rank',MyRank,&
+ ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,&
+ ' my_ele_inde',my_ele_inde
+ iatel_s_nucl=0
+ iatel_e_nucl=0
+ ind_eleint_nucl=0
+ ind_eleint_old_nucl=0
+! if (itype(nres_molec(1),1).eq.ntyp1_molec(1)) then
+! nct_molec(1)=nres_molec(1)-1
+! else
+! nct_molec(1)=nres_molec(1)
+! endif
+! print *,"nct",nct,nct_molec(1),itype(nres_molec(1),1),ntyp_molec(1)
+ do i=nnt_molec(2),nct_molec(2)-3
+ ijunk=0
+ call int_partition(ind_eleint_nucl,my_ele_inds_nucl,my_ele_inde_nucl,i,&
+ iatel_s_nucl,iatel_e_nucl,i+ispp,nct_molec(2)-1,&
+ ijunk,ielstart_nucl(i),ielend_nucl(i),*113)
+ enddo ! i
+ 113 continue
+ if (iatel_s_nucl.eq.0) iatel_s_nucl=1
+
nele_int_tot_vdw=(npept-2)*(npept-2+1)/2
! write (iout,*) "nele_int_tot_vdw",nele_int_tot_vdw
call int_bounds(nele_int_tot_vdw,my_ele_inds_vdw,my_ele_inde_vdw)
ind_eleint_vdw_old=0
iatel_s_vdw=0
iatel_e_vdw=0
- do i=nnt,nct-3
+ do i=nnt,nct_molec(1)-3
ijunk=0
call int_partition(ind_eleint_vdw,my_ele_inds_vdw,&
my_ele_inde_vdw,i,&
- iatel_s_vdw,iatel_e_vdw,i+2,nct-1,ijunk,ielstart_vdw(i),&
+ iatel_s_vdw,iatel_e_vdw,i+2,nct_molec(1)-1,ijunk,ielstart_vdw(i),&
ielend_vdw(i),*15)
! write (iout,*) i," ielstart_vdw",ielstart_vdw(i),
! & " ielend_vdw",ielend_vdw(i)
enddo ! i
if (iatel_s_vdw.eq.0) iatel_s_vdw=1
15 continue
+ if (iatel_s.eq.0) iatel_s=1
+ if (iatel_s_vdw.eq.0) iatel_s_vdw=1
+ nele_int_tot_vdw_nucl=(npept_nucl-2)*(npept_nucl-2+1)/2
+! write (iout,*) "nele_int_tot_vdw",nele_int_tot_vdw
+ call int_bounds(nele_int_tot_vdw_nucl,my_ele_inds_vdw_nucl,&
+ my_ele_inde_vdw_nucl)
+! write (iout,*) "my_ele_inds_vdw",my_ele_inds_vdw,
+! & " my_ele_inde_vdw",my_ele_inde_vdw
+ ind_eleint_vdw_nucl=0
+ ind_eleint_vdw_old_nucl=0
+ iatel_s_vdw_nucl=0
+ iatel_e_vdw_nucl=0
+ do i=nnt_molec(2),nct_molec(2)-3
+ ijunk=0
+ call int_partition(ind_eleint_vdw_nucl,my_ele_inds_vdw_nucl,&
+ my_ele_inde_vdw_nucl,i,&
+ iatel_s_vdw_nucl,iatel_e_vdw_nucl,i+2,nct_molec(2)-1,&
+ ijunk,ielstart_vdw_nucl(i),&
+ ielend_vdw(i),*115)
+! write (iout,*) i," ielstart_vdw",ielstart_vdw(i),
+! & " ielend_vdw",ielend_vdw(i)
+ enddo ! i
+ if (iatel_s_vdw.eq.0) iatel_s_vdw_nucl=1
+ 115 continue
+
#else
iatel_s=nnt
- iatel_e=nct-5 ! ?? wham iatel_e=nct-3
+ iatel_e=nct_molec(1)-5 ! ?? wham iatel_e=nct-3
do i=iatel_s,iatel_e
ielstart(i)=i+4 ! ?? wham +2
- ielend(i)=nct-1
+ ielend(i)=nct_molec(1)-1
enddo
iatel_s_vdw=nnt
- iatel_e_vdw=nct-3
+ iatel_e_vdw=nct_molec(1)-3
do i=iatel_s_vdw,iatel_e_vdw
ielstart_vdw(i)=i+2
- ielend_vdw(i)=nct-1
+ ielend_vdw(i)=nct_molec(1)-1
enddo
#endif
if (lprint) then
endif ! lprint
! iscp=3
iscp=2
+ iscp_nucl=2
! Partition the SC-p interaction array
#ifdef MPI
nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
iatscp_e=0
ind_scpint=0
ind_scpint_old=0
- do i=nnt,nct-1
+ do i=nnt,nct_molec(1)-1
if (i.lt.nnt+iscp) then
!d write (iout,*) 'i.le.nnt+iscp'
call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,&
- iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),&
+ iatscp_s,iatscp_e,i+iscp,nct_molec(1),nscp_gr(i),iscpstart(i,1),&
iscpend(i,1),*14)
else if (i.gt.nct-iscp) then
!d write (iout,*) 'i.gt.nct-iscp'
iscpend(i,1),*14)
ii=nscp_gr(i)+1
call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,&
- iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),&
+ iatscp_s,iatscp_e,i+iscp,nct_molec(1),nscp_gr(i),iscpstart(i,ii),&
iscpend(i,ii),*14)
endif
enddo ! i
14 continue
+ print *,"before inloop3",iatscp_s,iatscp_e,iscp_nucl
+ nscp_int_tot_nucl=(npept_nucl-iscp_nucl+1)*(npept_nucl-iscp_nucl+1)
+ call int_bounds(nscp_int_tot_nucl,my_scp_inds_nucl,my_scp_inde_nucl)
+ if (lprint) write (iout,*) 'Processor',fg_rank,' CG group',kolor,&
+ ' absolute rank',myrank,&
+ ' nscp_int_tot',nscp_int_tot_nucl,' my_scp_inds=',my_scp_inds_nucl,&
+ ' my_scp_inde',my_scp_inde_nucl
+ print *,"nscp_int_tot_nucl",nscp_int_tot_nucl,my_scp_inds_nucl,my_scp_inde_nucl
+ iatscp_s_nucl=0
+ iatscp_e_nucl=0
+ ind_scpint_nucl=0
+ ind_scpint_old_nucl=0
+ do i=nnt_molec(2),nct_molec(2)-1
+ print *,"inloop3",i,nnt_molec(2)+iscp,nct_molec(2)-iscp
+ if (i.lt.nnt_molec(2)+iscp) then
+!d write (iout,*) 'i.le.nnt+iscp'
+ call int_partition(ind_scpint_nucl,my_scp_inds_nucl,&
+ my_scp_inde_nucl,i,iatscp_s_nucl,iatscp_e_nucl,i+iscp,&
+ nct_molec(2),nscp_gr_nucl(i),iscpstart_nucl(i,1),&
+ iscpend_nucl(i,1),*114)
+ else if (i.gt.nct_molec(2)-iscp) then
+!d write (iout,*) 'i.gt.nct-iscp'
+ call int_partition(ind_scpint_nucl,my_scp_inds_nucl,&
+ my_scp_inde_nucl,i,&
+ iatscp_s_nucl,iatscp_e_nucl,nnt_molec(2),i-iscp,nscp_gr_nucl(i),&
+ iscpstart_nucl(i,1),&
+ iscpend_nucl(i,1),*114)
+ else
+ call int_partition(ind_scpint_nucl,my_scp_inds_nucl,&
+ my_scp_inde_nucl,i,iatscp_s_nucl,iatscp_e_nucl,nnt_molec(2),&
+ i-iscp,nscp_gr_nucl(i),iscpstart_nucl(i,1),&
+ iscpend_nucl(i,1),*114)
+ ii=nscp_gr_nucl(i)+1
+ call int_partition(ind_scpint_nucl,my_scp_inds_nucl,&
+ my_scp_inde_nucl,i,iatscp_s_nucl,iatscp_e_nucl,i+iscp,&
+ nct_molec(2),nscp_gr_nucl(i),iscpstart_nucl(i,ii),&
+ iscpend_nucl(i,ii),*114)
+ endif
+ enddo ! i
+ 114 continue
+ print *, "after inloop3",iatscp_s_nucl,iatscp_e_nucl
+ if (iatscp_s_nucl.eq.0) iatscp_s_nucl=1
#else
iatscp_s=nnt
- iatscp_e=nct-1
- do i=nnt,nct-1
+ iatscp_e=nct_molec(1)-1
+ do i=nnt,nct_molec(1)-1
if (i.lt.nnt+iscp) then
nscp_gr(i)=1
iscpstart(i,1)=i+iscp
- iscpend(i,1)=nct
+ iscpend(i,1)=nct_molec(1)
elseif (i.gt.nct-iscp) then
nscp_gr(i)=1
iscpstart(i,1)=nnt
iscpstart(i,1)=nnt
iscpend(i,1)=i-iscp
iscpstart(i,2)=i+iscp
- iscpend(i,2)=nct
+ iscpend(i,2)=nct_molec(1)
endif
enddo ! i
#endif
endif ! lprint
! Partition local interactions
#ifdef MPI
- call int_bounds(nres-2,loc_start,loc_end)
+ call int_bounds(nres_molec(1)-2,loc_start,loc_end)
loc_start=loc_start+1
loc_end=loc_end+1
- call int_bounds(nres-2,ithet_start,ithet_end)
+ call int_bounds(nres_molec(2)-2,loc_start_nucl,loc_end_nucl)
+ loc_start_nucl=loc_start_nucl+1+nres_molec(1)
+ loc_end_nucl=loc_end_nucl+1+nres_molec(1)
+ call int_bounds(nres_molec(1)-2,ithet_start,ithet_end)
ithet_start=ithet_start+2
ithet_end=ithet_end+2
- call int_bounds(nct-nnt-2,iturn3_start,iturn3_end)
+ call int_bounds(nres_molec(2)-2,ithet_nucl_start,ithet_nucl_end)
+ ithet_nucl_start=ithet_nucl_start+2+nres_molec(1)
+ ithet_nucl_end=ithet_nucl_end+2+nres_molec(1)
+ call int_bounds(nct_molec(1)-nnt-2,iturn3_start,iturn3_end)
iturn3_start=iturn3_start+nnt
iphi_start=iturn3_start+2
iturn3_end=iturn3_end+nnt
iphi_end=iturn3_end+2
iturn3_start=iturn3_start-1
iturn3_end=iturn3_end-1
- call int_bounds(nres-3,itau_start,itau_end)
+ call int_bounds(nct_molec(2)-nnt_molec(2)-2,iphi_nucl_start,iphi_nucl_end)
+ iphi_nucl_start=iphi_nucl_start+nnt_molec(2)+2
+ iphi_nucl_end=iphi_nucl_end+nnt_molec(2)+2
+ print *,"KURDE",iphi_nucl_start,iphi_nucl_end
+ call int_bounds(nres_molec(1)-3,itau_start,itau_end)
itau_start=itau_start+3
itau_end=itau_end+3
- call int_bounds(nres-3,iphi1_start,iphi1_end)
+ call int_bounds(nres_molec(1)-3,iphi1_start,iphi1_end)
iphi1_start=iphi1_start+3
iphi1_end=iphi1_end+3
- call int_bounds(nct-nnt-3,iturn4_start,iturn4_end)
+ call int_bounds(nct_molec(1)-nnt-3,iturn4_start,iturn4_end)
iturn4_start=iturn4_start+nnt
iphid_start=iturn4_start+2
iturn4_end=iturn4_end+nnt
iphid_end=iturn4_end+2
iturn4_start=iturn4_start-1
iturn4_end=iturn4_end-1
- call int_bounds(nres-2,ibond_start,ibond_end)
+! print *,"TUTUTU",nres_molec(1),nres
+ call int_bounds(nres_molec(1)-2,ibond_start,ibond_end)
ibond_start=ibond_start+1
ibond_end=ibond_end+1
- call int_bounds(nct-nnt,ibondp_start,ibondp_end)
+! print *,ibond_start,ibond_end
+ call int_bounds(nct_molec(1)-nnt,ibondp_start,ibondp_end)
ibondp_start=ibondp_start+nnt
ibondp_end=ibondp_end+nnt
- call int_bounds1(nres-1,ivec_start,ivec_end)
+ call int_bounds(nres_molec(2)-2,ibond_nucl_start,ibond_nucl_end)
+ ibond_nucl_start=ibond_nucl_start+nnt_molec(2)-1
+ ibond_nucl_end=ibond_nucl_end+nnt_molec(2)-1
+ print *,"NUCLibond",ibond_nucl_start,ibond_nucl_end
+ print *, "before devision",nnt_molec(2),nct_molec(2)-nnt_molec(2)
+ call int_bounds(nct_molec(2)-nnt_molec(2),ibondp_nucl_start,ibondp_nucl_end)
+ ibondp_nucl_start=ibondp_nucl_start+nnt_molec(2)
+ ibondp_nucl_end=ibondp_nucl_end+nnt_molec(2)
+ print *,"NUCLibond2",ibondp_nucl_start,ibondp_nucl_end
+
+
+ call int_bounds1(nres_molec(1)-1,ivec_start,ivec_end)
! print *,"Processor",myrank,fg_rank,fg_rank1,
! & " ivec_start",ivec_start," ivec_end",ivec_end
iset_start=loc_start+2
iset_end=loc_end+2
+ call int_bounds(nres_molec(1),ilip_start,ilip_end)
+ ilip_start=ilip_start
+ ilip_end=ilip_end
+ call int_bounds(nres_molec(1)-1,itube_start,itube_end)
+ itube_start=itube_start
+ itube_end=itube_end
if (ndih_constr.eq.0) then
idihconstr_start=1
idihconstr_end=0
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
write (*,*) 'Processor:',fg_rank,myrank,' igrad_start',&
igrad_start,' igrad_end',igrad_end,' ngrad_start',ngrad_start,&
' ngrad_end',ngrad_end
- do i=igrad_start,igrad_end
- write(*,*) 'Processor:',fg_rank,myrank,i,&
- jgrad_start(i),jgrad_end(i)
- enddo
+! do i=igrad_start,igrad_end
+! write(*,*) 'Processor:',fg_rank,myrank,i,&
+! jgrad_start(i),jgrad_end(i)
+! enddo
endif
if (nfgtasks.gt.1) then
call MPI_Allgather(ivec_start,1,MPI_INTEGER,ivec_displ(0),1,&
endif
#else
loc_start=2
- loc_end=nres-1
+ loc_end=nres_molec(1)-1
ithet_start=3
- ithet_end=nres
+ ithet_end=nres_molec(1)
+ ithet_nucl_start=3+nres_molec(1)
+ ithet_nucl_end=nres_molec(1)+nres_molec(2)
iturn3_start=nnt
- iturn3_end=nct-3
+ iturn3_end=nct_molec(1)-3
iturn4_start=nnt
- iturn4_end=nct-4
+ iturn4_end=nct_molec(1)-4
iphi_start=nnt+3
- iphi_end=nct
+ iphi_end=nct_molec(1)
iphi1_start=4
- iphi1_end=nres
+ iphi1_end=nres_molec(1)
+ iphi_nucl_start=4+nres_molec(1)
+ iphi_nucl_end=nres_molec(1)+nres_molec(2)
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
- itau_end=nres
+ itau_end=nres_molec(1)
ibond_start=2
- ibond_end=nres-1
+ ibond_end=nres_molec(1)-1
+ ibond_nucl_start=2+nres_molec(1)
+ ibond_nucl_end=nres_molec(2)-1
ibondp_start=nnt
- ibondp_end=nct-1
+ ibondp_end=nct_molec(1)-1
+ ibondp_nucl_start=nnt_molec(2)
+ ibondp_nucl_end=nct_molec(2)
ivec_start=1
- ivec_end=nres-1
+ ivec_end=nres_molec(1)-1
iset_start=3
- iset_end=nres+1
+ iset_end=nres_molec(1)+1
iint_start=2
- iint_end=nres-1
+ iint_end=nres_molec(1)-1
+ ilip_start=1
+ ilip_end=nres_molec(1)
+ itube_start=1
+ itube_end=nres_molec(1)
#endif
!el common /przechowalnia/
! deallocate(iturn3_start_all)
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)
+ print *,nam(1:1),restyp(i,molecule)(1:1)
+ if (nam(2:2).eq.restyp(i,molecule)(1:1)) 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)(1:2)
+ if (ucase(nam(1:2)).eq.restyp(i,molecule)(1:2)) 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
!-----------------------------------------------------------------------------