-
Notifications
You must be signed in to change notification settings - Fork 35
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
Rethink design of OperatorBase regarding different FE types (CG, DG, Hdiv) #638
Comments
From my perspective I think the member variable Your second point leads to two options: |
This is a somewhat delicate topic. The problem is that inner faces create additional dependencies, both for the ghost value update and the scheduling of operations before/after the loop over cells. In dealii/dealii#15381 I fixed one of the issues, namely the fact that inner face were always generated, also for cases when one did not even request them.
It is definitely measurable, especially for the more advanced algorithms. For the simple case of In that sense, checking inside |
Robin boundary conditions require to evaluate the homogeneous action of a PDE operator on boundary faces also for continuous Galerkin (CG) discretizations, which is new functionality compared to the current code version (where we currently only evaluate inhomogeneous Neumann BCs for CG discretizations).
@richardschu We discussed this topic briefly in person. I create this issue so that we can exchange ideas here (or that others can share their opinion as well).
The question is whether we should rethink the design of
OperatorBase
regarding the different element types and loop types somewhat basically:evaluate_face_integrals()
,is_dg
(note that this also includes the Hdiv-case!), (anduse_cell_based_face_loops
)matrix_free->loop/cell_loop()
or inside the cell/face/boundary-face integrals)? @kronbichler is it a measureable performance penalty when usingmatrix_free->loop()
but leaving e.g. the function with the face integrals empty?The text was updated successfully, but these errors were encountered: