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' ,'DPR','DLY','DAR','DHI','DAS','DGL','DSG','DGN','DSN','DTH',
249 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
250 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
251 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/
253 &'z','p','k','r','h','d','e','n','q','s','t','g',
254 &'a','y','w','v','l','i','f','m','c','x',
255 &'C','M','F','I','L','V','W','Y','A','G','T',
256 &'S','Q','N','E','D','H','R','K','P','X'/
257 data potname /'LJ','LJK','BP','GB','GBV'/
259 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
260 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
261 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
262 & "EVDW2_14","ESTR","ESCCOR","EDIHC","EVDW_T"/
264 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
265 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
266 & "WHPB","WVDWPP","WSCP14","WBOND","WSCCOR","WDIHC","WSC"/
267 data ww0 /1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,
268 & 1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,0.4d0,1.0d0,1.0d0,
271 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
274 c---------------------------------------------------------------------------
275 subroutine init_int_table
276 implicit real*8 (a-h,o-z)
278 include 'DIMENSIONS.ZSCOPT'
283 include 'COMMON.INFO'
285 include 'COMMON.CHAIN'
286 include 'COMMON.INTERACT'
287 include 'COMMON.LOCAL'
288 include 'COMMON.SBRIDGE'
289 include 'COMMON.IOUNITS'
290 logical scheck,lprint
292 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
293 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
294 C... Determine the numbers of start and end SC-SC interaction
295 C... to deal with by current processor.
298 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
299 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
300 MyRank=MyID-(MyGroup-1)*fgProcs
301 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
303 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
304 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
305 & ' my_sc_inde',my_sc_inde
325 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
326 cd & (ihpb(i),jhpb(i),i=1,nss)
330 if (ihpb(ii).eq.i+nres) then
337 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
341 write (iout,*) 'jj=i+1'
342 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
343 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
349 else if (jj.eq.nct) then
351 write (iout,*) 'jj=nct'
352 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
353 & iatsc_s,iatsc_e,i+1,nct-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,i+1,jj-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,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
376 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
377 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
382 ind_scint=int_scint+nct-i
386 ind_scint_old=ind_scint
396 write (iout,*) 'Processor',MyID,' Group',MyGroup
397 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
401 write (iout,'(a)') 'Interaction array:'
403 write (iout,'(i3,2(2x,2i3))')
404 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
409 C Now partition the electrostatic-interaction array
411 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
412 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
414 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
415 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
416 & ' my_ele_inde',my_ele_inde
423 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
424 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
436 write (iout,'(a)') 'Electrostatic interaction array:'
438 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
443 C Partition the SC-p interaction array
445 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
446 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
448 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
449 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
450 & ' my_scp_inde',my_scp_inde
456 if (i.lt.nnt+iscp) then
457 cd write (iout,*) 'i.le.nnt+iscp'
458 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
459 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
461 else if (i.gt.nct-iscp) then
462 cd write (iout,*) 'i.gt.nct-iscp'
463 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
464 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
467 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
468 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
471 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
472 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
481 if (i.lt.nnt+iscp) then
483 iscpstart(i,1)=i+iscp
485 elseif (i.gt.nct-iscp) then
493 iscpstart(i,2)=i+iscp
499 write (iout,'(a)') 'SC-p interaction array:'
500 do i=iatscp_s,iatscp_e
501 write (iout,'(i3,2(2x,2i3))')
502 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
505 C Partition local interactions
507 call int_bounds(nres-2,loc_start,loc_end)
508 loc_start=loc_start+1
510 call int_bounds(nres-2,ithet_start,ithet_end)
511 ithet_start=ithet_start+2
512 ithet_end=ithet_end+2
513 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
514 iphi_start=iphi_start+nnt+2
515 iphi_end=iphi_end+nnt+2
516 call int_bounds(nres-3,itau_start,itau_end)
517 itau_start=itau_start+3
520 write (iout,*) 'Processor:',MyID,
521 & ' loc_start',loc_start,' loc_end',loc_end,
522 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
523 & ' iphi_start',iphi_start,' iphi_end',iphi_end
524 write (*,*) 'Processor:',MyID,
525 & ' loc_start',loc_start,' loc_end',loc_end,
526 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
527 & ' iphi_start',iphi_start,' iphi_end',iphi_end
529 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
530 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
531 & nele_int_tot,' electrostatic and ',nscp_int_tot,
532 & ' SC-p interactions','were distributed among',fgprocs,
533 & ' fine-grain processors.'
547 c---------------------------------------------------------------------------
548 subroutine int_partition(int_index,lower_index,upper_index,atom,
549 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
550 implicit real*8 (a-h,o-z)
552 include 'COMMON.IOUNITS'
553 integer int_index,lower_index,upper_index,atom,at_start,at_end,
554 & first_atom,last_atom,int_gr,jat_start,jat_end
557 if (lprn) write (iout,*) 'int_index=',int_index
558 int_index_old=int_index
559 int_index=int_index+last_atom-first_atom+1
561 & write (iout,*) 'int_index=',int_index,
562 & ' int_index_old',int_index_old,
563 & ' lower_index=',lower_index,
564 & ' upper_index=',upper_index,
565 & ' atom=',atom,' first_atom=',first_atom,
566 & ' last_atom=',last_atom
567 if (int_index.ge.lower_index) then
569 if (at_start.eq.0) then
571 jat_start=first_atom-1+lower_index-int_index_old
575 if (lprn) write (iout,*) 'jat_start',jat_start
576 if (int_index.ge.upper_index) then
578 jat_end=first_atom-1+upper_index-int_index_old
583 if (lprn) write (iout,*) 'jat_end',jat_end
587 c------------------------------------------------------------------------------
588 subroutine hpb_partition
589 implicit real*8 (a-h,o-z)
591 include 'COMMON.SBRIDGE'
592 include 'COMMON.IOUNITS'
594 include 'COMMON.INFO'
595 call int_bounds(nhpb,link_start,link_end)
600 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
601 cd & ' nhpb',nhpb,' link_start=',link_start,
602 cd & ' link_end',link_end