1
0

31 Commits

Author SHA1 Message Date
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
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
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
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
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
06c154057f overload walk to use gen directly 2020-01-11 21:22:58 -05:00
4fd22f343e minor bugfixes 2020-01-08 22:02:41 -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
1de9b08ffa refactor into cmake project, tweak api 2020-01-07 21:41:31 -05:00