(19 intermediate revisions by the same user not shown) | |||
Line 92: | Line 92: | ||
|} | |} | ||
− | The domain boundary <math display="inline">\partial \Omega = \Gamma _N \cup \Gamma _D</math> is the union of the boundary with Neumann conditions, denoted <math display="inline">\Gamma _N</math>, and the boundary with Dirichlet conditions, denoted <math display="inline">\Gamma _D</math>. | + | The domain boundary <math display="inline">\partial \Omega = \Gamma _N \cup \Gamma _D</math> is the union of the boundary with Neumann conditions, denoted <math display="inline">\Gamma _N</math>, and the boundary with Dirichlet conditions, denoted <math display="inline">\Gamma _D</math>. Equation [[#eq-5|(5)]] must be satisfied for the given forces <math display="inline">\boldsymbol{b}_N</math> and displacements <math display="inline">\boldsymbol{u}_D</math> along the boundary. The following equations remark these user defined boundary conditions, |
<span id="eq-6.a"></span> | <span id="eq-6.a"></span> | ||
Line 109: | Line 109: | ||
|} | |} | ||
− | + | [[#img-1|Figure 1]] illustrates the initial body with the boundary conditions, and the distorted body after equilibrium is solved in the elasticity equation. | |
<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: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 70%;" |
|- | |- | ||
|[[Image:Review_101239056093_4049_image1.jpg|600px|(a) The initial body, Ω, with its boundary conditions ퟃΩ= Γ<sub>N</sub>∪Γ<sub>D</sub>. (b) The distorted body resulting from solving equilibrium in the elasticity equation, with the boundary conditions given by b<sub>N</sub> and u<sub>D</sub>. The boundaries where there are not conditions indicated explicitly, correspond to Neumann conditions b<sub>N</sub>= 0.]] | |[[Image:Review_101239056093_4049_image1.jpg|600px|(a) The initial body, Ω, with its boundary conditions ퟃΩ= Γ<sub>N</sub>∪Γ<sub>D</sub>. (b) The distorted body resulting from solving equilibrium in the elasticity equation, with the boundary conditions given by b<sub>N</sub> and u<sub>D</sub>. The boundaries where there are not conditions indicated explicitly, correspond to Neumann conditions b<sub>N</sub>= 0.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 1'''. (a) The initial body, <math>\Omega </math>, with its boundary conditions <math>\partial \Omega = \Gamma _N \cup \Gamma _D</math>. (b) The distorted body resulting from solving equilibrium in the elasticity equation, with the boundary conditions given by <math>\boldsymbol{b}_N</math> and <math>\boldsymbol{u}_D</math>. The boundaries where there are not conditions indicated explicitly, correspond to Neumann conditions <math>\boldsymbol{b}_N = 0</math> | + | | colspan="1" style="padding:10px;"| '''Figure 1'''. (a) The initial body, <math>\Omega </math>, with its boundary conditions <math>\partial \Omega = \Gamma _N \cup \Gamma _D</math>. (b) The distorted body resulting from solving equilibrium in the elasticity equation, with the boundary conditions given by <math>\boldsymbol{b}_N</math> and <math>\boldsymbol{u}_D</math>. The boundaries where there are not conditions indicated explicitly, correspond to Neumann conditions <math>\boldsymbol{b}_N = 0</math> |
|} | |} | ||
− | |||
==3. Numerical method== | ==3. Numerical method== | ||
− | On this section we go into the details of the numerical procedure by discussing 1) the discretization with CVFA, 2) the control volumes integration, 3) the subfaces integrals, 4) the simplex-wise polynomial approximation, 5) the pair-wise polynomial approximation, 6) the homeostatic splines used within the shape functions, 7) the linear system assembling, 8) how to impose boundary conditions and 9) two special cases of the formulation. | + | On this section we go into the details of the numerical procedure by discussing: 1) the discretization with CVFA, 2) the control volumes integration, 3) the subfaces integrals, 4) the simplex-wise polynomial approximation, 5) the pair-wise polynomial approximation, 6) the homeostatic splines used within the shape functions, 7) the linear system assembling, 8) how to impose boundary conditions and 9) two special cases of the formulation. |
For the sake of legibility, in some parts of the text we unfold the matrices only for the bidimensional case, but the very same procedures must be followed for the 3D case. | For the sake of legibility, in some parts of the text we unfold the matrices only for the bidimensional case, but the very same procedures must be followed for the 3D case. | ||
Line 154: | Line 153: | ||
|} | |} | ||
− | + | [[#img-2|Figure 2]] illustrates the partition <math display="inline">P_h</math> of <math display="inline">\Omega </math> into <math display="inline">N</math> control volumes defined in the equations [[#eq-7|(7)]] and [[#eq-8|(8)]]. | |
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | |
+ | <div id='img-2'></div> | ||
+ | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 70%;" | ||
|- | |- | ||
|[[Image:Review_101239056093_8669_image2.jpg|600px|The partition Pₕ is the discretization of the domain Ω into N control volumes. The boundary of the control volumes, ퟃV<sub>i</sub>, is conformed by N<sub>i</sub> flat faces, denoted e<sub>ij</sub>. The unit vector n<sub>ij</sub> is normal to the face e<sub>ij</sub>. The faces of the volumes adjacent to the boundary Γ<sub>N</sub> are integrated using the condition b<sub>N</sub>.]] | |[[Image:Review_101239056093_8669_image2.jpg|600px|The partition Pₕ is the discretization of the domain Ω into N control volumes. The boundary of the control volumes, ퟃV<sub>i</sub>, is conformed by N<sub>i</sub> flat faces, denoted e<sub>ij</sub>. The unit vector n<sub>ij</sub> is normal to the face e<sub>ij</sub>. The faces of the volumes adjacent to the boundary Γ<sub>N</sub> are integrated using the condition b<sub>N</sub>.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 2'''. The partition <math>P_h</math> is the discretization of the domain <math>\Omega </math> into <math>N</math> control volumes. The boundary of the control volumes, <math>\partial V_i</math>, is conformed by <math>N_{i}</math> flat faces, denoted <math>e_{ij}</math>. The unit vector <math>\mathbf{n}_{ij}</math> is normal to the face <math>e_{ij}</math>. The faces of the volumes adjacent to the boundary <math>\Gamma _N</math> are integrated using the condition <math>\boldsymbol{b}_N</math> | + | | colspan="1" style="padding:10px;"| '''Figure 2'''. The partition <math>P_h</math> is the discretization of the domain <math>\Omega </math> into <math>N</math> control volumes. The boundary of the control volumes, <math>\partial V_i</math>, is conformed by <math>N_{i}</math> flat faces, denoted <math>e_{ij}</math>. The unit vector <math>\mathbf{n}_{ij}</math> is normal to the face <math>e_{ij}</math>. The faces of the volumes adjacent to the boundary <math>\Gamma _N</math> are integrated using the condition <math>\boldsymbol{b}_N</math> |
|} | |} | ||
− | + | [[#img-3|Figure 3]] shows a three dimensional control volume. | |
<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: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 60%;" |
|- | |- | ||
|[[Image:Review_101239056093_1413_image3.jpg|600px|The boundary ퟃV<sub>i</sub> of the three dimensional control volume V<sub>i</sub> is subdivided into N<sub>i</sub> flat faces, denoted e<sub>ij</sub>. The unit vector n<sub>ij</sub> is normal to the face e<sub>ij</sub>.]] | |[[Image:Review_101239056093_1413_image3.jpg|600px|The boundary ퟃV<sub>i</sub> of the three dimensional control volume V<sub>i</sub> is subdivided into N<sub>i</sub> flat faces, denoted e<sub>ij</sub>. The unit vector n<sub>ij</sub> is normal to the face e<sub>ij</sub>.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 3'''. The boundary <math>\partial V_i</math> of the three dimensional control volume <math>V_i</math> is subdivided into <math>N_{i}</math> flat faces, denoted <math>e_{ij}</math>. The unit vector <math>\mathbf{n}_{ij}</math> is normal to the face <math>e_{ij}</math> | + | | colspan="1" style="padding:10px;"| '''Figure 3'''. The boundary <math>\partial V_i</math> of the three dimensional control volume <math>V_i</math> is subdivided into <math>N_{i}</math> flat faces, denoted <math>e_{ij}</math>. The unit vector <math>\mathbf{n}_{ij}</math> is normal to the face <math>e_{ij}</math> |
|} | |} | ||
Line 364: | Line 365: | ||
===3.3 Calculating face integrals=== | ===3.3 Calculating face integrals=== | ||
− | The surface integrals <math display="inline">\mathbf{H}_{ij}</math> along the flat faces <math display="inline">e_{ij}</math> are calculated using an auxiliary piece-wise polynomial approximation of the displacement field. This approximation is based on the simplices (triangles in 2D or tetrahedra in 3D) resulting from the Delaunay triangulation of the calculation points <math display="inline">\mathbf{x}_i</math> from the neighborhood of <math display="inline">V_i</math>. The Delaunay triangulation is the best triangulation for numerical interpolation, since it maximizes the minimum angle of the simplices, which means that its quality is maximized as well. We define the neighborhood <math display="inline">{B}_i</math> of volume <math display="inline">V_i</math> as the minimum set of calculation points <math display="inline">\mathbf{x}_j</math> such that the simplices intersecting <math display="inline">V_i</math> does not change if we add another calculation point to the set. Observe that the neighborhood <math display="inline">{B}_i</math> does not always coincide with the set of calculation points in volumes adjacent to <math display="inline">V_i</math>, as in most of the FV formulations. Once the neighborhood <math display="inline">{B}_i</math> is triangulated, we ignore the simplices with angles smaller than <math display="inline">10</math> degrees, and the simplices formed outside the domain, which commonly appear in concavities of the boundary <math display="inline">\partial \Omega </math>. The local set of simplices resulting from the neighborhood of <math display="inline">V_i</math> is denoted <math display="inline">P_\alpha </math>. | + | The surface integrals <math display="inline">\mathbf{H}_{ij}</math> along the flat faces <math display="inline">e_{ij}</math> are calculated using an auxiliary piece-wise polynomial approximation of the displacement field. This approximation is based on the simplices (triangles in 2D or tetrahedra in 3D) resulting from the Delaunay triangulation of the calculation points <math display="inline">\mathbf{x}_i</math> from the neighborhood of <math display="inline">V_i</math>. The Delaunay triangulation is the best triangulation for numerical interpolation, since it maximizes the minimum angle of the simplices, which means that its quality is maximized as well. We define the neighborhood <math display="inline">{B}_i</math> of volume <math display="inline">V_i</math> as the minimum set of calculation points <math display="inline">\mathbf{x}_j</math> such that the simplices intersecting <math display="inline">V_i</math> does not change if we add another calculation point to the set. Observe that the neighborhood <math display="inline">{B}_i</math> does not always coincide with the set of calculation points in volumes adjacent to <math display="inline">V_i</math>, as in most of the FV formulations. Once the neighborhood <math display="inline">{B}_i</math> is triangulated, we ignore the simplices with angles smaller than <math display="inline">10</math> degrees, and the simplices formed outside the domain, which commonly appear in concavities of the boundary <math display="inline">\partial \Omega </math>. The local set of simplices resulting from the neighborhood of <math display="inline">V_i</math> is denoted <math display="inline">P_\alpha </math>. [[#img-4|Figure 4]] illustrates the difference between (a) the simplices resulting from the triangulation of the calculation points in adjacent volumes and (b) those resulting from the triangulation of the proposed neighborhood <math display="inline">{B}_i</math>. |
<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: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;" |
|- | |- | ||
|[[Image:Review_101239056093_7534_image4.jpg|600px|(a) The dotted line illustrates the triangulation of the calculation points of adjacent volumes to V<sub>i</sub>, used by most of the FV methods. (b) The dotted line shows the simplices forming the piece-wise approximation used to solve the integrals H<sub>ij</sub> of the control volume V<sub>i</sub>.]] | |[[Image:Review_101239056093_7534_image4.jpg|600px|(a) The dotted line illustrates the triangulation of the calculation points of adjacent volumes to V<sub>i</sub>, used by most of the FV methods. (b) The dotted line shows the simplices forming the piece-wise approximation used to solve the integrals H<sub>ij</sub> of the control volume V<sub>i</sub>.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 4'''. (a) The dotted line illustrates the triangulation of the calculation points of adjacent volumes to <math>V_i</math>, used by most of the FV methods. (b) The dotted line shows the simplices forming the piece-wise approximation used to solve the integrals <math>\mathbf{H}_{ij}</math> of the control volume <math>V_i</math> | + | | colspan="1" style="padding:10px;"| '''Figure 4'''. (a) The dotted line illustrates the triangulation of the calculation points of adjacent volumes to <math>V_i</math>, used by most of the FV methods. (b) The dotted line shows the simplices forming the piece-wise approximation used to solve the integrals <math>\mathbf{H}_{ij}</math> of the control volume <math>V_i</math> |
|} | |} | ||
Line 387: | Line 388: | ||
|} | |} | ||
− | these subfaces result from the intersection between <math display="inline">P_\alpha </math> and the control volume <math display="inline">V_i</math>. | + | these subfaces result from the intersection between <math display="inline">P_\alpha </math> and the control volume <math display="inline">V_i</math>. [[#img-4|Figure 4]](b) illustrates six key points of this approach: 1) the simplices are used to create a polynomial interpolation of <math display="inline">\boldsymbol{u}(\mathbf{x})</math> over the boundary of the control volume, 2) most of the faces are intersected by several simplices, such faces must be divided into subfaces to be integrated, 3) some few faces are inside a single simplex, as illustrated in the face formed by <math display="inline">V_i</math> and <math display="inline">V_k</math>, 4) there are volumes that require information of non-adjacent volumes to calculate its face integrals, such as <math display="inline">V_i</math> requires <math display="inline">V_k</math>, 5) the dependency between volumes is not always symmetric, which means that if <math display="inline">V_i</math> requires <math display="inline">V_k</math> does not implies that <math display="inline">V_k</math> requires <math display="inline">V_i</math>, and 6) non conforming meshes are supported, as shown in the faces formed by <math display="inline">V_a</math>, <math display="inline">V_b</math>, <math display="inline">V_c</math>, <math display="inline">V_d</math> and <math display="inline">V_j</math>. |
The integral [[#eq-23|(23)]] is now rewritten in terms of the subfaces | The integral [[#eq-23|(23)]] is now rewritten in terms of the subfaces | ||
Line 415: | Line 416: | ||
|} | |} | ||
− | where <math display="inline">w_g</math> is the corresponding quadrature weight and <math display="inline">(\mathbf{S}\boldsymbol{u})_{ijk}|_{\mathbf{x}_g}</math> is the strain evaluation of the Gauss point with the proper change of interval, denoted <math display="inline">\mathbf{x}_{g}</math>. | + | where <math display="inline">w_g</math> is the corresponding quadrature weight and <math display="inline">(\mathbf{S}\boldsymbol{u})_{ijk}|_{\mathbf{x}_g}</math> is the strain evaluation of the Gauss point with the proper change of interval, denoted <math display="inline">\mathbf{x}_{g}</math>. [[#img-5|Figure 5]] shows the change of interval required for a 2D face. A 3D face (a polygon) must be subdivided to be integrated with a triangular quadrature. |
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | |
+ | <div id='img-5'></div> | ||
+ | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 70%;" | ||
|- | |- | ||
|[[Image:Review_101239056093_3659_image5.jpg|600px|(a) The shaded volume V<sub>i</sub> is being integrated. The integral over the subface e<sub>ijk</sub> is calculated using the polynomial approximation of the shaded simplex. The integration point must be mapped to (b) the normalized space [-1,1] in order to use the Gauss- Legendre quadrature.]] | |[[Image:Review_101239056093_3659_image5.jpg|600px|(a) The shaded volume V<sub>i</sub> is being integrated. The integral over the subface e<sub>ijk</sub> is calculated using the polynomial approximation of the shaded simplex. The integration point must be mapped to (b) the normalized space [-1,1] in order to use the Gauss- Legendre quadrature.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 5'''. (a) The shaded volume <math>V_i</math> is being integrated. The integral over the subface <math>e_{ijk}</math> is calculated using the polynomial approximation of the shaded simplex. The integration point must be mapped to (b) the normalized space <math>[-1,1]</math> in order to use the Gauss- Legendre quadrature | + | | colspan="1" style="padding:10px;"| '''Figure 5'''. (a) The shaded volume <math>V_i</math> is being integrated. The integral over the subface <math>e_{ijk}</math> is calculated using the polynomial approximation of the shaded simplex. The integration point must be mapped to (b) the normalized space <math>[-1,1]</math> in order to use the Gauss- Legendre quadrature |
|} | |} | ||
Line 442: | Line 445: | ||
|} | |} | ||
− | where <math display="inline">\mathbf{e}_q</math> is the <math display="inline">q^{th}</math> standard basis vector. | + | where <math display="inline">\mathbf{e}_q</math> is the <math display="inline">q^{th}</math> standard basis vector. [[#img-6|Figures 6]] and [[#img-7|7]] illustrates the original and the normalized simplices with the corresponding node numeration for 2D and 3D respectively. |
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | |
+ | <div id='img-6'></div> | ||
+ | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 60%;" | ||
|- | |- | ||
|[[Image:Review_101239056093_1743_image6.jpg|600px|(a) The simplex formed by the points x₁, x₂ and x₃ in the original space contains an interior point x<sub>g</sub> that is mapped to (b) ξ<sub>g</sub> into the normalized 2D-simplex formed by the points ξ₁, ξ₂ and ξ₃.]] | |[[Image:Review_101239056093_1743_image6.jpg|600px|(a) The simplex formed by the points x₁, x₂ and x₃ in the original space contains an interior point x<sub>g</sub> that is mapped to (b) ξ<sub>g</sub> into the normalized 2D-simplex formed by the points ξ₁, ξ₂ and ξ₃.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 6'''. (a) The simplex formed by the points <math>\mathbf{x}_1</math>, <math>\mathbf{x}_2</math> and <math>\mathbf{x}_3</math> in the original space contains an interior point <math>\mathbf{x}_g</math> that is mapped to (b) <math>\boldsymbol{\xi }_g</math> into the normalized 2D-simplex formed by the points <math>\boldsymbol{\xi }_1</math>, <math>\boldsymbol{\xi }_2</math> and <math>\boldsymbol{\xi }_3</math> | + | | colspan="1" style="padding:10px;"| '''Figure 6'''. (a) The simplex formed by the points <math>\mathbf{x}_1</math>, <math>\mathbf{x}_2</math> and <math>\mathbf{x}_3</math> in the original space contains an interior point <math>\mathbf{x}_g</math> that is mapped to (b) <math>\boldsymbol{\xi }_g</math> into the normalized 2D-simplex formed by the points <math>\boldsymbol{\xi }_1</math>, <math>\boldsymbol{\xi }_2</math> and <math>\boldsymbol{\xi }_3</math> |
|} | |} | ||
<div id='img-7'></div> | <div id='img-7'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 70%;" |
|- | |- | ||
|[[Image:Review_101239056093_8671_image7.jpg|600px|(a) The 3D-simplex formed by the points x₁, x₂, x₃ and x₄ in the original space contains an interior point x<sub>g</sub> that is mapped to (b) ξ<sub>g</sub> into the normalized 3D-simplex formed by the points ξ₁, ξ₂, ξ₃ and ξ₄.]] | |[[Image:Review_101239056093_8671_image7.jpg|600px|(a) The 3D-simplex formed by the points x₁, x₂, x₃ and x₄ in the original space contains an interior point x<sub>g</sub> that is mapped to (b) ξ<sub>g</sub> into the normalized 3D-simplex formed by the points ξ₁, ξ₂, ξ₃ and ξ₄.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 7'''. (a) The 3D-simplex formed by the points <math>\mathbf{x}_1</math>, <math>\mathbf{x}_2</math>, <math>\mathbf{x}_3</math> and <math>\mathbf{x}_4</math> in the original space contains an interior point <math>\mathbf{x}_g</math> that is mapped to (b) <math>\boldsymbol{\xi }_g</math> into the normalized 3D-simplex formed by the points <math>\boldsymbol{\xi }_1</math>, <math>\boldsymbol{\xi }_2</math>, <math>\boldsymbol{\xi }_3</math> and <math>\boldsymbol{\xi }_4</math> | + | | colspan="1" style="padding:10px;"| '''Figure 7'''. (a) The 3D-simplex formed by the points <math>\mathbf{x}_1</math>, <math>\mathbf{x}_2</math>, <math>\mathbf{x}_3</math> and <math>\mathbf{x}_4</math> in the original space contains an interior point <math>\mathbf{x}_g</math> that is mapped to (b) <math>\boldsymbol{\xi }_g</math> into the normalized 3D-simplex formed by the points <math>\boldsymbol{\xi }_1</math>, <math>\boldsymbol{\xi }_2</math>, <math>\boldsymbol{\xi }_3</math> and <math>\boldsymbol{\xi }_4</math> |
|} | |} | ||
Line 652: | Line 657: | ||
===3.5 Pair-wise polynomial approximation=== | ===3.5 Pair-wise polynomial approximation=== | ||
− | Since we are not making any assumption about the volumes distribution through the mesh, neither about the internal location of its calculation points, then we have to deal with portions of the mesh that are no covered by any simplex. | + | Since we are not making any assumption about the volumes distribution through the mesh, neither about the internal location of its calculation points, then we have to deal with portions of the mesh that are no covered by any simplex. [[#img-8|Figure 8]] illustrates the two most common cases. The first case takes place in meshes where the calculation points of volumes contiguous to the boundary are in the interior of such volumes, producing subfaces not intersected by any simplex, and the second case occurs when elongated sections of the domain are discretized with a queue of aligned volumes, where each volume has only two neighbors on opposite faces and no simplex can be formed. |
<div id='img-8'></div> | <div id='img-8'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;" |
|- | |- | ||
− | |[[Image:Review_101239056093_9792_image8.jpg|600px | + | |[[Image:Review_101239056093_9792_image8.jpg|600px]] |
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 8'''. (a) When the calculation points of volumes contiguous to the boundary are in the interior of such volumes, there will arise subfaces next to the boundary that can not be covered by any simplex. (b) Portions of the mesh formed by a queue of aligned volumes do not allow the formation of simplices through that queue and there will be whole faces not covered by any simplex | + | | colspan="1" style="padding:10px;"| '''Figure 8'''. (a) When the calculation points of volumes contiguous to the boundary are in the interior of such volumes, there will arise subfaces next to the boundary that can not be covered by any simplex. (b) Portions of the mesh formed by a queue of aligned volumes do not allow the formation of simplices through that queue and there will be whole faces not covered by any simplex |
|} | |} | ||
Line 709: | Line 714: | ||
|} | |} | ||
− | In the general case, the gradient is not constant along the face <math display="inline">e_{ij}</math>, since its normal is not necessary aligned with <math display="inline">\mathbf{x}_{\vec{ij}}</math>, as illustrated in | + | In the general case, the gradient is not constant along the face <math display="inline">e_{ij}</math>, since its normal is not necessary aligned with <math display="inline">\mathbf{x}_{\vec{ij}}</math>, as illustrated in [[#img-9|Figure 9]]. <div id='img-9'></div> |
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 70%;" |
|- | |- | ||
|[[Image:Review_101239056093_4058_image9.jpg|600px|The gradient of the pairwise approximation is not constant along the face e<sub>ij</sub>, since its normal is not necessary aligned with x<sub>\vecij</sub>. The integration point is projected into x<sub>\vecij</sub> to evaluate the deformation matrix.]] | |[[Image:Review_101239056093_4058_image9.jpg|600px|The gradient of the pairwise approximation is not constant along the face e<sub>ij</sub>, since its normal is not necessary aligned with x<sub>\vecij</sub>. The integration point is projected into x<sub>\vecij</sub> to evaluate the deformation matrix.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 9'''. The gradient of the pairwise approximation is not constant along the face <math>e_{ij}</math>, since its normal is not necessary aligned with <math>\mathbf{x}_{\vec{ij}}</math>. The integration point is projected into <math>\mathbf{x}_{\vec{ij}}</math> to evaluate the deformation matrix | + | | colspan="1" style="padding:10px;"| '''Figure 9'''. The gradient of the pairwise approximation is not constant along the face <math>e_{ij}</math>, since its normal is not necessary aligned with <math>\mathbf{x}_{\vec{ij}}</math>. The integration point is projected into <math>\mathbf{x}_{\vec{ij}}</math> to evaluate the deformation matrix |
|} | |} | ||
Line 787: | Line 792: | ||
|} | |} | ||
− | + | [[#img-10|Figure 10]](a) shows the evolution of the spline as we increase the smoothness parameter from <math display="inline">c=0</math> to <math display="inline">c=6</math>, and [[#img-10|Figure 10]](b) the evolution of it first derivative. Smoother splines produces higher order polynomials which increases the accuracy of the stress field approximation. This feature is specially important when solving non-linear problems sensibles to the stress field. | |
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | |
+ | <div id='img-10'></div> | ||
+ | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 65%;" | ||
|- | |- | ||
|[[Image:Review_101239056093_6248_image10.jpg|600px|(a) The evolution of the homeostatic spline from c=0 to c=6 illustrates the smoothness requirements at the endpoints of each spline and its (b) first derivatives.]] | |[[Image:Review_101239056093_6248_image10.jpg|600px|(a) The evolution of the homeostatic spline from c=0 to c=6 illustrates the smoothness requirements at the endpoints of each spline and its (b) first derivatives.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 10'''. (a) The evolution of the homeostatic spline from <math>c=0</math> to <math>c=6</math> illustrates the smoothness requirements at the endpoints of each spline and its (b) first derivatives | + | | colspan="1" style="padding:10px;| '''Figure 10'''. (a) The evolution of the homeostatic spline from <math>c=0</math> to <math>c=6</math> illustrates the smoothness requirements at the endpoints of each spline and its (b) first derivatives |
|} | |} | ||
Line 832: | Line 839: | ||
|} | |} | ||
− | respectively. | + | respectively. [[#img-11|Figure 11]] exhibits the curves for the first seven levels of smoothness. The null higher derivatives requirement is noticeable at the midpoint. |
<div id='img-11'></div> | <div id='img-11'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 60%;" |
|- | |- | ||
− | |[[Image:Review_101239056093_8102_image11.jpg| | + | |[[Image:Review_101239056093_8102_image11.jpg|700px|Curves of the pseudo-inverse Q<sub>c</sub> for the first seven levels of smoothness. The slope at the midpoint exposes the null higher derivatives requirement when increasing the polynomial order.]] |
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 11'''. Curves of the pseudo-inverse <math>{Q}_c</math> for the first seven levels of smoothness. The slope at the midpoint exposes the null higher derivatives requirement when increasing the polynomial order | + | | colspan="1" style="padding:10px;| '''Figure 11'''. Curves of the pseudo-inverse <math>{Q}_c</math> for the first seven levels of smoothness. The slope at the midpoint exposes the null higher derivatives requirement when increasing the polynomial order |
|} | |} | ||
− | + | [[#img-12|Figure 12]] shows the shape functions for the 2D case. The top displays the last node function and the bottom the first node function, the function of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness. Top and bottom functions coincides at the edges in order to create a continuous field, but only the bottom functions decay uniformly from the node to the opposite edge. The shape functions with <math display="inline">c=0</math> are the only case where all the shape functions are indistinguishable, these are planes. | |
<div id='img-12'></div> | <div id='img-12'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;" |
|- | |- | ||
|[[Image:Review_101239056093_5599_image12.jpg|600px|For the bidimensional case, the top displays the last node function and the bottom the first node function, the function of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness.]] | |[[Image:Review_101239056093_5599_image12.jpg|600px|For the bidimensional case, the top displays the last node function and the bottom the first node function, the function of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 12'''. For the bidimensional case, the top displays the last node function and the bottom the first node function, the function of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness | + | | colspan="1" style="padding:10px;| '''Figure 12'''. For the bidimensional case, the top displays the last node function and the bottom the first node function, the function of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness |
|} | |} | ||
− | + | [[#img-13|Figure 13]] shows the magnitude of the gradient with respect to the normalized space. With the same tabular configuration of [[#img-12|Figure 12]], the columns separate the first three levels of smoothness, the top displays the last node gradient and the bottom the first node gradient, the gradient of the second node is equivalent to that of the first one. Only the gradient magnitude at the bottom has a uniform variation from the node to the opposite face, and the value of the node does not contribute to the value of such a face. On the contrary, in the top can be observed that the value of the node contributes to the gradient at the opposite face, which means that using <math display="inline">~c > 0~</math> the continuity on the stress field is only guaranteed at the calculation points, but not in the simplices edges. | |
<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: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;" |
|- | |- | ||
|[[Image:Review_101239056093_6320_image13.jpg|600px|For the bidimensional case, the top displays the last node gradient magnitudes and the bottom the first node gradient magnitudes, the gradient magnitudes of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness.]] | |[[Image:Review_101239056093_6320_image13.jpg|600px|For the bidimensional case, the top displays the last node gradient magnitudes and the bottom the first node gradient magnitudes, the gradient magnitudes of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 13'''. For the bidimensional case, the top displays the last node gradient magnitudes and the bottom the first node gradient magnitudes, the gradient magnitudes of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness | + | | colspan="1" style="padding:10px;| '''Figure 13'''. For the bidimensional case, the top displays the last node gradient magnitudes and the bottom the first node gradient magnitudes, the gradient magnitudes of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness |
|} | |} | ||
− | |||
===3.7 Assembling volume's equation=== | ===3.7 Assembling volume's equation=== | ||
Line 949: | Line 955: | ||
===3.9 Special cases=== | ===3.9 Special cases=== | ||
− | By making some considerations, we identify two special cases where the calculations can be simplified, in order to increase the performance of the total computation, at the expense of losing control over the volumes shape. These cases are 1) the Voronoi mesh assumption and 2) the FV-FEM correlation. | + | By making some considerations, we identify two special cases where the calculations can be simplified, in order to increase the performance of the total computation, at the expense of losing control over the volumes shape. These cases are: 1) the Voronoi mesh assumption and 2) the FV-FEM correlation. |
− | In the first case, we assume that the initial mesh is equivalent to the Voronoi diagram and that the Voronoi centres correspond to the calculation points <math display="inline">\mathbf{x}_i</math>. Hence, the subdivision of the neighborhood <math display="inline">{B}_i</math> is already given by the Delaunay triangulation which is dual to the Voronoi mesh, as illustrated in | + | In the first case, we assume that the initial mesh is equivalent to the Voronoi diagram and that the Voronoi centres correspond to the calculation points <math display="inline">\mathbf{x}_i</math>. Hence, the subdivision of the neighborhood <math display="inline">{B}_i</math> is already given by the Delaunay triangulation which is dual to the Voronoi mesh, as illustrated in [[#img-14|Figure 14]](a). Moreover, the integrals of subfaces <math display="inline">e_{ijk}</math> using pair-wise approximations can be exactly integrated with the midpoint rule, since the faces are orthogonal to the vector joining the calculation points <math display="inline">\mathbf{x}_{\vec{ij}}</math>, and the derivatives along the subface are constants. |
<div id='img-14'></div> | <div id='img-14'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;max-width: 100%;" |
|- | |- | ||
|[[Image:Review_101239056093_3668_image14.jpg|600px|(a) The initial mesh is equivalent to the Voronoi diagram and the Voronoi centres correspond to the calculation points x<sub>i</sub>. (b) The initial mesh is generated from a FEM-like triangular mesh. The calculation points x<sub>i</sub> are defined to be the nodes of the triangular mesh, and the volume faces are created by joining the centroids of the triangles with the midpoint of the segments.]] | |[[Image:Review_101239056093_3668_image14.jpg|600px|(a) The initial mesh is equivalent to the Voronoi diagram and the Voronoi centres correspond to the calculation points x<sub>i</sub>. (b) The initial mesh is generated from a FEM-like triangular mesh. The calculation points x<sub>i</sub> are defined to be the nodes of the triangular mesh, and the volume faces are created by joining the centroids of the triangles with the midpoint of the segments.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 14'''. (a) The initial mesh is equivalent to the Voronoi diagram and the Voronoi centres correspond to the calculation points <math>\mathbf{x}_i</math>. (b) The initial mesh is generated from a FEM-like triangular mesh. The calculation points <math>\mathbf{x}_i</math> are defined to be the nodes of the triangular mesh, and the volume faces are created by joining the centroids of the triangles with the midpoint of the segments | + | | colspan="1" style="padding:10px;| '''Figure 14'''. (a) The initial mesh is equivalent to the Voronoi diagram and the Voronoi centres correspond to the calculation points <math>\mathbf{x}_i</math>. (b) The initial mesh is generated from a FEM-like triangular mesh. The calculation points <math>\mathbf{x}_i</math> are defined to be the nodes of the triangular mesh, and the volume faces are created by joining the centroids of the triangles with the midpoint of the segments |
|} | |} | ||
− | In the second case, the initial mesh is generated from a FEM-like triangular mesh and the approximations are assumed to be linear. In such a case, the calculation points <math display="inline">\mathbf{x}_i</math> are defined to be the nodes of the triangular mesh, and the volume faces are created by joining the centroids of the triangles with the midpoint of the segments, as presented in | + | In the second case, the initial mesh is generated from a FEM-like triangular mesh and the approximations are assumed to be linear. In such a case, the calculation points <math display="inline">\mathbf{x}_i</math> are defined to be the nodes of the triangular mesh, and the volume faces are created by joining the centroids of the triangles with the midpoint of the segments, as presented in [[#img-14|Figure 14]](b). This particular version is equivalent to the cell-centred finite volume scheme introduced by Oñate et al. <span id='citeF-7'></span>[[#cite-7|[7]]], who proved that the global linear system produced by this FV scheme is identical to that produced by FEM if the same mesh is used. |
==4. Results== | ==4. Results== | ||
− | In order to test the numerical performance of the proposed method, we use the well known analytical experiment of an infinite plate with a circular hole in the origin <span id='citeF-26'></span>[[#cite-26|[26]]]. In such a experiment, the plate is stretched along the horizontal axis with a uniform tension of <math display="inline">\mathbf{f}_{[1]}=10 ~~kPa</math> from each side, as is shown in | + | In order to test the numerical performance of the proposed method, we use the well known analytical experiment of an infinite plate with a circular hole in the origin <span id='citeF-26'></span>[[#cite-26|[26]]]. In such a experiment, the plate is stretched along the horizontal axis with a uniform tension of <math display="inline">\mathbf{f}_{[1]}=10 ~~kPa</math> from each side, as is shown in [[#img-15|Figure 15]]. The material is characterized by the Poisson ratio, <math display="inline">\nu=0.3</math>, and Young modulus, <math display="inline">E=10 ~~MPa</math>. Plane stress is assumed with thickness equivalent to the unity. The dimensions of the computational domain are <math display="inline">a=0.5m</math> and <math display="inline">b=2m</math>. |
<div id='img-15'></div> | <div id='img-15'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;" |
|- | |- | ||
|[[Image:Review_101239056093_7940_image15.jpg|600px|(a) Infinite plate with a hole being stretched along the horizontal axis with a force of f<sub>[1]</sub>=10 ~~kPa from each side. (b) Computational domain, a= 0.5m and b=2m, with axysymmetrical assumptions used to test the numerical method. The polar coordinates, r and θ, for calculating the analytical stress field.]] | |[[Image:Review_101239056093_7940_image15.jpg|600px|(a) Infinite plate with a hole being stretched along the horizontal axis with a force of f<sub>[1]</sub>=10 ~~kPa from each side. (b) Computational domain, a= 0.5m and b=2m, with axysymmetrical assumptions used to test the numerical method. The polar coordinates, r and θ, for calculating the analytical stress field.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 15'''. (a) Infinite plate with a hole being stretched along the horizontal axis with a force of <math>\mathbf{f}_{[1]}=10 ~~kPa</math> from each side. (b) Computational domain, <math>a= 0.5m</math> and <math>b=2m</math>, with axysymmetrical assumptions used to test the numerical method. The polar coordinates, <math>r</math> and <math>\theta </math>, for calculating the analytical stress field | + | | colspan="1" style="padding:10px;"| '''Figure 15'''. (a) Infinite plate with a hole being stretched along the horizontal axis with a force of <math>\mathbf{f}_{[1]}=10 ~~kPa</math> from each side. (b) Computational domain, <math>a= 0.5m</math> and <math>b=2m</math>, with axysymmetrical assumptions used to test the numerical method. The polar coordinates, <math>r</math> and <math>\theta </math>, for calculating the analytical stress field |
|} | |} | ||
Line 1,010: | Line 1,016: | ||
|} | |} | ||
− | are used within the calculus. | + | are used within the calculus. [[#img-16|Figure 16]](a) exhibits the discretization of the computational domain into 2411 polygonal volumes used to compare the numerical results against the analytical stress field. This mesh is not equivalent to the Voronoi diagram; [[#img-16|Figure 16]](b) the level sets of <math display="inline">\boldsymbol{\sigma }_{[11]}</math> between <math display="inline">0</math> to <math display="inline">30 ~~kPa</math>, with steps of <math display="inline">1 ~~kPa</math>. [[#img-16|Figure 16]](c) Level sets of <math display="inline">\boldsymbol{\sigma }_{[22]}</math> between <math display="inline">-10</math> and <math display="inline">6 ~~kPa</math>, with steps of <math display="inline">0.8 ~~kPa</math> and [[#img-16|Figure 16]](d) Level sets of <math display="inline">\boldsymbol{\sigma }_{[12]}</math> between <math display="inline">-10</math> and <math display="inline">2 ~~kPa</math>, with steps of <math display="inline">0.6 ~~kPa</math>. |
<div id='img-16'></div> | <div id='img-16'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;" |
|- | |- | ||
|[[Image:Review_101239056093_1864_image16.jpg|600px|(a) Polygonal mesh used for comparison of numerical results. (b) Level sets of σ<sub>[11]</sub> between 0 to 30 ~~kPa. (c) Level sets of σ<sub>[22]</sub> between -10 and 6 ~~kPa. (d) Level sets of σ<sub>[12]</sub> between -10 and 2 ~~kPa.]] | |[[Image:Review_101239056093_1864_image16.jpg|600px|(a) Polygonal mesh used for comparison of numerical results. (b) Level sets of σ<sub>[11]</sub> between 0 to 30 ~~kPa. (c) Level sets of σ<sub>[22]</sub> between -10 and 6 ~~kPa. (d) Level sets of σ<sub>[12]</sub> between -10 and 2 ~~kPa.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 16'''. (a) Polygonal mesh used for comparison of numerical results. (b) Level sets of <math>\boldsymbol{\sigma }_{[11]}</math> between <math>0</math> to <math>30 ~~kPa</math>. (c) Level sets of <math>\boldsymbol{\sigma }_{[22]}</math> between <math>-10</math> and <math>6 ~~kPa</math>. (d) Level sets of <math>\boldsymbol{\sigma }_{[12]}</math> between <math>-10</math> and <math>2 ~~kPa</math> | + | | colspan="1" style="padding:10px;"| '''Figure 16'''. (a) Polygonal mesh used for comparison of numerical results. (b) Level sets of <math>\boldsymbol{\sigma }_{[11]}</math> between <math>0</math> to <math>30 ~~kPa</math>. (c) Level sets of <math>\boldsymbol{\sigma }_{[22]}</math> between <math>-10</math> and <math>6 ~~kPa</math>. (d) Level sets of <math>\boldsymbol{\sigma }_{[12]}</math> between <math>-10</math> and <math>2 ~~kPa</math> |
|} | |} | ||
− | The Dirichlet conditions are imposed on the bottom and left side of the computational domain as is shown in | + | The Dirichlet conditions are imposed on the bottom and left side of the computational domain as is shown in [[#img-16|Figure 16]](b). Next in order, the analytic stress of equations [[#eq-64|(64)]], [[#eq-65|(65)]] and [[#eq-66|(66)]] is imposed as Neumann condition over the top and right side of the computational domain. |
− | + | [[#img-17|Figure 17]](a) presents the averaged error as a function of the volumes face length mean, denoted <math display="inline">\Delta x</math>, as we might expect, the error is proportional to the mesh refinement. For a mesh of 478 volumes, [[#img-17|Figure 17]](b) shows the percentage of the error with respect to the error of <math display="inline">c=0</math>, for different smoothing levels, <math display="inline">c=0</math> correspond the linear interpolator. Observe that the error of the stress field does not decreases significantly because we do not increase the degrees of freedom of the linear system, although we built a better field description, which can be useful when solving non-linear formulations. | |
<div id='img-17'></div> | <div id='img-17'></div> | ||
− | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: | + | {| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 80%;" |
|- | |- | ||
|[[Image:Review_101239056093_1349_image17.jpg|600px|(a) The averaged error decreasing as a function of mesh size, denoted ∆x. (b) Using a mesh of 628 volumes, percentage of error for different smoothing levels with respect to the error of c=0, which is the linear interpolator, error increases after c=2.]] | |[[Image:Review_101239056093_1349_image17.jpg|600px|(a) The averaged error decreasing as a function of mesh size, denoted ∆x. (b) Using a mesh of 628 volumes, percentage of error for different smoothing levels with respect to the error of c=0, which is the linear interpolator, error increases after c=2.]] | ||
|- style="text-align: center; font-size: 75%;" | |- style="text-align: center; font-size: 75%;" | ||
− | | colspan="1" | '''Figure 17'''. (a) The averaged error decreasing as a function of mesh size, denoted <math>\Delta \mathbf{x}</math>. (b) Using a mesh of 628 volumes, percentage of error for different smoothing levels with respect to the error of <math>c=0</math>, which is the linear interpolator, error increases after <math>c=2</math> | + | | colspan="1" style="padding:10px;"| '''Figure 17'''. (a) The averaged error decreasing as a function of mesh size, denoted <math>\Delta \mathbf{x}</math>. (b) Using a mesh of 628 volumes, percentage of error for different smoothing levels with respect to the error of <math>c=0</math>, which is the linear interpolator, error increases after <math>c=2</math> |
|} | |} | ||
Within this paper we discuss a numerical strategy to solve the elasticity problem upon unstructured and non conforming meshes, allowing all kinds of flat-faced elements (polygons in 2D and polyhedra in 3D). The core of the formulation relies on two numerical procedures 1) the Control Volume Function Approximation (CVFA), and 2) the polynomial interpolation in the neighborhood of the control volumes, which is used to solve the surface integrals resulting from applying the divergence theorem. By comparing the estimated stress against the analytical stress field of the well known test of an infinite plate with a hole, we show that this conservative approach is robust and accurate.
Keywords: Stress analysis, elasticity, solid mechanics, CVFA, Finite Volume, unstructured mesh, non conforming mesh
One of the main aims in engineering is creating tools, structures and systems to enhance the quality of life in our society. In the course of the creation process, the design stage is critical for the final outcome. During this stage the engineer have to predict the prototype response when interacting with the physical world. Many of the observed phenomena in the physical world, such as solid mechanics, fluid dynamics, heat diffusion, and others, can be described with Partial Differential Equations (PDEs) by assuming time and space as a continuum.
Computational Continuum Mechanics (CCM) is the area dedicated to develop numerical methods and heuristics to solve these PDEs. Most of the methods can be classified into these two families: 1) weighted residual and 2) conservative methods. The Galerkin formulations are popular and widely used weighted residual methods, such as the Finite Element Method (FEM), which is a well established technique in Computational Solid Mechanics (CSM). Alternatively, the Finite Volume Method (FV) and the Control Volume Function Approximation (CVFA) are common approaches of conservative methods. The main difference between both families is that weighted residuals methods do not conserve quantities locally, but globally instead, resulting in linear systems with commendable numerical properties (symmetrical and well-conditioned matrices, for example). Nevertheless, due to its conservative nature, the second group is more attractive for fluid structure interaction [1,2] and multiphysics simulations [3,4], where several PDE-solvers must be coupled. For that reason, in recent years FV has been subject of interest for solving CSM problems.
Most of the CSM non-linear strategies depend on the accuracy of the estimated stress field for the elasticity problem, such as those for plasticity and damage [5,6]. Hereafter we refer as elasticity-solver to the numerical computation that calculates the displacement and stress fields for a given domain and boundary conditions.
In his influential papers, Oñate et al. propose a FV format for structural mechanics based on triangular meshes [7,8], discussing the cell vertex scheme, the cell centred finite volume scheme and its corresponding mixed formulations, showing that the cell centred strategy produces the same symmetrical global stiffness matrix that FEM using linear triangular elements. Analogously, Bailey et al. develop a similar approach, but using quadrilateral elements to produce cell-centred volumes [9,10]. Even though, the shapes of the volumes in both formulations are completely defined by the FEM-like mesh (triangular or quadrilateral) and it is not possible to handle arbitrary polygonal shapes, as we might expect when receiving the mesh as a read-only input.
Slone et al. [11] extends the investigation of [7] by developing a dynamic solver based on an implicit Newmark scheme for the temporal discretization, with the motivation of coupling an elasticity-solver with his multi-physics modelling software framework, for later application to fluid structure interaction.
Another remarkable algorithm is the proposed by Demirdzic et al. [12,13,14,15,16]. The numerical procedure consists in decoupling the strain term into the displacement Jacobian and its transpose in a cell-centred scheme. The Jacobian is implicitly estimated by approximating the normal component of each face as the finite difference with respect to the adjacent nodes, while the Jacobian transpose is an explicit average of Taylor approximations around the same adjacent nodes. This decoupling produces a smaller memory footprint than FEM because the stiffness matrix is the same for all the components. The solution is found by solving one component each iteration in a coordinate descent minimization. This line of work has shaped most of the state of the art techniques in FV for coupling elasticity-solvers to Computational Fluid Dynamics (CFD) via finite volume practices (usually associated to CFD), such as the schemes proposed by [17,18,19]. However, this segregated algorithm may lead to slow convergence rates when processing non-linear formulations, for example, when it is required to remove the positive principal components of the stress tensor in phase-field damage formulations [20]. In addition, if some non-linear strategy requires multiple iterations of the linear elasticity-solver, such as finite increments in damage models, the nested iterations will increase the processing requirements for simple problems. To circumvent this drawback Cardiff et al. presents a fully block coupled direct solution procedure [21], which does not require multiple iterations, at expense of decomposing the displacement Jacobian of any arbitrary face into a) the Jacobian of the displacement normal component, b) the Jacobian of the displacement tangential component, c) the tangential derivative of the displacement normal component and d) the tangential derivative of the displacement tangential component. This decomposition complicates the treatment of the stress tensor in the iterative non-linear solvers mentioned before for plasticity and damage.
A generalized finite volume framework for elasticity problems on rectangular domains is proposed by Cavalcante et al. [22]. They use higher order displacement approximations at the expense of fixed axis-aligned grids for discretization.
Nordbotten proposes a generalization of the multi-point flux approximation (MPFA), which he names multi-point stress approximation (MPSA) [23]. The MPSA assembles unique linear expressions for the face average stress with more than two points in order to capture the tangential derivatives. The stress field calculated with this procedure is piece-wise constant.
In this work, we propose an elasticity-solver based on CVFA techniques [24,25], using piece-wise polynomial interpolators for solving the surface integrals on the volumes boundaries. The polynomials degree can be increased without incrementing the system degrees of freedom, which make this method more suitable for non-linear models and dynamic computations. Furthermore, this algorithm can handle polygonal/polyhedral, unstructured and non conforming meshes, and does not require the decomposition of the stress tensor.
We consider an arbitrary body, , with boundary . The displacement of a point is denoted by . The subscript brackets indicates the component of the vector or matrix. By assuming small deformations and deformation gradients, the infinitesimal strain tensor, denoted , is given by
|
(1) |
Moreover, by considering isotropic elastic materials, the stress tensor, , is defined as
|
(2) |
where is the identity matrix, is the trace, and and are the Lamé parameters characterizing the material. These parameters are related with the Young's modulus, , and the Poisson's ratio, , by the following equivalences
|
(3) |
and
|
(4) |
where for plane stress analysis, and for plane strain and the 3D cases.
The strong form of the static linear elasticity equation is
|
(5) |
The domain boundary is the union of the boundary with Neumann conditions, denoted , and the boundary with Dirichlet conditions, denoted . Equation (5) must be satisfied for the given forces and displacements along the boundary. The following equations remark these user defined boundary conditions,
|
Figure 1 illustrates the initial body with the boundary conditions, and the distorted body after equilibrium is solved in the elasticity equation.
On this section we go into the details of the numerical procedure by discussing: 1) the discretization with CVFA, 2) the control volumes integration, 3) the subfaces integrals, 4) the simplex-wise polynomial approximation, 5) the pair-wise polynomial approximation, 6) the homeostatic splines used within the shape functions, 7) the linear system assembling, 8) how to impose boundary conditions and 9) two special cases of the formulation.
For the sake of legibility, in some parts of the text we unfold the matrices only for the bidimensional case, but the very same procedures must be followed for the 3D case.
The domain is discretized into control volumes, denoted , using the Control Volume Function Approximation (CVFA) proposed by Li et al. [24,25]. The partition of is defined by
|
(7) |
where the boundary of each control volume, , is composed by flat faces, denoted ,
|
(8) |
Figure 2 illustrates the partition of into control volumes defined in the equations (7) and (8).
Figure 3 shows a three dimensional control volume.
Figure 3. The boundary of the three dimensional control volume is subdivided into flat faces, denoted . The unit vector is normal to the face |
Every control volume must have a calculation point
|
(9) |
which is used to estimate the displacement field. Such a point is the base location to calculate the stiffness of the volume. In the volumes adjacent to the boundary , it is convenient to establish the calculation point over the corresponding boundary face,
|
(10) |
in order to set the Dirichlet condition directly on the point.
The elasticity equation (5) is now integrated over the control volume
|
(11) |
using the divergence theorem we transform the volume integral into a surface integral over the volume boundary
|
(12) |
The evaluation of the surface integrals is based on the approximation of the displacement field inside the neighborhood of the volume, denoted ,
|
(13) |
making use of a group of piece-wise polynomial interpolators, denoted . We are going to discuss these interpolators later in this section.
For that reason, the displacement field is decoupled from the stress tensor by using the strain (1) and stress (2) definitions. Taking advantage of the stress tensor symmetry , we rewrite the stress normal to the boundary as
|
(14) |
where is the face orientation matrix and is the engineering stress vector. Developing the stress definition (2) component-wise we can decompose it into the constitutive matrix, denoted , and the engineering strain vector, denoted , as follows
|
then the components of the strain vector are retrieved from the equation (1), and it is decomposed into the matrix differential operator and the displacement function .
|
(17) |
Summarizing the equations (14), (16) and (17) we have
|
(18) |
where is the stiffness of the volume boundary.
Once the displacement field is decoupled, we rewrite the equation (12) as
|
(19) |
Using the fact that the control volume boundary is divided into flat faces, as in equation (8), we split the integral (19) into the sum of the flat faces integrals
|
(20) |
Notice that the face orientation along the flat face, denoted , is constant. Furthermore, if the control volumes are considered to be made of a unique material and the flat faces to be formed by pairs of adjacent volumes, then the constitutive matrix along the flat face, denoted , is also considered constant. The matrix is estimated from the harmonic average of the Lamé parameters assigned to the adjacent volumes, where and are the properties of the volume ,
|
(21) |
with and we simplify the equation (20) as
|
(22) |
where is the strain integral along the flat face ,
|
(23) |
The accuracy of the method depends on the correct evaluation of this integral.
The surface integrals along the flat faces are calculated using an auxiliary piece-wise polynomial approximation of the displacement field. This approximation is based on the simplices (triangles in 2D or tetrahedra in 3D) resulting from the Delaunay triangulation of the calculation points from the neighborhood of . The Delaunay triangulation is the best triangulation for numerical interpolation, since it maximizes the minimum angle of the simplices, which means that its quality is maximized as well. We define the neighborhood of volume as the minimum set of calculation points such that the simplices intersecting does not change if we add another calculation point to the set. Observe that the neighborhood does not always coincide with the set of calculation points in volumes adjacent to , as in most of the FV formulations. Once the neighborhood is triangulated, we ignore the simplices with angles smaller than degrees, and the simplices formed outside the domain, which commonly appear in concavities of the boundary . The local set of simplices resulting from the neighborhood of is denoted . Figure 4 illustrates the difference between (a) the simplices resulting from the triangulation of the calculation points in adjacent volumes and (b) those resulting from the triangulation of the proposed neighborhood .
The face is subdivided into subfaces, denoted ,
|
(24) |
these subfaces result from the intersection between and the control volume . Figure 4(b) illustrates six key points of this approach: 1) the simplices are used to create a polynomial interpolation of over the boundary of the control volume, 2) most of the faces are intersected by several simplices, such faces must be divided into subfaces to be integrated, 3) some few faces are inside a single simplex, as illustrated in the face formed by and , 4) there are volumes that require information of non-adjacent volumes to calculate its face integrals, such as requires , 5) the dependency between volumes is not always symmetric, which means that if requires does not implies that requires , and 6) non conforming meshes are supported, as shown in the faces formed by , , , and .
The integral (23) is now rewritten in terms of the subfaces
|
(25) |
Each subface is bounded by a simplex, where the displacement , and it derivatives, , are a polynomial interpolation. Hence the integrals in equation (25) are solved exactly by using the Gauss-Legendre quadrature with the required number of integration points, denoted , depending on the polynomial degree,
|
(26) |
where is the corresponding quadrature weight and is the strain evaluation of the Gauss point with the proper change of interval, denoted . Figure 5 shows the change of interval required for a 2D face. A 3D face (a polygon) must be subdivided to be integrated with a triangular quadrature.
Most of the cases, the displacement is interpolated inside the simplices, but in some geometrical locations these can not be created, in consequence, the displacement is interpolated pair-wise using the volumes adjacent to the subface . We discuss both strategies in the following subsections.
In the general case, the simplices are formed by points. The points forming the simplex that is bounding the subface are denoted , and its displacements .
The shape functions used for the polynomial interpolation are defined into the normalized space. A point in such space is denoted , its component is denoted , and the point forming the simplex is expressed . The nodes of the normalized simplex are given by the origin, , and the standard basis vectors,
|
(27) |
where is the standard basis vector. Figures 6 and 7 illustrates the original and the normalized simplices with the corresponding node numeration for 2D and 3D respectively.
Figure 6. (a) The simplex formed by the points , and in the original space contains an interior point that is mapped to (b) into the normalized 2D-simplex formed by the points , and |
Figure 7. (a) The 3D-simplex formed by the points , , and in the original space contains an interior point that is mapped to (b) into the normalized 3D-simplex formed by the points , , and |
The shape functions, denoted , are used to interpolate the displacement field inside the normalized simplex. Such functions are non-negative and are given by
|
where is the homeostatic spline, which is the simplest polynomial defined in the interval that have derivatives equal to zero in the endpoints of the interval. We will discuss this spline later.
The set of shape functions is a partition of unity, which means that the sum of the functions in the set is equal to one into the interpolated domain
|
(29) |
furthermore, these functions are equal to one in its corresponding node, which implies that
|
The gradients of the shape functions with respect to the normalized space are denoted . The norm of the sum of such gradients is zero
|
(32) |
which means that there are not numerical artifacts into the strain field.
Any point inside the simplex can be formulated as a function of a point in the normalized space, , by using the shape functions and the points forming the simplex
|
(33) |
In order to calculate the normalized point, denoted , associated to the integration point , we use the shape functions definitions to rewrite the equation (33) in matrix form
|
where is the vector resulting from evaluating the spline for component-wise, and is the distortion matrix given by the concatenation of the following column vector differences
|
(36) |
Now, from equation (35) we retrieve the point as
|
(37) |
and solving for we obtain
|
(38) |
where is the inverse function of applied component-wise to the product of the matrix-vector operation.
Similar to the approximation in equation (33), within the simplex enclosing the subface , the displacement field evaluated at is defined as,
|
(39) |
Hence, when calculating the quadrature of equation (26), the strain evaluated at the integration point is given by
|
where captures the deformation at , and is the vector with the concatenated displacement components of the points forming the simplex.
In order to calculate the deformation matrix , we require the derivatives of the shape functions with respect to , denoted . These derivatives are calculated by solving the linear systems resulting from the chain rule
|
(43) |
where is the geometric jacobian evaluated at . This jacobian relates both spaces, captures the distortion of the simplex, and is derivated from equation (33),
|
(44) |
The gradients of the shape functions with respect to inside the sum are obtained straightforward once we have the spline first derivative . Notice that the geometric jacobian is equivalent to the distortion matrix if and only if the homeostatic spline is .
Since we are not making any assumption about the volumes distribution through the mesh, neither about the internal location of its calculation points, then we have to deal with portions of the mesh that are no covered by any simplex. Figure 8 illustrates the two most common cases. The first case takes place in meshes where the calculation points of volumes contiguous to the boundary are in the interior of such volumes, producing subfaces not intersected by any simplex, and the second case occurs when elongated sections of the domain are discretized with a queue of aligned volumes, where each volume has only two neighbors on opposite faces and no simplex can be formed.
In such cases, the displacement field within the subface is a pair-wise polynomial approximation between the adjacent volumes, and , regardless the dimension
|
(45) |
where and are the shape functions, and is the normalized projection of the integration point into the vector which goes from to , denoted
|
(46) |
When calculating the quadrature of equation (26), the pairwise strain is given by
|
This pairwise approximation must be used only when necessary because it can not capture the deformation orthogonal to .
The homeostatic spline is a function of a single variable defined from to , denoted , and curved by the parameter , which indicates the level of smoothness. This spline is the simplest polynomial with derivatives equal to zero at the endpoints and . The polynomial degree is given by , and such a polynomial requires integration points to calculate the exact integral in equation (26) using the Gauss-Legendre quadrature.
When designing this spline, we wanted to gain accuracy by building a piece-wise bell-shaped interpolation function around the calculation points, inspired on the infinitely smooth kernels used in other numerical techniques. Therefore, we force the derivatives of the polynomial to be zero over such points in order to homogenize the function. For that reason, we use the term homeostatic spline when referring to this spline.
To fulfill the smoothness requisites commented before, we solved a linear system for calculating the coefficients of the polynomial. The equations of this system were obtained by forcing the derivatives to be zero at the endpoints. Once we solved the coefficients for the first twenty polynomials, from to , we found out that the first half of such coefficients are null, and the entire polynomial can be calculated directly as
|
(50) |
where is the not null coefficient
|
(51) |
is the number of factors needed to calculate
|
(52) |
and is accumulation of the coefficients for normalizing the spline
|
(53) |
The first derivative is simply calculated as
|
(54) |
Figure 10(a) shows the evolution of the spline as we increase the smoothness parameter from to , and Figure 10(b) the evolution of it first derivative. Smoother splines produces higher order polynomials which increases the accuracy of the stress field approximation. This feature is specially important when solving non-linear problems sensibles to the stress field.
Figure 10. (a) The evolution of the homeostatic spline from to illustrates the smoothness requirements at the endpoints of each spline and its (b) first derivatives |
Since the derivatives of the homeostatic spline 50 are zero at the endpoints of the interval , the inverse function is not defined in that points. However, we estimate a pseudo-inverse within this interval, , by finding the coefficients of a polynomial of the same degree, , such that the endpoints coincide with the spline and the first derivative at the midpoint is equivalent to the inverse of the spline first derivative, that is
|
(55) |
The higher derivatives in the midpoint are forced to be zero. Once we calculated the coefficients for the first twenty polynomials, from to , we found out that the pseudo-inverse can be approximated directly from the following formulae
|
(56) |
where is the coefficient for , and is the factor that distinguish higher order coefficients. Such terms are calculated as
|
(57) |
respectively. Figure 11 exhibits the curves for the first seven levels of smoothness. The null higher derivatives requirement is noticeable at the midpoint.
Figure 11. Curves of the pseudo-inverse for the first seven levels of smoothness. The slope at the midpoint exposes the null higher derivatives requirement when increasing the polynomial order |
Figure 12 shows the shape functions for the 2D case. The top displays the last node function and the bottom the first node function, the function of the second node is equivalent to that of the first one. The columns separate the first three levels of smoothness. Top and bottom functions coincides at the edges in order to create a continuous field, but only the bottom functions decay uniformly from the node to the opposite edge. The shape functions with are the only case where all the shape functions are indistinguishable, these are planes.
Figure 13 shows the magnitude of the gradient with respect to the normalized space. With the same tabular configuration of Figure 12, the columns separate the first three levels of smoothness, the top displays the last node gradient and the bottom the first node gradient, the gradient of the second node is equivalent to that of the first one. Only the gradient magnitude at the bottom has a uniform variation from the node to the opposite face, and the value of the node does not contribute to the value of such a face. On the contrary, in the top can be observed that the value of the node contributes to the gradient at the opposite face, which means that using the continuity on the stress field is only guaranteed at the calculation points, but not in the simplices edges.
By using the simplex-wise (42) or the pair-wise (49) approximation, the strain face integral (25) is reformulated as
|
(58) |
then, the volume equilibrium equation (22) is
|
(59) |
reordering the terms we obtain
|
(60) |
where the matrix
|
(61) |
is the stiffness contribution at the integration point , within the subface when integrating the volume. Observe that the stiffness matrix is rectangular and the resulting global stiffness matrix is asymmetric.
The Neumann boundary conditions are imposed over the volume faces intersecting the boundary, by replacing the corresponding term in the sum of equation (20) with the integral of the function provided in (6.a),
|
(62) |
The Dirichlet conditions are imposed over the volumes calculation points by fixing the displacement as it is evaluated in the function given in (6.b),
|
(63) |
Since the Dirichlet conditions are imposed directly on the calculation points, these points must be located along the face which intersects the boundary with the condition .
By making some considerations, we identify two special cases where the calculations can be simplified, in order to increase the performance of the total computation, at the expense of losing control over the volumes shape. These cases are: 1) the Voronoi mesh assumption and 2) the FV-FEM correlation.
In the first case, we assume that the initial mesh is equivalent to the Voronoi diagram and that the Voronoi centres correspond to the calculation points . Hence, the subdivision of the neighborhood is already given by the Delaunay triangulation which is dual to the Voronoi mesh, as illustrated in Figure 14(a). Moreover, the integrals of subfaces using pair-wise approximations can be exactly integrated with the midpoint rule, since the faces are orthogonal to the vector joining the calculation points , and the derivatives along the subface are constants.
In the second case, the initial mesh is generated from a FEM-like triangular mesh and the approximations are assumed to be linear. In such a case, the calculation points are defined to be the nodes of the triangular mesh, and the volume faces are created by joining the centroids of the triangles with the midpoint of the segments, as presented in Figure 14(b). This particular version is equivalent to the cell-centred finite volume scheme introduced by Oñate et al. [7], who proved that the global linear system produced by this FV scheme is identical to that produced by FEM if the same mesh is used.
In order to test the numerical performance of the proposed method, we use the well known analytical experiment of an infinite plate with a circular hole in the origin [26]. In such a experiment, the plate is stretched along the horizontal axis with a uniform tension of from each side, as is shown in Figure 15. The material is characterized by the Poisson ratio, , and Young modulus, . Plane stress is assumed with thickness equivalent to the unity. The dimensions of the computational domain are and .
The analytical solution is given by the following formulae
|
where the polar coordinates,
|
(67) |
are used within the calculus. Figure 16(a) exhibits the discretization of the computational domain into 2411 polygonal volumes used to compare the numerical results against the analytical stress field. This mesh is not equivalent to the Voronoi diagram; Figure 16(b) the level sets of between to , with steps of . Figure 16(c) Level sets of between and , with steps of and Figure 16(d) Level sets of between and , with steps of .
Figure 16. (a) Polygonal mesh used for comparison of numerical results. (b) Level sets of between to . (c) Level sets of between and . (d) Level sets of between and |
The Dirichlet conditions are imposed on the bottom and left side of the computational domain as is shown in Figure 16(b). Next in order, the analytic stress of equations (64), (65) and (66) is imposed as Neumann condition over the top and right side of the computational domain.
Figure 17(a) presents the averaged error as a function of the volumes face length mean, denoted , as we might expect, the error is proportional to the mesh refinement. For a mesh of 478 volumes, Figure 17(b) shows the percentage of the error with respect to the error of , for different smoothing levels, correspond the linear interpolator. Observe that the error of the stress field does not decreases significantly because we do not increase the degrees of freedom of the linear system, although we built a better field description, which can be useful when solving non-linear formulations.
In this work we discussed a numerical technique to solve the elasticity equation for unstructured and non conforming meshes formed by elements of any arbitrary polygonal/polyhedral shape. The elasticity-solver is based on a finite volume formulation that, using the divergence theorem, represent the volume integral of the stress divergence in terms of the surface integral of the stress over the volume boundary. For considering the unit vector normal to the boundary as a constant, the boundary is divided into flat faces. Conforming and non-conforming meshes are processed without distinction. The displacement field is a piece-wise polynomial approximation surrounding the volumes, built on the top of the simplices resulting from the Delaunay triangulation of the volume neighborhood. A pair-wise polynomial interpolation is used for neighborhoods where the simplices are not the best option, and for 1D problems.
We introduced the homeostatic splines and it pseudo-inverse for higher order polynomial interpolations without the necessity of increasing the discretization points.
Since the stress term is calculated directly on the boundary of the control volumes, this strategy can be used in fracture formulations where the volumes are treated as indivisible components and the rupture occurs across the volumes boundaries.
In future work, we will investigate the accuracy of this numerical procedure for solving non-linear and dynamic models when using higher order homeostatic splines.
The present investigation was sponsored by a CONACYT scolarship from the Mexican government and the TCAiNMaND project, an IRSES Marie Curie initiative under the European Union 7th Framework Programme. In addition, the authors want to express his gratitude to MSc. Ernesto Ortega, and to Drs. Rafel Herrera and Joaquin Peña for his insightful commments and discussions during the elaboration of this paper.
[1] Slone A.K., Pericleous K., Bailey C., Cross M. Dynamic fluid-structure interaction using finite volume unstructured mesh procedures. Computers and Structures, 80:371-390, 2002.
[2] Slone A.K., Pericleous K., Bailey C., Cross M., Bennett C. A finite volume unstructured mesh approach to dynamic fluid-structure interaction: an assessment of the challenge of predicting the onset flutter. Applied Mathematical Modeling, 28:211-239, 2004.
[3] Bailey C., Taylor G.A., Cross M., Chow P. Discretisation procedures for multi-physics phenomena. Journal of Computational and Applied Mathematics, 103:3-17, 1999.
[4] Souli M., Ouahsine A., Lewin L. ALE formulation for fluid-structure interaction problems. Computer Methods in Applied Mechanics and Engineering, 190:659-675, 2000.
[5] Lubliner J., Oliver J., Oller S., Oñate E. A Plastic-Damage model for concrete. International Journal of Solids and Structures, 25:299-326, 1989.
[6] Armero F., Oller S. A general framework for continuum damage models. I. Infinitesimal plastic damage models in stress space. International Journal of Solids and Structures, 37:7409-7436, 2000.
[7] Oñate E., Cervera M., Zienkiewicz O.C. A finite volume format for structural mechanics. International Journal for Numerical Methods in Engineering, 37:181-201, 1994.
[8] Idelsohn S.R., Oñate E. Finite volumes and finite elements: Two 'Good Friends'. International Journal for Numerical Methods in Engineering, 37:3323-3341, 1994.
[9] Fryer Y.D., Bailey C., Cross M., Lai C.H. A control volume procedure for solving the elastic stress-strain equations on an unstructured mesh. Applied Mathematical Modeling, 15:639-645, 1991.
[10] Bailey C., Cross M. A Finite Volume procedure to solve elastic solid mechanics problems in three dimensions on an unstructured mesh. International Journal for Numerical Methods in Engineering, 38:1757-1776, 1995.
[11] Slone A.K., Bailey C., Cross M. Dynamic solid mechanics using finite volume methods. Applied Mathematical Modeling, 27(2):69-87, 2003.
[12] Demirdzic I., Martinovic D. Finite volume method for thermo-elasto-plastic stress analysis. Computer Methods in Applied Mechanics and Engineering, 109:331-349, 1993.
[13] Demirdzic I., Muzaferija S. Finite volume methods for stress analysis in complex domains. International Journal for Numerical Methods in Engineering, 137:3751-3766, 1994.
[14] Demirdzic I., Muzaferija S., Peric M. Benchmark solutions of some structural analysis problems using finite-volume method and multigrid acceleration. International Journal for Numerical Methods in Engineering, 40:1893-1908, 1997.
[15] Bijelonja I., Demirdzic I., Muzaferija S. A finite volume method for large strain analysis of incompressible hyperelastic materials. International Journal for Numerical Methods in Engineering, 64:1594-1609, 2005.
[16] Bijelonja I., Demirdzic I., Muzaferija S. A finite volume method for incompressible linear elasticity. Computer Methods in Applied Mechanics and Engineering, 195:6378-6390, 2006.
[17] Jasak H., Weller H.G. Application of the finite volume method and unstructured meshes to linear elasticity. International Journal for Numerical Methods in Engineering, 48:267-287, 2000.
[18] Tukovic Z., Ivankovic A., Karac A. Finite-volume stress analysis in multi-material linear elastic body. International Journal for Numerical Methods in Engineering, 93(4):400-419, 2012.
[19] Tang T., Hededal O., Cardiff P. On finite volume method implementation of poro-elasto-plasticity soil model. International Journal for Numerical and Analytical Methods in Geomecanics, 39:1410-1430, 2015.
[20] Borden M.J., Verhoosel C.V., Scott M., Hughes T.J.R., Landis C.M. A phase-field description of dynamic brittle fracture. Computer Methods in Applied Mechanics and Engineering, 217-220:77-95, 2012.
[21] Cardiff P., Tukovic Z., Jasak H., Ivankovic A. A block-coupled Finite Volume methodology for linear elasticity and unstructured meshes. Computers and Structures, 175:100-122, 2016.
[22] Cavalcante M.A.A., Pindera M-J. Generalized Finite-Volume Theory for Elastic Stress Analysis in Solid Mechanics - Part I: Framework. Journal of Applied Mechanics, 79(5):1006-1017, 2012.
[23] Nordbotten J.M. Cell-centered finite volume discretizations for deformable porous media. International Journal for Numerical Methods in Engineering, 100:399-418, 2014.
[24] Li B., Chen Z., Huan G. Control volume function approximation methods and their applications to modeling porous media flow. Advances in Water Resources, 26(4):435-444, 2003.
[25] Li B., Chen Z., Huan G. Control volume function approximation methods and their applications to modeling porous media flow II: the black oil model. Advances in Water Resources, 27(2):99-120, 2004.
[26] Timoshenko S.P., Goodier J.N. Theory of Elasticity. McGraw-Hill, 3 Edition, 1970.
Published on 10/10/19
Accepted on 01/10/19
Submitted on 26/05/19
Volume 35, Issue 4, 2019
DOI: 10.23967/j.rimni.2019.10.001
Licence: CC BY-NC-SA license