Adding global edge and face ID #3923
Replies: 8 comments 9 replies
-
If you're using what we call "complete order" elements, then every face has its own node and every edge has its own node, and all those have their own id. The numbering is sparse (because vertices and interior nodes still have their ids, but that still qualifies as "similar to global node and element numbers/IDs", which can also be sparse (because a mesh file had them so, or because there's been element coarsening/deletion without renumbering). If you need a contiguous numbering (in either case)? A contiguous->sparse map (really a |
Beta Was this translation helpful? Give feedback.
-
Wait a minute. You're not trying to create low-order Raviart-Thomas and Nedelec (one) elements from scratch, are you? If all you need is a numbering of edge degrees of freedom in 2D or face degrees of freedom in 3D, we already do that whenever the user adds a |
Beta Was this translation helpful? Give feedback.
-
Not really, we want to create a G-operator which is of size number of vertices (N) times the number of edges (E), which has two entree columns (denoting the orientation of an edge). This is used for the AMS preconditioner. For ADS, in addition to the G-operator, we have a C-operator denoting the orientation of a face. Hence an id to uniquely denote an edge and a face can be very handy. This helps determine the size of the operators. What we find is when solving the A-formulation using Nedelec elements we need to deploy direct solvers. A preconditioned solution would allow us to avoid solving it directly.
Yes, they do.
That is exactly, what we are doing now, computing the orientation on the fly directly on a standalone example. We can send you whenever we have a working version for you to have a look. |
Beta Was this translation helpful? Give feedback.
-
Hello @roystgnr Here,
|
Beta Was this translation helpful? Give feedback.
-
Hi Roy, Thank you for your response. I have constructed the G operator for Hypre AMS and the plan is to use it to solve vector_fe_ex3 (curl curl problem). I made use of // Set discrete gradient // Set vertex coordinates The preconditioner was constructed using PETSc type |
Beta Was this translation helpful? Give feedback.
-
Hi Roy, I am posting a related question. Look's like we can get the reference to I need to call the following PETSc functionality from Libmesh example For that, I would need to know how I get the reference to the system matrix Thank you! |
Beta Was this translation helpful? Give feedback.
-
It does look like we can set
But instead, you are proposing to use Many thanks! |
Beta Was this translation helpful? Give feedback.
-
I have a follow up question. Is the following error because I am missing a header in vector_fe_ex3.C?
|
Beta Was this translation helpful? Give feedback.
-
Hello,
Similar to global node and element numbers/IDs. We are interested in adding a new global edge and face numbering. This is particularly useful in preconditioning Nedelec and Raviart-Thomas elements using Hypre AMS (https://hypre.readthedocs.io/en/latest/solvers-ams.html) and ADS (https://hypre.readthedocs.io/en/latest/solvers-ads.html) preconditioners respectively.
Can you please give us some pointers on how we can create such a data structure in Libmesh? Perhaps something lightweight to begin with which doesn't mess with the I/O/.
Many thanks,
Karthik.
cc @SohailSTFC
Beta Was this translation helpful? Give feedback.
All reactions