Opened 3 years ago

Last modified 14 months ago

#29581 closed enhancement

New Algorithm for Characteristic Classes — at Version 38

Reported by: Michael Jung Owned by:
Priority: major Milestone: sage-9.5
Component: manifolds Keywords: characteristic_classes, manifolds
Cc: Samuel Lelièvre, Eric Gourgoulhon, Travis Scrimshaw, Matthias Köppe, Tobias Diez Merged in:
Authors: Michael Jung Reviewers:
Report Upstream: N/A Work issues:
Branch: u/gh-mjungmath/new_algorithm (Commits, GitHub, GitLab) Commit: 2cabd839d55e5c0f3ba2f8d0194bcae6ce31397c
Dependencies: #32270, #32272, #32396 Stopgaps:

Status badges

Description (last modified by Michael Jung)

The current algorithm for characteristic forms is comparably slow. The worst case scenario showed computations times about 1h in dimension four.

With this ticket, we want to replace the current algorithm and implement characteristic cohomology classes as sub-ring of the de Rham cohomology ring (cf. #31691).

The idea is that characteristic (cohomology) classes are generated by Chern/Pontryagin/Euler? classes. The generators can be computed by an Faddeev-LeVerrier?-like algorithm (cf. #30681).

Change History (38)

comment:1 Changed 3 years ago by Michael Jung

Branch: u/gh-mjungmath/new_algorithm

comment:2 Changed 3 years ago by Matthias Köppe

Commit: 1a803eba5b9724ebfa93e726a474d957fd6915b4
Milestone: sage-9.1sage-9.2

New commits:

3b36f0dTrac #29570: alternating_form returns correct element
85e7970Trac #29570: Typo fixed, doctest added, returned element preferably non-zero
1a803ebTrac #29581: New Algorithm for Char Classes

comment:3 Changed 3 years ago by Samuel Lelièvre

Cc: Samuel Lelièvre added
Component: PLEASE CHANGEgeometry

comment:4 Changed 3 years ago by Samuel Lelièvre

Please add a short description in the "Description" field of the ticket, and the author's full name in the "Authors" field of the ticket. Don't forget to set to needs_review when this is ready for review.

comment:5 Changed 3 years ago by git

Commit: 1a803eba5b9724ebfa93e726a474d957fd6915b4cb442eb8919ca33a5db63a17bac52f99f55553dd

Branch pushed to git repo; I updated commit sha1. New commits:

730046cMerge branch 'develop' into t/29570/diff_form_bug
130ae3fTrac #29570: NotImplementedError for non-generic ring elements
bba21e1Trac #29570: Strange typo fixed...
ba3b4b9Trac #29570: correct parent, vectorfield_module changes reverted
841e1bfMerge branch 't/29570/diff_form_bug' into t/29581/new_algorithm
cb442ebTrac #29570: new algorithm added and code cleaned

comment:6 Changed 3 years ago by git

Commit: cb442eb8919ca33a5db63a17bac52f99f55553dd15c7341d071327a04fd229c3d2f78d583564f476

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

15c7341Trac #29581: new algorithm added and code cleaned

comment:7 Changed 3 years ago by Michael Jung

Authors: Michael Jung
Cc: Eric Gourgoulhon added
Description: modified (diff)
Keywords: characteristic_classes manifolds added
Type: PLEASE CHANGEenhancement

comment:8 Changed 3 years ago by Frédéric Chapoton

Correct syntax for crosslinks is

.. SEEALSO::

comment:9 Changed 3 years ago by Frédéric Chapoton

  • do not use this:
    if distinct_real == False
    

but

if not distinct_real

(at least in two places)

  • The following change is wrong:
    -        - ``cmatrix`` -- curvature matrix
    -
    +            - ``cmatrix`` -- curvature matrix
             OUTPUT:
     
    -        - ``I/(2*pi)*cmatrix``
    +            - ``I/(2*pi)*cmatrix``
    

as one should not indent inside INPUT or OUTPUT blocks (because they end with only one colon). And moreover, one does want empty lines to separate these things.

This is also incorrect:

-            self._dual_exterior_powers[p] = ExtPowerDualFreeModule(self, p)
+                self._dual_exterior_powers[p] = ExtPowerDualFreeModule(self, p)

Why did you change the indentation ? it was ok.

comment:10 Changed 3 years ago by Michael Jung

I am sorry. At this stage, this is just a draft. The indentations are typos coming from using alt+tab (at least I guess so). I will fix this soon.

comment:11 Changed 3 years ago by Michael Jung

Thanks for your advice. :)

comment:12 Changed 3 years ago by git

Commit: 15c7341d071327a04fd229c3d2f78d583564f476d37229341effff46ea2fa4b3287e32997c8422b0

Branch pushed to git repo; I updated commit sha1. New commits:

d372293Trac #29581: Strange typos reverted

comment:13 Changed 3 years ago by Michael Jung

Status: newneeds_review

comment:14 Changed 3 years ago by Michael Jung

Status: needs_reviewneeds_info

comment:15 Changed 3 years ago by Michael Jung

An example for the application of the new algorithm would be really nice. For instance a Todd class or A-Hat class. But I have no idea for a suitable one. If anyone does, or at least knows someone who does, I would really appreciate it. Thanks! :)

comment:16 Changed 3 years ago by git

Commit: d37229341effff46ea2fa4b3287e32997c8422b019815c4257cee7dcf503d94e3b9bb651150bef5f

Branch pushed to git repo; I updated commit sha1. New commits:

c975bd2Merge branch 'develop' into t/29581/new_algorithm
19815c4Trac #29581: Readability of one line

comment:17 Changed 2 years ago by Michael Jung

Component: geometrymanifolds
Dependencies: #30211

comment:18 Changed 2 years ago by Matthias Köppe

Milestone: sage-9.2sage-9.3

comment:19 Changed 21 months ago by Matthias Köppe

Milestone: sage-9.3sage-9.4

Setting new milestone based on a cursory review of ticket status, priority, and last modification date.

comment:20 Changed 17 months ago by Matthias Köppe

Milestone: sage-9.4sage-9.5

Setting a new milestone for this ticket based on a cursory review.

comment:21 Changed 16 months ago by Michael Jung

Cc: Travis Scrimshaw Matthias Köppe added
Dependencies: #30211
Description: modified (diff)
Status: needs_infoneeds_work

comment:22 Changed 16 months ago by git

Commit: 19815c4257cee7dcf503d94e3b9bb651150bef5f3c9b80a2551994493f23640344e9ade63240cb01

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

3c9b80aTrac #29581: implement algorithms for chern, pontryagin and euler

comment:23 Changed 16 months ago by Michael Jung

Do you think it is necessary to give those cohomology classes an own parent or would DeRhamCohomologyRing as parent suffice?

The point is that addition and multiplication is performed differently among those elements. Moreover, it is possible to compare them.

comment:24 Changed 16 months ago by Michael Jung

Description: modified (diff)

comment:25 Changed 16 months ago by Michael Jung

Status: needs_workneeds_info

comment:26 Changed 16 months ago by Michael Jung

Description: modified (diff)

comment:27 Changed 16 months ago by git

Commit: 3c9b80a2551994493f23640344e9ade63240cb0103529f8919357f98b65ee033e8dc5c7d48b2fa42

Branch pushed to git repo; I updated commit sha1. New commits:

03529f8Trac #29581: return mixed form

comment:28 Changed 16 months ago by git

Commit: 03529f8919357f98b65ee033e8dc5c7d48b2fa42ab288d62786a40b9f314d40ca932506d7b6932d9

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

fb9c661#32270: de rham cohomology as algebra
de5863aMerge branch 't/32270/turn_de_rham_cohomology_into_algebra' into t/29581/new_algorithm
d22ee9aTrac #32315: support iteration and enumerated sets
16c4737Trac #32272: allow infinite max degree
6a320a0Trac #32272: fix docstring
c1d4fceTrac #32272: fix rst file + rename module
25e6b1dTrac #32272: fix doctest
5a4c7acTrac #32272: narrow to finite dimensions
3b81085Merge branch 't/32272/finitely_generated_graded_algebras_with_finite_degree' into t/29581/new_algorithm
ab288d6Trac #29581: algorithm for complex vbundles

comment:29 Changed 16 months ago by Michael Jung

Dependencies: #32270, #32272

comment:30 Changed 16 months ago by git

Commit: ab288d62786a40b9f314d40ca932506d7b6932d96688740017097a79d7995101889cea097ee5c653

Branch pushed to git repo; I updated commit sha1. New commits:

932e128Trac #29581: element constructor
6688740Trac #29581: naming

comment:31 Changed 16 months ago by git

Commit: 6688740017097a79d7995101889cea097ee5c65361291f406b886abb9a509955355da749fc99a8d6

Branch pushed to git repo; I updated commit sha1. New commits:

61291f4Trac #29581: minor fixes

comment:32 Changed 16 months ago by git

Commit: 61291f406b886abb9a509955355da749fc99a8d660318775e9c530c32280ba1bfa819cb9ac978bd1

Branch pushed to git repo; I updated commit sha1. New commits:

6031877Trac #29581: return only list of generators

comment:33 Changed 16 months ago by git

Commit: 60318775e9c530c32280ba1bfa819cb9ac978bd10c7587f759b9555404fd417ee042e99fbb4ae02d

Branch pushed to git repo; I updated commit sha1. New commits:

0c7587fTrac #29581: parent deals with different cases, element stays generic

comment:34 Changed 16 months ago by git

Commit: 0c7587f759b9555404fd417ee042e99fbb4ae02d28d2d84271a3e1516556a8364b1114dd6edaa992

Branch pushed to git repo; I updated commit sha1. New commits:

28d2d84Trac #29581: revert mistaken merge

comment:35 Changed 16 months ago by Michael Jung

The ticket is not ready for review yet; the structure should be fixed though. Feedback at this stage is very much appreciated. :)

comment:36 Changed 16 months ago by git

Commit: 28d2d84271a3e1516556a8364b1114dd6edaa9922cabd839d55e5c0f3ba2f8d0194bcae6ce31397c

Branch pushed to git repo; I updated commit sha1. New commits:

2cabd83Trac #29581: add some comments

comment:37 Changed 16 months ago by Michael Jung

Dependencies: #32270, #32272#32270, #32272, #32396

comment:38 Changed 16 months ago by Michael Jung

Description: modified (diff)
Note: See TracTickets for help on using tickets.