msg-byu / enumlib

Derivative structure enumeration library
MIT License
59 stars 34 forks source link

Fixed concentration enumeration not being written out. #8

Closed wsmorgan closed 9 years ago

wsmorgan commented 9 years ago

For the UNCLE code there is a conc_check to see if we have a finite concentration. When a concentration range is passed in the code still doesn't write output. Andrew and I discovered this some time ago and I'm posting about it now because there are functions that need testing that are only used when there is a fixed concentration of the elements. How do we go about fixing this?

glwhart commented 9 years ago

All you need to do, I think, is allow the code to hit the print routine when fixed concentration is set. I think it's commented out right now.

On Sat, Jun 13, 2015 at 11:17 AM, Wiley Morgan notifications@github.com wrote:

For the UNCLE code there is a conc_check to see if we have a finite concentration. When a concentration range is passed in the code still doesn't write output. Andrew and I discovered this some time ago and I'm posting about it now because there are functions that need testing that are only used when there is a fixed concentration of the elements. How do we go about fixing this?

— Reply to this email directly or view it on GitHub https://github.com/msg-byu/enumlib/issues/8.

Gus Hart http://msg.byu.edu

wsmorgan commented 9 years ago

There are actually 4 lines in the code that deal with fixed concentration enumeration that are commented out. They are:

            call generate_permutation_labelings_new(ivol, nD, rdRPList(iBlock)%perm, iRange(iC,:), fixed_cells)
            call generate_permutation_labelings(k,ivol,nD,rdRPList(iBlock)%perm,&
                lm,iRange(iC,:),labelFull,digitFull,lab_degen,fixed_cells)
            call generate_disjoint_permutation_labelings(k,ivol,nD&
                &,rdRPList(iBlock)%perm,lm,iRange(iC,:),labelFull,digitFull,2)
            call write_labelings(k,ivol,nD,label,digit,iBlock,rdHNF,SNF,L,fixOp,Tcnt,Scnt,HNFcnt&
                &,RPLindx,lm,equivalencies,hnf_degen,lab_degen,iRange(iC,:))

The first one is a routine that appears to be unfinished for the enum4 implementation, I intend to leave this one alone for now. The question is which of the next two lines is the one we want? I can and will make unit tests for both but we should fix this so that until enum4 is done we can actually do fixed concentration enumeration with the code. So do we use generate_permutation_labelings, generate_disjoint_permutation_labelings, or both?

wsmorgan commented 9 years ago

Turns out you need the call generate_permutation_labelings and write_labelings for it to work. The call generate_disjoint_permutation_labelings is a non-public routine in labeling_related.f90 that is also apparently redundant from what it says in it's summary tag.