UFL

Detect if a form is self-adjoint (symmetric)

Registered by Garth Wells

Implement algorithm to determine whether or not a bilinear form is self-adjoint (symmetric). Form compilers could exploit this information in code generation and could inform an assembler.

Pseudo-steps for such an algorithm could be:
      def canonical_form(expression):
          return expression transformed to a truly canonical form, i.e. a representation that is completely unique
      self_adjoint = True
      for each integrand:
          a = canonical_form(integrand)
          b = canonical_form(replace(integrand, {v:u}))
          if not a == b:
              self_adjoint = False
              break

Blueprint information

Status:
Complete
Approver:
None
Priority:
Medium
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Martin Sandve Alnæs

Related branches

Sprints

Whiteboard

Note that a truly canonical form does not exist for the entire algebra supported by ufl, so some theoretical false negatives may be unavoidable.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.