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','DAU','DAI','DDB','DSM','DPR','DLY','DAR','DHI','DAS','DGL',
244 & 'DSG','DGN','DSN','DTH',
245 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
246 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
247 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','SME','DBZ',
250 &'z','z','z','z','z','p','k','r','h','d','e','n','q','s','t','g',
251 &'a','y','w','v','l','i','f','m','c','x',
252 &'C','M','F','I','L','V','W','Y','A','G','T',
253 &'S','Q','N','E','D','H','R','K','P','z','z','z','z','X'/
254 data potname /'LJ','LJK','BP','GB','GBV'/
256 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
257 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
258 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
259 & "ESTR","ESCCOR","EVDW2_14","","EVDW_T"/
261 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
262 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
263 & "WHPB","WVDWPP","WBOND","WSCCOR","WSCP14","","WSC"/
265 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
268 c---------------------------------------------------------------------------
269 subroutine init_int_table
270 implicit real*8 (a-h,o-z)
272 include 'sizesclu.dat'
277 include 'COMMON.INFO'
279 include 'COMMON.CHAIN'
280 include 'COMMON.INTERACT'
281 include 'COMMON.LOCAL'
282 include 'COMMON.SBRIDGE'
283 include 'COMMON.IOUNITS'
284 logical scheck,lprint
286 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
287 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
288 C... Determine the numbers of start and end SC-SC interaction
289 C... to deal with by current processor.
292 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
293 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
294 MyRank=MyID-(MyGroup-1)*fgProcs
295 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
297 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
298 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
299 & ' my_sc_inde',my_sc_inde
319 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
320 cd & (ihpb(i),jhpb(i),i=1,nss)
325 if (ihpb(ii).eq.i+nres) then
332 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
336 write (iout,*) 'jj=i+1'
337 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
338 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
344 else if (jj.eq.nct) then
346 write (iout,*) 'jj=nct'
347 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
348 & iatsc_s,iatsc_e,i+1,nct-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,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
359 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
360 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
371 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
372 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
377 ind_scint=int_scint+nct-i
381 ind_scint_old=ind_scint
391 write (iout,*) 'Processor',MyID,' Group',MyGroup
392 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
396 write (iout,'(a)') 'Interaction array:'
398 write (iout,'(i3,2(2x,2i3))')
399 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
404 C Now partition the electrostatic-interaction array
406 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
407 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
409 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
410 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
411 & ' my_ele_inde',my_ele_inde
418 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
419 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
431 write (iout,'(a)') 'Electrostatic interaction array:'
433 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
438 C Partition the SC-p interaction array
440 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
441 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
443 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
444 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
445 & ' my_scp_inde',my_scp_inde
451 if (i.lt.nnt+iscp) then
452 cd write (iout,*) 'i.le.nnt+iscp'
453 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
454 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
456 else if (i.gt.nct-iscp) then
457 cd write (iout,*) 'i.gt.nct-iscp'
458 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
459 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
462 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
463 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
466 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
467 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
476 if (i.lt.nnt+iscp) then
478 iscpstart(i,1)=i+iscp
480 elseif (i.gt.nct-iscp) then
488 iscpstart(i,2)=i+iscp
494 write (iout,'(a)') 'SC-p interaction array:'
495 do i=iatscp_s,iatscp_e
496 write (iout,'(i3,2(2x,2i3))')
497 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
500 C Partition local interactions
502 call int_bounds(nres-2,loc_start,loc_end)
503 loc_start=loc_start+1
505 call int_bounds(nres-2,ithet_start,ithet_end)
506 ithet_start=ithet_start+2
507 ithet_end=ithet_end+2
508 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
509 iphi_start=iphi_start+nnt+2
510 iphi_end=iphi_end+nnt+2
511 call int_bounds(nres-3,itau_start,itau_end)
512 itau_start=itau_start+3
515 write (iout,*) 'Processor:',MyID,
516 & ' loc_start',loc_start,' loc_end',loc_end,
517 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
518 & ' iphi_start',iphi_start,' iphi_end',iphi_end
519 write (*,*) 'Processor:',MyID,
520 & ' loc_start',loc_start,' loc_end',loc_end,
521 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
522 & ' iphi_start',iphi_start,' iphi_end',iphi_end
524 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
525 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
526 & nele_int_tot,' electrostatic and ',nscp_int_tot,
527 & ' SC-p interactions','were distributed among',fgprocs,
528 & ' fine-grain processors.'
542 c---------------------------------------------------------------------------
543 subroutine int_partition(int_index,lower_index,upper_index,atom,
544 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
545 implicit real*8 (a-h,o-z)
547 include 'COMMON.IOUNITS'
548 integer int_index,lower_index,upper_index,atom,at_start,at_end,
549 & first_atom,last_atom,int_gr,jat_start,jat_end
552 if (lprn) write (iout,*) 'int_index=',int_index
553 int_index_old=int_index
554 int_index=int_index+last_atom-first_atom+1
556 & write (iout,*) 'int_index=',int_index,
557 & ' int_index_old',int_index_old,
558 & ' lower_index=',lower_index,
559 & ' upper_index=',upper_index,
560 & ' atom=',atom,' first_atom=',first_atom,
561 & ' last_atom=',last_atom
562 if (int_index.ge.lower_index) then
564 if (at_start.eq.0) then
566 jat_start=first_atom-1+lower_index-int_index_old
570 if (lprn) write (iout,*) 'jat_start',jat_start
571 if (int_index.ge.upper_index) then
573 jat_end=first_atom-1+upper_index-int_index_old
578 if (lprn) write (iout,*) 'jat_end',jat_end
582 c------------------------------------------------------------------------------
583 subroutine hpb_partition
584 implicit real*8 (a-h,o-z)
586 include 'COMMON.SBRIDGE'
587 include 'COMMON.IOUNITS'
589 include 'COMMON.INFO'
590 call int_bounds(nhpb,link_start,link_end)
595 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
596 cd & ' nhpb',nhpb,' link_start=',link_start,
597 cd & ' link_end',link_end