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)
324 if (ihpb(ii).eq.i+nres) then
331 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
335 write (iout,*) 'jj=i+1'
336 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
337 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
343 else if (jj.eq.nct) then
345 write (iout,*) 'jj=nct'
346 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
347 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
355 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
356 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
358 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
359 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
370 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
371 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
376 ind_scint=int_scint+nct-i
380 ind_scint_old=ind_scint
390 write (iout,*) 'Processor',MyID,' Group',MyGroup
391 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
395 write (iout,'(a)') 'Interaction array:'
397 write (iout,'(i3,2(2x,2i3))')
398 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
403 C Now partition the electrostatic-interaction array
405 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
406 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
408 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
409 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
410 & ' my_ele_inde',my_ele_inde
417 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
418 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
430 write (iout,'(a)') 'Electrostatic interaction array:'
432 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
437 C Partition the SC-p interaction array
439 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
440 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
442 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
443 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
444 & ' my_scp_inde',my_scp_inde
450 if (i.lt.nnt+iscp) then
451 cd write (iout,*) 'i.le.nnt+iscp'
452 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
453 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
455 else if (i.gt.nct-iscp) then
456 cd write (iout,*) 'i.gt.nct-iscp'
457 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
458 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
461 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
462 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
465 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
466 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
475 if (i.lt.nnt+iscp) then
477 iscpstart(i,1)=i+iscp
479 elseif (i.gt.nct-iscp) then
487 iscpstart(i,2)=i+iscp
493 write (iout,'(a)') 'SC-p interaction array:'
494 do i=iatscp_s,iatscp_e
495 write (iout,'(i3,2(2x,2i3))')
496 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
499 C Partition local interactions
501 call int_bounds(nres-2,loc_start,loc_end)
502 loc_start=loc_start+1
504 call int_bounds(nres-2,ithet_start,ithet_end)
505 ithet_start=ithet_start+2
506 ithet_end=ithet_end+2
507 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
508 iphi_start=iphi_start+nnt+2
509 iphi_end=iphi_end+nnt+2
510 call int_bounds(nres-3,itau_start,itau_end)
511 itau_start=itau_start+3
514 write (iout,*) 'Processor:',MyID,
515 & ' loc_start',loc_start,' loc_end',loc_end,
516 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
517 & ' iphi_start',iphi_start,' iphi_end',iphi_end
518 write (*,*) 'Processor:',MyID,
519 & ' loc_start',loc_start,' loc_end',loc_end,
520 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
521 & ' iphi_start',iphi_start,' iphi_end',iphi_end
523 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
524 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
525 & nele_int_tot,' electrostatic and ',nscp_int_tot,
526 & ' SC-p interactions','were distributed among',fgprocs,
527 & ' fine-grain processors.'
541 c---------------------------------------------------------------------------
542 subroutine int_partition(int_index,lower_index,upper_index,atom,
543 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
544 implicit real*8 (a-h,o-z)
546 include 'COMMON.IOUNITS'
547 integer int_index,lower_index,upper_index,atom,at_start,at_end,
548 & first_atom,last_atom,int_gr,jat_start,jat_end
551 if (lprn) write (iout,*) 'int_index=',int_index
552 int_index_old=int_index
553 int_index=int_index+last_atom-first_atom+1
555 & write (iout,*) 'int_index=',int_index,
556 & ' int_index_old',int_index_old,
557 & ' lower_index=',lower_index,
558 & ' upper_index=',upper_index,
559 & ' atom=',atom,' first_atom=',first_atom,
560 & ' last_atom=',last_atom
561 if (int_index.ge.lower_index) then
563 if (at_start.eq.0) then
565 jat_start=first_atom-1+lower_index-int_index_old
569 if (lprn) write (iout,*) 'jat_start',jat_start
570 if (int_index.ge.upper_index) then
572 jat_end=first_atom-1+upper_index-int_index_old
577 if (lprn) write (iout,*) 'jat_end',jat_end
581 c------------------------------------------------------------------------------
582 subroutine hpb_partition
583 implicit real*8 (a-h,o-z)
585 include 'COMMON.SBRIDGE'
586 include 'COMMON.IOUNITS'
588 include 'COMMON.INFO'
589 call int_bounds(nhpb,link_start,link_end)
594 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
595 cd & ' nhpb',nhpb,' link_start=',link_start,
596 cd & ' link_end',link_end