You don’t need to project anything. You can leave u in the variational form, and it will behave as any function defined in a standard variational form.
Various fixes related to submeshes, as well as a slight api change happened from 0.8 to 0.9
You can pass in compiled forms to LinearProblem.
Then you should interpolate any displacement in the parent mesh onto the submesh and move the mesh afterwards