Opened 19 months ago
Closed 19 months ago
#28543 closed defect (fixed)
Improve computation of connection coefficients
Reported by: | egourgoulhon | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-9.0 |
Component: | geometry | Keywords: | affine_connection, manifold |
Cc: | tscrim | Merged in: | |
Authors: | Eric Gourgoulhon | Reviewers: | Travis Scrimshaw |
Report Upstream: | N/A | Work issues: | |
Branch: | 439162b (Commits, GitHub, GitLab) | Commit: | 439162b50d7300e4ecc1212efaf08063e1706e89 |
Dependencies: | Stopgaps: |
Description (last modified by )
The coefficients of an affine connection D in a frame (ei) are computed according to the formula
Gammakij = (Dei)(fk , ej)
where (fk) stands for the coframe dual to (ei). In the current implementation, this is performed by a triple loop on k, i and j with a recomputation of Dei at each stage of the inner loop (!). This makes the whole computation terribly slow for manifold dimensions > 2. This ticket reorders the loops, factoring Dei. As a result, in Sage 8.9.rc1, we move from
sage -t --long src/sage/manifolds/differentiable/affine_connection.py [441 tests, 132.77 s] ---------------------------------------------------------------------- All tests passed! ---------------------------------------------------------------------- Total time for all tests: 132.9 seconds cpu time: 152.0 seconds cumulative wall time: 132.8 seconds
to
sage -t --long src/sage/manifolds/differentiable/affine_connection.py [441 tests, 111.16 s] ---------------------------------------------------------------------- All tests passed! ---------------------------------------------------------------------- Total time for all tests: 111.3 seconds cpu time: 124.1 seconds cumulative wall time: 111.2 seconds
In passing, additional factorizations have been performed in other loops (in methods connection_forms
, curvature_forms
, etc.), but they were less critical since they involve cached quantities.
Change History (7)
comment:1 Changed 19 months ago by
- Description modified (diff)
comment:2 Changed 19 months ago by
- Branch set to public/manifolds/connection_coef-28543
- Commit set to 439162b50d7300e4ecc1212efaf08063e1706e89
- Description modified (diff)
comment:3 Changed 19 months ago by
- Cc tscrim added
- Status changed from new to needs_review
comment:4 Changed 19 months ago by
- Description modified (diff)
comment:5 Changed 19 months ago by
- Reviewers set to Travis Scrimshaw
- Status changed from needs_review to positive_review
Yes, definitely a good idea to pull these out and not redo these computations. LGTM.
comment:6 Changed 19 months ago by
Thanks for the review!
comment:7 Changed 19 months ago by
- Branch changed from public/manifolds/connection_coef-28543 to 439162b50d7300e4ecc1212efaf08063e1706e89
- Resolution set to fixed
- Status changed from positive_review to closed
New commits:
Improve computation of connection coefficients