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
159 dyn_ss_mask(i)=.false.
166 C Initialize variables used in minimization.
175 C Initialize the variables responsible for the mode of gradient storage.
181 if (print_order(i).eq.j) then
189 C Set timers and counters for the respective routines
208 nprint_ene=nprint_ene-1
212 c-------------------------------------------------------------------------
214 implicit real*8 (a-h,o-z)
216 include 'sizesclu.dat'
217 include 'COMMON.NAMES'
218 include 'COMMON.FFIELD'
220 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
221 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/
223 &'C','M','F','I','L','V','W','Y','A','G','T',
224 &'S','Q','N','E','D','H','R','K','P','X'/
225 data potname /'LJ','LJK','BP','GB','GBV'/
227 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
228 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
229 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
230 & "ESTR","ESCCOR","EVDW2_14",""/
232 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
233 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
234 & "WHPB","WVDWPP","WBOND","WSCCOR","WSCP14",""/
236 data print_order /1,2,3,17,11,12,13,14,4,5,6,7,8,9,10,16,15,18,19,
239 c---------------------------------------------------------------------------
240 subroutine init_int_table
241 implicit real*8 (a-h,o-z)
243 include 'sizesclu.dat'
248 include 'COMMON.INFO'
250 include 'COMMON.CHAIN'
251 include 'COMMON.INTERACT'
252 include 'COMMON.LOCAL'
253 include 'COMMON.SBRIDGE'
254 include 'COMMON.IOUNITS'
255 logical scheck,lprint
257 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
258 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
259 C... Determine the numbers of start and end SC-SC interaction
260 C... to deal with by current processor.
263 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
264 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
265 MyRank=MyID-(MyGroup-1)*fgProcs
266 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
268 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
269 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
270 & ' my_sc_inde',my_sc_inde
290 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
291 cd & (ihpb(i),jhpb(i),i=1,nss)
295 if (ihpb(ii).eq.i+nres) then
303 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
307 write (iout,*) 'jj=i+1'
308 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
309 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
315 else if (jj.eq.nct) then
317 write (iout,*) 'jj=nct'
318 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
319 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
327 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
328 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
330 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
331 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
342 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
343 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
348 ind_scint=int_scint+nct-i
352 ind_scint_old=ind_scint
362 write (iout,*) 'Processor',MyID,' Group',MyGroup
363 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
367 write (iout,'(a)') 'Interaction array:'
369 write (iout,'(i3,2(2x,2i3))')
370 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
375 C Now partition the electrostatic-interaction array
377 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
378 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
380 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
381 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
382 & ' my_ele_inde',my_ele_inde
389 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
390 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
402 write (iout,'(a)') 'Electrostatic interaction array:'
404 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
409 C Partition the SC-p interaction array
411 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
412 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
414 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
415 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
416 & ' my_scp_inde',my_scp_inde
422 if (i.lt.nnt+iscp) then
423 cd write (iout,*) 'i.le.nnt+iscp'
424 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
425 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
427 else if (i.gt.nct-iscp) then
428 cd write (iout,*) 'i.gt.nct-iscp'
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,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
437 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
438 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
447 if (i.lt.nnt+iscp) then
449 iscpstart(i,1)=i+iscp
451 elseif (i.gt.nct-iscp) then
459 iscpstart(i,2)=i+iscp
465 write (iout,'(a)') 'SC-p interaction array:'
466 do i=iatscp_s,iatscp_e
467 write (iout,'(i3,2(2x,2i3))')
468 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
471 C Partition local interactions
473 call int_bounds(nres-2,loc_start,loc_end)
474 loc_start=loc_start+1
476 call int_bounds(nres-2,ithet_start,ithet_end)
477 ithet_start=ithet_start+2
478 ithet_end=ithet_end+2
479 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
480 iphi_start=iphi_start+nnt+2
481 iphi_end=iphi_end+nnt+2
482 call int_bounds(nres-3,itau_start,itau_end)
483 itau_start=itau_start+3
486 write (iout,*) '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
490 write (*,*) 'Processor:',MyID,
491 & ' loc_start',loc_start,' loc_end',loc_end,
492 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
493 & ' iphi_start',iphi_start,' iphi_end',iphi_end
495 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
496 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
497 & nele_int_tot,' electrostatic and ',nscp_int_tot,
498 & ' SC-p interactions','were distributed among',fgprocs,
499 & ' fine-grain processors.'
514 c---------------------------------------------------------------------------
515 subroutine int_partition(int_index,lower_index,upper_index,atom,
516 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
517 implicit real*8 (a-h,o-z)
519 include 'COMMON.IOUNITS'
520 integer int_index,lower_index,upper_index,atom,at_start,at_end,
521 & first_atom,last_atom,int_gr,jat_start,jat_end
524 if (lprn) write (iout,*) 'int_index=',int_index
525 int_index_old=int_index
526 int_index=int_index+last_atom-first_atom+1
528 & write (iout,*) 'int_index=',int_index,
529 & ' int_index_old',int_index_old,
530 & ' lower_index=',lower_index,
531 & ' upper_index=',upper_index,
532 & ' atom=',atom,' first_atom=',first_atom,
533 & ' last_atom=',last_atom
534 if (int_index.ge.lower_index) then
536 if (at_start.eq.0) then
538 jat_start=first_atom-1+lower_index-int_index_old
542 if (lprn) write (iout,*) 'jat_start',jat_start
543 if (int_index.ge.upper_index) then
545 jat_end=first_atom-1+upper_index-int_index_old
550 if (lprn) write (iout,*) 'jat_end',jat_end
554 c------------------------------------------------------------------------------
555 subroutine hpb_partition
556 implicit real*8 (a-h,o-z)
558 include 'COMMON.SBRIDGE'
559 include 'COMMON.IOUNITS'
561 include 'COMMON.INFO'
562 call int_bounds(nhpb,link_start,link_end)
567 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
568 cd & ' nhpb',nhpb,' link_start=',link_start,
569 cd & ' link_end',link_end