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
68 C Set default weights of the energy terms.
112 athet(j,i,ichir1,ichir2)=0.0D0
113 bthet(j,i,ichir1,ichir2)=0.0D0
133 gaussc(l,k,j,i)=0.0D0
146 v1(k,j,i,iblock)=0.0D0
147 v2(k,j,i,iblock)=0.0D0
157 v1c(1,l,i,j,k,iblock)=0.0D0
158 v1s(1,l,i,j,k,iblock)=0.0D0
159 v1c(2,l,i,j,k,iblock)=0.0D0
160 v1s(2,l,i,j,k,iblock)=0.0D0
164 v2c(m,l,i,j,k,iblock)=0.0D0
165 v2s(m,l,i,j,k,iblock)=0.0D0
176 C Initialize the bridge arrays
195 C Initialize variables used in minimization.
204 C Initialize the variables responsible for the mode of gradient storage.
210 if (print_order(i).eq.j) then
218 C Set timers and counters for the respective routines
237 nprint_ene=nprint_ene-1
241 c-------------------------------------------------------------------------
243 implicit real*8 (a-h,o-z)
245 include 'DIMENSIONS.ZSCOPT'
246 include 'COMMON.NAMES'
247 include 'COMMON.WEIGHTS'
248 include 'COMMON.FFIELD'
250 &'DD' ,'DPR','DLY','DAR','DHI','DAS','DGL','DSG','DGN','DSN','DTH',
251 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
252 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
253 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/
255 &'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','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=ind_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