add `setConstraint` with virutalized gf and an addition to `linear`
- add an
setConstraint
overload on the operator with a virtualized gf - add a bool parameter
affineShift
to thelinear
operator method which returns both the linearization and the right hand side
Usage: this makes it easily to change for example boundary data:
op = galerkin( [eqns, dbc] )
A,b = linear(op, affineShift=True)
b *= -1 # note that the `linear` function returns the affine shift and not the right hand side
g = uflFunction(...)
op.setConstraints(g,b)