/[escript]/trunk/doc/user/Installation.tex
ViewVC logotype

Contents of /trunk/doc/user/Installation.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 100 - (show annotations)
Wed Dec 15 03:48:48 2004 UTC (14 years, 3 months ago) by jgs
Original Path: trunk/esys2/doc/user/introduction.tex
File MIME type: application/x-tex
File size: 7636 byte(s)
*** empty log message ***

1 % $Id$
2
3 \chapter{The First Steps}
4
5 \section{Introduction}
6
7 \subsection{Getting the software}
8
9 \escript, \ESyS, all freely available. Where do people get \finley from?
10
11 \begin{enumerate}
12 \item how to get the software
13 \item a few words about the general structure
14 \item installation
15 \end{enumerate}
16
17 \section{How to solve a linear PDE}
18
19 \begin{figure}
20 \centerline{\includegraphics[width=\figwidth]{FirstStepDomain}}
21 \caption{Domain $\Omega$ with outer normal field $n$.}
22 \label{fig:FirstSteps.1}
23 \end{figure}
24
25 \begin{figure}
26 \centerline{\includegraphics[width=\figwidth]{FirstStepMesh}}
27 \caption{Mesh of $4 \time 4$ elements on a rectangular domain. Here
28 each element is a quadrilateral and described by four nodes, namely
29 the corner points. The solution is interpolated by a bi-linear
30 polynomial.}
31 \label{fig:FirstSteps.2}
32 \end{figure}
33
34 We want to solve the \index{partial differential equation}(\index{PDE})
35 \begin{equation}
36 -\Delta u + \alpha u =f
37 \label{eq:FirstSteps.1}
38 \end{equation}
39 for the solution $u$ on the domain $\Omega$. Here we assume that the
40 domain is the rectangle of length $1$ and height $2$, see
41 \fig{fig:FirstSteps.1}. $\Delta$ denotes the \index{Laplace
42 operator} which is defined by
43 \begin{equation}
44 \Delta u = (u\hackscore {,1})\hackscore{,1}+(u\hackscore{,2})\hackscore{,2}
45 \label{eq:FirstSteps.1.1}
46 \end{equation}
47 where for any function $w$ and any direction $i$ $u\hackscore{,i}$
48 denotes the derivative of $w$ with respect to $i$. $\alpha$ is a
49 known constant (we will set $\alpha=10$) and $f$ is a given function
50 which may depend on the location in the domain. On the boundary of
51 the domain $\Omega$ the solution $u$ shall fulfill the so-called
52 homogeneous \index{Neumann boundary condition}
53 \begin{equation}
54 \frac{\partial u}{\partial n} = 0
55 \label{eq:FirstSteps.2}
56 \end{equation}
57 where $n=(n\hackscore1,n\hackscore2)$ denotes the outer normal field
58 of the domain, see Figure~\ref{fig:FirstSteps.1} and
59 \begin{equation}
60 \frac{\partial u}{\partial n} = n\hackscore1 u\hackscore{,1} +
61 n\hackscore2 u\hackscore{,2}
62 \label{eq:FirstSteps.2.1}
63 \end{equation}
64 denotes the normal derivative on the boundary. The partial
65 differential \eqn{eq:FirstSteps.1}) together with the
66 boundary condition~(\eqn{eq:FirstSteps.2}) forms a boundary value
67 problem (\index{BVP}) for unknown function $u$.
68
69 In most cases, the BVP cannot be solved analytically and numerical
70 methods have to be used construct an approximation of the solution
71 $u$. Here we will use the \index{finite element method}
72 (\index{FEM}). The basic idea is to fill the domain with a set of
73 points, so called nodes. The solution is approximated by its values on
74 the nodes. Moreover, the domain is subdivide into small subdomain,
75 so-called elements. On each element the solution is represented by a
76 polynomial of a certain degree through its values at the nodes located
77 in the element. The nodes and its connection through elements is
78 called a \index{mesh}. \fig{fig:FirstSteps.2} shows an example
79 of a FEM mesh with four elements in the $x_0$ and for elements in the
80 $x_1$ direction over a rectangular domain. On more details we referring
81 to the literature, for instance \cite{X1,X2,X3}.
82
83 \escript provides the class \linearPDE to define a
84 general linear, steady differential partial differential equation of
85 second order. We will discuss the most general form that can be
86 defined through \class{linearPDE} later. The components which are
87 relevant for us here is as follows:
88 \begin{equation}
89 -\sum\hackscore{i,j=0}^k (A\hackscore{ij}
90 u\hackscore{,j})\hackscore{,i} + D u = Y
91 \label{eq:FirstSteps.3}
92 \end{equation}
93 In this form $D$ and $Y$ are scalars and $A$ is a $k \times k$ matrix
94 where $k$ denotes the spatial dimension (in our example we have
95 $k=2$). By comparing the template~(\ref{eq:FirstSteps.3}) with the
96 differential equation~(\ref{eq:FirstSteps.1}) we want to solve we can
97 immediately identify the appropriate values for $A$, $D$ and $Y$:
98 \begin{equation}
99 \begin{array}{lcccc}
100 A\hackscore{ij} & = & \delta\hackscore{ij}& =&
101 \left[
102 \begin{array}{cc}
103 1 & 0\\
104 0 & 1
105 \end{array}
106 \right] \\
107 D & =& \alpha \\
108 Y & = & f \\
109 \end{array}
110 \label{eq:FirstSteps.3.1}
111 \end{equation}
112 When the PDE is defined via~(\eqn{eq:FirstSteps.3}), \class{linearPDE}
113 makes a particular assumptions about the boundary conditions:
114 \begin{equation}
115 -\sum\hackscore{i,j=0}^k n\hackscore{i} A\hackscore{ij}
116 u\hackscore{,j} = 0
117 \label{eq:FirstSteps.4}
118 \end{equation}
119 Note that this boundary condition does not require extra information
120 as it only refers to the coefficient $A$ which already appears in the
121 PDE and so natural for it. Therefore this boundary condition is called
122 a \index{natural boundary condition}.
123
124 We will set $\alpha=10$ and $f=10$ such that $u=1$ becomes the exact
125 solution of the boundary value problem. We make this very simple
126 choice to be able to test our program as we can compare the result
127 with the exact solution. Later we will set $\alpha$ and $f$ to
128 functions of their locations in the domain in which case we will not
129 be able to give an analytic solution. However, after testing our
130 program on this very simple case, we can be confident that it working
131 correctly before we apply it is a more complicated situation.
132
133 This is the program to solve the boundary value problem: (Remember that
134 lines starting with '\#' are commend lines in Python)
135 %\verbatiminput{examples/FirstSteps1.py}
136 \begin{python}
137 # import ESyS and finley
138 from ESyS import *
139 import finley
140 # set a value for alpha:
141 alpha=10
142 # generate mesh:
143 mydomain=finley.Rectangle(n0=40,n1=20,l0=2.,l1=1.)
144 # generate a system:
145 mypde=linearPDE(A=[[1,0],[0,1]],D=alpha,Y=10,domain=mydomain)
146 # generate a test solution:
147 u=mypde.getSolution()
148 # calculate the error of the solution
149 error=u-1.
150 print "norm of the approximation error is ",Lsup(error)
151 \end{python}
152 Line 2 import \escript and a few other tools for \ESyS. In Line 3 is
153 importing \finley which is used to solve the partial differential
154 equation. In line 7, a rectangular domain of length $l\hackscore 0=2$
155 and height $l\hackscore 1=1$ is generated and subdivided in
156 $n\hackscore 0=40$ and $n\hackscore 1=20$ elements in $x\hackscore 0$
157 and $x\hackscore 1$ direction, respectively.
158
159 We are using a function of \finley. This determines later in the code
160 which solver for the PDE is actually being used to solve the PDE.
161
162 The solution is done in three steps:
163 \begin{enumerate}
164 \item generate a finite element mesh subdividing the domain into elements.
165 \item assemble the system of linear equations $Mu=b$ from the BVP
166 \item solve the linear system to get $u$
167 \end{enumerate}
168 The returned $u$ is given an approximation of the solution of the BVP
169 at the nodes of the finite element mesh. The quality of the
170 approximation depends on the size of the elements of the finite
171 element mesh: As smaller the element size the better the
172 approximation. In our example we know the solution of the BVP so we
173 can compare the returned approximation with the true solution. In
174 fact, as the true solution is simple, we can expect that the
175 approximation is exact.
176
177 The first step imports the package \ESyS which includes among
178 others the module \finley.
179
180 \section{A Time Dependent Problem}
181
182 % \verbatiminput{exam/finley\hackscoretime.py}
183
184 \section{With Dirichlet Conditions}
185
186 % \verbatiminput{exam/finley\hackscoredirichlet.py}
187
188 \section{Systems of PDEs}
189
190 % \verbatiminput{exam/system\hackscoretime.py}
191
192 \section{Explicit Schemes}
193 % \verbatiminput{exam/explicit\hackscoretime.py}

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26