David Allemang
bc5c96df80
tc::Group is actually a Coxeter matrix.
2021-11-05 18:58:04 -04:00
David Allemang
c462d9ce62
Add order tests
2021-11-05 18:58:04 -04:00
David Allemang
4f3fcb6c0f
Group related classes
...
Flattens the header structure and group related classes together.
2021-11-01 17:12:05 -04:00
David Allemang
24d4d1873a
Make tc::Group an Eigen::Matrix (Schafli Matrix)
...
Makes tc::Group a direct subclass of Eigen::Matrix. Group should represent a Schlafli matrix.
Added a note that tc::solve assumes the matrix to be for a coxeter group.
In theory we could also implement the "normal" todd-coxeter and allow any Schlafli matrix as input.
2021-11-01 16:58:48 -04:00
David Allemang
6585d79ed9
Remove Rel
2021-11-01 16:02:30 -04:00
David Allemang
aa3d3b5149
Build path on-demand, remove Action
...
Removing the path checks on Cosets::set drastically improves performance.
E7 is now <1s and B8 is now <5s.
2021-11-01 16:01:39 -04:00
David Allemang
d36b03b4f9
Add Block-Allocation of lst pointers
...
Profiling revealed significant performance overhead in using std::shared_ptr for lst.
There is even significant overhead in using new for lst.
Using pointers to blocks of pre-allocated memory for lst drastically improves performance (about 50%).
E7 and E8 show this well, since they allocate many lst pointers.
With shared_ptr: E7 ~3.3s, B8 ~21s.
With BlockAllocator: E7 ~1.6s, B8 ~11s.
2021-11-01 15:59:10 -04:00
David Allemang
68065f4a56
Templatize tc::Group and tc::Tables
2021-11-01 15:59:10 -04:00
David Allemang
6874faac1d
Move tc::solve() logic into tc::Table methods
2021-11-01 15:59:10 -04:00
David Allemang
d4c2ffb8f3
tc::solve() no longer a method of tc::Group.
...
Group::solve() to tc::solve(Group)
2021-11-01 15:59:10 -04:00
David Allemang
d67768d85c
Use Eigen::SelfAdjointView for mults.
2021-11-01 15:59:10 -04:00
David Allemang
ec4c1d213c
Simplify Path::walk templates.
2021-11-01 15:59:05 -04:00
David Allemang
3194181e1b
Make TC header-only
...
One header per class, except for Group and SubGroup which are coupled.
- Action
- Cosets
- Path
- Rel
2021-11-01 14:50:42 -04:00
David Allemang
14ea270f62
Use std::priority_queue instead of std::sort
2021-11-01 14:50:42 -04:00
David Allemang
6abc42b54d
Cleanup variables and reformat
2021-11-01 14:50:41 -04:00
David Allemang
d8efa09fc2
Simplify RelTables Structure
...
Some performance hit, but remember that std::vector already does block allocation so it's not too bad.
- Remove block-allocation from RelTables
- Use std::shared_ptr for lst_ptrs
- Replace vector-of-struct-of-vector with vector-of-struct.
- Remove rels from RelTables
2021-11-01 14:49:51 -04:00
David Allemang
31b5243958
Improve benchmark output.
2021-11-01 14:49:51 -04:00
David Allemang
265de59917
Only reserve output size in path::walk
2020-10-14 17:11:39 -04:00
Jacob
16c9d7d62f
Add override for Path::walk with pre-initialized container
2020-01-20 17:27:31 -05:00
JCRaymond
7afa9e0b36
Fix implementation to work with subgroups other than trivial
2020-01-14 00:39:38 -05:00
06c154057f
overload walk to use gen directly
2020-01-11 21:22:58 -05:00
7cfb0a3803
add missing operator definitions
2020-01-08 22:26:33 -05:00
4fd22f343e
minor bugfixes
2020-01-08 22:02:41 -05:00
8fa58a292c
add default option to avoid building example executables
2020-01-08 20:33:05 -05:00
5a8c3af15a
change signature of path walk to allow differently typed generators.
2020-01-08 20:27:46 -05:00
a988fb1bb9
tweak walk signature
2020-01-07 23:48:15 -05:00
2ca163c325
add walk to path
2020-01-07 23:47:05 -05:00
c5f87942c9
add path struct
2020-01-07 23:14:48 -05:00
462ebf7c25
add subgroup
2020-01-07 23:06:48 -05:00
dc1ced7dcc
fix path example
2020-01-07 21:44:13 -05:00
1de9b08ffa
refactor into cmake project, tweak api
2020-01-07 21:41:31 -05:00
JCRaymond
083673ef04
Removed deprecated RelTable struct
2019-12-27 23:25:44 -05:00
JCRaymond
9447fc57f7
Restructure RelTables to support deleting useless information from RelTables.
2019-12-27 23:24:33 -05:00
JCRaymond
d2dd002965
Remove lst and fam vector from RelTable, replace with lst_ptr vector. fam is identified by the pointer value, and lst is identified by referencing the pointer.
2019-12-25 01:01:22 -05:00
JCRaymond
8f82531a72
Add RelTable generator lookup to prevent scanning unnecessary RelTables
2019-12-25 00:04:35 -05:00
JCRaymond
55520fd50a
Modified facts to use heap
2019-12-24 23:23:12 -05:00
JCRaymond
ed69ba6dc0
First implementation of the Todd-Coxeter algorithm for Coxeter groups. Based on github.com/allemangD/toddcox-fast
2019-12-23 01:55:33 -05:00