3 C Define constants and zero out tables.
5 implicit real*8 (a-h,o-z)
7 include 'DIMENSIONS.ZSCOPT'
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.WEIGHTS"
22 include "COMMON.NAMES"
23 include "COMMON.TIME1"
25 C The following is just to define auxiliary variables used in angle conversion
66 C Set default weights of the energy terms.
110 athet(j,i,ichir1,ichir2)=0.0D0
111 bthet(j,i,ichir1,ichir2)=0.0D0
131 gaussc(l,k,j,i)=0.0D0
144 v1(k,j,i,iblock)=0.0D0
145 v2(k,j,i,iblock)=0.0D0
155 v1c(1,l,i,j,k,iblock)=0.0D0
156 v1s(1,l,i,j,k,iblock)=0.0D0
157 v1c(2,l,i,j,k,iblock)=0.0D0
158 v1s(2,l,i,j,k,iblock)=0.0D0
162 v2c(m,l,i,j,k,iblock)=0.0D0
163 v2s(m,l,i,j,k,iblock)=0.0D0
174 C Initialize the bridge arrays
193 C Initialize variables used in minimization.
202 C Initialize the variables responsible for the mode of gradient storage.
208 if (print_order(i).eq.j) then
216 C Set timers and counters for the respective routines
235 nprint_ene=nprint_ene-1
239 c-------------------------------------------------------------------------
241 implicit real*8 (a-h,o-z)
243 include 'DIMENSIONS.ZSCOPT'
244 include 'COMMON.NAMES'
245 include 'COMMON.WEIGHTS'
246 include 'COMMON.FFIELD'
248 &'DD','DAU','DAI','DDB','DSM','DPR','DLY','DAR','DHI','DAS','DGL',
249 & 'DSG','DGN','DSN','DTH',
250 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
251 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
252 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','SME','DBZ',
255 &'z','z','z','z','z','p','k','r','h','d','e','n','q','s','t','g',
256 &'a','y','w','v','l','i','f','m','c','x',
257 &'C','M','F','I','L','V','W','Y','A','G','T',
258 &'S','Q','N','E','D','H','R','K','P','z','z','z','z','X'/
259 data potname /'LJ','LJK','BP','GB','GBV'/
261 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
262 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
263 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
264 & "EVDW2_14","ESTR","ESCCOR","EDIHC","EVDW_T"/
266 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
267 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
268 & "WHPB","WVDWPP","WSCP14","WBOND","WSCCOR","WDIHC","WSC"/
269 data ww0 /1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,
270 & 1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,0.4d0,1.0d0,1.0d0,
273 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
276 c---------------------------------------------------------------------------
277 subroutine init_int_table
278 implicit real*8 (a-h,o-z)
280 include 'DIMENSIONS.ZSCOPT'
285 include 'COMMON.INFO'
287 include 'COMMON.CHAIN'
288 include 'COMMON.INTERACT'
289 include 'COMMON.LOCAL'
290 include 'COMMON.SBRIDGE'
291 include 'COMMON.IOUNITS'
292 logical scheck,lprint
294 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
295 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
296 C... Determine the numbers of start and end SC-SC interaction
297 C... to deal with by current processor.
300 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
301 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
302 MyRank=MyID-(MyGroup-1)*fgProcs
303 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
305 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
306 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
307 & ' my_sc_inde',my_sc_inde
327 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
328 cd & (ihpb(i),jhpb(i),i=1,nss)
332 if (ihpb(ii).eq.i+nres) then
339 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
343 write (iout,*) 'jj=i+1'
344 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
345 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
351 else if (jj.eq.nct) then
353 write (iout,*) 'jj=nct'
354 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
355 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
363 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
364 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
366 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
367 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
378 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
379 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
384 ind_scint=int_scint+nct-i
388 ind_scint_old=ind_scint
398 write (iout,*) 'Processor',MyID,' Group',MyGroup
399 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
403 write (iout,'(a)') 'Interaction array:'
405 write (iout,'(i3,2(2x,2i3))')
406 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
411 C Now partition the electrostatic-interaction array
413 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
414 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
416 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
417 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
418 & ' my_ele_inde',my_ele_inde
425 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
426 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
438 write (iout,'(a)') 'Electrostatic interaction array:'
440 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
445 C Partition the SC-p interaction array
447 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
448 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
450 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
451 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
452 & ' my_scp_inde',my_scp_inde
458 if (i.lt.nnt+iscp) then
459 cd write (iout,*) 'i.le.nnt+iscp'
460 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
461 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
463 else if (i.gt.nct-iscp) then
464 cd write (iout,*) 'i.gt.nct-iscp'
465 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
466 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
469 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
470 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
473 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
474 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
483 if (i.lt.nnt+iscp) then
485 iscpstart(i,1)=i+iscp
487 elseif (i.gt.nct-iscp) then
495 iscpstart(i,2)=i+iscp
501 write (iout,'(a)') 'SC-p interaction array:'
502 do i=iatscp_s,iatscp_e
503 write (iout,'(i3,2(2x,2i3))')
504 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
507 C Partition local interactions
509 call int_bounds(nres-2,loc_start,loc_end)
510 loc_start=loc_start+1
512 call int_bounds(nres-2,ithet_start,ithet_end)
513 ithet_start=ithet_start+2
514 ithet_end=ithet_end+2
515 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
516 iphi_start=iphi_start+nnt+2
517 iphi_end=iphi_end+nnt+2
518 call int_bounds(nres-3,itau_start,itau_end)
519 itau_start=itau_start+3
522 write (iout,*) 'Processor:',MyID,
523 & ' loc_start',loc_start,' loc_end',loc_end,
524 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
525 & ' iphi_start',iphi_start,' iphi_end',iphi_end
526 write (*,*) 'Processor:',MyID,
527 & ' loc_start',loc_start,' loc_end',loc_end,
528 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
529 & ' iphi_start',iphi_start,' iphi_end',iphi_end
531 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
532 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
533 & nele_int_tot,' electrostatic and ',nscp_int_tot,
534 & ' SC-p interactions','were distributed among',fgprocs,
535 & ' fine-grain processors.'
549 c---------------------------------------------------------------------------
550 subroutine int_partition(int_index,lower_index,upper_index,atom,
551 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
552 implicit real*8 (a-h,o-z)
554 include 'COMMON.IOUNITS'
555 integer int_index,lower_index,upper_index,atom,at_start,at_end,
556 & first_atom,last_atom,int_gr,jat_start,jat_end
559 if (lprn) write (iout,*) 'int_index=',int_index
560 int_index_old=int_index
561 int_index=int_index+last_atom-first_atom+1
563 & write (iout,*) 'int_index=',int_index,
564 & ' int_index_old',int_index_old,
565 & ' lower_index=',lower_index,
566 & ' upper_index=',upper_index,
567 & ' atom=',atom,' first_atom=',first_atom,
568 & ' last_atom=',last_atom
569 if (int_index.ge.lower_index) then
571 if (at_start.eq.0) then
573 jat_start=first_atom-1+lower_index-int_index_old
577 if (lprn) write (iout,*) 'jat_start',jat_start
578 if (int_index.ge.upper_index) then
580 jat_end=first_atom-1+upper_index-int_index_old
585 if (lprn) write (iout,*) 'jat_end',jat_end
589 c------------------------------------------------------------------------------
590 subroutine hpb_partition
591 implicit real*8 (a-h,o-z)
593 include 'COMMON.SBRIDGE'
594 include 'COMMON.IOUNITS'
596 include 'COMMON.INFO'
597 call int_bounds(nhpb,link_start,link_end)
602 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
603 cd & ' nhpb',nhpb,' link_start=',link_start,
604 cd & ' link_end',link_end