1
0
Commit Graph

37 Commits

Author SHA1 Message Date
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