Вы находитесь на странице: 1из 15

E521, SPRING 2008

Unstructured adaptive mesh generation and sparse matrix


storage applied to Stokes flow around cylinders
Cameron Bracken
Environmental Resources Engineering, Humboldt State University, Arcata, CA, USA.

Abstract. The flow field around cylindrical obstructions is computed by solving the Stokes
equations. We were able to reproduce well know flow patterns around cylinders at very low
Reynolds numbers. An h -Method adaptive meshing algorithm is developed using a heuris-
tic error indicator. Pressure tended to produce the meshes with the lowest relative error in
the least number of refinements. The meshes produced using u, v and p separately as error
indicators were markedly different. A significant reduction in computation time was achieved
using a sparse matrix storage and linear algebra software.

1. Introduction a set of nodes [Shewchuk, 1996]. The adaptive meshing al-


gorithm uses an unstructured, h -adaptive, one-way refine-
The Naiver-Stokes (NS) equation is a set of vector valued ment scheme based on a heuristic error indicator [Bangerth
nonlinear partial differential equations (PDE’s) which apply and Rannacher, 2003]. One-way refers to the fact that the al-
to flowing fluid. Common applications for the NS equa- gorithm only refines and does not derefine. Average relative
tions include ocean currents, weather, river hydraulics and error of each method is compared.
airplane flight [Chung, 2002]. The Clay Mathematical Insti- The Stokes simulation model utilizes sparse matrix stor-
tute lists the theory relating to the NS equations as one of age storage for the coefficient matrix A . The corresponding
the seven most important outstanding problems in modern system of linear equations is solved using sparse matrix li-
mathematics [Clay Mathematics Institute, 2000]. The NS equa- brary SLAP Seager [1988] as well as the dense matrix library
tions are the cornerstone of a field known as Computational LAPACK [Anderson et al., 1999]. Solution times using both
Fluid Dynamics (CFD). The equations themselves represent sparse and dense solvers are compared.
conservation of momentum principals applied to a control
volume. The solution to the NS equations are a set of func- 3. Literature Review
tions (V(x, t ), ρ(x, t ), p(x, t )), where v is the velocity field, ρ is
the density field and p is the pressure field. The CFD has historically been dominated by the finite dif-
The linear form of the Navier-Stokes equations are called ference (FD) method [Chung, 2002]. FD methods tend to have
the Stokes equations. These equations are typically only ap- much simpler formulations and be less computationally in-
plicable under extremely low Reynolds numbers (Re ¿ 1), tensive but they do not support unstructured grids. One
also known as creeping flow [White, 2006]. These conditions of the earliest applications of the FD method in CFD was
may involve high fluid viscosities or low velocities or a com- Courant et al. [1928].
bination of both. FE formulations require more mathematical rigor than FD
Mesh generation is fundamental to numerical solutions of methods but they support unstructured meshes and irregu-
PDE’s via the Finite Element (FE) method. Node placement lar problem domains. FE work was first published by Turner
and mesh creation is often more of an art than a science, if not et al. [1956]. 2D flow past a cylinder is a common application
an arbitrary decision of the modeler. Adaptive meshing tech- of the Stokes equations [Bangerth and Rannacher, 2003]. One
niques allow for efficient generation of “optimal meshes,” aim in modeling flow around a cylinder is to calculate the
that is meshes which minimize error and computation time. drag coefficient.
Adaptive mesh generation, while diverse in form, serves to
negate the issue of manual node placement, manual mesh 3.1. Grid Generation
creation and global mesh refinement. There are two main types of FE grid generation,
The issue of mesh generation comes hand in hand with the 1. Structured Grid generation involves some pattern of
issue of efficient solutions of the resulting system of equa- isoparametric elements which exploit the geometry of a
tions. The complete solution to the flow equations with a problem domain for efficient mesh generation. Structured
general mesh is computationally intensive if solved via di- grid generation may need to be preformed piecewise for
rect methods. In general the resulting matrices are sparse complex geometries. Structured grids apply only in 2 and
and a large time and memory savings may be achieved by 3D.
exploiting sparse matrix storage and solution methods. 2. Unstructured Grid generation involves the use of
Delaunay-Voronoi triangulation of a set of points. Many al-
2. Problem Formulation gorithms for constrained of Delaunay triangulation exist in-
cluding the Watson algorithm Watson [1981] and Triangle
We seek to solve the steady Stokes equations in 2D with [Shewchuk, 1996].
cylindrical obstructions using an adaptively generated finite
element (FE) mesh. The Stokes equations are solved via the 3.2. Adaptive Meshing
FE method. The unknowns of interest are velocity and pres-
sure, (v(x, y), p(x, y)). Integrations are done in global coor- Adaptive meshing techniques can apply to structured or
dinates via 4 point Gaussian quadrature. The freely avail- unstructured mesh generation in 1, 2, or 3D. Let E e be an
estimate of the actual error E e error for element e . Adap-
able software Triangle is used to generate meshes given tive meshing is used to refine or unrefine (coarsen) meshes
based on E e , (usually based on the solution gradient) [Chung,
2002]. E e is called an a priori error estimate because to calcu-
late, it requires a pre-computed solution. The focus here will
Computational Methods for Engineers Spring 2008. be in unstructured adaptive methods. There are three main
Humboldt State University. methodologies in unstructured mesh refinement
1
2 BRACKEN: ADAPTIVE MESHING AND SPARSE MATRIX STORAGE FOR STOKES FLOW

1. h-Methods also known as mesh refinement methods, re- If we assume that the flow is steady, incompressible
fine elements which have a high a priori error by adding and uniform in the z direction then V(x, t ) = V(x, y) =
nodes and vertices. (u(x, y), v(x, y)). If we further construct a situation involving
2. r-Methods also known as mesh movement methods, do very low Reynolds number (Re < 10), the nonlinear term in
not add any new nodes but simply move existing nodes in equation 1 will be small resulting in the Stokes equations
order to obtain the lowest possible global error. This may
involve solving an optimization problem. −ν∇2 V + ∇p = 0 (3)
3. p-Methods also known as mesh enrichment methods, in-
crease the degree of the polynomial interpolating function where p has been redefined as the scaled pressure p := p/ρ .
for a particular element with high a priori error estimate. The associated continuity equation is
Additionally many hybrid methods exist which combine
the ideas from the three basic adaptive mesh methods. Some ∇ · V = 0. (4)
of these hybrid methods are combined mesh refinement and
mesh movement (hr-methods) and combined mesh refine- The Stokes equations are linear and the solution is the set
ment and mesh enrichment (hp-methods). For additional in- of functions (V(x, y), p(x, y)).
formation on adaptive mesh generation methods, see Chung
[2002]. 4.2. Finite Element Formulation
For all unstructured adaptive mesh techniques, the gen-
We begin by constructing a piecewise approximate solu-
eral procedure involved is
tion to the Stokes equation V̂(x, y) and p̂(x, y) where
1. Solve the simulation model.
2. Obtain an estimate of the local relative error over each nv
element using some error indicator (typically u , v , p or ρ in V(x, y) ≈ V̂(x, y) = φ j (x, y)Ṽ j (5)
X
a CFD problem). j =1
3. Identify elements with high relative error.
np
4. Increase the accuracy of the solution over elements
p(x, y) ≈ p̂(x, y) = ψ j (x, y)p̃ j (6)
X
which have high error and
j =1
5. Repeating until a global error tolerance is met.
where φi (x, y) and ψi (x, y) are the interpolating functions as-
3.3. Sparse Matrix Storage and Computation sociated with velocity and pressure respectively, Ṽ j and p̃ j
are the nodal values velocity and pressure, n v is the number
1D coefficient matrices resulting from the FE method are
of velocity nodes and n p is the number of pressure nodes.
tightly banded and may be stored and solved efficiently.
For structured meshes in 2D coefficient matrices are typi- This formulation allows us to have a different number of ve-
cally banded and thus banded storage and solution algo- locity and pressure nodes. From this point on the explicit
rithms can be used with savings over dense solvers [Burkardt, dependency in x and y will be dropped in the interest conci-
2005c]. For unstructured meshes in 2D, coefficient matrices sion.
are typically sparse and unbanded. The sparsity is especially The necessary conditions of the FE method, which mini-
pronounced for adaptively generated meshes. Thus, general mize global error of the approximate solution, are
sparse matrix storage and computation is crucial for efficient
solutions to large problems.
Z
wi L {V̂, p̂} d Ω = 0 (7)
Sparse matrix data structures come in many forms all of Ω
which attempt to only store nonzero entries of a sparse ma- where Ω is the problem domain, wi are weighting func-
trix. The most simple storage structure is called the coordi- tions and L is the Stokes operator given by equations 3
nate format or the Triad format [Seager, 1988] which stores
the row number, column number and nonzero entries in and 4 [Willis, 1987]. The Galerkin method sets the weight-
vectors of equal length. Other, more efficient storage struc- ing functions equal to the interpolating functions such that
tures include the compressed sparse row format, compressed wi = (φi , ψi ). The equations so far are not very useful to
sparse column format, and the sparse block storage format. us, but if we apply the Stokes operator and multiply by the
The coordinate format is used in this paper. weighting functions we start to formulate the useful FE equa-
If we let n s be the number of nonzero entries in the ma- tions
trix A of dimension N , then the coordinate format will only Z
provide storage savings if 3n s < N 2 . Dense matrix storage φi (ν∇2 V̂ + ∇p̂) d Ω = 0 (8)
increases as N 2 where sparse storage increases linearly with Ω
N. Z
ψi ∇ · V̂ d Ω = 0. (9)

4. Model Formulation and Development which are known as the strong form of the Stokes equations.
This section will address the simplification of the Navier- A solution to these equations is a so called strong solution.
Stokes equations, finite element formulation, quadrature rule A strong solution, due to the second derivative term, re-
over the general triangle and the adaptive meshing algo- quires the interpolating functions be at least C 1 (Ω) functions
rithm. [Burkardt, 2005c].
We can derive the weak form of the Stokes equations via
4.1. Navier-Stokes Simplification integration by parts, which states that for a continuously dif-
ferential functions B and F defined over some region Ω
The NS Equations for unsteady compressible flow are

ρVt − µ∇2 V + ρ(V · ∇)V + ∇p = 0 (1)


Ï Ï I
B ∇2 F d Ω = − ∇B ∇F d Ω + B ∇F · n d s. (10)
where µ is the kinematic viscosity [Chung, 2002]. The NS Ω Ω ∂Ω
equations are typically coupled with the continuity equation
for fluids where B is a general function and F is a vector valued func-
tion both defined on Ω and n is an outward pointing unit
ρ t + ∇ · (ρV) = 0. (2) normal vector on ∂Ω [Marsden and Tromba, 2003].
BRACKEN: ADAPTIVE MESHING AND SPARSE MATRIX STORAGE FOR STOKES FLOW 3

Letting B = φi and F = V̂ If we take E e to be a surrogate for the actual error and he


Ï I to be a element length scale then the assumption is that as
ν∇φi · ∇V̂ + φi ∇p d A = φi ∇V̂ d s. (11) h e → 0,E e → 0. Therefore we introduce the parameters A mi n ,
A Ï s the minimum allowable element area, ², the maximum al-
ψi ∇ · V̂ d A = 0 (12) lowable relative percent error, and m the maximum allow-
A able number of elements that do not meet the error or area
which are known as the weak form of the Stokes equa- criteria. The algorithm for one way adaptive meshing is (Fig-
tions. The solution to these equations are only required to be ure 1)
C 0 (Ω) functions which will simplify the solution process and 1. Generate an initial sparse set of points.
allow us to use linear basis functions Burkardt [2005b]. 2. Generate mesh.
Let us examine equation 11 in order to explicitly formu-
late the equations associated with the weak Stokes equations. 3. Solve Stokes equations to determine I e .
There are 2n v + n p linear equations associated with these 4. Evaluate E e and A e for all elements e using equation 4.3.
equations 11 and 12 because equation 11 is vector valued 5. For all elements e
with two components. Substitute in the piecewise approx-
imate solutions V̂ and p̂ into the left hand side of equation (i) IF E e > ² and A e > A mi n , mark element e for refin-
11 ment
Ï nv np I (ii) ELSEIF do not mark element e for refinement.
ν∇φi ∇ φ j Ṽ j + φi ∇ ψ j p̃ j d A = φi ∇V̂ j d s 6. IF number of elements to refine is < m FINISH.
X X
A j =1 j =1 ∂A
7. ELSE Refine elements marked for refinement by plac-
ing a new node at the center of the element.
8. GO TO step 2.
Ï nv np
ν ∇φi ∇φ j Ṽ j + φi ∇ψ j p̃ j d A =
X X
A j =1 j =1
Generate Initial Nodes
I
φi ∇V̂ j d s (13)
∂A

Analogously for equation 12 we can write Mesh Generation


Ï nv
Ṽ j ψ j ∇φi d A = 0 (14) Refine Mesh Solve Stokes Equations
X
A j =1

Using equations 13 and 14 we can formulate a system of


linear equations with dimension 2n v + n p of the form
Elements yes
Ag + f = 0(15) to refine Stop
no
where g = [ũ ṽ p̃]T and T denotes transpose. It is useful to <m
note here that the A i j coefficient of V j is
·Ï Ï ¸
∇φi · ∇φ j d A + ∇ψ j φi d A
A A Figure 1. Mesh refinement algorithm flowchart.
and of p j is
·Ï ¸
φi ∇ψ j d A
A
An algorithm to assemble the stokes equations must take 5. Model Application
into account that φi and ψi need not be defined at the same
nodes. Also note that equation 13 is vector valued. The scalar This section gives a formal statement of the problem in
versions will be presented in Section 5. question, discusses basis functions and quadrature, defines
parameter values, discusses the software used and the pro-
4.3. Adaptive Meshing Algorithm gramming framework.
The required components of an h adaptive mesh refine- 5.1. Formal Problem Statement
ment scheme are an error indicator, an error estimate and a
refinement procedure. Let θn be the error indicator for every The Stokes equations in scalar form are
node n and E e be the a priori error estimate for element e .
In the stokes problem θ n may be horizontal velocity, vertical ∂2 u ∂2 u ∂p
velocity or pressure. We define the relative percent error, E e −ν − ν + =0 (16)
∂x 2 ∂y 2 ∂x
for an element with verticies (i , j , k) as
∂2 v ∂2 v ∂p
−ν −ν + =0 (17)
max θie , θ ej , θke − min θie , θ ej , θke ∂x 2 ∂y 2 ∂y
³ ´ ³ ´

Ee = ∂u ∂v
nel
Xe h + =0 (18)
1
max θin , θ nj , θkn − min θin , θ nj , θkn
³ ´ ³ ´i
nel e ∂x ∂y
n=1
With the associated set of boundary conditions:
where nel e is the number of elements. This relative error es-
timate is is known as a heuristic type error estimte[Bangerth 0 ≤ x ≤ Lx , 0 ≤ y ≤ L y (19)
and Rannacher, 2003]. There exist many other error estimation
methods which will not be discussed in this paper. v(x, 0) = k x (1 − x), u(x, 0) = 0 (20)
4 BRACKEN: ADAPTIVE MESHING AND SPARSE MATRIX STORAGE FOR STOKES FLOW

∂V ¯¯
¯
=0 (21) Quadratic basis functions for a triangle are derived in
∂x ¯(x,L y ) Burkardt [2005b]; here we will state them without proof. For
V(0, y) = 0, V(L x , y) = 0 (22) the three vertex nodes
p(x o , y o ) = 0 (23) g v (x, y) h v (x, y)
φi (x, y) = (28)
where (x o , y o ) is an arbitrary point. Inflow boundary con- g v (x i , y i ) h v (x i , y i )
ditions are a parabolic vertical velocity profile perpindicular
to the boundary. Outflow boundary conditions require that where
flow be perpendicular to the boundary. The left and right
side and obstruction boundary conditions are no slip (zero g v (x, y) = (x − x j )(y k − y j ) − (x k − x j )(y − y j ) (29)
Dirchlet). Pressure is a potential function and thus need only
to be specified at a single point (x o , y o ). and

h v (x, y) = (x − x i j )(y i k − y i j ) − (x i k − x i j )(y − y i j ) (30)


∂u
∂x
= ∂v
∂x
=0
where (x i j , y i j ) is the coordinate associated with the midside
node between nodes i and j .
As given in Burkardt [2005b], the basis functions associ-
ated with the midside nodes are
g m (x, y) h m (x, y)
ψi j (x, y) = (31)
g m (x i j , y i j ) h m (x i j , y i j )
u=v =0
u=v =0

u=v =0

where

g m (x, y) = (x − x k )(y i − y k ) − (x i − x k )(y − y k ) (32)

and

p =0 h m (x, y) = (x − x k )(y j − y k ) − (x j − x k )(y − y k ). (33)

It is interesting to note that

v = k x (1 − x) ψi (x, y) + ψ j (x, y) + ψk (x, y) + ψi j (x, y)


u=0
+ ψ j k (x, y) + ψk j (x, y) = 1 (34)
Figure 2. Problem domain with cylindrical obstruction
which may or may not be present. will hold true for any non-degenerate quadratic element.

The FE formulation written in scalar form for any internal


(x k , y k )
node
nv np
∂φi ∂φ j ∂φi ∂φ j ∂ψ j
Ï ½ ¾
ν + ũ j + φi p̃ j d A = 0 (24)
X X
A j =1 ∂x ∂x ∂y ∂y j =1 ∂x

nv np
∂φi ∂φ j ∂φi ∂φ j ∂ψ j
Ï ½ ¾
ν + ṽ j + φi p̃ j d A = 0 (25)
X X
(x i , y i )
A j =1 ∂x ∂x ∂y ∂y j =1 ∂y
Ï X nv ½ ∂ψ j ∂ψ j
¾
uj +vj φi d A = 0 (26)
A j =1 ∂x ∂y (x j , y j )

Figure 3. Archetypal linear pressure element.


5.2. Basis Functions
In this section we use the terms interpolating function and
basis function interchangeably. We saw in section 4.2 that
we need two basis functions, ψi and φi , one for the momen-
tum equation and one for the continuity equation. For this (x k , y k )
problem we will use Taylor-hood elements Burkardt [2005b].
These elements use linear basis functions for pressure and
quadratic basis functions for a single element. Figure 3 (x i k , y i k )
shows an archetypal linear pressure element with nodes de-
fined at the vertices. Figure 4 shows an archetypal quadratic (x i j , y i j )
velocity element with nodes defined at the vertices as well as
at the midside of the vertices. (x i , y i )
The linear basis functions for pressure as given in Lapidus
and Pinder [1982] is (x j k , y j k )
(x j , y j )
(x − x j )(y k − y j ) − (x k − x j )(y − y j )
ψi (x, y) = (27)
(x i − x j )(y k − y j ) − (x k − x j )(y i − y j ) Figure 4. Archetypal quadratic velocity element.
BRACKEN: ADAPTIVE MESHING AND SPARSE MATRIX STORAGE FOR STOKES FLOW 5

5.3. Quadriture Over a General Triangle routines were used for this problem [Burkardt, 2007]. Specif-
ically the subroutines for evaluating the basis functions and
The reference triangle Tr has vertices (0,0), (0,1) and (1,0) assembling the coefficient matrix.
in dimensionless coordinates (ξ, η). Gaussian quadrature for The initial node generation program is called regmeshgen,
the reference triangle is the main simulation program is called stokes_sim the er-
ror analysis program is called adaptive and the mesh refin-
n
ing program is called nodegen. A flowchart of the software
Z
f (ξ, η) d ξd η = w p f (ξp , η p ). (35)
X
Tr p=1
framework is shown in figure 5.

The values of w p , ξp and η p are tabulated in Lapidus and Pin-


der [1982].
Since our basis functions (and subsequent integrals) are nodegen
defined in global coordinates, we need a way to map quadra-
ture points and weights in the reference triangle to points in
the actual triangle T . The mapping is developed in Burkardt newmeshgen triangle
[2005b]. To map any point (ξp , η p ) to a point (x p , y p ) in the
triangle T we use

xp xi x j − xi xk − xi ξp adaptive stokes_sim
· ¸ · ¸ · ¸· ¸
= + (36)
yp yi y j − yi yk − yi ηp
Figure 5. Software framework controlled by BASH shell
We can write our quadrature rule as script.
Z n
f (x, y) d xd y = A T w p f (x p , y p ). (37)
X
T p=1
5.5. Parameters
Where A T is the area of the triangle which is the artifact of All of the parameters presented here have been previously
a constant Jacobian for our linear mapping. The area of the defined. The prameter values are given in Table 1. In addi-
triangle is given by tion to the parameters in table 1 the are the parameters as-
sociated with the cylindrical obstructions, namely the radii,
1 xi y i vertices and the number of nodes used to define the obstruc-
 

AT = 1 x j y j 
 (38) tion.
1 xk y k

Table 1. Parameter Values


5.4. Software Parameter Value Units
The software library SLAP (Sparse Linear Algebra Pack- ν 1 L 2 T −1
age) [Seager, 1988] is used to solve the linear system of equa- Lx 1 L
tions. SLAP is a set of matrix algebra routines, written in Ly 2 L
Fortran 77 for large sparse linear systems and is available k 1 (T L)−1
for free at netlib.org. Specifically the routine DGMRES is ² 15% –
used where the coefficient matrix is stored in the SLAP triad A mi n 0.003 L2
format. The triad format identical to the coordinate format m 2 –
described in section 3.3. DGMRES solves the linear system
Ax = b using the generalized minimum residual method [Sea-
ger, 1988].
LAPACK is an industry standard library of dense and
banded solvers for systems of linear equations [Anderson 6. Model Results
et al., 1999]. LAPACK has been optimized for many com- 6.1. Simulation Results
puter systems and is based on the BLAS (Basic linear alge-
bra subroutines) library. Here we use the version of LAPACK Simulations were carried out with the previously given set
optimized by Apple computers as part of the Accelerate of parameters. The Reynolds number is Re = 1/6. Figure 6
framework Apple [2006]. This framework uses parallel pro- shows the computed velocity fields for 1, 5 and 13 obstruc-
tions. Figure 7 shows velocity magnitude contours. Figure 12
cessing for maximizing computational resources. The spe-
shows pressure contours. The pressure solution with no ob-
cific routine used is the DGETRS which uses LU decomposi-
structions is included as verification that the model is work-
tion to factor the coefficient matrix. ing; with no obstructions the flow is purely vertical and the
Triangle is freely available software for creating 2D pressure is approximately constant.
quality constrained meshes. By quality we mean that the With one obstruction, flow moves around the cylinder and
mesh generator will add vertices to the mesh where ap- a stagnation point occurs at the front of the cylinder. The sin-
propriate to ensure that a minimum angle requirement is gle cylinder caused a pressure drop of ∼ 25 pressure units
met [Shewchuk, 1996]. Triangle creates a conforming con- from the inlet to the outlet. Pressure contours show the fa-
strained triangulation. Each triangle may not necessarily miliar and expected pattern [White, 2006]. Velocity increases
be Delaunay but that inconsequential a finite element mesh. as the fluid moves around the cylinder.
The software is written in C and therefore difficult to inter- With five obstructions, flow moves around the cylinders
face directly with Fortran. This issue is circumvented by and a stagnation point occurs at the front of the middle cylin-
writing the program framework as a bash shell script which der. The single cylinder caused a pressure drop of ∼ 90 pres-
deals in I/O files. sure units from the inlet to the outlet. More of the flow moves
John Burkhardt created a Navier-Stokes simulation model around center cylinder causing increased velocity in that re-
called free_fem_navier_stokes from which some sub- gion.
6 BRACKEN: ADAPTIVE MESHING AND SPARSE MATRIX STORAGE FOR STOKES FLOW

0.2 0.4 0.6 0.8 0.2 0.4 0.6 0.8


0.1 0.2 0.3 0.4 0.5

2 2 2

1.8 1.8 1.8

1.6 1.6 1.6

1.4 1.4 1.4

1.2 1.2 1.2

1 1 1

0.8 0.8 0.8

0.6 0.6 0.6

0.4 0.4 0.4

0.2 0.2 0.2

0 0 0
0 0.5 1 0 0.5 1 0 0.5 1
(a) 1 obstruction (b) 5 obstructions (c) 13 obstructions

Figure 6. Velocity magnitude contours, Re = 1/6

0 0.2 0.4 0 0.2 0.4 0.6 0.8 0 0.5 1

0 0 0

0.2 0.2 0.2

0.4 0.4 0.4

0.6 0.6 0.6

0.8 0.8 0.8

1 1 1

1.2 1.2 1.2

1.4 1.4 1.4

1.6 1.6 1.6

1.8 1.8 1.8

2 2 2
0 0.5 1 0 0.5 1 0 0.5 1

(d) 1 obstruction (e) 5 obstructions (f) 13 obstructions

Figure 7. Velocity magnitude contours, Re = 1/6

An array of 13 cylinders caused the largest pressure drop


of all (∼ 250 pressure units). The flow is highly restricted
causing the velocity to increase in between the cylinders. The
velocity increase here is also the greatest because the flow is
restricted to the smallest area. The highest velocities occurs
in between the cylinders in the middle row.
BRACKEN: ADAPTIVE MESHING AND SPARSE MATRIX STORAGE FOR STOKES FLOW 7

50
● ●

Horizontal velocity Horizontal velocity
50
● Vertical velocity Vertical velocity
Average Percent Realative Elemental Error

Average Percent Realative Elemental Error


Pressure Pressure

45
45

40
40

● ●


35

35



30

30

● ●
● ●

25




25

● ●
20


● ● ●

20
1 2 3 4 5 6 7 1 2 3 4 5

Mesh Refinement Step Mesh Refinement Step

Figure 8. Average relative element error as a function of Figure 10. Average relative element error as a function of
refinement step for 1 obstructions. refinement step for 13 obstructions.


The plots of relative error (Figure 8,9 and 10) show that the
average element was area limited ( A < A mi n ) and not limited
50

Horizontal velocity
Vertical velocity by the choice of ². The imposition of a minimum area turned
Average Percent Realative Elemental Error

Pressure out to be crucial because in many elements the program ran


45

out of precision before the acceptable error was achieved.


● For the arrangement of 5 cylinders using vertical velocity
as the indicator generated the mesh containing the most ele-
40

ments but also the mesh with the lowest relative error (Figure
● 9). Once again using θ = u took the fewest refinement steps.
● The generated meshes follow similar trends as with a single
35

● cylinder with the pressure indicator producing the most local


● refinement. Fewer refinement steps were taken here because

30





25


2500

● !
!!
!!!!!
!!
!!
!!!!
!!
!!
!!!
!!!
!!!!
!!
!!!
!!!!
!!
!!
!!
!
!!
!
!!
!
!!
!
!!
!!!!
!

!
!
!

!
! !
!

!
!
!
!
!
!

!
!
!
! !
!
!! !
!
!
!

!
!
!
!
!
!
!
!!
! !! ! !!
!
!
!!
!
!
!
!
! !!
!

!
!

!
!!
!!
!! !! ! !! !
!
!
!!
!!
!
!
!
!
!!
!

!
!
!

!
!
!
!!

!
!
!
!!
!
!!!
!!
!

!
!

!
!!
!! !
!!
!
!
!
!! !!
!
!
!
! !

!
!
!
!
!

!
!
!

!!!

!
!
!
!
!

!
!
!

!!
!
!
!

!
!
!
!
!!
!
!

!
!
!!!!
!
!! !
!!
!
!
!
!
!
!
!
!
!
!
! !
!

!
!
!
!
!

!
!
!

! !!! !
! !
!
!
!!
!!!!
!!!
!!
!
! !!

!!
!!
!
!!
!
!!
!
!
!!
!
!
!
!
!

!!
!
!!
! !! ! !!
!
!!
!
!! !
!
!
!
!!!
! !
!!
!
!
!
!!
!
!!
! !!
!
!!! !
! !
!!
!
!!
!!
!
!!
!
!!!
!
!!
!! !! !
!!
! !
! !
!
!
!
!
!!
!
!
!!
!
!!
!
!! !!!!!!
!!!
!!
!!!
!
!! !!
!!!
!!
!!!!
!!
!
! !
!!
!
!!!
!!! !!
!
!!
!!!!! ! !!
!
!!!!
!
!!!
!
! !
!
!
!!
!
! !!
! !
!
!
!
!
!!
!!! !! !
!!
! !
! !!
!!
!!
!
!!
!!!! !
!!!
!!! !!!
!
!!
!! !
!
! !
!!
!!
!!
!!
!
!
!! !!
!
!
!!
! !!
!!
!!! !
!! !
!!
!
!! !!
!
!
!
!
!! !
!
!
!
!
!
!!!
! !
!!
!
!!
! !! !
!
!!
!!
!
!!
!!
!
!!
! !
!
!!
!! !!
!
!!
!!
!
!!!!! !!
!!
!
!
!!
!
!
!
!!
!!
!
! !!!
!!
!!
!! !
!!
!!
!!
!! ! ! !!
!
!!
! !
! !!! !
!
!!!
!!
!!
!
!!!
! !!
!
!
!
!
!!
! !
!!
!!
!!! !
!!
!
!!
!!
!!
!!! ! !!
!!
!
!
!
!!
!
!!!
!
! !
!
! ! !
!
!!
!
!! !
!!!
!
! !!!!!
!
!!
!!
!
!
!
!
!!
!
!!
! !!! !
! !
!
!
!
!! !
!! ! !
!!
!!!
!
!! !! !!!!
!!
!
!!
!!
!
! !
!!
!
!
!! !
!! !
! !!
!!!
!
!!
!
!!!
! !!
!!
!!
!
!!
!!
!!! !
!!
!
!!
!
!! !! !! !
!
!
!!
!
!
!
!
!!
!!
!!!
!!
!!!
!
!! !
!!
!
!! !!
!
!!!
! ! !
!
!!!! !
!!!
!!! !
!! !
!!
!
!
!!
!!
!
!!
!
!!
!
!
! !! !
! ! !
!
!
!
!
!!
!!
!! ! !
!!!
! !
!
!!
!
!!
!!
!
!!!!
!!
!
!! !
! ! !!!
!!
!!
!!!
!
!!
!
!!!
!! !!!
!!!! !
!!
!!! !
!!
!
!!
!
!! !!!
!!
! !!! !
!!
!!
!!
!!
!
!
!
!!
! !
!
! !
!
!! !
! !
!
!! !!
!
!!
!!! !!!!
!
!!
!
!
!!
!!
!!
!
!
!!
!
!
!!
!!
!
!!
! !
!
!!!
! !!
!!
! !
!
! !!
!!
!! ! !
!!!
!! !!!!! !
! !!
!
!!
!
!! !
!!!
!!!
!
!!
!
!! !
!
!!
! ! ! !
!!!
!!! !!
!!
!! ! !
!
!
!!
!
!
!
!
!!
!
!!
!
!!
!!
!
!!!
!
! !!
!
! !
!!!
! !
!!
!!
! ! !!
!!
!!
!
!!
!!! ! !
!!
!
!!
! !
!!
!
!
!
!
!!
!
!
!!!
!!!!
!!
!!!
! !
!!
!! ! ! ! !
!
!!
! !
!!!
!!
!!! !
!
!!! !! !
!
!
!!
!
!
!
!
!!
!
!!
!
! !!
!
!
!!
! !
!!
! ! !
!
! !!
!!
!
!
!!
!
!! !!
!!
!
! !
!
!
!
!!
!
!
!!
!
!!! !
!
! !!!
!!!
! !
!!
!
!! !
!
!! !!!

1 2 3 4 5
!!
!
!! !!!
!!
!!
! !!
!
!!
!
!
!
!!
!
!
!!
!! !!!
!
!! !
!
!
!!
!!! !
!!!
!!
!
! !!!!
!
!
!!
!
!!!
!
!!
!
!
!!
!!! !
!! ! !
!
!!
!
!!
! ! !!
!
!!
!
! !! !
!!
!
!!!
!!! !!!!
!!
!
!! !
!
!!!!
! !!!
!!
!
!!
!
!
!
!!
!
!
!!
!
!
!!
!
!
! !
!!
!
!!
! !! !
!
!! !!
!
!!
!!
! ! !!
!!
!
!! !
!!!
!! !
!
!!
!
!
!!
! !
!! !!
!! !!!
!
! !
!!! !! !
!!! !
! !
!!
!
!
!
!!! !!
!
!! ! !!
!!!
!!
!
!!
!
!
!! ! !!!
!
! !!!
!! !
! ! !! !
! !
! !
!! !
!!
!!
! !
! !! !!!
!
!! !
! ! !! !
! ! ! ! ! !! !!
! !! !
!!
! ! ! !!! !!
!!
!!
!!
!
!!!! ! !
!
!
! ! ! !! ! ! ! !!! !!
! ! ! !!
!! !! !!!!
!!
!! !
! !!! !!
!
!!
!
!! !
! !! !!!
!
!!!
!!
!
!!!
!!! !
!!
!! !
!!!
!
!!!
!
!!
!
! !
!! !
!! !!! !!
!!
!!
!
!!
! !!
! !!!! !
!! !
!
! !
!
! ! !
! ! ! ! ! !! !
!
!!
!!
!
!!
!
!!
!! !!!
!!
!
!!!
!
!
!! !!
!
!!
!
!!!
! !! !!
!!!
!
!!
!
!!!
!
!! !
!!
!
!
!!!
!!
!
!! !!!
!!
!! !
! !! !
! !!! ! !!
! !
! !! !
! !
!!
!! ! ! ! !!
!
!!
!
!!
!!
!
! !!!!!!
!!!
!!
!!
!!
!
!!
!
!!! !!!!! !
!
!!! !!
!! !
!!!
!
!! ! ! !!!
!! ! !!!
!!
! !
! !
! !
! !!!!
!!!!!
!
!
!!
!!!
!
!!
!!! ! !
!!
!!!!
!!!
!!
!
!!
!
!! ! !!
!!
! !! !!! !
!
!
!!!
!!
!
!
!!
!!
!
!
!!
!
!
!
!!!!
!!
!!! !
! ! !
!
!!
! !!
!!
! ! !! !
! ! !! !
!! ! ! !!
!!
!
!!
! ! !! !
!
!
!!
!!
!
! ! !
!!
!
!!
! !!! !
!!!
!
!
! !
! ! !!
!!!
!
!
!!
!!!
!!
! !!!
!
!!!!
!
!!!
!!!!
!!
!
!
!!
! !!
!!!! !!!
! !! !! !! ! !! ! !! !! !!!!
!!
!
!!
!! !!!!! !! ! !!!
!!!!
!
!!
!!!!
!
!
!!!
!!
!
!
!!
!
!!
!
!
!
!!
!
!!
!! !
!!
!
! !
!!!
!!
!!!! ! ! !
! !
!! !!!!
!! !! !!!!!
!
!! ! ! !
! !
!
!!
!! !!
!
!
!
!
!!
!
!
!!
!
!!
!
!!
!
!
!!
!
!!!
!!
!
!!!
!! !
!!
!! !
!
!!
!
!
! !!!!
!! !!!
!
!
! !
! ! ! !
!!! ! ! !! !
! ! !
!
!
!!
!!
!
!! ! !! !
!! ! !
!
!!
!
!!
!
!!
!! !!!!
! !
! !!
! !!
!
!
!! !
! !!! !! !!!! !
!
!!
!
!!!!
! !! ! !! !
!
!!
! ! !
!!!!
!!! !
!!!!!!
! !!
!
!!
!!!
!
!
!!
!!
!!
!!
!
!!!
!
! !!! !
! !!
!!
!
! ! !!
!!
!
!!
!
!!
!
!!
!
!
!!
!!!! !
!!!
!! !!!
!!! !
!!
!!
!!
!!
!!
!!!
!!
!! !!
!!
!
!!
!
!! ! !
!!
!
!
!! !
! !
! !!! ! ! ! !! !! ! !
!
!!
!! ! !!
!! !
!!
!
! ! ! ! ! !
! !!
! !
! !! !! !!
!
!!
!
!
!
!! !
!!
!
! !!!!!
!
!
!! !!! !!
!
! !
! !
!!
!
! !
!!!!
! ! !
!!
!!
!
! ! !
!
! !
!!
! !! ! !
!!!
! !!
!! ! !!
! ! ! ! ! ! !
! ! !!!! !
!
!
! !!
!
! !!! ! ! !
!!!!
!
!
!!! !
!! ! ! !!
!
!!
!
!
!
!!
!!
!
!
!! !
!
!!!
!!
!
!!
!
!!
!
!! ! ! !
!
!!
!!
!
!! ! !
!
!!
!
! !!!!!
!! ! !
!
!
!
! !
! ! !
! !
! !! !
!! !
! ! ! !
! !!!
!!!!
!!
!! !
!!
! !!
!! !!!!!!
!
!
!!
! !!
!
!! !
!
!!
!
!
!!!! !
!!
!
!!!
!
!
!!
!!
!!
! !
!!! !!
!!
!
! ! !
!
!
! ! ! ! !!! !!
! !! !! !!
!!!
!
!!
!
!!!
!!
!
!!! !
!
!!
!
!!
!!
!
!
!!
!
! !
!! !! !!
!!
!
! !
! !
!
! !
!
!! ! !! !! !
! ! ! ! !!!!
!
!!
!!
!!
!
!! ! !
!
! ! !
!! ! !
!
!!!
!!
!!!!
! ! !!!
!!! ! !!
!!!
!
!
!! ! !
!
!!
!!!!!
!
! !! !! ! !! ! ! !
!!
! !!
!
!!
!
!!
!!
! !!
!! !! ! !! !
!
! !! !!
!! !
!!!!
!
! !
! ! !!!
!!! ! !!! !
!!!!!!
!
!
!! ! !!
!
!
!!
!
! !! !!
!!!!!
!!!
!!
!
!!!
! !! !
!! ! !
!! ! !!
!
!!
!
!
!!
!
!!
!!
!
!
!!
!
!
!!!
!
!!
!!!!
!! !!!! !!! ! !! !
!! ! !!
!
! ! ! !
!!
!!!
!
!
!!
! ! !
! !
!!! !!!
!
!
!!!
!
! !
!
!! !!
!
!!
!!
!!
!!
!!
!! ! !
!
!!
! !
! !!
!!!
!
!!
!!!!! !
!
!
!!!
!
!!!
!!!
!
! ! !
!
!!! ! !! ! !
! !! ! ! ! ! ! ! !! ! !! !! !! !
!
!!
!!
!
!
!!!
!
!
!! !
!!!
!!
! !
! ! !! ! ! ! ! !! !! !! !!
!! !! !
!! !!
!! !!
!! !
!!!!!!!
! ! !
! !
! !
!!!
!!
!
!
!!
!
!!!
!
! !! !
!
!
!!
!
! !!
!!
!! !!! ! !
! ! ! !
!
! !
!
!!
!!
!
!!
!
!!
!!
!!!
! ! !!!
!!!! !! ! !
! !!! ! !!
!!
! !
! !!
!!!
!
!
!!
!!
!!!
2000

!
!!
! ! ! ! !! !! !!
!! !
! ! ! !!!!!
!
!!
!! !
!
!!
!
!!
!!
! !
!
!! !
! !! !! !
!
!!! !
! !! !! !
! !
! !!!!
!!
!
! ! !
!!
!
!!!!
!!
!
! !
!!
!!!!
!
!
!! !!!
!
!!
!
!!
!
!!
!
!!
!
!!
! !!
!! !! !! ! ! !!!
!!
! ! !! !!! ! ! !
!! ! !!
!!!
!!!!! !! ! !! ! !
! !!!! ! !
!!
!! ! !!
!! ! ! !
!!
!
!
!!! !!!
!!!
!!!
!
!
!!
!!!!! ! !!
!! !
!
! !
!!!
!
!!
!
!
! ! !!!
!!
!
!
!!
!!
!!!
!! !
!!!
!!!
!! !
!! !
! !
! ! !
!
!!
!!
!
!! ! !
!!
!
!!
!!! !
!! !! !!
!! ! !
!
! !
!!!
!! !
! !!!
! !!
!!
!!!!
!!!
! ! ! !! ! !! !
! !
!! !!!! !
! !
!!
!!!
!
!
!!!!
!
!!
!
!!
!
!!
! !!!!
! !! ! ! !
!!
!
! !!! ! !!
!! ! !
!!!!
!
!!!
!
!!
!! !!
!
!!
!!
!!
!!
!! !
!!! ! !! !
!!!!!
! !!
!!
!! !! ! !! !!! ! ! !
!
!!
!!
!
! ! !
!
!!
!!
!
!! !
!!
!! !!!!
!!
! !!!
!!
!
!
!
!
! !! !!!!
! !!! !
! !
!!!!
!
!!! ! ! !
! !!
!! !!
!
!!
!!!!!
!
!
!!
!! !!
!! ! !!!
!!
!!! ! !
!
!!
!
!
!!
!
!!!!
!
!! !! ! !
!
!!
!
!!
!
!
!!
! ! !
!
!!
!!!!!! !
! ! ! ! ! !
!!! ! !!!! ! ! ! !
!
! !
!
!!
!!!! !
!!!
!!!
!!
!!
!
!
!!
!!
!!
!
!!
!
!
!!
!!
!
!!!!
!!
!!
!
!!
!
!!!
!!
!!
!
! !
!
!
!!!!
!
!!!!!! !
!!!
!
!
!!
!
!!
!
!! !!!
! !
!
!!! !! !
!! !
!
!!! !!! !!
! !
!! !!!
!
!!
!
!
!! !!
! !
!!
! !
!!
!! !
!
!
!!
! ! ! ! !!!!
!
!!
!!
!
!!
!! !
!
!!
!
!!
! !!! !
!
! !
! ! !!
!!
!!
!!
!!!
!!!!!!!!!
!! !
!!!
!
!!!
!
!
!!
! ! !!! !! ! !
!
! !
!!
!
!
!!
!!!!
!!
!
!
!
!! ! !
!
!!
!! ! ! !
! ! ! ! ! !! ! ! !!!! !! ! ! !
!!
!
!!
!
! !
!
!!
!
!!
!!
!
!! !!
!
! ! !!!!!
!! !
!! !! !!
!
!!
! ! !
!! ! !!
! !
! ! !
!!
!! !!
!!!!
!
!
!
! !!
!
! ! !
!! !
!! !!! !!
! !!
!
!!
!
!!
! !!
!!
!!
!! !!
!! ! ! ! !! !
!!
!
!
! ! !! !
! !!! !! ! !
!!!!
!
!!!!
!!!
!!
!
!! ! !!!
!! ! ! !!
!!
! ! !
!!!! !
! !! !
! !
! ! ! ! !
!!! !!! !! !
!
!!
!
! ! !
!
!! !
!! !!
!!! !!
!
! ! !!
!
!!
!!
!
!!!! !! !!!!
!
!
!!
! !!
!!
! !!
!
!!!
!!
!
!
!
!!
!
!
!!!
!
!!! ! ! !
! !
!
!
!!
! ! ! ! ! ! !! !! ! !! ! ! !!
!!!
!
!! !!
!!
!!
!!
!
!
! !
!!
!! !! !
! ! !!
!
!!
! ! !!
!
!! ! !!!!
!! !
!
!
! ! ! ! !
! ! ! !!!! ! !
!!!!! !!
!
!!
!
!!
!
!!!
!!
! ! !!
!
!
!!
!
!
!!
!
!!
!!
!
!!
!
!!! !
!!
!
! !!
!!! !
!!!
!! ! !! !
! !! ! !
! !! !
! !! !
!!
!
!
!!!
!! !
!
! !
!
!!
! ! !
! ! !
!!!
!
!
!!
!
!!!
!!
! ! ! !
!
!!
!!
!!!!!!
!!!
! !
! ! !
! !
! !!
!!!!
!
! !! !
!!!!! ! !! !! ! !
!!!
!!
!
! !!
!
!!
!
!
! !!! ! ! ! !!
!
!!!
!
!
!!!
!!
!!
!
! !
!
!!
!
!!!
!!
!
!!
! !!
! ! !
!
!
! !!
!! !!!!!!
!
!! !! ! !
!!!!
! !!
!!
!
!!
! !
!! !
!
!! !
! ! !!
!!!
!
!!
!
! ! !
!!
!
!! !
!
!!!
!
!!
!!!
! !
!
! !
! !! !
! !
!!! !
! !!
!! ! !
! ! !
! !
! !
!
!!
!! !
!
!!
!!
!
!!
!

Mesh Refinement Step


!
!!! ! !!! !
!
!!
!!!!!!! !
! ! !
!!!
!
!! ! !! !
! !
!
!!
! !! ! !
! !!!!
!!
! !! !
! !!!
!!!!
!! !
! ! ! !! !!
!! !
! !
!!
!
!!!
!!! !
!
!!!
!!!
!!!!
!! !
!! !
!
!!!!!
!
!!!!!
!
!!
!
!!
!!
!!
! ! !!
!!
!
!!
!!
!!!
!
!!!
! !
! !! !! !! ! !
! !!
!
!!
! !
!!
!
!!
!!
!! ! ! ! !!! !
!!
!!
!
!!!
!
!!!!
!!
!
!!!!
! ! ! !
!!
!! !!
! ! !
! ! !
!!! ! !! !
!
! !
!!
!
!
!
!! !
!
!!
!
!!
!
!!
!! !
!! ! !
! !
!!!! ! ! !
! ! ! !
! !
!!! !
! ! !
! !
! !
!
!!
!! ! !
!!
! !
!!
! !
! ! ! !!
!! ! !
!! !
! !
! !
! !! ! !
! !
!
!
!
!!
!
!!!
!
!
! !
!!
!
!!
!
!!
!
!
! !
!!!
!! !
!
!
! !!
!
!!
!
!!!
!
!
!
!! !
!
! !
! !!
! !!
!
!!
! ! !!! !
!!! ! !
!!
!
!!!
!!
!
!!
!
!!
!
!!
!
!!
!
!!! !!!
! !
! !
! !
! !!
!!!
! !
! !!
! !
!
!!
!
!
!!
!
!!
!
!!
!
!
!!
!! !!
!! ! !!!
!! !
!!!! ! !
!! !
!! !! !
!
!!
!!! !! !!
!! !
!!
!
!!
! ! !!!
!! !
!!
!
! !
! !! !!!
! !!
!!
! !
! ! ! !!! !
! ! !!
! !
! !! !
!
!!!
!
!
!!
! !! !!
!!!
!! !
! !!!
!!!!
!
!!
!!!!
!
!!
!
!!
!! ! ! !
!
! !! ! !
!
!
!!
! !
! !!! !! !!!
!!!
!
!!!! !
! !!!
! !
!! !
!!
!
!! !
! ! ! ! !! !!
!
!!!!!
!! !! !
!!!!
!
!
!!
!!
!
!
!!!!
!!!!
!
!!
!! !
!!
!
!! !
!!
!!
!
!! !!!!!
!!!!!!
!
!
!!
!!
! ! !
!
! !
! !
!! ! !
! ! !
!! !
!!!
!!!!! !
!
!!
!!
!!
!!!
!!!!! !!
!!!
!
!!!! !
!
!
! !
!!!
!!! ! !!!
!
! !
! !!
! !!
!
!!!
!
!!
! !
!!
!!!
!
!!
!! !
!
!!
!! !! !! !!!! !!
!
!
!!!!
!!!
!
!!!
!
!!
!!!!
!!
! !
!!
!
! !
!
! ! ! ! ! !
!
!!
!!!!
!!!
!!
!!! !
!
!!
!
!
!!!! ! ! !
! !
! ! ! ! ! !
!! ! !!! !
! ! ! !!! ! !!!! !!! !!!
!!
!
!
!!!
!!
!
!!! !
!
!!
! !!!
!!!!
!
!
!!
!
!!
!! !!
!
!!
!!
!! !
!
!
!!! !
!
!
!
!! !! !!
! !
!
! !!!!!! !!
!!!
!
!
!!
!
!! ! !!
!!
!!
!!
!
!!!
!!
!
!!!
!!!
!!!!!
! !!!!!
!
!!
!
! !
!
!
! !
!!
!!
!!
!
!!
!
!
!!
!!
!!! !
! !
!! !
!! !
! !! !! !
!!
!
!!!
!
!!
!
!!
!
!!
!
!
!!!
! !! !
!!
!!!
!!!
!!
!!
!
!!
!
!!
!
! !
!
!!! !! !
!! ! !
!
!
! ! !
!!! !
!
!!!
! !
! !!
!
!! !
!!!
!
!!! !
!
!!
!!!!!!
! !! !
! !!
!! !
!!!
! !! !! ! !!
!! !! !!! ! !
!!
!
!!
!!
!!! ! ! !!
!!
!!
!!
!!
!
! ! !
! !
!!
! ! !! !
!!
! !
!
!
!
!!
!!
!
!!!!
!!!
!
!
!!
!!!
!!
!!
!!!
!! !!
!
!!
!!
!!!!!
! !!
!
! !
!!
! !!
!
! ! !
! !
!
! ! ! !!
! !! ! ! !
!
! !
!!! !! !
! !!!
!!
! !
! !! !! ! ! !
!! !! !
!!!
!
!
!!
!!!
!
!! !
!
!!
!! ! ! !
!!
!
!!
!
! !!!!
!
!
!!
!
! ! !!
!
! !!
!!! !
! !
!! !
!
!
!!!! ! ! !
! ! !!
! !!!! ! !!!
! !!
!! ! ! ! !!
! !
!!!
!
! !!
!!! !
!!! !!!
! ! !
!!
!
!!
!
! ! !
!
!
!!
!
!!
!
!!!
!!
!
!!
!!
!
!! !! ! !
!
!
!!! !!
! !
! ! ! !
! !! !
!
!!
!
! ! !!!!!
!!
! !
!!
!! ! ! !
!! ! !! !
!! !
!!
!
!
!
!!
!
!
!!
! !!
!!
!
!!! !!! ! ! !!!
!!!
!!!
!
!!
! ! ! !
!! !
! !! ! !
!!! !! ! !!
!!
!
!! ! ! !
!!
! ! ! !!
!!
!!
!!! !
! !! !! !
!!
! !
!!
!! !
! !!! !
! !
!!
! !!
! ! !!
!! !
!!
!! !!
!!! ! !!
!! ! !!
!!
!
!!
!!
!
!!!
!
!!
!!!!
!
!! !! !! !!
!!
! ! !!
! ! !
!!! !
!
! ! !!
! !
!!
!!!
!
!!
!
!
!!
!!!
!!!
!!
!
!!
!! !
!!
!
!!
!!
! ! !!
!
!!!!
!!
!!! !
!!!!
!!
!
! ! !! ! !
! !! ! !
!!!!!! !! !
!!
!
!
!
!!!
!!!
!! !!!
!!
!
!
!!
!!
! !
!! !
!!!
!
! !
!!
!!
!!
! ! !!
!
!
!
!!
!
!
!!
!
!
!!
!
!
!!!
!!!
!!!
!
!
!!
!!
!
!!
! ! ! ! !
! ! !! !
! ! ! !
! !
!
!
!!
!
!!!!
!!!
!
!
!!!
!!!
!
!! ! ! !! !! ! !
!
! !!!! ! !
! ! !
! ! !
! ! !
! ! !!! ! ! !!
!
!! !! ! !!
! !!!!!!!!! !
! !! ! ! !!!
!!!
! !
! !! ! ! ! !!
!
!!
!!!
!
! ! !
! !
!!
!!!
!!
!
!!
!! !
! !! !! !
!
!
!!! !!!! ! !!! ! !! !!
!!
!!
!!
!
! ! !!
!!
!
!!
!
!!! ! !
!
! !!
!
!!!!
!!
! !
!!
!
!
!!
!
!! !
!!
!
!!
!
!!!
!!
!
!!
!
!
!!
!! ! ! ! !
!! ! !
!!
!
! ! !
!
! ! ! ! !!
! ! !!
! !! !
!
!!! !
!!!!! !! !! ! ! ! ! !!
!!
!
!
!!
!! !!
!!
!!
!!
!!
! ! !!!
!
!
!!
!!
!
!
!!!! !!!
!
!!
!
! ! !! ! ! !
!!!
!
!
!!
!!
!
!
!!! !
! !! ! !
! ! ! !! !!
!!!
!!!
!
!!!
! ! !
!
!
! !
! !!
!! ! !
!
!
!!
!
! !!
!!
!!
!
!! !!
! !
!! !
!
! !! !
!
!!!
!!
!
!
!!!
!
!
!! !
!!
!!
!
!
!
!!! !
! ! !! ! !! ! !!
!! !
!
!
!
!!!!
!
!!
! !
!!
! !
!!
!
!! !
!!
! !
!! !
!
!!
!
!!
!
! !! !
! !
! ! ! !! !!! !
! !
! !
!!
!
!
!!!
!
!!
!
!!
!
! !
!!
!!!
!!!
! !!
! ! !
! ! !! !! !
!!! !
!
! !
!! ! ! !! !! !
!
!
!
!!
!! !
!!!!
!!!
!
!
!!
!!
!
!!
! !! !!
!!
!!
!!
!!
!! ! !
!!
!! ! !
!
!
! !!
! !! !!
!
!!
! !
!! !
! ! !! !! !!!
!
!! !
!!
!! !!
!
!!
!!
!
!! !
!! !!
!!!
!!
!! !
!!!
!!
!
!!
!
!!
!
!!
!
!
!! ! !
!
!! !!
!! !
!
!! !! !! ! ! !!!!!
!!
!!!
!
!!
!!
!
!!
!
!!
!
!!!
!!
!
! !
!! !
! !
!
!
! !
!
!! !!
!! !
!! ! !!! ! !! !!!! !! !
!
!!
!
! ! !
!
!!! !
!!!!
!
!
!!
!
!! !
!!
!
!!
!!!
!
!!
!
!!
!!
!! !
!
!!
! !
!
!! ! !
! ! !! !
! ! ! !
!
!! !! !!!! ! ! !
! !
! !! ! !! !
!
!
!!
!
!
!!!
!!
!!!
!
!!
!! !
! ! !! !
!
!!
!
!! !! ! !
!
!!
!!
!
!!! !
!! !
!!
!
!!
!
!
! !
!
!
! !
!
!
!! ! ! ! !! ! !!!!! !
! !
!!!!! !
!
! !
! !
!!
!
!! !
! !!!
!
!
!!
!!
! ! !
!!!
!
!
!!! !
! ! !!
!!
!!
!!
!!
!! !!
!
!
!! !
!
!
! ! !!!
!
! !!!! ! !! ! ! ! !! !!
!!
!! !
!!!!
!
!! !! !
!!!
!
!
!!
!!!
!
!
!!
!
!! ! !!!!! !
! !! !
!! ! !
!
!!
!!
!
!! !
!
!
!!
!
!!
!
!
!! !
! !
!!!!!
!!! !!!
!! !
!!!! !
!!! !! !
! !
!!
!
!!
!!
!
!
!!!
!
!!
!
!!
!!
!
!! !
! !
!!
!
!!
!!
!!
!!
!
!!
!!
!
!! ! ! ! !!!
!
! !
! !
! !
! !
! !!
!! !
!!
!! !
!
! !! !!
!!!
!
!
!!
!!!!!
!!
!
!
!
!! ! !
!
!!
!
!
!!
!!
! ! !! ! !!
!
!! !!
!
!!
!
!
!
!
!!
!!! !! !
!!
!
!
!!
!
!
! !!
!
!
!
!!
!
!
!!!
!
! !!! !
!
! !!
! !
!!! !!
!!!!
! !
!!!
! !! !
! !
!!
!!
!
!!!
!
!!
!
!!
!
!! !! !
! !
! !
!!!
!
! !
! !
!!
! ! !!
!
!
!! !!
!
! !
!
!
!!!
!
!
!!
!
!
!!
!
!!
!
!!
!!
!
!
!!! !
! !
!
!!!
!!
!
!
!!
!!!! !
!
!!
!
!
!
!! !!
!! ! ! ! ! !!!! ! !
! ! ! !!
!! ! !! ! ! ! ! !
! ! !!!
!!! ! !
! !! !!
!!
!!!!
!
!!
!!!
!!
!!!!! !
!! !!!!!
!
!
!!
!
!!
!
!
!!
!!!
!!
!!
!!
!!
!
!! ! !!! !!
!
!
!
!!
! !! !
!
!
! ! !
!
! !!
! !
!!
!!
!
! ! !
!! !!
! !
!!!
!
!
!
!!
!!!
!
!
!!
!
!!
!!
! !! !!
!
!!! ! ! !
!
!!
!!! !!
!
!!
!
!
!!
!!
!
!
!!
!
!! !! !!
!
!
!
! !!
! !!
!!
!
!
!
!
!
!! !
!!
!!!
!!
! !
! !! !! !! !! !
!
!!
!!!
!
!!
!
!!
!!
!
!! !
!
!!!
!!
!
!!
!!
!
!!! !!
!!
!
!
!!
!
! !! !
!
! ! !! !
!
! !! !
! ! !! ! ! !! !! !!!
! !! !
!!
! !
!
!
!!!
! !
!! ! ! !
!
!!
!
!!
!
!!!!
!
!!
!
!!
!!
!!!
!! !
!! !
!
!
!! ! ! !
!
!! !! !!
!!
!!! !!
! !
!! ! !
!
! !!!
!! !! ! ! ! !! !!!!
!!!
!
!!
!
!!!
!
!!!
!
!!
!!
!
!!
!! ! !
!!!
! !
!
!
!! !
!!
!
!! !!
! !
! !! !! !!!
!!!! !
! ! !
!
!!
!
!!!
!
!!!
!
!!
!
!! !!
!!
!
!! !!
!
!!!
!!
!!!!
!!
!
!!!!!
!! !!
!!
!
!! !
!!
!!
!! !
!!!! !!
! !! !
! !
!! !!!!!
!!! !!
!
! !
!
!
!
!! ! !
!!
!
! !
!!
!
!!
!
!!
!! !
!!
!!!
! !
!!
! !
!!
!
!
!
!
!
!
!
!
! !
!!
!!
!
!
!!
!!
!!! !
!!
! !
!!
!!!! !
! !
! ! ! ! ! !
! ! !! !!!!!!
!
!
! !!
!!
!
!!!!
!!!
!
! ! ! ! ! !
! ! !!
!! ! !
! !! ! !
! ! !
!!
!!!
!!!
!
!!
!!
!!
! !!
!!
! !
! ! !! ! !
! !!!! !!
!
!!!
!!!! !!
! !! !!!
!!! ! !
!
!! ! !!! !
! ! !!!
!!
! ! ! !
!!
!
!! !!
! !
!!
! !!
!!!
! !
!! !! !
!
!
!! ! ! !
!! ! !!
!
!
! !
!!!
!!!! !!!!
!!
!
!!
!!
!
!!
!
!!
!!
!
!
!!
!!
!
!!!
!!
!
!!!
!
!!
!! !!!
!!
!!
!!
!!
!
!
!!
!
!!!!!
!!
!
!
!!
!
!!!
!
!
!!
! !!!!!
! !
!
!!!
! !
! !! !
! ! !! !!! !
!
!!
!! !
!
!
!
!
! ! !
!!! !!!
! !!!
! !
!
!!
! !
!
!! ! !
!!
!
!!!!! ! !!
!!
!!
!
!!
!!
!!
!! !
!! !!
!!!!
!!
!!
!
!!
!
!
!!
!!
!!!
!!!!!
!!!
! !
! !
! ! !!! !! !!
!
!!
!!
!
!!
!!
!!
!
!!
!
!!!
! !
!
!!!! !!
!!!
!
!
!
!
! !! !!!!
!!
! ! !! !
! !!
!!!
!
!
!! !!
!
!! !
!!
!
!! !
!!!!
!! !!
!!!!
!
!!
!
!!
!!
!
!
!!!
!
!!
!!
!
!
!!
!
! !
!!!
!
!
! !
!!!
! !
!
!! ! ! !!!
! !! ! !!
!!
!
!
!!!
!
!!
!! !
!!
!
! !
!!!!
!
!!
!
! !!
!
!!!
!
!!
!!
!
!!
! !! !
!
!
!!! !! !! ! !
!!!
!
!
!
! !
!
!
! ! !!
! !! !
!!
! !
!
!
! ! !!
!! !!
!!
!
!
!!
!!! !! !
! !
!!
!
!!!!
!
!!
!
!!
!!
!
!!
!
!!
! ! !
!!! !
!
! !
! !
!! !!! !!! ! ! !
!!
!
!!
!
!
!!!
!!!
!
!
!
!!
!
!
!!
!
!
!
! !
! ! !! !! !! !
!! !
! !!!! !
!! !
!!!!
!
!!!
!
!!
!!! !
!
!!
!
!
! !!! !
!!!
!
!!!
!!
! !
! !
!
! !! !
! ! !
! !
!
!
!!!!
! ! !
!
!!
!! ! !!
! !
!!
!
!
!!!
!!
!
!!
!
!!! !
!
!
!!
! ! ! !
!!!!!!
!!!
!!!
! ! !! !
! !
! !
!
!
!
! !!
! !! !! ! !
! !! !!!! !! !!!!! !
!! !!
!
!
!!!
!!
!
!! !
!!!!!
!
!
! !
!
!!
! !
! !
! !! !!
!
! !
! !!
!!
!
!! ! !! !!
!!
!! !
!!
!!
!
!
!
!! ! ! !!
!
!
! !
! ! !!!
!!
!!!
!
!
!!
!
!!
!! !
!
!
!!
!
!! !
!!
!
!!
!!
! !
!! ! !!
! ! !! !!!
!!!
!
! !! ! !! !! !
! !
! !!
!
!!
!
!!
!!
!
!!
!
! ! !! !
!
!!
!
!!!!!! !
!
!!
!
! !
!!!
! !! !! !! !! ! ! !
!!
! !!!
! !! !
!! !!!!
!
!!! !
!!!!
!
!
!
! !!
!! !!
!
!
!!!
!
!!
!!!!!
!
!
!
!
!
!
!
!
!!!
!
!!
!!
!!! !! !
!! !!!!
!!!! !
!! !
!
!!
!
!
!
!!!
!!!!!
!
! !!
!
!!
!!! ! !!
! !
!
!!
!! !! !!!!
!!!
! !
!
!!
!!
!!!!! !
!! ! ! !!
!!
!!
!!
!
!!
!
!
! !
! !
!! !
!! !! ! !
! ! !! !
!
!
!!
!
!!
!!
!!
!
!! !
!!
!
!
! !
!!
!
! !!
!! ! ! ! !!
!!
!! !
! !!! !!!
!!!! !!
!
!!
!
!!!
!!!
!! ! !!!
!
!!
!
!!! ! !
! !!!
!!
! ! !
! ! !
! ! ! !
! !
!! !
!
!
!!
! !
!
!!
!
!
!
!
!!
!
!
!!!
!!!
!
!!
!!!!
!!
!!
!
!!
!!!
! !
! !
! !
! !! !!!! !! !
!!
!
!!!
!!
!
!
!!
!!!!
!
!
!!
!!!
!
!! !!! !! !!!
!
! ! !!!
!!
!
!!
!!!! !!
!!!
!
!
!
!! !
!!
!
! !
!
! !!
!
!!
! ! !
!
!
!!
! !!!
! ! !
!
!
!!
!
!
!
!
!!
! !!
!! !
! !!
! !!
! !
!!! !! !
! !
!!
!
!
!!
!
!!
!
!!
!
! !!
! ! !!
!
!
! ! !!
!
!
!
!!
!
! !!!
!
! !
!!
!
!!
! ! !
!!
! ! !
!
!
!!
! ! !
!
!
!
!
!
!!
!
!
!!
!
! !
! ! ! !
!!
!
!

Figure 9. Average relative element error as a function of


!!! !
! !!
!!!
1500

! !
!
!
!!
! !!
!!!
!! !
!
!!
!
!
!!!!
!!
!! !
!
!!
! !
! !
!!
! !
!
!!
!
!
!!
!
! !! !!
!!!
!!
!
!!
!
!! ! !
! !! !
!!
!
!
! !!
! !
! ! !!!
!!
!
!!!
!!!
!!
!!
!
! ! ! !
!
!
!
!!
! !
!!
! !!
!
! !
! !!!
!
!!!
!
!!
!
!
!!
!
!
!
!! !
! !
!
! !! !! ! !
!!! !!!
!! ! !! ! !
!!!
!!
!
!!!
! !
!
!
!
!!
!!
!
! !!! !! !
!!!!
!
!!!
!
! !!
!! !!
!
!
!!!
!
!
!
!! !! !! ! !!
!!
!
!!
!
!
!!
!
!! !!
!!
!!!
!
!
!
!!
!
! !
!
!
!
!!!
! ! !
!
!! ! ! !
!
!
!
!
!
!
!
!
!!
!
!
!
!
!
!!
!
!
!!
!
!!
!!
!!!!
!!!
!! !! !
!!
! !
!
!
!
! !!
!
!!
!
!
!!!
!!
!!
!!
!!
! !
!
!
!!
! !
!!
! !! ! !
!
!
! ! ! !!
!!
!!!
!!!
!! !
! !
! !
!
!
!
!! ! ! !! !! !!
!
! ! ! ! !!
!! !!
!
! !
!!! !
!!
!!! ! !!! !! !!! ! !
!!
!!
!!
!
!
!!
! !
!!
!! !!
! !
!
!
!!
!
!
!
!!
!
!! !
! !! !!
!
!
!!
!
! !
!!
!
!
!
!!
!
!
!!
!
! !!
!!
!
!!
!!
!! !
!!
! ! !
!!!
!!
!
!
!
!! !! !
!!
!
!!! ! !
! !
!! ! !
! ! !
! ! ! !!!
!
!!
! !
! !
! !
!
!
!!!
! !!
!
!!
!
!
! !! ! !
!
!
!
!!
!
!
!
!
!!
!
! !! !
! !!
! ! !
!! !
!! ! ! !! ! ! !
!
!!
!!
!! !
! !!
! !
!
!!
! !
!
!!
! ! !
!!
! ! ! !
!
!
!
!
!!
!
!
!!
!
!
! !
!!
!
!
!
!! !
! !
!
!!
! ! !! !!
!!!
!!!
!!
!
!!
!!!
!
!!
!! ! !
!! ! ! ! !
!!!
!!
!
!! !
!
!
!! ! !! !
!!
! !
!
!! !! ! ! !! !!
!
!!!!!
!
!!!
!
!!
! ! !
!
!
!!
! ! !
!
!
!!
! !!
! !! ! !
!!
!
!
!!
!
!
!
!!
!
!!
!
!!!
! ! !
!!
! !!
! !
!
!!
! !!
!
!
!
!!!
!
! ! ! !
!!
!
!
!!! !
!! !! !!
! !
!
!!
!!
!
!!
!!
!
!
!! ! ! !
!!
! !! !!!
!! ! !
!!
!
!!
!!!!
!
!!
!
!!
!! !
!!
! !! !!
! !
!
!!
! !!
!!
!
!! ! !
! ! !
! !
!
!!
! !!
! ! !
!!
!!
!
!
!!
!
!
!
!!
!
!
! !!
!
!!
!! !
!!
! ! !
!
!
!!
!
!!
!
!!
!
!!
!!
!
!!
!
!! ! !!
!
! !
!
!!
!
! !!!
!!
!!
!!!
!!
!!!
! !
! !
!
!! !!
! !!!
! !!
!!!
!!
!
!!

refinement step for 5 obstructions.


!
! !
!!
! !! !
!! !!
!
!!!! !
! ! ! !!
!
!
! !
!!
!
!
!!
!!
!
! !!
! !
!!
!
!
!!
!!
!
!!
!
!!
!
!
!!!! ! !
!!
!
! !
!
!
!!
!!
!
! !
!
! !
!!
! ! !!
!
!!
!
!
!
!! ! !
!
!
!
!!
!
!
!!
! !
!!
!
!
! ! ! !!
! !
!
!!
!
!
!!
!
!
!
!
!
!
!
!! ! ! !
! ! !
!!
!
! !
!!
! !!
! !
! !!!!
!
!
!
!!!
!
! !
!
! !
! !
!! ! !
!! !
!
!
!!
!!
!
!
! !
! !! !!
! ! !
! !!!
!
!
!
!
!!
!
! ! !
!
! !
!!
! !
!!
! !
!
!
!! ! !
! !!
!! ! ! !
!
!!
!
!
!!
!
!
!
!!!
!
!
!
! !!!
!
!
!!
! !
!
! !
!
!!
! !! ! !!
!
!
!
!!
!
! !
!!!
! ! !!
! !
!! ! ! !! ! ! ! !!
! !!
!!
! !
!! ! !
!!!
!
!!
!! !
! ! ! !
!!
!
!!
! !
! !! !
!! !! ! ! ! !!
!!
!!
!!
!
!
!
!!
!
!!
!!
! !!!! !!
! !!
! !! !!!! !
!
!
!!
!! ! !
!
! !!
!! !
!
!! ! !
!!
! !
!
!
!
!
!!
!!
!
!
!
!!
!
!
!
!
!!
!
!! !!
!! !
!!
!!
!!
!!! ! !!
!
! !!
! !! !!!
! !
!!
!
!! !
! !
!!!
!
!!
!
!!
!!
!
!!
!
!
!!
!
! ! ! !!
! !!
! ! !
!
!! !
!
!
!
!
!
! !!
! !
!! !! !
! !
!! ! !! !
! !! !
!! !!
!
!!
!!
!!!
!
!
!!
!
!
!
!! ! !
!
!
! !
!
!! !!
! ! ! !! !
!!! !
! !
! ! ! !
!! ! !
!
!
!!
!
!!
!! !
!
!
!
! ! !
!
!! ! !!
!
!!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!!! !
!! !
!!
!
! ! !!
!!! !
! !
!
!!
! !
! !!!
!!
!!!!
!!
!!
! !!
! !!
!
!!!
! !! !!
!
!
! !
!
!!
! !!
!!!
!
!
!!
!
! !! !!
!!
! !!
!
! !
!
!
!! !
! !
!!
!
!
!
!! !! !! !! !!!
!!!
!
!!
!
!!
!!
!
!
!!!
!
!
! !
!
!
!
!!!! !!!! ! ! ! !! !
! ! ! !
!!!
!!!
! !!
!
! !
!! !!! !! !
!
!
!
! ! !!
!! ! ! !! !!!
! ! ! ! ! !!! !
!
!!!
!! !
!! !!
! !
!!
!
!
!
!
! !
!
!
!
!! !! !
! !
!!
! !
!!!
!
! ! !
!!
!
!
!!
!!!
!
!!
!
!!!!!
!
!
!!
!
!
!!
!
!!
!!
! !! !
!
!
! !!
!
!
!
!!
!
! ! ! !! ! !
!
! !! ! !
! !
!
!! !
!! !!!!
!
!
!!
!!
!
!
!
!! !
!!!
! ! !! !!
! ! !
!!! !
!
!!!! !!! !! ! ! !! !! !
!
!!! ! !
!!
!
!!
!
!! !
!
!!
!!!! !! !
! ! ! ! !
! !! !! ! ! ! !
!!
!
!!
! !!! !!
!
!
!!!! !!! ! !!
! !!
!!
!
!!!
!
!!!
! !
!
!!! ! !
!! !!!! ! !
!! !!
!! !! !
! ! ! !! !
! ! ! !
!
!!! ! !
! !! !! ! !
!
!
!!
!
!
!!
!
! !
! ! !
!
Row

!!! !! ! ! ! ! ! ! !!! !!
! !!
!
!
!
!
!!
! ! !
!!
!
!
!
!!!
! !! !! ! !
!!
!
!
!!
!
!
!
!
!
!!
!
!
!!
!
!!!! !
!
!
! ! !
! !
!!
! !! !
!!
! ! !!
!
!
! ! ! !
!!
!
!!
!
!!
!
!!!! !!
!!
! ! !!!
! !
!! ! ! !! ! !!
!
!!
! !!
! !
!
!!
! !! !!
! ! !
!!!
!!
!
!
!!
!
!
!
!
!
!!
! !
! !
!
!
!!
! !
!!
!
!
!!!!!!
!
!
!
! !
!
!
! !
! !
! !!
!
!!
!
!
!
!
!
!!
!
!
!
!! !!! ! ! !!
!
!!
! ! !
!
! !!
!
!
!
!!
! ! !!
!!!
!!
!!
!
!
!
!!!!! !
!
!
!
!!
! ! !!
!
!
!
!!
! ! !
!
!
!!
!
!!!
!!
!! !!
!
!! ! !
!! !!!!
!
!!
! !! !
!! !! !! !!
!!
!!
!
!!!
!! !! !
!
!!
! ! !
!
!! ! !! !
!!
!
!
!
!
! !!
!
!
! !! !!
!
!
!
!!
!!!
!!
!
!
!!
!!
!
!
!
!!
!
!
!
!
!
!
!
!! !
!!
!
!!
! !! !
!!
!
!
! !
!!
!! ! !! !!!
!
!
!!
!
!
!
!!
!!
!!!
! !
! ! ! !
! !!
! ! !
!
!! ! !!
! !! !
!
!!
!
!!!
! ! !
!
!
!
!
!
! !
!
!! !!
!
!
!
!
!
!
!!
! !! !
!
!
!
!
!
!
!
!
!
!
!
!
!!
!
!
!
!! !
! !! !
!! !!
! ! ! !! !!
! ! !!
!
!!
!!
!!!!
!!
!
!
!
!!
! !! !
!!
!
!
! ! !
!!
!!
!
!
!
!!
!
!
!
!
!!
! !!
!! ! !! ! ! ! !!!
!
!!!
! !
!!!
!! !!
!
! !
!
!!!
!
! !
!! !! !
!
!
!
!
!! !
! !
!
!!
! !
!!!
! !
!
!!
! ! !
! !
!
! !!
!
!
!
!
!
!
!
!
!
!
!
!
!!
!
!
!
!!
! !
!! !! ! !! ! !
!! !!! !! !
!
!!
!!!
!
!! ! !! !
!!!
! !
! !
!
!!
!
! !!!!!!!
!
!
!
!
!
!
!
!
!
!
!
!!!
! !
! !!
!!
!
!!
! !
!
!! !!
!! ! !
!! ! !! !
!! ! !!!
!
!!
! !! !!
!
!
!
!!!
!
!
!
!
!
!!
! !
!!
!
!
!
! !
!
!!
!
! ! !
! !!
!
!
!!
!
!
!
!
!
!
!
!
!
!
!
!
!
! ! !! ! !!! !
!
! !! ! !! !!! ! !! ! !
! ! !
!
!! ! ! ! !
! !!
! !! ! ! !! ! !
!!
! ! !! !! !! ! !
!! ! ! ! !! !
! !
! !! ! !
!!! !
!
! ! ! !
!!!
! !
!
!
!!
! !
!
!!
! !
!! !
! ! ! !
!
!
!!
!
!
!
!!! !
!! !
!! !
!
!
!!
! !
!
!!
! !
!!
! ! ! ! !
! !
! !
!!
!
!
!!
!
!
!!
!
!! !!!
! !
!
!! !
!!
! ! !
!
!! !! !
! ! !!
!
!!
!
!
!
!
!!!
!
!
!
! !
!!
!
! !! !!
! !!
! !! !
!! ! !
!!!
!
!
!
!!
!! !!
! !
!!
! ! ! ! !! ! ! !! !! ! !
! !
! !
!
!
!
!
!
!
! !! !
!
!!!!!
!!
! ! ! !!! !!!
!!!
!
!
!
!
!
!
!
!
!
!
!
!!!
!
!
! !
! !
!! !
! !!!!! !!! !!
!
!!
!
! ! !
!!!!!
!!
!!
!!! ! !! !!!
!
!
!!
!
!
!
!!!
!!
!!! !
!!
!!
!
!
! !
!
!! !!
! !
!! ! !
!! !
!!
!!! ! !
! !
!! ! !!!
!
!
!!
!
!
!!
! !
!
!
!
!
!
!!!
!
! !!
!! !
!
!!
! !! !
!! !
!! !! ! ! !!
!!!
!
!!
!
!
!! !! ! !
!!
!
!!
!
! !!
! !!!
! ! !!!
! !
!! !! !! !! !
!!! !
!!
!
!
!! ! !!
!
! !
!!
!
! !!!
! !! ! !! !!
! !!!
!
!
!
!
!!
!
!! !!
!! !
!
! ! !!!
! !!!
!!!
! !
! !
! !
!
!!
!
!
!!
!
!
!!
!! !!!
!
!
!!
! ! !
!
!! !!
! ! !
!!
!
!!
! !!!
!
!
! !
!
! !
!!
!!
!
!
!!
!
! !! !
!
!
!
!
!
! ! !! !! !!
!!
!
!!
!
!
!
!
!!
!
!
!!!!!
! ! ! !! !!
!
!!
! !
!
!
!!
! ! !!! ! !!
!
! !
!
!!!
!
! !! !!
!!
!
!!
! !
!
!
!!
! !
!!
! ! ! ! !!! !
! !
!!
!
!
!!
!
!!
!
!
!
!
!
!! !
! !!!!
!
! !
!! !
!!
!
!
!!
! !!
!!
!!
!
!!
!
!
! !!
!!!!! ! !! !
!
! !
!
!
!!
!
!
!
!!
!
!
!
!
!
!
! !
! !
!
!!
!
!
! !
!!
!
!!
!!! !
! ! ! !!! !
!!!
!
!!!! !
!
! !
!!
!
!
!!
!!
!
! ! !
!
!
!
!
!
!
!
!
!
!
!
!
!! ! !! !!
!!
!
!
!
!
!
!
!
!
!
!
!
!
!!
!
!
!!!
!!!
!!
! !!! !
!
!
!
!
! !
!
!!
!!
! !
!
!!
!!
!
!
!!!
!
!!
!
!
!
!!
!
!!
!!
! ! !
!
! !
!!
! !!!
!!
!
!
!!
!
!! !
!! !
!
!! ! !! ! !
!! !! ! !
! !
! !
! !! !! !
!
!!
! !
!
!
! ! ! ! !
!! !
!
!
! !
!
!
! !
!
!
!!
!
!!! ! !!
!! !
! !
!!
!
!
!!!
!
!
!
!!!
! !
!! !
!!
!
!
!
!
!!
!
!
!
!!! !! !
! ! ! !!!!! ! !
!!
!!
!! !!
!!
!
!
!
! !
!
!!
! ! ! !
!
!!
! !
!!
!
!
!!
!!
!
!
!
! ! !!!!
!
!
1000

!
! !
!!
! !
!! !
!
!!! !! !
! !
!! !
!!
!!!
!!
!!
! !!
!
! !! ! !
!! ! !!!!
!
!
!
!!
! !
!
!!
! !
! ! !
!!
! ! !! ! !!
!
!
!
!
!
!!!!!
!!
!
!
!
!!
! !!
! !!
!! !
! ! !
! !
!!
! !! !
!! !
! ! ! !!!!!
!!
! !!
!
!
!
!!
! ! !
!
!!
! !
!
!!!
! !! ! !! !
!
!
!
!
!
!
!
!
!!
!
!!
!
!
!
!!!!
! !
! !
!! !! !!! ! !!
!!
! !
!
! !
!
! !!
! !
!
!!
! !
!
! ! !! !!
!
!
!!
!
!
!
!
!
!
!
!
!
!
!
!!
!
!
! !
!
!!
! ! !
!!
! ! ! !
!
!!
! !
!!!
!
!! !!!

6.2. Adaptive Mesh Results


! !
!!
!
!! !
!! !
!!
!!! !!
!
! !!
!!!!
!
! !!! !
!! !
!
!
!
!!! ! !
!
!
!!
! !!!! !! !! !!
!
!!
!
!!!
!!
!!!!
!
!!! !
!! !!
!
!!
! !
! !
!! !!!!!
! !! !!
!!!!
!!
!!
! !
!
!!!
!!! !
!!
! !
!! !
!!! !!! ! !
!!
!!!
!!
!!
!
!
!
!
!
!
!
!
!
! !!
!
! !
!! ! !!! !
!! !!!
! !! !
!!! ! !
!
!! !! !!
!
!
! ! ! ! !!! !
!
!!
!
!
!! !
!
!
!!!
! ! !
!
!
!
!
!
!
!!
! !!
!
! !
!!!!
!!
!! !
! !
!! !!
! !
!
!
!
!!
!
!!
!
!
!
!!
!
! !
!
!
!!!!!!
!
!!
! !! !!
!!!!! ! !
! !!!!
!!!
!
!!
!! !
!
! ! !
!
!!! !!! !!
! ! !!! !! !!!!
!!
!
!!
!!! !
! !
!!
!
! !! !
!!
!
!!
! !!!!!
!!
!
! !
! !
!
!!
!
!! !
! ! !
!! !
!! !
!!!
!
!!!
! !
! !!
!!
!
!! !
! !! ! ! ! !! ! !!
!
!!
!
!!
!! !!
!
!
!!
! !! ! ! ! !!
! ! !
!
!!
! !! !!! !!
!!
!
!
!
!
!
!
!
!
!!
!
!! !
!
!! ! !!
!! ! !
!! ! ! !
! !!
!
!
!
!!
!
!
!!
!
!! ! ! !
!
!
!!
! ! !! !!
! !
!
!!
! ! !!
! ! !!
!
!
!
!
!!
!
!
!
!!
!!
!
!!
! !!
!
!!
! !! !
!!
! ! !
!
!!
!
!
!!
!!
! !! !!!
!! ! !! !
!! ! ! ! !!
!!
!!!
!
!
!
!
!!
! ! ! !!! !
!!! !!
! !
!!!!
!
!
!
!
!
!
!
!
!
!
!! !
!
! !!
!!
!!
! ! !
! !
!
!
! !
!!
! ! ! !!! !
!
!
!!!
!
!!
!
!
! !!! !
!
! ! !
!
! ! ! ! ! !
!!!! !
!
! ! !
!
!
!
!
!
!
!
!
!!
!
!
!
!
!
!
! !! !
!! !! !
!
!
!
!
!
!
!
!
!
!
!
!!!
!!
!!
!!
!
!!
!
!
!! !
!!
!! !! ! !! ! ! !!
! !
! !!
!!
!!
!!!! !
!!
!!
!! !
!
! !! !!
!
! !
!! ! ! !
!!
!!!!!
!!
!!!
!
!
!
!
!! !!
!
!
!
!
!
!
! ! !!
!! !
! !
!!
! !
!!
!!
!!!
!
!
!!!
!!!
!
!
!
!!
!
!
!!
!
!!!
!
!
!
!
! ! !
!!
!
!! !
!
!
!!
!
! !!
!
! !!
!!
! !
!! !! !
!
!
!!
!!
!
!
!!
!! !
! !!! !
!
! !
! !!
! !
!!!!
!!
!!! ! !!
! !
!! !!
!
!
!!
!
!!! ! !
!!! !
!!! ! !!
! ! !! ! ! ! !!
!!!
!
!
!
!!
!
!!!! !! !
!!
!
!!
! !
!!
! !
!
! ! ! !
! ! ! !
!
!
!!
!!
!!
!! ! !
! ! ! ! !!
!! ! ! !!! !
!
!!
!
!
!! !
!!
! !
!!
!
!! !!
!
!
! !!!
!!! !
!!
!!
!
! ! !!!!!
!
!
!
!
!
!!
!
!
!
!
!
!
!
!
!
!! !!
!!
!!
!
! ! !
!!
! !
!
!!
! !! !!
! !
!
!
!!
!
!!!
!
!!
!! !! !
!!
!
! ! !
!
!!
! ! !!
!
!
! !!
!!
!!
! !
!!
!!
!!
!! !! !
!
!
!!
! ! ! !
!!
! !
!
!!
! ! !!
!!
!
!
!!
!
!
!
!
!!!
! !!
! !
!
!!
! ! !
!
!!
!!
! ! !! !! !!!! ! !!!
!!
!
!!
! ! !
!
!
!!
! ! !! !!
!
!!
!
! ! ! !!!!!!
!
!
!
!
!!
!
!!
!!
!! !!!
! ! !!
! !
!
!!
! !!
!
! !
!
! !
!
! !
!
!
!!
!
!!
!
!
!
!!
!!! ! !
!!! !
!!
!! ! !
!
!!! ! !
! !
! ! ! ! !!
!
!!
!
!!
!
!
! ! ! ! !
! !
!! !! ! ! ! !!
!
!
!!!
! ! !
! !!! !
!!
! ! ! !
!!
!
!
!!
!!!
!!!!
! !!! !
!
!!
! ! !
! !
! !!
!!!!
!
!!
!
!
!!
!
!! !
!
!
!!
!!
! !!!
! !
!!
! !! ! ! !
!!
!
!
!
!
!!!!!!
!!
!!!!
!
!!!! !!! ! !! ! !
! ! ! !!!
!!
!!!
! ! !
!! !
!
!!! !! !!
!! !
! !! !!!
!!
!
!
!! ! ! !
!
!
!!
!!
! !!
!!
!! ! ! !
!
!!
! !
!
!!! !! !!!!
!
!!
!
!
!
!!
!
!
!
!!
!
!
! !
!! !! ! !
! !
!
!! ! !! !!
!!!
!
! !
! ! !
!
!
!
! !!
! ! !!
!
!
! ! !
!! ! ! !!!!
!!
!!
!
!
!
!!
!
!
!!
!!!
!
!! ! !
!
!
!
!!
! ! !
!!
! !!!!
!
!
!
!
!
! !!
!! ! !
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!!
!
!
! !! !
!!!! ! !! ! ! ! !!
! !
!!
!
! !
!
!
!!
!
!
! !
!! !!
!!!
!
!
!
! !
!!!!!!!
!
!
!
!
!
!
!
!
!!
!
!
!
!
!!!
! !
!! !
! !!!
! ! !
!
!!
! !
!
!!
! !! ! !
!
!
!!
!
!
!
!
!!
! !
!
!!!!

Table 2, 3, 4 show the details of the mesh refinement pro-


! !! !! ! !!
!
!!! !
! !
! !! ! !!!
!
!!
! !
!
!!
!! ! !! !
!!
!
!
! !
!!
!
!!
!
!! !
!
!
! !! !! ! ! !!
!
!
!
!!
!!
!
!
!
!
!
!!
!
!
!
!!
!!
! !!
!
!!
!
!
!! !! ! !! ! !
!! !
!
!! !! !
! !!
!!
!
!!
! !
! !
! !! !!
!
! !
!
!!
!!
!
!!!
! !
!! !
!! !! !!! !
!
! ! !
!!
! !!
! !!
!!!! ! ! !!
! ! !
!!
!
!!
!!
!
!! !! !! !!
!!
!
!!
!! ! !
!!! !!
!
!
!
!!
!
!!
!
!!
!!
!
!! !! !!! !!!
!
!!
! !
!
!
!
!! !
! !! !
!!
! !
! !! !!
!
!
!
!
!
!
!
!!
!
!
!
!
!
!!
!
!!! !!
! ! !
!!
! !
!
!!
! !
!!
!! ! ! !
!
!
!!
!!
!!
!!
! ! !! !!
!
! ! !! !! ! ! !
!!
!
!!
! ! ! ! !!
! !! !!
!!!!
!! ! !
!
! ! !! !
!!
! ! ! !! !
!
! ! ! !
!!
!
!
!!
!!! !
!!
!
!
! ! !! ! !! !!
!
!!
!
!
!!
!
!
!
!!!!
!!!
! !
!
!!!! !
! !
!
!
!
!
!
!
!
!
!
!! !
!
!
!
!
!
!
!
!
!
!
!!
!!
!
!
!!!
!
!!
!! ! !
!
! ! !
!!
!
!
! !
!!
!
!
!!
! !!!! !
!!
!
!
!
!
!!
!
!
!!
! !
!!!
!! !
!
!! !! !!! !!!
! ! ! !! !
!!!
!
!
! ! !
!!!
! !
!
!
!!
!
!! !!
!
! !
!! !
!
! !! !!
!
!
!!
!
!
!
!
!!
!!
!
!! ! !!
!
!
!
!!
!!!
!!
!! ! ! ! !
!
!!
! !! !! ! !
!
!
!!
!
!!
! !!
!
!
!
!
!
!
! !
!!!
!
!!!
!!
!!
!! !
!
! ! ! !
! !
!!
! !
!
!
!!
!
!!
!
!
!
!
!
!
!!
!
!
!
!!!
!
!
!
!
!
!
!
!
!
!
!
!
!
! !! !
!
!
!
!
!
!
!
!
!!!
!
! !
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!!
!! !!!! !
! !!
!!
! !
!
!
!!
!
! !! !!
!
!!! !! !! !
!

Вам также может понравиться