-
Notifications
You must be signed in to change notification settings - Fork 33
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
add support for interior face integrals #1223
base: develop
Are you sure you want to change the base?
Conversation
…in restriction class
…unctional, delete debugging print statements
…Add{...}Integral()
… which arguments an Integral depends on
…ouble`, add some related tests
…update remaining tests
…t for FaceNbrData
…have, update relevant tests
/style |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've temporarily disabled these serac "drivers" since:
- to my knowledge, no one uses them
- we don't really have an input-file interface for a lot of things (
Domain
included) - it's caused confusion for new users (understandably, but incorrectly) thinking that this is the primary way to use serac
Keeping them enabled would add extra burden to this PR which I don't feel is justified in the near future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a user that is currently using it for testing the memory mapped file library.
This is ready for review, so please take a look! My apologies to the reviewers for the number of files touched. |
This PR aims to implement a feature requested by @tupek2 to be able to integrate over interior faces. The main challenge is in handling DG/L2 spaces for this type of integral, as they have separate values on each side.
The the new kind of integral behaves similarly to the existing boundary integral, except that for L2 spaces it represents:
where the domain of integration$\Omega$ represents the specified collection of interior faces, $\phi_1, \phi_2$ are the basis functions from side 1 and side 2, and $u_1, u_2$ are the values of the DG field evaluated from side 1 and side 2. For example, consider a mesh made of two adjacent quadrilateral elements, with a $\Omega$ .
L2<1, 1>
field defined on it. The red disks represent the nodes of the DG field (with the positions of the nodes shifted inward slightly to exaggerate which side of the interior face they belong to), and the blue edge represents the domainIn this example, the basis functions that appear in the integrand are:
where$N_0, N_1$ are the usual linear interpolation shape functions in 1D.
Here is an example of a residual calculation involving a vector-valued DG space and interior faces:
Here's a table showing which argument types are passed to qfunction and which weight functions are applied to the output of qfunctions, depending on the type of integral and trial/test space (respectively):