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
64 C Set default weights of the energy terms.
110 athet(j,i,ichir1,ichir2)=0.0D0
111 bthet(j,i,ichir1,ichir2)=0.0D0
131 gaussc(l,k,j,i)=0.0D0
144 v1(k,j,i,iblock)=0.0D0
145 v2(k,j,i,iblock)=0.0D0
155 v1c(1,l,i,j,k,iblock)=0.0D0
156 v1s(1,l,i,j,k,iblock)=0.0D0
157 v1c(2,l,i,j,k,iblock)=0.0D0
158 v1s(2,l,i,j,k,iblock)=0.0D0
162 v2c(m,l,i,j,k,iblock)=0.0D0
163 v2s(m,l,i,j,k,iblock)=0.0D0
174 C Initialize the bridge arrays
193 C Initialize variables used in minimization.
202 C Initialize the variables responsible for the mode of gradient storage.
208 if (print_order(i).eq.j) then
216 C Set timers and counters for the respective routines
235 nprint_ene=nprint_ene-1
239 c-------------------------------------------------------------------------
241 implicit real*8 (a-h,o-z)
243 include 'sizesclu.dat'
244 include 'COMMON.NAMES'
245 include 'COMMON.FFIELD'
247 &'DD','DAU','DAI','DDB','DSM','DPR','DLY','DAR','DHI','DAS','DGL',
248 & 'DSG','DGN','DSN','DTH',
249 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
250 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
251 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','SME','DBZ',
254 &'z','z','z','z','z','p','k','r','h','d','e','n','q','s','t','g',
255 &'a','y','w','v','l','i','f','m','c','x',
256 &'C','M','F','I','L','V','W','Y','A','G','T',
257 &'S','Q','N','E','D','H','R','K','P','z','z','z','z','X'/
258 data potname /'LJ','LJK','BP','GB','GBV'/
260 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
261 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
262 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
263 & "EVDW2_14","ESTR","ESCCOR","EDIHC","EVDW_T","ELIPTRAN",
264 & "EAFM","ETHETC","EMPTY","ETUBE"/
266 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
267 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
268 & "WHPB","WVDWPP","WSCP14","WBOND","WSCCOR","WDIHC","WSC",
269 & "WLIPTRAN","WAFM","WTHETC","WSHIELD","WTUBE"/
271 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
272 & 16,15,17,20,21,24,22,23/
274 c---------------------------------------------------------------------------
275 subroutine init_int_table
276 implicit real*8 (a-h,o-z)
278 include 'sizesclu.dat'
283 include 'COMMON.INFO'
285 include 'COMMON.CHAIN'
286 include 'COMMON.INTERACT'
287 include 'COMMON.LOCAL'
288 include 'COMMON.SBRIDGE'
289 include 'COMMON.IOUNITS'
290 logical scheck,lprint
292 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
293 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
294 C... Determine the numbers of start and end SC-SC interaction
295 C... to deal with by current processor.
298 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
299 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
300 MyRank=MyID-(MyGroup-1)*fgProcs
301 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
303 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
304 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
305 & ' my_sc_inde',my_sc_inde
325 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
326 cd & (ihpb(i),jhpb(i),i=1,nss)
331 if (ihpb(ii).eq.i+nres) then
338 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
342 write (iout,*) 'jj=i+1'
343 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
344 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
350 else if (jj.eq.nct) then
352 write (iout,*) 'jj=nct'
353 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
354 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
362 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
363 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
365 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
366 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
377 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
378 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
383 ind_scint=ind_scint+nct-i
387 ind_scint_old=ind_scint
397 write (iout,*) 'Processor',MyID,' Group',MyGroup
398 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
402 write (iout,'(a)') 'Interaction array:'
404 write (iout,'(i3,2(2x,2i3))')
405 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
410 C Now partition the electrostatic-interaction array
412 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
413 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
415 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
416 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
417 & ' my_ele_inde',my_ele_inde
424 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
425 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
437 write (iout,'(a)') 'Electrostatic interaction array:'
439 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
444 C Partition the SC-p interaction array
446 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
447 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
449 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
450 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
451 & ' my_scp_inde',my_scp_inde
457 if (i.lt.nnt+iscp) then
458 cd write (iout,*) 'i.le.nnt+iscp'
459 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
460 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
462 else if (i.gt.nct-iscp) then
463 cd write (iout,*) 'i.gt.nct-iscp'
464 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
465 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
468 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
469 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
472 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
473 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
482 if (i.lt.nnt+iscp) then
484 iscpstart(i,1)=i+iscp
486 elseif (i.gt.nct-iscp) then
494 iscpstart(i,2)=i+iscp
500 write (iout,'(a)') 'SC-p interaction array:'
501 do i=iatscp_s,iatscp_e
502 write (iout,'(i3,2(2x,2i3))')
503 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
506 C Partition local interactions
508 call int_bounds(nres-2,loc_start,loc_end)
509 loc_start=loc_start+1
511 call int_bounds(nres-2,ithet_start,ithet_end)
512 ithet_start=ithet_start+2
513 ithet_end=ithet_end+2
514 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
515 iphi_start=iphi_start+nnt+2
516 iphi_end=iphi_end+nnt+2
517 call int_bounds(nres-3,itau_start,itau_end)
518 itau_start=itau_start+3
520 call int_bounds(nres-1,itube_start,itube_end)
521 itube_start=itube_start
524 write (iout,*) 'Processor:',MyID,
525 & ' loc_start',loc_start,' loc_end',loc_end,
526 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
527 & ' iphi_start',iphi_start,' iphi_end',iphi_end
528 write (*,*) 'Processor:',MyID,
529 & ' loc_start',loc_start,' loc_end',loc_end,
530 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
531 & ' iphi_start',iphi_start,' iphi_end',iphi_end
533 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
534 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
535 & nele_int_tot,' electrostatic and ',nscp_int_tot,
536 & ' SC-p interactions','were distributed among',fgprocs,
537 & ' fine-grain processors.'
554 c---------------------------------------------------------------------------
555 subroutine int_partition(int_index,lower_index,upper_index,atom,
556 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
557 implicit real*8 (a-h,o-z)
559 include 'COMMON.IOUNITS'
560 integer int_index,lower_index,upper_index,atom,at_start,at_end,
561 & first_atom,last_atom,int_gr,jat_start,jat_end
564 if (lprn) write (iout,*) 'int_index=',int_index
565 int_index_old=int_index
566 int_index=int_index+last_atom-first_atom+1
568 & write (iout,*) 'int_index=',int_index,
569 & ' int_index_old',int_index_old,
570 & ' lower_index=',lower_index,
571 & ' upper_index=',upper_index,
572 & ' atom=',atom,' first_atom=',first_atom,
573 & ' last_atom=',last_atom
574 if (int_index.ge.lower_index) then
576 if (at_start.eq.0) then
578 jat_start=first_atom-1+lower_index-int_index_old
582 if (lprn) write (iout,*) 'jat_start',jat_start
583 if (int_index.ge.upper_index) then
585 jat_end=first_atom-1+upper_index-int_index_old
590 if (lprn) write (iout,*) 'jat_end',jat_end
594 c------------------------------------------------------------------------------
595 subroutine hpb_partition
596 implicit real*8 (a-h,o-z)
598 include 'COMMON.SBRIDGE'
599 include 'COMMON.IOUNITS'
601 include 'COMMON.INFO'
602 call int_bounds(nhpb,link_start,link_end)
607 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
608 cd & ' nhpb',nhpb,' link_start=',link_start,
609 cd & ' link_end',link_end