-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Non-associative behavior for group action on KVec
#57
Comments
It seems I have previously wrestled with this: Lines 391 to 425 in b9f25a9
That reasoning appears careful and rigorous. But it is not - afaict - what I actually implemented in |
thchr
added a commit
that referenced
this issue
Aug 26, 2024
thchr
added a commit
that referenced
this issue
Oct 18, 2024
thchr
added a commit
that referenced
this issue
Oct 18, 2024
thchr
added a commit
that referenced
this issue
Jan 14, 2025
updates and new methods associated with BandGraphs work This merges work from the BandGraphs branch (bandpaths-data), that related directly to Crystalline. Mainly, this is involves a handful of new or revised features: - `remap_to_kstar`: obtain `lgirreps` at another k-point in the star of the original k-point (exported) - `conjugacy_relations`: obtain transformations between the settings of sub/supergroups (exported) - `can_intersect`: check whether two `AbstractVec` can intersect, for some values of their free parameters (not exported). New implementation is more robust than previous, e.g., allowing more generic kinds of intersections, and return more information about the intersection. There are small minor nits/improvements/fixes/extensions to existing functionality. ----- ## Old commits; kept for posterity * wip: crawl and parse k-space connectivity data * WIP: BandGraphs work * progress on BandGraphs; working as a separate module - graph plotting via extension system * fixes to BandGraphsGraphMakie extension * holdover updates to BandBraphs stuff * aggregate updates to BandGraphs implementation; mostly groundwork but some physics and preliminary results also * use a proper prime unicode character for BandRep sitesym irrep labels (to be consistent with `mulliken`) * fix bug in chinese postman single-vertex handling * nits * add `cosets` function for computing a set of coset representatives * fix a bug in `rotation_axis_3d` that could cause failures on certain axis orientations * add `conjugacy_relations` - returns the set of possible transformations between sub or supergraphs, exploring all possible paths through the conjugacy classes and sub/supergraph structure * add a note about testing `BandRep` site-symmetry group labels; should probably be an issue * fix doctest syntax * more fixes to broken doctest * add careful subgroup checks to the weyl identification scheme, to exploit subgroup relations - this does quite an involved set of checks to carefully understand how a given irrep may be subduced into irreps of a subgroup; the tricky thing is to keep in mind that the subduction might involve a basis change (of the k-point, the little group operations; it may even impact the irreps of nonsymmorphic cases) - eventually, much of this should be factored out into separate methods since it is not specific to Weyl points - also adds some graph construction to visualize the relationships between base * comment-nit * fix typo for Y `LGIrrep`s of plane group 7 - bad copy-paste typo in `build/setup_2d_littlegroup_irreps_nonzymmorph.jl` that meant we had never actually recorded the Y-irreps of plane group 7 (p2mg) - update the irrep data for plane groups to fix this - update our calculated `BandRepSet`s for plane group 7 as well - fortunately, this omission does not change what is inferred about the possible symmetry-detectable topology in plane group 7: e.g., there are still no fragile phases detectable after the correction. * bump version to v0.5.2 * minor consistency and clarity nits to code; non-functional changes * make the free parameter of Δ in plane group 12 "u" rather than "v" for consistency with other plane group irreps * fix `compose(::SymOperation, ::KVec)` (fixes #57) * fix small typo in `littlegroup` * add `cosets` function for computing a set of coset representatives * more fixes to broken doctest * allow `KVec` and `RVec` to feature basic use of multiplication signs before free variables - this is in order to parse formats from Bilbao more correctly in general * update crawled 3D ½k-space connectivity data: `connectionsd(-tr).jld2` and `subductionsd(-tr).jld2` - this fixes issues for space groups 143, 147, 149, 150, 156, 157, 162, 164, 168, 174, 175, 177, 183, 187, 189, 191 where the parsed `KVec` was previously wrong (because Bilbao included a multiplication `*` sign in their **k**-vector listings for these groups, which we didn't parse correctly; we do now, cf. 03a9e315304c44085d508f4ddbc06913d4cd3954). - additionally, it seems that Bilbao has been updated to include several (for some ~151 groups in TR-invariant cases, e.g.,) additional monodromy-related points in their k-connectivity listings of nonsymmorphic groups; we now included these as well. * merge `_can_intersect` and `is_compatible` to `is_compatible` and return info about _how_ they are compatible - also make a bit more general * fix `compose(::SymOperation, ::KVec)` (fixes #57) * correct parsing & ensure roundtrippability of `KVec` and `RVec` for fractions in free part * move `is_compatible` to `/src/compability.jl` and rename it `can_intersect` - also various improvements to generality and type-stability; can now be used whole-sale. * fix rollback from accidental overriding merge * add `IrrepCollection` type to improve treatment (e.g., `show`) of collections of `AbstractIrrep`s - also improve associated `show` methods * update README.md * add an in-place `realify!` method working on `AbstractDict`s to simplify "adding" time-reversal to a dict of `LGIrrep`s - export `realify!` as well * fix a typo-bug in arithmetic (`+` & `-`) between `AbstractVector`s and `AbstractVec`s * implement (unexported) `remap_lgirreps_to_point_in_kstar`, which gives the computes the set of `LGIrrep`s associated with a point in the star of an input set of `LGIrrep`s - TODO: tests and docstring; only used in BandGraphs atm * leftover: use `realify!` in a spot * aggregate commit to `BandGraphs` utility: myriad changes, fixes, improvements, and new functionality * fixes after merge - fixes a few real bugs from merge, but mainly avoids a set of pointless differences with master branch * nit to nit * use the new `SymmetryVector` from Crystalline instead of old `SymVector` from BandGraphs * drop vendored copy of `eulerian` (now in Graphs.jl) * add fast-path checks for subset-sum checks - speeds up `solve_subset_sum_variant` dramatically for most cases - also improve how `Model` is instantiated, to save time on this * improve type-stability of loading subduction tables in `__init__` & fix two issues with BCS band-paths data - we now load a list of corrections into the tabulated band-paths data (corrections stored in `src/subduction-table-corrections.jl`) * BIG chunk of updates - this commits a large number of updates to the BandGraphs code; many aspects have received corrections, very aggressive performance optimizations (e.g., work-arrays), as well as algorithmic improvements (e.g., checks of articulation point), and many changes to the types - we also now do a much more general job of splitting degeneracies: in particular, we now allow splitting of degeneracies connected to non-nondegenerate nonmaximal irreps; this required multiset permutations. - the main point of entry at the moment is in `test/scan-separable-irreps.jl` * a nit to Crystalline's `test/calc_bandreps.jl`: special casing no longer needed (#59 has been resolved earlier) * aggregate updates to BandGraphs - correctness fixes - improvements to structs, paving way to recursive permutation walk work and for photonic band connectivity work - ahead of time/commit changes in preparation for changes/additions to Crystalline * implement functionality necessary to analyze photonic band graphs with singular zero-frequency content - adds a weak dep on PhotonicBandConnectivity.jl * implement a recursive approach to searching the space of graph permutations - this exploits the fact that every (appropriate, with some structural notions) induced subgraph is separable only if the original graph is * remove all code associated with BandGraphs.jl; moving to separate repo * add doc strings to new functionality and set Crystalline version to 0.6.8 * improve documentation of conjugacy_relations; previously had bugged jldoctest
thchr
added a commit
that referenced
this issue
Jan 14, 2025
This merges work from the BandGraphs branch (bandpaths-data), that related directly to Crystalline. Mainly, this is involves a handful of new or revised features: - `remap_to_kstar`: obtain `lgirreps` at another k-point in the star of the original k-point (exported) - `conjugacy_relations`: obtain transformations between the settings of sub/supergroups (exported) - `can_intersect`: check whether two `AbstractVec` can intersect, for some values of their free parameters (not exported). New implementation is more robust than previous, e.g., allowing more generic kinds of intersections, and return more information about the intersection. There are small minor nits/improvements/fixes/extensions to existing functionality. ----- * wip: crawl and parse k-space connectivity data * WIP: BandGraphs work * progress on BandGraphs; working as a separate module - graph plotting via extension system * fixes to BandGraphsGraphMakie extension * holdover updates to BandBraphs stuff * aggregate updates to BandGraphs implementation; mostly groundwork but some physics and preliminary results also * use a proper prime unicode character for BandRep sitesym irrep labels (to be consistent with `mulliken`) * fix bug in chinese postman single-vertex handling * nits * add `cosets` function for computing a set of coset representatives * fix a bug in `rotation_axis_3d` that could cause failures on certain axis orientations * add `conjugacy_relations` - returns the set of possible transformations between sub or supergraphs, exploring all possible paths through the conjugacy classes and sub/supergraph structure * add a note about testing `BandRep` site-symmetry group labels; should probably be an issue * fix doctest syntax * more fixes to broken doctest * add careful subgroup checks to the weyl identification scheme, to exploit subgroup relations - this does quite an involved set of checks to carefully understand how a given irrep may be subduced into irreps of a subgroup; the tricky thing is to keep in mind that the subduction might involve a basis change (of the k-point, the little group operations; it may even impact the irreps of nonsymmorphic cases) - eventually, much of this should be factored out into separate methods since it is not specific to Weyl points - also adds some graph construction to visualize the relationships between base * comment-nit * fix typo for Y `LGIrrep`s of plane group 7 - bad copy-paste typo in `build/setup_2d_littlegroup_irreps_nonzymmorph.jl` that meant we had never actually recorded the Y-irreps of plane group 7 (p2mg) - update the irrep data for plane groups to fix this - update our calculated `BandRepSet`s for plane group 7 as well - fortunately, this omission does not change what is inferred about the possible symmetry-detectable topology in plane group 7: e.g., there are still no fragile phases detectable after the correction. * bump version to v0.5.2 * minor consistency and clarity nits to code; non-functional changes * make the free parameter of Δ in plane group 12 "u" rather than "v" for consistency with other plane group irreps * fix `compose(::SymOperation, ::KVec)` (fixes #57) * fix small typo in `littlegroup` * add `cosets` function for computing a set of coset representatives * more fixes to broken doctest * allow `KVec` and `RVec` to feature basic use of multiplication signs before free variables - this is in order to parse formats from Bilbao more correctly in general * update crawled 3D ½k-space connectivity data: `connectionsd(-tr).jld2` and `subductionsd(-tr).jld2` - this fixes issues for space groups 143, 147, 149, 150, 156, 157, 162, 164, 168, 174, 175, 177, 183, 187, 189, 191 where the parsed `KVec` was previously wrong (because Bilbao included a multiplication `*` sign in their **k**-vector listings for these groups, which we didn't parse correctly; we do now, cf. 03a9e315304c44085d508f4ddbc06913d4cd3954). - additionally, it seems that Bilbao has been updated to include several (for some ~151 groups in TR-invariant cases, e.g.,) additional monodromy-related points in their k-connectivity listings of nonsymmorphic groups; we now included these as well. * merge `_can_intersect` and `is_compatible` to `is_compatible` and return info about _how_ they are compatible - also make a bit more general * fix `compose(::SymOperation, ::KVec)` (fixes #57) * correct parsing & ensure roundtrippability of `KVec` and `RVec` for fractions in free part * move `is_compatible` to `/src/compability.jl` and rename it `can_intersect` - also various improvements to generality and type-stability; can now be used whole-sale. * fix rollback from accidental overriding merge * add `IrrepCollection` type to improve treatment (e.g., `show`) of collections of `AbstractIrrep`s - also improve associated `show` methods * update README.md * add an in-place `realify!` method working on `AbstractDict`s to simplify "adding" time-reversal to a dict of `LGIrrep`s - export `realify!` as well * fix a typo-bug in arithmetic (`+` & `-`) between `AbstractVector`s and `AbstractVec`s * implement (unexported) `remap_lgirreps_to_point_in_kstar`, which gives the computes the set of `LGIrrep`s associated with a point in the star of an input set of `LGIrrep`s - TODO: tests and docstring; only used in BandGraphs atm * leftover: use `realify!` in a spot * aggregate commit to `BandGraphs` utility: myriad changes, fixes, improvements, and new functionality * fixes after merge - fixes a few real bugs from merge, but mainly avoids a set of pointless differences with master branch * nit to nit * use the new `SymmetryVector` from Crystalline instead of old `SymVector` from BandGraphs * drop vendored copy of `eulerian` (now in Graphs.jl) * add fast-path checks for subset-sum checks - speeds up `solve_subset_sum_variant` dramatically for most cases - also improve how `Model` is instantiated, to save time on this * improve type-stability of loading subduction tables in `__init__` & fix two issues with BCS band-paths data - we now load a list of corrections into the tabulated band-paths data (corrections stored in `src/subduction-table-corrections.jl`) * BIG chunk of updates - this commits a large number of updates to the BandGraphs code; many aspects have received corrections, very aggressive performance optimizations (e.g., work-arrays), as well as algorithmic improvements (e.g., checks of articulation point), and many changes to the types - we also now do a much more general job of splitting degeneracies: in particular, we now allow splitting of degeneracies connected to non-nondegenerate nonmaximal irreps; this required multiset permutations. - the main point of entry at the moment is in `test/scan-separable-irreps.jl` * a nit to Crystalline's `test/calc_bandreps.jl`: special casing no longer needed (#59 has been resolved earlier) * aggregate updates to BandGraphs - correctness fixes - improvements to structs, paving way to recursive permutation walk work and for photonic band connectivity work - ahead of time/commit changes in preparation for changes/additions to Crystalline * implement functionality necessary to analyze photonic band graphs with singular zero-frequency content - adds a weak dep on PhotonicBandConnectivity.jl * implement a recursive approach to searching the space of graph permutations - this exploits the fact that every (appropriate, with some structural notions) induced subgraph is separable only if the original graph is * remove all code associated with BandGraphs.jl; moving to separate repo * add doc strings to new functionality and set Crystalline version to 0.6.8 * improve documentation of conjugacy_relations; previously had bugged jldoctest
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
A consequence of having
SymOperation
s act via their transpose on aKVec
is that their action is not associative:Fundamentally, we end up with an issue of the kind that
transpose(rotation(h′ * g))
is in general not equal totranspose(rotation(h′)) * transpose(rotation(g))
.I'm not sure what could or should be done about this - since the transpose is required and reasonable for other reasons - but it is an awful footgun (as evidenced e.g., by musings in #14).
The text was updated successfully, but these errors were encountered: