X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2Fcontrol.F90;h=a45ba2998ae79646143a5c6332dec8e56e0b9e89;hb=bbbdc8e18680625d3004f414aec255e9ca7b7353;hp=9b5f441cdf16f210dfb8671ee166c46639db7e95;hpb=2792b8ba89a535de351da0c8ef2f2fb1c491f42e;p=unres4.git diff --git a/source/unres/control.F90 b/source/unres/control.F90 index 9b5f441..a45ba29 100644 --- a/source/unres/control.F90 +++ b/source/unres/control.F90 @@ -229,6 +229,16 @@ iweight=31 izsc=32 #endif + ibond_nucl=126 + ithep_nucl=127 + irotam_nucl=128 + itorp_nucl= 129 + itordp_nucl= 130 +! ielep_nucl= 131 + isidep_nucl=132 + + + iliptranpar=60 itube=61 #if defined(WHAM_RUN) || defined(CLUSTER) @@ -477,7 +487,7 @@ logical :: scheck,lprint,flag !el local variables - integer :: ind_scint=0,ind_scint_old,ii,jj,i,j,iint + integer :: ind_scint=0,ind_scint_old,ii,jj,i,j,iint,itmp #ifdef MPI integer :: my_sc_int(0:nfgtasks-1),my_ele_int(0:nfgtasks-1) @@ -490,7 +500,7 @@ ind_scpint_old,nsumgrad,nlen,ngrad_start,ngrad_end,& ierror,k,ierr,iaux,ncheck_to,ncheck_from,ind_typ,& ichunk,int_index_old - integer,dimension(5) :: nct_molec + integer,dimension(5) :: nct_molec,nnt_molec !el allocate(itask_cont_from(0:nfgtasks-1)) !(0:max_fg_procs-1) !el allocate(itask_cont_to(0:nfgtasks-1)) !(0:max_fg_procs-1) @@ -502,10 +512,33 @@ itask_cont_to(i)=fg_rank enddo lprint=energy_dec + itmp=0 + do i=1,5 + if (nres_molec(i).eq.0) cycle + itmp=itmp+nres_molec(i) + if (itype(itmp,i).eq.ntyp1_molec(i)) then + nct_molec(i)=itmp-1 + else + nct_molec(i)=itmp + endif + enddo +! nct_molec(1)=nres_molec(1)-1 + itmp=0 + do i=2,5 + itmp=itmp+nres_molec(i-1) + if (itype(itmp+1,i).eq.ntyp1_molec(i)) then + nnt_molec(i)=itmp+2 + else + nnt_molec(i)=itmp+1 + endif + enddo + print *,"nres_molec",nres_molec(:) + print *,"nnt_molec",nnt_molec(:) + print *,"nct_molec",nct_molec(:) ! lprint=.true. if (lprint) & write (iout,*)'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct - n_sc_int_tot=(nct-nnt+1)*(nct-nnt)/2-nss + n_sc_int_tot=(nct_molec(1)-nnt+1)*(nct_molec(1)-nnt)/2-nss call int_bounds(n_sc_int_tot,my_sc_inds,my_sc_inde) !write (iout,*) 'INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct if (lprint) & @@ -533,6 +566,7 @@ allocate(itask_cont_to_all(0:nfgtasks-1,0:nfgtasks-1)) !el---------- ! lprint=.false. + print *,"NCT",nct_molec(1),nct do i=1,nres !el !maxres nint_gr(i)=0 nscp_gr(i)=0 @@ -549,7 +583,9 @@ ind_scint_old=0 !d write (iout,*) 'ns=',ns,' nss=',nss,' ihpb,jhpb', !d & (ihpb(i),jhpb(i),i=1,nss) - do i=nnt,nct-1 +! print *,nnt,nct_molec(1) + do i=nnt,nct_molec(1)-1 +! print*, "inloop",i scheck=.false. if (dyn_ss) goto 10 do ii=1,nss @@ -560,27 +596,28 @@ endif enddo 10 continue +! print *,'i=',i,' scheck=',scheck,' jj=',jj !d write (iout,*) 'i=',i,' scheck=',scheck,' jj=',jj if (scheck) then if (jj.eq.i+1) then #ifdef MPI ! write (iout,*) 'jj=i+1' call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,& - iatsc_s,iatsc_e,i+2,nct,nint_gr(i),istart(i,1),iend(i,1),*12) + iatsc_s,iatsc_e,i+2,nct_molec(1),nint_gr(i),istart(i,1),iend(i,1),*12) #else nint_gr(i)=1 istart(i,1)=i+2 iend(i,1)=nct #endif - else if (jj.eq.nct) then + else if (jj.eq.nct_molec(1)) then #ifdef MPI ! write (iout,*) 'jj=nct' call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,& - iatsc_s,iatsc_e,i+1,nct-1,nint_gr(i),istart(i,1),iend(i,1),*12) + iatsc_s,iatsc_e,i+1,nct_molec(1)-1,nint_gr(i),istart(i,1),iend(i,1),*12) #else nint_gr(i)=1 istart(i,1)=i+1 - iend(i,1)=nct-1 + iend(i,1)=nct_molecule(1)-1 #endif else #ifdef MPI @@ -588,24 +625,29 @@ iatsc_s,iatsc_e,i+1,jj-1,nint_gr(i),istart(i,1),iend(i,1),*12) ii=nint_gr(i)+1 call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,& - iatsc_s,iatsc_e,jj+1,nct,nint_gr(i),istart(i,ii),iend(i,ii),*12) + iatsc_s,iatsc_e,jj+1,nct_molec(1),nint_gr(i),istart(i,ii),iend(i,ii),*12) + #else nint_gr(i)=2 istart(i,1)=i+1 iend(i,1)=jj-1 istart(i,2)=jj+1 - iend(i,2)=nct + iend(i,2)=nct_molec(1) #endif endif else #ifdef MPI +! print *,"i for EVDW",iatsc_s,iatsc_e,istart(i,1),iend(i,1),& +! i+1,nct_molec(1),nint_gr(i),ind_scint,my_sc_inds,my_sc_inde,i call int_partition(ind_scint,my_sc_inds,my_sc_inde,i,& - iatsc_s,iatsc_e,i+1,nct,nint_gr(i),istart(i,1),iend(i,1),*12) + iatsc_s,iatsc_e,i+1,nct_molec(1),nint_gr(i), & + istart(i,1),iend(i,1),*12) +! print *,"i for EVDW",iatsc_s,iatsc_e,istart(i,1),iend(i,1) #else nint_gr(i)=1 istart(i,1)=i+1 - iend(i,1)=nct - ind_scint=ind_scint+nct-i + iend(i,1)=nct_molec(1) + ind_scint=ind_scint+nct_molec(1)-i #endif endif #ifdef MPI @@ -613,6 +655,8 @@ #endif enddo 12 continue +! print *,"i for EVDW",iatsc_s,iatsc_e,istart(i,1),iend(i,1) + #ifndef MPI iatsc_s=nnt iatsc_e=nct-1 @@ -622,6 +666,7 @@ if (lprint) write (*,*) 'Processor',fg_rank,' CG Group',kolor,& ' absolute rank',myrank,' iatsc_s=',iatsc_s,' iatsc_e=',iatsc_e #endif +! lprint=.true. if (lprint) then write (iout,'(a)') 'Interaction array:' do i=iatsc_s,iatsc_e @@ -629,6 +674,7 @@ i,(istart(i,iint),iend(i,iint),iint=1,nint_gr(i)) enddo endif +! lprint=.false. ispp=4 !?? wham ispp=2 #ifdef MPI ! Now partition the electrostatic-interaction array @@ -648,16 +694,16 @@ iatel_e=0 ind_eleint=0 ind_eleint_old=0 - if (itype(nres_molec(1),1).eq.ntyp_molec(1)) then - nct_molec(1)=nres_molec(1)-1 - else - nct_molec(1)=nres_molec(1) - endif - +! if (itype(nres_molec(1),1).eq.ntyp1_molec(1)) then +! nct_molec(1)=nres_molec(1)-1 +! else +! nct_molec(1)=nres_molec(1) +! endif +! print *,"nct",nct,nct_molec(1),itype(nres_molec(1),1),ntyp_molec(1) do i=nnt,nct_molec(1)-3 ijunk=0 call int_partition(ind_eleint,my_ele_inds,my_ele_inde,i,& - iatel_s,iatel_e,i+ispp,nct-1,ijunk,ielstart(i),ielend(i),*13) + iatel_s,iatel_e,i+ispp,nct_molec(1)-1,ijunk,ielstart(i),ielend(i),*13) enddo ! i 13 continue if (iatel_s.eq.0) iatel_s=1 @@ -674,7 +720,7 @@ ijunk=0 call int_partition(ind_eleint_vdw,my_ele_inds_vdw,& my_ele_inde_vdw,i,& - iatel_s_vdw,iatel_e_vdw,i+2,nct-1,ijunk,ielstart_vdw(i),& + iatel_s_vdw,iatel_e_vdw,i+2,nct_molec(1)-1,ijunk,ielstart_vdw(i),& ielend_vdw(i),*15) ! write (iout,*) i," ielstart_vdw",ielstart_vdw(i), ! & " ielend_vdw",ielend_vdw(i) @@ -721,7 +767,7 @@ if (i.lt.nnt+iscp) then !d write (iout,*) 'i.le.nnt+iscp' call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,& - iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,1),& + iatscp_s,iatscp_e,i+iscp,nct_molec(1),nscp_gr(i),iscpstart(i,1),& iscpend(i,1),*14) else if (i.gt.nct-iscp) then !d write (iout,*) 'i.gt.nct-iscp' @@ -734,7 +780,7 @@ iscpend(i,1),*14) ii=nscp_gr(i)+1 call int_partition(ind_scpint,my_scp_inds,my_scp_inde,i,& - iatscp_s,iatscp_e,i+iscp,nct,nscp_gr(i),iscpstart(i,ii),& + iatscp_s,iatscp_e,i+iscp,nct_molec(1),nscp_gr(i),iscpstart(i,ii),& iscpend(i,ii),*14) endif enddo ! i @@ -776,6 +822,9 @@ call int_bounds(nres_molec(1)-2,ithet_start,ithet_end) ithet_start=ithet_start+2 ithet_end=ithet_end+2 + call int_bounds(nres_molec(2)-2,ithet_nucl_start,ithet_nucl_end) + ithet_nucl_start=ithet_nucl_start+2+nres_molec(1) + ithet_nucl_end=ithet_nucl_end+2+nres_molec(1) call int_bounds(nct_molec(1)-nnt-2,iturn3_start,iturn3_end) iturn3_start=iturn3_start+nnt iphi_start=iturn3_start+2 @@ -796,13 +845,25 @@ iphid_end=iturn4_end+2 iturn4_start=iturn4_start-1 iturn4_end=iturn4_end-1 - print *,"TUTUTU",nres_molec(1),nres - call int_bounds(nres-2,ibond_start,ibond_end) +! print *,"TUTUTU",nres_molec(1),nres + call int_bounds(nres_molec(1)-2,ibond_start,ibond_end) ibond_start=ibond_start+1 ibond_end=ibond_end+1 +! print *,ibond_start,ibond_end call int_bounds(nct_molec(1)-nnt,ibondp_start,ibondp_end) ibondp_start=ibondp_start+nnt ibondp_end=ibondp_end+nnt + call int_bounds(nres_molec(2)-2,ibond_nucl_start,ibond_nucl_end) + ibond_nucl_start=ibond_nucl_start+nnt_molec(2)-1 + ibond_nucl_end=ibond_nucl_end+nnt_molec(2)-1 + print *,"NUCLibond",ibond_nucl_start,ibond_nucl_end + print *, "before devision",nnt_molec(2),nct_molec(2)-nnt_molec(2) + call int_bounds(nct_molec(2)-nnt_molec(2),ibondp_nucl_start,ibondp_nucl_end) + ibondp_nucl_start=ibondp_nucl_start+nnt_molec(2) + ibondp_nucl_end=ibondp_nucl_end+nnt_molec(2) + print *,"NUCLibond2",ibondp_nucl_start,ibondp_nucl_end + + call int_bounds1(nres_molec(1)-1,ivec_start,ivec_end) ! print *,"Processor",myrank,fg_rank,fg_rank1, ! & " ivec_start",ivec_start," ivec_end",ivec_end @@ -1323,6 +1384,8 @@ loc_end=nres_molec(1)-1 ithet_start=3 ithet_end=nres_molec(1) + ithet_nucl_start=3+nres_molec(1) + ithet_nucl_end=nres_molec(1)+nres_molec(2) iturn3_start=nnt iturn3_end=nct_molec(1)-3 iturn4_start=nnt @@ -1341,8 +1404,12 @@ itau_end=nres_molec(1) ibond_start=2 ibond_end=nres_molec(1)-1 + ibond_nucl_start=2+nres_molec(1) + ibond_nucl_end=nres_molec(2)-1 ibondp_start=nnt ibondp_end=nct_molec(1)-1 + ibondp_nucl_start=nnt_molec(2) + ibondp_nucl_end=nct_molec(2) ivec_start=1 ivec_end=nres_molec(1)-1 iset_start=3 @@ -1746,7 +1813,7 @@ else if (molecule.eq.2) then do i=1,ntyp1_molec(molecule) print *,nam(1:1),restyp(i,molecule)(1:1) - if (nam(1:1).eq.restyp(i,molecule)(1:1)) then + if (nam(2:2).eq.restyp(i,molecule)(1:1)) then rescode=i return endif @@ -1759,8 +1826,8 @@ stop else if (molecule.eq.5) then do i=1,ntyp1_molec(molecule) - print *,i,restyp(i,molecule) - if (ucase(nam).eq.restyp(i,molecule)) then + print *,i,restyp(i,molecule)(1:2) + if (ucase(nam(1:2)).eq.restyp(i,molecule)(1:2)) then rescode=i return endif