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)
333 if (ihpb(ii).eq.i+nres) then
340 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
344 write (iout,*) 'jj=i+1'
345 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
346 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
352 else if (jj.eq.nct) then
354 write (iout,*) 'jj=nct'
355 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
356 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
364 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
365 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
367 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
368 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
379 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
380 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
385 ind_scint=int_scint+nct-i
389 ind_scint_old=ind_scint
399 write (iout,*) 'Processor',MyID,' Group',MyGroup
400 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
404 write (iout,'(a)') 'Interaction array:'
406 write (iout,'(i3,2(2x,2i3))')
407 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
412 C Now partition the electrostatic-interaction array
414 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
415 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
417 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
418 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
419 & ' my_ele_inde',my_ele_inde
426 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
427 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
439 write (iout,'(a)') 'Electrostatic interaction array:'
441 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
446 C Partition the SC-p interaction array
448 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
449 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
451 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
452 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
453 & ' my_scp_inde',my_scp_inde
459 if (i.lt.nnt+iscp) then
460 cd write (iout,*) 'i.le.nnt+iscp'
461 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
462 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
464 else if (i.gt.nct-iscp) then
465 cd write (iout,*) 'i.gt.nct-iscp'
466 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
467 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
470 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
471 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
474 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
475 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
484 if (i.lt.nnt+iscp) then
486 iscpstart(i,1)=i+iscp
488 elseif (i.gt.nct-iscp) then
496 iscpstart(i,2)=i+iscp
502 write (iout,'(a)') 'SC-p interaction array:'
503 do i=iatscp_s,iatscp_e
504 write (iout,'(i3,2(2x,2i3))')
505 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
508 C Partition local interactions
510 call int_bounds(nres-2,loc_start,loc_end)
511 loc_start=loc_start+1
513 call int_bounds(nres-2,ithet_start,ithet_end)
514 ithet_start=ithet_start+2
515 ithet_end=ithet_end+2
516 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
517 iphi_start=iphi_start+nnt+2
518 iphi_end=iphi_end+nnt+2
519 call int_bounds(nres-3,itau_start,itau_end)
520 itau_start=itau_start+3
523 write (iout,*) 'Processor:',MyID,
524 & ' loc_start',loc_start,' loc_end',loc_end,
525 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
526 & ' iphi_start',iphi_start,' iphi_end',iphi_end
527 write (*,*) 'Processor:',MyID,
528 & ' loc_start',loc_start,' loc_end',loc_end,
529 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
530 & ' iphi_start',iphi_start,' iphi_end',iphi_end
532 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
533 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
534 & nele_int_tot,' electrostatic and ',nscp_int_tot,
535 & ' SC-p interactions','were distributed among',fgprocs,
536 & ' fine-grain processors.'
550 c---------------------------------------------------------------------------
551 subroutine int_partition(int_index,lower_index,upper_index,atom,
552 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
553 implicit real*8 (a-h,o-z)
555 include 'COMMON.IOUNITS'
556 integer int_index,lower_index,upper_index,atom,at_start,at_end,
557 & first_atom,last_atom,int_gr,jat_start,jat_end
560 if (lprn) write (iout,*) 'int_index=',int_index
561 int_index_old=int_index
562 int_index=int_index+last_atom-first_atom+1
564 & write (iout,*) 'int_index=',int_index,
565 & ' int_index_old',int_index_old,
566 & ' lower_index=',lower_index,
567 & ' upper_index=',upper_index,
568 & ' atom=',atom,' first_atom=',first_atom,
569 & ' last_atom=',last_atom
570 if (int_index.ge.lower_index) then
572 if (at_start.eq.0) then
574 jat_start=first_atom-1+lower_index-int_index_old
578 if (lprn) write (iout,*) 'jat_start',jat_start
579 if (int_index.ge.upper_index) then
581 jat_end=first_atom-1+upper_index-int_index_old
586 if (lprn) write (iout,*) 'jat_end',jat_end
590 c------------------------------------------------------------------------------
591 subroutine hpb_partition
592 implicit real*8 (a-h,o-z)
594 include 'COMMON.SBRIDGE'
595 include 'COMMON.IOUNITS'
597 include 'COMMON.INFO'
598 call int_bounds(nhpb,link_start,link_end)
603 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
604 cd & ' nhpb',nhpb,' link_start=',link_start,
605 cd & ' link_end',link_end