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
65 C Lipidic input file for parameters range 60-79
68 C Set default weights of the energy terms.
114 athet(j,i,ichir1,ichir2)=0.0D0
115 bthet(j,i,ichir1,ichir2)=0.0D0
135 gaussc(l,k,j,i)=0.0D0
148 v1(k,j,i,iblock)=0.0D0
149 v2(k,j,i,iblock)=0.0D0
159 v1c(1,l,i,j,k,iblock)=0.0D0
160 v1s(1,l,i,j,k,iblock)=0.0D0
161 v1c(2,l,i,j,k,iblock)=0.0D0
162 v1s(2,l,i,j,k,iblock)=0.0D0
166 v2c(m,l,i,j,k,iblock)=0.0D0
167 v2s(m,l,i,j,k,iblock)=0.0D0
178 C Initialize the bridge arrays
191 dyn_ss_mask(i)=.false.
198 C Initialize variables used in minimization.
207 C Initialize the variables responsible for the mode of gradient storage.
213 if (print_order(i).eq.j) then
221 C Set timers and counters for the respective routines
240 nprint_ene=nprint_ene-1
244 c-------------------------------------------------------------------------
246 implicit real*8 (a-h,o-z)
248 include 'DIMENSIONS.ZSCOPT'
249 include 'COMMON.NAMES'
250 include 'COMMON.WEIGHTS'
251 include 'COMMON.FFIELD'
253 &'DD','DAU','DAI','DDB','DSM','DPR','DLY','DAR','DHI','DAS','DGL',
254 & 'DSG','DGN','DSN','DTH',
255 &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
256 &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
257 &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','SME','DBZ',
260 &'z','z','z','z','z','p','k','r','h','d','e','n','q','s','t','g',
261 &'a','y','w','v','l','i','f','m','c','x',
262 &'C','M','F','I','L','V','W','Y','A','G','T',
263 &'S','Q','N','E','D','H','R','K','P','z','z','z','z','X'/
264 data potname /'LJ','LJK','BP','GB','GBV'/
266 & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ",
267 & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ",
268 & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB","EVDWPP",
269 & "EVDW2_14","ESTR","ESCCOR","EDIHC","EVDW_T","ELIPTRAN",
270 & "EAFM","ETHETC","ESHIELD","ESAXS"/
272 & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC",
273 & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD",
274 & "WHPB","WVDWPP","WSCP14","WBOND","WSCCOR","WDIHC","WSC",
275 & "WLIPTRAN","WAFM","WTHETC","WSHIELD","WSAXS"/
276 data ww0 /1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,
277 & 1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,1.0d0,0.4d0,1.0d0,1.0d0,
278 & 0.0d0,0.0,0.0d0,0.0d0,0.0d0,0.0d0,0.0d0/
280 data print_order /1,2,3,18,11,12,13,14,4,5,6,7,8,9,10,19,
281 & 16,15,17,20,21,24,22,23,26/
283 c---------------------------------------------------------------------------
284 subroutine init_int_table
285 implicit real*8 (a-h,o-z)
287 include 'DIMENSIONS.ZSCOPT'
288 include 'DIMENSIONS.FREE'
293 include 'COMMON.INFO'
295 include 'COMMON.CONTROL'
296 include 'COMMON.CHAIN'
297 include 'COMMON.INTERACT'
298 include 'COMMON.LOCAL'
299 include 'COMMON.SBRIDGE'
300 include 'COMMON.IOUNITS'
301 logical scheck,lprint
303 integer my_sc_int(0:max_fg_Procs-1),my_sc_intt(0:max_fg_Procs),
304 & my_ele_int(0:max_fg_Procs-1),my_ele_intt(0:max_fg_Procs)
305 C... Determine the numbers of start and end SC-SC interaction
306 C... to deal with by current processor.
309 &write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct
310 n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss
311 MyRank=MyID-(MyGroup-1)*fgProcs
312 call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde)
314 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
315 & ' n_sc_int_tot',n_sc_int_tot,' my_sc_inds=',my_sc_inds,
316 & ' my_sc_inde',my_sc_inde
336 cd write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb',
337 cd & (ihpb(i),jhpb(i),i=1,nss)
342 if (ihpb(ii).eq.i+nres) then
349 cd write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj
353 write (iout,*) 'jj=i+1'
354 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
355 & iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
361 else if (jj.eq.nct) then
363 write (iout,*) 'jj=nct'
364 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
365 & iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12)
373 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
374 & iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12)
376 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
377 & iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12)
388 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,
389 & iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12)
394 ind_scint=int_scint+nct-i
398 ind_scint_old=ind_scint
408 write (iout,*) 'Processor',MyID,' Group',MyGroup
409 write (iout,*) 'iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e
413 write (iout,'(a)') 'Interaction array:'
415 write (iout,'(i3,2(2x,2i3))')
416 & i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i))
421 C Now partition the electrostatic-interaction array
423 nele_int_tot=(npept-ispp)*(npept-ispp+1)/2
424 call int_bounds(nele_int_tot,my_ele_inds,my_ele_inde)
426 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
427 & ' nele_int_tot',nele_int_tot,' my_ele_inds=',my_ele_inds,
428 & ' my_ele_inde',my_ele_inde
435 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,
436 & iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13)
448 write (iout,'(a)') 'Electrostatic interaction array:'
450 write (iout,'(i3,2(2x,2i3))') i,ielstart(i),ielend(i)
455 C Partition the SC-p interaction array
457 nscp_int_tot=(npept-iscp+1)*(npept-iscp+1)
458 call int_bounds(nscp_int_tot,my_scp_inds,my_scp_inde)
460 & write (iout,*) 'Processor',MyID,' MyRank',MyRank,
461 & ' nscp_int_tot',nscp_int_tot,' my_scp_inds=',my_scp_inds,
462 & ' my_scp_inde',my_scp_inde
468 if (i.lt.nnt+iscp) then
469 cd write (iout,*) 'i.le.nnt+iscp'
470 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
471 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),
473 else if (i.gt.nct-iscp) then
474 cd write (iout,*) 'i.gt.nct-iscp'
475 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
476 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
479 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
480 & iatscp_s,iatscp_e,nnt,i-iscp,nscp_gr(i),iscpstart(i,1),
483 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,
484 & iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),
493 if (i.lt.nnt+iscp) then
495 iscpstart(i,1)=i+iscp
497 elseif (i.gt.nct-iscp) then
505 iscpstart(i,2)=i+iscp
511 write (iout,'(a)') 'SC-p interaction array:'
512 do i=iatscp_s,iatscp_e
513 write (iout,'(i3,2(2x,2i3))')
514 & i,(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
517 C Partition local interactions
519 call int_bounds(nres-2,loc_start,loc_end)
520 loc_start=loc_start+1
522 call int_bounds(nres-2,ithet_start,ithet_end)
523 ithet_start=ithet_start+2
524 ithet_end=ithet_end+2
525 call int_bounds(nct-nnt-2,iphi_start,iphi_end)
526 iphi_start=iphi_start+nnt+2
527 iphi_end=iphi_end+nnt+2
528 call int_bounds(nres-3,itau_start,itau_end)
529 itau_start=itau_start+3
531 call int_bounds(nsaxs,isaxs_start,isaxs_end)
533 write (iout,*) 'Processor:',MyID,
534 & ' loc_start',loc_start,' loc_end',loc_end,
535 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
536 & ' iphi_start',iphi_start,' iphi_end',iphi_end
537 write (*,*) 'Processor:',MyID,
538 & ' loc_start',loc_start,' loc_end',loc_end,
539 & ' ithet_start',ithet_start,' ithet_end',ithet_end,
540 & ' iphi_start',iphi_start,' iphi_end',iphi_end
542 if (fgprocs.gt.1 .and. MyID.eq.BossID) then
543 write(iout,'(i10,a,i10,a,i10,a/a,i3,a)') n_sc_int_tot,' SC-SC ',
544 & nele_int_tot,' electrostatic and ',nscp_int_tot,
545 & ' SC-p interactions','were distributed among',fgprocs,
546 & ' fine-grain processors.'
562 c---------------------------------------------------------------------------
563 subroutine int_partition(int_index,lower_index,upper_index,atom,
564 & at_start,at_end,first_atom,last_atom,int_gr,jat_start,jat_end,*)
565 implicit real*8 (a-h,o-z)
567 include 'COMMON.IOUNITS'
568 integer int_index,lower_index,upper_index,atom,at_start,at_end,
569 & first_atom,last_atom,int_gr,jat_start,jat_end
572 if (lprn) write (iout,*) 'int_index=',int_index
573 int_index_old=int_index
574 int_index=int_index+last_atom-first_atom+1
576 & write (iout,*) 'int_index=',int_index,
577 & ' int_index_old',int_index_old,
578 & ' lower_index=',lower_index,
579 & ' upper_index=',upper_index,
580 & ' atom=',atom,' first_atom=',first_atom,
581 & ' last_atom=',last_atom
582 if (int_index.ge.lower_index) then
584 if (at_start.eq.0) then
586 jat_start=first_atom-1+lower_index-int_index_old
590 if (lprn) write (iout,*) 'jat_start',jat_start
591 if (int_index.ge.upper_index) then
593 jat_end=first_atom-1+upper_index-int_index_old
598 if (lprn) write (iout,*) 'jat_end',jat_end
602 c------------------------------------------------------------------------------
603 subroutine hpb_partition
604 implicit real*8 (a-h,o-z)
606 include 'COMMON.SBRIDGE'
607 include 'COMMON.IOUNITS'
609 include 'COMMON.INFO'
610 call int_bounds(nhpb,link_start,link_end)
615 cd write (iout,*) 'Processor',MyID,' MyRank',MyRank,
616 cd & ' nhpb',nhpb,' link_start=',link_start,
617 cd & ' link_end',link_end
620 c------------------------------------------------------------------------------
621 subroutine homology_partition
622 implicit real*8 (a-h,o-z)
624 include 'DIMENSIONS.ZSCOPT'
625 include 'DIMENSIONS.FREE'
629 include 'COMMON.SBRIDGE'
630 include 'COMMON.IOUNITS'
631 c include 'COMMON.SETUP'
632 include 'COMMON.CONTROL'
633 include 'COMMON.CHAIN'
634 include 'COMMON.INTERACT'
635 include 'COMMON.HOMRESTR'
636 write(iout,*)"homology_partition: lim_odl=",lim_odl,
639 call int_bounds(lim_odl,link_start_homo,link_end_homo)
640 call int_bounds(lim_dih,idihconstr_start_homo,
641 & idihconstr_end_homo)
642 idihconstr_start_homo=idihconstr_start_homo+nnt-1+3
643 idihconstr_end_homo=idihconstr_end_homo+nnt-1+3
644 if (me.eq.king .or. .not. out1file)
645 & write (iout,*) 'Processor',fg_rank,' CG group',kolor,
646 & ' absolute rank',MyRank,
647 & ' lim_odl',lim_odl,' link_start=',link_start_homo,
648 & ' link_end',link_end_homo,' lim_dih',lim_dih,
649 & ' idihconstr_start_homo',idihconstr_start_homo,
650 & ' idihconstr_end_homo',idihconstr_end_homo
653 link_end_homo=lim_odl
654 idihconstr_start_homo=nnt+3
655 idihconstr_end_homo=lim_dih+nnt-1+3
657 & ' lim_odl',lim_odl,' link_start=',link_start_homo,
658 & ' link_end',link_end_homo,' lim_dih',lim_dih,
659 & ' idihconstr_start_homo',idihconstr_start_homo,
660 & ' idihconstr_end_homo',idihconstr_end_homo