X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2Fsrc-HCD-5D%2Fchain_symmetry.F;h=d10c33f65607cdd02afb2bc9635e1155979e4d5d;hb=43dfdc33f5b338546258b5a882326f97a76b5bd4;hp=1406d1d20f84e514ac65e88550481c5d1822277d;hpb=48ae9e01d2dd6571fa2cca6c704dc04f86e5fd7b;p=unres.git diff --git a/source/unres/src-HCD-5D/chain_symmetry.F b/source/unres/src-HCD-5D/chain_symmetry.F index 1406d1d..d10c33f 100644 --- a/source/unres/src-HCD-5D/chain_symmetry.F +++ b/source/unres/src-HCD-5D/chain_symmetry.F @@ -1,5 +1,6 @@ subroutine chain_symmetry(nchain,nres,itype,chain_border, - & chain_length,npermchain,tabpermchain) + & chain_length,npermchain,tabpermchain,nchain_group,nequiv, + & iequiv,chaingroup) c c Determine chain symmetry. nperm is the number of permutations and c tabperchain contains the allowed permutations of the chains. @@ -7,17 +8,22 @@ c implicit none include "DIMENSIONS" include "COMMON.IOUNITS" + include "COMMON.CONTROL" integer nchain,nres,itype(nres),chain_border(2,maxchain), & chain_length(nchain),itemp(maxchain), & npermchain,tabpermchain(maxchain,maxperm), & tabperm(maxchain,maxperm),mapchain(maxchain), - & iequiv(maxchain,maxres),iflag(maxres) + & chaingroup(maxchain),iequiv(maxchain,maxres),iflag(maxres) integer i,j,k,l,ii,nchain_group,nequiv(maxchain),iieq, & nperm,npermc,ind + logical lprn /.false./ if (nchain.eq.1) then npermchain=1 tabpermchain(1,1)=1 c print*,"npermchain",npermchain," tabpermchain",tabpermchain(1,1) + nchain_group=1 + iequiv(1,1)=1 + chaingroup(1)=1 return endif c @@ -42,6 +48,7 @@ c nchain_group=nchain_group+1 iieq=1 iequiv(iieq,nchain_group)=i + if (symetr.eq.1) then do j=i+1,nchain if (iflag(j).gt.0.or.chain_length(i).ne.chain_length(j)) cycle c k=0 @@ -57,6 +64,7 @@ c k=k+1 iieq=iieq+1 iequiv(iieq,nchain_group)=j enddo + endif nequiv(nchain_group)=iieq enddo write(iout,*) "Number of equivalent chain groups:",nchain_group @@ -70,12 +78,24 @@ c k=k+1 do j=1,nequiv(i) ind=ind+1 mapchain(ind)=iequiv(j,i) + chaingroup(ind)=i enddo enddo write (iout,*) "mapchain" do i=1,nchain write (iout,*) i,mapchain(i) enddo + write (iout,*) "chaingroup" + do i=1,nchain + write (iout,*) i,chaingroup(i) + enddo + if (npermut.eq.0) then + npermchain=1 + do i=1,nchain + tabpermchain(i,1)=i + enddo + return + endif ii=0 do i=1,nchain_group call permut(nequiv(i),nperm,tabperm) @@ -114,10 +134,12 @@ c k=k+1 enddo enddo write(iout,*) "Number of chain permutations",npermchain + if (lprn) then write(iout,*) "Permutations" do i=1,npermchain write(iout,'(20i4)') (tabpermchain(j,i),j=1,nchain) enddo + endif return end c---------------------------------------------------------------------