added penalty surfaces and code to update them apart from the basic solver in the nuEpsilonFunctional