I'm submitting a patch with improvements and bug fixes for XYZ basis functions.
I haven't been able to test it against the svn head because I had compilation issues. See the error file.
However, since the patch is only related to fe_xyz*.C, it should work.
The major change is related to a scaling introduced to improve the condition number on small and big elements (small and big compared to the reference element).
With such a scaling on linear hexs the XYZ is equivalent to a MONOMIAL basis, independently of the element size.
On curved elements the approximation properties of this scaled XYZ should be better than MONOMIAL and should allow to go up to a third or fourth degree approximation without any trouble.
Another step would be to introduce a rotation in order to define the XYZ basis using a frame oriented with the principal axis of inertia of the mesh element. This might help on stretched elements.
I hope that the patch will be included in future libMesh releases.
From: Paul T. Bauman <ptbauman@gm...> - 2012-07-12 16:24:44
Sorry for not checking out the error earlier.
On Wed, Jul 4, 2012 at 7:17 AM, Lorenzo Alessio Botti <
> I haven't been able to test it against the svn head because I had
> compilation issues. See the error file.
> However, since the patch is only related to fe_xyz*.C, it should work.
Could you specify the compiler? I'm the one that put those templated member
functions in, but I have no problem building it on both my linux system and
mac using gcc 4.5+ and Intel 11.1.