3 C Define constants and zero out tables.
5 implicit real*8 (a-h,o-z)
11 include 'COMMON.IOUNITS'
12 include 'COMMON.CHAIN'
13 include 'COMMON.INTERACT'
15 include 'COMMON.LOCAL'
16 include 'COMMON.TORSION'
17 include 'COMMON.FFIELD'
18 include 'COMMON.SBRIDGE'
19 include 'COMMON.MINIM'
20 include 'COMMON.DERIV'
21 include "COMMON.NAMES"
22 include "COMMON.TIME1"
24 C The following is just to define auxiliary variables used in angle conversion
62 C Set default weights of the energy terms.
106 athet(j,i,ichir1,ichir2)=0.0D0
107 bthet(j,i,ichir1,ichir2)=0.0D0
127 gaussc(l,k,j,i)=0.0D0
140 v1(k,j,i,iblock)=0.0D0
141 v2(k,j,i,iblock)=0.0D0
151 v1c(1,l,i,j,k,iblock)=0.0D0
152 v1s(1,l,i,j,k,iblock)=0.0D0
153 v1c(2,l,i,j,k,iblock)=0.0D0
154 v1s(2,l,i,j,k,iblock)=0.0D0
158 v2c(m,l,i,j,k,iblock)=0.0D0
159 v2s(m,l,i,j,k,iblock)=0.0D0
170 C Initialize the bridge arrays
189 C Initialize variables used in minimization.
198 C Initialize the variables responsible for the mode of gradient storage.
204 if (print_order(i).eq.j) then
212 C Set timers and counters for the respective routines
231 nprint_ene=nprint_ene-1
235 c-------------------------------------------------------------------------
237 implicit real*8 (a-h,o-z)
239 include 'sizesclu.dat'
240 include 'COMMON.NAMES'
241 include 'COMMON.FFIELD'
243 &'DD','DPR','DLY','DAR','DHI','DAS','DGL','DSG','DGN','DSN','DTH',
244 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
245 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
246 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/
248 &'z','p','k','r','h','d','e','n','q','s','t','g',
249 &'a','y','w','v','l','i','f','m','c','x',
250 &'C','M','F','I','L','V','W','Y','A','G','T',
251 &'S','Q','N','E','D','H','R','K','P','X'/
252 data potname /'LJ','LJK','BP','GB','GBV'/
254 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
255 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
256 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
257 & "ESTR","ESCCOR","EVDW2_14","","EVDW_T"/
259 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
260 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
261 & "WHPB","WVDWPP","WBOND","WSCCOR","WSCP14","","WSC"/
263 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
266 c---------------------------------------------------------------------------
267 subroutine init_int_table
268 implicit real*8 (a-h,o-z)
270 include 'sizesclu.dat'
275 include 'COMMON.INFO'
277 include 'COMMON.CHAIN'
278 include 'COMMON.INTERACT'
279 include 'COMMON.LOCAL'
280 include 'COMMON.SBRIDGE'
281 include 'COMMON.IOUNITS'
282 logical scheck,lprint
284 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
285 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
286 C... Determine the numbers of start and end SC-SC interaction
287 C... to deal with by current processor.
290 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
291 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
292 MyRank=MyID-(MyGroup-1)*fgProcs
293 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
295 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
296 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
297 & ' my_sc_inde',my_sc_inde
317 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
318 cd & (ihpb(i),jhpb(i),i=1,nss)
322 if (ihpb(ii).eq.i+nres) then
329 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
333 write (iout,*) 'jj=i+1'
334 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
335 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
341 else if (jj.eq.nct) then
343 write (iout,*) 'jj=nct'
344 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
345 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
353 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
354 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
356 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
357 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
368 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
369 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
374 ind_scint=int_scint+nct-i
378 ind_scint_old=ind_scint
388 write (iout,*) 'Processor',MyID,' Group',MyGroup
389 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
393 write (iout,'(a)') 'Interaction array:'
395 write (iout,'(i3,2(2x,2i3))')
396 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
401 C Now partition the electrostatic-interaction array
403 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
404 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
406 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
407 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
408 & ' my_ele_inde',my_ele_inde
415 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
416 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
428 write (iout,'(a)') 'Electrostatic interaction array:'
430 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
435 C Partition the SC-p interaction array
437 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
438 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
440 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
441 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
442 & ' my_scp_inde',my_scp_inde
448 if (i.lt.nnt+iscp) then
449 cd write (iout,*) 'i.le.nnt+iscp'
450 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
451 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
453 else if (i.gt.nct-iscp) then
454 cd write (iout,*) 'i.gt.nct-iscp'
455 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
456 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
459 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
460 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
463 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
464 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
473 if (i.lt.nnt+iscp) then
475 iscpstart(i,1)=i+iscp
477 elseif (i.gt.nct-iscp) then
485 iscpstart(i,2)=i+iscp
491 write (iout,'(a)') 'SC-p interaction array:'
492 do i=iatscp_s,iatscp_e
493 write (iout,'(i3,2(2x,2i3))')
494 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
497 C Partition local interactions
499 call int_bounds(nres-2,loc_start,loc_end)
500 loc_start=loc_start+1
502 call int_bounds(nres-2,ithet_start,ithet_end)
503 ithet_start=ithet_start+2
504 ithet_end=ithet_end+2
505 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
506 iphi_start=iphi_start+nnt+2
507 iphi_end=iphi_end+nnt+2
508 call int_bounds(nres-3,itau_start,itau_end)
509 itau_start=itau_start+3
512 write (iout,*) 'Processor:',MyID,
513 & ' loc_start',loc_start,' loc_end',loc_end,
514 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
515 & ' iphi_start',iphi_start,' iphi_end',iphi_end
516 write (*,*) 'Processor:',MyID,
517 & ' loc_start',loc_start,' loc_end',loc_end,
518 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
519 & ' iphi_start',iphi_start,' iphi_end',iphi_end
521 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
522 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
523 & nele_int_tot,' electrostatic and ',nscp_int_tot,
524 & ' SC-p interactions','were distributed among',fgprocs,
525 & ' fine-grain processors.'
539 c---------------------------------------------------------------------------
540 subroutine int_partition(int_index,lower_index,upper_index,atom,
541 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
542 implicit real*8 (a-h,o-z)
544 include 'COMMON.IOUNITS'
545 integer int_index,lower_index,upper_index,atom,at_start,at_end,
546 & first_atom,last_atom,int_gr,jat_start,jat_end
549 if (lprn) write (iout,*) 'int_index=',int_index
550 int_index_old=int_index
551 int_index=int_index+last_atom-first_atom+1
553 & write (iout,*) 'int_index=',int_index,
554 & ' int_index_old',int_index_old,
555 & ' lower_index=',lower_index,
556 & ' upper_index=',upper_index,
557 & ' atom=',atom,' first_atom=',first_atom,
558 & ' last_atom=',last_atom
559 if (int_index.ge.lower_index) then
561 if (at_start.eq.0) then
563 jat_start=first_atom-1+lower_index-int_index_old
567 if (lprn) write (iout,*) 'jat_start',jat_start
568 if (int_index.ge.upper_index) then
570 jat_end=first_atom-1+upper_index-int_index_old
575 if (lprn) write (iout,*) 'jat_end',jat_end
579 c------------------------------------------------------------------------------
580 subroutine hpb_partition
581 implicit real*8 (a-h,o-z)
583 include 'COMMON.SBRIDGE'
584 include 'COMMON.IOUNITS'
586 include 'COMMON.INFO'
587 call int_bounds(nhpb,link_start,link_end)
592 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
593 cd & ' nhpb',nhpb,' link_start=',link_start,
594 cd & ' link_end',link_end