Solve PDEs on surface meshes and volume meshes
\[ \small \begin{eqnarray*} \mat{L}_{ij} &=& -\int \grad \varphi_i \cdot \grad \varphi_j &=& \begin{cases} \frac{\cot\alpha_{ij}+\cot\beta_{ij}}{2} & \text{if } j\in\set{N}\of{i} \,, \\[0.5em] \displaystyle -\sum_{k\in\set{N}\of{i}} \mat{L}_{ik} & \text{if } j=i \,, \\[0.3em] 0 & \text{otherwise}. \end{cases} \\[1em] \mat{M}_{ij} &=& \int \varphi_i \, \varphi_j &=& \begin{cases} \frac{\abs{t_{ijk}} + \abs{t_{jih}}}{12} & \text{if } j\in\set{N}\of{i}\,, \\[0.5em] \displaystyle \sum_{k\in\set{N}\of{i}} \mat{M}_{ik} & \text{if }j=i \,,\\[0.3em] 0 & \text{otherwise}. \end{cases} \end{eqnarray*} \]
Which property does the cotangent Laplacian not satisfy?
7.28224, 14.5124, 28.9698, 57.8831, 115.709
Cotan Laplacian, 0.0184139, 0.00457148, 0.00115444, 0.000291485, 7.33316E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
}
},
"y": {
"title": {
"text": "L2 error",
"display": true
}
}
}
}
}
-->
7.28224, 14.5124, 28.9698, 57.8831, 115.709
Cotan Laplacian, 0.0184139, 0.00457148, 0.00115444, 0.000291485, 7.33316E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
},
"type": "logarithmic"
},
"y": {
"title": {
"text": "L2 error",
"display": true
},
"type": "logarithmic"
}
}
}
}
-->
For which property is the polynomial term \(\pi_1\of{\vec{x}}\) crucial? \[\varphi_i(\vec{x}) = \sum_k w_k \, \psi_k\of{\vec{x}} + \pi_1\of{\vec{x}}\]
\[ \small \begin{eqnarray*} \mat{L}_{ij} &=& -\int \grad \varphi_i \cdot \grad \varphi_j &=& \color{red}{\xcancel{ \begin{cases} \frac{\cot\alpha_{ij}+\cot\beta_{ij}}{2} & \text{if } j\in\set{N}\of{i} \,, \\[0.5em] \displaystyle -\sum_{k\in\set{N}\of{i}} \mat{L}_{ik} & \text{if } j=i \,, \\[0.3em] 0 & \text{otherwise}. \end{cases} }} \\[1em] \mat{M}_{ij} &=& \int \varphi_i \, \varphi_j &=& \color{red}{\xcancel{ \begin{cases} \frac{\abs{t_{ijk}} + \abs{t_{jih}}}{12} & \text{if } j\in\set{N}\of{i}\,, \\[0.5em] \displaystyle \sum_{k\in\set{N}\of{i}} \mat{M}_{ik} & \text{if }j=i \,,\\[0.3em] 0 & \text{otherwise}. \end{cases} }} \end{eqnarray*} \]
On triangles, harmonic coordinates reproduce barycentric coordinates
13.5053, 28.5194, 58.8386, 119.78, 241.153
Martin08, 0.00951959, 0.00236579, 0.000699382, 0.000188646, 5.46139E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
},
"type": "logarithmic"
},
"y": {
"title": {
"text": "L2 error",
"display": true
},
"type": "logarithmic"
}
}
}
}
-->
Expected convergence rate 😄 Expensive to compute, evaluate, and integrate 😢
On some polygons \(\mat{\tilde{M}}_f\) is only positive semi-definite 😢
Which property is lost through a positive semi-definite inner product matrix \(\mat{M}_1\)?
\[\mat{M}_{f} = \mat{\tilde{M}}_f + \lambda\mat{R}_f\]
13.5053, 28.5194, 58.8386, 119.78, 241.153
Alexa11; λ=2, 0.00838748, 0.00209687, 0.000476346, 0.000127937, 3.30444E-05
Alexa11; λ=1, 0.00456036, 0.0010483, 0.000382806, 8.53325E-05, 1.84683E-05
Alexa11; λ=0.5, 0.00800984, 0.00193734, 0.000621653, 0.000143936, 3.19937E-05
Alexa11; λ=0.1, 0.0144414, 0.00337097, 0.000947331, 0.000221091, 5.14271E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
},
"type": "logarithmic"
},
"y": {
"title": {
"text": "L2 error",
"display": true
},
"type": "logarithmic"
}
}
}
}
-->
Which part of the integrals causes problems for non-planar polygons? \[\iint_f \grad u(\vec{x}) \d{A} = \oint_{\partial f} u(\vec{x}) \vec{t}(\vec{x}) \times \vec{n}(\vec{x}) \d{\vec{x}} \]
\[\mat{\tilde{M}}_f = \abs{\bar{f}} \, \mat{V}_f^{\sharp \mathsf{T}} \, \mat{V}_f^{\sharp}\]
\[\mat{M}_{f} = \mat{\tilde{M}}_f + \lambda\mat{R}_f\]
13.5053, 28.5194, 58.8386, 119.78, 241.153
deGoes20; λ=2, 0.00965471, 0.00245388, 0.000542276, 0.000145297, 3.74297E-05
deGoes20; λ=1, 0.00435302, 0.000996788, 0.000354402, 7.95537E-05, 1.73643E-05
deGoes20; λ=0.5, 0.00747841, 0.00182759, 0.00059557, 0.000138136, 3.05869E-05
deGoes20; λ=0.1, 0.0139834, 0.00327528, 0.00092799, 0.000217473, 5.03785E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
},
"type": "logarithmic"
},
"y": {
"title": {
"text": "L2 error",
"display": true
},
"type": "logarithmic"
}
}
}
}
-->
\[ {\Huge \downarrow} \; \mat{P} \]
\[ {\Huge \uparrow} \; \mat{R} = \mat{P}\T \]
\[\downarrow\] \[\downarrow\]
Solve linear system for affine prolongation weights 👍
For which (planar) elements would the virtual vertex lead to flipped virtual triangles?
Virtual refinement is completely hidden in matrix assembly step!
13.5053, 28.5194, 58.8386, 119.78, 241.153
Bunge20, 0.00768401,0.00193955,0.00057802,0.000152567,3.41754E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
},
"type": "logarithmic"
},
"y": {
"title": {
"text": "L2 error",
"display": true
},
"type": "logarithmic"
}
}
}
}
-->
Main idea: Consider the integral of differential in a small region
How do we get diamond cells on an arbitrary polygon mesh?
\[ \grad u|_D \;=\; \frac{1}{2 \abs{D}} \sum_{(i,j) \in \partial D} \vec{e}_{ij}^\perp \frac{u_i+u_j}{2} \]
\[\downarrow\] \[\downarrow\]
13.5053, 28.5194, 58.8386, 119.78, 241.153
Bunge21, 0.00610683,0.00155889,0.000413685,0.000105977,2.46064E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
},
"type": "logarithmic"
},
"y": {
"title": {
"text": "L2 error",
"display": true
},
"type": "logarithmic"
}
}
}
}
-->
13.5053, 28.5194, 58.8386, 119.78, 241.153
Martin08, 0.00951959, 0.00236579, 0.000699382, 0.000188646, 5.46139E-05
Alexa11; λ=2, 0.00838748, 0.00209687, 0.000476346, 0.000127937, 3.30444E-05
Alexa11; λ=1, 0.00456036, 0.0010483, 0.000382806, 8.53325E-05, 1.84683E-05
Alexa11; λ=0.5, 0.00800984, 0.00193734, 0.000621653, 0.000143936, 3.19937E-05
Alexa11; λ=0.1, 0.0144414, 0.00337097, 0.000947331, 0.000221091, 5.14271E-05
deGoes20; λ=2, 0.00965471, 0.00245388, 0.000542276, 0.000145297, 3.74297E-05
deGoes20; λ=1, 0.00435302, 0.000996788, 0.000354402, 7.95537E-05, 1.73643E-05
deGoes20; λ=0.5, 0.00747841, 0.00182759, 0.00059557, 0.000138136, 3.05869E-05
deGoes20; λ=0.1, 0.0139834, 0.00327528, 0.00092799, 0.000217473, 5.03785E-05
Bunge20, 0.00768401, 0.00193955, 0.00057802, 0.000152567, 3.41754E-05
Bunge21, 0.00610683,0.00155889,0.000413685,0.000105977,2.46064E-05
<!--
{
"options": {
"scales": {
"x": {
"title": {
"text": "inverse mean edge length",
"display": true
},
"type": "logarithmic"
},
"y": {
"title": {
"text": "L2 error",
"display": true
},
"type": "logarithmic"
}
}
}
}
-->
💾 Source code of all methods available on github 💾