2 !-----------------------------------------------------------------------------
5 !-----------------------------------------------------------------------------
8 !-----------------------------------------------------------------------------
10 !-----------------------------------------------------------------------------
12 !-----------------------------------------------------------------------------
13 subroutine init_int_table
14 ! implicit real*8 (a-h,o-z)
15 ! include 'DIMENSIONS'
16 ! include 'DIMENSIONS.ZSCOPT'
22 ! include 'COMMON.INFO'
24 ! include 'COMMON.CHAIN'
25 ! include 'COMMON.INTERACT'
26 ! include 'COMMON.LOCAL'
27 ! include 'COMMON.SBRIDGE'
28 ! include 'COMMON.IOUNITS'
29 logical :: scheck,lprint
31 integer :: my_sc_int(0:nfgtasks-1),my_ele_int(0:nfgtasks-1)
32 integer :: my_sc_intt(0:nfgtasks),my_ele_intt(0:nfgtasks)
34 !... Determine the numbers of start and end SC-SC interaction
35 !... to deal with by current processor.
38 write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
39 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
40 MyRank=MyID-(MyGroup-1)*fgProcs
41 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
43 write (iout,*) 'Processor',MyID,' MyRank',MyRank,&
44 ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,&
45 ' my_sc_inde',my_sc_inde
51 ! do i=1,maxres !el ?????????
66 !d write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
67 !d & (ihpb(i),jhpb(i),i=1,nss)
71 if (ihpb(ii).eq.i+nres) then
78 !d write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
82 write (iout,*) 'jj=i+1'
83 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
84 iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
90 else if (jj.eq.nct) then
92 write (iout,*) 'jj=nct'
93 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
94 iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
102 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
103 iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
105 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
106 iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
117 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,&
118 iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
123 ind_scint=int_scint+nct-i
127 ind_scint_old=ind_scint
137 write (iout,*) 'Processor',MyID,' Group',MyGroup
138 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
142 write (iout,'(a)') 'Interaction array:'
144 write (iout,'(i3,2(2x,2i3))') &
145 i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
150 ! Now partition the electrostatic-interaction array
152 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
153 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
155 write (iout,*) 'Processor',MyID,' MyRank',MyRank,&
156 ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,&
157 ' my_ele_inde',my_ele_inde
164 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,&
165 iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
177 write (iout,'(a)') 'Electrostatic interaction array:'
179 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
184 ! Partition the SC-p interaction array
186 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
187 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
189 write (iout,*) 'Processor',MyID,' MyRank',MyRank,&
190 ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,&
191 ' my_scp_inde',my_scp_inde
197 if (i.lt.nnt+iscp) then
198 !d write (iout,*) 'i.le.nnt+iscp'
199 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,&
200 iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),&
202 else if (i.gt.nct-iscp) then
203 !d write (iout,*) 'i.gt.nct-iscp'
204 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,&
205 iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),&
208 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,&
209 iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),&
212 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,&
213 iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),&
222 if (i.lt.nnt+iscp) then
224 iscpstart(i,1)=i+iscp
226 elseif (i.gt.nct-iscp) then
234 iscpstart(i,2)=i+iscp
240 write (iout,'(a)') 'SC-p interaction array:'
241 do i=iatscp_s,iatscp_e
242 write (iout,'(i3,2(2x,2i3))') &
243 i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
246 ! Partition local interactions
248 call int_bounds(nres-2,loc_start,loc_end)
249 loc_start=loc_start+1
251 call int_bounds(nres-2,ithet_start,ithet_end)
252 ithet_start=ithet_start+2
253 ithet_end=ithet_end+2
254 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
255 iphi_start=iphi_start+nnt+2
256 iphi_end=iphi_end+nnt+2
257 call int_bounds(nres-3,itau_start,itau_end)
258 itau_start=itau_start+3
261 write (iout,*) 'Processor:',MyID,&
262 ' loc_start',loc_start,' loc_end',loc_end,&
263 ' ithet_start',ithet_start,' ithet_end',ithet_end,&
264 ' iphi_start',iphi_start,' iphi_end',iphi_end
265 write (*,*) 'Processor:',MyID,&
266 ' loc_start',loc_start,' loc_end',loc_end,&
267 ' ithet_start',ithet_start,' ithet_end',ithet_end,&
268 ' iphi_start',iphi_start,' iphi_end',iphi_end
270 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
271 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',&
272 nele_int_tot,' electrostatic and ',nscp_int_tot,&
273 ' SC-p interactions','were distributed among',fgprocs,&
274 ' fine-grain processors.'
287 end subroutine init_int_table
288 !-----------------------------------------------------------------------------
289 !-----------------------------------------------------------------------------
290 end module control_wham