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
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.'
542 c---------------------------------------------------------------------------
543 subroutine int_partition(int_index,lower_index,upper_index,atom,
544 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
545 implicit real*8 (a-h,o-z)
547 include 'COMMON.IOUNITS'
548 integer int_index,lower_index,upper_index,atom,at_start,at_end,
549 & first_atom,last_atom,int_gr,jat_start,jat_end
552 if (lprn) write (iout,*) 'int_index=',int_index
553 int_index_old=int_index
554 int_index=int_index+last_atom-first_atom+1
556 & write (iout,*) 'int_index=',int_index,
557 & ' int_index_old',int_index_old,
558 & ' lower_index=',lower_index,
559 & ' upper_index=',upper_index,
560 & ' atom=',atom,' first_atom=',first_atom,
561 & ' last_atom=',last_atom
562 if (int_index.ge.lower_index) then
564 if (at_start.eq.0) then
566 jat_start=first_atom-1+lower_index-int_index_old
570 if (lprn) write (iout,*) 'jat_start',jat_start
571 if (int_index.ge.upper_index) then
573 jat_end=first_atom-1+upper_index-int_index_old
578 if (lprn) write (iout,*) 'jat_end',jat_end
582 c------------------------------------------------------------------------------
583 subroutine hpb_partition
584 implicit real*8 (a-h,o-z)
586 include 'COMMON.SBRIDGE'
587 include 'COMMON.IOUNITS'
589 include 'COMMON.INFO'
590 call int_bounds(nhpb,link_start,link_end)
595 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
596 cd & ' nhpb',nhpb,' link_start=',link_start,
597 cd & ' link_end',link_end