3 C Define constants and zero out tables.
5 implicit real*8 (a-h,o-z)
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.NAMES"
22 include "COMMON.TIME1"
24 C The following is just to define auxiliary variables used in angle conversion
63 C Set default weights of the energy terms.
109 athet(j,i,ichir1,ichir2)=0.0D0
110 bthet(j,i,ichir1,ichir2)=0.0D0
130 gaussc(l,k,j,i)=0.0D0
143 v1(k,j,i,iblock)=0.0D0
144 v2(k,j,i,iblock)=0.0D0
154 v1c(1,l,i,j,k,iblock)=0.0D0
155 v1s(1,l,i,j,k,iblock)=0.0D0
156 v1c(2,l,i,j,k,iblock)=0.0D0
157 v1s(2,l,i,j,k,iblock)=0.0D0
161 v2c(m,l,i,j,k,iblock)=0.0D0
162 v2s(m,l,i,j,k,iblock)=0.0D0
173 C Initialize the bridge arrays
192 C Initialize variables used in minimization.
201 C Initialize the variables responsible for the mode of gradient storage.
207 if (print_order(i).eq.j) then
215 C Set timers and counters for the respective routines
234 nprint_ene=nprint_ene-1
238 c-------------------------------------------------------------------------
240 implicit real*8 (a-h,o-z)
242 include 'sizesclu.dat'
243 include 'COMMON.NAMES'
244 include 'COMMON.FFIELD'
246 &'DD','DAU','DAI','DDB','DSM','DPR','DLY','DAR','DHI','DAS','DGL',
247 & 'DSG','DGN','DSN','DTH',
248 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
249 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
250 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','SME','DBZ',
253 &'z','z','z','z','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','z','z','z','z','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","ELIPTRAN",
265 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
266 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
267 & "WHPB","WVDWPP","WSCP14","WBOND","WSCCOR","WDIHC","WSC",
268 & "WLIPTRAN","WAFM","WTHETC"/
270 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
271 & 16,15,17,20,21,24,22,23/
273 c---------------------------------------------------------------------------
274 subroutine init_int_table
275 implicit real*8 (a-h,o-z)
277 include 'sizesclu.dat'
282 include 'COMMON.INFO'
284 include 'COMMON.CHAIN'
285 include 'COMMON.INTERACT'
286 include 'COMMON.LOCAL'
287 include 'COMMON.SBRIDGE'
288 include 'COMMON.IOUNITS'
289 logical scheck,lprint
291 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
292 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
293 C... Determine the numbers of start and end SC-SC interaction
294 C... to deal with by current processor.
297 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
298 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
299 MyRank=MyID-(MyGroup-1)*fgProcs
300 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
302 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
303 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
304 & ' my_sc_inde',my_sc_inde
324 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
325 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=ind_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
605 c------------------------------------------------------------------------------
606 subroutine homology_partition
607 implicit real*8 (a-h,o-z)
612 include 'COMMON.SBRIDGE'
613 include 'COMMON.IOUNITS'
614 c include 'COMMON.SETUP'
615 include 'COMMON.CONTROL'
616 include 'COMMON.CHAIN'
617 include 'COMMON.INTERACT'
618 include 'COMMON.HOMRESTR'
619 write(iout,*)"homology_partition: lim_odl=",lim_odl,
622 call int_bounds(lim_odl,link_start_homo,link_end_homo)
623 call int_bounds(lim_dih,idihconstr_start_homo,
624 & idihconstr_end_homo)
625 idihconstr_start_homo=idihconstr_start_homo+nnt-1+3
626 idihconstr_end_homo=idihconstr_end_homo+nnt-1+3
627 if (me.eq.king .or. .not. out1file)
628 & write (iout,*) 'Processor',fg_rank,' CG group',kolor,
629 & ' absolute rank',MyRank,
630 & ' lim_odl',lim_odl,' link_start=',link_start_homo,
631 & ' link_end',link_end_homo,' lim_dih',lim_dih,
632 & ' idihconstr_start_homo',idihconstr_start_homo,
633 & ' idihconstr_end_homo',idihconstr_end_homo
636 link_end_homo=lim_odl
637 idihconstr_start_homo=nnt+3
638 idihconstr_end_homo=lim_dih+nnt-1+3
640 & ' lim_odl',lim_odl,' link_start=',link_start_homo,
641 & ' link_end',link_end_homo,' lim_dih',lim_dih,
642 & ' idihconstr_start_homo',idihconstr_start_homo,
643 & ' idihconstr_end_homo',idihconstr_end_homo