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
509 write (iout,*) 'Processor:',MyID,
510 & ' loc_start',loc_start,' loc_end',loc_end,
511 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
512 & ' iphi_start',iphi_start,' iphi_end',iphi_end
513 write (*,*) 'Processor:',MyID,
514 & ' loc_start',loc_start,' loc_end',loc_end,
515 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
516 & ' iphi_start',iphi_start,' iphi_end',iphi_end
518 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
519 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
520 & nele_int_tot,' electrostatic and ',nscp_int_tot,
521 & ' SC-p interactions','were distributed among',fgprocs,
522 & ' fine-grain processors.'
534 c---------------------------------------------------------------------------
535 subroutine int_partition(int_index,lower_index,upper_index,atom,
536 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
537 implicit real*8 (a-h,o-z)
539 include 'COMMON.IOUNITS'
540 integer int_index,lower_index,upper_index,atom,at_start,at_end,
541 & first_atom,last_atom,int_gr,jat_start,jat_end
544 if (lprn) write (iout,*) 'int_index=',int_index
545 int_index_old=int_index
546 int_index=int_index+last_atom-first_atom+1
548 & write (iout,*) 'int_index=',int_index,
549 & ' int_index_old',int_index_old,
550 & ' lower_index=',lower_index,
551 & ' upper_index=',upper_index,
552 & ' atom=',atom,' first_atom=',first_atom,
553 & ' last_atom=',last_atom
554 if (int_index.ge.lower_index) then
556 if (at_start.eq.0) then
558 jat_start=first_atom-1+lower_index-int_index_old
562 if (lprn) write (iout,*) 'jat_start',jat_start
563 if (int_index.ge.upper_index) then
565 jat_end=first_atom-1+upper_index-int_index_old
570 if (lprn) write (iout,*) 'jat_end',jat_end
574 c------------------------------------------------------------------------------
575 subroutine hpb_partition
576 implicit real*8 (a-h,o-z)
578 include 'COMMON.SBRIDGE'
579 include 'COMMON.IOUNITS'
581 include 'COMMON.INFO'
582 call int_bounds(nhpb,link_start,link_end)
587 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
588 cd & ' nhpb',nhpb,' link_start=',link_start,
589 cd & ' link_end',link_end