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 & "EVDW2_14","ESTR","ESCCOR","EDIHC","EVDW_T","ELIPTRAN",
262 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
263 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
264 & "WHPB","WVDWPP","WSCP14","WBOND","WSCCOR","WDIHC","WSC",
265 & "WLIPTRAN","WAFM","WTHETC"/
267 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
268 & 16,15,17,20,21,24,22,23/
270 c---------------------------------------------------------------------------
271 subroutine init_int_table
272 implicit real*8 (a-h,o-z)
274 include 'sizesclu.dat'
279 include 'COMMON.INFO'
281 include 'COMMON.CHAIN'
282 include 'COMMON.INTERACT'
283 include 'COMMON.LOCAL'
284 include 'COMMON.SBRIDGE'
285 include 'COMMON.IOUNITS'
286 logical scheck,lprint
288 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
289 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
290 C... Determine the numbers of start and end SC-SC interaction
291 C... to deal with by current processor.
294 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
295 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
296 MyRank=MyID-(MyGroup-1)*fgProcs
297 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
299 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
300 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
301 & ' my_sc_inde',my_sc_inde
321 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
322 cd & (ihpb(i),jhpb(i),i=1,nss)
327 if (ihpb(ii).eq.i+nres) then
334 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
338 write (iout,*) 'jj=i+1'
339 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
340 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
346 else if (jj.eq.nct) then
348 write (iout,*) 'jj=nct'
349 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
350 & iatsc_s,iatsc_e,i+1,nct-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,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
361 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
362 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
373 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
374 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
379 ind_scint=int_scint+nct-i
383 ind_scint_old=ind_scint
393 write (iout,*) 'Processor',MyID,' Group',MyGroup
394 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
398 write (iout,'(a)') 'Interaction array:'
400 write (iout,'(i3,2(2x,2i3))')
401 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
406 C Now partition the electrostatic-interaction array
408 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
409 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
411 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
412 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
413 & ' my_ele_inde',my_ele_inde
420 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
421 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
433 write (iout,'(a)') 'Electrostatic interaction array:'
435 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
440 C Partition the SC-p interaction array
442 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
443 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
445 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
446 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
447 & ' my_scp_inde',my_scp_inde
453 if (i.lt.nnt+iscp) then
454 cd write (iout,*) 'i.le.nnt+iscp'
455 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
456 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
458 else if (i.gt.nct-iscp) then
459 cd write (iout,*) 'i.gt.nct-iscp'
460 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
461 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
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,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
478 if (i.lt.nnt+iscp) then
480 iscpstart(i,1)=i+iscp
482 elseif (i.gt.nct-iscp) then
490 iscpstart(i,2)=i+iscp
496 write (iout,'(a)') 'SC-p interaction array:'
497 do i=iatscp_s,iatscp_e
498 write (iout,'(i3,2(2x,2i3))')
499 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
502 C Partition local interactions
504 call int_bounds(nres-2,loc_start,loc_end)
505 loc_start=loc_start+1
507 call int_bounds(nres-2,ithet_start,ithet_end)
508 ithet_start=ithet_start+2
509 ithet_end=ithet_end+2
510 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
511 iphi_start=iphi_start+nnt+2
512 iphi_end=iphi_end+nnt+2
513 call int_bounds(nres-3,itau_start,itau_end)
514 itau_start=itau_start+3
517 write (iout,*) 'Processor:',MyID,
518 & ' loc_start',loc_start,' loc_end',loc_end,
519 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
520 & ' iphi_start',iphi_start,' iphi_end',iphi_end
521 write (*,*) 'Processor:',MyID,
522 & ' loc_start',loc_start,' loc_end',loc_end,
523 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
524 & ' iphi_start',iphi_start,' iphi_end',iphi_end
526 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
527 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
528 & nele_int_tot,' electrostatic and ',nscp_int_tot,
529 & ' SC-p interactions','were distributed among',fgprocs,
530 & ' fine-grain processors.'
544 c---------------------------------------------------------------------------
545 subroutine int_partition(int_index,lower_index,upper_index,atom,
546 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
547 implicit real*8 (a-h,o-z)
549 include 'COMMON.IOUNITS'
550 integer int_index,lower_index,upper_index,atom,at_start,at_end,
551 & first_atom,last_atom,int_gr,jat_start,jat_end
554 if (lprn) write (iout,*) 'int_index=',int_index
555 int_index_old=int_index
556 int_index=int_index+last_atom-first_atom+1
558 & write (iout,*) 'int_index=',int_index,
559 & ' int_index_old',int_index_old,
560 & ' lower_index=',lower_index,
561 & ' upper_index=',upper_index,
562 & ' atom=',atom,' first_atom=',first_atom,
563 & ' last_atom=',last_atom
564 if (int_index.ge.lower_index) then
566 if (at_start.eq.0) then
568 jat_start=first_atom-1+lower_index-int_index_old
572 if (lprn) write (iout,*) 'jat_start',jat_start
573 if (int_index.ge.upper_index) then
575 jat_end=first_atom-1+upper_index-int_index_old
580 if (lprn) write (iout,*) 'jat_end',jat_end
584 c------------------------------------------------------------------------------
585 subroutine hpb_partition
586 implicit real*8 (a-h,o-z)
588 include 'COMMON.SBRIDGE'
589 include 'COMMON.IOUNITS'
591 include 'COMMON.INFO'
592 call int_bounds(nhpb,link_start,link_end)
597 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
598 cd & ' nhpb',nhpb,' link_start=',link_start,
599 cd & ' link_end',link_end