Skip to content

Conversation

mlstowell
Copy link
Member

This is an expanded and improved description of the essential BC elimination scheme mentioned in issue #5017.

Copy link
Member

@tzanio tzanio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @mlstowell !

| Symbol | Description |
|--------|-------------|
| $D_0$ | The zero matrix |
| $D_1$ | Matrix with ones on the diagonal entries associates with essential DoFs and zeros elsewhere |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

associates --> associated

|--------|-------------|
| $D_0$ | The zero matrix |
| $D_1$ | Matrix with ones on the diagonal entries associates with essential DoFs and zeros elsewhere |
| $D_K$ | Matrix with $A_\{ii}$ on the diagonal entries associates with essential DoFs and zeros elsewhere |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

associates --> associated

| $D_K$ | Matrix with $A_\{ii}$ on the diagonal entries associates with essential DoFs and zeros elsewhere |
| $C_1$ | Matrix $(I - D_1)$ where $I$ is the identity matrix |

Note that MFEM does actually not form these matrices. They are merely
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does actually not --> does not actually


$$\begin{align\*}
A &\rightarrow C_1 A C_1 + D_p \\\\
b &\rightarrow C_1 b - A D_1 x_\{bc} + D_p x_\{bc}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is missing a bracket
$b \rightarrow C_1 (b - A D_1 x_{bc}) + D_p x_{bc}$

enumeration defined in
[linalg/operator.hpp](https://github.com/mfem/mfem/blob/master/linalg/operator.hpp#L47)
with values `DIAG_ZERO`, `DIAG_ONE`, or `DIAG_KEEP` which respectively
replace the diagonal entries with 0, 1, or leaves them unchanged.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding the diagonal policy, this applies only to the legacy and serial assembly. Since HypreParMatrix doesn't support DIAG_KEEP, pbilinearform doesn't support it either. Maybe we should clarify it somewhere. MF/PA/FA operators also don't provide this option.


For a block system:

$$\left(\begin{array}{3}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this equation (and the other 2 above) are not referred to in the text, their numbering can be omitted.

b_1 \rightarrow & C_1 b_1 - A_\{11} D_1 x_\{bc} - A_\{12} D_1 y_\{bc} + D_p x_\{bc}, \\\\
b_2 \rightarrow & C_1 b_2 - A_\{21}D_1 x_\{bc} - A_\{22} D_1 y_\{bc} + D_p y_\{bc}, \\\\
b_3 \rightarrow & b_3 - A_\{31}D_1 x_\{bc} - A_\{32}D_1 y_\{bc}
\end{align\*}$$
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above, $C_1$ is missing. It's also a bit confusing to keep the $C_1$ notation. Maybe we can change it to $C_1^x$ and $C_1^y$ or something similar, to emphasize that these $Cs$ are not the same in general.

a &\rightarrow C_1 a - A D_1 x_\{bc} + B D_1 y_\{bc} + D_p x_\{bc}\\\\
b &\rightarrow C_1 b - A D_1 y_\{bc} - B D_1 x_\{bc} + D_p y_\{bc}
\end{align\*}$$

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is also missing a bracket. It should be

$$\begin{align*} a &\rightarrow C_1(a - A D_1 x_{bc} + B D_1 y_{bc}) + D_p x_{bc}\\\ b &\rightarrow C_1(b - A D_1 y_{bc} - B D_1 x_{bc}) + D_p y_{bc} \end{align*}$$

@tzanio
Copy link
Member

tzanio commented Sep 23, 2025

thanks for reviewing, @psocratis !

@tzanio tzanio mentioned this pull request Oct 6, 2025
14 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants