Professional Documents
Culture Documents
i
rst derivative of Lagrange polynomial
i
with respect to . . . 22
ij
the value of the rst spatial derivative of
i
at point
j
. . . . . . . . 25
m(x) the mass of a innitesimal Volume around x . . . . . . . . . . . . . . . . . . 12
M
e
ij
N N matrix elements of the elemental mass matrix belonging to
the spectral element e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
M global mass matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
M
1
the inverse matrix of the global mass matrix. . . . . . . . . . . . . . . . . . 27
n
a
overall number of anchor points of one element, used to dene the
shape of the elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
n
d
number of coordinate axises, i.e. the dimension of the considered
problem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
n
e
number of elements in the mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
n
g
total number of global grid points . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Abbreviations and Symbols ix
ngp number of grid points; measure of the size of a model, indepen-
dent from physical parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
npw number of propagated wavelength; measure of distance in seis-
mic modelling, independent from physical parameters . . . . . . . . . 78
N degree of the Lagrange polynomials . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
N
a
shape functions of the mapping, n
d
-products of Lagrangian poly-
nomials of degree 1 or 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
P
N
Legendre polynomial of degree N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
t time coordinate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
dt discrete time step of the time integration scheme . . . . . . . . . . . . . 27
u(x) 1-D displacement at coordinate x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
u
i
value of a function (here u) at local coordinate , equivalent to
u(
i
) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
u global displacement vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
u
t
i
global displacement vector at time step i . . . . . . . . . . . . . . . . . . . . . 27
v test function used to get the weak formulation of the elastody-
namic equation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
V volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
x spatial coordinate in 1-D, or rst spatial coordinate in 3-D. . . . 12
x
e
a
a = 0, . . . , N, anchor points of element e to dene its shape . . . 17
is the wave velocity in 1-D problems . . . . . . . . . . . . . . . . . . . . . . . . . . 38
ij
Kronecker symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
e length of 1-D elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
ij
the elements of the strain tensor with i, j = 1, . . . , n
d
. . . . . . . . . 50
relative solution error, measure of accuracy of synthetic seismo-
grams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
the boundary of the model domain . . . . . . . . . . . . . . . . . . . . . . . . . 14
wavelength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
x Abbreviations and Symbols
SEM standard interval [1, 1] of local coordinates for every ele-
ment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
n
d
= the standard interval or reference square resp. cube for 2- or 3-D
SEM simulations; = . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Lame constante, elasticity coecient. . . . . . . . . . . . . . . . . . . . . . . . . . 12
weights associated with the Gauss-Lobatto-Legendre quadrature
of integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
the domain of a model in 1-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
n
d
= the considered model domain with explicitly specied number of
dimensions n
d
;
n
d
= , n
d
times . . . . . . . . . . . . . . 50
N
i
general denotation for Lagrangian interpolators, which are poly-
nomials of degree N, satisfying
i
(
j
) =
ij
. . . . . . . . . . . . . . . . . . . 30
density . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
ij
elements of the stress tensor with i, j = 1, . . . , n
d
. . . . . . . . . . . . . . 12
spatial coordinate used inside each element, i.e. the local coor-
dinate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
(, , ) = local coordinates in 3-D; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2
u
t
2
x
(
u
x
) = f (2.5)
u, f, and are considered to depend on x, and u and f also on t, in the
following without further explicit declaration.
14 Chapter 2. Basic Concepts in 1-D
The rst step to get the weak formulation is now to multiply Equation (2.5)
with a time-independent so-called test function v(x) on both sides. This may
be any arbitrary function of the set of functions that are, together with their
rst derivative, square integrable over (i.e. a continuous and well-behaved
function). Afterwards we integrate the equation over the spatial domain. Both
steps do not change the solution of the equation. The vector notation =
x
is used from now on to state the expressions in a similar way that is needed for
3-D problems:
_
v u dx
_
v ( u) dx =
_
v f dx (2.6)
If we integrate the second term on the left side of Equation (2.6) by parts, using
a general expression in terms of dimensions, and denote the boundary of by ,
we obtain:
_
v u d
_
v u d +
_
v u d =
_
v f d (2.7)
The general integration by parts, wich results in one integral over and one over
can be derived by combination of the chain rule and the Gaussian divergence
theorem (Bronstein et al. [1999], page 662). Here in fact the boundary only
consists of two points on either side of the one-dimensional model domain, but
this notation is chosen to be consistent with the 3-D case. In 1-D the integral
over thus is the antiderivative of the integrand:
_
v u d = v u
(2.8)
Then we introduce a zero stress condition on the boundary (i.e. using a
free surface boundary condition, which is also called Neumann condition in
mathematical terms):
u
x
= 0 (2.9)
Thus the integral over vanishes, which leads to the nal form of the weak
formulation which we will use in the following:
_
v u dx +
_
v u dx =
_
v f dx (2.10)
The application of other boundary conditions is shown in Section 2.1.9.
This is the weak form of the one-dimensional wave equation. As will be shown in
the next subsections, the discretization and decomposition of the model leads to
2.1. Mathematical Formulation of SEM 15
the previously mentioned linear system of equations. To do so, the N + 1 collo-
cation points
i
, i = 0, . . . , N of the Gauss-Lobatto-Legendre (GLL) quadrature
of order N are considered. Their denition will be given in Section 2.2.2. The
order N is typically chosen between 4 and 8.
2.1.2 Domain Decomposition and Mapping Functions
As mentioned earlier, the model domain has to be divided into n
e
elements. This
is done by taking potential inhomogeneities or discontinuities of the model into
account. It may be necessary to adapt the elements to the velocity structure as to
avoid oversampling in regions of high wave velocities. In two- or three-dimensional
simulations the topography and its realistic implementation in the model are of
great interest. Thus, certain rules exist how to create a well matching mesh and
how to create the corresponding elements, which may dier signicantly. This
process is usually time consuming, but on the other hand makes up the advantage
of methods using elements over FD methods.
The domain decomposition is now discussed in detail, introducing all needed
concepts. In the next chapter, when the SEM for 3-D applications is explained,
some examples of meshes and problems that may occur in this context will be
given.
Figure 2.1 illustrates the idea of dividing the model domain into elements on the
basis of a one-dimensional string. Each element domain is then transformed as
shown for element number 1. This issue will be discussed in the forthcoming
section. Element number 3 is here dened using three anchor nodes, to include
this option for completeness, even if it does not change the shape of a 1-D element.
After dividing the model domain into subdomains
e
, the integrations of Equa-
tion (2.10) are performed independently on these subdomains. Like this we es-
tablish the weak form for every element separately:
_
e
v u dx +
_
e
v u dx =
_
e
v f dx (2.11)
for e = 1, . . . , n
e
.
Mapping Functions - Transformation of Physical Coordinates onto a
Standardized Interval
Via a coordinate transformation, each element is mapped onto the standard inter-
val = [1, 1] of the GLL integration quadrature
1
. Thus all further calculations
can be done in the same way for all the elements. The transform function is
usually called mapping function. It transforms the global (or physical) coor-
dinates x
k
and x
k+1
of the element number k into the so-called local coordinates
1
most quadratures used in FEM make use of the more typical interval
FEM
= [0, 1]
16 Chapter 2. Basic Concepts in 1-D
Domain decomposition
1D "meshing"
e
e
n = 3
e
n = 2
e
n = 1
Domain
Subdividing into
n elements
"Mapping"
1 0
2
1
3
1
x
x
x
x x
2
4 3 1
Figure 2.1: Simple domain decomposition and mapping. Here the model is dev-
ided into three elements. Element number 3 is show with n
a
= 3 anchor nodes.
with .
In the general case, where the elements have dierent lengths, the mapping func-
tion has to be dened separately for every element. In the case of elements having
the same length, the transforming function is identical for all of them. It has the
following form in 1-D:
T
e
:
e
x
e
() = T
e
() = e
+ 1
2
+ x
e
(2.12)
e
is the part of the model domain belonging to the e-th element, e is the
length and x
e
the left point of the element number e. The derivation of this
formula is given in Equation (2.16).
Generally the mapping is done using shape functions N
a
, which are dened on
n
a
anchor nodes x
e
a
inside the element (the denition is given in Equation 2.13).
For one-dimensional elements two anchor nodes per element are sucient to
dene a linear structure, one node at each end. For two or three-dimensional
elements more anchor points per coordinate axis may be considered to create
curved elements. Usually n
a
= 3 is chosen when the geometry is smooth
as more nodes result in unnecessary accuracy of the meshing (Komatitsch
& Tromp [1999]). Using two points per dimension for three-dimensional
elements would result in 2
3
= 8 anchor nodes, whereas 3
3
= 27 nodes
2.1. Mathematical Formulation of SEM 17
would result from shape functions dened on three points per coordinate axis.
Figures and denitions for 3-D elements can be found in Chapter 3, Section 3.1.2.
Figure 2.2 and 2.3 show the one-dimensional shape functions of the SEM which
are Lagrange polynomials dened on the anchor nodes of the element. The
quadratic shape functions on three points are shown here for completeness. Their
use is only of relevant for modelling higher dimensional problems. The denition
of the Lagrange polynomials is given in Equation (2.21) in the next subsection.
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figure 2.2: One-dimensional shape functions on two anchor nodes.
In general the shape functions are n
d
-products of Lagrangian polynomials of
degree 1 or 2, depending on the model (e.g. curved surfaces, interfaces etc.),
with n
d
being the number of dimensions of the considered problem. The general
mapping function is of the form:
x
e
() =
n
a
a=1
N
a
() x
e
a
(2.13)
The Lagrange polynomials of degree N = 1 in Figure 2.2 can be written as:
1
0
() =
(+1)
1 (+1)
=
1
2
1
1
() =
(1)
1 (1)
=
+ 1
2
(2.14)
18 Chapter 2. Basic Concepts in 1-D
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0.2
0
0.2
0.4
0.6
0.8
1
Figure 2.3: One-dimensional shape functions on three anchor nodes.
See the general denition of the Lagrange polynomials in Equation (2.21) for com-
parison. The shape functions in 1-D then simply are the Lagrange polynomials
itself.
N
1
=
1
0
N
2
=
1
1
(2.15)
Using these expressions we can derive the mapping function dened with two
anchor nodes in 1-D, which was given earlier in Equation (2.12). Considering
the element k with its corresponding anchor nodes x
k
and x
k+1
and introducing
the notation x
k
= x
k
1
and x
k+1
= x
k
2
, Equation (2.13) will lead to:
x
k
() =
2
a=1
N
a
() x
k
a
=
1
0
x
k
1
+
1
1
x
k
2
= x
k
1
(
1
2
) + x
k
2
(
+ 1
2
)
=
x
k
x
k
+ x
k+1
+ x
k+1
2
=
x
k
+ (x
k+1
x
k
) + [x
k
+ (x
k+1
x
k
)]
2
=
x
k
+ e
k
+ x
k
+ e
k
2
, e
k
= x
k+1
x
k
= e
k
+ 1
2
+ x
k
(2.16)
2.1. Mathematical Formulation of SEM 19
This is what we expected from Equation (2.12). So far we have discussed the
coordinate transformation itself. Now an explaination on how this transforma-
tion aects the subsequent considerations is presented.
As we will see later, we have to integrate over the spatial coordinate. When doing
so, we have to take the contribution of the transformation into account, which
then occurs under the integral as the determinant of the transformation matrix of
the mapping. This transformation matrix is usually called Jacobi-Matrix and
denoted by J. Its determinant is then referred to as Jacobian and denoted by
. The term matrix is used here in the context of 1-D problems, although it is
clear that in this case it consists of one matrix element only. In this way on can
use the same expressions for the 3-D case. More information about the Jacobian
and the Jacobi matrix can be found in the mathematical standard literature, for
instance Bronstein et al. [1999].
The Jacobi-Matrix and -Determinant of the Mapping Function
One of the big advantages of the methods using elements is that one is able to
apply the same mathematics to all elements in a similar way, but dealing with
every element separately.
In order to achieve this we have to perform the above coordinate transformation
T
e
() for each element through which it is mapped onto the standard interval of
the GLL integration quadrature = [1, 1]. It is known from mathematics that a
coordinate transformation has to be taken into account when performing it during
an integration. This is the case in Equation (2.11). An additional term appears
under the integral, which is the Jacobian. In general, a coordinate transformation
under an integral has to be performed in the following way (Bronstein et al.
[1999]):
_
e
g(x) dx =
_
g
e
()
dx
d
d =
1
_
1
g
e
()
e
d (2.17)
where g is an arbitrary function and the superscript denotes the restriction of g
on the element number e.
The Jacobi-Matrix and its determinant are hereby generally dened as:
J
e
=
dT
e
()
d
e
= det J
e
(2.18)
20 Chapter 2. Basic Concepts in 1-D
In the present case of the one-dimensional SEM they are written as:
J
e
=
dx
e
d
,
e
= [
dx
e
d
[ (2.19)
In practice, the elements of the Jacobi-Matrix are computed using the shape
functions of the meshing:
dx()
d
=
n
a
a=1
dN
a
()
d
x
a
(2.20)
In the case of 1-D elements having the same length e, the Jacobian becomes
=
e
2
.
2.1.3 Interpolation of Functions on the Elements
The analytical functions of Equation (2.11) must now be approximated by discrete
functions using an appropriate interpolation scheme on some discrete points. It
turned out that it is very convenient to use Lagrange-Polynomials
N
as interpo-
lating functions, which are dened on the collocation points of the Gauss-Lobatto-
Legendre quadrature for integration together with an interpolation scheme of La-
grangian type. Typically a degree N = 4, . . . , 8 is chosen for the polynomials.
The denition of the GLL quadrature and its corresponding collocation points is
given in Sections 2.1.4 and 2.2.2.
Using the same points for interpolation and integration is the key feature of the
SEM in connection with Lagrange functions. This will become clearer when we
will talk about the mass-matrix as it will lead to the exact diagonal structure of
this matrix. The Lagrange polynomials are dened in the following way:
N
i
=
N
j=0
j=i
j
j
(2.21)
The superscript
N
will be omitted in the following as it stays the same during
the calculations.
The Lagrange polynomials have an important characteristic for our considera-
tions. Each polynomial
i
is exactly 1 at the coordinate
i
and exactly 0 at all
other nodes of the element. Between the collocation points the polynomial may
have any value. But as we are only interested in the discrete points now, this
does not change the following mathematical derivations. This property of the
interpolating functions can be expressed by means of the Kronecker-delta
ij
:
i
(
j
) =
ij
(2.22)
2.1. Mathematical Formulation of SEM 21
The functions we are interested in are then interpolated inside the elements using
the Lagrange interpolation scheme:
u
e
()
N
i=0
u
e
(
i
)
i
() (2.23)
u
e
is the function u restricted to the area [x
e
, x
e+1
] of element e mapped onto
the standard interval. Because of the property of the polynomials in Equation
(2.22), the approximation of the function u
e
inside the element e is exact on
the collocation points and continuity of the functions across the borders of the
elements is therefore assured. Equation 2.23 also serves for computing the value
of a function at any point inside the element, whose values are known at all
GLL-points.
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0.4
0.2
0
0.2
0.4
0.6
0.8
1
Figure 2.4: Lagrange polynomial
6
of order N = 8. The collocation points can
be clearly distinguished as the points where the function takes the values 0 and
1.
As we can see on the left side of Equation (2.11), we need to interpolate the two
derivatives of u
e
and v
e
which appear in the second term. To achieve this, we will
have to calculate the derivations of the Lagrange polynomials on the collocation
points of the element as the interpolation of a derivated function can be expressed
as:
u
e
()
N
i=0
u
e
(
i
)
i
() (2.24)
22 Chapter 2. Basic Concepts in 1-D
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0.4
0.2
0
0.2
0.4
0.6
0.8
1
Figure 2.5: All six Lagrange polynomials of order N = 5.
How to obtain the derivatives
i
in practice will be explained in Section 2.2.2.
2.1.4 Integration of Functions over the Element Domain
The next step on the way to the matrix formulation of Equation (2.11), which
we nally want to obtain, will now be presented in the following. As we are
still treating each element separately, the integration has to be performed over
the interval [1, 1]. This is done using the so-called Gauss-Lobatto-Legendre
quadrature of integration, i.e. transferring the integral into a nite weighted
sum:
_
g() d
N
i=0
i
g(
i
) (2.25)
i
are the weights of the GLL quadrature. Their denition will be given in
paragraph 2.2.2. Note that g() is again an arbitrary function dened on the
interval . The collocation points
i
, i = 0, . . . , N are hereby the N +1 roots of
the rst derivative of a Legendre polynomial
2
.
The GLL quadrature is a special case of the Gauss quadrature, which has the
same form as Equation (2.25), only the choice of collocation points is dierent
(see Bronstein et al. [1999], page 894 and 895). In the Gauss quadrature the
2
Their calculation is shown together with the integration weights in Section 2.2.2.
2.1. Mathematical Formulation of SEM 23
boundary points -1 and 1 of the standard interval are not included. This leads to
a numerical integration which is exact for polynomials up to degree 2N + 1. In
contrast to that the GLL quadrature is exact only for polynomials up to degree
2N 1. This may seem very disadvantageous, because we have to integrate
polynomials of degree 2N (resulting from the product of the test function and
the displacement). But only the GLL quadrature allows for a diagonal mass
matrix as the Lagrange polynomials for the interpolation can then be dened on
the same points.
2.1.5 The Elemental Mass Matrices and Their
Diagonality
In this paragraph the procedure how to get a matrix formulation for Equation
(2.11) is demonstrated. This formulation, which is valid for one single element, is
obtained by successively applying all previously discussed steps to the integrals
in this equation. After recombining the matrices of the elements we get a linear
system of equations for the whole domain, the global system. This will then be
the basis for the solution of the integration over the time-domain, which is done
using a typical explicit FD scheme.
Starting with the rst integral of Equation (2.11) we obtain for one element:
mapping, Jacobian is needed
_
e
(x) v(x) u(x) dx =
_
e
() v
e
() u
e
()
e
() d
interpolation of v and u
1
_
1
() [
N
i=0
v
i
i
()] [
N
j=0
u
j
j
()] () d
GLL quadrature
k=0
(
k
)
k
[
N
i=0
v
i
i
(
k
)] [
N
j=0
u
j
j
(
k
)] (
k
)
(2.26)
For simplication v(
i
) and u(
j
) are expressed by v
i
and u
j
respectively. The
same applies to and in the next equation. The superscript
e
points out
that the functions have to be restricted to the element number e when being
transformed from global to local coordinates. This is valid for all of the following
considerations, but for clarity it will be droped from now on.
24 Chapter 2. Basic Concepts in 1-D
As there are no restrictions to the choice of v we can set v
i
= 1 and by using
Equation (2.22) we get:
N
k=0
(
k
)
k
[
N
i=0
v
i
i
(
k
)] [
N
j=0
u
j
j
(
k
)] (
k
) =
=
N
k=0
k
k
[
N
i=0
ik
] [
N
j=0
u
j
jk
]
k
=
N
j=0
u
j
[
N
i=0
N
k=0
k
k
k
ik
jk
]
= u
j
M
e
ij
(2.27)
Here we use the implicit sum convention over repeated indices for the last relation,
which was originally introduced by Albert Einstein.
M
e
ij
are now the (N + 1) (N + 1) elements of the elemental mass matrix of the
form:
M
e
ij
=
i
i
i
ij
(2.28)
Equation 2.28 follows directly from the denitions of the Kronecker-delta
ik
jk
=
ij
and tells us that only the diagonal elements of the elemental mass matrix and
thus also of the global mass matrix are occupied. This is the key feature of the
SEM in combination with the Lagrange polynomials. It simplies and speeds
up the inversion process of the mass matrix signicantly as one only has to take
the reciprocal value of the diagonal elements. In addition, computer memory
requirements are reduced by a great amount as the values can be stored in a
one-dimensional vector instead of a two dimensional matrix.
2.1.6 The Elemental Stiness Matrices
The elemental stiness matrices are derived in a similar way. But during their
calculation we have to take a further term into account, which occurs because
of the coordinate transformation of the Nabla-operator (i.e. in this case a
one-dimensional derivation in space). Another point we have to keep in mind is
that Equation 2.22 does not hold for the derivations of the Lagrange polynomials.
Therefore not only the diagonal but all elements of the elemental stiness matrix
2.1. Mathematical Formulation of SEM 25
are non-zero. Shown below is the derivation of the elemental stiness matrix
starting with the second integral of Equation (2.11). Note that in the rst state-
ment the Nabla operator
x
itself has to be transformed to local coordinates,
afterwards denoted
x
v(x) (x)
x
u(x) dx =
=
_
x
v() ()
x
u() () d
=
_
v()
x
()
u()
x
() d
1
_
1
[
N
i=0
v
i
i
()] () [
N
j=0
u
j
j
()]
_
x
_
2
() d
k=0
k
[
N
i=0
v
i
i
(
k
)] [
N
j=0
u
j
j
(
k
)]
k
i
J
2
(
k
) (
k
)
=
N
j=0
u
j
[
N
i=0
N
k=0
k
k
i
J
2
k
k
ik
jk
]
= u
j
K
e
ij
(2.29)
Again we have used the sum convention in the last expression of Equation (2.29)
and we introduced the notation
i
(
k
) =
ik
. Obviously, the elemental stiness
matrix is fully occupied since
ij
,=
ij
. It can be computed using:
K
e
ij
=
N
i=0
N
k=0
k
k
i
J
2
k
k
i
(
k
)
j
(
k
) (2.30)
2.1.7 The Assembly of the Global Linear System
Having introduced all features of the SEM on the elemental level, we have to step
back to physical coordinates again and add all the contributions of previously
gained matrices together to obtain a global linear system, which we can then
invert for the integration in the time domain. This step is called the assembly
and can be performed in two dierent ways.
26 Chapter 2. Basic Concepts in 1-D
The more complicated one is to calculate all elemental stiness matrices,
assemble them once during a simulation and then multiplying the global stiness
matrix with the displacement vector u
t
i
in each time step t
i
, as it is given in
Equation (2.34). The problem using this procedure is to calculate the elemental
stiness matrices in 2- or 3-D. But as it is possible, even simple in 1-D, and
making use of some standard FEM features, it will be introduced it in Section
2.2.6.
The second and more convenient way of assembling the global system is to
compute the forces at each node of the global numerical grid separately by
rst calculating the forces on elemental level and afterwards summing the
contributions on nodes shared by elements (assembly). This approach involves
the storage of elastic properties, Jacobi-Matrices and corresponding Jacobians
throughout the whole simulation (i.e. during the time loop), calculation of
stresses and numerical integration at all grid nodes and for all time steps as well
as the addition of external forces. It has therefore higher memory requirements.
The concrete procedure of the calculation of forces is explained together with a
descriptive illustration of the assembly process in Section 2.2.
They both need an appropriate information, which element (and its correspond-
ing values at the collocation points) contributes to the values of the functions
at the global nodes. This information consists of a transformation of the global
numbering of the nodes to the local numbering of the interpolating points and
elements and is stored in a matrix called connectivity-matrix. All this is dis-
cussed when I demonstrate the practical implementation of the SEM (Sec. 2.2.6).
When dealing with the theory it suces to know that there is an appropriate op-
erator called assembly-Operator A, which reassembles the elemental matrices
to a globally dened expression (see Komatitsch & Vilotte [1998]):
M =
n
e
A
e=1
(M
e
) (2.31)
In this way we can assemble all matrices (M
e
and K
e
) and vectors (u
e
and f
e
)
dened for the elements separately to obtain a global matrix equation. After hav-
ing performed all steps mentioned previously, one nally gets this global matrix
equation derived from the weak formulation of the DE:
M u +Ku = f
M u +f
internal
= f
external
(2.32)
When calculating the complete forces at every node instead of computing them
using the stiness matrix, the global linear systems of equation reduces to:
M u = f
total
(2.33)
2.1. Mathematical Formulation of SEM 27
By applying a commonly used explicit FD scheme this equation then has to be
inverted to solve the time-dependent problem.
In fact, to set up this equation correctly one would have to transpose both
matrices M and K. But as they are symmetric, this can be neglected.
2.1.8 Integration of the Global Linear System in Time
In order to integrate Equation (2.32) in time, an explicit 3 point FD scheme is
used in the present 1-D code. The solution for the displacement at the next time
step t
i
+ 1 is obtained by inverting the mass matrix, which gives:
u
t
i+1
= dt
2
_
M
1
(f Ku
t
i
)
+ 2u
t
i
u
t
i1
(2.34)
Both matrices M and K need not to be transponed as they are symmetric (see
Eqs. 2.28 and 2.30).
The inversion of the mass matrix (resp. vector) is very easy as every element
of the inverse vector can be derived by the reciprocal value of the corresponding
element of the mass vector. The implementation in the code is very convenient
when using Fortran as explained in Section 2.2.5. It is important to state here
that the overall accuracy of the method is mainly governed by the accuracy of
the time integration scheme, and not by the spatial discetization, especially when
simulating a great number of time steps.
Further Time Integration Schemes
One important group of generalized time integration schemes are the so-called
Newmark-type schemes. The general form is for example explained in Ko-
matitsch [1997] and Hughes [1987]. Latter also discusses stability issues.
The general scheme is written using two dierent coecients and its behaviour
stronlgy depends on the choice of these. Using one coecient equal to zero
and the other one exactly 0.5 leads to an explicit second order scheme, which
is equivalent to a second order nite dierence scheme (Komatitsch [1997]).
One special property of this explicit Newmark scheme is the conservation of total
angular momentum. In addition, they provide higher accuracy of the discrete
integrations. Thus these are mostly prefered. It can be written in acceleration or
in velocity formulation. Either one of them can also be rewritten in an iterative
predictor-corrector formulation.
Two formulations beside the simpler explicit FD scheme given above were used
in this study for comparison of 1-D simulations. Both use an acceleration formu-
lation and dier in number of iterative steps of the predictor-corrector algorithm.
Small excerpts of the codes, illustrating the implementation of these time inte-
gration schemes, is given in the Appendix A.2.
28 Chapter 2. Basic Concepts in 1-D
2.1.9 Boundary Conditions
The last point that will be discussed in the context of the theory of SEM is how
to implement several dierent boundary conditions.
We have seen during the derivation of the weak formulation that free surface
boundary conditions (the Neumann conditions) are naturally included in
methods using an elemental approach. This is another big advantage of the
SEM, compared to FD methods, where the free surface conditions need great
eort to be implemented. It is, together with the better approximation of
curved topography, the reason why the SEM is better suited for the simulation
of surface waves.
It shows up that the implementation of other boundary conditions such as
rigid (Dirichlet conditions), periodic or absorbing boundaries is also not very
dicult. Only the latter one poses problems in real simulations. But only very
recently, the so-called Perfectly Matched Layer (PML) absorbing conditions
were introduced in the context of the weak formulation by Komatitsch &
Tromp [2003] which show very high eciency. The PML were in the rst part
introduced for FD simulations of wave propagation in heterogeneous media using
the dierential form of the wave equation in the velocity-stress formulation by
Collino & Tsogka [2001].
Rigid Boundary Condition
The simplest boundary condition beside the free surface condition is a rigid
boundary. This condition for rigid boundaries implies that the displacement
at the boundary is 0 for all times:
u
(t) = 0 , t (2.35)
The rigid behaviour of the boundaries can easily be obtained in the simulations by
just omitting the lines and rows of the matrices and vectors of the global system
belonging to the boundary nodes. This is often referred to as the condensation
of the matrices. Like this we implicitly specify that the values of u are 0 for all
times. For the vectors in the 1-D case that means only considering the global
nodes from 2 to (n
g
1), n
g
being the total number of grid points in the global
mesh.
u
t
i+1
(2,...,n
g
1) = t
2
M
1
(2,...,n
g
1) f
tot
(2,...,n
g
1) +
+ 2u
t
i
(2,...,n
g
1) u
t
i1
(2,...,n
g
1) (2.36)
2.1. Mathematical Formulation of SEM 29
Periodic Boundary Condition
Periodic boundary conditions can also easily be implemented in a SEM code. The
only change compared to the zero stress condition is that in this case the rst and
the last node of a one-dimensional string are now the same. This means that the
rst and the last spectral element contribute to the values of displacement at this
node. The whole string can be seen as a ring now. In terms of the global system
of equations we have to add these contributions to the elements of the mass- and
stiness matrix, or when using forces instead, the force vector, corresponding to
the node where the ring is welded together. In other words, we have to assemble
the last and the rst element in exactly the same way as all other elements are.
M
periodic
1,1
= M
1,1
+M
n
g
,n
g
f
periodic
1
= f
1
+f
n
g
M
periodic
n
g
,n
g
= M
n
g
,n
g
+M
1,1
f
periodic
n
g
= f
n
g
+f
1
(2.37)
In the case of the stiness matrix it would be a bit more complicated as one would
have to expand the stiness matrix with 2N columns to account for the elastic
properties of both, the rst and the last element, to the value of displacement at
node 1 = n
g
.
Absorbing Boundary Condition
Absorbing boundaries in seismic wave simulations still pose a big problem. Nev-
ertheless, the PML absorbing boundaries seem to be very ecient and may be
sucient for most of the problems in seismology. The rst conditions for ab-
sorbing boundaries in elastic wave equations were introduced by Clayton &
Engquist [1977].
Komatitsch et al. [1999] and Komatitsch & Tromp [1999] use a rst or-
der approximation based on a formulation by Stacey [1988] for the absorbing
boundaries. For one-dimensional wave propagation it is rather simple, relating
traction to velocity in the following way:
u (2.38)
is the wave speed.
As it only applies to the two corner nodes the absorbing conditions are imple-
mented by:
(1) = (1) (1) u(1)
(n
g
) = (n
g
) (n
g
) u(n
g
) (2.39)
30 Chapter 2. Basic Concepts in 1-D
The stresses obtained are simply added to the stresses acting on the nodes due
to internal forces. See Section 2.2.8 for an explanation on how these stresses and
internal forces are computed.
In the last paragraphs it became clear that most boundary conditions can be
implemented using the calculation of forces at the nodes. This is another reason
why this approach is the preferable one. Using the stiness matrix would result
in many more complications.
2.1.10 The SEM with Chebychev polynomials
In the last section of the theoretical introduction to the simulation of 1-D
problems, the implementations of Chebychev polynomials, used in the early
stages of the SEM, will be explained in short. This is done for several purposes:
on one hand it is considered very important for a complete overview of the
method. On the other hand it shows the improvement which the method
experienced due to the usage of Lagrange polynomials and in addition it is
meant to honour the work of the people rst using this method, like Pat-
era [1984]; Maday & Patera [1989]; Priolo & Seriani [1991]; Seriani &
Priolo [1994]. A short treatise of the history of SEM can be found in Chapter 1.
Most of the concepts for the SEM with Chebychev polynomials are the same as
with Lagrange polynomials as there are the domain decomposition, the mapping
and the calculations of derivatives under an integral using the Jacobi-Matrix. The
functions are also interpolated by a piecewise polynomial approximation using an
Lagrangian interpolation on each element as in Patera [1984] (compare also to
Eq. 2.23):
u
e
()
N
i=0
u
e
(
i
)
N
i
() (2.40)
N
i
are Lagrangian interpolators (polynomials of degree N) dened on [1, 1],
satisfying the relation
i
(
j
) =
ij
. In contrast to the Lagrange polynomials the
calculation of these interpolating functions is more complex. The polynomials
N
i
are dened using Chebychev polynomials T
k
up to order N:
N
i
() =
2
N
N
k=0
1
c
i
c
k
T
k
(
i
)T
k
() (2.41)
with
c
i
=
_
1 for i ,= 0, N
2 for i = 0, N
2.1. Mathematical Formulation of SEM 31
The Chebychev polynomials are dened in the following way (see Bronstein
et al. [1999], page 918):
T
k
(x) = cos(k arccos x) (2.42)
Another frequently used denition is (see Patera [1984]):
T
k
(cos) = cos k (2.43)
The Chebychev polynomials can also be computed using a recursion formula (see
Priolo & Seriani [1991]):
T
k+1
(x) = 2xT
k
(x) T
k1
(x) (2.44)
with T
0
(x) = 1 and T
1
(x) = x.
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
(a) Chebychev Polynomials of order N =
0, . . . , 5.
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
(b) Chebychev Polynomials of order N =
6, 7, 8.
Figure 2.6: Chebychev Polynomials up to degree N = 8 on the interval [1, 1].
The interpolating points
i
are chosen as the Chebychev Gauss-Lobatto quadra-
ture (CGL) points which can be computed using:
i
= cos
_
i
N
_
for j = 0, . . . , N (2.45)
The resulting interpolating polynomials
i
look very similar to the Lagrange
polynomials. This is because the collocation points of the dierent quadratures
do not lie very far from each other as shown in Table 2.1. One of the dierences
is that the polynomials
i
can have values higher than 1 in the interval [1, 1].
This is shown in Figure 2.7(a), where the violett and green polynomial exceed
32 Chapter 2. Basic Concepts in 1-D
GLL points CGL points
0.285231531 0.309016994
0.765055299 0.809016994
1 1
Table 2.1: Comparison of the collocation nodes of the Gauss-Lobatto-Legendre
quadrature (left) and the Chebychev Gauss-Lobatto quadrature (right) for order
N = 5.
the value of 1 in the vicinity of the collocation point
i
= 0.809016994. Also
shown are the Lagrange polynomials for comparison. In Figure 2.7(d) only one
polynomial of each kind is plotted to illustrate the small but obvious dierence
of the graphs.
The major dierence of the Chebychev-SEM compared to the Lagrange-SEM is
that in deriving the elemental matrices, the integrations occuring in the varia-
tional formulation are not evaluated by a discrete numerical quadrature. This
leads to elemental mass matrices that are fully occupied (i.e. all matrix elements
are non-zero). In this case the elemental mass matrices for a homogenous model
and elements of same length get the following form (Priolo & Seriani [1991]):
M
e
ij
=
e
2
4
N
2
c
i
c
j
N
k,l=0
_
1
c
k
c
l
T
k
(
i
)T
l
(
j
)
1
_
1
T
k
()T
l
() d
_
(2.46)
The value
e
2
= is the Jacobian for elements of same length (see page 20). The
evaluation of the integral over both Chebychev polynomials T
k
()T
l
() leads to:
1
_
1
T
k
()T
l
() d =
_
0 for k + l odd
1
1(k+l)
2
+
1
1(kl)
2
for k + l even
(2.47)
For the same model, the elemental stiness matrices will look like:
K
e
ij
=
e
2
4
e
2
4
N
2
c
i
c
j
N
k,l=0
_
1
c
k
c
l
T
k
(
i
)T
l
(
j
)
1
_
1
T
k
()T
l
() d
_
(2.48)
The additional term
4
e
2
represents the Jacobi-Matrix of the inverse mapping for
this case. Evaluating the integral over the two derivatives T
k
()T
l
() yields:
1
_
1
T
k
()T
l
() d =
_
0 for k + l odd
k l
2
(H
|(kl)/2|
H
|(k+l)/2|
) for k + l even
(2.49)
2.1. Mathematical Formulation of SEM 33
with
H
n
=
_
0 for n = 0
4
n
r=1
1
2r1
for n 1
(2.50)
The drawback of the Chebychev SEM is the non-diagonal structure of the
global mass matrix. Its inversion is therefore no longer trivial and the numerical
scheme for integration in time gets more complicated. The explicit FD scheme
in Equation (2.34) can no longer be used. Priolo & Seriani [1991] use and
Newmark-type central dierence scheme, for 1-D simulations. This is an implicit
two-step scheme, conditionally stable and second order accurate.
Following this theoretical introduction the focus in the next section will be on
the implementation of these mathematical constructs into the program code.
Furthermore some more denitions, like those of the connectivity-matrix and the
assembly process will be given, which were omitted so far. In these explanations
the same order is used, in which the several stages have to be carried out in the
program. Thus it is possible to successively understand the owpath of the code.
Several topics concerning programming as for example the initialisation, reading
of parameters into the program or the construction of certain source signals are
left out in this thesis as they are not relevant for understanding the SEM. Neither
will the FD scheme for the integration in the time domain be explained in more
detail. Information on these topics can be found in the standard literature on
numerical methods for dierential equations.
The parameter le of the 1-D Fortran code is given in appendix A.2, where
it is pointed out which parameters can be changed in the program and why this
may be of relevance.
34 Chapter 2. Basic Concepts in 1-D
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0.2
0
0.2
0.4
0.6
0.8
1
(a) Lagrangian interpolators of order N =
5 based on Chebychev polynomials.
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0.2
0
0.2
0.4
0.6
0.8
1
(b) Lagrange polynomials of degree N =
5.
1 0 1
0.1
0
0.1
(c) Dierence between corresponding
Lagrange-Chebychev interpolators and
Lagrange polynomials (both of order
N = 5).
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1
0.4
0.2
0
0.2
0.4
0.6
0.8
1
(d) Lagrange polynomial
5
6
(red) and
Lagrange-Chebychev interpolator
5
6
(blue).
Figure 2.7: Comparison of interpolating polynomials: (a) All six Lagrangian
interpolators of order N = 5 based on Chebychev polynomials. (b) Lagrange
polynomials of degree N = 5. (c) Dierence between corresponding Lagrange-
Chebychev interpolators and Lagrange polynomials (both of order N = 5). (d)
Small dierence between the Lagrange polynomial
5
6
(red) and the Lagrangian
interpolator derived with Chebychev polynomials.
5
6
(blue).
2.2. Implementation in the Program Code 35
2.2 The Implementation of the Theoretical
Formulations in the Program Code
2.2.1 Structure of the Program
Initialization
Reading of input les:
Parameter le (for details see description in Appendix A.2, page 137)
meshle (if irregular mesh is used)
density and mu data les
Preparations for the calculation of the stiness and mass matrix
Calculation of collocation points and integration weights
Calculation of the rst derivative of the Lagrange polynomials at the
collocation points
Calculation of shape functions
Calculation of Jacobi-Matrices and Jacobians
Generation of a non-equidistant x-vector for run-time plotting of the dis-
placement eld (Gauss-Lobatto-Legendre (GLL) points of each element are
not evenly distributed inside the interval [-1,1])
Calculation of the time step dt depending on the stability criterion
Generation of the source signal (e.g. delta-peak or ricker-wavelet) or
reading of initial displacement eld data
Calculation of the elemental stiness matrices (skipped, if calculation of
forces in time loop is preferred)
Calculation of the elemental mass matrices
Generation of the connectivity-matrix for the 1-D case
Assembly of the global matrices M and if used K
setup of receivers
Inversion of the mass-matrix
Time-Loop: Integration in the time domain (explicit scheme)
36 Chapter 2. Basic Concepts in 1-D
Calculation of forces (if used)
implementation of boundary conditions
Calculation of displacement u
t
i+1
at the next time step
writing seismograms to output les
2.2.2 Preparations for the Calculation of the Stiness and
Mass Matrix
These Preparations comprise mainly the calculation of the appropriate collocation
points
i
in the interval [1, 1] belonging to the associated order N and, based
on this, the computation of the derivation of the Lagrange polynomials at the
above gridnodes. Moreover the weights
i
needed for the GLL quadrature are
determined.
Calculation of the Collocation Points and Quadrature Weights
The collocation points of the GLL quadrature, used for the numerical integration
and also for the Lagrange type interpolation, are dened as the roots of the rst
derivative of a Legendre polynomial P
N
of degree N (Abramowitz & Stegun
[1984]). The Denition of the Legendre polynomials can be found in Bronstein
et al. [1999], page 507:
P
N
(x) =
1
2
N
N!
d
N
d
N
(
2
1)
N
(2.51)
The weights of the Gauss-Lobatto-Legendre quadrature are obtained by
(Abramowitz & Stegun [1984]):
i
=
2
N(N + 1)[P
N
(
i
)]
2
(
i
,= 1)
i
=
2
N(N + 1)
(
i
= 1) (2.52)
In the program code the Legendre polynomials needed for the calculation of the
collocation points and these points themselves are computed by the use of special
Fortran subroutines published by Funaro [1993]. Short descriptions of the
underlying mathematics together with the subroutine code can be found there.
The calculation of the Legendre polynomials in these subroutines is done using
recursion formulae, which can also be obtained from Bronstein et al. [1999],
2.2. Implementation in the Program Code 37
where they have the following form:
P
0
(x) = 1
P
1
(x) = x (2.53)
P
n
(x) =
1
n
[(2n 1) x P
n1
(x) (n 1)P
n2
(x)] n 2
P
0
(x) = 0
P
1
(x) = 1 (2.54)
P
n
(x) =
1
n
[(2n 1)(x P
n1
(x) + P
n1
(x)) (n 1)P
n2
(x)] n 2
P
0
(x) = 0
P
1
(x) = 0 (2.55)
P
n
(x) =
1
n
[(2n 1)(x P
n1
(x) + 2P
n1
(x)) (n 1)P
n2
(x)] n 2
Calculation of the First Derivative of the Lagrange Polynomials at the
Collocation Points
The calculation of the rst derivatives of the Lagrange polynomials is also done
with another subroutine of Funaro [1993], which uses the results of the above
subroutine for Legendre polynomials. In this routine the derivates of all N + 1
Lagrange polynomials
i
are only calculated at the points of interpolation
i
,
which then are stored in a matrix in such a way that in each column i are all the
values of the derivative of one particular polynomial i at all nodes. This means
that the number of the columns is equivalent to the index of the polynomial. The
derivatives are obtained by applying the following formula (see Funaro [1993]):
(
i
) =
N
j=1
d
(1)
ij
(
j
) (2.56)
with
d
(1)
ij
=
_
1
4
N(N + 1) if i = j = 0
P
N
(
i
)
P
N
(
j
)
1
j
if 0 i N, 0 j N, i ,= j
0 if 1 i = j N 1
1
4
N(N + 1) if i = j = N
(2.57)
38 Chapter 2. Basic Concepts in 1-D
Now we have accomplished all necessary preparations we need on the one hand to
construct an adequate x-vector, which we will use to plot the simulated displace-
ments during run-time. On the other hand we make use of these calculations
when generating the elemental stiness and mass matrices.
2.2.3 Implementation of the Domain Decomposition and
Denition of the Mesh in 1-D
To allow for the fact that the integration points are not evenly spaced inside each
element, one will have to generate an appropriate x-vector, i.e. the distances
i+1
i
repeat every N elements of the vector (n
e
times). This means appending
element after element with all its GLL nodes. Figure 2.8 shows an example of
such a vector with N = 8 and n
e
= 3:
ne = 1
ne = 3
ne = 2
0 1 2 3 4 5 6 7 8
Figure 2.8: Illustration of a x-vector with non equidistant collocation points of
the Gauss-Lobatto-Legendre quadratur for N = 8. Three elements are shown
here.
2.2.4 Calculation of Time Step dt using the Stability Cri-
terion
Corresponding to Capdeville [2000] the stability criterion of the SEM for the
one-dimensional wave propagation in a homogeneous medium is:
dt C
dx
min
v
max
= C
dx
min
i
(
j
) of
the Lagrange interpolators needed for the calculation of the elemental stiness
matrix have already been computed in Section 2.2.2. The elements K
e
ij
of the
elemental stiness matrices then are the sum over the integrating points of two
derivatives i und j multiplied by the corresponding weights an the inverse of the
Jacobi-Matrix elements (see Eq. 2.30).
It was shown in the previous section (Sec. 2.1) that the property of the Lagrange
polynomials of Equation (2.22) leads to the very important diagonal structure of
the elemental mass matrices. Therefore the inversion of the global mass matrix,
which is thus also diagonal, is now very easy. Corresponding to Equation (2.28),
the diagonal elements M
e
ii
of the elemental mass matrix contain only the weight
i
of the i-th collocation point multiplied by the associated Jacobian
i
and
density
i
. As mentioned earlier only the non-zero elements of the mass matrix
are stored in a vector, which aects the mathematical matrix multiplication.
This multiplication is easily done in Fortran, which performs an elementwise
multiplication when using the usual -operator (in contrast to matlab). The
result of this -operation is therefore a vector itself. An equivalent vector would
be obtained by a real matrix - vector multiplication (in the mathematical sense)
using a matrix in which only the diagonal elements are ,= 0. This is exactly the
case with the mass matrix M and similarily M
1
. Doing so leads to much lower
memory requirements of the order of 40 to 50 % in 1-D simulations, which may
seem uninteresting in this case but is absolutely inevitable for 3-D calculations.
2.2.6 Generation of the Connectivity Matrix in the 1-D
Case for the Assembly of the Global System
In this section the generation and use of the connectivity-matrix is demonstrated,
which is the key feature for the assembly of global variables for the simple 1-D
case.
The Connectivity-Matrix
The connectivity-matrix contains all information of the 1-D grid concerning the
association of the global nodes to the elements. This can be regarded as a kind
of transformation of the element and local numbering to a complete global num-
bering of the points of the grid. The connectivity-matrix is structured in a way,
that the index of columns equals the index of the associated element and the
corresponding rows are lled with the global number of the collocation points.
In the global numbering the rst node is denoted by 1 (contrary to the local
numbering of the GLL points inside the elements, which starts from 0). In the
40 Chapter 2. Basic Concepts in 1-D
easiest case of N = 1 the connectivity-matrix will look like:
C =
_
1 2 . . . n
g
1
2 3 . . . n
g
_
(2.59)
n
g
is the overall number of global points in the mesh: n
g
= N n
e
+ 1
When the overall number of Spectral Elements is kept the same but a higher
order of the interpolating functions is used, the number of columns remains the
same while the number of rows becomes N +1. Using for example N = 5, C will
become:
C =
_
_
_
_
_
_
_
_
_
1 6 [11 = (3 1)N + 1 . . . [(n
e
1)N + 1]
2 7 = (j 1)N + 1] [(n
e
1)N + 2]
3 8
4 9
.
.
.
5 10
6 [11 = 2N + 1] . . . . . . [(n
e
1)N + N + 1]
_
_
_
_
_
_
_
_
_
(2.60)
2.2.7 Assembly of the Global Linear System using the
Stiness Matrix
After the connectivity-matrix is generated the information stored in its elements
can be used to assemble the elemental vectors and matrices. This is done by
assigning the elements of the elemental matrices (resp. vectors) to the elements of
the global elds in a convenient manner. The correlation can either be expressed
in a program assignment (see Eq. 2.61) or in words as done in Schwarz [1984]:
,,Ganz allgemein beschreibt sich dieser Kompilationsprozess wie folgt:
Steht in der Liste der Nummern der Knotenvariablen an der Position
j die Nummer l und an der Position k die Nummer m, so ist beispiels-
weise der Wert des Elementes k
(e)
jk
der Elementsteigkeitsmatrix K
e
zum Element k
lm
der Gesamtsteigkeitsmatrix K zu addieren. Ferner
ist die Komponente b
(e)
j
des Elementvektors b
e
zur Komponente b
l
des Gesamtvektors b zu addieren.
2.2. Implementation in the Program Code 41
In general this compilation can be described as follows:
If the list of node-variable numbers contains the number l at position
j and the number m at position k then for example the value of the
element k
(e)
jk
of the elemental stiness matrix K
e
has to be added to the
element k
lm
of the global stiness matrix K. Furthermore, the compo-
nent b
(e)
j
of the elemental vector b
e
has to be added to the component
b
l
of the global vector b.
In the program code this relationship will have the following form which should be
read as an program assignement rather than a correct mathematical statement:
K(C
ki
, C
ji
) = K(C
ki
, C
ji
) + K
(i)
kj
M(C
ji
) = M(C
ji
) + M
(i)
j
(2.61)
i is the index of element numbering, j and k are indices of the order N.
The rst relation appears in three loops of indices i, j, k with i = 1, . . . , n
e
and
j, k = 0, . . . , N. For the second one only two loops are needed with i and j being
the same as above.
A possible way of expressing this relation in mathematically correct form is shown
below:
K(C
ki
, C
ji
) = K
(i)
kj
+
n
e
l=1
N
m=0
N
n=0
K
(l)
mn
C
ki
C
ml
C
ji
C
nl
(2.62)
M(C
ji
) = M
(i)
j
+
n
e
l=1
N
k=0
M
(l)
k
C
ji
C
kl
(2.63)
i = 0, . . . , N; j = 1, . . . , n
e
In Sections 2.1.5 and 2.1.6 it was pointed out that the elemental matrices M
e
and K
e
have the form (N + 1, N + 1), where only the diagonal elements of M
e
are non-zero. The process of assembling the global elds now leads to a structure
of (n
g
, n
g
) matrices. In the case of the mass matrix being stored in a vector, the
second relation of Equation (2.61) applies. In order to better understand this
42 Chapter 2. Basic Concepts in 1-D
important procedure it is illustrated in pictorial form for a simple case of N = 2
and n
e
= 3 in Equation (2.64):
M =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
+
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
+
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
(2.64)
The elemental vectors appear to be expanded virtually to the length n
g
of the
global ones. From this it can clearly be seen that the elements M(3) and M(5)
of the global mass vector contain the sum of the values of the corresponding
spectral elements. These matrix elements thus comprise the contributions of two
spectral elements as they are associated with the nodes at the border of these
elements (i.e. these nodes are shared between two elements).
The assembly of the global stiness matrix K for the same N and n
e
as above
then gives:
K =
K
(1)
1,1
K
(1)
1,2
K
(1)
1,3
K
(1)
2,1
K
(1)
2,2
K
(1)
2,3
0
K
(1)
3,1
K
(1)
3,2
K
(1)
3,3
+K
(2)
1,1
K
(2)
1,2
K
(2)
1,3
K
(2)
2,1
K
(2)
2,2
K
(2)
2,3
K
(2)
3,1
K
(2)
3,2
K
(2)
3,3
+K
(3)
1,1
K
(3)
1,2
K
(3)
1,3
0 K
(3)
2,1
K
(3)
2,2
K
(3)
2,3
K
(3)
3,1
K
(3)
3,2
K
(3)
3,3
(2.65)
The stiness matrix therefore has a certain bandwith, which is 2 N + 1, with
some additional elements being zero within this band. A very good introduction
to the assembly and connectivity is presented in the rst chapter of the book on
FEM by Zienkiewicz & Taylor [2000].
The Stiness Matrix in practical use
We can see from Equation (2.65) that only a small band around the diagonal of
the global stiness matrix is occupied and that most of the matrix elements are
0. Therefore it would be very awkward to store all of those latter elements in
the computer memory which are not of any use in the computations as usually
the number of elements by far exceeds the order N of interpolating polynomials.
In addition, most of the computations concerning Equation (2.32) would include
multiplications with 0, which is a nonacceptable waste of CPU resources. In
2.2. Implementation in the Program Code 43
order to circumvent this problem we have to nd a way of reducing the memory
requirements of the stiness matrix whithout changing the calculations.
One way of reducing the memory is to compress the rows of the stiness matrix.
From Equation (2.32) we see that every row of the stiness matrix is multiplied
with the column vector u. f
i
is hereby the i-th element of the vector of internal
forces f
internal
(the same applies to Eq. 2.68).
f
i
=
n
g
j=1
K
ij
u
j
, i = 1, . . . , n
g
(2.66)
i is the index of rows, j is the index of columns.
Thus every line of the stiness matrix is independent from the others and can be
seen as a single row vector.
As the elements containing zero do not change the result of this vector multi-
plication we can omit most of them in every row and reduce those to the size
2 N +1, which is the bandwith of the stiness matrix. Only a few zeros remain
in the truncated matrix.
K=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
.
.
.
K
(i1)
1,1
K
(i1)
1,2
K
(i1)
1,3
K
(i1)
2,1
K
(i1)
2,2
K
(i1)
2,3
0
K
(i1)
3,1
K
(i1)
3,2
[K
(i1)
3,3
+ K
(i)
1,1
] K
(i)
1,2
K
(i)
1,3
K
(i)
2,1
K
(i)
2,2
K
(i)
2,3
K
(i)
3,1
K
(i)
3,2
[K
(i)
3,3
+ K
(i+1)
1,1
] K
(i+1)
1,2
K
(i+1)
1,3
0 K
(i+1)
2,1
K
(i+1)
2,2
K
(i+1)
2,3
K
(i+1)
3,1
K
(i+1)
3,2
K
(i+1)
3,3
.
.
.
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
|
_
44 Chapter 2. Basic Concepts in 1-D
K =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
.
.
.
K
(i1)
1,1
K
(i1)
1,2
K
(i1)
1,3
0 0
0 K
(i1)
2,1
K
(i1)
2,2
K
(i1)
2,3
0
K
(i1)
3,1
K
(i1)
3,2
[K
(i1)
3,3
+ K
(i)
1,1
] K
(i)
1,2
K
(i)
1,3
0 K
(i)
2,1
K
(i)
2,2
K
(i)
2,3
0
K
(i)
3,1
K
(i)
3,2
[K
(i)
3,3
+ K
(i+1)
1,1
] K
(i+1)
1,2
K
(i+1)
1,3
0 K
(i+1)
2,1
K
(i+1)
2,2
K
(i+1)
2,3
0
0 0 K
(i+1)
3,1
K
(i+1)
3,2
K
(i+1)
3,3
.
.
.
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
(2.67)
The last thing we have to do now is to perform the multiplication with the dis-
placement vector in a correct manner, i.e. multiplying the rows of the new
stiness matrix with those elements of u given by the full matrix-vector multi-
plication of Equation (2.32).
f
i
=
N
j=N
K
i(j+N)
u
(i+j)
, i = 1, . . . , n
g
(2.68)
2.2.8 Assembly Process by Calculation of total Forces in-
stead of using the Stiness Matrix
As explained in Section 2.1.7, the easier way to obtain the global matrix equation
is to compute the forces acting on every node of the elements and later summing
these contributions on nodes that belong to more than one element. This latter
stage is the same as the assembly of the vector containing the global mass matrix
elements, which was discussed in the previous section.
At rst only the interior forces of the medium are considered, omitting sources,
which will later be added to the total forces acting on the grid points.
According to the weak formulation for one element (Eq. 2.11) the internal forces
inside one element are computed by the second integral of this equation. Previ-
ously, this led to the stiness matrix. As we want to obtain forces, we start to
derive the stresses acting in the element. Therefore we have to get the strain at
all the collocation points of one element at rst:
u
i
x
=
u
i
i
x
=
j
u
j
j
(
i
) J
1
i
(2.69)
2.2. Implementation in the Program Code 45
Here we have to account for the mapping again (the inverse mapping is applied)
by multiplying with the Jacobi-Matrix of the transformation from global to local
coordinates. In addition, the interpolation is done using the well-known Lagrange
interpolation scheme. The values of the displacement at the points of interpola-
tion are derived using the connectivity-matrix. The displacement u at point
i
of
element j is obtained using:
u
j
(
i
) = u(C
ij
) (2.70)
Now, by applying Hookes Law, we can get the stress at one node:
i
=
i
u
i
x
(2.71)
To nally determine the internal force we have to insert the stress into the integral,
interpolate the test function v, again apply the inverse mapping, and account for
this by multiplication with J
1
k
. Then, integrating numerically by means of the
GLL integration quadraturei leads to:
f
e
int
=
_
e
v
=
_
1
1
v
=
k
[
j
(
k
)]
i
J
k
k
k
=
j
(
k
)
i
J
k
k
k
(2.72)
And, as the interpolation scheme for the force at one node j gives
f(
j
) = f
j
=
i
f
i
ij
=
i
f
i
i
(
j
) , (2.73)
we receive the expression for the forces at each node of one element as:
f
int
(
j
) =
j
(
k
)
i
J
k
k
k
, j = 0, . . . , N (2.74)
The stresses are computed separately, despite of being evaluated under the sum
over k in Equation (2.74). Thus the loops used to calculate the sums over the
N + 1 collocation points are not nested.
46 Chapter 2. Basic Concepts in 1-D
External Forces: Contributions of the Sources
For the calculation of the global force vector, we already determined the internal
forces. Now we just have to add the forces of external excitations of the medium.
We only have to identify the GLL-points on which we impose those sources. To
do so, we test which elements contain sources and look for the closest collocation
point. Then without further normalisation we can add the force associated to
the source location to the internal forces at this collocation point. At the end we
have the total forces at all nodes of each element.
f
j
total
(
i
) = f
j
int
(
i
) +f
j
source
(
i
)
s
e
j
si
, i = 0, . . . , N; j = 1, . . . , n
e
(2.75)
The two Kronecker-deltas symbolize the fact that only elements containing
sources (i.e element j is an source-element, j s
e
) and only those GLL-points
closest to the source location (i = s, where s denotes the GLL-point correspond-
ing to the source) have to be considered. It is obvious, that this is not preferable
as we take a loss of accuracy in locating the source. Another possibilty of im-
plementing sources is to use stresses applied on the medium. These stresses only
have to be added to the internal stresses of the medium. The resulting stresses
then are treated as shown in Equation (2.72). This is the most convenient way
for 3-D applications, as will be shown in Section 3.1.8.
Construction of the Global Force Vector f
The elements of the global force vector can then be maintained by summing
the forces computed on the elements according to the information stored in the
connectivity-matrix. We get:
f (C
ij
) = f
j
(
i
) +
n
e
l=1
N
k=0
f
l
(
k
)
C
ij
C
kl
, i = 0, . . . , N; j = 1, . . . , n
e
(2.76)
This means that only those forces are summed where C
ij
= C
kl
. After having
assembled all variables and elds needed in the global linear system we can solve
Equation (2.33), the reduced version of Equation (2.32), for the displacement u:
M u = f
total
u
t
i+1
= dt
2
(M
1
f
total
) + 2u
t
i
u
t
i1
(2.77)
The calculation of u in each time step thus comprises two steps, in contrast to the
formulation using the stiness matrix. First calculating the forces and afterwards
multiplying by the mass matrix. Although the latter operation only consist of
2.2. Implementation in the Program Code 47
one multiplication per time step
3
, the rst step is computationally expensive. All
operations together take more CPU time than the calculations using the stiness
matrix. Thus, for 1-D applications the latter one is preferable, but as said before,
for 2- or 3-D simulations it is no longer convenient.
3
This is due to the diagonal mass matrix
Chapter 3
The Spectral Element Method
for 3-D Seismic Wave
Propagation
In Chapter 2 the reader was familiarized with the ideas of the SEM by introduc-
ing the theory and concepts of the method for one-dimensional wave propagation
problems. As mentioned earlier, these considerations for 1-D can more or less be
translated one-by-one to 3-D applications. Nevertheless, it is clear that we need
some extensions to compensate for the additional dimensions. In this context the
tensorisation of the interpolation as well as more complex meshing algorithms
have to be mentioned. All this will be explained in this chapter by taking the
same approach as in the 1-D case, but in a shorter and condensed way. Topics
that do not change from 1-D to 3-D will also be repeated as some readers may
want to read only this chapter about 3-D simulations.
In Section 3.1.2 some examples of meshes for 2- and 3-D models are shown,
which were published in the last 10 years. In this way the reader can get an idea
of the present state of the art. The SEM for 2-D simulations is self explanatory
within this chapter, but the most important issues will additionally be presented
for completeness and sometimes it will be more convenient to show gures of
two-dimensional elements instead of three-dimensional ones.
Again, the content of the current chapter is mainly based on publications by
Komatitsch [1997]; Komatitsch & Tromp [1999, 2002a,b]; Komatitsch &
Vilotte [1998], but some others will be mentioned in addition as for example
Komatitsch et al. [2001]. The latter discusses a special kind of spectral ele-
ments, with triangular shape. In the theory of the SEM for multidimensional
problems we will recognise, that the method is originally designed for hexagonal
elements.
49
50 Chapter 3. The SEM for 3-D Seismic Wave Propagation
3.1 The Mathematical Formulation of the Spec-
tral Element Method in 3-D
Denition of the Mathematical Problem
As in the previous chapter we start with the denition of the mathematical prob-
lem we want to solve. Therefore we state the elastodynamic equation for three-
dimensional wave propagation (after Udias [1999]):
(x)
2
t
2
u(x, t) (x, t) = f (x, t) (3.1)
Attenuation and anisotropy are not included here, but they both pose no problem
to the SEM as stated in Chapter 2.
The individual terms are all volume forces as described in Equation (2.2). This
formula can also be expressed in a shorter way using the sum convention over
repeated indices (see Udias [1999] or Aki & Richards [2002]):
2
u
i
t
2
ij
x
j
= f
i
u
i
ij, j
= f
i
i = 1, 2, 3 (3.2)
Equation (3.2) is therefore written separately for all components of u. The comma
denotes a spatial derivative in the direction given by the following index.
The components of the stress tensor
ij
can be computed using the general form
of Hookes Law:
ij
= c
ijkl
kl
= c
ijkl
u
k, l
(3.3)
In the same way as in Chapter 2, we will derive the variational form of the wave
equation with three spatial coordinates. From that we can formulate the SEM by
rst dividing the Model Domain
n
d
1
into hexagonal elements (meshing), then
mapping them onto a standard interval, afterwards determining the matrices on
elemental level and later for the global system (in the course of the assembly).
3.1.1 The Weak Formulation of the Elastodynamic Equa-
tion in 3-D
As we need the integrated form of the wave equation we start by multiplying
Equation (3.1) with a time-independent test function v(x), which is now also a
1
n
d
is the number of dimensions and
n
d
is here dened as the n
d
tensor product of one-
dimensional domains :
n
d
= for n
d
= 3; is the tensor product, for details see
Bronstein et al. [1999], page 263
3.1. Mathematical Formulation of the SEM in 3-D 51
vector. In the present formulation of Equation (3.1) the following considerations
hold for any elastic medium including inhomogeneity and anisotropy. When
attenuation shall be included the stresses have to be computed in a dierent way
(see Komatitsch & Tromp [1999]). After multiplication with v we integrate
over the whole domain and get:
_
n
d
v u dx
_
n
d
v dx =
_
n
d
v f dx (3.4)
u, f , and are considered to depend on x and t in the following without further
explicit declaration. v is implicitly considered to depent on x and only on t.
In addition
n
d
will be denoted from now on throughout the whole chapter.
If we now integrate the second term on the left side of Equation (2.6) by parts
and denote the boundary of by , we obtain:
_
v u dx
_
v dx +
_
v dx =
_
v f dx (3.5)
Now we apply the same stress conditions as we used for 1-D problems, namely the
free surface or Neumann-conditions with stresses being zero at the boundaries:
= 0 (3.6)
Thus the integral over vanishes, which leads to the nal form of the weak
formulation which we will use in the following:
_
v u dx +
_
v dx =
_
v f dx (3.7)
The application of other boundary conditions was shown for the 1-D case in
Section 2.1.9, where also some references to papers on this topic were given.
Details on boundary conditions for the 3-D case will not be presented in the
course of this thesis.
Again we have the basis for the SEM with which we can start by rst meshing
the model. The domain decomposition is shown in the next subsection.
3.1.2 Domain Decomposition and Mapping Functions
As mentioned earlier, the model domain has to be divided into n
e
elements.
The idea behind methods using elements is to approximate the model as good
as possible by rst dening several subregions. These subregions may be
for example a sediment basin overlaying some bedrock, or in a whole Earth
model there may be the regions crust, mantle, outer core and inner core (see
Komatitsch & Tromp [2002a]). This leads to interfaces inside the model that
52 Chapter 3. The SEM for 3-D Seismic Wave Propagation
exactly represent the interfaces in the geological model. When now discretising
each subregion, the interfaces as well as the free surface (with topography) or
artical boundaries (where absorbing boundary conditions shall be applied) are
represented by the faces of elements, which can be curved. How to obtain these
curvatures and why the SEM almost exclusively uses hexagonal elements will be
explained in the following.
Figure 3.1 illustrates the idea of meshing a 2-D structure with curved interfaces.
In the middle layer a special kind of size doubling is used to ensure a conforming
mesh. This property is important to obtain a diagonal mass matrix in 2- and
3-D SEM simulations. This doubling algorithm was used by Komatitsch &
Tromp [2002a,b] to mesh the entire globe.
Figure 3.3 shows a simple example of 3-D meshing of a cube divided into several
dierently shaped hexaedral elements. Figures 3.4 and 3.5 show several examples
of meshing geological structures.
Figure 3.1: Two dimensional mesh of curved structures using size doubling in the
middle layer.
Figure 3.2: A cubed sphere
mesh of the globe. (Taken
from Komatitsch & Tromp
[2002a]).
Figure 3.3: Illustration of a
three-dimensional meshing of a
cube. (Taken from M
uller-
Hannemann [2000]).
3.1. Mathematical Formulation of the SEM in 3-D 53
Figure 3.4: Meshing of geological structures in three-dimensional models based
on hexaedra. (Taken from Gable & Cherry [2000]).
Figure 3.5: Approximation of curved topography by hexaedrons. (Taken from
Komatitsch et al. [2003a]).
54 Chapter 3. The SEM for 3-D Seismic Wave Propagation
After dividing the model domain into subdomains
e
, the integrations of Equa-
tion (3.7) can be performed independently on each of these subdomains. Thus
we can state the weak formulation separately for all n
e
elements.
_
e
v u dx +
_
e
v u dx =
_
e
v f dx (3.8)
for e = 1, ..., n
e
.
Mapping Functions - Transformation of Physical Coordinates onto a
Standard Interval
In Chapter 2 we proceeded by dening a coordinate transformation for each
element in such way that all elements had locally dened coordinates :
[1, 1] = . This mapping allowed us to handle all subdomains in the same
manner, which simplied calculations a lot.
Doing the same in 3-D is also convenient and straight forward. Each element
domain
e
is mapped onto a three-dimensional reference cube
n
d
= =
, where is again the one-dimensional standard interval [1, 1]. In the most
general case the mapping functions F
e
:
e
of the elements are dened by:
F
e
() = x
e
() =
n
a
a=1
N
a
() x
e
a
x
e
(, , ) =
n
a
a=1
N
a
(, , ) x
e
a
(3.9)
x
e
a
are the n
a
anchor points of the e-th element. Depending on the choice of
the order N of Lagrange polynomials, a 3-D element can either contain 8 nodes
(N = 1) at each of its corners or 27 nodes (N = 2) (see Fig. 3.8). The rst have
straight edges and faces, whereas the latter can have curved ones.
Sometimes, when using curved elements, it is possible to omit the anchor nodes in
the middle of faces (white quadrangles in Fig. 3.8) and the middle of the volume
(white triangle in Fig. 3.8).
Figure 3.6 illustrates the mapping considering as an example one straight and one
curved 2-D element, which are both transferred to the reference square [1, 1]
[1, 1], only the number of anchor points is diering.
The shape functions N
a
are n
d
-products of Lagrangian polynomials of degree
either N = 1 for straight edged elements or N = 2 for curved elements. These
polynomials were shown in Figure 2.2 and 2.3.
The shape functions for a 2-D four node element based on Lagrange polynomials
3.1. Mathematical Formulation of the SEM in 3-D 55
1
1
1
0
1
1
1
1
0
1
Figure 3.6: Mapping of 2-D elements on the reference square
2
= [1, 1][1, 1].
Left: straight element with four anchor nodes. Right: curved element with nine
anchor nodes.
of degree N = 1 are as follows:
N
1
(, ) =
1
0
()
1
0
() N
2
(, ) =
1
1
()
1
0
()
N
3
(, ) =
1
0
()
1
1
() N
4
(, ) =
1
1
()
1
1
() (3.10)
For a curved 9 node 2-D element the shape functions are (Lagrange polynomials
have degree N = 2 here):
N
1
(, ) =
2
0
()
2
0
() N
2
(, ) =
2
0
()
2
1
()
N
3
(, ) =
2
1
()
2
0
() N
4
(, ) =
2
1
()
2
1
()
N
5
(, ) =
2
1
()
2
2
() N
6
(, ) =
2
2
()
2
1
()
N
7
(, ) =
2
0
()
2
2
() N
8
(, ) =
2
2
()
2
0
()
N
9
(, ) =
2
2
()
2
2
() (3.11)
The shape functions of three-dimensional elements then are triple products of the
corresponding Lagrange polynomials.
56 Chapter 3. The SEM for 3-D Seismic Wave Propagation
Figure 3.7: Mapping of a 2-D elements from the reference square. The element
is shown with the Gauss-Lobatto-Legendre collocation points of integration for
the order N = 8. (This gure is taken from Komatitsch [1997], page 50).
For eight node elements:
N
1
(, , ) =
1
0
()
1
0
()
1
0
() N
2
(, , ) =
1
1
()
1
0
()
1
0
()
N
3
(, , ) =
1
0
()
1
1
()
1
0
() N
4
(, , ) =
1
0
()
1
0
()
1
1
()
N
5
(, , ) =
1
1
()
1
1
()
1
0
() N
6
(, , ) =
1
0
()
1
1
()
1
1
()
N
7
(, , ) =
1
1
()
1
0
()
1
1
() N
8
(, , ) =
1
1
()
1
1
()
1
1
() (3.12)
For 27 node elements:
N
1
(, , ) =
2
0
()
2
0
()
2
0
() N
2
(, , ) =
2
1
()
2
0
()
2
0
()
N
3
(, , ) =
2
0
()
2
1
()
2
0
() N
4
(, , ) =
2
0
()
2
0
()
2
1
()
.
.
.
.
.
.
N
26
(, , ) =
2
1
()
2
2
()
2
2
() N
27
(, , ) =
2
2
()
2
2
()
2
2
() (3.13)
Figure 3.1.2 shows two shape functions of a two-dimensional 9 node element with
curved faces.
With the general denition of the shape functions (Eq. 3.9), we can now easily
obtain the Jacobi matrix for the 3-D case. It will be needed together with its
determinant, the Jacobian, when we will derive the elemental matrices.
3.1. Mathematical Formulation of the SEM in 3-D 57
0
+1
+1
+1
0
+1
+1
+1
Figure 3.8: Mapping of 3-D elements on the reference cube
3
= [1, 1][1, 1]
[1, 1]. Left: 8 node element with straight edges and faces. Right: 27 node
element with curved edges and faces.
58 Chapter 3. The SEM for 3-D Seismic Wave Propagation
(a) Shape function N
7
.
(b) Shape function N
2
.
Figure 3.9: Shape functions of two-dimensional curved elements based on 9 anchor
nodes.
3.1. Mathematical Formulation of the SEM in 3-D 59
The Jacobi-Matrix and the Jacobian for 3-D elements
For the denition of a proper mesh, the Jacobi-Matrix and the Jacobian have
to fullll certain restriction: the unit vector being normal to the surface of the
element has to be positive outwards and the Jacobian must never vanish.
On the basis of Equation (3.9) the elements of the Jacobi matrix, which now is a
3 3 matrix, are computed using the shape functions of the mapping:
J
e
=
dF
e
()
d
=
dx
e
()
d
=
n
a
a=1
dN
a
()
d
x
e
a
(3.14)
Writing the full matrix:
J =
_
_
_
x()
x()
x()
y()
y()
y()
z()
z()
z()
_
_
_
(3.15)
Again the superscript e, denoting the number of the considered element, is
omitted here.
Thus all we need to do is to calculate the derivatives of the shape functions of
Equations (3.10),(3.11),(3.12) and (3.13). This calculation means only taking the
derivative of order N = 1 (see also Eq. 2.14) or N = 2 Lagrange polynomials,
which is very simple. These polynomials and their derivatives are:
N = 1 :
1
0
() =
(+1)
1 (+1)
=
1
2
1
0
=
1
2
1
1
() =
(1)
1 (1)
=
+ 1
2
1
1
=
1
2
(3.16)
(3.17)
60 Chapter 3. The SEM for 3-D Seismic Wave Propagation
N = 2 :
2
0
() =
(+1)
1 (+1)
(0)
1 (0)
=
2
2
2
0
=
1
2
2
1
() =
(1)
0 (1)
(+1)
0 (+1)
= 1
2
2
1
= 2
2
2
() =
(1)
1 (1)
(0)
1 (0)
=
2
+
2
2
2
= +
1
2
(3.18)
The Jacobian then gets the following form for 3-D elements:
= detJ =
(x, y, z)
(, , )
x()
x()
x()
y()
y()
y()
z()
z()
z()
(3.19)
It appears that the Jacobian describes the change in volume of the element when
transforming it from global to local coordinates (see Zienkiewicz & Taylor
[2000], page 209):
dx dy dz = d d d (3.20)
3.1.3 Interpolation of the Functions on the Elements
The interpolation of the continous functions on the volume of the element is done
similar to the 1-D case (Eq. 2.23), using a Lagrangian interpolation scheme. We
choose the interpolating points, on which also the Lagrange polynomials are de-
ned (see Eq. 2.21), to be the same as the collocation points of the GLL quadra-
ture of integration. This will lead to a diagonal mass matrix in almost the same
manner as in the 1-D case. The derivation of the mass matrix follows in Section
3.1.5.
In the case of three-dimensional interpolation we obtain Lagrangian interpolants
L dened on the reference cube, which are triple products of one-dimensional
Lagrange polynomials as they dene a tensorial basis
i
j
k
of the space in
which the functions to be interpolated are dened (remember: the order N of the
interpolating polynomials is typically chosen between 4 and 8). This characteris-
tic is also known as the tensorisation of the interpolation scheme. It means that
all coordinate directions are interpolated independently from the others. This is
only true for hexaedral elements but not for tetrahedrons. That is why the SEM
is mainly used together with elements that can be mapped on a cube. The inter-
polating three-dimensional polynomials are also said to have the degree N when
3.1. Mathematical Formulation of the SEM in 3-D 61
L
N
ijk
=
N
i
N
j
N
k
For a scalar function g the three-dimensional interpolation
then yields:
g()
N
i,j,k=0
g(
i
,
j
,
k
) L
ijk
()
g()
N
i,j,k=0
g(
i
,
j
,
k
)
i
()
j
()
k
()
=
N
i,j,k=0
g(
i
,
j
,
k
)
i
()
j
()
k
()
=
N
i,j,k=0
g
ijk
i
()
j
()
k
() (3.21)
The superscript
N
of the polynomial degree of and L is again omitted as in
most parts of the thesis. It follows directly from
i
(
j
) =
ij
(Eq. 2.22) that:
L
ijk
(
l
,
m
,
n
) =
il
jm
kn
(3.22)
For a three-component vector the interpolation is of the form:
u
e
()
3
l=1
l
N
i,j,k=0
u
e
(
i
,
j
,
k
)
i
()
j
()
k
()
=
3
l=1
l
N
i,j,k=0
u
e
ijk
i
()
j
()
k
() (3.23)
The interpolation scheme is again exact on all the collocation points
ijk
= (
i
,
j
,
k
) as the Lagrange polynomials assume the value 1 at these
points (see Eq. 2.22) and thus also L (Eq. 3.22). For a more compact notation
we dene u
e
ijk
= u
e
(
i
,
j
,
k
). And the same that was mentioned for the 1-D
case, is valid here: this interpolation can also be used in the code to calculate the
values of a function at any arbitrary point inside the element. It is for example
used to calculate the displacement at some receiver, which is most unlikely to be
exact on one of the collocation points.
62 Chapter 3. The SEM for 3-D Seismic Wave Propagation
The interpolation of partial derivations of a function is performed by computing
the derivative of one or more of the Lagrange polynomials:
u
e
()
u
e
(, , )
N
i,j,k=0
u
e
ijk
i
()
j
()
k
()
u
e
()
u
e
(, , )
N
i,j,k=0
u
e
ijk
i
()
j
()
k
()
u
e
()
u
e
(, , )
N
i,j,k=0
u
e
ijk
i
()
j
()
k
() (3.24)
The way how to obtain these derivations
i
in practice was explained in Section
2.2.2.
The gradient in global x coordinates of a function g then can be maintained by:
x
g(x())
3
l=1
x
l
l
g(x(, , ))
=
3
l=1
x
l
N
i,j,k=0
g
ijk
[
i
()
j
()
k
()
l
+
+
i
()
j
()
k
()
l
+
i
()
j
()
k
()
l
] (3.25)
(see for example Komatitsch & Tromp [1999]).
Here we have to use the Jacobi matrix (
l
=
x
l
) of the inverse mapping function
to account for the coordinate transformation during derivation. This will also be
used when calculating the forces acting on the gridnodes.
When evaluating Equation (3.25) at any of the GLL points x(
) it reduces
to:
x
g(x(
))
3
l=1
x
l
_
N
i=0
g
i
i
(
)
l
(
) +
+
N
j=0
g
j
j
(
)
l
(
) +
+
N
k=0
g
k
k
(
)
l
(
)
_
(3.26)
3.1. Mathematical Formulation of the SEM in 3-D 63
We can see that for this calculaton we need the nine elements of the Jacobi-
Matrix
i
x
j
, i, j = 1, 2, 3 with
1
= ,
2
= ,
3
= of the inverse mapping.
These interpolations will then be used for the derivations of the elemental mass
matrix M
e
and the forces f
e
at the sampling points of the element.
3.1.4 Integration of Functions over the Volume of the Ele-
ment
The next step on the way to the matrix formulation for three-dimensional si-
mulations is to dene a numerical integration scheme to translate the integrals
of Equation (3.8) into nite sums. In Chapter 2 we have introduced the Gauss-
Lobatto-Legendre quadrature of integration, which is dened on those collocation
points which we chose for the interpolation. This combination of choice of inter-
polating points together with the GLL integration quadrature led to the exact
diagonal shape of the mass matrix in 1-D. In the next section we will see how the
diagonality is also obtained in the 3-D case.
The GLL integration rule for the 3-D case reads as follows:
_
g()d =
1
_
1
1
_
1
1
_
1
g(, , ) d d d
i,j,k=0
i
j
k
g(
i
,
j
,
k
)
=
N
i,j,k=0
i
j
k
g
ijk
(3.27)
i
are the weights of the GLL quadrature, which we already know from the 1-D
case. g() is again an arbitrary function dened on the interval .
The GLL quadrature is exact for polynomials up to degree 2N 1 (see Ko-
matitsch & Tromp [1999] or Zienkiewicz & Taylor [2000],page 219). It
has been shown that even for a simple homogeneous undeformed element, the
integration involves a product of two polynomials of order N. One results from
the interpolation of the displacement, the other one results from the test function.
Therefore, the integration of a polynomial of order 2N can never be exact. In
addition, introducing heterogeneities and deformed elements leads to even higher
errors in the solution. But in the SEM this price is paid for the sake of an exactly
diagonal mass matrix.
64 Chapter 3. The SEM for 3-D Seismic Wave Propagation
3.1.5 The Elemental Mass Matrices and Their Diagonal-
ity
We have seen before that in the SEM one pays a high price in terms of accuracy
in the integration to obtain a mass matrix which is exactly diagonal. As in the
previous chapter, all discussed features are successively applied to the rst integral
of Equation (3.8) to derive the expression for the elements of the elemental mass
matrix. In the following only one component of the vectors (e.g. u = u
x
instead
of u) that appear under the integrals is considered. This is possible, because the
multiplication of the test function v with u results in:
v u =
3
i,j=1
v
i
u
j
x
i
x
j
=
3
i,j=1
v
i
u
j
ij
=
3
i=1
v
i
u
i
(3.28)
Therefore, we can treat each component of the displacement separately as we can
choose the test function for every component u
i
to be v = (
1i
,
2i
,
3i
).
The equations are more concise this way as we can get rid of the rst sum in
Equation (3.23), which would appear twice in the calculation of the mass matrix.
The rst one in conjunction with the interpolation of the displacement, and the
second one for the interpolation of the test function. In addition, the number of
indices used would get too high. The other components then can be determined
likewise.
Considering the integral over the volume of the element (
e
) gives:
mapping, Jacobian is needed
_
e
(x) v(x) u(x) dx =
_
() v() u() () d
interpolation of v and u
1
_
1
1
_
1
1
_
1
(, , )
_
N
i,j,k=0
v
ijk
i
()
j
()
k
()
_
_
N
l,m,n=0
u
lmn
l
()
m
()
n
()
_
(, , ) d d d
GLL quadrature
r,s,t=0
_
rst
r
s
t
_
N
i,j,k=0
v
ijk
i
(
r
)
j
(
s
)
k
(
t
)
_
_
N
l,m,n=0
u
lmn
l
(
r
)
m
(
s
)
n
(
t
)
_
rst
)
_
(3.29)
3.1. Mathematical Formulation of the SEM in 3-D 65
For simplication, all functions as for example u(
l
,
m
,
n
) are again expressed
by using subscripts u
lmn
directly.
Utilizing similar factorizations as in Chapter 2 we obtain:
N
r,s,t=0
_
rst
r
s
t
_
N
i,j,k=0
v
ijk
i
(
r
)
j
(
s
)
k
(
t
)
_
_
N
l,m,n=0
u
lmn
l
(
r
)
m
(
s
)
n
(
t
)
_
rst
)
_
=
=
N
r,s,t=0
_
rst
r
s
t
rst
_
N
i,j,k=0
ir
js
kt
_
_
N
l,m,n=0
u
lmn
lr
ms
nt
__
=
N
l,m,n=0
_
u
lmn
_
N
i,j,k=0
N
r,s,t=0
rst
rst
rst
ir
js
kt
lr
ms
nt
__
(3.30)
The weights of the integration quadrature in each direction
r
s
t
were com-
bined to
rst
. As there are no restrictions to the choice of v we have set v
ijk
= 1
and by using Equation (2.22) we have evaluated the term on the left side and
obtained the Kronecker-delta distributions. By further arrangement of the sums
we get:
N
l,m,n=0
_
u
lmn
_
N
i,j,k=0
N
r,s,t=0
rst
rst
rst
ir
js
kt
lr
ms
nt
__
=
=
N
l,m,n=0
u
lmn
N
i,j,k=0
ijk
ijk
ijk
li
mj
nk
=
N
l,m,n=0
u
lmn
N
i,j,k=0
ijk
ijk
ijk
(lmn)(ijk)
=
(N+1)
3
=1
u
(N+1)
3
=1
= u
M
e
(3.31)
66 Chapter 3. The SEM for 3-D Seismic Wave Propagation
Here we used = lmn and = ijk, with , = 1, . . . , (N +1)
3
, since all Roman
indices are in the range of 0, . . . , N.
(lmn)(ijk)
=
li
mj
nk
was used to get the
appropriate expression for M as a matrix. The superscript
e
of the mass matrix
only indicates that this is the elemental mass matrix, whereas u = u
e
was not
explicitly specied. On the last line of Equation (3.31) we have used the implicit
sum convention over repeated indices.
M
e
=
ijk
ijk
ijk
(3.32)
i, j, k = 0, . . . , N and , as above
A unique transformation between , and ijk can be written as:
=
N
i,j,k=0
(i + 1) (j + 1) (k + 1) (3.33)
Again the mass matrix is exactly diagonal, which is the desired characteristic for
the SEM as the inversion of the mass matrix is therefore trivial. And computer
memory can be saved to a great extent as was stated earlier, when storing only
the diagonal elements of the mass matrix in a vector.
3.1.6 Calculation of Forces in 3-D
Unlike in Chapter 2, the derivation of the stiness matrix for 3-D applications will
not be described in detail, since it is not used in practice in the SEM. As discussed
in Section 2.2.8 it is much easier to calculate step by step the forces acting on
the nodes of an element separately. To do so we will rst have to determine the
nine elements of the strain tensor at a given point
= (
), i.e. the
displacement gradient u (see Eq. 3.26):
i
u
(j)
(x(
))
_
N
l=0
u
(j) l
l
(
)
_
i
(
)
+
_
N
m=0
u
(j) m
m
(
)
_
i
(
)
+
_
N
n=0
u
(j) n
n
(
)
_
i
(
) (3.34)
u
(j)
is the j-th component of the displacement vector u at the interpolating
point (
).
3.1. Mathematical Formulation of the SEM in 3-D 67
The next step is the calculation of the stress tensor by applying the generalised
Hookes Law (Eq. 3.3):
(x(
)) = c (x(
)) u(x(
))
The index notation of this expression is written in Equation (3.3).
The evaluation of the integrand v of the second integral of Equation (3.8)
at one node yields (v has three components and is a 3 3 tensor):
v =
3
i,j=1
ij
j
v
i
3
i,k=1
_
3
j=1
ij
k
_
v
i
k
=
3
i,k=1
B
ik
v
i
k
(3.35)
with
B
ik
=
3
j=1
ij
k
(3.36)
Now we can apply the interpolation scheme for
v
i
k
and introduce the GLL inte-
gration quadrature (i.e. evaluating the interpolation of
v
i
k
at the points of the
GLL quadrature; remember Equation (3.26)) and obtain:
_
e
v dx
1
_
1
1
_
1
1
_
1
_
3
i,k=1
B
ik
v
i
k
_
d d d
i=1
v
(i)
_
l=0
l
l
B
(i1) l
(
l
)
+
m=0
m
m
B
(i2) m
(
m
)
+
n=0
n
n
B
(i2) n
(
n
)
_
(3.37)
After all these calculations on the elemental level we can now focus on the global
system of equations for numerical integration of the weak form of the wave Equa-
tion (Eq. 3.7).
68 Chapter 3. The SEM for 3-D Seismic Wave Propagation
3.1.7 The Assembly of the Global Linear System
The last step to complete the numerical spatial integration of the SEM is to
combine the expressions for the elements to the often addressed global linear
system of equations. The process of assembling the elements was introduced in
Section 2.2.6 of the previous chapter. The idea of transforming a global to a
local numbering and vice versa was demonstrated there and is also applied in
3-D. Nevertheless, it is clear that the additional dimensions signicantly increase
the diculties encountered during this operation. In 1-D only one node was
shared between two elements, which led to a rather simple connectivity-matrix.
In 2-D the elements share all of their nodes on the edges and in 3-D the number
of shared nodes far exceeds the number of nodes lying inside one element and
being unaected by other elements. For an order N = 4, we have elements
containing (N + 1)
3
= 125 collocation points, of which 98 belong to more than
one element, and only 27 being separated from others. Four of those nodes,
which are lying on the corners of the cube, belong to eight elements, 40 nodes
are on the edges (without those on the corners) and belong to four elements and
additional 54 nodes belong to two elements as they are lying on the faces of the
elements. This example clearly demonstrates the complexity one has to deal
with when reassembling the elements of the mesh.
Figure 3.10 shows four quadratic elements attached at four edges. The black
circles indicate the shared nodes.
Figure 3.10: Illustration of the connection of 2-D elements at four of their edges.
The node in the middle, displayed as a white square, is shared by all four of them.
Concerning the practical implementation of the assembly for three-dimensional
3.1. Mathematical Formulation of the SEM in 3-D 69
meshes further detail will not be given as the complexity of this topic
lies far outside the frame of this thesis and is only of technical impor-
tance. A solution for this problem may either be found in publications
on classical FEM (Zienkiewicz & Taylor [2000]; Hughes [1987]) or in
the SEM code for global seismic wave propagation written by Dimitri Ko-
matitsch and co-workers, where information about the connectivity is obtained
by some special sorting routines. The code is available for noncommercial sci-
ence from http://www.gps.caltech.edu/~jtromp/research/downloads.html
(CalTech [2002]).
3.1.8 Implementation of sources in 3-D
The implementation of sources in the SEM is very convenient. We have already
seen in Section 2.2.8 that we can simply add external stresses to the stresses
derived from the displacement gradient using Hookes Law. In most cases of
earthquake studies, the source mechanism is described using the moment tensor.
When simulating real events, we can use these moment tensors. A detailed math-
ematical formulation is given in Komatitsch & Tromp [1999].
Very recently seismologists also have made eorts to implement rupture mech-
anisms into SEM (Ampuero et al. [2003]). Simulation of dynamic rupture is
probably one of the most important issues in seismology in the coming years.
Part II
Results of the Simulations -
Evaluation and Comparisons
71
Chapter 4
Evaluation of the SEM in 1D
One of the aims of this work was to gain knowledge on the performance and ac-
curacy of the spectral element method compared to standard and improved nite
dierence methods. Optimal FD operators (Geller & Takeuchi [1995]) are of
the latter kind and were investigated in the course of an other diploma thesis at
our institute (Metz [2003]). Therefore, the main interest was to compare these
two methods in case of 1-D simulations to nd out about advantages and disad-
vantages of either kind. It would have taken much longer to set up appropriate
codes for 3-D modelling, than is given for a diploma thesis. Optimal operators
are nite dierence operators, that are especially designed to minimize the error
of the numerical dierentiation. Further details on this method can be found in
Metz [2003] and references therein. The OPO used in this study are optimized
3-point FD operators.
Because the SEM allows for several dierent time integration schemes, a com-
parison between those was performed before comparing the best
1
one with the
OPO. This included also a test which order of interpolating polynomials leads to
the best results.
As the comparisons presented in Section 4.2 are based on seismograms of 1-D
simulations, some examples will be given in Section 4.1 rst. In addition, several
snapshots of simulations with dierent boundary conditions are shown. The serial
SEM code used for these simulations is printed in the Appendix A.2. The code
was compiled on Linux 2.4.18 using the intel fortran compiler version 6.0 by
intel r _. The dierent simulations, including those with OPO, were performed on
an AMD Athlon XP 1800+ Processor. Attention was paid to run the simulations
used for comparison
2
on exactly the same machine.
1
in terms of performance (see descriptions later on)
2
especially the CPU benchmarking in Section 4.2
73
74 Chapter 4. Evaluation of the SEM in 1D
4.1 Snapshots and Seismograms of 1-D SEM Si-
mulations
In the following, some examples of snapshots and seismograms of 1-D simula-
tions are presented. All these simulations were performed with the program
given in the Appendix A.2. The order of Lagrange polynomials was N = 5
and a total of n
e
= 200 elements was used. The Length of the model was 1 meter.
Figure 4.1 shows a snapshot and one seismogram obtained in a homogeneous
model using a point source acting only one time step. The source time function
is therefore a delta-peak and the medium is excited at all frequencies from 0
up to the Nyquist frequency. This is the frequency given by half the sampling
frequency,
N
=
1
2dt
.
The analytical solution for the displacement in a homogeneous medium can be
expressed by the Heaviside function with arrival time t
a
=
d
=
x
dx
dx
=
ngp
ppw
, (4.1)
with dx) the mean grid spacing, the wavelength and x the propagated distance.
ngp is the number of grid points. The denominator of the last term appears to
4.2. Methodology of the Comparisons of SEM and OPO 79
be a good measure of the spatial resolution and is expressed as the grid points
per minimum wavelength:
ppw =
min
dx)
(4.2)
Thus, the error depends on ppw and npw. The measure of the accuracy used
here, is the so-called relative solution error, which can be obtained in the following
way:
(ppw, npw) =
(u
analytical
u
synthetic
)
2
dt
u
2
analytical
dt
(4.3)
On the one hand the CPU cost depends on the spatial resolution. On the other
hand, a higher spatial resolution of a given model leads to higher accuracy, but
also to more gridnodes in the model. This in turn increases the CPU time per time
step (cpt). We can therefore dene the additional CPU time it takes for every
additional gridpoint, which will be called eort factor here, and is denoted by
ef:
ef =
cpt
ngp
(4.4)
as the cpt per model size is
cpt
ngp
. Finally, the overall CPU cost per given model
size ngp = npw ppw can be expressed by:
CPUcost = npw ppw ef (4.5)
To calculate the CPU cost in practice we have to perform two steps. In the rst
step we calculate the error as a function of ppw and npw ( = (ppw, npw)).
This dependence can be plotted as a surface as done in Figure 4.4(a). Then the
values are rearranged to obtain the ppw needed to limit the error to a certain
value in distance npw: ppw = ppw(, npw). Figure 4.4(b) illustrates this case.
In a second step, the mean CPU time per time step is calculated for several
models of dierent size. From Figure 4.5 one can see that this leads to a more
or less linear relation. The eort factor ef is obtained as the slope of the graph
given by cpt against ngp.
The results of these calculations can be found in the next section.
For the rst step, a model was set up for both methods with 2341 grid nodes,
of which 1200 belonged to the actual model. The rest served for simulating
an innitely long medium to prevent reections from the articial boundaries.
To obtain this number of points in the SEM an appropriate number of elements,
depending on the order of polynomials, was used. A value of 0.82 for the Courant
80 Chapter 4. Evaluation of the SEM in 1D
number was chosen in all SEM simulations, which is the highest number that can
be used to achieve stable solutions. Three items have to be emphasized at this
point:
The distance between grid points varies in the SEM. Therefore all that is
said about any relation between number of gridpoints and length corre-
sponds to the mean distance.
Boundary eects did not play a role as the time that was simulated was
chosen to be shorter than it takes the reected waves to arrive at the receiver
being nearest to the boundary.
The Courant value of 0.82 in SEM leads to an eective Courant value of
around 0.5 for order N=5 spectral elements. This is due to the fact that
the stability criterion uses the minimum grid distance, whereas the mean
grid spacing was used for the eective Courant number.
The source was located one third of the overall length away from the left end,
exactly on the boundary of two elements. Thus, the index of the corresponding
grid node was slightly dierent for dierent polynomial degrees. The source
location marks the left end of the receiver array. A total of 240 receivers were
located in the model, spread over the 1200 points mentioned. The mean distance
between the receivers was thus 5 times the mean grid spacing dx). The rst
receiver was located 5dx) away from the source, the last at 240 5dx).
The source acting on the medium was a point source with a delta-peak in time
to enable convolution of dierent source time functions after the simulation was
completed. The evaluation was carried out with several Matlab routines.
This special setup allowed for a maximum of 30 propageted wavelengths (npw),
with 40 points per wavelength. Frequencies were chosen such that the simulations
could be evaluated in the range of 5 up to 40 ppw.
Two dierent kinds of models were simulated. One homogeneous model and one
two layer model where the wave velocity was changing in the middle of the
receiver array, again, the interface lying exactly on a boundary of elements in
the SEM. The ratio of velocities was chosen to be
1
2
= 0.7, with
1
being the
wave velocity in the left part of the model.
For both models an analytical solution could be obtained at every receiver. Thus
it was possible to calculate the relative solution error of the simulations. In
practice, the value of is multiplied by 100 to obtain percentages.
It is worth mentioning that the values of ppw used for the preliminary results
of this study were calculated using the dominant frequency
0
of the convolved
ricker wavelet, in contrast to many publications, in which a value of
max
= 2.5
0
is used. At approximately this frequency the radiated energy drops below 5 % of
4.3. Results of the Comparison 81
the total energy of the wavelet (Komatitsch & Vilotte [1998]). Therefore, the
error may be signicantly higher than expected for a value of associated ppw.
To avoid confusion and to be consistent with earlier publications, the value of
ppw dened by the minimum wavelength, and thus calculated using the maximum
frequency, was used for the comparisons.
4.3 Results of the Comparison
In the rst part of this section the CPU benchmark of the SEM in displacement
formulation
4
together with the Optimal 3-point FD Operators is shown. The re-
sults of the CPU benchmark of all further SEM types are summed in Table 4.1. In
a second part, comparisons between dierent time scheme implemenations for the
SEM are persented, followed by comparisons of SEM using dierent polynomial
orders. The last part is dealing with the comparisons of SEM to OPO.
4.3.1 Benchmark of the CPU time per time step
The CPU benchmark consisted of 40 to 50 dierent simulations using model
sizes between 401 and 20001 grid points. Each simulation was done ten times
and ran for 2000 time steps. The value of CPU time per time step is therefore
the mean of 20000 values to satisfy statistical requirements. All tests were
carried out on the same machine as mentioned at the beginning of this chapter.
In Figure 4.5 the results of this benchmark for the OPO together with the SEM
based on displacement formulation and calculation of forces are shown . It is
clearly visible that the OPO need the fewest time, which may be due to the
lower number of points per operator.
Usual FD Taylor Operators
From Table 4.1 one can see that using the displacement formulation for the SEM
leads to the fewest CPU time needed for one time step only considering dierent
time schemes of the SEM. Nevertheless the dierence is not too great. The
CPU time per time step increases with increasing order of spectral elements, but
surprisingly only for values greater than N = 5. Only for the stiness matrix
formulation the eort factor of order 4 is less than that of order 5. Despite this,
usual FD Taylor Operators appear to be less time consuming than the OPO, even
the 5-point FD operators.
The eort factors gained from the CPU benchmark are used in the next section
for calculating the corresponding cost.
4
formulation that is used throughout Chapter 2
82 Chapter 4. Evaluation of the SEM in 1D
5
10
15
20
25
30
35
40
10
20
30
40
0
10
20
30
points per wavelength
Number of
propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
(a) Relative solution error plotted against npw and ppw.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
5
10
15
20
25
30
35
40
Number of propagated wavelengths relative solution error [%]
p
o
i
n
t
s
p
e
r
w
a
v
e
l
e
n
g
t
h
(b) Inverted surface showing ppw plotted against and npw.
Figure 4.4: Surfaces showing the relative solution error and ppw as examples
of the results used for the comparisons. A homogeneous model was used and
wave propagation was simulated with SEM using degree 8 polynomials. Note
that the dominant frequency
0
itself was used for the calculation of ppw here.
For the comparisons the value was changed to be the maximum frequency of the
corresponding ricker wavelet, which is given by
max
= 2.5
0
.
4.3. Results of the Comparison 83
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 10
4
0
1
2
3
4
5
6
x 10
3
model size in number of grid points
m
e
a
n
C
P
U
t
i
m
e
p
e
r
t
i
m
e
s
t
e
p
SEM N=s04: 2.81e07 [s d(dx)]
SEM N=s05: 2.6e07 [s d(dx)]
SEM N=s08: 2.81e07 [s d(dx)]
SEM N=s12: 3.2e07 [s d(dx)]
OPO N=g03: 2.35e07 [s d(dx)]
Figure 4.5: Benchmark of CPU time per time step for dierent model sizes per-
formed for four dierent SEMs and the OPO. The values shown in the legend
give the corresponding eort factor ef, determined by the slope of each graph.
84 Chapter 4. Evaluation of the SEM in 1D
Method Order of Operator eort factor
N ef 10
7
SEM 4 2.81
5 2.60
8 2.81
12 3.20
OPO 3 2.35
Tayler Op. 3 1.2
Taylor Op. 5 1.3
SEM smf 4 2.48
5 2.74
8 3.59
12 4.14
SEM acf 4 2.96
5 2.89
8 3.08
12 3.53
SEM pcf 4 5.29
5 5.07
8 5.55
12 6.19
Table 4.1: Summary of the results from the CPU benchmark. The abbrevia-
tions are: smf=stiness matrix formulation, acf=acceleration formulation,
pcf=predictor-corrector formulation. Markers are printed every second sam-
pling point.
4.3. Results of the Comparison 85
4.3.2 Comparison of Spectral Element Methods Using
Dierent Time Integration Schemes
In the following several types of time integration schemes used in the SEM are
compared to nd out which one is performing best. The implemented time
schemes are the explicit FD 3-point displacement formulation, an explicit New-
mark scheme in acceleration formulation using no iterations and a predictor-
corrector Newmark scheme with one iteration. For details on these time schemes
see Section 2.1.8 and Komatitsch [1997]; Komatitsch & Vilotte [1998]. For
general introduction into this topic see for example Hughes [1987].
All simulations were done for a homogeneous medium. Results of simulations
of heterogeneous media dier slightly but do not change the outcome of this
comparison signicantly.
The performance is dened in terms of CPU cost as explained above. Nevertheless
it is important to know about the accuracy itself. Therefore two plots are shown
for each comparison. The rst one gives the dierence in relative solution error
plotted against points per wavelength and numbers of propagated wavelengths.
From these plots one can clearly distinguish the areas in which one or the other
method is more accurate. Colour scales are chosen in such a way that red colours
denote positve and blue colours denote negative dierences with white colours
giving zero. Positive dierence means here that the method mentioned rst is less
accurate than the second method and vice versa. Sometimes dierences appear to
be either positive or negative without changing signs indicating that one method
dominates for all values of ppw and npw.
The second plot of each comparison illustrates the relative CPU cost of the meth-
ods. Here the surfaces, derived like in Section 4.2 by inverting the accuracy sur-
face and multiplying by the eort factor, are divided point by point. Thus, values
higher than one show areas where the method mentioned rst is more costly than
the second, whereas values smaller than one indicate areas where the rst method
is less accurate. For better distinction the colour scales are dened that white
colours indicate the value 1, red are values higher and blue values smaller than
1. The surfaces are only plotted for values of the error in the range 0 to 1 as
higher errors are typically unacceptable.
All comparisons in this subsection are based on SEM simulations with order
N = 5 Lagrange polynomials. The dierence in performance of dierent orders
will be investigated in the next subsection.
The abbreviations used in the following are:
DF displacement formulation
ACF acceleration formulation
PCF predictor-corrector formulation
86 Chapter 4. Evaluation of the SEM in 1D
5
10
15
20
0
10
20
30
40
2.5
2
1.5
1
0.5
0
points per wavelength
Difference in Accuracy of ACF 5 with DF 5 for Homogeneous Models
Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
Figure 4.6: ACF - DF: Dierence in accuracy of the acceleration and displacement
formulation of the SEM. Using an acceleration method leads to higher accuracy
for all values of ppw and npw. This can be seen from the values of the surface,
which are all less than zero as given by the colour scale.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.5
0.6
0.7
0.8
0.9
1
Number of propagated wavelengths
Relative CPU Cost of ACF 5 and DF 5 for Homogeneous Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
Figure 4.7: ACF - DF: Relative CPU cost of the acceleration and displacement
formulation of the SEM. The acceleration formulation shows less CPU cost for
all values of npw and as the values of the cost surface are all smaller than 1.
Particularly for smaller errors and small numbers of propagated wavelengths it
performs better.
4.3. Results of the Comparison 87
4
6
8
10
12
14
16
0
10
20
30
40
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
points per wavelength
Difference in Accuracy of ACF 5 and PCF 5 for Homogeneous Models
Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0.4
0.2
0
0.2
0.4
0.6
Figure 4.8: ACF - PCF: Dierence in accuracy of the acceleration and predictor-
corrector formulation of the SEM. Here the acceleration formulation is only better
for a smaller number of propagated wavelengths, indicating that the predictor-
corrector formulation is more accurate for greater distances. The dierence is
getting less with increasing number of ppw. At values of ppw = 10 12 nally,
the ACF is getting better than the PCF again for great numbers of npw.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Number of propagated wavelengths
Relative CPU Cost of ACF 5 and PCF 5 for Homogeneous Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.2
0.25
0.3
0.35
0.4
0.45
0.5
0.55
0.6
Figure 4.9: ACF - PCF: Relative CPU cost of the acceleration and predictor-
corrector formulation of the SEM. This comparison indicates that the ACF per-
forms much better in terms of CPU cost. The whole surface lies below 0.65.
88 Chapter 4. Evaluation of the SEM in 1D
6
8
10
12
14
16
0
10
20
30
40
0.5
0
0.5
1
1.5
2
2.5
3
points per wavelength
Difference in Accuracy of DF 5 and PCF 5 for Homogeneous Models
Number of
propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0
0.5
1
1.5
2
2.5
Figure 4.10: DF - PCF: Dierence in accuracy of the displacement and predictor-
corrector formulation of the SEM. The behaviour of this surface is relatively
similar to Figure 4.8, showing higher errors for DF than for the PCF for most
areas. Only within a small band of the rst few npw the DF is more accurate.
As expected the dierence in accuracy is decreasing with increasing ppw.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Number of propagated wavelengths
Relative CPU Cost of DF 5 and PCF 5 for Homogeneous Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.3
0.35
0.4
0.45
0.5
0.55
0.6
0.65
0.7
0.75
0.8
Figure 4.11: DF - PCF: Relative CPU cost of the displacement and predictor-
corrector formulation of the SEM. This gure shows that the PCF is again more
time consuming as the values of the surface are everywhere smaller than 0.82.
4.3. Results of the Comparison 89
Combining the results of the three upper comparisons, it can clearly be seen that
the ACF exhibits the best performance, although it is not the most accurate one
for all tested numbers of npw and ppw.
4.3.3 Comparisons of Accuracy and CPU Cost for dier-
ent orders of Spectral Elements
Following the comparsions of dierent time integration schemes, the performance
of the SEM with dierent order of interpolating functions will be investigated. All
results in this subsection were obtained from simulations using the acceleration
formulation which showed the best performance as demonstrated above. Three
dierent orders for the Lagrange polynomials were tested: N = 4, 5, and 8. It is
important to keep the value of the Courant number of 0.82 in mind, which was
used for all orders. This is leading to dierent time steps dt, but is considered
here to get the maximum performance of each SEM type.
4
6
8
10
12
14
16
0
20
40
0
0.5
1
1.5
2
2.5
3
3.5
points per wavelength Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0.5
1
1.5
2
2.5
3
(a) Dierence in accuracy of SEM with
N = 4 and N = 5.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.85
0.9
0.95
1
1.05
1.1
1.15
1.2
1.25
Number of propagated wavelengths relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.9
0.95
1
1.05
1.1
1.15
1.2
(b) Relative CPU cost of SEM with N = 4
and N = 5.
Figure 4.12: Comparison of accuracy and CPU cost for SEM with order N = 4
and N = 5 of the interpolating Lagrange polynomials. Using a higher order is
expected to be more accurate. Therefore, the dierential surface is lying above 0
for all values of npw and ppw. In addition, order N = 5 is less expensive in CPU
cost as almost all of the surface showing the relative cost is lying above 1.
90 Chapter 4. Evaluation of the SEM in 1D
4
6
8
10
12
14
16
0
20
40
0
0.5
1
1.5
2
2.5
3
3.5
4
points per wavelength Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0.5
1
1.5
2
2.5
3
3.5
(a) Dierence in accuracy of SEM with
N = 5 and N = 8.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
Number of propagated wavelengths relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
(b) Relative CPU cost of SEM with N = 5
and N = 8.
Figure 4.13: Comparison of accuracy and CPU cost for SEM using Lagrange
polynomials of order N = 5 and N = 8. Again, the higher polynomial order
leads to higher accuracy for the whole area. Despite the fact that the eort
factor is larger for order 8, the gained accuracy compensates for this and the
overall CPU cost of order 8 is less than for order 5. Only at very few npws the
SEM with N = 5 seems to be more eective. Thus using order of 8 leads to a
maximum in performance.
4.3.4 Comparison of Accuracy and CPU Cost of the Spec-
tral Element Method with Optimal Operators
The nal and most interesting part of the comparisons deals with the question if
the SEM is more accurate and in addition less expensive in CPU cost than the
Optimal FD Operators. The setup chosen for this comparison was described in
Section 4.2. Simulations were performed for homogeneous models as well as for
a two layer model. As demonstrated in Section 4.3.2 the best performing SEM
type is the one based on an acceleration formulation of the time integration.
Therefore, the comparisons shown here were done using this type of method.
We have seen that the most accurate and best performing SEM was the one
using polynomials of degree eight. Higher orders would surely perform better,
but they make less sense for real applications, as the value for the time step dt,
calculated using the stability criterion, depends on the minimum grid spacing.
Thus choosing high orders leads to very low values of dt and therefore needs a
lot more time steps to calculate the same physical time.
As mentioned earlier, the eective Courant number of the SEM using N = 5 was
4.3. Results of the Comparison 91
around 0.5, which was also used for the OPO. These both methods thus have
comparable time steps dt. To account for this, the eort factor of the better
performing eight order SEM is corrected by the ratio
dt
OPO
dt
SEM8
for the comparisons.
The eort factor therefore increases from 3.08 10
7
to 4.52 10
7
.
Homogeneous Models
1020 1040 1060 1080 1100 1120
1
0
1
2
3
4
5
6
5 ppw Analytical Solution blue OPO green SEM red
Figure 4.14: Filtered seismograms of station 100 for OPO (green) and SEM (red)
for homogeneous models (5 ppw). The analytical solution is plotted in blue.
1040 1060 1080 1100 1120 1140 1160
0
2
4
6
8
10
12
10 ppw Analytical blue OPO green SEM red
Figure 4.15: Filtered seismograms of station 100 for OPO (green) and SEM (red)
for homogeneous models (10 ppw). The analytical solution is plotted in blue.
92 Chapter 4. Evaluation of the SEM in 1D
6
8
10
12
14
16
10
20
30
40
0
2.5
5
points per wavelength
SEM of Order 5 with Acceleration Formulation, Homogeneous Model
Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
(a) SEM ACF order N = 5.
6
8
10
12
14
16
10
20
30
40
0
2.5
5
points per wavelength
Optimal 3point FD Operator, Homogeneous Model
Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
(b) OPO.
Figure 4.16: Relative solution error of SEM (a) and OPO (b) for homogeneous
models. The scale of the z-axis is the same for both plots, only the colouring
is dierent. One can see the dierent behaviour of the methods with changing
ppw and npw. On the one hand the OPO show an almost linear increase with
distance, whereas the error of the SEM grows exponentially. This indicates the
optimally reduced numerical dispersion of the former method. On the other hand,
the SEM shows a better behaviour with increasing ppw but overall OPO are mor
accurate.
4.3. Results of the Comparison 93
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
2
4
6
8
10
12
14
16
Number of
propagated
wavelengths
SEM of Order 5 with Acceleration Formulation, Homogeneous Model
relative solution error [%]
p
o
i
n
t
s
p
e
r
w
a
v
e
l
e
n
g
t
h
4
6
8
10
12
14
(a) SEM ACF N = 5.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
2
4
6
8
10
12
14
Number of
propagated
wavelengths
relative solution error [%]
Optimal 3point FD Operator, Homogeneous Model
p
o
i
n
t
s
p
e
r
w
a
v
e
l
e
n
g
t
h
4
5
6
7
8
9
10
11
12
13
(b) OPO.
Figure 4.17: Minimum points per wavelength needed by SEM (a) and OPO (b)
for homogeneous models to achieve a certain error and distance. Colour scales
are the same and the range is given on the right. The slope of the SEM surface
indicates that the ppw needed are almost the same in the range of plotted
here. The Optimal Operator surface grows exponentially with decreasing error.
Considering the behaviour of the methods with increasing distance npw, again
the OPO appear to be better, as the number of ppw increases slower with distance
as that of the SEM.
94 Chapter 4. Evaluation of the SEM in 1D
5
10
15
20
25
30
35
40
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
x 10
4
Number of propagated wavelengths
SEM of order 5 with acceleration formulation, homogeneous model
relative solution error [%]
C
P
U
c
o
s
t
(a) SEM ACF N = 5.
5
10
15
20
25
30
35
40
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
x 10
4
Number of propagated wavelengths
Optimal 3point FD Operator, homogeneous model
relative solution error [%]
C
P
U
c
o
s
t
(b) OPO.
Figure 4.18: Overall CPU cost of the SEM (a) and the OPO (b) for homogeneous
models. Obviously the OPO are less expensive in CPU cost than the SEM of
order N = 5.
4.3. Results of the Comparison 95
6
8
10
12
14
16
0
10
20
30
40
1
0
1
2
3
4
points per wavelength
Difference in Accuracy of
ACF 5 and OPO 3 for Homogeneous Models
Number of
propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0
0.5
1
1.5
2
2.5
3
3.5
Figure 4.19: Dierence in accuracy of SEM ACF N = 5 and OPO for homoge-
neous models. The colour scale is chosen in such a way that zero dierence is
given in white, positive values in red and negative values in blue. One can see
that the SEM is more accurate for less than 10 npw. The fact that this number
increases steadily up to around 20 when using 16 ppw or more again shows that
the OPO are more suited for propagating waves for long distances.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
Number of propagated wavelengths
Relative CPU Cost of ACF 5 and OPO 3 for Homogeneous Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.6
0.8
1
1.2
1.4
1.6
1.8
Figure 4.20: Relative CPU cost of SEM ACF N = 5 and OPO for homogeneous
models. For most cases the OPO need less CPU time per time step since the
ratio of
CostSEM5
CostOPO
is then greater than 1. Only for less than 10 npw and for very
small errors the SEM appears to be more eective.
96 Chapter 4. Evaluation of the SEM in 1D
4
6
8
10
12
14
16
0
10
20
30
40
0.5
0.4
0.3
0.2
0.1
0
0.1
0.2
0.3
points per wavelength
Difference in Accuracy of ACF 8 and OPO 3 for Homogeneous Models
Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0.4
0.3
0.2
0.1
0
0.1
0.2
Figure 4.21: Dierence in accuracy of SEM ACF N = 8 and OPO for homo-
geneous models. Here the SEM of order eight is much more accurate than the
OPO in most of the plotted area. This demonstrates the spectral behaviour
of the SEM, which means that the solution converges in the same manner as the
pseudo-spectral methods with increasing N.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
Number of propagated wavelengths
Relative CPU cost of ACF 8 and OPO 3 for Homogeneous Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
Figure 4.22: Relative CPU cost of SEM ACF N = 8 and OPO for homogeneous
models. In contrast to the SEM with N = 5, using a higher order leads to a
better performance. This can be seen from the bigger area, in which the SEM of
degree 8 is less expensive in CPU Cost than the OPO, indicated by blue colours.
Note that the CPU Cost of SEM N = 8, where a Courant value of 0.82 was used
is plotted here. Thus the time steps between SEM N = 8 and OPO dier. Figure
4.23 shows the comparison in CPU cost, when using the same time step.
4.3. Results of the Comparison 97
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
Number of propagated wavelengths
Relative CPU Cost of ACF 8 with OPO 3 for Homogeneous Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.6
0.8
1
1.2
1.4
1.6
1.8
2
Figure 4.23: Relative CPU cost of SEM ACF N = 8 and OPO using the same
time step for homogeneous models. This gure illustrates that the performance
of the SEM of order eight gets worse when using other time steps. The ratio
of
CostSEM8
CostOPO
is rather the same as the ratio of
CostSEM5
CostOPO
as can be seen when
comparing this plot to the surface in Figure 4.20 (same range for the z-axis).
98 Chapter 4. Evaluation of the SEM in 1D
6
8
10
12
14
16
0
10
20
30
40
0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
points per wavelength
Two Layer Models
Difference in Accuracy of ACF 5 and OPO 3 for Two Layer Models
Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0
0.1
0.2
0.3
0.4
0.5
0.6
Figure 4.24: Dierence in accuracy of SEM ACF N = 5 and OPO for hetero-
geneous models. The dierential surfaces of the error show much more noise.
Nevertheless, it is evident that the SEM of order N = 5 is less accurate compared
to the OPO than for homogeneous models.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.6
0.8
1
1.2
1.4
1.6
1.8
2
Number of propagated wavelengths
Relative CPU Cost of ACF 5 and OPO 3 for Two Layer Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
Figure 4.25: Relative CPU cost of SEM ACF N = 5 and OPO for heterogeneous
models. This gure indicates that the OPO are less expensive than the SEM
N = 5 for almost all values of npw and ppw. One area can be distinguished
where the surface shows a minimum close to z = 0.
4.3. Results of the Comparison 99
4
6
8
10
12
14
16
0
10
20
30
40
0.15
0.1
0.05
0
0.05
0.1
points per wavelength
Difference in Accuracy of ACF 8 and OPO 3 for Two Layer Models
Number of propagated wavelengths
r
e
l
a
t
i
v
e
s
o
l
u
t
i
o
n
e
r
r
o
r
[
%
]
0.12
0.1
0.08
0.06
0.04
0.02
0
0.02
0.04
0.06
0.08
Figure 4.26: Dierence in accuracy of SEM ACF N = 8 and OPO for heteroge-
neous models. The accuracy of SEM with order eight is better than of the OPO in
a great part of the plot. The step that can be seen in the middle probably results
from the interface of the model regions, where wave velocities change. In this
area the error shows increased noise and the OPO seem to gain accuracy. The
extremely high values in the back come from errors in the evaluation routines.
0
10
20
30
40
0
0.2
0.4
0.6
0.8
1
0.5
1
1.5
2
2.5
Number of propagated wavelengths
Relative CPU Cost of ACF 8 and OPO 3 for Two Layer Models
relative solution error [%]
r
e
l
a
t
i
v
e
C
P
U
c
o
s
t
0.8
1
1.2
1.4
1.6
1.8
2
2.2
2.4
Figure 4.27: Relative CPU cost of SEM ACF N = 8 and OPO using the same
time step for heterogeneous models. This gure shows again a minimum in the
ratio
CostSEM8
CostOPO
, but this time it is more prominent and thus the CPU cost of both
methods is more balanced. The peak in the middle probably derives from the
high values seen in the surface of the relative solution error.
Chapter 5
Evaluation of the Spectral
Element Method in 3-D
In the previous chapter the comparisons between dierent kinds of spectral ele-
ment methods and between the best performing one and the optimal operators
have shown some signicant characteristics. The OPO was the method with the
lowest CPU time per time step and, in most cases, also the best performing one.
The denition of performance was a combination of accuracy and CPU time per
time step, called CPU cost.
It is obvious that these comparisons of 1-D simulations can only be a rst step.
Extrapolation of the behaviour to higher dimensions is not possible without fur-
ther investigation. In addition, memory demands play an important role now as
memory is more limiting than time. Thus, comparisons of 3-D simulations should
also contain a test of the accuracy achieved for the same computer memory in-
stead of equally sized models.
In this chapter the results of three-dimensional SEM and FD simulations are
presented using explosive and dip-slip sources in a homogeneous rectangular block
model. These simple setups allow for the same method of comparison used for
the 1-D simulations. Moreover, an interpretation of the results is easier than for
complex models.
The choice of the model size was restricted due to the memory available, which
was 2 GB for a single machine. In the beginning only a serial SEM code was used,
which led to a maximum number of 60, 45 and 30 elements in the x, y, and z
direction respectively. The polynomial degree chosen for the spectral elements
was N = 5. Thus, the overall number of nodes in the grid was 241 x 181 x 121.
The memory required was 1.6 GB. In contrast to that, the FD code only needed
0.6 GB for the same overall number of grid points, leading to a ratio of 2.66.
The dimensions of the model were 800 by 600 by 400 kilometer leading to cubic
elements. Although 2 GB would have been available, these conguration was
chosen to achieve cubic elements and a ratio of x, y, and z dimensions of 4:3:2 at
the same time.
101
102 Chapter 5. Evaluation of the SEM in 3-D
The source was located at x = 275 km and y = 300 km and two dierent depths
for the source were chosen: 200 km and 10 km. The Latter position was used to
excite strong surface waves. The locations of sources and receivers were chosen
to allow for the same evaluation as in 1-D. Thus, the rst receiver was located
directly above the source and 149 receivers were evenly distributed along the x
direction between 275 and 775 km away from the source. Figure 5.1 illustrates
the model setup.
0
100
200
300
400
500
600
700
800
0
300
600
400
350
300
250
200
150
100
50
0
Model Setup
x [km]
y [km]
z
[
k
m
]
Figure 5.1: Model setup for 3-D simulations. The position of the sources is
indicated by red stars. Every fth receiver is plotted as green triangle.
The idea of this setup was to ensure a maximum distance between the last receiver
and the source and at the same time to avoid reections from the boundaries.
Especially the x position of the source and rst receiver were chosen in such a
way that reected waves coming from the boundary at x = 0 and from the sides
at y = 0 and y = 600 arrive later than the direct wave at the last receiver. Thus,
the seismograms could be evaluated for the same time window.
The time step used was 0.1 s and the wave velocities v
s
and v
p
of shear and
compressional waves respectively were 3500 and 6062
m
s
. These values correspond
to a ratio of
v
p
v
s
=
s
o
f
o
r
h
o
m
o
g
e
n
e
o
u
s
m
o
d
e
l
,
s
t
f
o
r
t
w
o
l
a
y
e
r
e
d
c
a
s
e
,
!
s
h
f
o
r
h
e
t
e
r
o
g
e
n
e
o
u
s
.
!
I
f
s
t
i
s
g
i
v
e
n
,
t
h
e
f
i
l
e
s
"
D
A
T
A
_
m
u
e
/
e
t
_
s
0
0
_
0
0
t
w
o
_
m
u
e
.
t
x
t
"
a
n
d
!
"
D
A
T
A
_
r
h
o
/
e
t
_
s
0
0
_
0
0
t
w
o
_
r
h
o
.
t
x
t
"
a
r
e
r
e
a
d
.
T
h
e
y
b
o
t
h
h
a
v
e
t
w
o
e
n
t
r
i
e
s
f
o
r
L
a
m
e
c
o
n
s
t
a
n
t
m
u
e
a
n
d
r
h
o
!
r
e
s
p
e
c
t
i
v
e
l
y
.
!
I
f
s
h
i
s
g
i
v
e
n
,
t
h
e
f
i
l
e
s
"
D
A
T
A
_
m
u
e
/
e
h
_
s
X
X
_
Y
Y
Y
Y
Y
_
m
u
e
.
t
x
t
"
a
n
d
"
D
A
T
A
_
r
h
o
/
e
h
_
s
X
X
_
Y
Y
Y
Y
Y
_
r
h
o
.
t
x
t
"
a
r
e
!
r
e
a
d
,
w
h
e
r
e
X
X
i
s
t
h
e
c
o
r
r
e
s
p
o
n
d
i
n
g
o
r
d
e
r
N
<
1
0
0
a
n
d
Y
Y
Y
Y
Y
i
s
t
h
e
n
u
m
b
e
r
o
f
e
l
e
m
e
n
t
s
n
e
<
1
0
0
0
0
0
.
!
S
e
e
d
e
s
c
r
i
p
t
i
o
n
i
n
D
A
T
A
_
*
*
*
/
R
E
A
D
M
E
f
o
r
d
e
t
a
i
l
e
d
i
n
f
o
r
m
a
t
i
o
n
o
n
t
h
e
s
e
f
i
l
e
s
.
!
5
)
=
t
m
a
x
:
t
o
t
a
l
t
i
m
e
t
o
b
e
s
i
m
u
l
a
t
e
d
!
6
)
=
L
e
n
g
t
h
:
l
e
n
g
t
h
o
f
t
h
e
m
o
d
e
l
!
7
)
=
C
o
u
r
a
n
t
_
n
r
:
C
o
u
r
a
n
t
n
u
m
b
e
r
f
o
r
s
t
a
b
i
l
i
t
y
c
r
i
t
e
r
i
o
n
!
8
)
=
b
c
o
n
d
i
t
i
o
n
:
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
?
O
n
e
c
h
a
r
a
c
t
e
r
s
t
r
i
n
g
.
f
o
r
f
r
e
e
s
u
r
f
a
c
e
,
f
o
r
r
i
g
i
d
!
b
o
u
n
d
a
r
y
,
f
o
r
a
b
s
o
r
b
i
n
g
b
o
u
n
d
a
r
i
e
s
o
r
f
o
r
p
e
r
i
o
d
i
c
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
!
9
)
=
s
r
c
_
f
l
a
g
:
"
.
t
r
u
e
.
"
i
f
s
o
u
r
c
e
s
h
a
l
l
b
e
i
m
p
l
e
m
e
n
t
e
d
,
i
f
n
o
t
p
r
o
g
r
a
m
n
e
e
d
s
i
n
i
t
i
a
l
c
o
n
d
i
t
i
o
n
s
!
f
r
o
m
f
i
l
e
s
"
D
A
T
A
_
i
n
i
t
i
a
l
/
U
.
t
x
t
"
a
n
d
"
/
U
o
l
d
.
t
x
t
"
!
1
0
)
=
s
r
c
_
n
e
:
s
o
u
r
c
e
p
o
s
i
t
i
o
n
?
(
e
.
g
.
2
f
o
r
e
l
e
m
e
n
t
2
o
r
a
n
y
n
u
m
b
e
r
l
e
s
s
o
r
e
q
u
a
l
t
o
n
e
)
!
1
1
)
=
s
r
c
_
N
:
s
o
u
r
c
e
p
o
s
i
t
i
o
n
i
n
s
i
d
e
t
h
e
e
l
e
m
e
n
t
g
i
v
e
n
b
y
s
r
c
_
n
e
?
(
e
.
g
.
b
e
t
w
e
e
n
0
a
n
d
N
1
)
"
)
!
1
2
)
=
s
t
f
p
a
r
:
s
o
u
r
c
e
t
i
m
e
f
u
n
c
t
i
o
n
?
g
a
f
o
r
g
a
u
s
s
i
a
n
,
r
1
f
o
r
r
i
c
k
e
r
w
a
v
e
l
e
t
,
!
r
2
f
o
r
f
i
r
s
t
d
e
r
i
v
a
t
i
v
e
o
f
t
h
e
r
i
c
k
e
r
,
o
r
d
e
f
o
r
a
d
e
l
t
a
p
e
a
k
!
!
1
3
)
=
f
r
q
:
i
f
p
l
o
t
_
d
e
v
i
s
n
o
t
3
o
r
s
t
f
p
a
r
i
s
n
o
t
d
e
:
t
h
e
d
o
m
i
n
a
n
t
f
r
e
q
u
e
n
c
y
o
f
t
h
e
!
r
i
c
k
e
r
w
a
v
e
l
e
t
u
s
e
d
f
o
r
p
l
o
t
t
i
n
g
o
r
s
i
m
u
l
a
t
i
o
n
,
r
e
s
p
e
c
t
i
v
e
l
y
.
!
1
4
)
=
a
r
r
a
y
_
i
d
:
t
y
p
e
o
f
r
e
c
e
i
v
e
r
a
r
r
a
y
(
c
h
a
r
a
c
t
e
r
(
l
e
n
=
2
)
:
a
*
=
2
4
0
,
b
=
1
5
0
,
c
=
1
0
0
,
d
*
=
1
;
!
*
0
=
a
n
y
w
h
e
r
e
,
*
1
=
o
n
G
L
L
p
o
i
n
t
s
)
!
1
5
)
=
d
i
s
t
a
n
c
e
:
i
f
a
r
r
a
y
_
i
d
=
d
(
o
n
l
y
o
n
e
r
e
c
e
i
v
e
r
)
:
P
l
e
a
s
e
e
n
t
e
r
t
h
e
s
o
u
r
c
e
r
e
c
e
i
v
e
r
d
i
s
t
a
n
c
e
!
(
<
=
L
e
n
g
t
h
x
(
s
o
u
r
c
e
)
)
!
1
6
)
=
p
d
:
p
l
o
t
d
e
v
i
c
e
(
0
=
x
w
i
n
d
o
w
,
1
=
g
i
f
,
2
=
p
s
,
3
=
n
o
p
l
o
t
,
4
=
l
i
k
e
0
b
u
t
p
l
o
t
o
n
l
y
s
e
i
s
m
o
g
r
a
m
s
,
!
n
o
t
s
n
a
p
s
h
o
t
s
)
!
1
7
)
=
p
l
o
t
_
r
e
c
_
n
r
:
i
f
m
o
r
e
t
h
a
n
o
n
e
r
e
c
e
i
v
e
r
a
r
e
u
s
e
d
,
p
l
o
t
w
h
i
c
h
r
e
c
e
i
v
e
r
(
n
u
m
b
e
r
)
!
1
8
)
=
c
o
n
v
o
l
u
t
e
:
c
o
n
v
o
l
u
t
i
o
n
w
i
t
h
r
i
c
k
e
r
w
a
n
t
e
d
f
o
r
p
l
o
t
t
i
n
g
,
w
h
e
n
s
i
m
u
l
a
t
i
n
g
w
i
t
h
a
d
e
l
t
a
p
e
a
k
?
!
"
.
t
r
u
e
.
"
f
o
r
y
e
s
!
1
9
)
=
p
e
r
c
e
n
t
:
r
u
n
t
i
m
e
m
e
s
s
a
g
e
f
o
r
p
e
r
c
e
n
t
o
f
n
t
w
a
n
t
e
d
?
"
.
t
r
u
e
.
"
f
o
r
y
e
s
!
2
0
)
=
t
x
t
:
i
f
o
u
t
p
u
t
f
i
l
e
s
(
s
e
i
s
m
o
g
r
a
m
s
a
t
a
l
l
r
e
c
e
i
v
e
r
s
a
n
d
a
d
d
i
t
i
o
n
a
l
s
e
t
u
p
f
i
l
e
)
a
r
e
w
a
n
t
e
d
!
t
y
p
e
"
.
t
r
u
e
.
"
A.2. The Fortran 1-D SEM Program Code 141
P
R
O
G
R
A
M
e
l
a
s
t
i
c
_
1
D
!
P
r
o
g
r
a
m
t
o
s
o
l
v
e
t
h
e
o
n
e
d
i
m
e
n
s
i
o
n
a
l
w
a
v
e
e
q
u
a
t
i
o
n
w
i
t
h
a
s
p
e
c
t
r
a
l
e
l
e
m
e
n
t
m
e
t
h
o
d
!
w
r
i
t
t
e
n
b
y
B
e
r
n
h
a
r
d
S
c
h
u
b
e
r
t
h
2
0
0
3
!
i
n
t
h
e
c
o
u
r
s
e
o
f
t
h
e
d
i
p
l
o
m
a
t
h
e
s
i
s
!
?
?
?
?
?
T
i
t
l
e
?
?
?
?
?
?
!
a
t
t
h
e
D
e
p
a
r
t
e
m
e
n
t
f
o
r
E
a
r
t
h
a
n
d
E
n
v
i
r
o
n
m
e
n
t
a
l
S
c
i
e
n
c
e
s
,
G
e
o
p
h
y
s
i
c
s
S
e
c
t
i
o
n
,
o
f
t
h
e
!
L
u
d
w
i
g
M
a
x
i
m
i
l
i
a
n
s
U
n
i
v
e
r
s
i
t
y
M
u
n
i
c
h
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
m
o
d
u
l
e
s
u
s
e
d
u
s
e
p
l
o
t
_
m
o
d
!
p
l
o
t
t
i
n
g
t
o
o
l
s
b
a
s
e
d
o
n
p
g
p
l
o
t
u
s
e
e
l
_
s
p
e
c
_
p
l
o
t
!
p
l
o
t
t
i
n
g
s
u
b
r
o
u
t
i
n
e
s
n
e
e
d
e
d
f
o
r
t
h
i
s
p
r
o
g
r
a
m
u
s
e
s
o
u
r
c
e
!
c
r
e
a
t
e
s
d
i
f
f
e
r
e
n
t
s
o
u
r
c
e
t
i
m
e
f
u
n
c
t
i
o
n
s
u
s
e
w
r
i
t
e
_
d
a
t
a
!
u
s
e
d
f
o
r
w
r
i
t
i
n
g
s
e
i
s
m
o
g
r
a
m
s
t
o
o
u
t
p
u
t
f
i
l
e
s
u
s
e
e
l
_
a
r
r
a
y
!
s
p
e
c
i
f
i
c
a
r
r
a
y
s
f
o
r
c
o
m
p
a
r
i
s
o
n
w
i
t
h
o
p
t
i
m
a
l
F
D
o
p
e
r
a
t
o
r
s
u
s
e
s
e
m
_
s
p
e
c
_
m
o
d
u
l
e
s
!
s
p
e
c
i
f
i
c
s
u
b
r
o
u
t
i
n
e
s
n
e
e
d
e
d
f
o
r
S
E
M
u
s
e
j
a
c
o
b
i
a
n
_
m
o
d
!
c
a
l
c
u
l
a
t
i
o
n
o
f
t
h
e
J
a
c
o
b
i
M
a
t
r
i
x
a
n
d
J
a
c
o
b
i
a
n
u
s
e
s
h
a
p
e
_
m
o
d
!
c
a
l
c
u
l
a
t
i
o
n
o
f
s
h
a
p
e
f
u
n
c
t
i
o
n
s
o
f
t
h
e
m
a
p
p
i
n
g
u
s
e
s
e
m
_
a
n
a
l
y
t
_
m
o
d
!
c
a
l
c
u
l
a
t
i
o
n
o
f
t
h
e
c
o
r
r
e
s
p
o
n
d
i
n
g
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
u
s
e
s
i
g
n
a
l
_
p
r
o
c
e
s
s
i
n
g
!
s
u
b
r
o
u
t
i
n
e
s
f
o
r
f
f
t
a
n
d
c
o
n
v
o
l
u
t
i
o
n
u
s
e
m
i
n
m
a
x
1
d
!
m
a
x
i
/
m
i
n
o
f
a
v
e
c
t
o
r
,
u
s
e
d
b
e
c
a
u
s
e
o
f
p
r
o
b
l
e
m
s
i
n
"
m
i
n
v
a
l
"
u
s
e
m
i
n
m
a
x
!
m
a
x
i
m
u
m
o
r
m
i
n
i
m
u
m
o
f
2
D
o
r
3
D
m
a
t
r
i
c
e
s
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
m
e
!
e
l
e
m
e
n
t
a
l
m
a
s
s
m
a
t
r
i
c
e
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
D
L
!
d
e
r
i
v
a
t
i
v
e
s
o
f
L
a
g
r
a
n
g
e
p
o
l
y
n
o
m
i
a
l
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
r
h
o
_
e
!
d
e
n
s
i
t
y
i
n
a
l
l
e
l
e
m
e
n
t
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
m
u
e
_
e
!
e
l
a
s
t
i
c
i
t
y
c
o
e
f
f
i
c
i
e
n
t
m
u
i
n
a
l
l
e
l
e
m
e
n
t
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
v
e
!
w
a
v
e
v
e
l
o
c
i
t
y
d
e
r
i
v
e
d
f
r
o
m
r
h
o
a
n
d
m
u
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
g
r
e
e
n
s
!
s
t
o
r
e
s
a
l
l
s
e
i
s
m
o
g
r
a
m
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
a
n
a
l
y
t
i
c
a
l
!
a
l
l
c
o
r
r
e
s
p
.
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
s
(
A
S
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
J
a
c
o
b
i
!
J
a
c
o
b
i
M
a
t
r
i
x
(
J
M
)
o
f
t
h
e
m
a
p
p
i
n
g
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
J
a
c
o
b
i
a
n
!
d
e
t
e
r
m
i
n
a
n
t
o
f
J
M
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
J
a
c
o
b
i
_
i
n
v
e
r
s
e
!
J
M
o
f
t
h
e
i
n
v
e
r
s
e
m
a
p
p
i
n
g
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
s
h
a
p
e
1
D
!
s
h
a
p
e
f
u
n
c
t
i
o
n
s
o
f
t
h
e
m
a
p
p
i
n
g
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
d
e
r
s
h
a
p
e
1
D
!
d
e
r
i
v
a
t
i
v
e
s
o
f
t
h
e
s
h
a
p
f
u
n
c
t
i
o
n
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
U
!
d
i
s
p
l
a
c
e
m
e
n
t
a
t
g
l
o
b
a
l
n
o
d
e
s
(
t
i
m
e
s
t
e
p
i
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
U
n
e
w
!
d
i
s
p
l
a
c
e
m
e
n
t
a
t
g
l
o
b
a
l
n
o
d
e
s
(
t
i
m
e
s
t
e
p
i
+
1
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
U
o
l
d
!
d
i
s
p
l
a
c
e
m
e
n
t
a
t
g
l
o
b
a
l
n
o
d
e
s
(
t
i
m
e
s
t
e
p
i
1
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
U
_
i
n
i
t
!
i
n
i
t
i
a
l
d
i
s
p
l
a
c
e
m
e
n
t
f
i
e
l
d
a
t
t
=
0
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
U
o
l
d
_
i
n
i
t
!
i
n
i
t
i
a
l
d
i
s
p
l
a
c
e
m
e
n
t
f
i
e
l
d
a
t
t
=
1
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
M
a
s
s
!
g
l
o
b
a
l
m
a
s
s
m
a
t
r
i
x
(
s
t
o
r
e
d
a
s
a
v
e
c
t
o
r
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
M
a
s
s
I
n
v
!
i
n
v
e
r
s
e
o
f
t
h
e
m
a
s
s
m
a
t
r
i
x
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
F
!
f
o
r
c
e
s
a
t
g
l
o
b
a
l
n
o
d
e
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
R
h
o
_
g
l
o
b
a
l
!
g
l
o
b
a
l
l
y
d
e
f
i
n
e
d
d
e
n
s
i
t
y
n
e
e
d
e
d
f
o
r
A
S
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
M
u
e
_
g
l
o
b
a
l
!
g
l
o
b
a
l
l
y
d
e
f
i
n
e
d
e
l
a
s
t
i
c
i
t
y
c
o
e
f
f
.
f
o
r
A
S
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
x
!
x
v
e
c
t
o
r
(
s
p
a
t
i
a
l
c
o
o
r
d
i
n
a
t
e
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
d
x
!
d
i
s
t
a
n
c
e
b
e
t
w
e
e
n
g
l
o
b
a
l
x
p
o
i
n
t
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
x
m
e
s
h
!
d
e
f
i
n
i
n
g
t
h
e
1
D
m
e
s
h
(
2
p
o
i
n
t
s
p
e
r
e
l
e
m
e
n
t
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
d
e
!
l
e
n
g
t
h
o
f
t
h
e
e
l
e
m
e
n
t
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
x
i
!
G
L
L
q
u
a
d
r
a
t
u
r
e
p
o
i
n
t
s
(
l
o
c
a
l
c
o
o
r
d
i
n
a
t
e
s
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
x
i
d
i
f
f
!
d
i
s
t
a
n
c
e
b
e
t
w
e
e
n
G
L
L
p
o
i
n
t
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
w
e
i
g
h
t
s
!
w
e
i
g
h
t
s
o
f
t
h
e
G
L
L
i
n
t
e
g
r
a
t
i
o
n
q
u
a
d
r
a
t
u
r
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
t
!
t
i
m
e
v
e
c
t
o
r
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
s
r
c
!
s
o
u
r
c
e
t
i
m
e
f
u
n
c
t
i
o
n
f
o
r
t
h
e
s
i
m
u
l
a
t
i
o
n
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
s
t
f
!
s
o
u
r
c
e
t
i
m
e
f
u
n
c
t
i
o
n
f
o
r
c
o
n
v
o
l
u
t
i
o
n
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
c
p
u
!
c
p
u
t
i
m
e
f
o
r
e
a
c
h
t
i
m
e
s
t
e
p
(
p
r
o
c
e
s
s
o
r
c
l
o
c
k
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
c
p
u
_
d
t
!
c
p
u
t
i
m
e
f
o
r
e
a
c
h
t
i
m
e
s
t
e
p
(
f
o
r
b
e
n
c
h
m
a
r
k
i
n
g
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
s
e
i
s
m
o
g
r
a
m
!
c
o
n
v
o
l
u
t
e
d
s
e
i
s
m
o
g
r
a
m
f
o
r
p
l
o
t
t
i
n
g
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
c
o
n
v
_
a
n
a
!
c
o
n
v
o
l
u
t
e
d
A
S
f
o
r
p
l
o
t
t
i
n
g
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
d
i
f
f
_
a
n
a
!
e
r
r
o
r
i
n
A
S
<
=
d
i
s
c
r
e
t
e
s
a
m
p
l
i
n
g
i
n
t
i
m
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
r
e
c
t
i
m
e
s
!
s
p
e
c
i
a
l
t
i
m
e
m
a
r
k
s
n
e
e
d
e
d
f
o
r
A
S
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
r
e
f
t
i
m
e
s
!
s
p
e
c
i
a
l
t
i
m
e
m
a
r
k
s
n
e
e
d
e
d
f
o
r
A
S
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
s
r
d
!
s
o
u
r
c
e
r
e
c
e
i
v
e
r
d
i
s
t
a
n
c
e
f
o
r
e
a
c
h
r
e
c
e
i
v
e
r
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
s
r
d
_
d
i
f
f
!
d
i
s
t
a
n
c
e
s
b
e
t
w
e
e
n
r
e
c
e
i
v
e
r
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
r
e
c
e
i
v
e
r
_
p
o
s
!
x
c
o
o
r
d
i
n
a
t
e
s
o
f
r
e
c
e
i
v
e
r
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
r
e
c
e
i
v
e
r
_
d
x
!
d
i
s
t
a
n
c
e
o
f
r
e
c
e
i
v
e
r
t
o
n
e
a
r
e
s
t
g
r
i
d
n
o
d
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
d
t
!
d
u
r
a
t
i
o
n
o
f
t
i
m
e
s
t
e
p
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
d
x
m
i
n
!
m
i
n
i
m
u
m
v
a
l
u
e
o
f
d
x
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
v
_
m
a
x
!
m
a
x
i
m
u
m
v
a
l
u
e
o
f
v
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
v
_
m
i
n
!
m
i
n
i
m
u
m
v
a
l
u
e
o
f
v
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
p
t
!
p
e
r
i
o
d
o
f
t
h
e
d
o
m
i
n
a
n
t
f
r
e
q
u
e
n
c
y
o
f
a
w
a
v
e
l
e
t
g
i
v
e
n
b
y
1
/
f
r
q
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
o
u
r
c
e
_
p
o
s
!
x
c
o
o
r
d
i
n
a
t
e
o
f
t
h
e
s
o
u
r
c
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
d
i
f
f
_
g
r
e
e
n
s
!
e
r
r
o
r
i
n
s
e
i
s
m
o
g
r
a
m
d
u
e
t
o
d
i
s
c
r
e
t
e
t
i
m
e
s
a
m
p
l
i
n
g
(
o
n
l
y
f
o
r
p
l
o
t
t
i
n
g
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
c
p
u
_
d
t
_
m
e
a
n
!
m
e
a
n
v
a
l
u
e
o
f
c
p
u
t
i
m
e
p
e
r
t
i
m
e
s
t
e
p
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
L
e
n
g
t
h
!
L
e
n
g
t
h
o
f
t
h
e
m
o
d
e
l
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
d
x
_
m
e
a
n
!
a
v
e
r
a
g
e
o
f
d
i
s
t
a
n
c
e
b
e
t
w
e
e
n
g
r
i
d
n
o
d
e
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
b
v
1
,
b
v
n
g
!
v
a
l
u
e
s
u
s
e
d
f
o
r
c
a
l
c
u
l
a
t
i
o
n
o
f
a
b
s
o
r
b
i
n
g
b
o
u
n
d
a
r
i
e
s
a
t
(
1
,
n
g
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
m
a
x
U
,
m
i
n
U
!
m
a
x
i
m
u
m
a
n
d
m
i
n
i
m
u
m
v
a
l
u
e
s
o
f
d
i
s
p
l
a
c
e
m
e
n
t
u
s
e
d
f
o
r
p
l
o
t
t
i
n
g
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
r
c
_
m
a
x
,
s
r
c
_
m
i
n
!
m
a
x
i
m
u
m
a
n
d
m
i
n
i
m
u
m
v
a
l
u
e
s
o
f
d
i
s
p
l
a
c
e
m
e
n
t
u
s
e
d
f
o
r
p
l
o
t
t
i
n
g
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
t
m
p
!
d
u
m
m
y
v
a
r
i
a
b
l
e
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
C
!
C
o
n
n
e
c
t
i
v
i
t
y
M
a
t
r
i
x
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
r
e
c
e
i
v
e
r
_
i
x
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
:
)
,
a
l
l
o
c
a
t
a
b
l
e
:
:
n
u
m
_
e
l
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
1
:
2
)
:
:
e
l
_
s
t
e
p
_
i
x
i
n
t
e
g
e
r
N
,
n
e
,
n
g
,
N
G
N
O
D
!
p
o
l
y
n
.
o
r
d
e
r
,
n
u
m
b
e
r
o
f
e
l
e
m
e
n
t
s
,
n
u
m
b
e
r
o
f
g
r
i
d
p
o
i
n
t
s
,
n
u
m
b
e
r
o
f
a
n
c
h
o
r
n
o
d
e
s
i
n
t
e
g
e
r
M
,
n
t
,
s
o
u
r
c
e
_
i
x
,
r
e
c
_
n
u
m
,
d
n
g
i
x
,
s
t
e
p
_
i
x
i
n
t
e
g
e
r
i
,
j
,
k
,
l
!
i
n
d
i
c
e
s
c
h
a
r
a
c
t
e
r
(
l
e
n
=
2
)
d
e
g
!
s
t
r
i
n
g
f
o
r
N
c
h
a
r
a
c
t
e
r
(
l
e
n
=
3
)
g
i
f
_
n
u
m
!
u
s
e
d
f
o
r
c
o
r
r
e
c
t
n
u
m
b
e
r
i
n
g
o
f
g
i
f
o
u
t
p
u
t
c
h
a
r
a
c
t
e
r
(
l
e
n
=
5
0
)
m
u
e
_
f
i
l
e
,
r
h
o
_
f
i
l
e
!
i
n
p
u
t
f
i
l
e
s
c
h
a
r
a
c
t
e
r
(
l
e
n
=
5
0
)
f
n
a
m
e
1
,
s
e
t
u
p
f
i
l
e
,
p
l
o
t
_
f
i
l
e
!
o
u
t
p
u
t
f
i
l
e
s
c
h
a
r
a
c
t
e
r
(
l
e
n
=
5
0
)
p
o
l
d
e
g
,
x
l
a
b
,
y
l
a
b
,
t
i
m
e
!
s
t
r
i
n
g
s
u
s
e
d
f
o
r
p
l
o
t
t
i
n
g
c
h
a
r
a
c
t
e
r
(
l
e
n
=
1
0
0
)
p
l
o
t
_
d
e
v
!
D
e
f
i
n
i
t
i
o
n
o
f
f
i
x
e
d
P
a
r
a
m
e
t
e
r
s
:
i
n
t
e
g
e
r
,
p
a
r
a
m
e
t
e
r
:
:
N
G
N
O
D
=
2
!
n
u
m
b
e
r
o
f
a
n
c
h
o
r
n
o
d
e
s
u
s
e
d
f
o
r
t
h
e
s
h
a
p
e
f
u
n
c
t
i
o
n
s
o
f
t
h
e
e
l
e
m
e
n
t
s
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
v
a
r
i
a
b
l
e
s
t
h
a
t
c
a
n
b
e
c
h
a
n
g
e
d
b
y
t
h
e
u
s
e
r
b
y
e
d
i
t
i
n
g
t
h
e
f
i
l
e
"
p
a
r
f
i
l
e
"
(
s
e
e
a
l
s
o
f
o
r
d
e
s
c
r
i
p
t
i
o
n
s
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
t
m
a
x
!
t
h
e
d
u
r
a
t
i
o
n
o
f
w
a
v
e
p
r
o
p
a
g
a
t
i
o
n
t
o
b
e
s
i
m
u
l
a
t
e
d
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
C
o
u
r
a
n
t
_
n
r
!
C
o
u
r
a
n
t
n
u
m
b
e
r
f
o
r
t
h
e
s
t
a
b
i
l
i
t
y
c
r
i
t
e
r
i
o
n
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
f
r
q
!
d
o
m
i
n
a
n
t
f
r
e
q
u
e
n
c
y
o
f
w
a
v
e
l
e
t
t
o
b
e
s
i
m
u
l
a
t
e
d
o
r
c
o
n
v
o
l
u
t
e
d
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
d
i
s
t
a
n
c
e
!
d
i
s
t
a
n
c
e
o
f
r
e
c
e
i
v
e
r
,
w
h
e
n
o
n
l
y
o
n
e
i
s
u
s
e
d
i
n
t
e
g
e
r
p
d
!
p
l
o
t
d
e
v
i
c
e
i
n
t
e
g
e
r
s
r
c
_
n
e
!
n
u
m
b
e
r
o
f
e
l
e
m
e
n
t
t
o
c
o
n
t
a
i
n
s
o
u
r
c
e
i
n
t
e
g
e
r
s
r
c
_
N
!
G
L
L
p
o
i
n
t
a
t
w
h
i
c
h
t
h
e
s
o
u
r
c
e
s
h
a
l
l
b
e
l
o
c
a
t
e
d
i
n
t
e
g
e
r
p
l
o
t
_
r
e
c
_
n
r
!
p
l
o
t
t
h
e
s
e
i
s
m
o
g
r
a
m
o
f
r
e
c
e
i
v
e
r
n
u
m
b
e
r
.
.
.
c
h
a
r
a
c
t
e
r
(
l
e
n
=
2
)
m
o
d
_
i
d
!
f
l
a
g
f
o
r
m
o
d
e
l
t
y
p
e
c
h
a
r
a
c
t
e
r
(
l
e
n
=
2
)
s
t
f
p
a
r
!
f
l
a
g
f
o
r
s
o
u
r
c
e
t
y
p
e
c
h
a
r
a
c
t
e
r
(
l
e
n
=
2
)
a
r
r
a
y
_
i
d
!
f
l
a
g
f
o
r
a
r
r
a
y
t
y
p
e
c
h
a
r
a
c
t
e
r
(
l
e
n
=
1
)
b
c
o
n
d
i
t
i
o
n
!
f
l
a
g
f
o
r
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
l
o
g
i
c
a
l
c
o
n
v
o
l
u
t
e
!
f
l
a
g
f
o
r
c
o
n
v
o
l
u
t
i
o
n
b
e
f
o
r
e
p
l
o
t
t
i
n
g
l
o
g
i
c
a
l
t
x
t
!
f
l
a
g
f
o
r
c
r
e
a
t
i
n
g
a
s
c
i
i
o
u
t
p
u
t
l
o
g
i
c
a
l
p
e
r
c
e
n
t
!
f
l
a
g
f
o
r
r
u
n
t
i
m
e
d
i
s
p
l
a
y
o
f
p
e
r
c
e
n
t
a
g
e
l
o
g
i
c
a
l
s
r
c
_
f
l
a
g
!
f
l
a
g
i
f
p
o
i
n
t
s
o
u
r
c
e
o
r
i
n
i
t
i
a
l
c
o
n
d
i
t
i
o
n
s
l
o
g
i
c
a
l
r
e
g
_
g
r
i
d
_
f
l
a
g
!
f
l
a
g
i
f
r
e
g
u
l
a
r
o
r
i
r
r
e
g
u
l
a
r
g
r
i
d
!
e
n
d
o
f
i
n
i
t
i
a
l
i
z
a
t
i
o
n
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
R
e
a
d
p
a
r
a
m
e
t
e
r
f
i
l
e
"
.
/
p
a
r
f
i
l
e
"
o
p
e
n
(
u
n
i
t
=
1
9
,
f
i
l
e
=
p
a
r
f
i
l
e
)
!
i
n
p
u
t
o
f
t
h
e
p
a
r
a
m
e
t
e
r
s
N
(
d
e
g
r
e
e
o
f
P
o
l
y
n
o
m
i
a
l
s
)
,
n
e
(
n
u
m
b
e
r
o
f
e
l
e
m
e
n
t
s
)
r
e
a
d
(
1
9
,
*
)
N
142 Appendix A
i
f
(
N
1
0
0
)
t
h
e
n
w
r
i
t
e
(
0
,
*
)
"
O
r
d
e
r
N
>
1
0
0
i
s
n
o
t
p
o
s
s
i
b
l
e
.
"
s
t
o
p
e
n
d
i
f
r
e
a
d
(
1
9
,
*
)
r
e
g
_
g
r
i
d
_
f
l
a
g
r
e
a
d
(
1
9
,
*
)
n
e
r
e
a
d
(
1
9
,
*
)
m
o
d
_
i
d
r
e
a
d
(
1
9
,
*
)
t
m
a
x
r
e
a
d
(
1
9
,
*
)
L
e
n
g
t
h
r
e
a
d
(
1
9
,
*
)
C
o
u
r
a
n
t
_
n
r
r
e
a
d
(
1
9
,
*
)
b
c
o
n
d
i
t
i
o
n
r
e
a
d
(
1
9
,
*
)
s
r
c
_
f
l
a
g
r
e
a
d
(
1
9
,
*
)
s
r
c
_
n
e
r
e
a
d
(
1
9
,
*
)
s
r
c
_
N
r
e
a
d
(
1
9
,
*
)
s
t
f
p
a
r
r
e
a
d
(
1
9
,
*
)
f
r
q
r
e
a
d
(
1
9
,
*
)
a
r
r
a
y
_
i
d
r
e
a
d
(
1
9
,
*
)
d
i
s
t
a
n
c
e
r
e
a
d
(
1
9
,
*
)
p
d
r
e
a
d
(
1
9
,
*
)
p
l
o
t
_
r
e
c
_
n
r
r
e
a
d
(
1
9
,
*
)
c
o
n
v
o
l
u
t
e
r
e
a
d
(
1
9
,
*
)
p
e
r
c
e
n
t
r
e
a
d
(
1
9
,
*
)
t
x
t
c
l
o
s
e
(
1
9
)
!
g
e
t
t
h
e
s
o
u
r
c
e
i
n
t
o
t
h
e
c
o
r
r
e
c
t
e
l
e
m
e
n
t
g
i
v
e
n
b
y
"
s
r
c
_
n
e
"
i
f
(
s
r
c
_
N
>
N
)
t
h
e
n
d
o
w
h
i
l
e
(
s
r
c
_
N
>
N
)
s
r
c
_
N
=
s
r
c
_
N
N
e
n
d
d
o
e
n
d
i
f
m
o
d
_
i
d
=
t
r
i
m
(
m
o
d
_
i
d
)
d
e
g
=
n
l
e
t
t
e
r
s
t
r
i
n
g
(
N
,
2
)
!
d
o
m
i
n
a
n
t
p
e
r
i
o
d
o
f
t
h
e
w
a
v
e
l
e
t
p
t
=
1
.
/
f
r
q
!
c
r
e
a
t
e
f
i
l
e
n
a
m
e
f
o
r
t
h
i
s
r
u
n
!
f
n
a
m
e
1
=
i
f
(
m
o
d
_
i
d
=
=
s
o
)
t
h
e
n
c
a
l
l
c
r
e
a
t
e
_
s
e
m
_
f
n
a
m
e
(
f
n
a
m
e
1
,
e
o
_
s
,
N
,
2
,
n
e
,
5
,
a
r
r
a
y
_
i
d
)
e
l
s
e
i
f
(
m
o
d
_
i
d
=
=
s
t
)
t
h
e
n
c
a
l
l
c
r
e
a
t
e
_
s
e
m
_
f
n
a
m
e
(
f
n
a
m
e
1
,
e
t
_
s
,
N
,
2
,
n
e
,
5
,
a
r
r
a
y
_
i
d
)
e
l
s
e
i
f
(
m
o
d
_
i
d
=
=
s
h
)
t
h
e
n
c
a
l
l
c
r
e
a
t
e
_
s
e
m
_
f
n
a
m
e
(
f
n
a
m
e
1
,
e
h
_
s
,
N
,
2
,
n
e
,
5
,
a
r
r
a
y
_
i
d
)
e
n
d
i
f
!
c
h
e
c
k
f
o
r
i
r
r
e
g
u
l
a
r
g
r
i
d
!
i
f
(
r
e
g
_
g
r
i
d
_
f
l
a
g
=
=
.
t
r
u
e
.
)
t
h
e
n
a
l
l
o
c
a
t
e
(
x
m
e
s
h
(
0
:
n
e
)
,
d
e
(
1
:
1
)
)
x
m
e
s
h
(
0
)
=
0
d
e
(
1
)
=
1
.
/
f
l
o
a
t
(
n
e
)
*
L
e
n
g
t
h
d
o
i
=
1
,
n
e
x
m
e
s
h
(
i
)
=
x
m
e
s
h
(
i
1
)
+
d
e
(
1
)
e
n
d
d
o
e
l
s
e
!
i
f
i
r
r
e
g
u
l
a
r
g
r
i
d
g
e
t
m
e
s
h
d
a
t
a
f
o
r
m
f
i
l
e
"
.
/
D
A
T
A
_
m
e
s
h
/
m
e
s
h
1
D
.
d
a
t
"
o
p
e
n
(
u
n
i
t
=
2
4
,
f
i
l
e
=
D
A
T
A
_
m
e
s
h
/
m
e
s
h
1
D
.
d
a
t
)
i
=
0
d
o
r
e
a
d
(
2
4
,
*
,
e
n
d
=
5
0
0
)
i
=
i
+
1
e
n
d
d
o
5
0
0
c
l
o
s
e
(
2
4
)
n
e
=
i
1
a
l
l
o
c
a
t
e
(
x
m
e
s
h
(
0
:
n
e
)
,
d
e
(
1
:
n
e
)
)
o
p
e
n
(
u
n
i
t
=
2
4
,
f
i
l
e
=
D
A
T
A
_
m
e
s
h
/
m
e
s
h
1
D
.
d
a
t
)
i
=
0
d
o
r
e
a
d
(
2
4
,
*
,
e
n
d
=
7
0
0
)
x
m
e
s
h
(
i
)
i
=
i
+
1
e
n
d
d
o
7
0
0
c
l
o
s
e
(
2
4
)
d
o
i
=
1
,
n
e
d
e
(
i
)
=
x
m
e
s
h
(
i
)
x
m
e
s
h
(
i
1
)
e
n
d
d
o
L
e
n
g
t
h
=
x
m
e
s
h
(
n
e
)
x
m
e
s
h
(
0
)
e
n
d
i
f
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
s
t
a
r
t
i
n
g
t
h
e
p
r
o
g
r
a
m
!
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
t
o
t
a
l
n
u
m
b
e
r
o
f
n
o
d
e
s
n
g
(
g
l
o
b
a
l
n
u
m
b
e
r
i
n
g
)
n
g
=
N
*
n
e
+
1
M
=
N
+
1
!
a
l
l
o
c
a
t
i
n
g
a
l
l
m
a
t
r
i
c
e
s
a
l
l
o
c
a
t
e
(
m
e
(
0
:
N
,
1
:
n
e
)
,
r
h
o
_
e
(
0
:
N
,
1
:
n
e
)
,
m
u
e
_
e
(
0
:
N
,
1
:
n
e
)
,
v
e
(
0
:
N
,
1
:
n
e
)
)
a
l
l
o
c
a
t
e
(
M
a
s
s
(
1
:
n
g
)
,
M
a
s
s
I
n
v
(
1
:
n
g
)
,
U
(
1
:
n
g
)
,
F
(
1
:
n
g
)
,
x
(
1
:
n
g
)
,
U
o
l
d
(
1
:
n
g
)
,
U
n
e
w
(
1
:
n
g
)
,
d
x
(
1
:
n
g
1
)
)
a
l
l
o
c
a
t
e
(
R
h
o
_
g
l
o
b
a
l
(
1
:
n
g
)
,
M
u
e
_
g
l
o
b
a
l
(
1
:
n
g
)
)
a
l
l
o
c
a
t
e
(
w
e
i
g
h
t
s
(
0
:
N
)
,
D
L
(
0
:
N
,
0
:
N
)
,
C
(
1
:
M
,
1
:
n
e
)
,
x
i
(
0
:
N
)
,
x
i
d
i
f
f
(
1
:
N
)
)
a
l
l
o
c
a
t
e
(
U
_
i
n
i
t
(
1
:
n
g
)
,
U
o
l
d
_
i
n
i
t
(
1
:
n
g
)
)
a
l
l
o
c
a
t
e
(
J
a
c
o
b
i
(
0
:
N
,
1
:
n
e
)
,
J
a
c
o
b
i
a
n
(
0
:
N
,
1
:
n
e
)
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
(
0
:
N
,
1
:
n
e
)
)
a
l
l
o
c
a
t
e
(
s
h
a
p
e
1
D
(
1
:
N
G
N
O
D
,
0
:
N
)
,
d
e
r
s
h
a
p
e
1
D
(
1
:
N
G
N
O
D
,
0
:
N
)
)
!
c
l
e
a
r
i
n
g
a
l
l
v
a
r
i
a
b
l
e
s
M
a
s
s
=
0
M
a
s
s
I
n
v
=
0
U
=
0
m
e
=
0
F
=
0
D
L
=
0
J
a
c
o
b
i
=
0
J
a
c
o
b
i
a
n
=
0
J
a
c
o
b
i
_
i
n
v
e
r
s
e
=
0
s
h
a
p
e
1
D
=
0
d
e
r
s
h
a
p
e
1
D
=
0
C
=
0
U
o
l
d
=
0
U
n
e
w
=
0
R
h
o
_
g
l
o
b
a
l
=
0
M
u
e
_
g
l
o
b
a
l
=
0
r
h
o
_
e
=
0
m
u
e
_
e
=
0
m
i
n
U
=
h
u
g
e
(
U
)
m
a
x
U
=
t
i
n
y
(
U
)
!
r
e
a
d
t
h
e
i
n
f
o
r
m
a
t
i
o
n
o
n
e
l
a
s
t
i
c
i
t
y
c
o
e
f
f
i
c
i
e
n
t
m
u
f
r
o
m
f
i
l
e
!
i
f
(
m
o
d
_
i
d
=
=
s
h
)
t
h
e
n
m
u
e
_
f
i
l
e
=
D
A
T
A
_
m
u
e
/
/
/
f
n
a
m
e
1
(
1
:
1
2
)
/
/
_
m
u
e
.
t
x
t
o
p
e
n
(
u
n
i
t
=
2
5
,
f
i
l
e
=
m
u
e
_
f
i
l
e
)
i
=
0
d
o
i
=
1
,
n
e
d
o
j
=
0
,
N
r
e
a
d
(
2
5
,
*
)
m
u
e
_
e
(
j
,
i
)
e
n
d
d
o
e
n
d
d
o
e
l
s
e
i
f
(
m
o
d
_
i
d
=
=
s
o
)
t
h
e
n
m
u
e
_
f
i
l
e
=
D
A
T
A
_
m
u
e
/
/
/
f
n
a
m
e
1
(
1
:
4
)
/
/
0
0
_
0
0
h
o
m
_
m
u
e
.
t
x
t
o
p
e
n
(
u
n
i
t
=
2
5
,
f
i
l
e
=
m
u
e
_
f
i
l
e
)
r
e
a
d
(
2
5
,
*
)
m
u
e
_
e
(
0
,
1
)
m
u
e
_
e
=
m
u
e
_
e
(
0
,
1
)
s
t
e
p
_
i
x
=
0
M
u
e
_
g
l
o
b
a
l
=
m
u
e
_
e
(
0
,
1
)
e
l
s
e
i
f
(
m
o
d
_
i
d
=
=
s
t
)
t
h
e
n
m
u
e
_
f
i
l
e
=
D
A
T
A
_
m
u
e
/
/
/
f
n
a
m
e
1
(
1
:
4
)
/
/
0
0
_
0
0
t
w
o
_
m
u
e
.
t
x
t
o
p
e
n
(
u
n
i
t
=
2
5
,
f
i
l
e
=
m
u
e
_
f
i
l
e
)
r
e
a
d
(
2
5
,
*
)
m
u
e
_
e
(
0
,
1
)
r
e
a
d
(
2
5
,
*
)
m
u
e
_
e
(
N
,
n
e
)
r
e
a
d
(
2
5
,
*
)
e
l
_
s
t
e
p
_
i
x
(
1
)
A.2. The Fortran 1-D SEM Program Code 143
m
u
e
_
e
(
:
,
1
:
e
l
_
s
t
e
p
_
i
x
(
1
)
1
)
=
m
u
e
_
e
(
0
,
1
)
m
u
e
_
e
(
:
,
e
l
_
s
t
e
p
_
i
x
(
1
)
:
n
e
)
=
m
u
e
_
e
(
N
,
n
e
)
s
t
e
p
_
i
x
=
N
*
(
e
l
_
s
t
e
p
_
i
x
(
1
)
1
)
+
1
!
c
r
e
a
t
i
n
g
t
h
e
"
g
l
o
b
a
l
"
M
u
e
v
e
c
t
o
r
!
(
o
n
l
y
n
e
e
d
e
d
f
o
r
t
h
e
c
a
l
c
u
a
l
t
i
o
n
o
f
t
h
e
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
)
!
!
M
u
e
_
g
l
o
b
a
l
(
1
:
s
t
e
p
_
i
x
1
)
=
m
u
e
_
e
(
0
,
1
)
M
u
e
_
g
l
o
b
a
l
(
s
t
e
p
_
i
x
:
n
g
)
=
m
u
e
_
e
(
N
,
n
e
)
e
n
d
i
f
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
F
i
n
i
s
h
e
d
r
e
a
d
i
n
g
m
u
e
d
a
t
a
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
c
l
o
s
e
(
2
5
)
!
r
e
a
d
t
h
e
d
e
n
s
i
t
y
i
n
f
o
r
m
a
t
i
o
n
f
r
o
m
f
i
l
e
!
i
f
(
m
o
d
_
i
d
=
=
s
h
)
t
h
e
n
r
h
o
_
f
i
l
e
=
D
A
T
A
_
r
h
o
/
/
/
f
n
a
m
e
1
(
1
:
1
2
)
/
/
_
r
h
o
.
t
x
t
o
p
e
n
(
u
n
i
t
=
2
6
,
f
i
l
e
=
r
h
o
_
f
i
l
e
)
i
=
0
d
o
i
=
1
,
n
e
d
o
j
=
0
,
N
r
e
a
d
(
2
6
,
*
)
r
h
o
_
e
(
j
,
i
)
e
n
d
d
o
e
n
d
d
o
e
l
s
e
i
f
(
m
o
d
_
i
d
=
=
s
o
)
t
h
e
n
r
h
o
_
f
i
l
e
=
D
A
T
A
_
r
h
o
/
/
/
f
n
a
m
e
1
(
1
:
4
)
/
/
0
0
_
0
0
h
o
m
_
r
h
o
.
t
x
t
o
p
e
n
(
u
n
i
t
=
2
6
,
f
i
l
e
=
r
h
o
_
f
i
l
e
)
r
e
a
d
(
2
6
,
*
)
r
h
o
_
e
(
0
,
1
)
r
h
o
_
e
=
r
h
o
_
e
(
0
,
1
)
s
t
e
p
_
i
x
=
0
R
h
o
_
g
l
o
b
a
l
=
r
h
o
_
e
(
0
,
1
)
e
l
s
e
i
f
(
m
o
d
_
i
d
=
=
s
t
)
t
h
e
n
r
h
o
_
f
i
l
e
=
D
A
T
A
_
r
h
o
/
/
/
f
n
a
m
e
1
(
1
:
4
)
/
/
0
0
_
0
0
t
w
o
_
r
h
o
.
t
x
t
o
p
e
n
(
u
n
i
t
=
2
5
,
f
i
l
e
=
r
h
o
_
f
i
l
e
)
r
e
a
d
(
2
5
,
*
)
r
h
o
_
e
(
0
,
1
)
r
e
a
d
(
2
5
,
*
)
r
h
o
_
e
(
N
,
n
e
)
r
e
a
d
(
2
5
,
*
)
e
l
_
s
t
e
p
_
i
x
(
2
)
i
f
(
e
l
_
s
t
e
p
_
i
x
(
1
)
e
l
_
s
t
e
p
_
i
x
(
2
)
)
t
h
e
n
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
w
r
i
t
e
(
0
,
*
)
*
*
*
W
a
r
n
i
n
g
!
*
*
*
w
r
i
t
e
(
0
,
*
)
*
*
*
P
r
o
p
e
r
t
i
e
s
c
h
a
n
g
e
i
n
d
i
f
f
e
r
e
n
t
e
l
e
m
e
n
t
s
*
*
*
w
r
i
t
e
(
0
,
*
)
*
*
*
N
o
t
a
t
w
o
l
a
y
e
r
c
a
s
e
a
n
y
m
o
r
e
*
*
*
w
r
i
t
e
(
0
,
*
)
*
*
*
C
a
l
c
u
l
a
t
i
o
n
o
f
a
n
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
i
s
n
o
t
p
o
s
s
i
b
l
e
!
*
*
*
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
e
n
d
i
f
r
h
o
_
e
(
:
,
1
:
e
l
_
s
t
e
p
_
i
x
(
2
)
1
)
=
r
h
o
_
e
(
0
,
1
)
r
h
o
_
e
(
:
,
e
l
_
s
t
e
p
_
i
x
(
2
)
:
n
e
)
=
r
h
o
_
e
(
N
,
n
e
)
s
t
e
p
_
i
x
=
N
*
(
e
l
_
s
t
e
p
_
i
x
(
2
)
1
)
+
1
!
c
r
e
a
t
i
n
g
t
h
e
"
g
l
o
b
a
l
"
R
h
o
v
e
c
t
o
r
!
(
o
n
l
y
n
e
e
d
e
d
f
o
r
t
h
e
c
a
l
c
u
a
l
t
i
o
n
o
f
t
h
e
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
)
!
!
R
h
o
_
g
l
o
b
a
l
(
1
:
s
t
e
p
_
i
x
1
)
=
r
h
o
_
e
(
0
,
1
)
R
h
o
_
g
l
o
b
a
l
(
s
t
e
p
_
i
x
:
n
g
)
=
r
h
o
_
e
(
N
,
n
e
)
e
n
d
i
f
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
F
i
n
i
s
h
e
d
r
e
a
d
i
n
g
d
e
n
s
i
t
y
d
a
t
a
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
c
l
o
s
e
(
2
6
)
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
w
a
v
e
v
e
l
o
c
i
t
y
i
n
s
i
d
e
e
a
c
h
e
l
e
m
e
n
t
!
d
o
i
=
1
,
n
e
d
o
j
=
0
,
N
v
e
(
j
,
i
)
=
s
q
r
t
(
m
u
e
_
e
(
j
,
i
)
/
r
h
o
_
e
(
j
,
i
)
)
e
n
d
d
o
e
n
d
d
o
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
s
t
e
p
_
i
x
=
,
s
t
e
p
_
i
x
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
d
e
r
i
v
a
t
i
v
e
s
o
f
t
h
e
l
a
g
r
a
n
g
e
p
o
l
y
n
o
m
i
a
l
s
a
t
t
h
e
g
l
l
n
o
d
e
s
!
a
n
d
g
e
t
t
i
n
g
t
h
e
c
o
l
l
o
c
a
t
i
o
n
p
o
i
n
t
s
x
i
(
i
)
a
n
d
t
h
e
w
e
i
g
h
t
s
w
e
i
g
h
t
s
(
i
)
f
o
r
!
t
h
e
g
l
l
i
n
t
e
g
r
a
t
i
o
n
r
u
l
e
!
c
a
l
l
d
i
f
f
_
l
a
g
r
a
n
g
e
(
N
,
D
L
,
w
e
i
g
h
t
s
,
x
i
)
!
d
e
f
i
n
i
n
g
t
h
e
m
a
p
p
i
n
g
f
u
n
c
t
i
o
n
a
n
d
t
h
e
J
a
c
o
b
i
m
a
t
r
i
x
!
c
a
l
l
g
e
t
_
s
h
a
p
e
1
D
(
s
h
a
p
e
1
D
,
d
e
r
s
h
a
p
e
1
D
,
x
i
)
c
a
l
l
c
a
l
c
_
j
a
c
o
b
i
a
n
1
D
(
J
a
c
o
b
i
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
s
h
a
p
e
1
D
,
d
e
r
s
h
a
p
e
1
D
,
x
m
e
s
h
)
!
c
r
e
a
t
i
n
g
t
h
e
c
o
r
r
e
c
t
x
v
e
c
t
o
r
w
i
t
h
n
o
n
e
q
u
i
d
i
s
t
a
n
t
p
o
i
n
t
s
c
a
l
l
c
r
e
a
t
e
_
x
_
i
r
r
e
g
(
x
,
x
m
e
s
h
,
s
h
a
p
e
1
D
)
d
o
i
=
1
,
n
g
1
d
x
(
i
)
=
x
(
i
+
1
)
x
(
i
)
e
n
d
d
o
!
d
e
f
i
n
i
n
g
t
h
e
t
i
m
e
v
e
c
t
o
r
!
!
g
e
t
t
i
n
g
t
h
e
s
t
a
b
i
l
i
t
y
c
r
i
t
e
r
i
o
n
r
i
g
h
t
!
!
c
h
e
c
k
i
n
g
i
f
C
o
u
r
a
n
t
n
u
m
b
e
r
i
s
s
m
a
l
l
e
n
o
u
g
h
f
o
r
a
b
s
o
r
b
i
n
g
a
n
d
p
e
r
i
o
d
i
c
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
i
f
(
b
c
o
n
d
i
t
i
o
n
=
=
)
t
h
e
n
i
f
(
C
o
u
r
a
n
t
_
n
r
>
0
.
4
2
)
t
h
e
n
C
o
u
r
a
n
t
_
n
r
=
0
.
4
2
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
W
A
R
N
I
N
G
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
C
o
u
r
a
n
t
v
a
l
u
e
i
s
t
o
o
h
i
g
h
f
o
r
a
b
s
o
r
b
i
n
g
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
!
*
*
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
C
h
a
n
g
i
n
g
t
h
e
C
o
u
r
a
n
t
v
a
l
u
e
t
o
0
.
4
2
(
m
a
x
i
m
u
m
v
a
l
u
e
p
o
s
s
i
b
l
e
)
!
*
*
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
w
r
i
t
e
(
0
,
*
)
e
n
d
i
f
e
n
d
i
f
d
x
m
i
n
=
m
i
n
_
v
e
c
t
o
r
(
d
x
)
v
_
m
a
x
=
m
a
x
_
m
a
t
r
i
x
2
d
(
v
e
)
d
t
=
C
o
u
r
a
n
t
_
n
r
*
d
x
m
i
n
/
v
_
m
a
x
!
S
t
a
b
i
l
i
t
y
C
r
i
t
e
r
i
o
n
!
!
!
!
!
!
!
!
!
!
!
!
!
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
d
t
=
,
d
t
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
n
u
m
b
e
r
o
f
t
i
m
e
s
t
e
p
s
t
o
b
e
e
v
a
l
u
a
t
e
d
n
t
=
i
d
i
n
t
(
t
m
a
x
/
d
t
)
!
a
l
l
o
c
a
t
i
n
g
a
l
l
v
e
c
t
o
r
s
,
w
h
i
c
h
l
e
n
g
t
h
i
s
d
e
p
e
n
d
e
n
t
o
n
n
t
a
l
l
o
c
a
t
e
(
t
(
1
:
n
t
)
,
s
r
c
(
1
:
n
t
)
,
s
t
f
(
1
:
n
t
)
,
c
p
u
(
1
:
n
t
)
,
c
p
u
_
d
t
(
1
:
n
t
1
)
,
r
e
c
t
i
m
e
s
(
1
:
n
t
)
,
r
e
f
t
i
m
e
s
(
1
:
n
t
)
)
t
=
0
s
r
c
=
0
!
t
i
m
e
v
e
c
t
o
r
t
=
(
/
(
f
l
o
a
t
(
i
)
,
i
=
1
,
n
t
)
/
)
*
d
t
!
d
e
f
i
n
i
n
g
t
h
e
s
o
u
r
c
e
t
e
r
m
o
r
t
h
e
i
n
i
t
i
a
l
c
o
n
d
i
t
i
o
n
s
,
d
e
p
e
n
d
i
n
g
o
n
s
r
c
_
f
l
a
g
!
i
f
(
s
r
c
_
f
l
a
g
=
=
.
t
r
u
e
.
)
t
h
e
n
!
p
o
i
n
t
s
o
u
r
c
e
i
s
u
s
e
d
!
c
r
e
a
t
i
n
g
t
w
o
s
o
u
r
c
e
t
i
m
e
f
u
n
c
t
i
o
n
s
:
d
e
l
t
a
p
e
a
k
i
n
t
i
m
e
f
o
r
!
t
h
e
s
o
l
u
t
i
o
n
o
f
t
h
e
w
a
v
e
e
q
u
a
t
i
o
n
=
>
G
r
e
e
n
s
f
u
n
c
t
i
o
n
o
f
t
h
e
!
m
o
d
e
l
s
p
a
c
e
!
a
n
d
a
r
i
c
k
e
r
w
a
v
e
l
e
t
w
i
t
h
d
o
m
i
n
a
n
t
p
e
r
i
o
d
p
t
w
h
i
c
h
i
s
l
a
t
e
r
!
c
o
n
v
o
l
u
t
e
d
w
i
t
h
t
h
e
G
r
e
e
n
s
f
u
n
c
t
i
o
n
t
o
o
b
t
a
i
n
a
s
y
n
t
h
e
t
i
c
!
s
e
i
s
m
o
g
r
a
m
i
f
(
s
t
f
p
a
r
=
=
g
a
)
t
h
e
n
c
a
l
l
g
a
u
s
s
(
s
r
c
,
d
t
,
p
t
)
s
t
f
=
s
r
c
e
l
s
e
i
f
(
s
t
f
p
a
r
=
=
r
1
)
t
h
e
n
c
a
l
l
r
i
c
k
e
r
(
s
r
c
,
d
t
,
p
t
,
n
t
)
144 Appendix A
s
t
f
=
s
r
c
e
l
s
e
i
f
(
s
t
f
p
a
r
=
=
r
2
)
t
h
e
n
c
a
l
l
r
i
c
k
e
r
2
(
s
r
c
,
d
t
,
p
t
,
n
t
)
s
t
f
=
s
r
c
e
l
s
e
i
f
(
s
t
f
p
a
r
=
=
d
e
)
t
h
e
n
c
a
l
l
d
e
l
t
a
(
n
t
,
1
,
d
t
,
s
r
c
)
i
f
(
p
d
3
)
t
h
e
n
c
a
l
l
r
i
c
k
e
r
2
(
s
t
f
,
d
t
,
p
t
,
n
t
)
e
n
d
i
f
e
n
d
i
f
e
l
s
e
!
i
n
i
t
i
a
l
c
o
n
d
i
t
i
o
n
s
a
r
e
u
s
e
d
o
p
e
n
(
u
n
i
t
=
1
9
,
f
i
l
e
=
D
A
T
A
_
i
n
i
t
i
a
l
/
/
/
f
n
a
m
e
1
(
1
:
1
3
)
/
/
i
n
1
.
t
x
t
)
d
o
i
=
1
,
n
g
r
e
a
d
(
1
9
,
*
)
U
_
i
n
i
t
(
i
)
e
n
d
d
o
c
l
o
s
e
(
1
9
)
o
p
e
n
(
u
n
i
t
=
1
9
,
f
i
l
e
=
D
A
T
A
_
i
n
i
t
i
a
l
/
/
/
f
n
a
m
e
1
(
1
:
1
3
)
/
/
i
n
2
.
t
x
t
)
d
o
i
=
1
,
n
g
r
e
a
d
(
1
9
,
*
)
U
o
l
d
_
i
n
i
t
(
i
)
e
n
d
d
o
c
l
o
s
e
(
1
9
)
U
=
U
_
i
n
i
t
U
o
l
d
=
U
o
l
d
_
i
n
i
t
e
n
d
i
f
!
c
r
e
a
t
i
n
g
t
h
e
e
l
e
m
e
n
t
a
l
m
a
s
s
m
a
t
r
i
c
e
s
m
e
!
d
o
i
=
1
,
n
e
d
o
j
=
0
,
N
m
e
(
j
,
i
)
=
r
h
o
_
e
(
j
,
i
)
*
J
a
c
o
b
i
a
n
(
j
,
i
)
*
w
e
i
g
h
t
s
(
j
)
e
n
d
d
o
e
n
d
d
o
!
c
r
e
a
t
i
n
g
t
h
e
c
o
n
n
e
c
t
i
v
i
t
y
m
a
t
r
i
x
f
o
r
t
h
e
1
D
c
a
s
e
!
C
=
0
d
o
i
=
1
,
n
e
d
o
j
=
1
,
M
C
(
j
,
i
)
=
j
+
(
i
1
)
*
N
e
n
d
d
o
e
n
d
d
o
!
c
o
n
n
e
c
t
i
n
g
t
h
e
v
e
c
t
o
r
s
m
e
t
o
M
!
c
a
l
l
c
o
n
n
e
c
t
_
v
e
c
(
N
,
n
e
,
n
g
,
m
e
,
M
a
s
s
,
C
)
!
i
f
p
e
r
i
o
d
i
c
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
a
r
e
u
s
e
d
c
o
n
n
e
c
t
f
i
r
s
t
a
n
d
l
a
s
t
e
l
e
m
e
n
t
i
f
(
b
c
o
n
d
i
t
i
o
n
=
=
)
t
h
e
n
t
m
p
=
0
.
t
m
p
=
M
a
s
s
(
1
)
M
a
s
s
(
1
)
=
M
a
s
s
(
1
)
+
M
a
s
s
(
n
g
)
M
a
s
s
(
n
g
)
=
M
a
s
s
(
n
g
)
+
t
m
p
e
n
d
i
f
d
e
a
l
l
o
c
a
t
e
(
m
e
)
!
A
d
d
i
n
g
t
h
e
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
t
o
t
h
e
s
o
u
r
c
e
v
e
c
t
o
r
F
!
>
s
e
e
s
u
b
r
o
u
t
i
n
e
c
a
l
c
u
l
a
t
e
_
F
i
n
m
o
d
u
l
e
s
e
m
_
s
p
e
c
_
m
o
d
u
l
e
s
.
f
9
0
!
s
e
t
t
i
n
g
u
p
t
h
e
r
e
c
e
i
v
e
r
a
r
r
a
y
a
c
c
o
r
d
i
n
g
t
o
a
r
r
a
y
_
i
d
!
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
s
o
u
r
c
e
p
o
s
i
t
i
o
n
s
o
u
r
c
e
_
i
x
=
(
s
r
c
_
n
e
1
)
*
N
+
s
r
c
_
N
s
o
u
r
c
e
_
p
o
s
=
x
(
s
o
u
r
c
e
_
i
x
)
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
r
e
c
e
i
v
e
r
p
o
s
i
t
i
o
n
s
i
f
(
a
r
r
a
y
_
i
d
(
1
:
1
)
=
=
)
t
h
e
n
r
e
c
_
n
u
m
=
1
p
l
o
t
_
r
e
c
_
n
r
=
1
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
(
1
:
1
)
=
=
)
t
h
e
n
r
e
c
_
n
u
m
=
2
4
0
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
(
1
:
1
)
=
=
)
t
h
e
n
r
e
c
_
n
u
m
=
1
5
0
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
(
1
:
1
)
=
=
)
t
h
e
n
r
e
c
_
n
u
m
=
1
0
0
e
n
d
i
f
a
l
l
o
c
a
t
e
(
r
e
c
e
i
v
e
r
_
i
x
(
1
:
r
e
c
_
n
u
m
)
,
s
r
d
(
1
:
r
e
c
_
n
u
m
)
,
s
r
d
_
d
i
f
f
(
1
:
r
e
c
_
n
u
m
1
)
)
a
l
l
o
c
a
t
e
(
r
e
c
e
i
v
e
r
_
p
o
s
(
1
:
r
e
c
_
n
u
m
)
,
n
u
m
_
e
l
(
1
:
r
e
c
_
n
u
m
)
)
a
l
l
o
c
a
t
e
(
r
e
c
e
i
v
e
r
_
d
x
(
1
:
r
e
c
_
n
u
m
)
)
s
r
d
=
0
.
s
r
d
_
d
i
f
f
=
0
.
r
e
c
e
i
v
e
r
_
p
o
s
=
0
.
r
e
c
e
i
v
e
r
_
i
x
=
0
r
e
c
e
i
v
e
r
_
d
x
=
0
.
i
f
(
a
r
r
a
y
_
i
d
(
1
:
1
)
=
=
)
s
r
d
(
1
)
=
d
i
s
t
a
n
c
e
c
a
l
l
s
e
t
u
p
_
a
c
_
a
r
r
a
y
(
a
r
r
a
y
_
i
d
,
s
o
u
r
c
e
_
i
x
,
r
e
c
e
i
v
e
r
_
i
x
,
r
e
c
_
n
u
m
,
s
r
d
,
s
r
d
_
d
i
f
f
,
&
r
e
c
e
i
v
e
r
_
p
o
s
,
r
e
c
e
i
v
e
r
_
d
x
,
n
u
m
_
e
l
,
x
,
x
m
e
s
h
)
!
a
l
l
o
c
a
t
i
n
g
t
h
e
s
e
i
s
m
o
g
r
a
m
a
l
l
o
c
a
t
e
(
g
r
e
e
n
s
(
1
:
n
t
,
1
:
r
e
c
_
n
u
m
)
)
!
i
f
p
l
o
t
_
d
e
v
i
s
n
o
t
3
:
!
p
r
e
p
a
r
i
n
g
t
h
e
p
l
o
t
!
i
f
(
p
d
3
)
t
h
e
n
i
f
(
N
1
0
)
t
h
e
n
p
o
l
d
e
g
=
"
P
o
l
y
n
o
m
i
a
l
s
o
f
d
e
g
r
e
e
"
/
/
d
e
g
(
:
)
e
l
s
e
p
o
l
d
e
g
=
"
P
o
l
y
n
o
m
i
a
l
s
o
f
d
e
g
r
e
e
"
/
/
d
e
g
(
2
:
)
e
n
d
i
f
x
l
a
b
=
"
x
"
x
l
a
b
=
t
r
i
m
(
x
l
a
b
)
y
l
a
b
=
"
D
i
s
p
l
a
c
e
m
e
n
t
U
"
y
l
a
b
=
t
r
i
m
(
y
l
a
b
)
a
l
l
o
c
a
t
e
(
a
n
a
l
y
t
i
c
a
l
(
1
,
1
:
n
t
)
,
d
i
f
f
_
a
n
a
(
1
:
r
e
c
_
n
u
m
)
)
a
l
l
o
c
a
t
e
(
c
o
n
v
_
a
n
a
(
1
:
n
t
)
)
c
o
n
v
_
a
n
a
=
0
a
n
a
l
y
t
i
c
a
l
(
1
,
n
t
/
2
:
n
t
)
=
1
.
!
c
a
l
l
c
o
n
v
_
f
f
t
(
a
n
a
l
y
t
i
c
a
l
(
p
l
o
t
_
r
e
c
_
n
r
,
:
)
,
s
t
f
,
c
o
n
v
_
a
n
a
)
c
a
l
l
c
o
n
v
_
f
f
t
(
a
n
a
l
y
t
i
c
a
l
(
1
,
:
)
,
s
t
f
,
c
o
n
v
_
a
n
a
)
s
r
c
_
m
a
x
=
1
.
2
*
m
a
x
_
v
e
c
t
o
r
(
c
o
n
v
_
a
n
a
)
s
r
c
_
m
i
n
=
1
.
2
*
m
i
n
_
v
e
c
t
o
r
(
c
o
n
v
_
a
n
a
)
d
e
a
l
l
o
c
a
t
e
(
c
o
n
v
_
a
n
a
,
a
n
a
l
y
t
i
c
a
l
,
d
i
f
f
_
a
n
a
)
e
n
d
i
f
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
s
o
l
u
t
i
o
n
t
o
t
h
e
w
a
v
e
e
q
u
a
t
i
o
n
!
!
i
n
v
e
r
t
i
n
g
t
h
e
m
a
s
s
m
a
t
r
i
x
d
o
i
=
1
,
n
g
M
a
s
s
I
n
v
(
i
)
=
1
.
/
M
a
s
s
(
i
)
e
n
d
d
o
d
e
a
l
l
o
c
a
t
e
(
M
a
s
s
)
A.2. The Fortran 1-D SEM Program Code 145
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
t
i
m
e
l
o
o
p
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
!
d
o
i
=
1
,
n
t
i
f
(
i
=
=
1
)
t
h
e
n
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
T
i
m
e
l
o
o
p
s
t
a
r
t
e
d
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
w
r
i
t
e
(
0
,
*
)
e
n
d
i
f
!
c
o
m
p
u
t
e
t
h
e
f
o
r
c
e
a
t
e
v
e
r
y
g
r
i
d
p
o
i
n
t
o
f
t
h
e
m
e
s
h
f
o
r
t
i
m
e
s
t
e
p
i
F
=
0
i
f
(
b
c
o
n
d
i
t
i
o
n
=
=
)
t
h
e
n
!
a
b
s
o
r
b
i
n
g
b
o
u
n
d
a
r
i
e
s
b
v
1
=
r
h
o
_
e
(
0
,
1
)
*
v
e
(
0
,
1
)
*
(
(
U
(
1
)
U
o
l
d
(
1
)
)
/
d
t
)
b
v
n
g
=
r
h
o
_
e
(
N
,
n
e
)
*
v
e
(
N
,
n
e
)
*
(
(
U
(
n
g
)
U
o
l
d
(
n
g
)
)
/
d
t
)
c
a
l
l
c
a
l
c
u
l
a
t
e
_
F
(
N
,
n
e
,
D
L
,
w
e
i
g
h
t
s
,
m
u
e
_
e
,
U
,
F
,
C
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
v
e
(
s
r
c
_
N
,
s
r
c
_
n
e
)
,
&
s
r
c
(
i
)
,
s
r
c
_
n
e
,
s
r
c
_
N
,
b
v
1
,
b
v
n
g
,
s
t
f
p
a
r
,
d
t
)
e
l
s
e
c
a
l
l
c
a
l
c
u
l
a
t
e
_
F
(
N
,
n
e
,
D
L
,
w
e
i
g
h
t
s
,
m
u
e
_
e
,
U
,
F
,
C
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
v
e
(
s
r
c
_
N
,
s
r
c
_
n
e
)
,
&
s
r
c
(
i
)
,
s
r
c
_
n
e
,
s
r
c
_
N
,
s
t
f
p
a
r
=
s
t
f
p
a
r
,
d
t
=
d
t
)
e
n
d
i
f
i
f
(
b
c
o
n
d
i
t
i
o
n
=
=
)
t
h
e
n
t
m
p
=
0
.
t
m
p
=
F
(
1
)
F
(
1
)
=
F
(
1
)
+
F
(
n
g
)
F
(
n
g
)
=
F
(
n
g
)
+
t
m
p
e
n
d
i
f
!
c
h
e
c
k
i
n
g
f
o
r
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
i
f
(
b
c
o
n
d
i
t
i
o
n
=
=
)
t
h
e
n
U
n
e
w
(
2
:
n
g
1
)
=
d
t
*
*
2
.
*
M
a
s
s
I
n
v
(
2
:
n
g
1
)
*
F
(
2
:
n
g
1
)
+
2
.
*
U
(
2
:
n
g
1
)
U
o
l
d
(
2
:
n
g
1
)
e
l
s
e
U
n
e
w
=
d
t
*
*
2
.
*
M
a
s
s
I
n
v
*
F
+
2
.
*
U
U
o
l
d
e
n
d
i
f
!
c
r
e
a
t
i
n
g
t
h
e
G
r
e
e
n
s
f
u
n
c
t
i
o
n
s
d
o
j
=
1
,
r
e
c
_
n
u
m
i
f
(
a
r
r
a
y
_
i
d
(
2
:
2
)
=
=
)
t
h
e
n
!
r
e
c
e
i
v
e
r
s
s
o
m
e
w
h
e
r
e
i
n
s
i
d
e
t
h
e
e
l
e
m
e
n
t
s
c
a
l
l
g
e
t
_
f
u
n
c
_
a
t
_
p
o
s
(
N
,
n
u
m
_
e
l
(
j
)
,
U
n
e
w
,
g
r
e
e
n
s
(
i
,
j
)
,
r
e
c
e
i
v
e
r
_
p
o
s
(
j
)
,
x
i
,
C
,
x
m
e
s
h
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
(
2
:
2
)
=
=
)
t
h
e
n
!
r
e
c
e
i
v
e
r
s
e
x
a
c
t
l
y
o
n
G
L
L
p
o
i
n
t
s
g
r
e
e
n
s
(
i
,
j
)
=
U
n
e
w
(
r
e
c
e
i
v
e
r
_
i
x
(
j
)
)
e
n
d
i
f
e
n
d
d
o
!
i
f
p
l
o
t
_
d
e
v
i
s
n
o
t
3
:
!
i
f
(
p
d
p
d
4
)
t
h
e
n
!
p
r
e
p
a
r
i
n
g
t
h
e
p
l
o
t
w
r
i
t
e
(
t
i
m
e
,
(
F
1
0
.
5
)
)
t
(
i
)
t
i
m
e
=
t
r
i
m
(
t
i
m
e
)
!
p
l
o
t
t
h
e
d
i
s
p
l
a
c
e
m
e
n
t
a
t
t
i
m
e
(
i
)
o
n
t
h
e
i
n
t
e
r
v
a
l
l
[
0
,
1
]
i
f
(
m
i
n
_
v
e
c
t
o
r
(
U
n
e
w
)
<
s
r
c
_
m
i
n
)
t
h
e
n
m
i
n
U
=
1
.
2
*
m
i
n
_
v
e
c
t
o
r
(
U
n
e
w
)
e
l
s
e
m
i
n
U
=
s
r
c
_
m
i
n
e
n
d
i
f
i
f
(
m
a
x
_
v
e
c
t
o
r
(
U
n
e
w
)
>
s
r
c
_
m
a
x
)
t
h
e
n
m
a
x
U
=
1
.
2
*
m
a
x
_
v
e
c
t
o
r
(
U
n
e
w
)
e
l
s
e
m
a
x
U
=
s
r
c
_
m
a
x
e
n
d
i
f
i
f
(
p
d
=
=
1
)
t
h
e
n
i
f
(
i
=
=
1
)
j
=
0
i
f
(
i
=
=
1
m
o
d
(
i
,
5
0
)
=
=
0
)
t
h
e
n
j
=
i
/
5
0
+
1
g
i
f
_
n
u
m
=
n
l
e
t
t
e
r
s
t
r
i
n
g
(
j
,
3
)
p
l
o
t
_
f
i
l
e
=
t
r
i
m
(
D
A
T
A
_
T
M
P
/
/
/
t
r
i
m
(
f
n
a
m
e
1
(
1
:
1
3
)
)
/
/
n
r
/
/
t
r
i
m
(
g
i
f
_
n
u
m
)
)
c
a
l
l
p
l
o
t
_
1
d
_
s
n
a
p
s
h
o
t
(
n
g
,
r
e
a
l
(
x
)
,
r
e
a
l
(
U
n
e
w
)
,
x
l
a
b
,
y
l
a
b
,
p
o
l
d
e
g
,
t
r
i
m
(
p
l
o
t
_
f
i
l
e
)
,
&
p
d
,
t
i
m
e
,
i
,
r
e
a
l
(
m
i
n
U
)
,
r
e
a
l
(
m
a
x
U
)
,
r
e
a
l
(
s
o
u
r
c
e
_
p
o
s
)
)
e
n
d
i
f
e
l
s
e
c
a
l
l
p
l
o
t
_
1
d
_
s
n
a
p
s
h
o
t
(
n
g
,
r
e
a
l
(
x
)
,
r
e
a
l
(
U
n
e
w
)
,
x
l
a
b
,
y
l
a
b
,
p
o
l
d
e
g
,
D
A
T
A
_
T
M
P
/
/
/
f
n
a
m
e
1
,
&
p
d
,
t
i
m
e
,
i
,
r
e
a
l
(
m
i
n
U
)
,
r
e
a
l
(
m
a
x
U
)
,
r
e
a
l
(
s
o
u
r
c
e
_
p
o
s
)
)
e
n
d
i
f
e
l
s
e
i
f
(
p
d
=
=
4
i
=
=
n
t
)
t
h
e
n
p
d
=
0
e
n
d
i
f
!
p
r
e
p
a
r
e
f
o
r
n
e
x
t
t
i
m
e
s
t
e
p
U
o
l
d
=
U
U
=
U
n
e
w
c
a
l
l
c
p
u
_
t
i
m
e
(
c
p
u
(
i
)
)
i
f
(
p
e
r
c
e
n
t
=
=
.
t
r
u
e
.
p
d
n
t
>
5
0
0
0
)
t
h
e
n
i
f
(
m
o
d
(
i
,
1
0
)
=
=
0
)
t
h
e
n
w
r
i
t
e
(
0
,
*
)
(
f
l
o
a
t
(
i
)
/
f
l
o
a
t
(
n
t
)
*
1
0
0
.
)
,
%
d
o
n
e
w
r
i
t
e
(
0
,
*
)
c
p
u
t
i
m
e
=
,
c
p
u
(
i
)
c
p
u
(
1
)
e
n
d
i
f
e
n
d
i
f
e
n
d
d
o
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
e
n
d
o
f
t
i
m
e
l
o
o
p
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
!
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
T
i
m
e
l
o
o
p
e
n
d
e
d
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
w
r
i
t
e
(
0
,
*
)
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
m
e
a
n
v
a
l
u
e
o
f
c
p
u
t
i
m
e
n
e
e
d
e
d
f
o
r
o
n
e
t
i
m
e
s
t
e
p
d
t
d
o
i
=
1
,
n
t
1
c
p
u
_
d
t
(
i
)
=
c
p
u
(
i
+
1
)
c
p
u
(
i
)
e
n
d
d
o
c
p
u
_
d
t
_
m
e
a
n
=
s
u
m
(
c
p
u
_
d
t
)
/
s
i
z
e
(
c
p
u
_
d
t
)
!
i
f
g
i
f
o
r
p
s
f
i
l
e
i
s
p
l
o
t
t
e
d
i
f
(
p
d
=
=
1
)
t
h
e
n
c
a
l
l
p
g
p
a
g
e
e
n
d
i
f
i
f
(
p
d
=
=
2
)
t
h
e
n
c
a
l
l
p
g
p
a
g
e
e
n
d
i
f
!
c
a
l
c
u
l
a
t
e
t
h
e
c
o
r
r
e
s
p
o
n
d
i
n
g
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
i
f
(
p
d
t
x
t
=
=
.
t
r
u
e
.
)
t
h
e
n
!
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
o
n
l
y
a
v
a
i
l
a
b
l
e
f
o
r
h
o
m
o
g
e
n
e
o
u
s
o
r
t
w
o
l
a
y
e
r
e
d
m
o
d
e
l
i
f
(
m
o
d
_
i
d
=
=
s
o
m
o
d
_
i
d
=
=
s
t
)
t
h
e
n
a
l
l
o
c
a
t
e
(
a
n
a
l
y
t
i
c
a
l
(
1
:
r
e
c
_
n
u
m
,
1
:
n
t
)
,
d
i
f
f
_
a
n
a
(
1
:
r
e
c
_
n
u
m
)
)
i
f
(
a
r
r
a
y
_
i
d
(
2
:
2
)
=
=
e
l
_
s
t
e
p
_
i
x
(
1
)
=
=
e
l
_
s
t
e
p
_
i
x
(
2
)
)
t
h
e
n
c
a
l
l
c
a
l
c
a
n
a
l
y
t
2
l
a
y
_
s
e
m
(
a
n
a
l
y
t
i
c
a
l
,
r
e
c
e
i
v
e
r
_
i
x
,
d
t
,
d
x
,
s
o
u
r
c
e
_
i
x
,
R
h
o
_
g
l
o
b
a
l
,
M
u
e
_
g
l
o
b
a
l
,
s
r
c
,
&
s
t
e
p
_
i
x
,
1
,
d
i
f
f
_
a
n
a
,
r
e
c
t
i
m
e
s
,
r
e
f
t
i
m
e
s
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
(
2
:
2
)
=
=
e
l
_
s
t
e
p
_
i
x
(
1
)
=
=
e
l
_
s
t
e
p
_
i
x
(
2
)
)
t
h
e
n
c
a
l
l
c
a
l
c
a
n
a
l
y
t
2
l
a
y
_
s
e
m
(
a
n
a
l
y
t
i
c
a
l
,
r
e
c
e
i
v
e
r
_
i
x
,
d
t
,
d
x
,
s
o
u
r
c
e
_
i
x
,
R
h
o
_
g
l
o
b
a
l
,
M
u
e
_
g
l
o
b
a
l
,
s
r
c
,
&
s
t
e
p
_
i
x
,
1
,
d
i
f
f
_
a
n
a
,
r
e
c
t
i
m
e
s
,
r
e
f
t
i
m
e
s
,
r
e
c
e
i
v
e
r
_
d
x
)
e
n
d
i
f
e
n
d
i
f
e
n
d
i
f
!
i
f
p
l
o
t
_
d
e
v
i
s
n
o
t
3
:
!
146 Appendix A
i
f
(
p
d
3
)
t
h
e
n
!
o
n
l
y
d
o
n
e
w
h
e
n
p
l
o
t
t
i
n
g
i
s
o
n
!
i
f
p
o
i
n
t
s
o
u
r
c
e
w
a
s
u
s
e
d
i
f
(
s
r
c
_
f
l
a
g
=
=
.
t
r
u
e
.
)
t
h
e
n
a
l
l
o
c
a
t
e
(
c
o
n
v
_
a
n
a
(
1
:
n
t
)
)
c
o
n
v
_
a
n
a
=
0
c
a
l
l
c
o
n
v
_
f
f
t
(
a
n
a
l
y
t
i
c
a
l
(
p
l
o
t
_
r
e
c
_
n
r
,
:
)
,
s
t
f
,
c
o
n
v
_
a
n
a
)
!
g
e
t
c
o
n
v
o
l
u
t
e
d
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
!
i
f
s
i
m
u
l
a
t
i
o
n
u
s
e
d
d
e
l
t
a
p
e
a
k
i
n
t
i
m
e
t
h
e
n
c
h
e
c
k
f
o
r
c
o
n
v
o
l
u
t
i
o
n
f
l
a
g
"
c
o
n
v
o
l
u
t
e
"
i
f
(
s
t
f
p
a
r
=
=
d
e
c
o
n
v
o
l
u
t
e
=
=
.
t
r
u
e
.
)
t
h
e
n
a
l
l
o
c
a
t
e
(
s
e
i
s
m
o
g
r
a
m
(
1
:
n
t
)
)
c
a
l
l
c
o
n
v
_
f
f
t
(
g
r
e
e
n
s
(
:
,
p
l
o
t
_
r
e
c
_
n
r
)
,
s
t
f
,
s
e
i
s
m
o
g
r
a
m
)
!
g
e
t
c
o
n
v
o
l
u
t
e
d
s
e
i
s
m
o
g
r
a
m
a
t
r
e
c
e
i
v
e
r
!
p
l
o
t
g
r
e
e
n
s
f
u
n
c
t
i
o
n
,
a
n
a
l
y
t
i
c
a
l
g
r
e
e
n
s
f
u
n
c
t
i
o
n
t
o
g
e
t
h
e
r
w
i
t
h
c
o
n
v
o
l
u
t
e
d
s
e
i
s
m
o
g
r
a
m
a
n
d
!
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
c
a
l
l
p
l
o
t
_
a
c
_
s
e
i
s
m
o
g
r
a
m
(
t
,
g
r
e
e
n
s
(
:
,
p
l
o
t
_
r
e
c
_
n
r
)
,
a
n
a
l
y
t
i
c
a
l
(
p
l
o
t
_
r
e
c
_
n
r
,
:
)
,
&
D
A
T
A
_
T
M
P
/
/
/
f
n
a
m
e
1
,
p
d
,
s
e
i
s
m
o
g
r
a
m
,
c
o
n
v
_
a
n
a
,
s
t
f
,
&
d
i
f
f
_
a
n
a
(
p
l
o
t
_
r
e
c
_
n
r
)
,
d
i
f
f
_
g
r
e
e
n
s
)
!
i
f
s
i
m
u
l
a
t
i
o
n
u
s
e
d
d
e
l
t
a
p
e
a
k
i
n
t
i
m
e
a
n
d
c
o
n
v
o
l
u
t
i
o
n
i
s
n
o
t
w
a
n
t
e
d
e
l
s
e
i
f
(
s
t
f
p
a
r
=
=
d
e
c
o
n
v
o
l
u
t
e
=
=
.
f
a
l
s
e
.
)
t
h
e
n
!
p
l
o
t
o
n
l
y
g
r
e
e
n
s
f
u
n
c
t
i
o
n
a
n
d
a
n
a
l
y
t
i
c
a
l
g
r
e
e
n
s
f
u
n
c
t
i
o
n
c
a
l
l
p
l
o
t
_
a
c
_
s
e
i
s
m
o
g
r
a
m
(
t
=
t
,
g
r
e
e
n
s
=
g
r
e
e
n
s
(
:
,
p
l
o
t
_
r
e
c
_
n
r
)
,
h
e
a
v
y
s
i
d
e
=
&
a
n
a
l
y
t
i
c
a
l
(
p
l
o
t
_
r
e
c
_
n
r
,
:
)
,
p
l
o
t
_
o
u
t
f
i
l
e
=
&
D
A
T
A
_
T
M
P
/
/
/
f
n
a
m
e
1
,
p
d
=
p
d
,
d
i
f
f
_
a
n
a
=
d
i
f
f
_
a
n
a
(
p
l
o
t
_
r
e
c
_
n
r
)
)
!
i
f
s
i
m
u
l
a
t
i
o
n
u
s
e
d
a
b
a
n
d
l
i
m
i
t
e
d
s
i
g
n
a
l
(
r
i
c
k
e
r
,
g
a
u
s
s
i
,
e
t
c
.
)
e
l
s
e
i
f
(
s
t
f
p
a
r
d
e
)
t
h
e
n
!
p
l
o
t
t
h
e
s
i
m
u
l
a
t
e
d
s
e
i
s
m
o
g
r
a
m
a
n
d
t
h
e
c
o
n
v
o
l
u
t
e
d
c
o
r
r
e
s
p
o
n
d
i
n
g
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
c
a
l
l
p
l
o
t
_
a
c
_
s
e
i
s
m
o
g
r
a
m
(
t
=
t
,
g
r
e
e
n
s
=
g
r
e
e
n
s
(
:
,
p
l
o
t
_
r
e
c
_
n
r
)
,
h
e
a
v
y
s
i
d
e
=
c
o
n
v
_
a
n
a
(
1
:
n
t
)
,
&
p
l
o
t
_
o
u
t
f
i
l
e
=
D
A
T
A
_
T
M
P
/
/
/
f
n
a
m
e
1
,
p
d
=
p
d
,
s
t
f
=
s
t
f
,
d
i
f
f
_
a
n
a
=
d
i
f
f
_
a
n
a
(
p
l
o
t
_
r
e
c
_
n
r
)
)
e
n
d
i
f
!
i
f
i
n
i
t
i
a
l
c
o
n
d
i
t
i
o
n
s
w
e
r
e
u
s
e
d
i
n
s
t
e
a
d
o
f
a
s
o
u
r
c
e
e
l
s
e
!
p
l
o
t
i
n
i
t
i
a
l
c
o
n
d
i
t
i
o
n
s
c
a
l
l
p
l
o
t
_
i
n
i
t
i
a
l
(
x
,
U
_
i
n
i
t
,
U
o
l
d
_
i
n
i
t
,
p
l
o
t
_
o
u
t
f
i
l
e
=
D
A
T
A
_
T
M
P
/
/
/
f
n
a
m
e
1
,
p
d
=
p
d
)
!
p
l
o
t
o
n
l
y
s
e
i
s
m
o
g
r
a
m
,
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
i
s
n
o
t
c
o
n
s
i
d
e
r
e
d
h
e
r
e
c
a
l
l
p
l
o
t
_
a
c
_
s
e
i
s
m
o
g
r
a
m
(
t
=
t
,
g
r
e
e
n
s
=
g
r
e
e
n
s
(
:
,
p
l
o
t
_
r
e
c
_
n
r
)
,
&
h
e
a
v
y
s
i
d
e
=
(
/
(
0
.
*
d
b
l
e
(
i
)
,
i
=
1
,
s
i
z
e
(
g
r
e
e
n
s
)
)
/
)
,
&
p
l
o
t
_
o
u
t
f
i
l
e
=
D
A
T
A
_
T
M
P
/
/
/
f
n
a
m
e
1
,
p
d
=
p
d
)
e
n
d
i
f
e
n
d
i
f
!
o
u
t
p
u
t
f
i
l
e
w
a
n
t
e
d
?
!
i
f
(
t
x
t
=
=
.
t
r
u
e
.
)
t
h
e
n
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
S
t
a
r
t
w
r
i
t
i
n
g
s
e
i
s
m
o
g
r
a
m
s
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
w
r
i
t
e
(
0
,
*
)
d
o
j
=
1
,
r
e
c
_
n
u
m
!
c
r
e
a
t
i
n
g
t
h
e
a
n
a
l
y
t
i
c
a
l
s
o
l
u
t
i
o
n
i
f
(
a
r
r
a
y
_
i
d
(
2
:
2
)
=
=
)
t
h
e
n
d
n
g
i
x
=
s
r
d
(
j
)
/
(
s
r
d
_
d
i
f
f
(
1
)
/
(
1
2
0
0
/
r
e
c
_
n
u
m
)
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
(
2
:
2
)
=
=
)
t
h
e
n
d
n
g
i
x
=
r
e
c
e
i
v
e
r
_
i
x
(
j
)
s
o
u
r
c
e
_
i
x
e
n
d
i
f
!
w
r
i
t
i
n
g
s
e
i
s
m
o
g
r
a
m
s
a
n
d
r
e
c
e
i
v
e
r
i
n
f
o
t
o
o
u
t
p
u
t
f
i
l
e
s
i
f
(
s
t
f
p
a
r
d
e
)
t
h
e
n
i
=
s
i
z
e
(
g
r
e
e
n
s
(
:
,
p
l
o
t
_
r
e
c
_
n
r
)
)
+
s
i
z
e
(
s
t
f
)
1
i
f
(
a
l
l
o
c
a
t
e
d
(
c
o
n
v
_
a
n
a
)
=
=
.
f
a
l
s
e
.
)
t
h
e
n
a
l
l
o
c
a
t
e
(
c
o
n
v
_
a
n
a
(
1
:
n
t
)
)
e
n
d
i
f
c
o
n
v
_
a
n
a
=
0
.
c
a
l
l
c
o
n
v
_
f
f
t
(
a
n
a
l
y
t
i
c
a
l
(
j
,
:
)
,
s
t
f
,
c
o
n
v
_
a
n
a
)
a
n
a
l
y
t
i
c
a
l
(
j
,
:
)
=
c
o
n
v
_
a
n
a
(
1
:
n
t
)
e
n
d
i
f
c
a
l
l
w
r
i
t
e
_
s
e
i
s
m
o
g
r
a
m
s
(
f
n
a
m
e
1
,
g
r
e
e
n
s
(
:
,
j
)
,
a
n
a
l
y
t
i
c
a
l
(
j
,
:
)
,
s
r
d
(
j
)
,
j
,
3
,
d
n
g
i
x
,
&
d
i
f
f
_
a
n
a
=
d
i
f
f
_
a
n
a
(
j
)
)
e
n
d
d
o
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
c
o
r
r
e
s
p
o
n
d
i
n
g
m
e
a
n
d
x
f
o
r
e
v
e
r
y
a
r
r
a
y
i
f
(
a
r
r
a
y
_
i
d
(
2
:
2
)
=
=
)
t
h
e
n
d
x
_
m
e
a
n
=
s
r
d
_
d
i
f
f
(
1
)
/
(
1
2
0
0
/
r
e
c
_
n
u
m
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
=
=
d
0
)
t
h
e
n
d
x
_
m
e
a
n
=
0
.
d
x
_
m
e
a
n
=
s
r
d
_
d
i
f
f
(
1
)
/
(
s
r
d
_
d
i
f
f
(
1
)
/
(
L
/
f
l
o
a
t
(
n
g
1
)
)
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
=
=
a
1
)
t
h
e
n
d
x
_
m
e
a
n
=
s
u
m
(
s
r
d
_
d
i
f
f
)
/
f
l
o
a
t
(
(
s
i
z
e
(
s
r
d
_
d
i
f
f
)
*
5
)
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
=
=
b
1
)
t
h
e
n
d
x
_
m
e
a
n
=
s
u
m
(
s
r
d
_
d
i
f
f
)
/
f
l
o
a
t
(
(
s
i
z
e
(
s
r
d
_
d
i
f
f
)
*
8
)
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
=
=
c
1
)
t
h
e
n
d
x
_
m
e
a
n
=
s
u
m
(
s
r
d
_
d
i
f
f
)
/
f
l
o
a
t
(
(
s
i
z
e
(
s
r
d
_
d
i
f
f
)
*
1
2
)
)
e
l
s
e
i
f
(
a
r
r
a
y
_
i
d
=
=
d
1
)
t
h
e
n
d
x
_
m
e
a
n
=
(
x
(
r
e
c
e
i
v
e
r
_
i
x
(
1
)
)
x
(
s
o
u
r
c
e
_
i
x
)
)
/
f
l
o
a
t
(
r
e
c
e
i
v
e
r
_
i
x
(
1
)
s
o
u
r
c
e
_
i
x
)
e
n
d
i
f
!
w
r
i
t
e
a
d
d
i
t
i
o
n
a
l
d
a
t
a
t
o
s
e
t
u
p
f
i
l
e
s
e
t
u
p
f
i
l
e
=
D
A
T
A
_
T
M
P
/
/
/
t
r
i
m
(
u
s
e
d
s
e
t
u
p
_
/
/
t
r
i
m
(
f
n
a
m
e
1
)
/
/
.
m
)
v
_
m
i
n
=
m
i
n
_
m
a
t
r
i
x
2
d
(
v
e
)
i
f
(
r
e
g
_
g
r
i
d
_
f
l
a
g
=
=
.
t
r
u
e
.
)
t
h
e
n
c
a
l
l
w
r
i
t
e
_
s
e
t
u
p
(
s
e
t
u
p
f
i
l
e
,
N
,
n
e
,
m
o
d
_
i
d
,
a
r
r
a
y
_
i
d
,
d
t
,
n
t
,
L
e
n
g
t
h
,
v
_
m
i
n
,
&
t
m
a
x
,
c
p
u
_
d
t
_
m
e
a
n
,
d
x
_
m
e
a
n
,
n
g
,
r
e
c
_
n
u
m
,
s
o
u
r
c
e
_
i
x
,
d
e
(
1
)
)
e
l
s
e
c
a
l
l
w
r
i
t
e
_
s
e
t
u
p
(
s
e
t
u
p
f
i
l
e
,
N
,
n
e
,
m
o
d
_
i
d
,
a
r
r
a
y
_
i
d
,
d
t
,
n
t
,
L
e
n
g
t
h
,
v
_
m
i
n
,
&
t
m
a
x
,
c
p
u
_
d
t
_
m
e
a
n
,
d
x
_
m
e
a
n
,
n
g
,
r
e
c
_
n
u
m
,
s
o
u
r
c
e
_
i
x
)
e
n
d
i
f
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
F
i
n
i
s
h
e
d
w
r
i
t
i
n
g
s
e
i
s
m
o
g
r
a
m
s
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
w
r
i
t
e
(
0
,
*
)
e
n
d
i
f
!
d
i
s
p
l
a
y
t
h
e
a
v
a
r
a
g
e
c
p
u
t
i
m
e
p
e
r
t
i
m
e
s
t
e
p
w
r
i
t
e
(
0
,
*
)
w
r
i
t
e
(
0
,
*
)
c
p
u
_
d
t
_
m
e
a
n
=
,
c
p
u
_
d
t
_
m
e
a
n
w
r
i
t
e
(
0
,
*
)
E
N
D
P
R
O
G
R
A
M
e
l
a
s
t
i
c
_
1
D
A.2. The Fortran 1-D SEM Program Code 147
M
O
D
U
L
E
s
e
m
_
s
p
e
c
_
m
o
d
u
l
e
s
i
m
p
l
i
c
i
t
n
o
n
e
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
I
N
T
E
R
F
A
C
E S
U
B
R
O
U
T
I
N
E
d
i
f
f
_
l
a
g
r
a
n
g
e
(
N
,
D
L
,
r
h
o
,
x
i
)
I
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
i
(
0
:
N
)
,
L
L
(
0
:
N
)
,
V
N
(
0
:
N
)
,
r
h
o
(
0
:
N
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
D
L
(
0
:
N
,
0
:
N
)
i
n
t
e
g
e
r
N
,
i
,
j
,
k
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
I
N
T
E
R
F
A
C
E
S
U
B
R
O
U
T
I
N
E
c
r
e
a
t
e
_
x
_
i
r
r
e
g
(
x
,
x
m
e
s
h
,
s
h
a
p
e
1
D
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
s
h
a
p
e
1
D
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
:
:
x
,
x
m
e
s
h
i
n
t
e
g
e
r
N
,
n
e
,
n
g
,
N
G
N
O
D
,
i
s
p
e
c
,
i
,
j
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
I
N
T
E
R
F
A
C
E S
U
B
R
O
U
T
I
N
E
c
o
n
n
e
c
t
_
v
e
c
(
N
,
n
e
,
n
g
,
e
l
,
G
L
,
C
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
e
l
(
1
:
N
+
1
,
1
:
n
e
)
,
G
L
(
1
:
n
g
)
i
n
t
e
g
e
r
C
(
1
:
N
+
1
,
1
:
n
e
)
i
n
t
e
g
e
r
N
,
n
e
,
n
g
i
n
t
e
g
e
r
i
,
j
,
k
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
I
N
T
E
R
F
A
C
E S
U
B
R
O
U
T
I
N
E
c
o
n
n
e
c
t
_
m
a
t
(
N
,
n
e
,
n
g
,
e
l
,
G
L
,
C
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
e
l
(
1
:
N
+
1
,
1
:
N
+
1
,
1
:
n
e
)
,
G
L
(
1
:
n
g
,
1
:
n
g
)
i
n
t
e
g
e
r
C
(
1
:
N
+
1
,
1
:
n
e
)
i
n
t
e
g
e
r
N
,
n
e
,
n
g
i
n
t
e
g
e
r
i
,
j
,
k
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
I
N
T
E
R
F
A
C
E
S
U
B
R
O
U
T
I
N
E
c
r
e
a
t
e
_
S
(
N
,
n
e
,
n
g
,
s
e
,
S
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
0
:
N
,
0
:
N
,
1
:
n
e
)
:
:
s
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
S
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
0
:
2
*
N
)
:
:
s
e
_
l
a
n
g
i
n
t
e
g
e
r
N
,
n
e
,
n
g
,
i
,
j
E
N
D
S
U
B
R
O
U
T
I
N
E
c
r
e
a
t
e
_
S
E
N
D
I
N
T
E
R
F
A
C
E
I
N
T
E
R
F
A
C
E
S
U
B
R
O
U
T
I
N
E
c
a
l
c
u
l
a
t
e
_
F
(
N
,
n
e
,
D
L
,
w
e
i
g
h
t
s
,
l
a
m
b
d
a
e
,
U
,
F
,
C
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
v
e
_
s
r
c
,
s
r
c
,
s
r
c
_
n
e
,
s
r
c
_
N
,
b
v
1
,
b
v
n
g
,
s
t
f
p
a
r
,
d
t
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
,
1
:
n
e
)
:
:
l
a
m
b
d
a
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
,
1
:
N
+
1
)
:
:
D
L
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
:
:
U
,
F
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
)
:
:
f
e
,
w
e
i
g
h
t
s
,
t
m
p
x
1
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
r
c
,
v
e
_
s
r
c
,
s
i
g
m
a
,
t
m
p
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
o
p
t
i
o
n
a
l
:
:
b
v
1
,
b
v
n
g
,
d
t
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
,
1
:
n
e
)
:
:
C
i
n
t
e
g
e
r
i
,
j
,
k
,
l
,
i
s
p
e
c
,
N
,
n
e
,
s
r
c
_
n
e
,
s
r
c
_
N
c
h
a
r
a
c
t
e
r
(
l
e
n
=
2
)
,
o
p
t
i
o
n
a
l
:
:
s
t
f
p
a
r
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
I
N
T
E
R
F
A
C
E
S
U
B
R
O
U
T
I
N
E
g
e
t
_
f
u
n
c
_
a
t
_
p
o
s
(
N
,
n
u
m
_
e
l
,
f
u
n
c
,
o
u
t
v
a
l
,
x
,
x
i
g
l
l
,
C
,
x
_
a
n
c
h
o
r
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
i
n
t
e
n
t
(
i
n
)
:
:
f
u
n
c
,
x
_
a
n
c
h
o
r
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
i
n
t
e
n
t
(
i
n
)
:
:
x
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
)
:
:
l
,
d
l
,
x
i
g
l
l
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
o
u
t
v
a
l
,
x
i
_
l
o
c
a
l
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
i
n
t
e
n
t
(
i
n
)
:
:
C
i
n
t
e
g
e
r
i
,
j
,
k
,
N
,
n
u
m
_
e
l
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
E
N
D
M
O
D
U
L
E
s
e
m
_
s
p
e
c
_
m
o
d
u
l
e
s
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
d
i
f
f
_
l
a
g
r
a
n
g
e
(
N
,
D
L
,
r
h
o
,
x
i
)
! !
c
a
l
c
u
l
a
t
e
s
t
h
e
d
e
r
i
v
a
t
i
v
e
s
o
f
t
h
e
L
a
g
r
a
n
g
e
P
o
l
y
n
o
m
i
a
l
s
a
t
t
h
e
G
L
L
q
u
a
d
r
a
t
u
r
e
!
p
o
i
n
t
s
a
n
d
s
t
o
r
e
s
t
h
e
m
i
n
M
a
t
r
i
x
D
L
(
c
o
l
o
u
m
n
=
d
(
L
)
/
d
(
x
i
)
=
d
L
,
r
o
w
=
d
L
a
t
!
p
o
i
n
t
x
i
I
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
i
(
0
:
N
)
,
L
L
(
0
:
N
)
,
V
N
(
0
:
N
)
,
r
h
o
(
0
:
N
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
D
L
(
0
:
N
,
0
:
N
)
i
n
t
e
g
e
r
N
,
i
,
j
,
k
!
C
a
l
c
u
l
a
t
e
t
h
e
G
a
u
L
o
b
a
t
t
o
L
e
g
e
n
d
r
e
Q
u
a
d
r
a
t
u
r
e
p
o
i
n
t
s
a
n
d
t
h
e
v
a
l
u
e
s
o
f
t
h
e
!
L
e
g
e
n
d
r
e
p
o
l
y
n
o
m
i
a
l
s
V
N
a
t
t
h
e
g
l
l
n
o
d
e
s
c
a
l
l
m
a
i
n
_
p
o
l
(
x
i
,
N
,
V
N
)
!
c
a
l
c
u
l
a
t
e
t
h
e
w
e
i
g
h
t
s
r
h
o
(
i
)
a
t
e
v
e
r
y
g
l
l
n
o
d
e
f
o
r
t
h
e
g
l
l
i
n
t
e
g
r
a
t
i
o
n
r
u
l
e
r
h
o
=
2
/
(
f
l
o
a
t
(
(
N
+
1
)
*
N
)
*
V
N
*
*
2
)
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
d
e
r
i
v
a
t
i
v
e
s
o
f
t
h
e
P
o
l
y
n
o
m
i
a
l
s
a
t
t
h
e
G
a
u
L
o
b
a
t
t
o
L
e
g
e
n
d
r
e
Q
u
a
d
r
a
t
u
r
e
p
o
i
n
t
s
d
o
i
=
0
,
N
L
L
=
0
L
L
(
i
)
=
1
c
a
l
l
D
E
L
E
G
L
(
N
,
x
i
,
V
N
,
L
L
,
D
L
(
:
,
i
)
)
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
d
i
f
f
_
l
a
g
r
a
n
g
e
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
m
a
i
n
_
p
o
l
(
x
i
,
N
,
V
N
)
I
M
P
L
I
C
I
T
N
O
N
E
D
O
U
B
L
E
P
R
E
C
I
S
I
O
N
X
,
x
i
(
0
:
N
)
,
Y
,
D
Y
,
D
2
Y
,
E
T
(
0
:
1
0
0
0
)
,
V
N
(
0
:
1
0
0
0
)
I
N
T
E
G
E
R
j
,
k
,
N
D
O
j
=
0
,
1
0
0
0
X
=
1
+
R
E
A
L
(
j
)
/
1
0
0
0
.
*
2
C
A
L
L
Z
E
L
E
G
L
(
N
,
E
T
,
V
N
)
E
N
D
D
O
D
O
j
=
0
,
N
x
i
(
j
)
=
E
T
(
j
)
E
N
D
D
O
E
N
D
S
U
B
R
O
U
T
I
N
E
m
a
i
n
_
p
o
l
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
V
A
L
E
P
O
(
N
,
X
,
Y
,
D
Y
,
D
2
Y
)
!
*
C
O
M
P
U
T
E
S
T
H
E
V
A
L
U
E
O
F
T
H
E
L
E
G
E
N
D
R
E
P
O
L
Y
N
O
M
I
A
L
O
F
D
E
G
R
E
E
N
!
*
A
N
D
I
T
S
F
I
R
S
T
A
N
D
S
E
C
O
N
D
D
E
R
I
V
A
T
I
V
E
S
A
T
A
G
I
V
E
N
P
O
I
N
T
!
*
N
=
D
E
G
R
E
E
O
F
T
H
E
P
O
L
Y
N
O
M
I
A
L
!
*
X
=
P
O
I
N
T
I
N
W
H
I
C
H
T
H
E
C
O
M
P
U
T
A
T
I
O
N
I
S
P
E
R
F
O
R
M
E
D
!
*
Y
=
V
A
L
U
E
O
F
T
H
E
P
O
L
Y
N
O
M
I
A
L
I
N
X
!
*
D
Y
=
V
A
L
U
E
O
F
T
H
E
F
I
R
S
T
D
E
R
I
V
A
T
I
V
E
I
N
X
!
*
D
2
Y
=
V
A
L
U
E
O
F
T
H
E
S
E
C
O
N
D
D
E
R
I
V
A
T
I
V
E
I
N
X
!
I
M
P
L
I
C
I
T
D
O
U
B
L
E
P
R
E
C
I
S
I
O
N
(
A
H
,
O
Z
)
I
M
P
L
I
C
I
T
N
O
N
E
D
O
U
B
L
E
P
R
E
C
I
S
I
O
N
Y
,
D
Y
,
D
2
Y
,
X
,
Y
P
,
D
Y
P
,
D
2
Y
P
,
C
1
,
C
2
,
C
3
,
C
4
,
Y
M
,
D
Y
M
,
D
2
Y
M
I
N
T
E
G
E
R
N
,
I
Y
=
1
.
D
Y
=
0
.
D
2
Y
=
0
.
I
F
(
N
0
)
R
E
T
U
R
N
Y
=
X
D
Y
=
1
.
D
2
Y
=
0
.
I
F
(
N
1
)
R
E
T
U
R
N
Y
P
=
1
.
D
Y
P
=
0
.
D
2
Y
P
=
0
.
D
O
I
=
2
,
N
C
1
=
D
F
L
O
A
T
(
I
)
C
2
=
2
.
*
C
1
1
.
C
4
=
C
1
1
.
Y
M
=
Y
Y
=
(
C
2
*
X
*
Y
C
4
*
Y
P
)
/
C
1
Y
P
=
Y
M
D
Y
M
=
D
Y
D
Y
=
(
C
2
*
X
*
D
Y
C
4
*
D
Y
P
+
C
2
*
Y
P
)
/
C
1
D
Y
P
=
D
Y
M
D
2
Y
M
=
D
2
Y
D
2
Y
=
(
C
2
*
X
*
D
2
Y
C
4
*
D
2
Y
P
+
2
.
D
0
*
C
2
*
D
Y
P
)
/
C
1
D
2
Y
P
=
D
2
Y
M
E
N
D
D
O
R
E
T
U
R
N
E
N
D
S
U
B
R
O
U
T
I
N
E
V
A
L
E
P
O
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
Z
E
L
E
G
L
(
N
,
E
T
,
V
N
)
148 Appendix A
!
*
C
O
M
P
U
T
E
S
T
H
E
N
O
D
E
S
R
E
L
A
T
I
V
E
T
O
T
H
E
L
E
G
E
N
D
R
E
G
A
U
S
S
L
O
B
A
T
T
O
F
O
R
M
U
L
A
!
*
N
=
O
R
D
E
R
O
F
T
H
E
F
O
R
M
U
L
A
!
*
E
T
=
V
E
C
T
O
R
O
F
T
H
E
N
O
D
E
S
,
E
T
(
I
)
,
I
=
0
,
N
!
*
V
N
=
V
A
L
U
E
S
O
F
T
H
E
L
E
G
E
N
D
R
E
P
O
L
Y
N
O
M
I
A
L
A
T
T
H
E
N
O
D
E
S
,
V
N
(
I
)
,
I
=
0
,
N
!
I
M
P
L
I
C
I
T
D
O
U
B
L
E
P
R
E
C
I
S
I
O
N
(
A
H
,
O
Z
)
I
M
P
L
I
C
I
T
N
O
N
E
D
O
U
B
L
E
P
R
E
C
I
S
I
O
N
S
N
,
X
,
Y
,
D
Y
,
D
2
Y
,
P
I
,
C
,
E
T
X
D
O
U
B
L
E
P
R
E
C
I
S
I
O
N
E
T
(
0
:
1
0
0
0
)
,
V
N
(
0
:
1
0
0
0
)
I
N
T
E
G
E
R
N
,
N
2
,
I
,
I
T
!
D
I
M
E
N
S
I
O
N
E
T
(
0
:
*
)
,
V
N
(
0
:
*
)
I
F
(
N
0
)
R
E
T
U
R
N
N
2
=
(
N
1
)
/
2
S
N
=
D
F
L
O
A
T
(
2
*
N
4
*
N
2
3
)
E
T
(
0
)
=
1
.
E
T
(
N
)
=
1
.
V
N
(
0
)
=
S
N
V
N
(
N
)
=
1
.
I
F
(
N
1
)
R
E
T
U
R
N
E
T
(
N
2
+
1
)
=
0
.
X
=
0
.
C
A
L
L
V
A
L
E
P
O
(
N
,
X
,
Y
,
D
Y
,
D
2
Y
)
V
N
(
N
2
+
1
)
=
Y
I
F
(
N
2
)
R
E
T
U
R
N
P
I
=
3
.
1
4
1
5
9
2
6
5
3
5
8
9
7
9
3
2
3
8
4
6
C
=
P
I
/
D
F
L
O
A
T
(
N
)
D
O
I
=
1
,
N
2
E
T
X
=
D
C
O
S
(
C
*
D
F
L
O
A
T
(
I
)
)
D
O
I
T
=
1
,
8
C
A
L
L
V
A
L
E
P
O
(
N
,
E
T
X
,
Y
,
D
Y
,
D
2
Y
)
E
T
X
=
E
T
X
D
Y
/
D
2
Y
E
N
D
D
O
E
T
(
I
)
=
E
T
X
E
T
(
N
I
)
=
E
T
X
V
N
(
I
)
=
Y
*
S
N
V
N
(
N
I
)
=
Y
E
N
D
D
O
R
E
T
U
R
N
E
N
D
S
U
B
R
O
U
T
I
N
E
Z
E
L
E
G
L
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
D
E
L
E
G
L
(
N
,
E
T
,
V
N
,
Q
N
,
D
Q
N
)
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
!
*
C
O
M
P
U
T
E
S
T
H
E
D
E
R
I
V
A
T
I
V
E
O
F
A
P
O
L
Y
N
O
M
I
A
L
A
T
T
H
E
L
E
G
E
N
D
R
E
G
A
U
S
S
L
O
B
A
T
T
O
!
*
N
O
D
E
S
F
R
O
M
T
H
E
V
A
L
U
E
S
O
F
T
H
E
P
O
L
Y
N
O
M
I
A
L
A
T
T
A
I
N
E
D
A
T
T
H
E
S
A
M
E
P
O
I
N
T
S
!
*
N
=
T
H
E
D
E
G
R
E
E
O
F
T
H
E
P
O
L
Y
N
O
M
I
A
L
!
*
E
T
=
V
E
C
T
O
R
O
F
T
H
E
N
O
D
E
S
,
E
T
(
I
)
,
I
=
0
,
N
!
*
V
N
=
V
A
L
U
E
S
O
F
T
H
E
L
E
G
E
N
D
R
E
P
O
L
Y
N
O
M
I
A
L
A
T
T
H
E
N
O
D
E
S
,
V
N
(
I
)
,
I
=
0
,
N
!
*
Q
N
=
V
A
L
U
E
S
O
F
T
H
E
P
O
L
Y
N
O
M
I
A
L
A
T
T
H
E
N
O
D
E
S
,
Q
N
(
I
)
,
I
=
0
,
N
!
*
D
Q
N
=
D
E
R
I
V
A
T
I
V
E
S
O
F
T
H
E
P
O
L
Y
N
O
M
I
A
L
A
T
T
H
E
N
O
D
E
S
,
D
Q
Z
(
I
)
,
I
=
0
,
N
!
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
I
M
P
L
I
C
I
T
D
O
U
B
L
E
P
R
E
C
I
S
I
O
N
(
A
H
,
O
Z
)
!
D
I
M
E
N
S
I
O
N
E
T
(
0
:
*
)
,
V
N
(
0
:
*
)
,
Q
N
(
0
:
*
)
,
D
Q
N
(
0
:
*
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
E
T
(
0
:
*
)
,
V
N
(
0
:
*
)
,
Q
N
(
0
:
*
)
,
D
Q
N
(
0
:
*
)
D
Q
N
(
0
)
=
0
.
D
0
I
F
(
N
0
)
R
E
T
U
R
N
D
O
1
I
=
0
,
N
S
U
=
0
.
D
0
V
I
=
V
N
(
I
)
E
I
=
E
T
(
I
)
D
O
2
J
=
0
,
N
I
F
(
I
J
)
G
O
T
O
2
V
J
=
V
N
(
J
)
E
J
=
E
T
(
J
)
S
U
=
S
U
+
Q
N
(
J
)
/
(
V
J
*
(
E
I
E
J
)
)
2
C
O
N
T
I
N
U
E
D
Q
N
(
I
)
=
V
I
*
S
U
1
C
O
N
T
I
N
U
E
D
N
=
D
F
L
O
A
T
(
N
)
C
=
.
2
5
D
0
*
D
N
*
(
D
N
+
1
.
D
0
)
D
Q
N
(
0
)
=
D
Q
N
(
0
)
C
*
Q
N
(
0
)
D
Q
N
(
N
)
=
D
Q
N
(
N
)
+
C
*
Q
N
(
N
)
R
E
T
U
R
N
E
N
D
S
U
B
R
O
U
T
I
N
E
D
E
L
E
G
L
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
c
r
e
a
t
e
_
x
_
i
r
r
e
g
(
x
,
x
m
e
s
h
,
s
h
a
p
e
1
D
)
!
c
r
e
a
t
e
s
a
n
o
n
e
q
u
i
d
i
s
t
a
n
t
x
v
e
c
t
o
r
o
f
l
e
n
g
t
h
n
g
c
o
r
r
e
s
p
o
n
d
i
n
g
t
o
t
h
e
g
l
l
n
o
d
e
s
!
i
n
e
a
c
h
e
l
e
m
e
n
t
a
n
d
d
e
p
e
n
d
i
n
g
o
n
t
h
e
x
v
e
c
t
o
r
x
m
e
s
h
.
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
s
h
a
p
e
1
D
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
:
:
x
,
x
m
e
s
h
i
n
t
e
g
e
r
N
,
n
e
,
n
g
,
N
G
N
O
D
,
i
s
p
e
c
,
i
,
j
N
=
s
i
z
e
(
s
h
a
p
e
1
D
,
2
)
1
n
e
=
s
i
z
e
(
x
m
e
s
h
)
1
n
g
=
s
i
z
e
(
x
)
N
G
N
O
D
=
s
i
z
e
(
s
h
a
p
e
1
D
,
1
)
d
o
i
s
p
e
c
=
1
,
n
e
d
o
i
=
1
,
N
d
o
j
=
1
,
N
G
N
O
D
x
(
(
i
s
p
e
c
1
)
*
N
+
i
)
=
x
(
(
i
s
p
e
c
1
)
*
N
+
i
)
+
s
h
a
p
e
1
D
(
j
,
i
)
*
x
m
e
s
h
(
i
s
p
e
c
1
+
j
)
e
n
d
d
o
e
n
d
d
o
e
n
d
d
o
d
o
j
=
1
,
N
G
N
O
D
x
(
n
g
)
=
x
(
n
g
)
+
s
h
a
p
e
1
D
(
j
,
N
+
1
)
*
x
m
e
s
h
(
n
e
1
+
j
)
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
c
r
e
a
t
e
_
x
_
i
r
r
e
g
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
c
o
n
n
e
c
t
_
v
e
c
(
N
,
n
e
,
n
g
,
e
l
,
G
L
,
C
)
!
s
u
b
r
o
u
t
i
n
e
f
o
r
c
o
m
p
i
l
i
n
g
a
g
l
o
b
a
l
v
e
c
t
o
r
G
L
(
a
d
d
i
n
g
t
h
e
c
o
m
p
o
n
e
n
t
s
e
l
(
i
,
j
)
a
t
t
h
e
c
o
r
r
e
c
t
p
l
a
c
e
s
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
e
l
(
1
:
N
+
1
,
1
:
n
e
)
,
G
L
(
1
:
n
g
)
i
n
t
e
g
e
r
C
(
1
:
N
+
1
,
1
:
n
e
)
i
n
t
e
g
e
r
N
,
n
e
,
n
g
i
n
t
e
g
e
r
i
,
j
,
k
d
o
i
=
1
,
n
e
d
o
j
=
1
,
N
+
1
G
L
(
C
(
j
,
i
)
)
=
G
L
(
C
(
j
,
i
)
)
+
e
l
(
j
,
i
)
e
n
d
d
o
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
c
o
n
n
e
c
t
_
v
e
c
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
c
o
n
n
e
c
t
_
m
a
t
(
N
,
n
e
,
n
g
,
e
l
,
G
L
,
C
)
!
s
u
b
r
o
u
t
i
n
e
f
o
r
c
o
m
p
i
l
i
n
g
a
g
l
o
b
a
l
m
a
t
r
i
x
G
L
(
a
d
d
i
n
g
t
h
e
c
o
m
p
o
n
e
n
t
s
e
l
(
i
,
j
)
a
t
t
h
e
c
o
r
r
e
c
t
p
l
a
c
e
s
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
e
l
(
1
:
N
+
1
,
1
:
N
+
1
,
1
:
n
e
)
,
G
L
(
1
:
n
g
,
1
:
n
g
)
i
n
t
e
g
e
r
C
(
1
:
N
+
1
,
1
:
n
e
)
i
n
t
e
g
e
r
N
,
n
e
,
n
g
i
n
t
e
g
e
r
i
,
j
,
k
d
o
i
=
1
,
n
e
d
o
j
=
1
,
N
+
1
d
o
k
=
1
,
N
+
1
G
L
(
C
(
k
,
i
)
,
C
(
j
,
i
)
)
=
G
L
(
C
(
k
,
i
)
,
C
(
j
,
i
)
)
+
e
l
(
k
,
j
,
i
)
e
n
d
d
o
e
n
d
d
o
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
c
o
n
n
e
c
t
_
m
a
t
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
c
r
e
a
t
e
_
S
(
N
,
n
e
,
n
g
,
s
e
,
S
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
0
:
N
,
0
:
N
,
1
:
n
e
)
:
:
s
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
S
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
0
:
2
*
N
,
1
:
n
e
1
)
:
:
s
e
_
l
a
n
g
i
n
t
e
g
e
r
N
,
n
e
,
n
g
,
i
,
j
d
o
i
=
1
,
n
e
1
s
e
_
l
a
n
g
(
0
:
N
1
,
i
)
=
s
e
(
N
,
0
:
N
1
,
i
)
s
e
_
l
a
n
g
(
N
,
i
)
=
s
e
(
N
,
N
,
i
)
+
s
e
(
0
,
0
,
i
+
1
)
s
e
_
l
a
n
g
(
N
+
1
:
2
*
N
,
i
)
=
s
e
(
0
,
1
:
N
,
i
+
1
)
e
n
d
d
o
d
o
i
=
1
,
N
S
(
i
,
1
:
N
+
1
)
=
s
e
(
i
1
,
:
,
1
)
S
(
(
n
e
1
)
*
N
+
i
+
1
,
N
+
1
:
2
*
N
+
1
)
=
s
e
(
i
,
:
,
n
e
)
e
n
d
d
o
S
(
(
n
e
1
)
*
N
+
1
,
:
)
=
s
e
_
l
a
n
g
(
:
,
n
e
1
)
A.2. The Fortran 1-D SEM Program Code 149
d
o
i
=
1
,
n
e
2
S
(
i
*
N
+
1
,
:
)
=
s
e
_
l
a
n
g
(
:
,
i
)
d
o
j
=
2
,
N
S
(
i
*
N
+
j
,
(
N
+
2
j
)
:
(
2
*
N
+
2
j
)
)
=
s
e
(
j
1
,
:
,
i
+
1
)
e
n
d
d
o
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
c
r
e
a
t
e
_
S
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
c
a
l
c
u
l
a
t
e
_
F
(
N
,
n
e
,
D
L
,
w
e
i
g
h
t
s
,
l
a
m
b
d
a
e
,
U
,
F
,
C
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
v
e
_
s
r
c
,
s
r
c
,
s
r
c
_
n
e
,
s
r
c
_
N
,
b
v
1
,
b
v
n
g
,
s
t
f
p
a
r
,
d
t
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
,
1
:
n
e
)
:
:
l
a
m
b
d
a
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
,
1
:
N
+
1
)
:
:
D
L
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
:
:
U
,
F
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
)
:
:
f
e
,
w
e
i
g
h
t
s
,
t
m
p
x
1
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
r
c
,
v
e
_
s
r
c
,
s
i
g
m
a
,
t
m
p
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
o
p
t
i
o
n
a
l
:
:
b
v
1
,
b
v
n
g
,
d
t
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
,
1
:
n
e
)
:
:
C
i
n
t
e
g
e
r
i
,
j
,
k
,
l
,
i
s
p
e
c
,
N
,
n
e
,
s
r
c
_
n
e
,
s
r
c
_
N
c
h
a
r
a
c
t
e
r
(
l
e
n
=
2
)
,
o
p
t
i
o
n
a
l
:
:
s
t
f
p
a
r
d
o
i
s
p
e
c
=
1
,
n
e
f
e
=
0
d
o
i
=
1
,
N
+
1
t
m
p
=
0
.
d
o
l
=
1
,
N
+
1
t
m
p
=
t
m
p
+
U
(
C
(
l
,
i
s
p
e
c
)
)
*
D
L
(
i
,
l
)
!
c
a
l
c
u
l
a
t
i
n
g
d
u
/
d
x
i
=
e
p
s
i
l
o
n
i
n
1
D
e
n
d
d
o
!
c
a
l
c
u
l
a
t
i
n
g
t
h
e
s
t
r
e
s
s
i
n
p
h
y
s
i
c
a
l
c
o
o
r
d
i
n
a
t
e
s
=
>
m
u
l
t
i
p
l
y
w
i
t
h
d
x
i
/
d
x
=
J
a
c
o
b
i
_
i
n
v
e
r
s
e
s
i
g
m
a
=
l
a
m
b
d
a
e
(
i
,
i
s
p
e
c
)
*
t
m
p
*
J
a
c
o
b
i
_
i
n
v
e
r
s
e
(
i
,
i
s
p
e
c
)
!
J
a
c
o
b
i
a
n
n
e
e
d
e
d
f
o
r
i
n
t
e
g
r
a
t
i
o
n
a
n
d
s
e
c
o
n
d
d
x
i
/
d
x
n
e
e
d
e
d
f
o
r
d
e
r
i
v
a
t
i
o
n
o
f
!
t
e
s
t
f
u
n
c
t
i
o
n
i
n
p
h
y
s
i
c
a
l
c
o
o
r
d
i
n
a
t
e
s
t
m
p
x
1
(
i
)
=
J
a
c
o
b
i
a
n
(
i
,
i
s
p
e
c
)
*
s
i
g
m
a
*
J
a
c
o
b
i
_
i
n
v
e
r
s
e
(
i
,
i
s
p
e
c
)
e
n
d
d
o
d
o
i
=
1
,
N
+
1
t
m
p
=
0
.
d
o
l
=
1
,
N
+
1
t
m
p
=
t
m
p
+
t
m
p
x
1
(
l
)
*
D
L
(
l
,
i
)
*
w
e
i
g
h
t
s
(
l
)
e
n
d
d
o
f
e
(
i
)
=
t
m
p
i
f
(
p
r
e
s
e
n
t
(
b
v
1
)
p
r
e
s
e
n
t
(
b
v
n
g
)
)
t
h
e
n
i
f
(
i
=
=
1
i
s
p
e
c
=
=
1
)
f
e
(
i
)
=
f
e
(
i
)
b
v
1
i
f
(
i
=
=
(
N
+
1
)
i
s
p
e
c
=
=
n
e
)
f
e
(
i
)
=
f
e
(
i
)
b
v
n
g
e
n
d
i
f
i
f
(
i
s
p
e
c
=
=
s
r
c
_
n
e
i
=
=
s
r
c
_
N
)
t
h
e
n
i
f
(
(
p
r
e
s
e
n
t
(
s
t
f
p
a
r
)
p
r
e
s
e
n
t
(
d
t
)
)
=
=
.
f
a
l
s
e
.
s
t
f
p
a
r
=
=
d
e
)
t
h
e
n
f
e
(
i
)
=
f
e
(
i
)
+
2
.
*
s
r
c
*
v
e
_
s
r
c
e
l
s
e
f
e
(
i
)
=
f
e
(
i
)
+
2
.
*
s
r
c
*
v
e
_
s
r
c
/
d
t
e
n
d
i
f
e
n
d
i
f
e
n
d
d
o
d
o
i
=
1
,
N
+
1
F
(
C
(
i
,
i
s
p
e
c
)
)
=
F
(
C
(
i
,
i
s
p
e
c
)
)
+
f
e
(
i
)
e
n
d
d
o
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
c
a
l
c
u
l
a
t
e
_
F
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
g
e
t
_
f
u
n
c
_
a
t
_
p
o
s
(
N
,
n
u
m
_
e
l
,
f
u
n
c
,
o
u
t
v
a
l
,
x
,
x
i
g
l
l
,
C
,
x
_
a
n
c
h
o
r
)
u
s
e
l
a
g
r
a
n
g
e
_
p
o
l
y
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
,
i
n
t
e
n
t
(
i
n
)
:
:
f
u
n
c
,
x
_
a
n
c
h
o
r
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
i
n
t
e
n
t
(
i
n
)
:
:
x
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
N
+
1
)
:
:
l
,
d
l
,
x
i
g
l
l
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
o
u
t
v
a
l
,
x
i
_
l
o
c
a
l
i
n
t
e
g
e
r
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
,
i
n
t
e
n
t
(
i
n
)
:
:
C
i
n
t
e
g
e
r
i
,
j
,
k
,
N
,
n
u
m
_
e
l
x
i
_
l
o
c
a
l
=
0
.
o
u
t
v
a
l
=
0
.
x
i
_
l
o
c
a
l
=
1
.
+
(
x
x
_
a
n
c
h
o
r
(
n
u
m
_
e
l
)
)
/
(
x
_
a
n
c
h
o
r
(
n
u
m
_
e
l
+
1
)
x
_
a
n
c
h
o
r
(
n
u
m
_
e
l
)
)
*
2
.
c
a
l
l
l
a
g
r
a
n
g
e
_
a
n
y
(
x
i
_
l
o
c
a
l
,
N
+
1
,
x
i
g
l
l
,
l
,
d
l
)
d
o
i
=
1
,
N
+
1
o
u
t
v
a
l
=
o
u
t
v
a
l
+
f
u
n
c
(
C
(
i
,
n
u
m
_
e
l
)
)
*
l
(
i
)
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
g
e
t
_
f
u
n
c
_
a
t
_
p
o
s
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
! !
S
p
e
c
f
e
m
3
D
G
l
o
b
e
V
e
r
s
i
o
n
3
.
3
!
! !
D
i
m
i
t
r
i
K
o
m
a
t
i
t
s
c
h
a
n
d
J
e
r
o
e
n
T
r
o
m
p
!
S
e
i
s
m
o
l
o
g
i
c
a
l
L
a
b
o
r
a
t
o
r
y
C
a
l
i
f
o
r
n
i
a
I
n
s
t
i
t
u
t
e
o
f
T
e
c
h
n
o
l
o
g
y
!
(
c
)
C
a
l
i
f
o
r
n
i
a
I
n
s
t
i
t
u
t
e
o
f
T
e
c
h
n
o
l
o
g
y
S
e
p
t
e
m
b
e
r
2
0
0
2
! !
A
s
i
g
n
e
d
n
o
n
c
o
m
m
e
r
c
i
a
l
a
g
r
e
e
m
e
n
t
i
s
r
e
q
u
i
r
e
d
t
o
u
s
e
t
h
i
s
p
r
o
g
r
a
m
.
!
P
l
e
a
s
e
c
h
e
c
k
h
t
t
p
:
/
/
w
w
w
.
g
p
s
.
c
a
l
t
e
c
h
.
e
d
u
/
r
e
s
e
a
r
c
h
/
j
t
r
o
m
p
f
o
r
d
e
t
a
i
l
s
.
!
F
r
e
e
f
o
r
n
o
n
c
o
m
m
e
r
c
i
a
l
a
c
a
d
e
m
i
c
r
e
s
e
a
r
c
h
O
N
L
Y
.
!
T
h
i
s
p
r
o
g
r
a
m
i
s
d
i
s
t
r
i
b
u
t
e
d
W
I
T
H
O
U
T
A
N
Y
W
A
R
R
A
N
T
Y
w
h
a
t
s
o
e
v
e
r
.
!
D
o
n
o
t
r
e
d
i
s
t
r
i
b
u
t
e
t
h
i
s
p
r
o
g
r
a
m
w
i
t
h
o
u
t
w
r
i
t
t
e
n
p
e
r
m
i
s
s
i
o
n
.
! !
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
M
O
D
U
L
E
l
a
g
r
a
n
g
e
E
N
D
M
O
D
U
L
E
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
s
u
b
r
o
u
t
i
n
e
l
a
g
r
a
n
g
e
_
a
n
y
(
x
i
,
N
G
L
L
,
x
i
g
l
l
,
h
,
h
p
r
i
m
e
)
!
s
u
b
r
o
u
t
i
n
e
t
o
c
o
m
p
u
t
e
t
h
e
L
a
g
r
a
n
g
e
i
n
t
e
r
p
o
l
a
n
t
s
b
a
s
e
d
u
p
o
n
t
h
e
G
L
L
p
o
i
n
t
s
!
a
n
d
t
h
e
i
r
f
i
r
s
t
d
e
r
i
v
a
t
i
v
e
s
a
t
a
n
y
p
o
i
n
t
x
i
i
n
[
1
,
1
]
i
m
p
l
i
c
i
t
n
o
n
e
i
n
t
e
g
e
r
N
G
L
L
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
i
,
x
i
g
l
l
(
N
G
L
L
)
,
h
(
N
G
L
L
)
,
h
p
r
i
m
e
(
N
G
L
L
)
i
n
t
e
g
e
r
d
g
r
,
i
,
j
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
p
r
o
d
1
,
p
r
o
d
2
d
o
d
g
r
=
1
,
N
G
L
L
p
r
o
d
1
=
1
.
0
d
0
p
r
o
d
2
=
1
.
0
d
0
d
o
i
=
1
,
N
G
L
L
i
f
(
i
d
g
r
)
t
h
e
n
p
r
o
d
1
=
p
r
o
d
1
*
(
x
i
x
i
g
l
l
(
i
)
)
p
r
o
d
2
=
p
r
o
d
2
*
(
x
i
g
l
l
(
d
g
r
)
x
i
g
l
l
(
i
)
)
e
n
d
i
f
e
n
d
d
o
h
(
d
g
r
)
=
p
r
o
d
1
/
p
r
o
d
2
h
p
r
i
m
e
(
d
g
r
)
=
0
.
0
d
0
d
o
i
=
1
,
N
G
L
L
i
f
(
i
d
g
r
)
t
h
e
n
p
r
o
d
1
=
1
.
0
d
0
d
o
j
=
1
,
N
G
L
L
i
f
(
j
d
g
r
i
)
p
r
o
d
1
=
p
r
o
d
1
*
(
x
i
x
i
g
l
l
(
j
)
)
e
n
d
d
o
h
p
r
i
m
e
(
d
g
r
)
=
h
p
r
i
m
e
(
d
g
r
)
+
p
r
o
d
1
e
n
d
i
f
e
n
d
d
o
h
p
r
i
m
e
(
d
g
r
)
=
h
p
r
i
m
e
(
d
g
r
)
/
p
r
o
d
2
e
n
d
d
o
e
n
d
s
u
b
r
o
u
t
i
n
e
l
a
g
r
a
n
g
e
_
a
n
y
! !
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
! !
s
u
b
r
o
u
t
i
n
e
t
o
c
o
m
p
u
t
e
t
h
e
d
e
r
i
v
a
t
i
v
e
o
f
t
h
e
L
a
g
r
a
n
g
e
i
n
t
e
r
p
o
l
a
n
t
s
!
a
t
t
h
e
G
L
L
p
o
i
n
t
s
a
t
a
n
y
g
i
v
e
n
G
L
L
p
o
i
n
t
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
f
u
n
c
t
i
o
n
l
a
g
r
a
n
g
e
_
d
e
r
i
v
_
G
L
L
(
I
,
j
,
Z
G
L
L
,
N
Z
)
!
! !
C
o
m
p
u
t
e
t
h
e
v
a
l
u
e
o
f
t
h
e
d
e
r
i
v
a
t
i
v
e
o
f
t
h
e
I
t
h
!
L
a
g
r
a
n
g
e
i
n
t
e
r
p
o
l
a
n
t
t
h
r
o
u
g
h
t
h
e
!
N
Z
G
a
u
s
s
L
o
b
a
t
t
o
L
e
g
e
n
d
r
e
p
o
i
n
t
s
Z
G
L
L
a
t
p
o
i
n
t
Z
G
L
L
(
j
)
! !
i
m
p
l
i
c
i
t
n
o
n
e
i
n
t
e
g
e
r
i
,
j
,
n
z
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
z
g
l
l
(
0
:
n
z
1
)
i
n
t
e
g
e
r
d
e
g
p
o
l
y
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
e
x
t
e
r
n
a
l
:
:
p
n
l
e
g
,
p
n
d
l
e
g
d
e
g
p
o
l
y
=
n
z
1
i
f
(
i
=
=
0
j
=
=
0
)
t
h
e
n
l
a
g
r
a
n
g
e
_
d
e
r
i
v
_
G
L
L
=
d
b
l
e
(
d
e
g
p
o
l
y
)
*
(
d
b
l
e
(
d
e
g
p
o
l
y
)
+
1
.
d
0
)
/
4
.
d
0
e
l
s
e
i
f
(
i
=
=
d
e
g
p
o
l
y
j
=
=
d
e
g
p
o
l
y
)
t
h
e
n
l
a
g
r
a
n
g
e
_
d
e
r
i
v
_
G
L
L
=
d
b
l
e
(
d
e
g
p
o
l
y
)
*
(
d
b
l
e
(
d
e
g
p
o
l
y
)
+
1
.
d
0
)
/
4
.
d
0
e
l
s
e
i
f
(
i
=
=
j
)
t
h
e
n
l
a
g
r
a
n
g
e
_
d
e
r
i
v
_
G
L
L
=
0
.
d
0
e
l
s
e
l
a
g
r
a
n
g
e
_
d
e
r
i
v
_
G
L
L
=
p
n
l
e
g
(
z
g
l
l
(
j
)
,
d
e
g
p
o
l
y
)
/
&
(
p
n
l
e
g
(
z
g
l
l
(
i
)
,
d
e
g
p
o
l
y
)
*
(
z
g
l
l
(
j
)
z
g
l
l
(
i
)
)
)
&
+
(
1
.
d
0
z
g
l
l
(
j
)
*
z
g
l
l
(
j
)
)
*
p
n
d
l
e
g
(
z
g
l
l
(
j
)
,
d
e
g
p
o
l
y
)
/
(
d
b
l
e
(
d
e
g
p
o
l
y
)
*
&
(
d
b
l
e
(
d
e
g
p
o
l
y
)
+
1
.
d
0
)
*
p
n
l
e
g
(
z
g
l
l
(
i
)
,
d
e
g
p
o
l
y
)
*
(
z
g
l
l
(
j
)
z
g
l
l
(
i
)
)
*
(
z
g
l
l
(
j
)
z
g
l
l
(
i
)
)
)
e
n
d
i
f
e
n
d
f
u
n
c
t
i
o
n
l
a
g
r
a
n
g
e
_
d
e
r
i
v
_
G
L
L
150 Appendix A
M
O
D
U
L
E
j
a
c
o
b
i
a
n
_
m
o
d
I
N
T
E
R
F
A
C
E
S
U
B
R
O
U
T
I
N
E
c
a
l
c
_
j
a
c
o
b
i
a
n
1
D
(
J
a
c
o
b
i
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
s
h
a
p
e
1
D
,
d
e
r
s
h
a
p
e
1
D
,
x
m
e
s
h
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
J
a
c
o
b
i
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
s
h
a
p
e
1
D
,
d
e
r
s
h
a
p
e
1
D
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
:
:
x
m
e
s
h
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
e
l
m
i
n
t
e
g
e
r
i
s
p
e
c
,
i
,
j
,
k
,
N
G
L
L
X
,
N
G
N
O
D
,
n
e
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
E
N
D
M
O
D
U
L
E
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
S
U
B
R
O
U
T
I
N
E
c
a
l
c
_
j
a
c
o
b
i
a
n
1
D
(
J
a
c
o
b
i
,
J
a
c
o
b
i
a
n
,
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
s
h
a
p
e
1
D
,
d
e
r
s
h
a
p
e
1
D
,
x
m
e
s
h
)
!
s
u
b
r
o
u
t
i
n
e
c
a
l
c
u
l
a
t
e
s
t
h
e
J
a
c
o
b
i
M
a
t
r
i
x
,
t
h
e
J
a
c
o
b
i
a
n
o
f
t
h
e
!
M
a
p
p
i
n
g
F
u
n
c
t
i
o
n
a
n
d
t
h
e
J
a
c
o
b
i
M
a
t
r
i
x
o
f
t
h
e
i
n
v
e
r
s
e
M
a
p
p
i
n
g
!
F
u
n
c
t
i
o
n
f
o
r
a
1
D
S
E
M
(
m
a
i
n
p
r
o
g
r
a
m
:
e
l
a
s
t
i
c
_
1
D
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
J
a
c
o
b
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
J
a
c
o
b
i
a
n
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
J
a
c
o
b
i
_
i
n
v
e
r
s
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
s
h
a
p
e
1
D
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
,
:
)
:
:
d
e
r
s
h
a
p
e
1
D
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
:
)
:
:
x
m
e
s
h
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
e
l
m
i
n
t
e
g
e
r
i
s
p
e
c
,
i
,
j
,
k
,
N
G
L
L
X
,
N
G
N
O
D
,
n
e
N
G
N
O
D
=
s
i
z
e
(
s
h
a
p
e
1
D
,
1
)
N
G
L
L
X
=
s
i
z
e
(
s
h
a
p
e
1
D
,
2
)
n
e
=
s
i
z
e
(
J
a
c
o
b
i
,
2
)
d
o
i
s
p
e
c
=
1
,
n
e
d
o
i
=
1
,
N
G
L
L
X
d
o
j
=
1
,
N
G
N
O
D
x
e
l
m
=
x
m
e
s
h
(
i
s
p
e
c
1
+
j
)
J
a
c
o
b
i
(
i
,
i
s
p
e
c
)
=
J
a
c
o
b
i
(
i
,
i
s
p
e
c
)
+
d
e
r
s
h
a
p
e
1
D
(
j
,
i
)
*
x
e
l
m
J
a
c
o
b
i
a
n
(
i
,
i
s
p
e
c
)
=
J
a
c
o
b
i
(
i
,
i
s
p
e
c
)
J
a
c
o
b
i
_
i
n
v
e
r
s
e
=
1
.
/
J
a
c
o
b
i
a
n
e
n
d
d
o
e
n
d
d
o
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
M
O
D
U
L
E
s
h
a
p
e
_
m
o
d
!
C
h
a
n
g
e
d
t
o
1
D
b
y
B
e
r
n
h
a
r
d
S
c
h
u
b
e
r
t
h
0
2
.
0
6
.
2
0
0
3
f
o
r
s
e
r
i
a
l
a
p
p
l
i
c
a
t
i
o
n
s
!
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
! !
S
p
e
c
f
e
m
3
D
G
l
o
b
e
V
e
r
s
i
o
n
3
.
3
!
! !
D
i
m
i
t
r
i
K
o
m
a
t
i
t
s
c
h
a
n
d
J
e
r
o
e
n
T
r
o
m
p
!
S
e
i
s
m
o
l
o
g
i
c
a
l
L
a
b
o
r
a
t
o
r
y
C
a
l
i
f
o
r
n
i
a
I
n
s
t
i
t
u
t
e
o
f
T
e
c
h
n
o
l
o
g
y
!
(
c
)
C
a
l
i
f
o
r
n
i
a
I
n
s
t
i
t
u
t
e
o
f
T
e
c
h
n
o
l
o
g
y
S
e
p
t
e
m
b
e
r
2
0
0
2
! !
A
s
i
g
n
e
d
n
o
n
c
o
m
m
e
r
c
i
a
l
a
g
r
e
e
m
e
n
t
i
s
r
e
q
u
i
r
e
d
t
o
u
s
e
t
h
i
s
p
r
o
g
r
a
m
.
!
P
l
e
a
s
e
c
h
e
c
k
h
t
t
p
:
/
/
w
w
w
.
g
p
s
.
c
a
l
t
e
c
h
.
e
d
u
/
r
e
s
e
a
r
c
h
/
j
t
r
o
m
p
f
o
r
d
e
t
a
i
l
s
.
!
F
r
e
e
f
o
r
n
o
n
c
o
m
m
e
r
c
i
a
l
a
c
a
d
e
m
i
c
r
e
s
e
a
r
c
h
O
N
L
Y
.
!
T
h
i
s
p
r
o
g
r
a
m
i
s
d
i
s
t
r
i
b
u
t
e
d
W
I
T
H
O
U
T
A
N
Y
W
A
R
R
A
N
T
Y
w
h
a
t
s
o
e
v
e
r
.
!
D
o
n
o
t
r
e
d
i
s
t
r
i
b
u
t
e
t
h
i
s
p
r
o
g
r
a
m
w
i
t
h
o
u
t
w
r
i
t
t
e
n
p
e
r
m
i
s
s
i
o
n
.
! !
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
I
N
T
E
R
F
A
C
E
S
U
B
R
O
U
T
I
N
E
g
e
t
_
s
h
a
p
e
1
D
(
s
h
a
p
e
1
D
,
d
e
r
s
h
a
p
e
1
D
,
x
i
g
l
l
)
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
i
g
l
l
(
:
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
h
a
p
e
1
D
(
:
,
:
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
d
e
r
s
h
a
p
e
1
D
(
:
,
:
)
i
n
t
e
g
e
r
i
,
j
,
k
,
i
a
,
N
G
L
L
X
,
N
G
N
O
D
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
l
1
x
i
,
l
2
x
i
,
l
3
x
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
l
1
p
x
i
,
l
2
p
x
i
,
l
3
p
x
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
u
m
s
h
a
p
e
,
s
u
m
d
e
r
s
h
a
p
e
x
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
T
I
N
Y
V
A
L
=
1
e
9
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
O
N
E
=
1
.
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
H
A
L
F
=
1
.
/
2
.
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
Z
E
R
O
=
0
.
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
T
W
O
=
2
.
E
N
D
S
U
B
R
O
U
T
I
N
E
E
N
D
I
N
T
E
R
F
A
C
E
E
N
D
M
O
D
U
L
E
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
s
u
b
r
o
u
t
i
n
e
g
e
t
_
s
h
a
p
e
1
D
(
s
h
a
p
e
1
D
,
d
e
r
s
h
a
p
e
1
D
,
x
i
g
l
l
)
i
m
p
l
i
c
i
t
n
o
n
e
!
G
a
u
s
s
L
o
b
a
t
t
o
L
e
g
e
n
d
r
e
p
o
i
n
t
s
o
f
i
n
t
e
g
r
a
t
i
o
n
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
i
g
l
l
(
:
)
!
1
D
s
h
a
p
e
f
u
n
c
t
i
o
n
s
a
n
d
t
h
e
i
r
d
e
r
i
v
a
t
i
v
e
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
h
a
p
e
1
D
(
:
,
:
)
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
d
e
r
s
h
a
p
e
1
D
(
:
,
:
)
i
n
t
e
g
e
r
i
,
j
,
k
,
i
a
,
N
G
L
L
X
,
N
G
N
O
D
!
l
o
c
a
t
i
o
n
o
f
t
h
e
n
o
d
e
s
o
f
t
h
e
1
D
q
u
a
d
r
i
l
a
t
e
r
a
l
e
l
e
m
e
n
t
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
x
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
l
1
x
i
,
l
2
x
i
,
l
3
x
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
l
1
p
x
i
,
l
2
p
x
i
,
l
3
p
x
i
!
f
o
r
c
h
e
c
k
i
n
g
t
h
e
1
D
s
h
a
p
e
f
u
n
c
t
i
o
n
s
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
s
u
m
s
h
a
p
e
,
s
u
m
d
e
r
s
h
a
p
e
x
i
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
T
I
N
Y
V
A
L
=
1
e
9
!
d
e
f
i
n
i
n
g
1
,
1
/
2
a
n
d
0
a
n
d
2
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
O
N
E
=
1
.
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
H
A
L
F
=
1
.
/
2
.
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
Z
E
R
O
=
0
.
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
p
a
r
a
m
e
t
e
r
:
:
T
W
O
=
2
.
N
G
N
O
D
=
s
i
z
e
(
s
h
a
p
e
1
D
,
1
)
N
G
L
L
X
=
s
i
z
e
(
s
h
a
p
e
1
D
,
2
)
i
f
(
N
G
N
O
D
=
=
2
)
t
h
e
n
!
g
e
n
e
r
a
t
e
t
h
e
1
D
s
h
a
p
e
f
u
n
c
t
i
o
n
s
a
n
d
t
h
e
i
r
d
e
r
i
v
a
t
i
v
e
s
(
2
n
o
d
e
s
)
d
o
i
=
1
,
N
G
L
L
X
x
i
=
x
i
g
l
l
(
i
)
l
1
x
i
=
(
O
N
E
x
i
)
*
H
A
L
F
l
2
x
i
=
(
O
N
E
+
x
i
)
*
H
A
L
F
l
1
p
x
i
=
H
A
L
F
l
2
p
x
i
=
H
A
L
F
!
c
o
r
n
e
r
n
o
d
e
s
s
h
a
p
e
1
D
(
1
,
i
)
=
l
1
x
i
s
h
a
p
e
1
D
(
2
,
i
)
=
l
2
x
i
d
e
r
s
h
a
p
e
1
D
(
1
,
i
)
=
l
1
p
x
i
d
e
r
s
h
a
p
e
1
D
(
2
,
i
)
=
l
2
p
x
i
e
n
d
d
o
e
l
s
e
i
f
(
N
G
N
O
D
=
=
3
)
t
h
e
n
!
g
e
n
e
r
a
t
e
t
h
e
1
D
s
h
a
p
e
f
u
n
c
t
i
o
n
s
a
n
d
t
h
e
i
r
d
e
r
i
v
a
t
i
v
e
s
(
3
n
o
d
e
s
)
d
o
i
=
1
,
N
G
L
L
X
x
i
=
x
i
g
l
l
(
i
)
l
1
x
i
=
H
A
L
F
*
x
i
*
(
x
i
O
N
E
)
l
2
x
i
=
O
N
E
x
i
*
*
2
l
3
x
i
=
H
A
L
F
*
x
i
*
(
x
i
+
O
N
E
)
l
1
p
x
i
=
x
i
H
A
L
F
l
2
p
x
i
=
T
W
O
*
x
i
l
3
p
x
i
=
x
i
+
H
A
L
F
!
c
o
r
n
e
r
n
o
d
e
s
s
h
a
p
e
1
D
(
1
,
i
)
=
l
1
x
i
s
h
a
p
e
1
D
(
2
,
i
)
=
l
2
x
i
s
h
a
p
e
1
D
(
3
,
i
)
=
l
3
x
i
d
e
r
s
h
a
p
e
1
D
(
1
,
i
)
=
l
1
p
x
i
d
e
r
s
h
a
p
e
1
D
(
2
,
i
)
=
l
2
p
x
i
d
e
r
s
h
a
p
e
1
D
(
3
,
i
)
=
l
3
p
x
i
e
n
d
d
o
e
n
d
i
f
!
c
h
e
c
k
t
h
e
s
h
a
p
e
f
u
n
c
t
i
o
n
s
d
o
i
=
1
,
N
G
L
L
X
s
u
m
s
h
a
p
e
=
Z
E
R
O
s
u
m
d
e
r
s
h
a
p
e
x
i
=
Z
E
R
O
d
o
i
a
=
1
,
N
G
N
O
D
s
u
m
s
h
a
p
e
=
s
u
m
s
h
a
p
e
+
s
h
a
p
e
1
D
(
i
a
,
i
)
s
u
m
d
e
r
s
h
a
p
e
x
i
=
s
u
m
d
e
r
s
h
a
p
e
x
i
+
d
e
r
s
h
a
p
e
1
D
(
i
a
,
i
)
e
n
d
d
o
!
t
h
e
s
u
m
o
f
t
h
e
s
h
a
p
e
f
u
n
c
t
i
o
n
s
s
h
o
u
l
d
b
e
1
i
f
(
a
b
s
(
s
u
m
s
h
a
p
e
O
N
E
)
>
T
I
N
Y
V
A
L
)
p
r
i
n
t
*
,
e
r
r
o
r
i
n
1
D
s
h
a
p
e
f
u
n
c
t
i
o
n
s
!
t
h
e
s
u
m
o
f
t
h
e
d
e
r
i
v
a
t
i
v
e
s
o
f
t
h
e
s
h
a
p
e
f
u
n
c
t
i
o
n
s
s
h
o
u
l
d
b
e
0
i
f
(
a
b
s
(
s
u
m
d
e
r
s
h
a
p
e
x
i
)
>
T
I
N
Y
V
A
L
)
&
p
r
i
n
t
*
,
e
r
r
o
r
i
n
x
i
d
e
r
i
v
a
t
i
v
e
s
o
f
1
D
s
h
a
p
e
f
u
n
c
t
i
o
n
e
n
d
d
o
e
n
d
s
u
b
r
o
u
t
i
n
e
g
e
t
_
s
h
a
p
e
1
D
A.2. The Fortran 1-D SEM Program Code 151
S
U
B
R
O
U
T
I
N
E
m
u
l
t
i
p
l
y
_
S
_
U
(
n
n
,
n
n
g
,
s
t
i
f
f
,
U
_
i
n
t
,
s
t
i
f
f
m
U
)
!
c
a
l
c
u
l
a
t
e
s
t
h
e
m
a
t
r
i
x
v
e
c
t
o
r
p
r
o
d
u
c
t
o
f
t
h
e
c
o
n
d
e
n
s
e
d
s
t
i
f
f
n
e
s
s
m
a
t
r
i
x
s
t
i
f
f
,
c
r
e
a
t
e
d
b
y
!
c
r
e
a
t
e
_
S
,
w
i
t
h
t
h
e
d
i
s
p
l
a
c
e
m
e
n
t
v
e
c
t
o
r
U
_
i
n
t
i
m
p
l
i
c
i
t
n
o
n
e
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
n
n
g
,
0
:
2
*
n
n
)
:
:
s
t
i
f
f
d
o
u
b
l
e
p
r
e
c
i
s
i
o
n
,
d
i
m
e
n
s
i
o
n
(
1
:
n
n
g
)
:
:
U
_
i
n
t
,
s
t
i
f
f
m
U
i
n
t
e
g
e
r
j
,
k
,
n
n
,
n
n
g
s
t
i
f
f
m
U
=
0
d
o
j
=
1
,
n
n
d
o
k
=
0
,
2
*
n
n
s
t
i
f
f
m
U
(
j
)
=
s
t
i
f
f
m
U
(
j
)
+
s
t
i
f
f
(
j
,
k
)
*
U
_
i
n
t
(
k
+
1
)
e
n
d
d
o
e
n
d
d
o
d
o
j
=
n
n
+
1
,
n
n
g
n
n
d
o
k
=
n
n
,
n
n
s
t
i
f
f
m
U
(
j
)
=
s
t
i
f
f
m
U
(
j
)
+
s
t
i
f
f
(
j
,
k
+
n
n
)
*
U
_
i
n
t
(
j
+
k
)
e
n
d
d
o
e
n
d
d
o
d
o
j
=
n
n
g
n
n
+
1
,
n
n
g
d
o
k
=
0
,
2
*
n
n
s
t
i
f
f
m
U
(
j
)
=
s
t
i
f
f
m
U
(
j
)
+
s
t
i
f
f
(
j
,
k
)
*
U
_
i
n
t
(
n
n
g
2
*
n
n
+
k
)
e
n
d
d
o
e
n
d
d
o
E
N
D
S
U
B
R
O
U
T
I
N
E
m
u
l
t
i
p
l
y
_
S
_
U
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
E
x
c
e
r
p
t
o
f
t
h
e
1
D
w
a
v
e
p
r
o
p
a
g
a
t
i
o
n
c
o
d
e
w
i
t
h
N
e
w
m
a
r
k
t
y
p
e
!
i
n
t
e
g
r
a
t
i
o
n
s
c
h
e
m
e
,
u
s
i
n
g
a
n
a
c
c
e
l
e
r
a
t
i
o
n
f
o
r
m
u
l
a
t
i
o
n
a
n
d
n
o
!
a
d
d
i
t
i
o
n
a
l
i
t
e
r
a
t
i
o
n
s
.
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
t
i
m
e
l
o
o
p
d
o
i
=
1
,
n
t
!
u
p
d
a
t
e
d
i
s
p
l
a
c
e
m
e
n
t
u
s
i
n
g
f
i
n
i
t
e
d
i
f
f
e
r
e
n
c
e
t
i
m
e
s
c
h
e
m
e
d
o
j
=
1
,
n
g
U
(
j
)
=
U
(
j
)
+
d
t
*
V
e
l
o
c
(
j
)
+
(
d
t
*
*
2
)
/
2
.
*
A
c
c
e
l
(
j
)
V
e
l
o
c
(
j
)
=
V
e
l
o
c
(
j
)
+
d
t
/
2
.
*
A
c
c
e
l
(
j
)
A
c
c
e
l
(
j
)
=
0
.
e
n
d
d
o
!
c
o
m
p
u
t
e
t
h
e
f
o
r
c
e
a
t
e
v
e
r
y
g
r
i
d
p
o
i
n
t
o
f
t
h
e
m
e
s
h
f
o
r
!
t
i
m
e
s
t
e
p
i
c
a
l
l
c
a
l
c
u
l
a
t
e
_
F
(
N
,
n
e
,
D
L
,
w
e
i
g
h
t
s
,
m
u
e
_
e
,
U
,
A
c
c
e
l
,
C
,
J
a
c
o
b
i
a
n
,
&
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
v
e
(
s
r
c
_
N
,
s
r
c
_
n
e
)
,
s
r
c
(
i
)
,
&
s
r
c
_
n
e
,
s
r
c
_
N
,
s
t
f
p
a
r
=
s
t
f
p
a
r
,
d
t
=
d
t
)
!
c
h
e
c
k
i
n
g
f
o
r
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
s
d
o
j
=
1
,
n
g
A
c
c
e
l
(
j
)
=
A
c
c
e
l
(
j
)
*
M
a
s
s
I
n
v
(
j
)
/
2
.
V
e
l
o
c
(
j
)
=
V
e
l
o
c
(
j
)
+
d
t
/
2
.
*
A
c
c
e
l
(
j
)
U
(
j
)
=
U
(
j
)
+
d
t
*
V
e
l
o
c
(
j
)
+
(
d
t
*
*
2
)
/
2
.
*
A
c
c
e
l
(
j
)
e
n
d
d
o
e
n
d
d
o
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
!
E
x
c
e
r
p
t
o
f
t
h
e
1
D
w
a
v
e
p
r
o
p
a
g
a
t
i
o
n
c
o
d
e
w
i
t
h
N
e
w
m
a
r
k
t
y
p
e
!
p
r
e
d
i
c
t
o
r
c
o
r
r
e
c
t
o
r
i
n
t
e
g
r
a
t
i
o
n
s
c
h
e
m
e
,
u
s
i
n
g
a
n
a
c
c
e
l
e
r
a
t
i
o
n
!
f
o
r
m
u
l
a
t
i
o
n
a
n
d
o
n
e
i
t
e
r
a
t
i
o
n
.
!
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
V
p
r
e
d
=
0
.
d
e
l
t
a
t
=
d
t
d
e
l
t
a
t
o
v
e
r
2
=
0
.
5
d
0
*
d
t
d
e
l
t
a
t
s
q
o
v
e
r
2
=
0
.
5
d
0
*
d
t
*
d
t
!
t
i
m
e
l
o
o
p
d
o
i
=
1
,
n
t
!
c
o
m
p
u
t
e
p
r
e
d
i
c
t
o
r
s
d
o
j
=
1
,
n
g
U
(
j
)
=
U
(
j
)
+
d
e
l
t
a
t
*
V
e
l
o
c
(
j
)
+
d
e
l
t
a
t
s
q
o
v
e
r
2
*
A
c
c
e
l
(
j
)
V
p
r
e
d
(
j
)
=
V
e
l
o
c
(
j
)
+
d
e
l
t
a
t
o
v
e
r
2
*
A
c
c
e
l
(
j
)
V
e
l
o
c
(
j
)
=
V
p
r
e
d
(
j
)
A
c
c
e
l
(
j
)
=
0
.
e
n
d
d
o
d
o
i
t
e
r
=
1
,
2
!
N
I
T
E
R
!
c
o
m
p
u
t
e
i
n
t
e
r
n
a
l
f
o
r
c
e
s
c
a
l
l
c
a
l
c
u
l
a
t
e
_
F
(
N
,
n
e
,
D
L
,
w
e
i
g
h
t
s
,
m
u
e
_
e
,
U
,
A
c
c
e
l
,
C
,
J
a
c
o
b
i
a
n
,
&
J
a
c
o
b
i
_
i
n
v
e
r
s
e
,
v
e
(
s
r
c
_
N
,
s
r
c
_
n
e
)
,
s
r
c
(
i
)
,
&
s
r
c
_
n
e
,
s
r
c
_
N
,
s
t
f
p
a
r
=
s
t
f
p
a
r
,
d
t
=
d
t
)
d
o
j
=
1
,
n
g
i
f
(
i
t
e
r
=
=
1
)
t
h
e
n
A
c
c
e
l
(
j
)
=
A
c
c
e
l
(
j
)
*
M
a
s
s
I
n
v
(
j
)
e
n
d
i
f
V
e
l
o
c
(
j
)
=
V
p
r
e
d
(
j
)
+
d
e
l
t
a
t
o
v
e
r
2
*
A
c
c
e
l
(
j
)
e
n
d
d
o
e
n
d
d
o
e
n
d
d
o
List of Figures
2.1 Simple domain decomposition for the 1-D case . . . . . . . . . . . 16
2.2 One-dimensional shape functions on two anchor nodes. . . . . . . 17
2.3 One-dimensional shape functions on three anchor nodes. . . . . . 18
2.4 Lagrange polynomial
6
of order N = 8. The collocation points
can be clearly distinguished as the points where the function takes
the values 0 and 1. . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 All six Lagrange polynomials of order N = 5. . . . . . . . . . . . 22
2.6 Chebychev Polynomials up to degree N = 8 . . . . . . . . . . . . 31
2.7 Lagrangian interpolators of order N = 5 based on Chebychev poly-
nomials compared to Lagrange polynomials . . . . . . . . . . . . . 34
2.8 x-vector with non equidistant GLL collocation points . . . . . . . 38
3.1 Two dimensional mesh of curved structures using size doubling in
the middle layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2 A cubed sphere mesh of the globe . . . . . . . . . . . . . . . . . 52
3.3 Illustration of a three-dimensional meshing of a cube . . . . . . . 52
3.4 Meshing of geological structures in three-dimensional models based
on hexaedra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.5 Approximation of curved topography by hexaedrons . . . . . . . . 53
3.6 Mapping of 2-D elements on the reference square
2
= [1, 1]
[1, 1]. Left: straight element with four anchor nodes. Right:
curved element with nine anchor nodes. . . . . . . . . . . . . . . 55
3.7 Mapping of a 2-D elements from the reference square. The element
is shown with the Gauss-Lobatto-Legendre collocation points of
integration for the order N = 8 . . . . . . . . . . . . . . . . . . . 56
3.8 Mapping of 3-D elements on the reference cube
3
= [1, 1]
[1, 1] [1, 1]. Left: 8 node element with straight edges and
faces. Right: 27 node element with curved edges and faces. . . . 57
3.9 Shape functions of two-dimensional curved elements based on 9
anchor nodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.10 Illustration of the connection of 2-D elements at four of their edges.
The node in the middle, displayed as a white square, is shared by
all four of them. . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
153
154 List of Figures
4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.3 Snapshots of 1-D SEM simulations with dierent boundary condi-
tions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.4 Examples of results: relative solution error and ppw . . . . . . . 82
4.5 Benchmark of CPU time per time step . . . . . . . . . . . . . . . 83
4.6 ACF - DF: Dierence in accuracy of SEM (N=5) acceleration and
displacement formulation . . . . . . . . . . . . . . . . . . . . . . . 86
4.7 ACF - DF: Relative CPU cost of SEM (N=5) acceleration and
displacement formulation . . . . . . . . . . . . . . . . . . . . . . . 86
4.8 ACF - PCF: Dierence in accuracy of SEM (N=5) acceleration
and predictor-corrector formulation . . . . . . . . . . . . . . . . . 87
4.9 ACF - PCF: Relative CPU cost of SEM (N=5) acceleration and
predictor-corrector formulation . . . . . . . . . . . . . . . . . . . 87
4.10 DF - PCF: Dierence in accuracy of SEM (N=5) displacement and
predictor-corrector formulation . . . . . . . . . . . . . . . . . . . 88
4.11 DF - PCF: Relative CPU cost of SEM (N=5) displacement and
predictor-corrector formulation . . . . . . . . . . . . . . . . . . . 88
4.12 Comparison of SEM of order N = 4 and N = 5 . . . . . . . . . . 89
4.13 Comparison of SEM of order N = 5 and N = 8 . . . . . . . . . . 90
4.14 Filtered seismograms of station 100 for OPO and SEM for homo-
geneous models (5 ppw) . . . . . . . . . . . . . . . . . . . . . . . 91
4.15 Filtered seismograms of station 100 for OPO and SEM for homo-
geneous models (10 ppw) . . . . . . . . . . . . . . . . . . . . . . . 91
4.16 Relative solution error of SEM and OPO for homogeneous models 92
4.17 Minimum points per wavelength needed by SEM and OPO for
homogeneous models . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.18 Overall CPU cost of the SEM (a) and the OPO (b) for homoge-
neous models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.19 Dierence in accuracy of SEM ACF N = 5 and OPO for homoge-
neous models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.20 Relative CPU cost of SEM ACF N = 5 and OPO for homogeneous
models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.21 Dierence in accuracy of SEM ACF N = 8 and OPO for homoge-
neous models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.22 Relative CPU cost of SEM ACF N = 8 and OPO for homogeneous
models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.23 Relative CPU cost of SEM ACF N = 8 and OPO using the same
time step for homogeneous models . . . . . . . . . . . . . . . . . . 97
4.24 Dierence in accuracy of SEM ACF N = 5 and OPO for hetero-
geneous models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.25 Relative CPU cost of SEM ACF N = 5 and OPO for heterogeneous
models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
List of Figures 155
4.26 Dierence in accuracy of SEM ACF N = 8 and OPO for hetero-
geneous models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.27 Relative CPU cost of SEM ACF N = 8 and OPO using the same
time step for heterogeneous models . . . . . . . . . . . . . . . . . 99
5.1 Model setup for 3-D simulations . . . . . . . . . . . . . . . . . . . 102
5.2 Quasi-analytical solution - Explosion at z = 200 km (x-component)104
5.3 Quasi-analytical solution - Explosion at z = 200 km (z-component)105
5.4 Explosion at z = 200 km: Comparison of seismograms . . . . . . . 105
5.5 FD solution - Explosion at z = 200 km. . . . . . . . . . . . . . . 106
5.6 SEM solution - Explosion at z = 200 km . . . . . . . . . . . . . 107
5.7 SEM solution - Explosion at z = 200 km (5 ppw) . . . . . . . . 108
5.8 SEM solution - Explosion at z = 10 km . . . . . . . . . . . . . . 109
5.9 SEM solution - Dip-Slip source at z = 200 km . . . . . . . . . . 110
5.10 SEM solution - Dip-Slip source at z = 10 km . . . . . . . . . . . 111
5.11 CPU benchmark of FDM and SEM for 3-D simulations . . . . . . 112
5.12 Relative solution error - explosion at z = 200 km . . . . . . . . 113
5.13 Comparison of performance between SEM and FDM - explosion
at z = 200 km . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.14 Relative solution error - explosion at z = 10 km . . . . . . . . . 115
5.15 Comparison of performance between SEM and FDM - expl.osion
at z = 10 km . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.16 Relative solution error - dip-slip source at z = 200 km . . . . . . 117
5.17 Comparison of performance between SEM and FDM - dip-slip
source at z = 200 km . . . . . . . . . . . . . . . . . . . . . . . . 118
5.18 Comparison of the velocity of the z-component at receiver 30 be-
tween Qseis (blue), FDM (green) and SEM (red) using 5 ppw for
a dip-slip source in 200 km depth. . . . . . . . . . . . . . . . . . 119
5.19 Comparison of the velocity of the z-component at receiver 100
between Qseis (blue), FDM (green) and SEM (red) (5 ppw) for a
dip-slip source in 10 km depth. . . . . . . . . . . . . . . . . . . . 119
5.20 Relative solution error - dip-slip source at z = 10 km . . . . . . 120
5.21 Comparison of performance between SEM and FDM - dip-slip
source at z = 10 km . . . . . . . . . . . . . . . . . . . . . . . . 121
List of Tables
2.1 Gauss-Lobatto-Legendre and Chebychev Gauss-Lobatto colloca-
tion nodes for N = 5 . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.1 GLL collcation points and integration weights for order N = 2, . . . , 7133
A.2 GLL collcation points and integration weights for order N = 8, . . . , 12134
157
Bibliography
Abramowitz, M.; Stegun, I. A. (Editors), Pocketbook of Mathematical Func-
tions, Abridged ed. of Handbook of Mathematical Functions. Harri Deutsch,
Frankfurt a. M., 1984.
Aki, K.; Richards, P. G., Quantitative Seismology. University Science Books,
Sausalito, California, 2002.
Ampuero, J.-P.; Vilotte, J.-P.; Festa, G., Dynamic rupture with the spec-
tral element method: where do we stand?. In Proc. of the Workshop on Nu-
merical Modeling of Earthquake Source Dynamics (1.-3. Sept. 2003), Smolenice
Castle, Slovak Republic, 2003, p. 9.
Bronstein, J. N.; Semendjajew, K. A.; Musiol, G.; M
uhlig, H.,
Taschenbuch der Mathematik, 4. Auage. Harri Deutsch, Frankfurt a. M.,
1999.
CalTech, 2002, URL
http://www.gps.caltech.edu/~jtromp/research/downloads.html. Last
modied 11.06.2002.
Capdeville, Y., Methode couplee elements spectraux - solution modale pour la
propagation dondes dans la Terre `a lechelle globale. Ph.D. thesis, Universite
Paris 7, Paris, France, 2000.
Capdeville, Y.; Chaljub, E.; Vilotte, J.-P.; Montagner, J.-P., Cou-
pling the spectral element method with a modal solution for elastic wave prop-
agation in global earth models. Geophys. J. Int., 152, 2003, 3467.
Chaljub, E., Modelisation numerique de la propagation dondes sismiques en
geometrie spherique: application `a la sismologie globale (Numerical modelling
of the propagation of seismic waves in spherical geometrie: applicaton to global
seismologyi). Ph.D. thesis, Universite Paris VII Denis Diderot, Paris, France,
2000.
Chaljub, E.; Capdeville, Y.; Vilotte, J.-P., Solving elastodynamics in a
uid solid heterogeneous sphere: a parallel spectral element approximation on
non-conforming grids. J. Comput. Phys., 187, 2003, 457491.
159
160 Bibliography
Clayton, R.; Engquist, B., Absorbing boundary conditions for acoustic and
elastic wave equations. Bull. Seismol. Soc. Am., 67(6), 1977, 15291540.
Clough, R. W., The nite element in plane stress analysis. In Proc. 2nd ASCE
Conf. on Electronic Computation, Pittsburgh, Pa., 1960.
Collino, F.; Tsogka, C., Application of the perfectly matched absorbing layer
model to the linear elastodynamic problem in anisotropic heterogeneous media.
Geophysics, 66(1), 2001, 294307.
Fornberg, B., The pseudospectral method - Comparisons with nite dierences
for the elastic wave equation. Geophysics, 52(04), 1987, 483501.
Funaro, D., FORTRAN Routines for Spectral Methods. Instituto di Analisi
Numerica, Pavia, 1993.
Gable, C.; Cherry, T., 2000, URL
http://www.ees.lanl.gov/EES5/geomesh/catalogue/
NTS TYBO EMBED 00/methods1.html.
last modied 21.11.2000; e-mail: gable@lanl.gov, tcherry@lanl.gov.
Galerkin, B. G., Series solution of some problems of elastic equilibrium of rods
and plates (russian). Vestn. Inzh. Tech., 19, 1915, 897908.
Geller, R. J.; Takeuchi, N., A new method for computing highly accurate
dsm synthetic seismograms. Geophys. J. Int., 123, 1995, 449470.
Hughes, T. J. R., The Finite Element Method - Linear Static and Dynamic
Finite Element Analysis. Prentice Hall, Englewood Clis, London, 1987.
Jung, M.; Langer, U., Methode der niten Elemente f ur Ingenieure. Teubner
Verlag, Wiesbaden, 2001.
Kelly, K. R.; Marfurt, K. J., Editors introduction to Chapter 1 - Classical
nite-dierence and nite-element methods. In Marfurt, K. J. (Editor),
Numerical modeling of seismic wave propagation, Soc. Expl. Geophys., 1990,
pp. 13.
Komatitsch, D., Methodes spectrales et elements spectraux pour lequation de
lelastodynamique 2D et 3D en milieu heterog`ene (Spectral and spectral-element
methods for the 2D and 3D elastodynamics equations in heterogeneous media).
Ph.D. thesis, Institut de Physique du Globe, Paris, France, 1997.
Komatitsch, D.; Barnes, C.; Tromp, J., Simulation of anisotropic wave
propagation based upon a spectral element method. Geophysics, 65(4), 2000,
12511260.
Bibliography 161
Komatitsch, D.; Liu, Q.; Tromp, J.; S
anchez-Sesma, F. J., The Spectral Element method for elastic wave equa-
tions: application to 2D and 3D seismic problems. Int. J. Numer. Meth. Engng.,
45, 1999, 11391164.
Kreiss, H. O.; Oliger, J., Comparison of accurate methods for the integration
of hyperbolic equations. Tellus, 24, 1972, 199215.
162 Bibliography
Madariaga, R., Dynamics of an expanding circular fault . Bull. Seismol. Soc.
Am., 65, 1976, 163182.
Maday, Y.; Patera, A. T., Spectral element methods for the incompressible
Navier-Stokes equations, 1989, 71143. Editors: A. K. Noor and J. T. Oden.
Metz, T., Optimale Operatoren fr die numerische Simulation von Wellenaus-
breitung - Ableitung,Implementierung und Verikation in 1,2und 3D. Masters
thesis, Dept. f ur Geo- und Umweltwissenschaften, Sektion Geophysik, Ludwig-
Maximilians-Universit at, M unchen, Germany, 2003. Unpublished.
M
andigkeitserkl
arung
Hiermit erklare ich, da ich die vorliegende Arbeit selbstandig und nur unter
Verwendung der angegebenen Hilfsmittel und Quellen angefertigt habe.
M unchen, den
165