prolong gives incorrect results for higher-order (k>1) KMV elements #4743
-
|
I am attempting to perform a convergence test for a problem using KMV elements. Since the exact solution is unknown, I am calculating the convergence rate using the formula log(E_{h}-E_{h/2} / E_{h/2}-E(h/4) ) / log 2. This requires transferring a solution from a coarse grid to a finer one. Normally, I would use interpolate or project, but as these are not fully supported for N1curl elements (another variable in my context), I had to resort to using the prolong operator. The issue arises when I use prolong with KMV elements of degree greater than 1 (i.e., k > 1). The operation executes, but the generated values on the refined mesh appear to be incorrect, which breaks my convergence test. Has anyone encountered this problem with prolong and high-order KMV elements? Is there a known workaround, a different operator I should use for this transfer, or a configuration I might be missing? Here is a simple code that demonstrates the problem: |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 8 replies
-
|
You mentioned two issues, the first one not being able to prolong an N1curl Function, and the second one getting unexpected results for KMV elements. I will need to have a closer look to the second issue, but for the meantime, you could try to get We support Here's an example on how to prolong an N1curl |
Beta Was this translation helpful? Give feedback.
-
|
Seems like Lagrange-only approach in your code with I get |
Beta Was this translation helpful? Give feedback.
We were not labelling the KMV elements with correct embedding degree, this is fixed here firedrakeproject/fiat#199
The issue is that
KMV(p)is a subspace ofCG(p+bump), wherebumpdepends onp.