(40 intermediate revisions by the same user not shown)
Line 25: Line 25:
 
* Guided by the local formulation, we deduce a natural way to approximate the flux/gradient-vector of a discretized function, as well as the anisotropic flux vector. We carry out a comparison of the formulas defining the flux in both DEC and Finite Element Method with linear interpolation functions (FEML).
 
* Guided by the local formulation, we deduce a natural way to approximate the flux/gradient-vector of a discretized function, as well as the anisotropic flux vector. We carry out a comparison of the formulas defining the flux in both DEC and Finite Element Method with linear interpolation functions (FEML).
  
* In order to understand how to discretize the anisotropic Poisson equation, we develop the discretization of the pull-back operator of 1-forms under an arbitrary linear trasformation or tensor. The pull-back operator is one of the basic ingredients in Exterior Differential Calculus in the smooth setting and is essential in all of its applications  in Topology [bott-Tu].  We discretize the ''pullback operator on primal 1-forms induced by an arbitrary tensor'' using Whitney interpolation (the Whitney map). The Whitney interpolation forms were introduced by Hassler Whitney in 1957 (see <span id='citeF-12'></span>[[#cite-12|[12]]] p. 139) and  Bossavit <span id='citeF-1'></span>[[#cite-1|[1]]] explained their relevance in “mixed methods” of finite elements.  To our knowledge, this is the first time that the discrete version of this operator is presented in the DEC literature.  This has allowed us to discretize, in a principled manner, the anisotropic heat equation.
+
* In order to understand how to discretize the anisotropic Poisson equation, we develop the discretization of the pull-back operator of 1-forms under an arbitrary linear trasformation or tensor. The pull-back operator is one of the basic ingredients in Exterior Differential Calculus in the smooth setting and is essential in all of its applications  in Topology [bott-Tu].  We discretize the ''pullback operator on primal 1-forms induced by an arbitrary tensor'' using Whitney interpolation (the Whitney map). The Whitney interpolation forms were introduced by Hassler Whitney in 1957 <span id='citeF-12'></span>[[#cite-12|[12]]] and  Bossavit <span id='citeF-1'></span>[[#cite-1|[1]]] explained their relevance in “mixed methods” of finite elements.  To our knowledge, this is the first time that the discrete version of this operator is presented in the DEC literature.  This has allowed us to discretize, in a principled manner, the anisotropic heat equation.
  
 
*  We carry out an analytic comparison of the DEC and FEML local formulations of the anisotropic Poisson equation.
 
*  We carry out an analytic comparison of the DEC and FEML local formulations of the anisotropic Poisson equation.
Line 41: Line 41:
 
In this section, we will recall the basic operators of Dicrete Exterior Calculus  restricting ourselves to a mesh made up of one simplex/triangle. The local results we derive in the  paper can be assembled, just as in the Finite elemnt Method,  due to the additivity of both differentiation and integration.
 
In this section, we will recall the basic operators of Dicrete Exterior Calculus  restricting ourselves to a mesh made up of one simplex/triangle. The local results we derive in the  paper can be assembled, just as in the Finite elemnt Method,  due to the additivity of both differentiation and integration.
  
Let us consider a primal mesh made up of a single (positively oriented) triangle with vertices <math display="inline">v_1,v_2,v_3</math>.
+
Let us consider a primal mesh made up of a single (positively oriented) triangle with vertices <math display="inline">v_1,v_2,v_3</math> (Figure 1).
  
 
<div id='img-1'></div>
 
<div id='img-1'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle01.png|228px|Triangle ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle01.png|328px|Triangle ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 1'''. Triangle  
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 1'''. Triangle <math display="inline">v_1,v_2,v_3</math>
 
|}
 
|}
  
Line 149: Line 149:
 
===2.2 Discrete derivative===
 
===2.2 Discrete derivative===
  
It has been argued that the DEC discretization of the differential of a function is given by the transpose of the matrix of the  boundary operator on edges (see <span id='citeF-8'></span><span id='citeF-6'></span>[[#cite-8|[8,6]]]). More precisely, suppose we have a function discretized by its values at the vertices
+
It has been argued that the DEC discretization of the differential of a function is given by the transpose of the matrix of the  boundary operator on edges <span id='citeF-8'></span><span id='citeF-6'></span>[[#cite-8|[6,8]]]. More precisely, suppose we have a function discretized by its values at the vertices
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 173: Line 173:
 
|}
 
|}
  
Indeed, such differences are rough approximations of the directional derivatives of <math display="inline">f</math> along the oriented edges.  For instance, <math display="inline">f_2-f_1</math> is a rough approximation of the directional derivative of <math display="inline">f</math> at <math display="inline">v_1</math> in the direction of the vector <math display="inline">v_2-v_1</math>, i.e.
+
Indeed, such differences are rough approximations of the directional derivatives of <math display="inline">f</math> along the oriented edges.  For instance, <math display="inline">f_2-f_1</math> is a rough approximation of the directional derivative of <math display="inline">f</math> at <math display="inline">v_1</math> in the direction of the vector <math display="inline">v_2-v_1</math>, i.e.,
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 205: Line 205:
 
The dual mesh of the primal mesh consisting of a single triangle is constructured as follows:
 
The dual mesh of the primal mesh consisting of a single triangle is constructured as follows:
  
* To the 2-dimensional triangular face <math display="inline">[v_1,v_2,v_3]</math> will correspond the 0-dimensional point given by the circumcenter <math display="inline">c</math> of the triangle.
+
* To the 2-dimensional triangular face <math display="inline">[v_1,v_2,v_3]</math> will correspond the 0-dimensional point given by the circumcenter <math display="inline">c</math> of the triangle (Figure 2).
  
 
<div id='img-2'></div>
 
<div id='img-2'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle02.png|240px|Circumcenter ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle02.png|340px|Circumcenter ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 2'''. Circumcenter  
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 2'''. Circumcenter <math display="inline">c</math> of the triangle <math display="inline">[v_1,v_2,v_3]</math>
 
|}
 
|}
  
* To the 1-dimensional edge <math display="inline">[v_1,v_2]</math> will correspond the 1-dimensional straight line segment <math display="inline">[p_1,c]</math> joining the midpoint <math display="inline">p_1</math> of the edge <math display="inline">[v_1,v_2]</math> to the circumcenter <math display="inline">c</math>.  Similarly for the other edges.
+
* To the 1-dimensional edge <math display="inline">[v_1,v_2]</math> will correspond the 1-dimensional straight line segment <math display="inline">[p_1,c]</math> joining the midpoint <math display="inline">p_1</math> of the edge <math display="inline">[v_1,v_2]</math> to the circumcenter <math display="inline">c</math> (Figure 3).  Similarly for the other edges.
  
 
<div id='img-3'></div>
 
<div id='img-3'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle03.png|240px|Dual segment ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle03.png|340px|Dual segment ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 3'''. Dual segment  
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 3'''. Dual segment <math display="inline">[p_1,c]</math> of the edge <math display="inline">[v_1,v_2]</math>
 
|}
 
|}
  
* To the 0-dimensional vertex/node <math display="inline">[v_1]</math> will correspond the oriented <math display="inline">2</math>-dimensional quadrilateral <math display="inline">[v_1,p_1,c,p_3]</math>.
+
* To the 0-dimensional vertex/node <math display="inline">[v_1]</math> will correspond the oriented <math display="inline">2</math>-dimensional quadrilateral <math display="inline">[v_1,p_1,c,p_3]</math> (Figure 4).
  
 
<div id='img-4'></div>
 
<div id='img-4'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: bottom;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: bottom;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle04.png|240px|Dual quadrilateral  ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Triangle04.png|340px|Dual quadrilateral  ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 4'''. Dual quadrilateral   
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 4'''. Dual quadrilateral <math display="inline">[v_1,p_1,c,p_3]</math> of the vertex <math display="inline">[v_1]</math>
 
|}
 
|}
  
Line 396: Line 396:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>S(X(p))\cdot Y    =X(p)\cdot S^T Y </math>
+
| style="text-align: center;" | <math>S(X(p))\cdot Y    =X(p)\cdot S^T Y =\alpha (p, S^T Y)    =(S^T)^*\alpha (p, Y),  </math>
|-
+
| style="text-align: center;" | <math>    =\alpha (p, S^T Y) </math>
+
|-
+
| style="text-align: center;" | <math>   =(S^T)^*\alpha (p, Y),  </math>
+
 
|}
 
|}
 
|}
 
|}
Line 684: Line 680:
 
|}
 
|}
  
As in subsection [[#2.2 Discrete derivative|2.2]], the rough approximations to directional derivatives of a function <math display="inline">f</math> in the directions of the (oriented) edges are given as follows
+
As in Subsection [[#2.2 Discrete derivative|2.2]], the rough approximations to directional derivatives of a function <math display="inline">f</math> in the directions of the (oriented) edges are given as follows
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 764: Line 760:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>f_3-f_1 = W_1\cdot (v_3-v_1) </math>
+
| style="text-align: center;" | <math>f_3-f_1 = W_1\cdot (v_3-v_1) = W_1\cdot (v_3-v_2+v_2-v_1)</math>
 
|-
 
|-
| style="text-align: center;" | <math> = W_1\cdot (v_3-v_2+v_2-v_1)</math>
+
| style="text-align: center;" | <math> = W_1\cdot (v_3-v_2)+W_1\cdot (v_2-v_1)= W_1\cdot (v_3-v_2)+f_2-f_1, </math>
|-
+
| style="text-align: center;" | <math> = W_1\cdot (v_3-v_2)+W_1\cdot (v_2-v_1)</math>
+
|-
+
| style="text-align: center;" | <math> = W_1\cdot (v_3-v_2)+f_2-f_1, </math>
+
 
|}
 
|}
 
|}
 
|}
Line 987: Line 979:
 
====4.2.1 <span id='lb-4.2.1'></span>Geometric interpretation of the entries of <math>K^{DEC}</math>====
 
====4.2.1 <span id='lb-4.2.1'></span>Geometric interpretation of the entries of <math>K^{DEC}</math>====
  
Consider the following figure, where <math display="inline">J</math> denotes the <math display="inline">90^\circ </math> anti-clockwise rotation
+
Consider the Figure [[#img-5|5]], where <math display="inline">J</math> denotes the <math display="inline">90^\circ </math> anti-clockwise rotation
  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
 
{| class="formulaSCP" style="width: 100%; text-align: left;"  
Line 1,001: Line 993:
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-DiscretizedAnisotropyOperator03-v2.png|360px|Geometric interpretation of the entries of the anisotropy tensor discretization ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-DiscretizedAnisotropyOperator03-v2.png|420px|Geometric interpretation of the entries of the anisotropy tensor discretization ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding:10px;"| '''Figure 5'''. Geometric interpretation of the entries of the anisotropy tensor discretization  
+
| colspan="1" style="padding:10px;"| '''Figure 5'''. Geometric interpretation of the entries of the anisotropy tensor discretization <math>K^{DEC}</math>
 
|}
 
|}
  
Line 1,073: Line 1,065:
 
|}
 
|}
  
In order to simplify the notation, consider the lengths and areas defined in the Figure [[#img-6|6]].
+
In order to simplify the notation, consider the lengths and areas defined in Figure [[#img-6|6]].
  
 
<div id='img-6'></div>
 
<div id='img-6'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-WellCenteredTriangle02-eps-converted-to.png|210px|Triangle ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-WellCenteredTriangle02-eps-converted-to.png|310px|Triangle ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| colspan="1" style="padding-bottom:10px;"| '''Figure 6'''. Triangle  
 
| colspan="1" style="padding-bottom:10px;"| '''Figure 6'''. Triangle  
Line 1,181: Line 1,173:
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-WellCenteredTriangle03-eps-converted-to.png|198px|Circumscribed triangle.]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-WellCenteredTriangle03-eps-converted-to.png|298px|Circumscribed triangle.]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| colspan="1" style="padding-bottom:10px;"| '''Figure 7'''. Circumscribed triangle.
 
| colspan="1" style="padding-bottom:10px;"| '''Figure 7'''. Circumscribed triangle.
Line 1,246: Line 1,238:
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
{| style="text-align: left; margin:auto;width: 100%;"  
 
|-
 
|-
| style="text-align: center;" | <math>\begin{array}{l} \displaystyle{1\over 4A}\left(\displaystyle{l_1(\eta ^K_{3,1}+\eta ^K_{2, 1}-\eta ^K_{1, 1})\over L_1}+\displaystyle{l_3(\eta ^K_{3, 2}+\eta ^K_{2,2}-\eta ^K_{1, 2})\over L_3}\right)    &=&   -\displaystyle{1 \over 2A }\left(\displaystyle{l_1\over L_1}J(v_3-v_2)\cdot K(v_2-v_1) +  \displaystyle{l_1\over L_1}J(v_3-v_2)\cdot K(v_3-v_1) \right)    \\    &=&     \displaystyle{J(v_3-v_2)\cdot K(v_1-v_3)\over 2A}{\tan (\alpha _3)\over 2}    -\displaystyle{J(v_3-v_2)\cdot K( v_2-v_1)\over 2A}\displaystyle{\tan (\alpha _1)\over 2}\\    &=&     \displaystyle{1\over 4A}J(v_3-v_2)\cdot K((v_1-v_3)\tan (\alpha _3)- (v_2-v_1)\tan (\alpha _1)). \end{array}</math>
+
| style="text-align: center;" | <math>\begin{array}{l} & \displaystyle{1\over 4A}\left(\displaystyle{l_1(\eta ^K_{3,1}+\eta ^K_{2, 1}-\eta ^K_{1, 1})\over L_1}+\displaystyle{l_3(\eta ^K_{3, 2}+\eta ^K_{2,2}-\eta ^K_{1, 2})\over L_3}\right)    =\\
 +
&\qquad = -\displaystyle{1 \over 2A }\left(\displaystyle{l_1\over L_1}J(v_3-v_2)\cdot K(v_2-v_1) +  \displaystyle{l_1\over L_1}J(v_3-v_2)\cdot K(v_3-v_1) \right)    \\     
 +
&\qquad =    \displaystyle{J(v_3-v_2)\cdot K(v_1-v_3)\over 2A}{\tan (\alpha _3)\over 2}    -\displaystyle{J(v_3-v_2)\cdot K( v_2-v_1)\over 2A}\displaystyle{\tan (\alpha _1)\over 2}\\     
 +
&\qquad =    \displaystyle{1\over 4A}J(v_3-v_2)\cdot K((v_1-v_3)\tan (\alpha _3)- (v_2-v_1)\tan (\alpha _1)). \end{array}</math>
 
|}
 
|}
 
|}
 
|}
Line 1,380: Line 1,375:
 
|-
 
|-
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle01a-eps-converted-to.png|180px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle01a-eps-converted-to.png|180px|]]
|-
 
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NegativeAngles01-eps-converted-to.png|180px|Negative (exterior) angles measured in an obtuse triangle.]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NegativeAngles01-eps-converted-to.png|180px|Negative (exterior) angles measured in an obtuse triangle.]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding:10px;"| '''Figure 8'''. Negative (exterior) angles measured in an obtuse triangle.
+
| colspan="2" style="padding:10px;"| '''Figure 8'''. Negative (exterior) angles measured in an obtuse triangle
 
|}
 
|}
  
Line 1,416: Line 1,410:
 
|-
 
|-
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle03a-eps-converted-to.png|200px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle03a-eps-converted-to.png|200px|]]
|-
 
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle04a-eps-converted-to.png|200px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle04a-eps-converted-to.png|200px|]]
|-
 
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle05a-eps-converted-to.png|200px|Area weight assigned to ]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle05a-eps-converted-to.png|200px|Area weight assigned to ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 9:''' Area weight assigned to  
+
| colspan="3" style="padding-bottom:10px;"| '''Figure 9'''. Area weight assigned to <math display="inline">v_1</math>
 
|}
 
|}
  
  
The area <math display="inline">A_3</math> is computed similarly, where the triangle <math display="inline">[p_3,v_3,c]</math> is assigned negative area (see Figure [[#img-10|10]]).
+
The area <math display="inline">A_3</math> is computed similarly, where the triangle <math display="inline">[p_3,v_3,c]</math> is assigned negative area (Figure [[#img-10|10]]).
  
 
<div id='img-10'></div>
 
<div id='img-10'></div>
Line 1,431: Line 1,423:
 
|-
 
|-
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle06a-eps-converted-to.png|200px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle06a-eps-converted-to.png|200px|]]
|-
 
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle07a-eps-converted-to.png|200px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle07a-eps-converted-to.png|200px|]]
|-
 
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle08a-eps-converted-to.png|200px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle08a-eps-converted-to.png|200px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 10:''' Area weight assigned to  
+
| colspan="3" style="padding-bottom:10px;"| '''Figure 10'''. Area weight assigned to <math display="inline">v_3</math>
 
|}
 
|}
  
Line 1,445: Line 1,435:
 
|-
 
|-
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle09a-eps-converted-to.png|200px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle09a-eps-converted-to.png|200px|]]
|-
 
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle10a-eps-converted-to.png|200px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle10a-eps-converted-to.png|200px|]]
|-
 
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle11a-eps-converted-to.png|200px|Area weight assigned to ]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-NonWellCenteredTriangle11a-eps-converted-to.png|200px|Area weight assigned to ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 11:''' Area weight assigned to  
+
| colspan="3" style="padding-bottom:10px;"| '''Figure 11'''. Area weight assigned to <math display="inline">v_2</math>
 
|}
 
|}
  
 
==7. Numerical examples==
 
==7. Numerical examples==
  
In this section, we present three numerical examples in order to illustrate the performance of DEC resulting from the local formulation and its implementation.  In all cases, we solve the anisotropic Poisson equation. The FEML methodology that we have used in the comparison can be consulted <span id='citeF-11'></span><span id='citeF-13'></span><span id='citeF-2'></span>[[#cite-11|[11,13,2]]].
+
In this section, we present three numerical examples in order to illustrate the performance of DEC resulting from the local formulation and its implementation.  In all cases, we solve the anisotropic Poisson equation. The FEML methodology that we have used in the comparison can be consulted <span id='citeF-11'></span><span id='citeF-13'></span><span id='citeF-2'></span>[[#cite-11|[2,11,13]]].
  
 
===7.1 First example: Heterogeneity===
 
===7.1 First example: Heterogeneity===
Line 1,473: Line 1,461:
  
  
The meshes used in this example are shown in Figure [[#img-14|14]] and vary from coarse to very fine.  
+
The meshes used in this example are shown in Figure [[#img-13|13]] and vary from coarse to very fine.  
  
<div id='img-13'></div>
+
<div id='img-13a'></div>
<div id='img-13'></div>
+
<div id='img-13b'></div>
 
<div id='img-13c'></div>
 
<div id='img-13c'></div>
 +
<div id='img-13d'></div>
 +
<div id='img-13e'></div>
 +
<div id='img-13f'></div>
 
<div id='img-13'></div>
 
<div id='img-13'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
Line 1,485: Line 1,476:
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_13_Square_m3.png|144px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_13_Square_m3.png|144px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| (a)  
+
| (a)  
 
| (b)  
 
| (b)  
 
| (c)  
 
| (c)  
|- style="text-align: center; font-size: 75%;"
 
| colspan="3" style="padding:10px;"| '''Figure 13'''
 
|}
 
 
<div id='img-14a'></div>
 
<div id='img-14b'></div>
 
<div id='img-14c'></div>
 
<div id='img-14'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
 
|-
 
|-
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_13_Square_m4.png|150px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_13_Square_m4.png|150px|]]
Line 1,502: Line 1,484:
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_13_Square_m6.png|150px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_13_Square_m6.png|150px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| (a)  
+
| (d)  
| (b)  
+
| (e)  
| (c)  
+
| (f)  
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="3" style="padding:10px;"| '''Figure 14'''. Six of the meshes used in the first example
+
| colspan="3" style="padding:10px;"| '''Figure 13'''. Six of the meshes used in the first example
 
|}
 
|}
  
The numerical results for the maximum temperature value are exemplified in Table [[#7.1 First example: Heterogeneity|7.1]].
+
The numerical results for the maximum temperature value are exemplified in Table [[#table-1|1]].
  
<div class="center" style="font-size: 75%;">Numerical simulation results of the first example</div>
+
<div id='table-1'></div>
 +
<div class="center" style="font-size: 75%;">'''Table 1'''. Numerical simulation results of the first example</div>
  
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
Line 1,526: Line 1,509:
 
| style="border-left: 1px solid;border-right: 2px solid;" | FEML   
 
| style="border-left: 1px solid;border-right: 2px solid;" | FEML   
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
| style="border-left: 2px solid;border-right: 1px solid;" |    Figure [[#img-14|14]](a)  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    Figure [[#img-13|13]](a)  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 49  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 49  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 80  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 80  
Line 1,534: Line 1,517:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 13.453  
 
| style="border-left: 1px solid;border-right: 2px solid;" | 13.453  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-14|14]](b)  
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-13|13]](b)  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 98  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 98  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 162  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 162  
Line 1,542: Line 1,525:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 14.024  
 
| style="border-left: 1px solid;border-right: 2px solid;" | 14.024  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-14|14]](c)  
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-13|13]](c)  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 258  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 258  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 466  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 466  
Line 1,550: Line 1,533:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 14.770  
 
| style="border-left: 1px solid;border-right: 2px solid;" | 14.770  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-14|14]](d)  
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-13|13]](d)  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 1,010  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 1,010  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 1,914  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 1,914  
Line 1,558: Line 1,541:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 15.006  
 
| style="border-left: 1px solid;border-right: 2px solid;" | 15.006  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-14|14]](e)  
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-13|13]](e)  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 3,813  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 3,813  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 7,424  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 7,424  
Line 1,566: Line 1,549:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 15.228  
 
| style="border-left: 1px solid;border-right: 2px solid;" | 15.228  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-14|14]](f)  
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-13|13]](f)  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 13,911  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 13,911  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 27,420  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 27,420  
Line 1,616: Line 1,599:
  
  
The temperature and flux-magnitude distribution fields are shown in Figure [[#img-15|15]].     
+
The temperature and flux-magnitude distribution fields are shown in Figure [[#img-14|14]].     
  
<div id='img-15a'></div>
+
<div id='img-14a'></div>
<div id='img-15b'></div>
+
<div id='img-14b'></div>
<div id='img-15'></div>
+
<div id='img-14'></div>
 
{| style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;max-width: auto;"
 
{| style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;max-width: auto;"
 
|-
 
|-
Line 1,629: Line 1,612:
 
|  style="text-align: center;font-size: 75%;"|(b) Contour fill of flux vectors on Elems
 
|  style="text-align: center;font-size: 75%;"|(b) Contour fill of flux vectors on Elems
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="2" style="padding:10px;"| '''Figure 15'''. Temperature and flux-magnitude distribution fields of the first example
+
| colspan="2" style="padding:10px;"| '''Figure 14'''. Temperature and flux-magnitude distribution fields of the first example
 
|}
 
|}
  
  
Figure [[#img-16|16]] shows the graphs of the temperature and the flux-magnitude along a horizontal line crossing the inner circle for the first two meshes.  
+
Figure [[#img-15|15]] shows the graphs of the temperature and the flux-magnitude along a horizontal line crossing the inner circle for the first two meshes.  
  
<div id='img-16a'></div>
+
<div id='img-15a'></div>
<div id='img-16b'></div>
+
<div id='img-15b'></div>
<div id='img-16c'></div>
+
<div id='img-15c'></div>
<div id='img-16d'></div>
+
<div id='img-15d'></div>
<div id='img-16e'></div>
+
<div id='img-15e'></div>
<div id='img-16f'></div>
+
<div id='img-15f'></div>
<div id='img-16'></div>
+
<div id='img-15'></div>
 
{| style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;max-width: auto;"
 
{| style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;max-width: auto;"
 
|-
 
|-
Line 1,662: Line 1,645:
 
| style="text-align: center;font-size: 75%;"|(f)  
 
| style="text-align: center;font-size: 75%;"|(f)  
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="2" style="padding:10px;"| '''Figure 16'''. Temperature and Flux magnitude graphs of the first example along a cross-section of the domain for different meshes
+
| colspan="2" style="padding:10px;"| '''Figure 15'''. Temperature and Flux magnitude graphs of the first example along a cross-section of the domain for different meshes
 
|}
 
|}
  
  
In Table [[#table-1|1]], we show some global error metrics for different meshes. Figure [[#img-17|17]] shows the error evolution in <math display="inline">L^2</math> norm for this example.
+
Table [[#table-2|2]] shows some global error metrics for different meshes. Figure [[#img-16|16]] shows the error evolution in <math display="inline">L^2</math> norm for this example.
  
<div class="center" style="font-size: 75%;">'''Table 1'''. tableDEC <math>L^2</math> errors in the first example</div>
+
<div id='table-2'></div>
 +
<div class="center" style="font-size: 75%;">'''Table 2'''. DEC <math>L^2</math> errors in the first example</div>
  
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
Line 1,729: Line 1,713:
  
  
<div id='img-17'></div>
+
<div id='img-16'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-DEC_Error_Graph_Square_Circle.png|430px|DEC ]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-DEC_Error_Graph_Square_Circle.png|430px|DEC ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 17'''. DEC  
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 16'''. DEC <math>L^2</math> error in the first example
 
|}
 
|}
  
 
===7.2 Second example: Anisotropy===
 
===7.2 Second example: Anisotropy===
  
Let us solve the Poisson equation in a circle of radius one centered at the origin <math display="inline">(0,0)</math> under the following conditions (see Figure [[#img-18|18]]):
+
Let us solve the Poisson equation in a circle of radius one centered at the origin <math display="inline">(0,0)</math> under the following conditions (Figure [[#img-17|17]]):
  
 
* heat anisotropic diffusion constants <math display="inline">K_x = 1.5, K_y=1.0</math>;
 
* heat anisotropic diffusion constants <math display="inline">K_x = 1.5, K_y=1.0</math>;
Line 1,751: Line 1,735:
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_16_CircleWithConditions.png|180px|Disk of radius one.]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_16_CircleWithConditions.png|180px|Disk of radius one.]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 18'''. Disk of radius one.
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 17'''. Disk of radius one
 
|}
 
|}
  
  
The meshes used in this example are shown in Figure [[#img-19|19]] and vary from very coarse to very fine.  
+
The meshes used in this example are shown in Figure [[#img-18|18]] and vary from very coarse to very fine.  
  
<div id='img-19a'></div>
+
<div id='img-18a'></div>
<div id='img-19b'></div>
+
<div id='img-18b'></div>
<div id='img-19c'></div>
+
<div id='img-18c'></div>
<div id='img-19d'></div>
+
<div id='img-18d'></div>
<div id='img-19e'></div>
+
<div id='img-18e'></div>
<div id='img-19f'></div>
+
<div id='img-18f'></div>
<div id='img-19'></div>
+
<div id='img-18'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
Line 1,769: Line 1,753:
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh2.png|144px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh2.png|144px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh3.png|144px|]]
 
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh3.png|144px|]]
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh4.png|144px|]]
 
 
|-  
 
|-  
 
| style="text-align: center;font-size: 75%;"|(a)  
 
| style="text-align: center;font-size: 75%;"|(a)  
 
| style="text-align: center;font-size: 75%;"|(b)  
 
| style="text-align: center;font-size: 75%;"|(b)  
 
| style="text-align: center;font-size: 75%;"|(c)  
 
| style="text-align: center;font-size: 75%;"|(c)  
| style="text-align: center;font-size: 75%;"|(d)
 
 
|-
 
|-
|
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh4.png|144px|]]
 
|colspan="1" style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh5.png|144px|]]
 
|colspan="1" style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh5.png|144px|]]
 
|colspan="1" style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh6.png|144px|]]
 
|colspan="1" style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_17_CircleMesh6.png|144px|]]
|
 
 
|-  
 
|-  
|
+
| style="text-align: center;font-size: 75%;"|(d)
 
|colspan="1"  style="text-align: center;font-size: 75%;"|(e)  
 
|colspan="1"  style="text-align: center;font-size: 75%;"|(e)  
 
| colspan="1" style="text-align: center;font-size: 75%;"|(f)  
 
| colspan="1" style="text-align: center;font-size: 75%;"|(f)  
|
 
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="4" style="padding:10px;" | '''Figure 19'''. First six meshes used for unit disk.
+
| colspan="3" style="padding:10px;" | '''Figure 18'''. First six meshes used for unit disk
 
|}
 
|}
The numerical results for the maximum temperature value (<math display="inline">u(0,0)=10.2</math>) are exemplified in Table [[#7.2 Second example: Anisotropy|7.2]] where  a comparison with the Finite Element Method with linear interpolation functions (FEML) is also shown.
 
  
<div style="text-align: center; font-size: 75%; ">Temperature value at the point </div>   
+
 
 +
The numerical results for the maximum temperature value (<math display="inline">u(0,0)=10.2</math>) are exemplified in Table [[#table-3|3]] where  a comparison with the Finite Element Method with linear interpolation functions (FEML) is also shown.
 +
 
 +
<div id='table-3'></div>
 +
<div style="text-align: center; font-size: 75%; ">'''Table 3'''. Temperature value at the point (0,0) and Flux magnitude value at the point (-1, 0) of the numerical simulations for the second example</div>   
  
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
Line 1,805: Line 1,788:
 
| style="border-left: 1px solid;border-right: 2px solid;" | FEML   
 
| style="border-left: 1px solid;border-right: 2px solid;" | FEML   
 
|-  
 
|-  
| style="border-left: 2px solid;border-right: 1px solid;" |    Figure [[#img-19|19]](a)
+
| style="border-left: 2px solid;border-right: 1px solid;" |    Figure [[#img-18|18]](a)
 
| style="border-left: 1px solid;border-right: 1px solid;" | 17  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 17  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 20   
 
| style="border-left: 1px solid;border-right: 1px solid;" | 20   
Line 1,813: Line 1,796:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.43865
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.43865
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-19|19]](b)
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-18|18]](b)
 
| style="border-left: 1px solid;border-right: 1px solid;" | 41  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 41  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 56   
 
| style="border-left: 1px solid;border-right: 1px solid;" | 56   
Line 1,821: Line 1,804:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.49387
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.49387
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-19|19]](c)
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-18|18]](c)
 
| style="border-left: 1px solid;border-right: 1px solid;" | 201  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 201  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 344   
 
| style="border-left: 1px solid;border-right: 1px solid;" | 344   
Line 1,829: Line 1,812:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.52428
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.52428
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-19|19]](d)
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-18|18]](d)
 
| style="border-left: 1px solid;border-right: 1px solid;" | 713  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 713  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 1304  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 1304  
Line 1,837: Line 1,820:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.54224
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.54224
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-19|19]](e)
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-18|18]](e)
 
| style="border-left: 1px solid;border-right: 1px solid;" | 2455
 
| style="border-left: 1px solid;border-right: 1px solid;" | 2455
 
| style="border-left: 1px solid;border-right: 1px solid;" | 4660  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 4660  
Line 1,845: Line 1,828:
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.55138
 
| style="border-left: 1px solid;border-right: 2px solid;" | 0.55138
 
|-
 
|-
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-19|19]](f)
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-18|18]](f)
 
| style="border-left: 1px solid;border-right: 1px solid;" | 8180
 
| style="border-left: 1px solid;border-right: 1px solid;" | 8180
 
| style="border-left: 1px solid;border-right: 1px solid;" | 15862  
 
| style="border-left: 1px solid;border-right: 1px solid;" | 15862  
Line 1,871: Line 1,854:
  
  
The temperature distribution and Flux magnitude fields for the finest mesh are shown in Figure [[#img-20|20]].  
+
The temperature distribution and Flux magnitude fields for the finest mesh are shown in Figure [[#img-19|19]].  
  
<div id='img-20a'></div>
+
<div id='img-19a'></div>
<div id='img-20b'></div>
+
<div id='img-19b'></div>
<div id='img-20'></div>
+
<div id='img-19'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
Line 1,884: Line 1,867:
 
| (b) Contour Fill of Flux vectors on Elems
 
| (b) Contour Fill of Flux vectors on Elems
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="2" style="padding:10px;"| '''Figure 20'''. Temperature distribution and Flux magnitude fields for the finest mesh of the second example.
+
| colspan="2" style="padding:10px;"| '''Figure 19'''. Temperature distribution and Flux magnitude fields for the finest mesh of the second example
 
|}
 
|}
  
Figures [[#img-21|21]](a), [[#img-21|21]](b)  and [[#img-21|21]](c)  show the graphs of the temperature and flux magnitude values along a diameter of the circle for the different meshes of Figures [[#img-19|19]](a), [[#img-19|19]](b) and [[#img-19|19]](c) respectively.
 
  
<div id='img-21a'></div>
+
Figures [[#img-20|20]](a), (b) and (c)  show the graphs of the temperature and flux magnitude values along a diameter of the circle for the different meshes of Figures [[#img-19|18]](a), (b) and (c), respectively.
<div id='img-21b'></div>
+
 
<div id='img-21c'></div>
+
<div id='img-20a'></div>
<div id='img-21d'></div>
+
<div id='img-20b'></div>
<div id='img-21e'></div>
+
<div id='img-20c'></div>
<div id='img-21f'></div>
+
<div id='img-20d'></div>
<div id='img-21'></div>
+
<div id='img-20e'></div>
 +
<div id='img-20f'></div>
 +
<div id='img-20'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleTempCrossSection01.png|234px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleTempCrossSection01.png|300px|]]
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleFluxCrossSection01.png|234px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleFluxCrossSection01.png|300px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| (a)  
 
| (a)  
 
| (b)  
 
| (b)  
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleTempCrossSection02.png|234px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleTempCrossSection02.png|300px|]]
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleFluxCrossSection02.png|234px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleFluxCrossSection02.png|300px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| (c)  
 
| (c)  
 
| (d)  
 
| (d)  
 
|-
 
|-
|style="padding:10px;"|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleTempCrossSection03.png|234px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleTempCrossSection03.png|300px|]]
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleFluxCrossSection03.png|234px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_19_CircleFluxCrossSection03.png|300px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| (e)  
 
| (e)  
 
| (f)  
 
| (f)  
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="2" style="padding:10px;"| '''Figure 21'''. Temperature and Flux magnitude graphs of the second example along a diameter of the circle for different meshes:   mesh in Figure  
+
| colspan="2" style="padding:10px;"| '''Figure 20'''. Temperature and Flux magnitude graphs of the second example along a diameter of the circle for different meshes: mesh in Figure Figure [[#img-18|18]](a), a-Temperature, b-Flux; mesh in Figure [[#img-18|18]](b), c-Temperature, d-Flux; mesh in Figure [[#img-18|18]](c), e-Temperature, f-Flux
 
|}
 
|}
  
In Table [[#table-2|2]], we show some global error metrics for different meshes.  Figure [[#img-22|22]] shows the  error evolution in <math display="inline">L^2</math> norm for this example.
 
  
<div class="center" style="font-size: 75%;">'''Table 2'''. tableDEC errors in the second example</div>
+
Table [[#table-4|4]] shows some global error metrics for different meshes.  Figure [[#img-21|21]] shows the  error evolution in <math display="inline">L^2</math> norm for this example.
 +
 
 +
<div id='table-4'></div>
 +
<div class="center" style="font-size: 75%;">'''Table 4'''. DEC errors in the second example</div>
  
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
 
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
Line 1,992: Line 1,978:
  
  
<div id='img-22'></div>
+
<div id='img-21'></div>
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-DEC_Error_Graph_Circle.png|330px|DEC ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-DEC_Error_Graph_Circle.png|430px|DEC ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" style="padding-bottom:10px;"| '''Figure 22'''. DEC  
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 21'''. DEC <math>L^2</math> error evolution in the second example
 
|}
 
|}
  
 
===7.3 Third example: Heterogeneity and anisotropy===
 
===7.3 Third example: Heterogeneity and anisotropy===
  
Let us solve the Poisson equation in a circle of radius on the following domain (see Figure [[#img-23|23]]) with various material properties. The geometry of the domain is defined by segments of ellipses passing through the given points which have centers at the origin <math display="inline">(0,0)</math>.  <div id='img-23'></div>
+
Let us solve the Poisson equation in a circle of radius on the following domain (Figure [[#img-22|22]]) with various material properties. The geometry of the domain is defined by segments of ellipses passing through the given points which have centers at the origin <math display="inline">(0,0)</math>.   
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
 
 +
<div id='img-23'></div>
 +
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-Fig_20_HuevoGeometry.png|240px|Egg-like domain with different materials.]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_20_HuevoGeometry.png|340px|Egg-like domain with different materials.]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" | '''Figure 23:''' Egg-like domain with different materials.
+
| colspan="1" style="padding:10px;"| '''Figure 22'''. Egg-like domain with different materials
 
|}
 
|}
  
  
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;"
+
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:40%;font-size:85%;"
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
 
| style="border-left: 2px solid;border-right: 2px solid;" |    Point  
 
| style="border-left: 2px solid;border-right: 2px solid;" |    Point  
Line 2,020: Line 2,008:
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>y</math>
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>y</math>
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    a  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    a  
| style="border-left: 2px solid;border-right: 2px solid;" | -5  
+
| style="border-left: 1px solid;border-right: 1px solid;" | -5  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | A  
+
| style="border-left: 1px solid;border-right: 1px solid;" | A  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | -4  
+
| style="border-left: 1px solid;border-right: 2px solid;" | -4  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | b  
+
| style="border-left: 2px solid;border-right: 1px solid;" | b  
| style="border-left: 2px solid;border-right: 2px solid;" | -4  
+
| style="border-left: 1px solid;border-right: 1px solid;" | -4  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | B  
+
| style="border-left: 1px solid;border-right: 1px solid;" | B  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | -3  
+
| style="border-left: 1px solid;border-right: 2px solid;" | -3  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | c  
+
| style="border-left: 2px solid;border-right: 1px solid;" | c  
| style="border-left: 2px solid;border-right: 2px solid;" | -3  
+
| style="border-left: 1px solid;border-right: 1px solid;" | -3  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | C  
+
| style="border-left: 1px solid;border-right: 1px solid;" | C  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | -2  
+
| style="border-left: 1px solid;border-right: 2px solid;" | -2  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | d  
+
| style="border-left: 2px solid;border-right: 1px solid;" | d  
| style="border-left: 2px solid;border-right: 2px solid;" | -1  
+
| style="border-left: 1px solid;border-right: 1px solid;" | -1  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | D  
+
| style="border-left: 1px solid;border-right: 1px solid;" | D  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | -1  
+
| style="border-left: 1px solid;border-right: 2px solid;" | -1  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | e  
+
| style="border-left: 2px solid;border-right: 1px solid;" | e  
| style="border-left: 2px solid;border-right: 2px solid;" | 1  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | E  
+
| style="border-left: 1px solid;border-right: 1px solid;" | E  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | 1  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 1  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | f  
+
| style="border-left: 2px solid;border-right: 1px solid;" | f  
| style="border-left: 2px solid;border-right: 2px solid;" | 6  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 6  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | F  
+
| style="border-left: 1px solid;border-right: 1px solid;" | F  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | 2  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 2  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | g  
+
| style="border-left: 2px solid;border-right: 1px solid;" | g  
| style="border-left: 2px solid;border-right: 2px solid;" | 7  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 7  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | G  
+
| style="border-left: 1px solid;border-right: 1px solid;" | G  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | 3  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 3  
 
|- style="border-bottom: 2px solid;"
 
|- style="border-bottom: 2px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" | h  
+
| style="border-left: 2px solid;border-right: 1px solid;" | h  
| style="border-left: 2px solid;border-right: 2px solid;" | 8  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 8  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | H  
+
| style="border-left: 1px solid;border-right: 1px solid;" | H  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | 4  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 4  
 
+
 
|}
 
|}
  
* The Dirichlet boundary condition is <math display="inline">u=10</math> and material properties (anisotropic heat diffusion constants, material angles and source terms) are given according to Figure [[#img-24|24]] and the table below.  <div id='img-24'></div>
+
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
* The Dirichlet boundary condition is <math display="inline">u=10</math> and material properties (anisotropic heat diffusion constants, material angles and source terms) are given according to Figure [[#img-23|23]] and the table below.   
 +
 
 +
<div id='img-24'></div>
 +
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-Fig_21_HuevoWithConditions.png|228px|Dirichlet condition.]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_21_HuevoWithConditions.png|300px|Dirichlet condition.]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" | '''Figure 24:''' Dirichlet condition.
+
| colspan="1" style="padding:10px;"| '''Figure 23'''. Dirichlet condition
 
|}
 
|}
  
  
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;"
+
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:40%;font-size:85%;"
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
 
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" |     
 
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" |     
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>K_x</math>
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>K_x</math>
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>K_y</math>
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>K_y</math>
| style="border-left: 2px solid;border-right: 2px solid;" | angle
+
| style="border-left: 2px solid;border-right: 2px solid;" | Angle
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>q</math>
 
| style="border-left: 2px solid;border-right: 2px solid;" | <math>q</math>
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" |    Domain mat1
+
| style="text-align: left;border-left: 2px solid;border-right: 1px solid;" |    Domain mat1
| style="border-left: 2px solid;border-right: 2px solid;" | 5  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 5  
| style="border-left: 2px solid;border-right: 2px solid;" | 25  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 25  
| style="border-left: 2px solid;border-right: 2px solid;" | 30  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 30  
| style="border-left: 2px solid;border-right: 2px solid;" | 15
+
| style="border-left: 1px solid;border-right: 2px solid;" | 15
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" |    Domain mat2
+
| style="text-align: left;border-left: 2px solid;border-right: 1px solid;" |    Domain mat2
| style="border-left: 2px solid;border-right: 2px solid;" | 25  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 25  
| style="border-left: 2px solid;border-right: 2px solid;" | 5  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 5  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | 5
+
| style="border-left: 1px solid;border-right: 2px solid;" | 5
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" |    Domain mat3
+
| style="text-align: left;border-left: 2px solid;border-right: 1px solid;" |    Domain mat3
| style="border-left: 2px solid;border-right: 2px solid;" | 50  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 50  
| style="border-left: 2px solid;border-right: 2px solid;" | 12
+
| style="border-left: 1px solid;border-right: 1px solid;" | 12
| style="border-left: 2px solid;border-right: 2px solid;" | 45
+
| style="border-left: 1px solid;border-right: 1px solid;" | 45
| style="border-left: 2px solid;border-right: 2px solid;" | 5
+
| style="border-left: 1px solid;border-right: 2px solid;" | 5
|- style="border-top: 2px solid;border-bottom: 2px solid;"
+
|- style="border-top: 1px solid;border-bottom: 2px solid;"
| style="text-align: left;border-left: 2px solid;border-right: 2px solid;" |    Domain mat4
+
| style="text-align: left;border-left: 2px solid;border-right: 1px solid;" |    Domain mat4
| style="border-left: 2px solid;border-right: 2px solid;" | 10  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 10  
| style="border-left: 2px solid;border-right: 2px solid;" | 35  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 35  
| style="border-left: 2px solid;border-right: 2px solid;" | 0  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 0  
| style="border-left: 2px solid;border-right: 2px solid;" | 5
+
| style="border-left: 1px solid;border-right: 2px solid;" | 5
 
+
 
|}
 
|}
  
The meshes used in this example are shown in Figure [[#img-25|25]]. <div id='img-25a'></div>
+
 
<div id='img-25b'></div>
+
The meshes used in this example are shown in Figure [[#img-24|24]].  
<div id='img-25c'></div>
+
 
<div id='img-25d'></div>
+
<div id='img-24a'></div>
<div id='img-25'></div>
+
<div id='img-24b'></div>
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
<div id='img-24c'></div>
 +
<div id='img-24d'></div>
 +
<div id='img-24'></div>
 +
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh1.png|210px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh1.png|210px|]]
|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh2.png|210px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh2.png|210px|]]
|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh3.png|210px|]]
+
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| (a)  
 
| (a)  
 
| (b)  
 
| (b)  
| (c)
 
 
|-
 
|-
| colspan="3"|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh4.png|210px|]]
+
| style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh3.png|210px|]]
 +
| style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_22_HuevoMesh4.png|210px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 +
| (c)
 
| (d)  
 
| (d)  
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="3" | '''Figure 25:''' Meshes for layered egg-like figure.
+
| colspan="3" style="padding:10px;"| '''Figure 24'''. Meshes for layered egg-like figure
 
|}
 
|}
The numerical results for the maximum temperature value (<math display="inline">u(0,0)=10.2</math>) are exemplified in Table [[#7.3 Third example: Heterogeneity and anisotropy|7.3]] where  a comparison with the Finite Element Method with linear interpolation functions (FEML) is also shown.
 
  
  
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;"
+
The numerical results for the maximum temperature value (<math display="inline">u(0,0)=10.2</math>) are exemplified in Table [[#table-5|5]] where  a comparison with the Finite Element Method with linear interpolation functions (FEML) is also shown.
 +
 
 +
<div id='table-5'></div>
 +
<div style="text-align: center; font-size: 75%; ">'''Table 5'''. Maximum temperature and Flux magnitude values in the numerical simulations of the third example</div> 
 +
 
 +
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
 
| rowspan='2' style="border-left: 2px solid;border-right: 2px solid;" | Mesh
 
| rowspan='2' style="border-left: 2px solid;border-right: 2px solid;" | Mesh
| rowspan='2' style="border-left: 2px solid;border-right: 2px solid;" | nodes
+
| rowspan='2' style="border-left: 2px solid;border-right: 2px solid;" | Nodes
| rowspan='2' style="border-left: 2px solid;border-right: 2px solid;" | elements
+
| rowspan='2' style="border-left: 2px solid;border-right: 2px solid;" | Elements
 
| colspan='2' style="border-right: 2px solid;border-left: 2px solid;border-right: 2px solid;" | Max. Temp. Value
 
| colspan='2' style="border-right: 2px solid;border-left: 2px solid;border-right: 2px solid;" | Max. Temp. Value
 
| colspan='2' style="border-right: 2px solid;border-left: 2px solid;border-right: 2px solid;" | Max. Flux Magnitude
 
| colspan='2' style="border-right: 2px solid;border-left: 2px solid;border-right: 2px solid;" | Max. Flux Magnitude
|-
+
|-style="border-top: 2px solid;"
 
| style="border-left: 2px solid;border-right: 2px solid;" | DEC   
 
| style="border-left: 2px solid;border-right: 2px solid;" | DEC   
 
| style="border-left: 2px solid;border-right: 2px solid;" | FEML
 
| style="border-left: 2px solid;border-right: 2px solid;" | FEML
Line 2,158: Line 2,154:
 
| style="border-left: 2px solid;border-right: 2px solid;" | FEML   
 
| style="border-left: 2px solid;border-right: 2px solid;" | FEML   
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    Figure [[#img-25|25]](a)  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    Figure [[#img-24|24]](a)  
| style="border-left: 2px solid;border-right: 2px solid;" | 342  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 342  
| style="border-left: 2px solid;border-right: 2px solid;" | 616  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 616  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.79221  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.79221  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.79854  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.79854  
| style="border-left: 2px solid;border-right: 2px solid;" | 18.41066  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 18.41066  
| style="border-left: 2px solid;border-right: 2px solid;" | 18.40573  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 18.40573  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | Figure [[#img-25|25]](b)  
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-24|24]](b)  
| style="border-left: 2px solid;border-right: 2px solid;" | 1,259  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1,259  
| style="border-left: 2px solid;border-right: 2px solid;" | 2,384  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2,384  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.83929  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.83929  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.84727  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.84727  
| style="border-left: 2px solid;border-right: 2px solid;" | 18.93838  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 18.93838  
| style="border-left: 2px solid;border-right: 2px solid;" | 18.91532  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 18.91532  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | Figure [[#img-25|25]](c)  
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-24|24]](c)  
| style="border-left: 2px solid;border-right: 2px solid;" | 4,467  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 4,467  
| style="border-left: 2px solid;border-right: 2px solid;" | 8,668  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 8,668  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.85608  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.85608  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.85717  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.85717  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.13297  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.13297  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.13193  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.13193  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" | Figure [[#img-25|25]](d)   
+
| style="border-left: 2px solid;border-right: 1px solid;" | Figure [[#img-24|24]](d)   
| style="border-left: 2px solid;border-right: 2px solid;" | 14,250   
+
| style="border-left: 1px solid;border-right: 1px solid;" | 14,250   
| style="border-left: 2px solid;border-right: 2px solid;" | 28,506  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 28,506  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.85994  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.85994  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86056  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86056  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.20982  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.20982  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.20909  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.20909  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 20,493  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 20,493  
| style="border-left: 2px solid;border-right: 2px solid;" | 40,316  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 40,316  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86120  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86120  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86177  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86177  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.23120  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.23120  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.23457  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.23457  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 60,380  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 60,380  
| style="border-left: 2px solid;border-right: 2px solid;" | 119,418  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 119,418  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86219  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86219  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86231  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86231  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.26655  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.26655  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.26628  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.26628  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 142,702  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 142,702  
| style="border-left: 2px solid;border-right: 2px solid;" | 283,162  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 283,162  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86249  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86249  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86256  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86256  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.28045  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.28045  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.28028  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.28028  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 291,363  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 291,363  
| style="border-left: 2px solid;border-right: 2px solid;" | 579,360  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 579,360  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86263  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86263  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86267  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86267  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.28727  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.28727  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.28755  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.28755  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 495,607  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 495,607  
| style="border-left: 2px solid;border-right: 2px solid;" | 986,724  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 986,724  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86275  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86275  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86269  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86269  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29057  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.29057  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29081  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.29081  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 1,064,447  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1,064,447  
| style="border-left: 2px solid;border-right: 2px solid;" | 2,122,160  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2,122,160  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86272  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86272  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86273  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86273  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29385  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.29385  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29389  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.29389  
 
|-
 
|-
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 2,106,077  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2,106,077  
| style="border-left: 2px solid;border-right: 2px solid;" | 4,202,536  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 4,202,536  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86274  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86274  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86274  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86274  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29618  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.29618  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29615  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.29615  
 
|- style="border-bottom: 2px solid;"
 
|- style="border-bottom: 2px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |  
+
| style="border-left: 2px solid;border-right: 1px solid;" |  
| style="border-left: 2px solid;border-right: 2px solid;" | 4,031,557  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 4,031,557  
| style="border-left: 2px solid;border-right: 2px solid;" | 8,049,644  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 8,049,644  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86275  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86275  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.86275  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.86275  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29763  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 19.29763  
| style="border-left: 2px solid;border-right: 2px solid;" | 19.29765  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 19.29765  
 
+
 
|}
 
|}
<div style="text-align: center; font-size: 75%; ">Maximum temperature and Flux magnitude values in the numerical simulations of the third example.</div> 
 
  
The temperature distribution and Flux magnitude fields for the finest mesh are shown in Figure [[#img-26|26]]. <div id='img-26a'></div>
+
 
<div id='img-26b'></div>
+
The temperature distribution and Flux magnitude fields for the finest mesh are shown in Figure [[#img-25|25]].  
<div id='img-26'></div>
+
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
<div id='img-25a'></div>
 +
<div id='img-25b'></div>
 +
<div id='img-25'></div>
 +
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-Fig_23_HuevoContourTemp.png|264px|Contour Fill of Temperatures]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_23_HuevoContourTemp.png|300px|Contour Fill of Temperatures]]
|[[Image:Esqueda_et_al_2020a-Fig_23_HuevoContourFlux.png|264px|Contour Fill of Flux vectors on Elems]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_23_HuevoContourFlux.png|300px|Contour Fill of Flux vectors on Elems]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| (a) Contour Fill of Temperatures
+
| (a) Contour fill of temperatures
| (b) Contour Fill of Flux vectors on Elems
+
| (b) Contour till of flux vectors on elems
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="2" | '''Figure 26:''' Temperature distribution and Flux magnitude fields for the finest mesh of the third example.
+
| colspan="2" style="padding:10px;"| '''Figure 25'''. Temperature distribution and Flux magnitude fields for the finest mesh of the third example
 
|}
 
|}
Figure [[#img-27|27]] shows the graphs of the temperature and flux magnitude values along a diameter of the circle for different meshes of Figure  [[#img-25|25]] <div id='img-27a'></div>
+
 
<div id='img-27b'></div>
+
 
<div id='img-27c'></div>
+
Figure [[#img-26|26]] shows the graphs of the temperature and flux magnitude values along a diameter of the circle for different meshes of Figure  [[#img-24|24]].
<div id='img-27d'></div>
+
 
<div id='img-27e'></div>
+
<div id='img-26a'></div>
<div id='img-27f'></div>
+
<div id='img-26b'></div>
<div id='img-27'></div>
+
<div id='img-26c'></div>
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
<div id='img-26d'></div>
 +
<div id='img-26e'></div>
 +
<div id='img-26f'></div>
 +
<div id='img-26'></div>
 +
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoTempCrossSection01.png|252px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoTempCrossSection01.png|300px|]]
|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoFluxCrossSection01.png|252px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoFluxCrossSection01.png|300px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| (a)  
 
| (a)  
 
| (b)  
 
| (b)  
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoTempCrossSection02.png|252px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoTempCrossSection02.png|300px|]]
|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoFluxCrossSection02.png|252px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoFluxCrossSection02.png|300px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| (c)  
 
| (c)  
 
| (d)  
 
| (d)  
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoTempCrossSection03.png|252px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoTempCrossSection03.png|300px|]]
|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoFluxCrossSection03.png|252px|]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-Fig_24_HuevoFluxCrossSection03.png|300px|]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
 
| (e)  
 
| (e)  
 
| (f)  
 
| (f)  
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="2" | '''Figure 27:''' Temperature and Flux magnitude graphs of the third example along a cross-section of the domain for different meshes:   Mesh in Figure  
+
| colspan="2" style="padding:10px;"| '''Figure 26'''. Temperature and Flux magnitude graphs of the third example along a cross-section of the domain
 +
for different meshes: Mesh in Figure [[#img-24|24]](a), a-Temperature, b-Flux; Mesh in Figure [[#img-24|24]](b), c-Temperature, d-Flux; Mesh in Figure [[#img-24|24]](c), e-Temperature, f-Flux
 
|}
 
|}
  
In Table [[#table-3|3]], we show some global error metrics for different meshes.  Figure [[#img-28|28]] shows the error evolution in <math display="inline">L^2</math> norm for this example.
+
Table [[#table-6|6]] shows some global error metrics for different meshes.  Figure [[#img-27|27]] shows the error evolution in <math display="inline">L^2</math> norm for this example.
  
 +
<div id='table-6'></div>
 +
<div class="center" style="font-size: 75%;">'''Table 6'''. DEC errors in the third example</div>
  
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;"
+
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;min-width:50%;font-size:85%;"
|+ style="font-size: 75%;" |<span id='table-3'></span>Table. 3 tableDEC errors in the third example.
+
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |   '''Mesh'''  
+
| style="border-left: 2px solid;border-right: 2px solid;" | '''Mesh'''  
 
| style="border-left: 2px solid;border-right: 2px solid;" | '''Nodes'''  
 
| style="border-left: 2px solid;border-right: 2px solid;" | '''Nodes'''  
 
| style="border-left: 2px solid;border-right: 2px solid;" | '''<math>    \sum (u-u_i)^2 \over nodes    </math>'''  
 
| style="border-left: 2px solid;border-right: 2px solid;" | '''<math>    \sum (u-u_i)^2 \over nodes    </math>'''  
 
| style="border-left: 2px solid;border-right: 2px solid;" | '''<math>L^2</math> norm'''  
 
| style="border-left: 2px solid;border-right: 2px solid;" | '''<math>L^2</math> norm'''  
 
|- style="border-top: 2px solid;"
 
|- style="border-top: 2px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    1  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    1  
| style="border-left: 2px solid;border-right: 2px solid;" | 342  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 342  
| style="border-left: 2px solid;border-right: 2px solid;" | 9.3638e-04  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 9.3638e-04  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.7786e-02  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 2.7786e-02  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    2  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    2  
| style="border-left: 2px solid;border-right: 2px solid;" | 1,259  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1,259  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.5173e-04  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1.5173e-04  
| style="border-left: 2px solid;border-right: 2px solid;" | 3.2731e-03  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 3.2731e-03  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    3  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    3  
| style="border-left: 2px solid;border-right: 2px solid;" | 4,467  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 4,467  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.2110e-05  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.2110e-05  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.2937e-04  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 2.2937e-04  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    4  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    4  
| style="border-left: 2px solid;border-right: 2px solid;" | 14,250  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 14,250  
| style="border-left: 2px solid;border-right: 2px solid;" | 3.7233e-06  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 3.7233e-06  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.9151e-05  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 1.9151e-05  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    5  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    5  
| style="border-left: 2px solid;border-right: 2px solid;" | 20,492  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 20,492  
| style="border-left: 2px solid;border-right: 2px solid;" | 2.2311e-06  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2.2311e-06  
| style="border-left: 2px solid;border-right: 2px solid;" | 9.5930e-06  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 9.5930e-06  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    6  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    6  
| style="border-left: 2px solid;border-right: 2px solid;" | 60,380  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 60,380  
| style="border-left: 2px solid;border-right: 2px solid;" | 4.3769e-07  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 4.3769e-07  
| style="border-left: 2px solid;border-right: 2px solid;" | 8.7330e-07  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 8.7330e-07  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    7  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    7  
| style="border-left: 2px solid;border-right: 2px solid;" | 142,702  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 142,702  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.1664e-07  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1.1664e-07  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.3926e-07  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 1.3926e-07  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    8  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    8  
| style="border-left: 2px solid;border-right: 2px solid;" | 291,369  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 291,369  
| style="border-left: 2px solid;border-right: 2px solid;" | 3.9764e-08  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 3.9764e-08  
| style="border-left: 2px solid;border-right: 2px solid;" | 3.3314e-08  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 3.3314e-08  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    9  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    9  
| style="border-left: 2px solid;border-right: 2px solid;" | 497,378  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 497,378  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.6680e-08  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1.6680e-08  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.0275e-08  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 1.0275e-08  
|- style="border-top: 2px solid;"
+
|- style="border-top: 1px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    10  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    10  
| style="border-left: 2px solid;border-right: 2px solid;" | 1,067,171  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 1,067,171  
| style="border-left: 2px solid;border-right: 2px solid;" | 3.9594e-09  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 3.9594e-09  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.2190e-09  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 1.2190e-09  
|- style="border-top: 2px solid;border-bottom: 2px solid;"
+
|- style="border-top: 1px solid;border-bottom: 2px solid;"
| style="border-left: 2px solid;border-right: 2px solid;" |    11  
+
| style="border-left: 2px solid;border-right: 1px solid;" |    11  
| style="border-left: 2px solid;border-right: 2px solid;" | 2,106,248  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 2,106,248  
| style="border-left: 2px solid;border-right: 2px solid;" | 9.6949e-10  
+
| style="border-left: 1px solid;border-right: 1px solid;" | 9.6949e-10  
| style="border-left: 2px solid;border-right: 2px solid;" | 1.4415e-10  
+
| style="border-left: 1px solid;border-right: 2px solid;" | 1.4415e-10  
 
+
 
|}
 
|}
  
<div id='img-28'></div>
+
 
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
+
<div id='img-27'></div>
 +
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: auto;"
 
|-
 
|-
|[[Image:Esqueda_et_al_2020a-DEC_Error_Graph_Eliptic_Egg.png|330px|DEC ]]
+
|style="padding:10px;"|[[Image:Esqueda_et_al_2020a-DEC_Error_Graph_Eliptic_Egg.png|410px|DEC ]]
 
|- style="text-align: center; font-size: 75%;"
 
|- style="text-align: center; font-size: 75%;"
| colspan="1" | '''Figure 28:''' DEC  
+
| colspan="1" style="padding-bottom:10px;"| '''Figure 27'''. DEC <math display="inline">L^2</math> evolution in the third example
 
|}
 
|}
 +
  
 
'''Remark'''. As can be seen from the previous examples, DEC behaves well on coarse meshes.  As expected, the results of DEC and FEML are identical for fine meshes.  We would also like to point out the the computational costs of DEC and FEML are very similar  since the local matrices are very similar in profile, or even identical in some cases.
 
'''Remark'''. As can be seen from the previous examples, DEC behaves well on coarse meshes.  As expected, the results of DEC and FEML are identical for fine meshes.  We would also like to point out the the computational costs of DEC and FEML are very similar  since the local matrices are very similar in profile, or even identical in some cases.
Line 2,393: Line 2,397:
  
 
<li>Local DEC allows a simple treatment of heterogeneous material properties assigned to subdomains (element by element),  which eliminates the need of dealing with it through ad hoc modifications of the global discrete Hodge star operator matrix.  </li>
 
<li>Local DEC allows a simple treatment of heterogeneous material properties assigned to subdomains (element by element),  which eliminates the need of dealing with it through ad hoc modifications of the global discrete Hodge star operator matrix.  </li>
 
 
</ol>
 
</ol>
 +
  
 
On the other hand we would like to point the following features:
 
On the other hand we would like to point the following features:
Line 2,401: Line 2,405:
  
 
* The computational cost of DEC is similar to that of FEML. While the numerical results of DEC and FEML on fine meshes are virtually identical, the DEC solutions are better than those of FEML on coarse meshes. Furthermore, DEC  solutions display numerical convergence,  as shown by the  error measurements.
 
* The computational cost of DEC is similar to that of FEML. While the numerical results of DEC and FEML on fine meshes are virtually identical, the DEC solutions are better than those of FEML on coarse meshes. Furthermore, DEC  solutions display numerical convergence,  as shown by the  error measurements.
 +
  
 
Our future work will include the DEC discretization of convective terms, and DEC on 2-dimensional simplicial surfaces in 3D.  Preliminary results on both problems are promising and competitive with FEML.
 
Our future work will include the DEC discretization of convective terms, and DEC on 2-dimensional simplicial surfaces in 3D.  Preliminary results on both problems are promising and competitive with FEML.
Line 2,411: Line 2,416:
  
 
==References==
 
==References==
 +
 +
<div class="auto" style="text-align: left;width: auto; margin-left: auto; margin-right: auto;font-size: 85%;">
  
 
<div id="cite-1"></div>
 
<div id="cite-1"></div>
'''[[#citeF-1|[1]]]''' Bossavit, A.: “Mixed finite elements and the complex of Whitney forms.In J. Whiteman, editor, The mathematics of finite elements and applications VI, pages 137–144. Academic Press, 1988.  <div id="cite-2"></div>
+
[[#citeF-1|[1]]]  Bossavit A. Mixed finite elements and the complex of Whitney forms. In J. Whiteman (ed.), The Mathematics of Finite Elements and Applications VI, pp. 137–144, Academic Press, 1988.   
'''[[#citeF-2|[2]]]'''  Botello, S.; Moreles, M.Z.; Oñate, E.: ``Módulo de Aplicaciones del Método de los Elementos Finitos para resolver la ecuación de Poisson: MEFIPOISS.''  Aula CIMNE-CIMAT, Septiembre 2010, ISBN 978-84-96736-95-5.  <div id="cite-3"></div>
+
'''[[#citeF-3|[3]]]'''  Cartan, E.: ``Sur certaines expressions différentielles et le probleme de Pfaff". Annales Scientifiques de l'École Normale Supérieure. Série 3. Paris: Gauthier-Villars. 16: 239?332 (1899)   <div id="cite-4"></div>
+
'''[[#citeF-4|[4]]]'''  Crane, Keenan, et al. “Digital geometry processing with discrete exterior calculus.” ACM SIGGRAPH 2013 Courses. ACM, 2013.  <div id="cite-5"></div>
+
'''[[#citeF-5|[5]]]'''  Dassios, Ioannis, et al. “A mathematical model for plasticity and damage: A discrete calculus formulation.” Journal of Computational and Applied Mathematics 312 (2017): 27-38.  <div id="cite-6"></div>
+
'''[[#citeF-6|[6]]]'''  Esqueda, H.; Herrera, R.; Botello, S; Moreles, M. A.: “A geometric description of Discrete Exterior Calculus for general triangulations”. Rev. int. métodos numér. cálc. diseño ing. (Online first).  https://www.scipedia.com/public/Herrera_et_al_2018b  <div id="cite-7"></div>
+
'''[[#citeF-7|[7]]]'''  Griebel, Michael, Christian Rieger, and Alexander Schier. “Upwind Schemes for Scalar Advection-Dominated Problems in the Discrete Exterior Calculus.” Transport Processes at Fluidic Interfaces. Birkhäuser, Cham, 2017. 145-175.  <div id="cite-8"></div>
+
'''[[#citeF-8|[8]]]'''  Hirani, Anil Nirmal. “Discrete exterior calculus”. Diss. California Institute of Technology, 2003.  <div id="cite-9"></div>
+
'''[[#citeF-9|[9]]]'''  Hirani, Anil N., Kalyana B. Nakshatrala, and Jehanzeb H. Chaudhry. “Numerical method for Darcy flow derived using Discrete Exterior Calculus.” International Journal for Computational Methods in Engineering Science and Mechanics 16.3 (2015): 151-169.  <div id="cite-10"></div>
+
'''[[#citeF-10|[10]]]'''  Mohamed, Mamdouh S., Anil N. Hirani, and Ravi Samtaney. “Discrete exterior calculus discretization of incompressible Navier-Stokes equations over surface simplicial meshes.” Journal of Computational Physics 312 (2016): 175-191.  <div id="cite-11"></div>
+
'''[[#citeF-11|[11]]]'''  Oñate, E.:  “4 - 2D Solids. Linear Triangular and Rectangular Elements,” in Structural Analysis with the Finite Element Method.  Linear Statics, Volume 1: Basis and Solids, CIMNE-Springer, Barcelona, 2009. Pages 117-157, ISBN 978-1-4020-8733-2  <div id="cite-12"></div>
+
'''[[#citeF-12|[12]]]'''  Whitney, H.: “Geometric Integration Theory.” Princeton University Press, 1957<div id="cite-13"></div>
+
'''[[#citeF-13|[13]]]'''  O. C. Zienkiewicz, R. L. Taylor and J. Z. Zhu: “3 - Generalization of the finite element concepts. Galerkin-weighted residual and variational approaches,” In The Finite Element Method Set (Sixth Edition), Butterworth-Heinemann, Oxford, 2005, Pages 54-102, ISBN 9780750664318,   
+
  
</span>
+
<div id="cite-2"></div>
 +
[[#citeF-2|[2]]]  Botello S., Moreles M.Z., Oñate E. Módulo de aplicaciones del método de los elementos finitos para resolver la ecuación de Poisson: MEFIPOISS.  Aula CIMNE-CIMAT, Septiembre 2010. 
 +
 
 +
<div id="cite-3"></div>
 +
[[#citeF-3|[3]]]  Cartan E. Sur certaines expressions différentielles et le problème de Pfaff. Annales Scientifiques de l'École Normale Supérieure, Série 3, Paris, Gauthier-Villars, Tome 16, pp. 239-332, 1899. 
 +
 
 +
<div id="cite-4"></div>
 +
[[#citeF-4|[4]]]  Crane K., et al. Digital geometry processing with discrete exterior calculus. ACM SIGGRAPH 2013 Courses, pp. 1-126, July 2013. 
 +
 
 +
<div id="cite-5"></div>
 +
[[#citeF-5|[5]]]  Dassios I., et al. A mathematical model for plasticity and damage: A discrete calculus formulation. Journal of Computational and Applied Mathematics, 312:27-38, 2017. 
 +
 
 +
<div id="cite-6"></div>
 +
[[#citeF-6|[6]]]  Esqueda H., Herrera R., Botello S., Moreles M.A. A geometric description of discrete exterior calculus for general triangulations. Rev. Int. Métodos Numér. Cálc. Diseño Ing., 35(1), 2, 2019.  https://www.scipedia.com/public/Herrera_et_al_2018b 
 +
 
 +
<div id="cite-7"></div>
 +
[[#citeF-7|[7]]]  Griebel, M., Rieger C.,  Schier A. Upwind schemes for scalar advection-dominated problems in the Discrete Exterior Calculus. In Bothe D., Reusken A. (eds), Transport Processes at Fluidic Interfaces, Birkhäuser, Cham,  145-175, 2017. 
 +
 
 +
<div id="cite-8"></div>
 +
[[#citeF-8|[8]]]  Hirani A.N. Discrete exterior calculus. Thesis, California Institute of Technology, 2003. 
 +
 
 +
<div id="cite-9"></div>
 +
[[#citeF-9|[9]]]  Hirani A.N., Nakshatrala K.B.,  Chaudhry J.H. Numerical method for Darcy flow derived using discrete exterior calculus. International Journal for Computational Methods in Engineering Science and Mechanics, 16(3):151-169, 2015. 
 +
 
 +
<div id="cite-10"></div>
 +
[[#citeF-10|[10]]]  Mohamed M.S.,  Hirani A.N.,  Samtaney R. Discrete exterior calculus discretization of incompressible Navier-Stokes equations over surface simplicial meshes. Journal of Computational Physics, 312: 175-191, 2016. 
 +
 
 +
<div id="cite-11"></div>
 +
[[#citeF-11|[11]]]  Oñate E.  2D solids. Linear triangular and rectangular elements. In Structural Analysis with the Finite Element Method.  Linear Statics, Volume 1: Basis and Solids, Chapter 4, pp. 117-157, CIMNE-Springer, Barcelona, 2009.
 +
 
 +
<div id="cite-12"></div>
 +
[[#citeF-12|[12]]]  Whitney H. Geometric integration theory. Princeton University Press, 1957. 
 +
 
 +
<div id="cite-13"></div>
 +
[[#citeF-13|[13]]]    Zienkiewicz O.C.,  Taylor R.L., Zhu J.Z. Generalization of the finite element concepts. Galerkin-weighted residual and variational approaches. In The Finite Element Method Set (Sixth Edition), Butterworth-Heinemann, Oxford, Chapter 3, pp. 54-102, 2005. 
 +
 
 +
</div>

Latest revision as of 13:24, 19 June 2020

Abstract

We present a local formulation for 2D Discrete Exterior Calculus (DEC) similar to that of the Finite Element Method (FEM), which allows a natural treatment of material heterogeneity (assigning material properties element by element). It also allows us to deduce, in a principled manner, anisotropic fluxes and the DEC discretization of the pullback of 1-forms by the anisotropy tensor, i.e. we deduce the discrete action of the anisotropy tensor on primal 1-forms. Due to the local formulation, the computational cost of DEC is similar to that of the Finite Element Method with Linear interpolating functions (FEML). The numerical DEC solutions to the anisotropic Poisson equation show numerical convergence, are very close to those of FEML on fine meshes and are slightly better than those of FEML on coarse meshes.

1. Introduction

The theory of Discrete Exterior Calculus (DEC) is a relatively recent discretization [8] of the classical theory of Exterior Differential Calculus developed by E. Cartan [3], which is a fundamental tool in Differential Geometry and Topology. The aim of DEC is to solve partial differential equations preserving their geometrical and physical features as much as possible. There are only a few papers about implementions of DEC to solve certain PDEs, such as the Darcy flow and Poisson's equation [9], the Navier-Stokes equations [10], the simulation of elasticity, plasticity and failure of isotropic materials [5], some comparisons with the finite differences and finite volume methods on regular flat meshes [7], as well as applications in digital geometry processing [4].

In this paper, we describe a local formulation of DEC which is reminiscent of that of the Finite Element Method (FEM). Indeed, once the local systems of equations have been established, they can be assembled into a global linear system. This local formulation is also efficient and helpful in understanding various features of DEC that can otherwise remain unclear if one is dealing dealing with an entire mesh. Besides, we believe the local description to DEC will be accesible to a wide readership. We will, therefore, take a local approach when recalling all the objects required by 2D DEC [6]. Our main results are the following:

  • We present a local formulation of DEC analogous to that of FEM, which allows a natural treatment of heterogeneous material properties assigned to subdomains (element by element) and eliminates the need of dealing with it through ad hoc modifications of the global discrete Hodge star operator.
  • Guided by the local formulation, we deduce a natural way to approximate the flux/gradient-vector of a discretized function, as well as the anisotropic flux vector. We carry out a comparison of the formulas defining the flux in both DEC and Finite Element Method with linear interpolation functions (FEML).
  • In order to understand how to discretize the anisotropic Poisson equation, we develop the discretization of the pull-back operator of 1-forms under an arbitrary linear trasformation or tensor. The pull-back operator is one of the basic ingredients in Exterior Differential Calculus in the smooth setting and is essential in all of its applications in Topology [bott-Tu]. We discretize the pullback operator on primal 1-forms induced by an arbitrary tensor using Whitney interpolation (the Whitney map). The Whitney interpolation forms were introduced by Hassler Whitney in 1957 [12] and Bossavit [1] explained their relevance in “mixed methods” of finite elements. To our knowledge, this is the first time that the discrete version of this operator is presented in the DEC literature. This has allowed us to discretize, in a principled manner, the anisotropic heat equation.
  • We carry out an analytic comparison of the DEC and FEML local formulations of the anisotropic Poisson equation.
  • We present three numerical examples of the approximate solutions to the stationary anisotropic Poisson equation on different domains using DEC and FEML. The numerical DEC-solutions exhibit numerical convergence (see the error measurement tables) and a competitive performance, as well as a computational cost similar to that of FEML. In fact, the numerical solutions with both methods on fine meshes are identical, and DEC shows a slightly better performance than FEML on coarse meshes.


The paper is organized as follows. In Section 2, we describe the local versions of the discrete derivative operator, the dual mesh, the discrete Hodge star operator and the meaning of a continuous 1-form on the plane. In Section 3, we deduce the discretization of the pullback operator on primal 1-forms. In Section 4, we deduce the natural way of computing flux vectors in DEC (which turns out to be equivalent to the FEML result), as well as the anisotropic flux vectors. In Section 5, we present the local DEC formulation of the 2D anisotropic Poisson equation and compare it with the local system of FEML, proving that the diffusion terms are identical in both schemes, while the source terms are differentl due to a different area-weight assignment for the nodes. In Section 6, we re-examine the geometry of some of the local DEC quantities. In Section 7, we present and compare numerical examples of DEC and FEML approximate solutions to the 2D anisotropic Poisson equation on different domains with meshes of various resolutions. In Section 8, we summarize the contributions of this paper.

2. Preliminaries on DEC from a local viewpoint

In this section, we will recall the basic operators of Dicrete Exterior Calculus restricting ourselves to a mesh made up of one simplex/triangle. The local results we derive in the paper can be assembled, just as in the Finite elemnt Method, due to the additivity of both differentiation and integration.

Let us consider a primal mesh made up of a single (positively oriented) triangle with vertices (Figure 1).

Triangle
Figure 1. Triangle

Such a mesh has

  • one oriented 2-dimensional face
  • three oriented 1-dimensional edges
  • and three 0-dimensional vertices

2.1 Boundary operator

There is a well known boundary operator

(1)

which describes the boundary of the triangle as an alternated sum of its ordered oriented edges , and .

Similarly, one can compute the boundary of each edge

(2)

If we consider

  • the symbol as a basis vector of a 1-dimensional vector space,
  • the symbols , , as an ordered basis of a 3-dimensional vector space,
  • the symbols , , as an ordered basis of a 3-dimensional vector space,


then the map (1), which sends the oriented triangle to a sum of its oriented edges, is represented by the matrix

while the map (2), which sends the oriented edges to sums of their oriented vertices, is represented by the matrix

2.2 Discrete derivative

It has been argued that the DEC discretization of the differential of a function is given by the transpose of the matrix of the boundary operator on edges [6,8]. More precisely, suppose we have a function discretized by its values at the vertices

Its discrete derivative, according to DEC, is

Indeed, such differences are rough approximations of the directional derivatives of along the oriented edges. For instance, is a rough approximation of the directional derivative of at in the direction of the vector , i.e.,

It is precisely in this sense that, according to DEC,

  • the value is assigned to the edge ,
  • the value is assigned to the edge ,
  • and the value is assigned to the edge .

Let

2.3 Dual mesh

The dual mesh of the primal mesh consisting of a single triangle is constructured as follows:

  • To the 2-dimensional triangular face will correspond the 0-dimensional point given by the circumcenter of the triangle (Figure 2).
Circumcenter
Figure 2. Circumcenter of the triangle
  • To the 1-dimensional edge will correspond the 1-dimensional straight line segment joining the midpoint of the edge to the circumcenter (Figure 3). Similarly for the other edges.
Dual segment
Figure 3. Dual segment of the edge
  • To the 0-dimensional vertex/node will correspond the oriented -dimensional quadrilateral (Figure 4).
Dual quadrilateral
Figure 4. Dual quadrilateral of the vertex

2.4 Discrete Hodge star

For the Poisson equation in 2D, we need two matrices: one relating original edges to dual edges, and another relating vertices to dual cells.

  • The discrete Hodge star map applied to the discrete differential of a discretized function is given as follows:
  • the value assigned to the edge is changed to the new value

assigned to the segment ;

  • the value assigned to the edge is changed to the new value

assigned to the edge .

  • the value assigned to the edge is changed to the new value

assigned to the segment ;

In other words,

  • Similarly, the discrete Hodge star map on values on vertices is given as follows:
  • the value assigned to the vertex is changed to the new value

assigned to the quadrilateral ;

  • the value assigned to the vertex is changed to the new value

assigned to the quadrilateral ;

  • the value assigned to the vertex is changed to the new value

assigned to the quadrilateral .

In other words,

2.5 Continuous 1-forms

A differential 1-form on can be thought of as a function whose arguments are a point in and a vector in , i.e.

and which is linear on the vector argument.

The dot product of allows us to see continuous 1-forms in a more familiar form as vector fields in the following way: If is a vector field on , at each point we can consider the 1-form

where . On the other hand, from a continuos 1-form we can build a vector field as follows

where

2.5.1 Pullback of a conitnuous 1-form

Given a tensor (a linear transformation) and the vector field associated to a 1-form as above, consider the vector field . For any vector , the value of the corresponding continuous 1-form is given by the product

which is the value of the 1-form called the pullback of by the tensor .

2.5.2 Discretization of continuous 1-forms

In order to produce a primal 1-form from such a continuous 1-form we need to inegrate it along the edges of the mesh (the de Rham map). In our local description, this produces a collection of 3 numbers associated to the 3 oriented edges of the triangle, i.e. for the oriented edge joining to we have

This is equivalent to calculating the line integral (circulation) of the corresponding vector field along the path , , parametrizing the edge

3. Pullback operator on primal 1-forms

In Section 2, we dealt with the primal discretization of a continuous 1-form. Now we wish to understand the pullback of a primal 1-form. In order to do this, we will interpolate a primal 1-form using the Whitney interpolation forms to produce a continuous 1-form (Whitney map) to which we can apply the pullback operator by a tensor (linear transformation), and then intergrate along the edges (de Rham map).

The Whitney interpolation forms were introduced by Whitney in 1957 [12], and Bossavit [1] explained their relevance to “mixed methods” of finite elements. For the sake of simplicity, we will only define the Whitney 0 and 1-forms.

First consider the Finite Element linear basis functions (or Whitney interpolation functions)

(3)

and their differentials

(4)

The Whitney interpolation 1-forms are

(5)

These differential 1-forms are such that, along the edge

i.e. or .

Now, suppose we have a primal 1-form given on our triangle by the collection of numbers

We form a continuous 1-form as follows

which is such that, for

Now we will calculate

for an arbitrary linear transformation

Let

and

As it turns out,

where

Anyhow, these quantities are areas of the parallelograms formed by one fixed edge of the original triangle and one edge transformed by .

Thus, we have that the induced transformation on primal 1-forms is

(6)

When the material is isotropic, i.e. is a constant multiple of the identity matrix, we get a constant multiple of the identity matrix above as discrete pull-back operator.

4. Flux and anisotropy

In this section, we deduce the DEC formulae for the local flux, the local anisotropic flux and the local anisotropy operator for primal 1-forms.

4.1 The flux in local DEC

We wish to find a natural construction for the discrete flux (discrete gradient vector) of a discrete function. Recall from Vector Calculus that the directional derivative of a differentiable function at a point in the direction of is defined by

Thus, we have three Vector Calculus identities

As in Subsection 2.2, the rough approximations to directional derivatives of a function in the directions of the (oriented) edges are given as follows

Thus, if we want to find a discrete gradient vector of at the point , we need to solve the equations

(7)
(8)

If

then

Now, if we were to find a discrete gradient vector of at the point , we need to solve the equations

(9)

The vectors solving these equations is actually equal to . Indeed, consider

so that

(10)

Thus, adding up (7) and (9) we get

(11)

Subtracting (8) from (10) we get

(12)

Since and are linearly independent and the two inner products in (11) and (12) vanish,

Analogously, the corresponding gradient vector of at the vertex is equal to . This means that the three approximate gradient vectors at the three vertices coincide, i.e. we have a unique discrete flux vector on the given element. Note that the discrete flux satisfies

This means that the primal 1-form discretizing can be obtained by performing the dot products of the discrete flux vector with the vectors given by the triangle's oriented edges.

4.1.1 Comparison of DEC and FEML local fluxes

The local flux (gradient) of in FEML is given by

where and are the basis functions given in (3). Explicitly

where

is the area of the triangle, so that the FEML flux is given by

and we can see that it coincides with the DEC flux.

4.2 The anisotropic flux vector in local DEC

We will now discuss how to discretize anisotropy in 2D DEC. Let denote the symmetric anisotropy tensor

and recall the anisotropic Poisson equation

First recall that, in Exterior Differential Calculus, for any ,

where is the pullback of by .

Since we already have a discrete candidate for on the given element, the product of the matrix and gives us a candidate for the anisptropic flux vector on such an element

In order to produce a primal 1-form from , all we have to do is assume that is constant on the given triangle and take dot products with the edges of the triangle, i.e.

Nevertheless, in order to better understand the structure of the local system (as in FEML), it is desirable to have a factorization of the result as a matrix product

where the matrix is a real matrix depending on the geometry of the triangle and the matrix , and such that it is a multiple of the identity matrix when the domain is isotropic. In order to do this, we will use the discretization of the pullback opertator of Exterior Differential Calculus for arbitrary 1-forms from Section 3. Thus, using (6), is the following matrix where we have set , i.e.

where

4.2.1 Geometric interpretation of the entries of 4.2.1 Geometric interpretation of the entries of K D E C {\displaystyle K^{DEC}}

Consider the Figure 5, where denotes the anti-clockwise rotation

Geometric interpretation of the entries of the anisotropy tensor discretization
Figure 5. Geometric interpretation of the entries of the anisotropy tensor discretization

We have

where is the area of the red triangle. Thus, the numbers are quotients of areas of transformed triangles divided by the area of the original triangle.

5. Anisotropic Poisson equation in 2D

In this section, we describe the local DEC discretization of the 2D anisotropic Poisson equation and compare it to that of FEML.

5.1 Local DEC discretization of the 2D anisotropic Poisson equation

The anisotropic Poisson equation reads as follows

where and are two functions on a certain domain in and is the anisotropy tensor. In terms of the exterior derivative and the Hodge star operator it reads as follows

where and . Following the discretization of the discretized divergence operator [6], the corresponding local DEC discretization of the anisotropic Poisson equation is

or equivalently

(13)

In order to simplify the notation, consider the lengths and areas defined in Figure 6.

Triangle
Figure 6. Triangle

Now, the discretized equation (13) looks as follows:

The diffusive term matrix is actually symmetric (see Subsection 5.3.1).

5.2 Local FEML-Discretized 2D anisotropic Poisson equation

The diffusive elemental matrix in FEM (frequently called “stiffness matrix”) on an element is given by

where is the matrix representing the anisotropic diffusion tensor, and the matrix is given explicitly by

Since the matrix is constant on an element of the mesh, the integral is easy to compute. Thus, the difussive matrix for a linear triangular element (FEML) is given by

Now, let us consider the first diagonal entry of the local FEML anisotropic Poisson diffusive matrix ,

where is the anticlockwise rotation,

In this notation, the diffusive term in local FEML is given as follows

5.3 Comparison between local DEC and FEML discretizations

For the sake of brevity, we are only going to compare the entries of the first row and first column of each formulation. Consider the various lengths, areas and angles labeled in Figures 6 and 7.

Circumscribed triangle.
Figure 7. Circumscribed triangle.

We have the following identities:

5.3.1 The diffusive term

For instance, we claim that

Indeed,

Thus,

All we have to do now is show that

Note that, since is orthogonal to , must be parallel to . Thus,

(14)

Now we are going to express in terms of . Let us consider

where are coefficients to be determined. Taking inner products with and we get the two equations

Solving for and

Substituting all the relevant quantities in (14) we have, for instance, that the coefficient of is