DISCUSIÓN DE LOS RESULTADOS
6.1 ESTUDIO PREVIO DE CAMPO DE TUBERÍAS DE ACERO ENTERRADAS
This section outlines the theory behind achieving a curvature based refinement sys- tem which is built on an octree structure. It describes how to obtain the curvature and relate it to a mesh sizing as well as the detail in the data structure.
Curvature
As the mesh sizing specification is related to the radius of curvature of the boundary of the domain, the accurate determination of the surface curvature is vital to the mesh generation process. The radius of curvature at a point on the surface x(u, v), is calculated using the principal curvatures, the eigenvalues of the matrixA =−TcTm−1
[35], where Tc and Tm are the metric and curvature tensors (or first and second
fundamental forms) of the surface, defined as Tm = " E F F G # = " xu· xu xu· xv xv· xu xv· xv # , Tc = " e f f g # = " N · xuu N · xuv N · xvu N · xvv # , and N is the unit normal vector
N = xu× xv ||xu× xv||
. (2.1)
The principal curvatures, k1 and k2 are calculated at each surface location (u, v) as
k1,2 = H± √ H2− K, K = detTc detTm , H = 1 2 eG− 2fF + gE detTm .
The radius of curvature for a given point, R, in the remainder of the process, is taken to be R = minnk1
1,
1 k2
o
. This leads to an isotropic mesh specification, since the directionality of the curvature is not considered. Extension to anisotropic meshes is possible by calculating the eigenvectors of the matrix A, giving the direction of the curvature components k1 and k2 in the parametric space. These values can be
used to obtain a vector in 3D space as the tangent to the surface at the point in the parametric curvature direction. This could then be projected onto the Cartesian axes obtaining three mesh spacing components defining anisotropy.
Curvature-based mesh spacing
To obtain a specification for the mesh sizing, the radius of curvature R of the surface to a mesh size parameter δ is related through
δ
R
Figure 2.1. Diagram showing the relation between the cord, C, radius of curvature, R and element size δ.
where ε is a user-defined parameter that controls the sensitivity of the system to curvature. Heuristically, decreasing ε will increase the number of elements specified for a given degree of curvature. This relation is shown in figure 2.1 where the red curve denotes an arc segment and the blue is a linear mesh segment of length δ. The distance of the element to the geometry, C, is then related to ε by ε = C/R. This definition was successfully first introduced to enable the use of curvature-aware high-order meshing, as shown in [78]. Since R has the range 0 < R ≤ ∞, where R =∞ denotes a flat surface, ‘sensible’ bounds need to be placed on range of value of δ so that δmin ≤ δ ≤ δmax. The parameter δmin allows the user to control and
limit the density of elements in regions of high curvature, as R goes to zero. The parameter δmax places a limit on the size of the elements to be found in the final
mesh, this allows surfaces which have little or no curvature to be considered sensibly. The three constants δmin, δmax and ε represent the only user-specified parameters
required for the automatic mesh specification process.
Octree structure
To specify a spatial distribution of mesh sizing, the three-dimensional domain is spatially subdivided using an octree structure. This is a tree structure where each parent octant possesses exactly 8 child octants. Each child octant may be further subdivided, leading to a hierarchical graph-based data structure as depicted in figure 2.2. The octree aligns well with the description of three-dimensional domains, since the subdivision of each octant into eight children equates directly to the division of each coordinate direction in two, as shown in figure 2.2. The criteria for stopping the subdivision process is given in section 2.2.2.
In the final octree, each point in the domain is contained within exactly one leaf octant (i.e. an octant that has no child octants). Tree structures have long been used to improve the efficiency of computational methods [3]. In the technique presented here, the primary and, possibly only, increase in computational speed seen compared to other methods would be in the querying of the information contained within the
octree, i.e the mesh spacing specification, for a given point in the domain. The octant which contains a given location can be identified quickly by octree traversal. This is detailed in algorithm 2.1. Although this highly efficient method for querying spacing information is very fast in the mesh generation stage, where a large number of queries will need to be made, this gain is far outweighed by the cost of constructing the octree. Here, every effort is made to mitigate the computational cost of constructing the octree by always subdividing equally and performing no post-processing of the octants for the purpose of boundary conformity. Therefore the construction process could be cheaper than other octree-based methods which require a more detailed process. Furthermore the amount of information that is required for each octant is minimal when using equal subdivision, thus reducing the memory requirements. Algorithm 2.1 Identify the leaf octant that contains a given point within the domain.
1: procedure Query(x)
2: O← root or master octant
3: while true do . repeat until loop is broken
4: if O→ IsLeaf then
5: return O . Break the loop and return the octant
6: end if
7: q← O → Quadrant(x) . Get which of the 8 quadrants x is in
8: O ← O → GetChild(q) . Get the child (1-8) q of the octant
9: end while
10: end procedure