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.
123 gaussc(l,k,j,i)=0.0D0
144 C Initialize the bridge arrays
163 C Initialize variables used in minimization.
172 C Initialize the variables responsible for the mode of gradient storage.
178 if (print_order(i).eq.j) then
186 C Set timers and counters for the respective routines
205 nprint_ene=nprint_ene-1
209 c-------------------------------------------------------------------------
211 implicit real*8 (a-h,o-z)
213 include 'sizesclu.dat'
214 include 'COMMON.NAMES'
215 include 'COMMON.FFIELD'
217 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
218 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/
220 &'C','M','F','I','L','V','W','Y','A','G','T',
221 &'S','Q','N','E','D','H','R','K','P','X'/
222 data potname /'LJ','LJK','BP','GB','GBV'/
224 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
225 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
226 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
227 & "ESTR","ESCCOR","EVDW2_14","","EVDW_T"/
229 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
230 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
231 & "WHPB","WVDWPP","WBOND","WSCCOR","WSCP14","","WSC"/
233 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
236 c---------------------------------------------------------------------------
237 subroutine init_int_table
238 implicit real*8 (a-h,o-z)
240 include 'sizesclu.dat'
245 include 'COMMON.INFO'
247 include 'COMMON.CHAIN'
248 include 'COMMON.INTERACT'
249 include 'COMMON.LOCAL'
250 include 'COMMON.SBRIDGE'
251 include 'COMMON.IOUNITS'
252 logical scheck,lprint
254 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
255 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
256 C... Determine the numbers of start and end SC-SC interaction
257 C... to deal with by current processor.
260 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
261 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
262 MyRank=MyID-(MyGroup-1)*fgProcs
263 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
265 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
266 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
267 & ' my_sc_inde',my_sc_inde
287 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
288 cd & (ihpb(i),jhpb(i),i=1,nss)
292 if (ihpb(ii).eq.i+nres) then
299 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
303 write (iout,*) 'jj=i+1'
304 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
305 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
311 else if (jj.eq.nct) then
313 write (iout,*) 'jj=nct'
314 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
315 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
323 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
324 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
326 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
327 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
338 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
339 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
344 ind_scint=int_scint+nct-i
348 ind_scint_old=ind_scint
358 write (iout,*) 'Processor',MyID,' Group',MyGroup
359 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
363 write (iout,'(a)') 'Interaction array:'
365 write (iout,'(i3,2(2x,2i3))')
366 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
371 C Now partition the electrostatic-interaction array
373 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
374 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
376 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
377 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
378 & ' my_ele_inde',my_ele_inde
385 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
386 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
398 write (iout,'(a)') 'Electrostatic interaction array:'
400 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
405 C Partition the SC-p interaction array
407 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
408 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
410 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
411 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
412 & ' my_scp_inde',my_scp_inde
418 if (i.lt.nnt+iscp) then
419 cd write (iout,*) 'i.le.nnt+iscp'
420 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
421 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
423 else if (i.gt.nct-iscp) then
424 cd write (iout,*) 'i.gt.nct-iscp'
425 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
426 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
429 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
430 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
433 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
434 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
443 if (i.lt.nnt+iscp) then
445 iscpstart(i,1)=i+iscp
447 elseif (i.gt.nct-iscp) then
455 iscpstart(i,2)=i+iscp
461 write (iout,'(a)') 'SC-p interaction array:'
462 do i=iatscp_s,iatscp_e
463 write (iout,'(i3,2(2x,2i3))')
464 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
467 C Partition local interactions
469 call int_bounds(nres-2,loc_start,loc_end)
470 loc_start=loc_start+1
472 call int_bounds(nres-2,ithet_start,ithet_end)
473 ithet_start=ithet_start+2
474 ithet_end=ithet_end+2
475 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
476 iphi_start=iphi_start+nnt+2
477 iphi_end=iphi_end+nnt+2
478 call int_bounds(nres-3,itau_start,itau_end)
479 itau_start=itau_start+3
482 write (iout,*) 'Processor:',MyID,
483 & ' loc_start',loc_start,' loc_end',loc_end,
484 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
485 & ' iphi_start',iphi_start,' iphi_end',iphi_end
486 write (*,*) 'Processor:',MyID,
487 & ' loc_start',loc_start,' loc_end',loc_end,
488 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
489 & ' iphi_start',iphi_start,' iphi_end',iphi_end
491 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
492 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
493 & nele_int_tot,' electrostatic and ',nscp_int_tot,
494 & ' SC-p interactions','were distributed among',fgprocs,
495 & ' fine-grain processors.'
509 c---------------------------------------------------------------------------
510 subroutine int_partition(int_index,lower_index,upper_index,atom,
511 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
512 implicit real*8 (a-h,o-z)
514 include 'COMMON.IOUNITS'
515 integer int_index,lower_index,upper_index,atom,at_start,at_end,
516 & first_atom,last_atom,int_gr,jat_start,jat_end
519 if (lprn) write (iout,*) 'int_index=',int_index
520 int_index_old=int_index
521 int_index=int_index+last_atom-first_atom+1
523 & write (iout,*) 'int_index=',int_index,
524 & ' int_index_old',int_index_old,
525 & ' lower_index=',lower_index,
526 & ' upper_index=',upper_index,
527 & ' atom=',atom,' first_atom=',first_atom,
528 & ' last_atom=',last_atom
529 if (int_index.ge.lower_index) then
531 if (at_start.eq.0) then
533 jat_start=first_atom-1+lower_index-int_index_old
537 if (lprn) write (iout,*) 'jat_start',jat_start
538 if (int_index.ge.upper_index) then
540 jat_end=first_atom-1+upper_index-int_index_old
545 if (lprn) write (iout,*) 'jat_end',jat_end
549 c------------------------------------------------------------------------------
550 subroutine hpb_partition
551 implicit real*8 (a-h,o-z)
553 include 'COMMON.SBRIDGE'
554 include 'COMMON.IOUNITS'
556 include 'COMMON.INFO'
557 call int_bounds(nhpb,link_start,link_end)
562 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
563 cd & ' nhpb',nhpb,' link_start=',link_start,
564 cd & ' link_end',link_end