X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2Fcontrol.F90;h=599a1080d693f269e5bb7b31d668788e2fb05a42;hb=refs%2Fheads%2FUCGM;hp=1952c9a2714dfde2bd96d58d56a57e5fe339d333;hpb=94d31d7bcffc5412d9a88a0aef46b68349b60cf3;p=unres4.git diff --git a/source/unres/control.F90 b/source/unres/control.F90 index 1952c9a..599a108 100644 --- a/source/unres/control.F90 +++ b/source/unres/control.F90 @@ -215,6 +215,7 @@ icsa_in=40 !rc for ifc error 118 icsa_pdb=42 + irotam_end=43 #endif iscpp=25 icbase=16 @@ -244,10 +245,18 @@ isidep_peppho=144 iliptranpar=60 + itube=61 +! LIPID MARTINI + ilipbond=301 + ilipnonbond=302 + imartprot=303 ! this parameters are between protein and martini form of lipid ! IONS iion=401 iionnucl=402 + iiontran=403 ! this is parameter file for transition metals + iwaterwater=404 + iwatersc=405 #if defined(WHAM_RUN) || defined(CLUSTER) ! ! setting the mpi variables for WHAM @@ -392,8 +401,8 @@ ! !c maxfun=5000 !c maxit=2000 - maxfun=500 - maxit=200 + maxfun=1000 + maxit=1000 tolf=1.0D-2 rtolf=5.0D-4 ! @@ -509,12 +518,13 @@ nscp_int_tot,my_scp_inds,my_scp_inde,ind_scpint,& ind_scpint_old,nsumgrad,nlen,ngrad_start,ngrad_end,& ierror,k,ierr,iaux,ncheck_to,ncheck_from,ind_typ,& - ichunk,int_index_old + ichunk,int_index_old,ibra integer :: nele_int_tot_nucl,my_ele_inds_nucl,my_ele_inde_nucl,& ind_eleint_old_nucl,ind_eleint_nucl,nele_int_tot_vdw_nucl,& my_ele_inds_vdw_nucl,my_ele_inde_vdw_nucl,ind_eleint_vdw_nucl,& ind_eleint_vdw_old_nucl,nscp_int_tot_nucl,my_scp_inds_nucl,& my_scp_inde_nucl,ind_scpint_nucl,ind_scpint_old_nucl,impishi + integer(kind=1),dimension(:,:),allocatable :: remmat ! 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) @@ -522,6 +532,7 @@ !... Determine the numbers of start and end SC-SC interaction !... to deal with by current processor. !write (iout,*) '******INIT_INT_TABLE nres=',nres,' nnt=',nnt,' nct=',nct + print *,"in spliting contacts" do i=0,nfgtasks-1 itask_cont_from(i)=fg_rank itask_cont_to(i)=fg_rank @@ -529,6 +540,7 @@ lprint=energy_dec itmp=0 do i=1,5 + print *,i,nres_molec(i) if (nres_molec(i).eq.0) cycle itmp=itmp+nres_molec(i) if (itype(itmp,i).eq.ntyp1_molec(i)) then @@ -547,6 +559,7 @@ nnt_molec(i)=itmp+1 endif enddo +! if (.not.allocated(nres_molec)) print *,"WHATS WRONG" print *,"nres_molec",nres_molec(:) print *,"nnt_molec",nnt_molec(:) print *,"nct_molec",nct_molec(:) @@ -565,6 +578,7 @@ iatsc_s=0 iatsc_e=0 #endif + if(.not.allocated(ielstart_all)) then !el common /przechowalnia/ allocate(iturn3_start_all(0:nfgtasks)) allocate(iturn3_end_all(0:nfgtasks)) @@ -580,6 +594,7 @@ allocate(itask_cont_from_all(0:nfgtasks-1,0:nfgtasks-1)) allocate(itask_cont_to_all(0:nfgtasks-1,0:nfgtasks-1)) !el---------- + endif ! lprint=.false. print *,"NCT",nct_molec(1),nct do i=1,nres !el !maxres @@ -992,6 +1007,7 @@ iturn3_end=iturn3_end+nnt iphi_end=iturn3_end+2 iturn3_start=iturn3_start-1 + if (iturn3_start.eq.0) iturn3_start=1 iturn3_end=iturn3_end-1 call int_bounds(nct_molec(2)-nnt_molec(2)-2,iphi_nucl_start,iphi_nucl_end) iphi_nucl_start=iphi_nucl_start+nnt_molec(2)+2 @@ -1010,6 +1026,7 @@ iphid_end=iturn4_end+2 iturn4_start=iturn4_start-1 iturn4_end=iturn4_end-1 + if (iturn4_start.eq.0) iturn4_start=1 ! print *,"TUTUTU",nres_molec(1),nres call int_bounds(nres_molec(1)-2,ibond_start,ibond_end) ibond_start=ibond_start+1 @@ -1024,9 +1041,9 @@ print *,"NUCLibond",ibond_nucl_start,ibond_nucl_end if (nres_molec(2).ne.0) then 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) + call int_bounds(nres_molec(2)-1,ibondp_nucl_start,ibondp_nucl_end) + ibondp_nucl_start=ibondp_nucl_start+nnt_molec(2)-1 + ibondp_nucl_end=ibondp_nucl_end+nnt_molec(2)-1 else ibondp_nucl_start=1 ibondp_nucl_end=0 @@ -1058,7 +1075,74 @@ call int_bounds & (ntheta_constr,ithetaconstr_start,ithetaconstr_end) endif +! HERE MAKING LISTS FOR MARTINI + itmp=0 + do i=1,3 + itmp=itmp+nres_molec(i) + enddo +!First bonding +! call int_bounds(nres_molec(4)-1,ilipbond_start,ilipbond_end) + ilipbond_start=1+itmp + ilipbond_end=nres_molec(4)-1+itmp +!angles + call int_bounds(nres_molec(4)-1,ilipbond_start_tub,ilipbond_end_tub) + ilipbond_start_tub=1+itmp + ilipbond_end_tub=nres_molec(4)-1+itmp +! call int_bounds(nres_molec(4)-2,ilipang_start,ilipang_end) + ilipang_start=2+itmp + ilipang_end=itmp+nres_molec(4)-1 +! create LJ LIST MAXIMUM +! Eliminate branching from list + if(.not.allocated(remmat))& + allocate(remmat(itmp+1:nres_molec(4)+itmp,itmp+1:nres_molec(4)+itmp)) + remmat=0 + do i=1+itmp,nres_molec(4)-1+itmp + if (itype(i,4).eq.12) ibra=i + if (itype(i,4).eq.ntyp1_molec(4)-1) then +! remmat(ibra-1,i+1)=1 + remmat(ibra,i+1)=1 +! remmat(ibra+1,i+1)=1 + endif + enddo + maxljliplist=0 + if (.not.allocated(mlipljlisti)) then + allocate (mlipljlisti(nres_molec(4)*nres_molec(4)/2)) + allocate (mlipljlistj(nres_molec(4)*nres_molec(4)/2)) + endif + do i=1+itmp,nres_molec(4)-1+itmp + do j=i+2,nres_molec(4)+itmp + if ((itype(i,4).le.ntyp_molec(4)).and.(itype(j,4).le.ntyp_molec(4))& + .and.(remmat(i,j).eq.0)) then + maxljliplist=maxljliplist+1 + mlipljlisti(maxljliplist)=i + mlipljlistj(maxljliplist)=j + if (energy_dec) print *,i,j,remmat(i,j),"lj lip list" + endif + enddo + enddo +! split the bound of the list + call int_bounds(maxljliplist,iliplj_start,iliplj_end) + iliplj_start=iliplj_start + iliplj_end=iliplj_end +! now the electrostatic list + maxelecliplist=0 + if (.not.allocated(mlipeleclisti)) then + allocate (mlipeleclisti(nres_molec(4)*nres_molec(4)/2)) + allocate (mlipeleclistj(nres_molec(4)*nres_molec(4)/2)) + endif + do i=1+itmp,nres_molec(4)-1+itmp + do j=i+2,nres_molec(4)+itmp + if ((itype(i,4).le.4).and.(itype(j,4).le.4)) then + maxelecliplist=maxelecliplist+1 + mlipeleclisti(maxelecliplist)=i + mlipeleclistj(maxelecliplist)=j + endif + enddo + enddo + call int_bounds(maxelecliplist,ilip_elec_start,ilipelec_end) + ilip_elec_start=ilip_elec_start + ilipelec_end=ilipelec_end ! nsumgrad=(nres-nnt)*(nres-nnt+1)/2 ! nlen=nres-nnt+1 nsumgrad=(nres-nnt)*(nres-nnt+1)/2 @@ -1081,6 +1165,17 @@ jgrad_start(i)=i+1 jgrad_end(i)=nres enddo +! THIS SHOULD BE FIXED + itmp=0 + do i=1,4 + itmp=itmp+nres_molec(i) + enddo + call int_bounds(nres_molec(5),icatb_start,icatb_end) + icatb_start=icatb_start+itmp + icatb_end=icatb_end+itmp + + + if (lprint) then write (*,*) 'Processor:',fg_rank,' CG group',kolor,& ' absolute rank',myrank,& @@ -1169,6 +1264,10 @@ write (iout,*) "iturn4_end_all",& (iturn4_end_all(i),i=0,nfgtasks-1) write (iout,*) "The ielstart_all array" +! do i=0,nfgtasks-1 +! if (iturn3_start_all(i).le.0) iturn3_start_all(i)=1 +! if (iturn4_start_all(i).le.0) iturn4_start_all(i)=1 +! enddo do i=nnt,nct write (iout,'(20i4)') i,(ielstart_all(i,j),j=0,nfgtasks-1) enddo @@ -1220,6 +1319,7 @@ ! write (iout,*) "Loop backward iatel_e-1",iatel_e-1, ! & " iatel_e",iatel_e ! call flush(iout) +#ifndef NEWCORR nat_sent=0 do i=iatel_s,iatel_e ! write (iout,*) "i",i," ielstart",ielstart(i), @@ -1235,6 +1335,7 @@ iat_sent(nat_sent)=i endif enddo +#endif if (lprint) then write (iout,*)"After longrange ntask_cont_from",ntask_cont_from,& " ntask_cont_to",ntask_cont_to @@ -1243,12 +1344,14 @@ write (iout,*) "itask_cont_to",& (itask_cont_to(i),i=1,ntask_cont_to) call flush(iout) +#ifndef NEWCORR write (iout,*) "iint_sent" do i=1,nat_sent ii=iat_sent(i) write (iout,'(20i4)') ii,(j,(iint_sent(k,j,i),k=1,4),& j=ielstart(ii),ielend(ii)) enddo +#endif write (iout,*) "iturn3_sent iturn3_start",iturn3_start,& " iturn3_end",iturn3_end write (iout,'(20i4)') (i,(iturn3_sent(j,i),j=1,4),& @@ -1342,24 +1445,31 @@ itask_cont_from(0),CONT_FROM_GROUP,IERR) call MPI_Group_incl(fg_group,ntask_cont_to+1,itask_cont_to(0),& CONT_TO_GROUP,IERR) +#ifndef NEWCORR do i=1,nat_sent ii=iat_sent(i) iaux=4*(ielend(ii)-ielstart(ii)+1) + if (iaux.lt.0) iaux=0 call MPI_Group_translate_ranks(fg_group,iaux,& iint_sent(1,ielstart(ii),i),CONT_TO_GROUP,& iint_sent_local(1,ielstart(ii),i),IERR ) ! write (iout,*) "Ranks translated i=",i ! call flush(iout) enddo +#endif iaux=4*(iturn3_end-iturn3_start+1) + if (iaux.lt.0) iaux=0 call MPI_Group_translate_ranks(fg_group,iaux,& iturn3_sent(1,iturn3_start),CONT_TO_GROUP,& iturn3_sent_local(1,iturn3_start),IERR) iaux=4*(iturn4_end-iturn4_start+1) + if (iaux.lt.0) iaux=0 call MPI_Group_translate_ranks(fg_group,iaux,& iturn4_sent(1,iturn4_start),CONT_TO_GROUP,& iturn4_sent_local(1,iturn4_start),IERR) if (lprint) then +#ifndef NEWCORR + write (iout,*) "iint_sent_local" do i=1,nat_sent ii=iat_sent(i) @@ -1367,6 +1477,8 @@ j=ielstart(ii),ielend(ii)) call flush(iout) enddo +#endif + if (iturn3_end.gt.0) then write (iout,*) "iturn3_sent_local iturn3_start",iturn3_start,& " iturn3_end",iturn3_end write (iout,'(20i4)') (i,(iturn3_sent_local(j,i),j=1,4),& @@ -1377,6 +1489,7 @@ i=iturn4_start,iturn4_end) call flush(iout) endif + endif call MPI_Group_free(fg_group,ierr) call MPI_Group_free(cont_from_group,ierr) call MPI_Group_free(cont_to_group,ierr) @@ -1943,7 +2056,7 @@ #ifdef WHAM_RUN if (itype(i,1).ne.10) then #else - if (itype(i,1).ne.10 .and. itype(i,mnum).ne.ntyp1_molec(mnum) .and. mnum.ne.5) then + if (itype(i,1).ne.10 .and. itype(i,mnum).ne.ntyp1_molec(mnum) .and. mnum.lt.4) then #endif nside=nside+1 ialph(i,1)=nvar+nside @@ -2404,5 +2517,48 @@ end subroutine print_detailed_timing #endif !----------------------------------------------------------------------------- + subroutine homology_partition + implicit none +! include 'DIMENSIONS' +!#ifdef MPI +! include 'mpif.h' +!#endif +! include 'COMMON.SBRIDGE' +! include 'COMMON.IOUNITS' +! include 'COMMON.SETUP' +! include 'COMMON.CONTROL' +! include 'COMMON.INTERACT' +! include 'COMMON.HOMOLOGY' +!d write(iout,*)"homology_partition: lim_odl=",lim_odl, +!d & " lim_dih",lim_dih +#ifdef MPI + if (me.eq.king .or. .not. out1file) write (iout,*) "MPI" + call int_bounds(lim_odl,link_start_homo,link_end_homo) + call int_bounds(lim_dih,idihconstr_start_homo, & + idihconstr_end_homo) + idihconstr_start_homo=idihconstr_start_homo+nnt-1+3 + idihconstr_end_homo=idihconstr_end_homo+nnt-1+3 + if (me.eq.king .or. .not. out1file)& + write (iout,*) 'Processor',fg_rank,' CG group',kolor,& + ' absolute rank',MyRank,& + ' lim_odl',lim_odl,' link_start=',link_start_homo,& + ' link_end',link_end_homo,' lim_dih',lim_dih,& + ' idihconstr_start_homo',idihconstr_start_homo,& + ' idihconstr_end_homo',idihconstr_end_homo +#else + write (iout,*) "Not MPI" + link_start_homo=1 + link_end_homo=lim_odl + idihconstr_start_homo=nnt+3 + idihconstr_end_homo=lim_dih+nnt-1+3 + write (iout,*) & + ' lim_odl',lim_odl,' link_start=',link_start_homo, & + ' link_end',link_end_homo,' lim_dih',lim_dih,& + ' idihconstr_start_homo',idihconstr_start_homo,& + ' idihconstr_end_homo',idihconstr_end_homo +#endif + return + end subroutine homology_partition + !----------------------------------------------------------------------------- end module control