-
Notifications
You must be signed in to change notification settings - Fork 707
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Teach FEEvaluation RT and Nedelec evaluation #9545
Comments
With a student, I am working on RT elements build up as a tensor product of 1D elements. Today, we had a look into For example, in 2D one constructs an anisotropic quadrature formula Thus, we decided to start with the |
On 2/20/20 2:05 PM, jwitte08 wrote:
Today, we had a look into |FE_RaviartThomas| and
|FE_RaviartThomasNodal|'s implementations. The first is close to the
mathematical theory and assumes less regularity from the ansatz space.
However, the latter (based on a nodal, primitive ansatz) has clear
advantages seen from a technical perspective.
If one reads through old code, there are always places where you now
know that things could be written in a cleaner way, differently, or with
better comments. Feel free to make these changes and submit pull
requests for them -- code cleanups are always welcome!
|
After discussion with @nfehn, we came up with a more detailed plan for approaching the problem. Regarding the first point:
Regarding the third bullet point (make the evaluators capable of doing anisotropic polynomials):
Regarding the fourth and fifth point I made some more specific comments in the original post. |
Apart from the cleanup in #12728, I think we need to postpone the additional topics in this issue to after the 9.4 release. I think we have a nice "experimental" state in terms of affine transformations and basic stuff, and can fix hanging nodes (#13671) as well as non-affine meshes to the next release. We would not have the time to properly test and implement all missing features to have full support for RT (let alone Nedelec, that was also part of the topic). |
We made progress with #13990 and some preceding commits, but the rest needs to be postponed. |
This issue is to keep track of the work to support Raviart-Thomas and Nedelec elements in the context of
MatrixFree
andFEEvaluation
. We need the following steps:internal::MatrixFreeFunctions::ShapeInfo
to read out the information for RT and Nedelec elements. Once we have Teach FiniteElement how to fill MF::ShapeInfo #9544 in place, it should be straight-forward to do so; one extension we still need is support for anisotropic polynomials, i.e., the tensor product of multiple 1D formulas because we have degreek
in some directions andk+1
in some other.FEEvaluation
. Given that this is a switch to a different formula in allget_value()
,submit_value()
,get_curl
functions etc., we could either add it by an additional template parameterMappingKind
that selects the right formula, or by a simpleif
statement. The latter would be less intrusive but require additionalif
clauses in inner loops. The compiler is typically pretty good at figuring them out, but if we put too many it might at some point refuse to optimize what we want to be optimized. We can start with that option. Note that for gradients with RT we will need the gradient of the Jacobian of the mapping, so the places where we construct the mapping indealii/include/deal.II/matrix_free/mapping_info.templates.h
Lines 86 to 88 in 7dd7f14
dealii/source/fe/fe_raviart_thomas_nodal.cc
Lines 528 to 572 in f541dd4
quad_dof_sign_for_face_orienation_table
) and then apply the operations fromdealii/source/fe/fe_poly_tensor.cc
Lines 531 to 537 in f541dd4
dealii/source/fe/fe_poly_tensor.cc
Lines 595 to 598 in f541dd4
The text was updated successfully, but these errors were encountered: