/[escript]/trunk/doc/cookbook/example01.tex
ViewVC logotype

Diff of /trunk/doc/cookbook/example01.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2801 by ahallam, Thu Dec 3 01:45:48 2009 UTC revision 2861 by gross, Wed Jan 20 02:47:42 2010 UTC
# Line 29  which is defined as: Line 29  which is defined as:
29  \rho c\hackscore p \frac{\partial T}{\partial t} - \kappa \frac{\partial^{2} T}{\partial x^{2}} = q\hackscore H  \rho c\hackscore p \frac{\partial T}{\partial t} - \kappa \frac{\partial^{2} T}{\partial x^{2}} = q\hackscore H
30  \label{eqn:hd}  \label{eqn:hd}
31  \end{equation}  \end{equation}
32  where $\rho$ is the material density, $c\hackscore p$ is the specific heat and $\kappa$ is the thermal conductivity constant for a given material\footnote{A list of some common thermal conductivities is available from Wikipedia \url{http://en.wikipedia.org/wiki/List_of_thermal_conductivities}}.  where $\rho$ is the material density, $c\hackscore p$ is the specific heat and $\kappa$ is the thermal
33  The heat source is defined by the right hand side of \ref{eqn:hd} as $q\hackscore{H}$; this can take the form of a constant or a function of time and space. For example $q\hackscore{H} = Te^{-\gamma t}$ where we have the output of our heat source decaying with time. There are also two partial derivatives in \ref{eqn:hd}; $\frac{\partial T}{\partial t}$ describes the change in temperature with time while $\frac{\partial ^2 T}{\partial x^2}$ is the spatial change of temperature. As there is only a single spatial dimension to our problem, our temperature solution $T$ is only dependent on the time $t$ and our position along the iron bar $x$.  conductivity\footnote{A list of some common thermal conductivities is available from Wikipedia \url{http://en.wikipedia.org/wiki/List_of_thermal_conductivities}}. Here we assume that these material
34    parameters are \textbf{constant}.
35    The heat source is defined by the right hand side of \refEq{eqn:hd} as $q\hackscore{H}$; this can take the form of a constant or a function of time and space. For example $q\hackscore{H} = q\hackscore{0}e^{-\gamma t}$ where we have the output of our heat source decaying with time. There are also two partial derivatives in \refEq{eqn:hd}; $\frac{\partial T}{\partial t}$ describes the change in temperature with time while $\frac{\partial ^2 T}{\partial x^2}$ is the spatial change of temperature. As there is only a single spatial dimension to our problem, our temperature solution $T$ is only dependent on the time $t$ and our position along the iron bar $x$.
36    
37    \subsection{PDEs and the General Form}
38    Potentially, it is now possible to solve PDE \refEq{eqn:hd} analytically and this would produce an exact solution to our problem. However, it is not always possible or practical to solve a problem this way. Alternatively, computers can be used to solve these kinds of problems. To do this, a numerical approach is required to discretised
39    the PDE \refEq{eqn:hd} in time and space so finally we are left with a finite number of equations for a finite number of spatial and time steps in the model. While discretization introduces approximations and a degree of error, we find that a sufficiently sampled model is generally accurate enough for the requirements of the modeler.
40    
41    Firstly, we will discretise the PDE \refEq{eqn:hd} in the time direction which will
42    leave as with a steady linear PDE which is involving spatial derivatives only and needs to be solved in each time
43    step to progress in time - \esc can help us here.
44    
45  \subsection{\esc, PDEs and The General Form}  For the discretization in time we will use is the Backwards Euler approximation scheme\footnote{see \url{http://en.wikipedia.org/wiki/Euler_method}}. It bases on the
46  Potentially, it is now possible to solve \ref{eqn:hd} analytically and this would produce an exact solution to our problem. However, it is not always possible or practical to solve a problem this way. Alternatively, computers can be used to solve these kinds of problems when a large number of sums or a more complex visualisation is required. To do this, a numerical approach is required - \esc can help us here -  and it becomes necessary to discretize the equation so that we are left with a finite number of equations for a finite number of spatial and time steps in the model. While discretization introduces approximations and a degree of error, we find that a sufficiently sampled model is generally accurate enough for the requirements of the modeller.  approximation
47    \begin{equation}
48    \frac{\partial T(t)}{\partial t} \approx \frac{T(t)-T(t-h)}{h}
49    \label{eqn:beuler}
50    \end{equation}
51    for  $\frac{\partial T}{\partial t}$  at time $t$
52    where $h$ is the time step size. This can also be written as;
53    \begin{equation}
54    \frac{\partial T}{\partial t}(t^{(n)}) \approx \frac{T^{(n)} - T^{(n-1)}}{h}
55    \label{eqn:Tbeuler}
56    \end{equation}
57    where the upper index $n$ denotes the n\textsuperscript{th} time step. So one has
58    \begin{equation}
59    \begin{array}{rcl}
60    t^{(n)} & = & t^{(n-1)}+h \\
61    T^{(n)} & = & T(t^{(n-1)}) \\
62    \end{array}
63    \label{eqn:Neuler}
64    \end{equation}
65    Substituting \refEq{eqn:Tbeuler} into \refEq{eqn:hd} we get;
66    \begin{equation}
67    \frac{\rho c\hackscore p}{h} (T^{(n)} - T^{(n-1)}) - \kappa \frac{\partial^{2} T^{(n)}}{\partial x^{2}} = q\hackscore H
68    \label{eqn:hddisc}
69    \end{equation}
70    Notice that we evaluate the spatial derivative term at current time $t^{(n)}$ - therefore the name \textbf{backward Euler} scheme. Alternatively, one can use evaluate the spatial derivative term at the previous time $t^{(n-1)}$. This
71    approach is called the \textbf{forward Euler} scheme. This scheme can provide some computational advantages which
72    we are not discussed here but has the major disadvantage that depending on the
73    material parameter as well as the discretiztion of the spatial derivative term the time step size $h$ needs to be chosen sufficiently small to achieve a stable temperature when progressing in time. The term \textit{stable} means
74    that the approximation of the temperature will not grow beyond its initial bounds and becomes unphysical.
75    The backward Euler which we use here is unconditionally stable meaning that under the assumption of
76    physically correct problem set-up the temperature approximation remains physical for all times.
77    The user needs to keep in mind that the discretization error introduced by \refEq{eqn:beuler}
78    is sufficiently small so a good approximation of the true temperature is calculated. It is
79    therefore crucial that the user remains critical about his/her results and for instance compares
80    the results for different time and spatial step sizes.
81    
82    To get the temperature $T^{(n)}$ at time $t^{(n)}$ we need to solve the linear
83    differential equation \refEq{eqn:hddisc} which is only including spatial derivatives. To solve this problem
84    we want to to use \esc.
85    
86  \esc interfaces with any given PDE via a general form. In this example we will illustrate a simpler version of the full linear PDE general form which is available in the \esc user's guide. A simplified form that suits our heat diffusion problem\footnote{In the form of the \esc users guide which using the Einstein convention is written as  \esc interfaces with any given PDE via a general form. For the purpose of this introduction we will illustrate a simpler version of the full linear PDE general form which is available in the \esc user's guide. A simplified form that suits our heat diffusion problem\footnote{In the form of the \esc users guide which using the Einstein convention is written as
87  $-(A\hackscore{jl} u\hackscore{,l})\hackscore{,j}+D u =Y$}  $-(A\hackscore{jl} u\hackscore{,l})\hackscore{,j}+D u =Y$}
88  is described by;  is described by;
89  \begin{equation}\label{eqn:commonform nabla}  \begin{equation}\label{eqn:commonform nabla}
90  -\nabla\cdot(A\cdot\nabla u) + Du = f  -\nabla\cdot(A\cdot\nabla u) + Du = f
91  \end{equation}  \end{equation}
92  where $A$, $D$ and $f$ are known values. The symbol $\nabla$ which is called the \textit{Nabla operator} or \textit{del operator} represents  where $A$, $D$ and $f$ are known values and $u$ is the unknown solution. The symbol $\nabla$ which is called the \textit{Nabla operator} or \textit{del operator} represents
93  the spatial derivative of its subject - in this case $u$. Lets assume for a moment that we deal with a one-dimensional problem then ;  the spatial derivative of its subject - in this case $u$. Lets assume for a moment that we deal with a one-dimensional problem then ;
94  \begin{equation}  \begin{equation}
95  \nabla = \frac{\partial}{\partial x}  \nabla = \frac{\partial}{\partial x}
96  \end{equation}  \end{equation}
97  and we can write \ref{eqn:commonform nabla} as;  and we can write \refEq{eqn:commonform nabla} as;
98  \begin{equation}\label{eqn:commonform}  \begin{equation}\label{eqn:commonform}
99  -A\frac{\partial^{2}u}{\partial x^{2}} + Du = f  -A\frac{\partial^{2}u}{\partial x^{2}} + Du = f
100  \end{equation}  \end{equation}
101  if $A$ is constant then  \ref{eqn:commonform} is consistent with our heat diffusion problem in \ref{eqn:hd} with the exception of $u$. Thus when comparing equations \ref{eqn:hd} and \ref{eqn:commonform} we see that;  if $A$ is constant. To match this simplified general form to our problem \refEq{eqn:hddisc}
102  \begin{equation}  we rearrange \refEq{eqn:hddisc};
 A = \kappa; D = \rho c \hackscore{p}; f = q \hackscore{H}  
 \end{equation}  
   
 We can write the partial $\frac{\partial T}{\partial t}$ in terms of $u$ by discretising the time of our solution. The method we will use is the Backwards Euler approximation, which states;  
 \begin{equation}  
 \frac{\partial f(x)}{\partial x} \approx \frac{f(x+h)-f(x)}{h}  
 \label{eqn:beuler}  
 \end{equation}  
 where h is the the discrete step size $\Delta x$.  
 Now if the temperature $T(t)$ is substituted in by letting $f(x) = T(t)$ then from \ref{eqn:beuler} we see that;  
 \begin{equation}  
 T'(t) \approx \frac{T(t+h) - T(t)}{h}  
 \end{equation}  
 which can also be written as;  
 \begin{equation}  
 \frac{\partial T^{(n)}}{\partial t} \approx \frac{T^{(n)} - T^{(n-1)}}{h}  
 \label{eqn:Tbeuler}  
 \end{equation}  
 where $n$ denotes the n\textsuperscript{th} time step. Substituting \ref{eqn:Tbeuler} into \ref{eqn:hd} we get;  
 \begin{equation}  
 \frac{\rho c\hackscore p}{h} (T^{(n)} - T^{(n-1)}) - \kappa \frac{\partial^{2} T}{\partial x^{2}} = q\hackscore H  
 \label{eqn:hddisc}  
 \end{equation}  
 To fit our simplified general form we can rearrange \ref{eqn:hddisc};  
103  \begin{equation}  \begin{equation}
104  \frac{\rho c\hackscore p}{h} T^{(n)} - \kappa \frac{\partial^2 T^{(n)}}{\partial x^2} = q\hackscore H +  \frac{\rho c\hackscore p}{h} T^{(n-1)}  \frac{\rho c\hackscore p}{h} T^{(n)} - \kappa \frac{\partial^2 T^{(n)}}{\partial x^2} = q\hackscore H +  \frac{\rho c\hackscore p}{h} T^{(n-1)}
105  \label{eqn:hdgenf}  \label{eqn:hdgenf}
106  \end{equation}  \end{equation}
107  The PDE is now in a form that satisfies \refEq{eqn:commonform nabla} which is required for \esc to solve our PDE. This can be done by generating a solution for successive increments in the time nodes $t^{(n)}$ where  The PDE is now in a form that satisfies \refEq{eqn:commonform nabla} which is required for \esc to solve our PDE. This can be done by generating a solution for successive increments in the time nodes $t^{(n)}$ where
108  $t^{(0)}=0$ and  $t^{(n)}=t^{(n-1)}+h$ where $h>0$ is the step size and assumed to be constant.  $t^{(0)}=0$ and  $t^{(n)}=t^{(n-1)}+h$ where $h>0$ is the step size and assumed to be constant.
109  In the following the upper index ${(n)}$ refers to a value at time $t^{(n)}$. Finally, by comparing \ref{eqn:hdgenf} with \ref{eqn:commonform} it can be seen that;  In the following the upper index ${(n)}$ refers to a value at time $t^{(n)}$. Finally, by comparing \refEq{eqn:hdgenf} with \refEq{eqn:commonform} it can be seen that;
110  \begin{equation}  \begin{equation}
111    u=T^{(n)};
112  A = \kappa; D = \frac{\rho c \hackscore{p}}{h}; f = q \hackscore{H} + \frac{\rho c\hackscore p}{h} T^{(n-1)}  A = \kappa; D = \frac{\rho c \hackscore{p}}{h}; f = q \hackscore{H} + \frac{\rho c\hackscore p}{h} T^{(n-1)}
113  \end{equation}  \end{equation}
114    
115  Now that the general form has been established, it can be submitted to \esc. Note that it is necessary to establish the state of our system at time zero or $T^{(n=0)}$. This is due to the time derivative approximation we have used from \ref{eqn:Tbeuler}. Our model stipulates a starting temperature in the iron bar of 0\textcelsius. Thus the temperature distribution is simply;  Now that the general form has been established, it can be submitted to \esc. Note that it is necessary to establish the state of our system at time zero or $T^{(n=0)}$. This is due to the time derivative approximation we have used from \refEq{eqn:Tbeuler}. Our model stipulates a starting temperature in the iron bar of 0\textcelsius. Thus the temperature distribution is simply;
116  \begin{equation}  \begin{equation}
117  T(x,0) = T\hackscore{ref} = 0  T(x,0) = T\hackscore{ref} = 0
118  \end{equation}  \end{equation}
119  for all $x$ in the domain.  for all $x$ in the domain.
120    
121  \subsection{Boundary Conditions}  \subsection{Boundary Conditions}
122  With the PDE sufficiently modified, consideration must now be given to the boundary conditions of our model. Typically there are two main types of boundary conditions known as Neumann and Dirichlet\footnote{More information on Boundary Conditions is available at Wikipedia \url{http://en.wikipedia.org/wiki/Boundary_conditions}}. In this example, we have utilised both conditions. Dirichlet is conceptually simpler and is used to prescribe a known value to the model on its boundary. For this model Dirichlet boundary conditions exist where we have applied our heat source. As the heat source is a constant, we can simulate its presence on that boundary. This is done by continuously resetting the temperature of the boundary, so that it is the same as the heat source.    With the PDE sufficiently modified, consideration must now be given to the boundary conditions of our model. Typically there are two main types of boundary conditions known as Neumann and Dirichlet boundary conditions\footnote{More information on Boundary Conditions is available at Wikipedia \url{http://en.wikipedia.org/wiki/Boundary_conditions}}, respectively.
123    A Dirichlet boundary condition is conceptually simpler and is used to prescribe a known value to the unknown - in our example the temperature - on boundary of the region of interest.
124    \editor{LUTZ: This is not correct!!}
125    For this model Dirichlet boundary conditions exist where we have applied our heat source. As the heat source is a constant, we can simulate its presence on that boundary. This is done by continuously resetting the temperature of the boundary, so that it is the same as the heat source.  
126    
127  Neumann boundary conditions describe the radiation or flux that is normal to the boundary surface. This aptly describes our insulation conditions as we do not want to exert a constant temperature as with the heat source. However, we do want to prevent any loss of energy from the system.  Neumann boundary conditions describe the radiation or flux that is normal to the boundary surface. This aptly describes our insulation conditions as we do not want to exert a constant temperature as with the heat source. However, we do want to prevent any loss of energy from the system.
128    
# Line 111  and simplified to our one dimensional mo Line 139  and simplified to our one dimensional mo
139  where $\eta$ is a given material coefficient depending on the material of the block and the surrounding medium and $\hat{n}\hackscore i$ is the $i$-th component of the outer normal field \index{outer normal field} at the surface of the domain. These two conditions form a boundary value problem that has to be solved for each time step. Due to the perfect insulation in our model we can set $\eta = 0$ which results in zero flux - no energy in or out - we do not need to worry about the Neumann terms of the general form for this example.  where $\eta$ is a given material coefficient depending on the material of the block and the surrounding medium and $\hat{n}\hackscore i$ is the $i$-th component of the outer normal field \index{outer normal field} at the surface of the domain. These two conditions form a boundary value problem that has to be solved for each time step. Due to the perfect insulation in our model we can set $\eta = 0$ which results in zero flux - no energy in or out - we do not need to worry about the Neumann terms of the general form for this example.
140    
141  \subsection{A \textit{1D} Clarification}  \subsection{A \textit{1D} Clarification}
142  It is necessary for clarification that we revisit the general PDE from \refeq{eqn:commonform nabla} under the light of a two dimensional domain. \esc is inherently designed to solve problems that are greater than one dimension and so \ref{eqn:commonform nabla} needs to be read as a higher dimensional problem. In the case of two spatial dimensions the \textit{Nabla operator} has in fact two components $\nabla = (\frac{\partial}{\partial x}, \frac{\partial}{\partial y})$. In full, \ref{eqn:commonform nabla} assuming a constant coefficient $A$, takes the form;  It is necessary for clarification that we revisit the general PDE from \refeq{eqn:commonform nabla} under the light of a two dimensional domain. \esc is inherently designed to solve problems that are greater than one dimension and so \refEq{eqn:commonform nabla} needs to be read as a higher dimensional problem. In the case of two spatial dimensions the \textit{Nabla operator} has in fact two components $\nabla = (\frac{\partial}{\partial x}, \frac{\partial}{\partial y})$. In full, \refEq{eqn:commonform nabla} assuming a constant coefficient $A$, takes the form;
143  \begin{equation}\label{eqn:commonform2D}  \begin{equation}\label{eqn:commonform2D}
144  -A\hackscore{00}\frac{\partial^{2}u}{\partial x^{2}}  -A\hackscore{00}\frac{\partial^{2}u}{\partial x^{2}}
145  -A\hackscore{01}\frac{\partial^{2}u}{\partial x\partial y}  -A\hackscore{01}\frac{\partial^{2}u}{\partial x\partial y}
# Line 122  It is necessary for clarification that w Line 150  It is necessary for clarification that w
150  Notice that for the higher dimensional case $A$ becomes a matrix. It is also  Notice that for the higher dimensional case $A$ becomes a matrix. It is also
151  important to notice that the usage of the Nabla operator creates  important to notice that the usage of the Nabla operator creates
152  a compact formulation which is also independent from the spatial dimension.  a compact formulation which is also independent from the spatial dimension.
153  So to make the general PDE~\ref{eqn:commonform2D} one dimensional as  So to make the general PDE \refEq{eqn:commonform2D} one dimensional as
154  shown in~\ref{eqn:commonform} we need to set  shown in \refEq{eqn:commonform} we need to set
155  \begin{equation}  \begin{equation}
156  A\hackscore{00}=A; A\hackscore{01}=A\hackscore{10}=A\hackscore{11}=0  A\hackscore{00}=A; A\hackscore{01}=A\hackscore{10}=A\hackscore{11}=0
157  \end{equation}  \end{equation}
158    
159  \subsection{Developing a PDE Solution Script}  \subsection{Developing a PDE Solution Script}
160  \label{sec:key}  \label{sec:key}
161  To solve the heat diffusion equation (equation \ref{eqn:hd}) we will write a simple \pyt script which uses the \modescript, \modfinley and \modmpl modules. At this point we assume that you have some basic understanding of the \pyt programming language. If not there are some pointers and links available in Section \ref{sec:escpybas} .  To solve the heat diffusion equation (equation \refEq{eqn:hd}) we will write a simple \pyt script which uses the \modescript, \modfinley and \modmpl modules. At this point we assume that you have some basic understanding of the \pyt programming language. If not there are some pointers and links available in Section \ref{sec:escpybas} .
162    
163  By developing a script for \esc, the heat diffusion equation can be solved at successive time steps for a predefined period using our general form \ref{eqn:hdgenf}. Firstly it is necessary to import all the libraries\footnote{The libraries contain predefined scripts that are required to solve certain problems, these can be simple like $sine$ and $cosine$ functions or more complicated like those from our \esc library.}  By developing a script for \esc, the heat diffusion equation can be solved at successive time steps for a predefined period using our general form \refEq{eqn:hdgenf}. Firstly it is necessary to import all the libraries\footnote{The libraries contain predefined scripts that are required to solve certain problems, these can be simple like $sine$ and $cosine$ functions or more complicated like those from our \esc library.}
164  that we will require.  that we will require.
165  \begin{python}  \begin{python}
166  from esys.escript import *  from esys.escript import *

Legend:
Removed from v.2801  
changed lines
  Added in v.2861

  ViewVC Help
Powered by ViewVC 1.1.26