David Allemang
e6cb5a4d2b
WIP: add todos for next tasks
2021-11-12 23:13:13 -05:00
David Allemang
897f7fe38b
WIP: complex solver uses Eigen::Array
2021-11-12 23:07:42 -05:00
David Allemang
840928136e
WIP: Remove unneeded solver functions
2021-11-12 22:28:48 -05:00
David Allemang
a1b0ae31dc
Un-template complex solver
2021-11-12 22:20:20 -05:00
David Allemang
cd8ef050e6
Add complex solver benchmarks
2021-11-12 20:45:42 -05:00
David Allemang
bdecf40345
Introduce complex solvers
2021-11-12 20:36:56 -05:00
David Allemang
fa13493569
Un-template groups.
...
Templating the groups doesn't improve performance that much, but it severely hinders usability. Switch things to be dynamically sized so that different ranked groups are the same type.
Could also now separate headers and implementation... but will probably leave it for now.
2021-11-07 20:40:34 -05:00
David Allemang
24e7ab47d1
make 'examples' plural
2021-11-06 18:00:05 -04:00
David Allemang
3e783b03cb
Introduce tc::subgroup and tc::subgroups
2021-11-05 18:58:04 -04:00
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