ufl
ufl copied to clipboard
Relax assumption on BaseFormOperator's dual argument slot
This PR relaxes the assumption on the type of the object that goes into the dual argument slot of BaseFormOperators. Base form operators (e.g. ExternalOperator or Interpolate) of the form B: V -> V, or B: V x V* -> R, have an argument slot to represent their dual argument (the one in V*). Strictly speaking, whatever is in V* should be allowed to go in there. At the moment, the code assumes that only a Cofunction or a Form can be held in this slot. This PR extends that assumption to other cases such as Action or even BaseFormOperator.