Add expression type for partial evaluation for use by replace, action, adjoint

Issue #39 new
Martin Sandve Alnæs created an issue

The ufl form operators replace, action, adjoint, currently apply an algorithm to the form when called instead of representing the operation with an Operator subtype. To work properly they need to call expand_derivatives first, which is an expensive operation that lowers abstractions. If instead one or more operator types were added for these operations, algorithms could be executed in the form compiler analysis stage, giving room for optimizations and simplifying some code.

Comments (1)

  1. Martin Sandve Alnæs reporter

    The Let type could be the right abstraction here.

    replace(form, { f: u, g: v })  :=  Let([(f,u), (g,v)], form)
    
  2. Log in to comment