UFC

An interface for simultaneous computation of a bilinear and linear form

Registered by Martin Sandve Alnæs

Assembling lhs and rhs forms simultaneously can give a 20% speedup in assembly inside a newton loop for expensive nonlinear equations. The ufc side of this may be simple to do:

- No change is needed in the tabulate_tensor interface, we simply allow packing both element matrix and element vector in the same local dense matrix A. For compatibility with global tensor insertion, each tensor must be contiguous in memory so the layout is obvious.

- The easiest will be to assume all integrals in a form behave the same way (filling A=[Alhs,Arhs]), and thus the only place we need to modify is ufc::form properties, where rank() is no longer an integer. One way is to keep rank() but let it throw an exception when undefined, and add a
  bool ufc::form::has_mixed_rank()
or some better name to specify when a form is a combined lhs-rhs form (or something more generic if that has any use cases).

The actual work needed for this feature are
- Joint ufl preprocessing of lhs and rhs
- Generation of joint code in ffc
- Some minor edits in dolfin::SystemAssembler (or dolfin::Assembler if they can be joined).

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.