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
67 C Set default weights of the energy terms.
128 gaussc(l,k,j,i)=0.0D0
149 C Initialize the bridge arrays
164 dyn_ss_mask(i)=.false.
171 C Initialize variables used in minimization.
180 C Initialize the variables responsible for the mode of gradient storage.
186 if (print_order(i).eq.j) then
194 C Set timers and counters for the respective routines
213 nprint_ene=nprint_ene-1
217 c-------------------------------------------------------------------------
219 implicit real*8 (a-h,o-z)
221 include 'DIMENSIONS.ZSCOPT'
222 include 'COMMON.NAMES'
223 include 'COMMON.WEIGHTS'
224 include 'COMMON.FFIELD'
226 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
227 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/
229 &'C','M','F','I','L','V','W','Y','A','G','T',
230 &'S','Q','N','E','D','H','R','K','P','X'/
231 data potname /'LJ','LJK','BP','GB','GBV'/
233 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
234 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
235 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB ","EVDWPP ",
236 & "ESTR ","EVDW2_14 ","ESCCOR ", " ","EDIHCNSTR","EHOMOLOGY",
237 & "DFA DIS","DFA TOR","DFA NEI","DFA BET"," "/
239 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
240 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
241 & "WSTRAIN","WVDWPP","WBOND","SCAL14","WSCCOR"," ","WDIHCNSTR",
242 & "WHOMOLOGY","WDFAD","WDFAT","WDFAN","WDFAB"," "/
244 data print_order/1,2,3,11,12,13,14,4,5,6,7,8,9,10,19,18,15,17,16,
245 & 21,23,24,25,26,0,0,0/
247 c---------------------------------------------------------------------------
248 subroutine init_int_table
249 implicit real*8 (a-h,o-z)
251 include 'DIMENSIONS.ZSCOPT'
256 include 'COMMON.INFO'
258 include 'COMMON.CHAIN'
259 include 'COMMON.INTERACT'
260 include 'COMMON.LOCAL'
261 include 'COMMON.SBRIDGE'
262 include 'COMMON.IOUNITS'
263 logical scheck,lprint
265 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
266 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
267 C... Determine the numbers of start and end SC-SC interaction
268 C... to deal with by current processor.
271 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
272 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
273 MyRank=MyID-(MyGroup-1)*fgProcs
274 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
276 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
277 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
278 & ' my_sc_inde',my_sc_inde
298 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
299 cd & (ihpb(i),jhpb(i),i=1,nss)
304 if (ihpb(ii).eq.i+nres) then
311 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
315 write (iout,*) 'jj=i+1'
316 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
317 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
323 else if (jj.eq.nct) then
325 write (iout,*) 'jj=nct'
326 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
327 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
335 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
336 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
338 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
339 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
350 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
351 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
356 ind_scint=int_scint+nct-i
360 ind_scint_old=ind_scint
370 write (iout,*) 'Processor',MyID,' Group',MyGroup
371 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
375 write (iout,'(a)') 'Interaction array:'
377 write (iout,'(i3,2(2x,2i3))')
378 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
383 C Now partition the electrostatic-interaction array
385 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
386 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
388 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
389 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
390 & ' my_ele_inde',my_ele_inde
397 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
398 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
410 write (iout,'(a)') 'Electrostatic interaction array:'
412 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
417 C Partition the SC-p interaction array
419 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
420 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
422 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
423 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
424 & ' my_scp_inde',my_scp_inde
430 if (i.lt.nnt+iscp) then
431 cd write (iout,*) 'i.le.nnt+iscp'
432 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
433 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
435 else if (i.gt.nct-iscp) then
436 cd write (iout,*) 'i.gt.nct-iscp'
437 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
438 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
441 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
442 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
445 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
446 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
455 if (i.lt.nnt+iscp) then
457 iscpstart(i,1)=i+iscp
459 elseif (i.gt.nct-iscp) then
467 iscpstart(i,2)=i+iscp
473 write (iout,'(a)') 'SC-p interaction array:'
474 do i=iatscp_s,iatscp_e
475 write (iout,'(i3,2(2x,2i3))')
476 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
479 C Partition local interactions
481 call int_bounds(nres-2,loc_start,loc_end)
482 loc_start=loc_start+1
484 call int_bounds(nres-2,ithet_start,ithet_end)
485 ithet_start=ithet_start+2
486 ithet_end=ithet_end+2
487 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
488 iphi_start=iphi_start+nnt+2
489 iphi_end=iphi_end+nnt+2
490 call int_bounds(nres-3,itau_start,itau_end)
491 itau_start=itau_start+3
494 write (iout,*) 'Processor:',MyID,
495 & ' loc_start',loc_start,' loc_end',loc_end,
496 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
497 & ' iphi_start',iphi_start,' iphi_end',iphi_end
498 write (*,*) 'Processor:',MyID,
499 & ' loc_start',loc_start,' loc_end',loc_end,
500 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
501 & ' iphi_start',iphi_start,' iphi_end',iphi_end
503 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
504 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
505 & nele_int_tot,' electrostatic and ',nscp_int_tot,
506 & ' SC-p interactions','were distributed among',fgprocs,
507 & ' fine-grain processors.'
521 c---------------------------------------------------------------------------
522 subroutine int_partition(int_index,lower_index,upper_index,atom,
523 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
524 implicit real*8 (a-h,o-z)
526 include 'COMMON.IOUNITS'
527 integer int_index,lower_index,upper_index,atom,at_start,at_end,
528 & first_atom,last_atom,int_gr,jat_start,jat_end
531 if (lprn) write (iout,*) 'int_index=',int_index
532 int_index_old=int_index
533 int_index=int_index+last_atom-first_atom+1
535 & write (iout,*) 'int_index=',int_index,
536 & ' int_index_old',int_index_old,
537 & ' lower_index=',lower_index,
538 & ' upper_index=',upper_index,
539 & ' atom=',atom,' first_atom=',first_atom,
540 & ' last_atom=',last_atom
541 if (int_index.ge.lower_index) then
543 if (at_start.eq.0) then
545 jat_start=first_atom-1+lower_index-int_index_old
549 if (lprn) write (iout,*) 'jat_start',jat_start
550 if (int_index.ge.upper_index) then
552 jat_end=first_atom-1+upper_index-int_index_old
557 if (lprn) write (iout,*) 'jat_end',jat_end
561 c------------------------------------------------------------------------------
562 subroutine hpb_partition
563 implicit real*8 (a-h,o-z)
565 include 'COMMON.SBRIDGE'
566 include 'COMMON.IOUNITS'
568 include 'COMMON.INFO'
569 call int_bounds(nhpb,link_start,link_end)
574 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
575 cd & ' nhpb',nhpb,' link_start=',link_start,
576 cd & ' link_end',link_end
579 c------------------------------------------------------------------------------
580 subroutine homology_partition
581 implicit real*8 (a-h,o-z)
583 include 'DIMENSIONS.ZSCOPT'
584 include 'DIMENSIONS.FREE'
588 include 'COMMON.SBRIDGE'
589 include 'COMMON.IOUNITS'
590 c include 'COMMON.SETUP'
591 include 'COMMON.CONTROL'
592 include 'COMMON.CHAIN'
593 include 'COMMON.INTERACT'
594 include 'COMMON.HOMRESTR'
595 write(iout,*)"homology_partition: lim_odl=",lim_odl,
598 call int_bounds(lim_odl,link_start_homo,link_end_homo)
599 call int_bounds(lim_dih,idihconstr_start_homo,
600 & idihconstr_end_homo)
601 idihconstr_start_homo=idihconstr_start_homo+nnt-1+3
602 idihconstr_end_homo=idihconstr_end_homo+nnt-1+3
603 if (me.eq.king .or. .not. out1file)
604 & write (iout,*) 'Processor',fg_rank,' CG group',kolor,
605 & ' absolute rank',MyRank,
606 & ' lim_odl',lim_odl,' link_start=',link_start_homo,
607 & ' link_end',link_end_homo,' lim_dih',lim_dih,
608 & ' idihconstr_start_homo',idihconstr_start_homo,
609 & ' idihconstr_end_homo',idihconstr_end_homo
612 link_end_homo=lim_odl
613 idihconstr_start_homo=nnt+3
614 idihconstr_end_homo=lim_dih+nnt-1+3
616 & ' lim_odl',lim_odl,' link_start=',link_start_homo,
617 & ' link_end',link_end_homo,' lim_dih',lim_dih,
618 & ' idihconstr_start_homo',idihconstr_start_homo,
619 & ' idihconstr_end_homo',idihconstr_end_homo