BilinearForms allow different test and trial spaces
Code:
a = BilinearForm(trialspace=fes1, testspace=fes2)
but combining surface and volume L2 spaces does not make much sense, as they do not have any elements in common (surface l2 is only defined on surface elements, L2 only defined on volume elements)
You can project the function to the surface L2 by using:
Code:
sgf.Set(BoundaryFromVolumeCF(gf), BND)
and then do the dof mapping using the l2 surface elements.