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

Diff of /trunk/doc/user/linearPDE.tex

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

revision 625 by gross, Thu Mar 23 00:41:25 2006 UTC revision 999 by gross, Tue Feb 27 08:12:37 2007 UTC
# Line 10  Line 10 
10    
11  \chapter{The module \linearPDEs}  \chapter{The module \linearPDEs}
12    
 \declaremodule{extension}{linearPDEs} \modulesynopsis{Linear partial pifferential equation handler}  
 The module \linearPDEs provides an interface to define and solve linear partial  
 differential equations within \escript. \linearPDEs does not provide any  
 solver capabilities in itself but hands the PDE over to  
 the PDE solver library defined through the \Domain of the PDE.  
 The general interface is provided through the \LinearPDE class. The  
 \AdvectivePDE which is derived from the \LinearPDE class  
 provides an interface to PDE dominated by its advective terms. The \Poisson  
 class which is also derived form the \LinearPDE class should be used  
 to define the Poisson equation \index{Poisson}.    
13    
14  \section{\LinearPDE Class}  
15    \section{Linear Partial Differential Equations}
16  \label{SEC LinearPDE}  \label{SEC LinearPDE}
17    
18  The \LinearPDE class is used to define a general linear, steady, second order PDE  The \LinearPDE class is used to define a general linear, steady, second order PDE
19  for an unknown function $u$ on a given $\Omega$ defined through a \Domain object.  for an unknown function $u$ on a given $\Omega$ defined through a \Domain object.
20  In the following $\Gamma$ denotes the boundary of the domain $\Omega$. $n$ denotes  In the following $\Gamma$ denotes the boundary of the domain $\Omega$. $n$ denotes
21  the outer normal field on $\Gamma$.  the outer normal field on $\Gamma$.
22    
23  For a single PDE with a solution with a single component the linear PDE is defined in the  For a single PDE with a solution with a single component the linear PDE is defined in the
24  following form:  following form:
25  \begin{equation}\label{LINEARPDE.SINGLE.1}  \begin{equation}\label{LINEARPDE.SINGLE.1}
26  -(A\hackscore{jl} u\hackscore{,l})\hackscore{,j}+(B\hackscore{j} u)\hackscore{,j}+C\hackscore{l} u\hackscore{,l}+D u =-X\hackscore{j,j}+Y \; .  -(A\hackscore{jl} u\hackscore{,l})\hackscore{,j}-(B\hackscore{j} u)\hackscore{,j}+C\hackscore{l} u\hackscore{,l}+D u =-X\hackscore{j,j}+Y \; .
27  \end{equation}  \end{equation}
28  $u_{,j}$ denotes the derivative of $u$ with respect to the $j$-th spatial direction. Einstein's summation convention, ie. summation over indexes appearing twice in a term of a sum is performed, is used.  $u_{,j}$ denotes the derivative of $u$ with respect to the $j$-th spatial direction. Einstein's summation convention, ie. summation over indexes appearing twice in a term of a sum is performed, is used.
29  The coefficients $A$, $B$, $C$, $D$, $X$ and $Y$ have to be specified through \Data objects in the  The coefficients $A$, $B$, $C$, $D$, $X$ and $Y$ have to be specified through \Data objects in the
30  \Function on the PDE or objects that can be converted into such \Data objects.  \Function on the PDE or objects that can be converted into such \Data objects.
31  $A$ is a \RankTwo, $B$, $C$ and $X$ are \RankOne and $D$ and $Y$ are scalar.  $A$ is a \RankTwo, $B$, $C$ and $X$ are \RankOne and $D$ and $Y$ are scalar.
32  The following natural  The following natural
33  boundary conditions are considered \index{boundary condition!natural} on $\Gamma$:  boundary conditions are considered \index{boundary condition!natural} on $\Gamma$:
34  \begin{equation}\label{LINEARPDE.SINGLE.2}  \begin{equation}\label{LINEARPDE.SINGLE.2}
35  n\hackscore{j}(A\hackscore{jl} u\hackscore{,l}+B\hackscore{j} u)+d u=n\hackscore{j}X\hackscore{j} + y  \;.  n\hackscore{j}(A\hackscore{jl} u\hackscore{,l}+B\hackscore{j} u)+d u=n\hackscore{j}X\hackscore{j} + y  \;.
36  \end{equation}  \end{equation}
37  Notice that the coefficients $A$, $B$ and $X$ are defined in the PDE. The coefficients $d$ and $y$ are    Notice that the coefficients $A$, $B$ and $X$ are defined in the PDE. The coefficients $d$ and $y$ are
38  each a \Scalar in the \FunctionOnBoundary.  Constraints \index{constraint} for the solution prescribing the value of the  each a \Scalar in the \FunctionOnBoundary.  Constraints \index{constraint} for the solution prescribing the value of the
39  solution at certain locations in the domain. They have the form  solution at certain locations in the domain. They have the form
40  \begin{equation}\label{LINEARPDE.SINGLE.3}  \begin{equation}\label{LINEARPDE.SINGLE.3}
41  u=r \mbox{ where } q>0  u=r \mbox{ where } q>0
# Line 52  u=r \mbox{ where } q>0 Line 43  u=r \mbox{ where } q>0
43  $r$ and $q$ are each \Scalar where $q$ is the characteristic function  $r$ and $q$ are each \Scalar where $q$ is the characteristic function
44  \index{characteristic function} defining where the constraint is applied.  \index{characteristic function} defining where the constraint is applied.
45  The constraints defined by \eqn{LINEARPDE.SINGLE.3} override any other condition set by \eqn{LINEARPDE.SINGLE.1}  The constraints defined by \eqn{LINEARPDE.SINGLE.3} override any other condition set by \eqn{LINEARPDE.SINGLE.1}
46  or \eqn{LINEARPDE.SINGLE.2}.  or \eqn{LINEARPDE.SINGLE.2}.
47    
48  For a system of PDEs and a solution with several components the PDE has the form  For a system of PDEs and a solution with several components the PDE has the form
49  \begin{equation}\label{LINEARPDE.SYSTEM.1}  \begin{equation}\label{LINEARPDE.SYSTEM.1}
50  -(A\hackscore{ijkl} u\hackscore{k,l}){,j}+(B\hackscore{ijk} u\hackscore{k})\hackscore{,j}+C\hackscore{ikl} u\hackscore{k,l}+D\hackscore{ik} u\hackscore{k} =-X\hackscore{ij,j}+Y\hackscore{i} \; .  -(A\hackscore{ijkl} u\hackscore{k,l})\hackscore{,j}-(B\hackscore{ijk} u\hackscore{k})\hackscore{,j}+C\hackscore{ikl} u\hackscore{k,l}+D\hackscore{ik} u\hackscore{k} =-X\hackscore{ij,j}+Y\hackscore{i} \; .
51  \end{equation}  \end{equation}
52  $A$ is a \RankFour, $B$ and $C$ are each a \RankThree, $D$ and $X$ are each a \RankTwo and $Y$ is a \RankOne.  $A$ is a \RankFour, $B$ and $C$ are each a \RankThree, $D$ and $X$ are each a \RankTwo and $Y$ is a \RankOne.
53  The natural boundary conditions \index{boundary condition!natural} take the form:  The natural boundary conditions \index{boundary condition!natural} take the form:
54  \begin{equation}\label{LINEARPDE.SYSTEM.2}  \begin{equation}\label{LINEARPDE.SYSTEM.2}
55  n\hackscore{j}(A\hackscore{ijkl} u\hackscore{k,l}+B\hackscore{ijk} u\hackscore{k})+d\hackscore{ik} u\hackscore{k}=n\hackscore{j}X\hackscore{ij}+y\hackscore{i}  \;.  n\hackscore{j}(A\hackscore{ijkl} u\hackscore{k,l}+B\hackscore{ijk} u\hackscore{k})+d\hackscore{ik} u\hackscore{k}=n\hackscore{j}X\hackscore{ij}+y\hackscore{i}  \;.
56  \end{equation}  \end{equation}
57  The coefficient $d$ is a \RankTwo and $y$ is a    The coefficient $d$ is a \RankTwo and $y$ is a
58  \RankOne both in the \FunctionOnBoundary. Constraints \index{constraint} take the form  \RankOne both in the \FunctionOnBoundary. Constraints \index{constraint} take the form
59  \begin{equation}\label{LINEARPDE.SYSTEM.3}  \begin{equation}\label{LINEARPDE.SYSTEM.3}
60  u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0  u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0
61  \end{equation}  \end{equation}
62  $r$ and $q$ are each \RankOne. Notice that not necessarily all components must  $r$ and $q$ are each \RankOne. Notice that not necessarily all components must
63  have a constraint at all locations.  have a constraint at all locations.
64    
65  \LinearPDE also supports solution discontinuities \index{discontinuity} over contact region $\Gamma^{contact}$  \LinearPDE also supports solution discontinuities \index{discontinuity} over contact region $\Gamma^{contact}$
66  in the domain $\Omega$. To specify the conditions across the discontinuity we are using the  in the domain $\Omega$. To specify the conditions across the discontinuity we are using the
67  generalised flux $J$ which is in the case of a systems of PDEs and several components of the solution  generalised flux $J$ which is in the case of a systems of PDEs and several components of the solution
68  defined as  defined as
69  \begin{equation}\label{LINEARPDE.SYSTEM.5}  \begin{equation}\label{LINEARPDE.SYSTEM.5}
70  J\hackscore{ij}=A\hackscore{ijkl}u\hackscore{k,l}+B\hackscore{ijk}u\hackscore{k}-X\hackscore{ij}  J\hackscore{ij}=A\hackscore{ijkl}u\hackscore{k,l}+B\hackscore{ijk}u\hackscore{k}-X\hackscore{ij}
71  \end{equation}  \end{equation}
# Line 82  For the case of single solution componen Line 73  For the case of single solution componen
73  \begin{equation}\label{LINEARPDE.SINGLE.5}  \begin{equation}\label{LINEARPDE.SINGLE.5}
74  J\hackscore{j}=A\hackscore{jl}u\hackscore{,l}+B\hackscore{j}u\hackscore{k}-X\hackscore{j}  J\hackscore{j}=A\hackscore{jl}u\hackscore{,l}+B\hackscore{j}u\hackscore{k}-X\hackscore{j}
75  \end{equation}  \end{equation}
76  In the context of discontinuities \index{discontinuity} $n$ denotes the normal on the  In the context of discontinuities \index{discontinuity} $n$ denotes the normal on the
77  discontinuity pointing from side 0 towards side 1. For a system of PDEs  discontinuity pointing from side 0 towards side 1. For a system of PDEs
78  the contact condition takes the form  the contact condition takes the form
79  \begin{equation}\label{LINEARPDE.SYSTEM.6}  \begin{equation}\label{LINEARPDE.SYSTEM.6}
# Line 91  n\hackscore{j} J^{0}\hackscore{ij}=n\hac Line 82  n\hackscore{j} J^{0}\hackscore{ij}=n\hac
82  where $J^{0}$ and $J^{1}$ are the fluxes on side $0$ and side $1$ of the  where $J^{0}$ and $J^{1}$ are the fluxes on side $0$ and side $1$ of the
83  discontinuity $\Gamma^{contact}$, respectively. $[u]$, which is the difference  discontinuity $\Gamma^{contact}$, respectively. $[u]$, which is the difference
84  of the solution at side 1 and at side 0, denotes the jump of $u$ across $\Gamma^{contact}$.  of the solution at side 1 and at side 0, denotes the jump of $u$ across $\Gamma^{contact}$.
85  The coefficient $d^{contact}$ is a \RankTwo and $y^{contact}$ is a    The coefficient $d^{contact}$ is a \RankTwo and $y^{contact}$ is a
86  \RankOne both in the \FunctionOnContactZero or \FunctionOnContactOne.  \RankOne both in the \FunctionOnContactZero or \FunctionOnContactOne.
87  In case of a single PDE and a single component solution the contact condition takes the form  In case of a single PDE and a single component solution the contact condition takes the form
88  \begin{equation}\label{LINEARPDE.SINGLE.6}  \begin{equation}\label{LINEARPDE.SINGLE.6}
# Line 111  A\hackscore{ijkl}=A\hackscore{klij} \\ Line 102  A\hackscore{ijkl}=A\hackscore{klij} \\
102  B\hackscore{ijk}=C\hackscore{kij} \\  B\hackscore{ijk}=C\hackscore{kij} \\
103  D\hackscore{ik}=D\hackscore{ki} \\  D\hackscore{ik}=D\hackscore{ki} \\
104  d\hackscore{ik}=d\hackscore{ki} \\  d\hackscore{ik}=d\hackscore{ki} \\
105  d^{contact}\hackscore{ik}=d^{contact}\hackscore{ki}  d^{contact}\hackscore{ik}=d^{contact}\hackscore{ki}
106  \end{eqnarray}  \end{eqnarray}
107  Note that different from the scalar case~\eqn{LINEARPDE.SINGLE.4} now the coefficients $D$, $d$ abd $d^{contact}$  Note that different from the scalar case~\eqn{LINEARPDE.SINGLE.4} now the coefficients $D$, $d$ abd $d^{contact}$
108  have to be inspected.  have to be inspected.
109    
110  \section{\LinearPDE class}  
111  This is the general class to define a linear PDE in \escript. We list a selction of the most  \subsection{Classes}
112    \declaremodule{extension}{esys.escript.linearPDEs}
113    \modulesynopsis{Linear partial pifferential equation handler}
114    The module \linearPDEs provides an interface to define and solve linear partial
115    differential equations within \escript. \linearPDEs does not provide any
116    solver capabilities in itself but hands the PDE over to
117    the PDE solver library defined through the \Domain of the PDE.
118    The general interface is provided through the \LinearPDE class. The
119    \AdvectivePDE which is derived from the \LinearPDE class
120    provides an interface to PDE dominated by its advective terms. The \Poisson
121    class which is also derived form the \LinearPDE class should be used
122    to define the Poisson equation \index{Poisson}.
123    
124    \subsection{\LinearPDE class}
125    This is the general class to define a linear PDE in \escript. We list a selction of the most
126  important methods of the class only and refer to reference guide \ReferenceGuide for a complete list.  important methods of the class only and refer to reference guide \ReferenceGuide for a complete list.
127    
128  \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0}  \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0}
129  opens a linear, steady, second order PDE on the \Domain \var{domain}. \var{numEquations}  opens a linear, steady, second order PDE on the \Domain \var{domain}. \var{numEquations}
130  and \var{numSolutions} gives the number of equations and the number of solutiopn components.  and \var{numSolutions} gives the number of equations and the number of solutiopn components.
131  If \var{numEquations} and \var{numSolutions} is non-positive, the number of equations  If \var{numEquations} and \var{numSolutions} is non-positive, the number of equations
132  and the number solutions, respctively, stay undefined until a coefficient is  and the number solutions, respctively, stay undefined until a coefficient is
133  defined.  defined.
134  \end{classdesc}  \end{classdesc}
135    
136  \begin{methoddesc}[LinearPDE]{setValue}{  \begin{methoddesc}[LinearPDE]{setValue}{
137  \optional{A=Data()}\optional{, B=Data()},  \optional{A}\optional{, B},
138  \optional{, C=Data()}\optional{, D=Data()}  \optional{, C}\optional{, D}
139  \optional{, X=Data()}\optional{, Y=Data()}  \optional{, X}\optional{, Y}
140  \optional{, d=Data()}\optional{, y=Data()}  \optional{, d}\optional{, y}
141  \optional{, d_contact=Data()}\optional{, y_contact=Data()}  \optional{, d_contact}\optional{, y_contact}
142  \optional{, q=Data()}\optional{, r=Data()}}  \optional{, q}\optional{, r}}
143  assigns new values to coefficients.  assigns new values to coefficients. By dafault all values are assumed to be zero\footnote{
144    In fact it is assumed they are not present by assigning the value \code{escript.Data()}. The
145    can by used by the solver library to reduce computational costs.
146    }
147  If the new coefficient value is not a \Data object, it is converted into a \Data object in the  If the new coefficient value is not a \Data object, it is converted into a \Data object in the
148  appropriate \FunctionSpace.  appropriate \FunctionSpace.
149  \end{methoddesc}  \end{methoddesc}
150    
151  \begin{methoddesc}[LinearPDE]{getCoefficient}{name}  \begin{methoddesc}[LinearPDE]{getCoefficient}{name}
152  return the value assigned to coefficient \var{name}. If \var{name} is not a valid name  return the value assigned to coefficient \var{name}. If \var{name} is not a valid name
153  an exception is raised.  an exception is raised.
154  \end{methoddesc}  \end{methoddesc}
155    
156  \begin{methoddesc}[LinearPDE]{getShapeOfCoefficient}{name}  \begin{methoddesc}[LinearPDE]{getShapeOfCoefficient}{name}
# Line 162  switches the debug mode to on. Line 170  switches the debug mode to on.
170  \end{methoddesc}  \end{methoddesc}
171    
172  \begin{methoddesc}[LinearPDE]{isUsingLumping}{}  \begin{methoddesc}[LinearPDE]{isUsingLumping}{}
173  returns \True if lumping is switched on. Otherwise \False is returned.  returns \True if \LUMPING is set as the solver for the system of lienar equations.
174    Otherwise \False is returned.
175  \end{methoddesc}  \end{methoddesc}
176    
177  \begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\options{, preconditioner=LinearPDE.DEFAULT})  \begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\optional{, preconditioner=LinearPDE.DEFAULT}}
178  sets the solver method and preconditioner to be used. It is pointed out that a PDE solver library  sets the solver method and preconditioner to be used. It is pointed out that a PDE solver library
179  may not know the specified solver method but may choose a similar method and preconditioner.  may not know the specified solver method but may choose a similar method and preconditioner.
180    \end{methoddesc}
181    
182    \begin{methoddesc}[LinearPDE]{getSolverMethodName}{}
183    returns the name of the solver method and preconditioner which is currently been used.
184  \end{methoddesc}  \end{methoddesc}
185    
186    \begin{methoddesc}[LinearPDE]{getSolverMethod}{}
187    returns the solver method and preconditioner which is currently been used.
188    \end{methoddesc}
189    
190    \begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=LinearPDE.DEFAULT}}
191    Set the solver package to be used by PDE library to solve the linear systems of equations. The
192    specified package may not be supported by the PDE solver library. In this case, dependng on
193    the PDE solver, the default solver is used or an exeption is thrown.
194    If \var{package} is not specified, the default package of the PDE solver library is used.
195    \end{methoddesc}
196    
197    \begin{methoddesc}[LinearPDE]{getSolverPackage}{}
198    returns the linear solver package currently by the PDE solver library
199    \end{methoddesc}
200    
201    
202  \begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}:  \begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}:
203  resets the tolerance for solution. The actually meaning of tolerance is  resets the tolerance for solution. The actually meaning of tolerance is
204  depending on the underlying PDE library. In most cases, the tolerance  depending on the underlying PDE library. In most cases, the tolerance
205  will only consider the error from solving the discerete problem but will  will only consider the error from solving the discerete problem but will
206  not consider any discretization error.  not consider any discretization error.
207  \end{methoddesc}  \end{methoddesc}
# Line 198  returns the number of components of the Line 227  returns the number of components of the
227  \end{methoddesc}  \end{methoddesc}
228    
229  \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False}  \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False}
230  returns \True if the PDE is symmetric and \False otherwise.  returns \True if the PDE is symmetric and \False otherwise.
231  The method is very computational expensive and should only be  The method is very computational expensive and should only be
232  called for testing purposes. The symmetry flag is not altered.  called for testing purposes. The symmetry flag is not altered.
233  If \var{verbose}=\True information about where symmetry is violated  If \var{verbose}=\True information about where symmetry is violated
234  are printed.  are printed.
# Line 210  returns the flux $J\hackscore{ij}$ \inde Line 239  returns the flux $J\hackscore{ij}$ \inde
239  defined by \eqn{LINEARPDE.SYSTEM.5} and \eqn{LINEARPDE.SINGLE.5}, respectively.  defined by \eqn{LINEARPDE.SYSTEM.5} and \eqn{LINEARPDE.SINGLE.5}, respectively.
240  \end{methoddesc}  \end{methoddesc}
241    
 \begin{methoddesc}[LinearPDE]{getSolverMethodName}{}  
 \begin{methoddesc}[LinearPDE]{getSolverMethod}{}  
 \begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=None}}  
 \begin{methoddesc}[LinearPDE]{getSolverPackage}{}  
242    
243  \begin{methoddesc}[LinearPDE]{isSymmetric}{}  \begin{methoddesc}[LinearPDE]{isSymmetric}{}
244  returns \True if the PDE has been indicated to be symmetric.  returns \True if the PDE has been indicated to be symmetric.
# Line 229  indicates that the PDE is not symmetric. Line 254  indicates that the PDE is not symmetric.
254  \end{methoddesc}  \end{methoddesc}
255    
256  \begin{methoddesc}[LinearPDE]{setReducedOrderOn}{}  \begin{methoddesc}[LinearPDE]{setReducedOrderOn}{}
257  switches on the reduction of polynomial order for the solution and equation evaluation even if  switches on the reduction of polynomial order for the solution and equation evaluation even if
258  a quadratic or higher interpolation order is defined in the \Domain. This feature may not  a quadratic or higher interpolation order is defined in the \Domain. This feature may not
259  be supported by all PDE libraries.  be supported by all PDE libraries.
260  \end{methoddesc}  \end{methoddesc}
261    
262  \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{}  \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{}
263  switches off the reduction of polynomial order for the solution and  switches off the reduction of polynomial order for the solution and
264  equation evaluation.  equation evaluation.
265  \end{methoddesc}  \end{methoddesc}
266    
# Line 262  returns the \Operator and right hand sid Line 287  returns the \Operator and right hand sid
287  \optional{, truncation=-1}  \optional{, truncation=-1}
288  \optional{, restart=-1}  \optional{, restart=-1}
289  }  }
290  returns (an approximation of) the solution of the PDE. If \code{verbose=True} some information during the solution process pronted. \var{reordering} selects a reordering methods that is applied before or during the solution process.  returns (an approximation of) the solution of the PDE. If \code{verbose=\True} some information during the solution process printed.
291  \var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerence.  \var{reordering} selects a reordering methods that is applied before or during the solution process
292    (=\NOREORDERING ,\MINIMUMFILLIN ,\NESTEDDESCTION).
293    \var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerance.
294  \var{drop_tolerance} specifies a relative tolerance for small elements to be dropped when building a preconditioner  \var{drop_tolerance} specifies a relative tolerance for small elements to be dropped when building a preconditioner
295  (eg. in ILUT \Ref{SAAD}). \var{drop_storage} limits the extra storage allowed when building a preconditioner  (eg. in \ILUT). \var{drop_storage} limits the extra storage allowed when building a preconditioner
296  (eg. in ILUT \Ref{SAAD}). The extra storage is given relative to the size of the siffness matrix, eg.  (eg. in \ILUT). The extra storage is given relative to the size of the stiffness matrix, eg.
297  \var{drop_storage=1.2} will allow the preconditioner to use the $1.2$ fold storage space than used  \var{drop_storage=1.2} will allow the preconditioner to use the $1.2$ fold storage space than used
298  for the stiffness matrix. \var{truncation} defines the truncation  for the stiffness matrix. \var{truncation} defines the truncation.
299  \end{methoddesc}  \end{methoddesc}
300    
 ==================  
301  \begin{memberdesc}[LinearPDE]{DEFAULT}  \begin{memberdesc}[LinearPDE]{DEFAULT}
302  default method, preconditioner or package to be used to solve the PDE. An appropriate method should be  default method, preconditioner or package to be used to solve the PDE. An appropriate method should be
303  chosen by the used PDE solver library.  chosen by the used PDE solver library.
304  \end{memberdesc}  \end{memberdesc}
305    
306  \begin{memberdesc}[LinearPDE]{SCSL}  \begin{memberdesc}[LinearPDE]{SCSL}
307    the SCSL library by SGI,~\Ref{SCSL}\footnote{The SCSL library will only be available on SGI systems}
308  \end{memberdesc}  \end{memberdesc}
309    
310  \begin{memberdesc}[LinearPDE]{MKL}  \begin{memberdesc}[LinearPDE]{MKL}
311    the MKL library by Intel,~\Ref{MKL}\footnote{The MKL library will only be available when the intel compilation environment is used.}.
312  \end{memberdesc}  \end{memberdesc}
313    
314  \begin{memberdesc}[LinearPDE]{UMFPACK}  \begin{memberdesc}[LinearPDE]{UMFPACK}
315    the UMFPACK,~\Ref{UMFPACK}. Remark: UMFPACK is not parallelized.
316  \end{memberdesc}  \end{memberdesc}
317    
318  \begin{memberdesc}[LinearPDE]{PASO}  \begin{memberdesc}[LinearPDE]{PASO}
319    the solver library of \finley, see \Sec{CHAPTER ON FINLEY}.
320  \end{memberdesc}  \end{memberdesc}
321    
322  \begin{memberdesc}[LinearPDE]{ITERATIVE}  \begin{memberdesc}[LinearPDE]{ITERATIVE}
323    the default iterative method and preconditioner. The actually used method depends on the
324    PDE solver library and the solver package been choosen. Typically, \PCG is used for symmetric PDEs
325    and \BiCGStab otherwise, both with \JACOBI preconditioner.
326  \end{memberdesc}  \end{memberdesc}
327    
328  \begin{memberdesc}[LinearPDE]{DIRECT}  \begin{memberdesc}[LinearPDE]{DIRECT}
329  direct linear solver~\Ref{SAAD}  the default direct linear solver.
330  \end{memberdesc}  \end{memberdesc}
331    
332  \begin{memberdesc}[LinearPDE]{CHOLEVSKY}  \begin{memberdesc}[LinearPDE]{CHOLEVSKY}
333  direct solver based on Cholevsky factorization (or similar), see~\Ref{SAAD}. The solver will require a symmetric PDE.  direct solver based on Cholevsky factorization (or similar), see~\Ref{Saad}. The solver will require a symmetric PDE.
334  \end{memberdesc}  \end{memberdesc}
335    
336  \begin{memberdesc}[LinearPDE]{PCG}  \begin{memberdesc}[LinearPDE]{PCG}
337  preconditioned conjugate gradient method, see~\Ref{WEISS}. The solver will require a symmetric PDE.  preconditioned conjugate gradient method, see~\Ref{WEISS}\index{linear solver!PCG}\index{PCG}. The solver will require a symmetric PDE.
338  \end{memberdesc}  \end{memberdesc}
339    
340  \begin{memberdesc}[LinearPDE]{GMRES}  \begin{memberdesc}[LinearPDE]{GMRES}
341  the GMRES method, see~\Ref{WEISS}. Truncation and restart ar econtrolled by the parameters  the GMRES method, see~\Ref{WEISS}\index{linear solver!GMRES}\index{GMRES}. Truncation and restart are controlled by the parameters
342  \var{truncation} and \var{restart} of \method{getSolution}.  \var{truncation} and \var{restart} of \method{getSolution}.
343  \end{memberdesc}  \end{memberdesc}
344    
345  \begin{memberdesc}[LinearPDE]{LUMPING}  \begin{memberdesc}[LinearPDE]{LUMPING}
346  conjugate residual method, see~\Ref{WEISS}.  uses lumping to solve the system of linear equations~\index{linear solver!lumping}\index{lumping}. This solver technique
347    condenses the stiffness matrix to a diagonal matrix so the solution of the linear systems becomes very cheap. It can be used when
348    only \var{D} is present but in any case has to applied with care. The difference in the solutions with and without lumping can be significant
349    but is expect to converge to zero when the mesh gets finer.
350    Lumping does not use the linear system solver library.
351  \end{memberdesc}  \end{memberdesc}
352    
353  \begin{memberdesc}[LinearPDE]{PRES20}  \begin{memberdesc}[LinearPDE]{PRES20}
354  the GMRES method with trunction after five residuals and  the GMRES method with truncation after five residuals and
355  restart after 20 steps, see~\Ref{WEISS}.  restart after 20 steps, see~\Ref{WEISS}.
356    \end{memberdesc}
 \begin{memberdesc}[LinearPDE]{CR}  
357    
358  \begin{memberdesc}[LinearPDE]{CGS}  \begin{memberdesc}[LinearPDE]{CGS}
359  conjugate gradient squared method, see~\Ref{WEISS}.  conjugate gradient squared method, see~\Ref{WEISS}.
360  \end{memberdesc}  \end{memberdesc}
361    
362  \begin{memberdesc}[LinearPDE]{BICGSTAB}  \begin{memberdesc}[LinearPDE]{BICGSTAB}
363  stabilzed bi-conjugate gradients methods, see~\Ref{WEISS}.  stabilized bi-conjugate gradients methods, see~\Ref{WEISS}.
364  \end{memberdesc}  \end{memberdesc}
365    
366  \begin{memberdesc}[LinearPDE]{SSOR}  \begin{memberdesc}[LinearPDE]{SSOR}
367  symmetric successive overrelaxtion method, see~\Ref{WEISS}.  symmetric successive over-relaxation method, see~\Ref{WEISS}. Typically used as preconditioner but some linear solver libraries support
368    this as a solver.
369  \end{memberdesc}  \end{memberdesc}
370  \begin{memberdesc}[LinearPDE]{ILU0}  \begin{memberdesc}[LinearPDE]{ILU0}
371    the incomplete LU factorization preconditioner with no fill-in, see~\Ref{Saad}.
372    \end{memberdesc}
373    
374  \begin{memberdesc}[LinearPDE]{ILUT}  \begin{memberdesc}[LinearPDE]{ILUT}
375  \begin{memberdesc}[LinearPDE]{JACOBI}  the incomplete LU factorization preconditioner with fill-in, see~\Ref{Saad}. During the  LU-factorization element with
376  \begin{memberdesc}[LinearPDE]{AMG}  relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the
377  \begin{memberdesc}[LinearPDE]{RILU}  \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the
378    \method{getSolution} call.
379    \end{memberdesc}
380    
381    \begin{memberdesc}[LinearPDE]{JACOBI}
382    the Jacobi preconditioner, see~\Ref{Saad}.
383    \end{memberdesc}
384    
385    \begin{memberdesc}[LinearPDE]{AMG}
386    the algebraic--multi grid method, see~\Ref{AMG}. This method can be used as linear solver method but is more robust when used
387    in a preconditioner.
388    \end{memberdesc}
389    
390    \begin{memberdesc}[LinearPDE]{RILU}
391    recursive incomplete LU factorization preconditioner, see~\Ref{RILU}. This method is similar to \ILUT but uses smoothing
392    between levels. During the  LU-factorization element with
393    relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the
394    \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the
395    \method{getSolution} call.
396    \end{memberdesc}
397    
398  \begin{memberdesc}[LinearPDE]{NO_REORDERING}  \begin{memberdesc}[LinearPDE]{NO_REORDERING}
399  \begin{memberdesc}[LinearPDE]{MINIMUM_FILL_IN}  no ordering is used during factorization.
400  \begin{memberdesc}[LinearPDE]{NESTED_DISSECTION}  \end{memberdesc}
   
   
   
401    
402  \begin{memberdesc}[LinearPDE]{BICGSTAB}  \begin{memberdesc}[LinearPDE]{MINIMUM_FILL_IN}
403    applies reordering before factorization using a fill-in minimization strategy. You have to check with the particular solver library or
404    linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in.
405    \end{memberdesc}
406    
407    \begin{memberdesc}[LinearPDE]{NESTED_DISSECTION}
408    applies reordering before factorization using a nested dissection strategy. You have to check with the particular solver library or
409    linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in.
410    \end{memberdesc}
411    
412  \section{The \Poisson Class}  \subsection{The \Poisson Class}
413  The \Poisson class provides an easy way to define and solve the Poisson  The \Poisson class provides an easy way to define and solve the Poisson
414  equation  equation
415  \begin{equation}\label{POISSON.1}  \begin{equation}\label{POISSON.1}
# Line 365  and homogeneous constraints Line 424  and homogeneous constraints
424  u=0 \mbox{ where } q>0  u=0 \mbox{ where } q>0
425  \end{equation}  \end{equation}
426  $f$ has to be a \Scalar in the \Function and $q$ must be  $f$ has to be a \Scalar in the \Function and $q$ must be
427  a \Scalar in  the \SolutionFS.  a \Scalar in  the \SolutionFS.
428    
429  \begin{classdesc}{Poisson}{domain}  \begin{classdesc}{Poisson}{domain}
430  opens a Poisson equation on the \Domain domain. \Poisson is derived from \LinearPDE.  opens a Poisson equation on the \Domain domain. \Poisson is derived from \LinearPDE.
# Line 374  opens a Poisson equation on the \Domain Line 433  opens a Poisson equation on the \Domain
433  assigns new values to \var{f} and \var{q}.  assigns new values to \var{f} and \var{q}.
434  \end{methoddesc}  \end{methoddesc}
435    
436  \section{The \Helmholtz Class}  \subsection{The \Helmholtz Class}
437    The \Helmholtz class defines the Helmholtz problem
438    \begin{equation}\label{HZ.1}
439    \omega \; u - (k\; u\hackscore{,j})\hackscore{,j} = f
440    \end{equation}
441     with natural boundary conditons
442    \begin{equation}\label{HZ.2}
443    k\; u\hackscore{,j} n\hackscore{,j} = g- \alpha \; u
444    \end{equation}
445    and constraints:
446    \begin{equation}\label{HZ.3}
447    u=r \mbox{ where } q>0
448    \end{equation}
449    $\omega$, $k$, $f$ have to be a \Scalar in the \Function,
450    $g$ and $\alpha$ must be a \Scalar in  the \FunctionOnBoundary,
451    and $q$ and $r$ must be a \Scalar in  the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace.
452    
453  \section{The \Lame Class}  \begin{classdesc}{Helmholtz}{domain}
454    opens a Helmholtz equation on the \Domain domain. \Helmholtz is derived from \LinearPDE.
455    \end{classdesc}
456    \begin{methoddesc}[Helmholtz]{setValue}{ \optional{omega} \optional{, k} \optional{, f} \optional{, alpha} \optional{, g} \optional{, r} \optional{, q}}
457    assigns new values to \var{omega}, \var{k}, \var{f}, \var{alpha}, \var{g}, \var{r}, \var{q}. By default all values are set to be zero.
458    \end{methoddesc}
459    
460    \subsection{The \Lame Class}
461    The \Lame class defines a Lame equation problem:
462    \begin{equation}\label{LE.1}
463    -\mu (u\hackscore{i,j}+u\hackscore{j,i})+\lambda u\hackscore{k,k})\hackscore{j} = F\hackscore{i}-\sigma\hackscore{ij,j}
464    \end{equation}
465    with natural boundary conditons:
466    \begin{equation}\label{LE.2}
467    n\hackscore{j}(\mu \; (u\hackscore{i,j}+u\hackscore{j,i})+\lambda*u\hackscore{k,k}) = f\hackscore{i}+n\hackscore{j}\sigma\hackscore{ij}
468    \end{equation}
469    and constraint
470    \begin{equation}\label{LE.3}
471    u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0
472    \end{equation}
473    $\mu$, $\lambda$ have to be a \Scalar in the \Function,
474    $F$ has to be a \Vector in the \Function,
475    $\sigma$ has to be a \Tensor in the \Function,
476    $f$ must be a \Vector in  the \FunctionOnBoundary,
477    and $q$ and $r$ must be a \Vector in  the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace.
478    
479    \begin{classdesc}{Lame}{domain}
480    opens a Lame equation on the \Domain domain. \Lame is derived from \LinearPDE.
481    \end{classdesc}
482    \begin{methoddesc}[Lame]{setValue}{ \optional{lame_lambda} \optional{, lame_mu} \optional{, F} \optional{, sigma} \optional{, f} \optional{, r} \optional{, q}}
483    assigns new values to
484    \var{lame_lambda},
485    \var{lame_mu},
486    \var{F},
487    \var{sigma},
488    \var{f},
489    \var{r} and
490    \var{q}
491    By default all values are set to be zero.
492    \end{methoddesc}
493    

Legend:
Removed from v.625  
changed lines
  Added in v.999

  ViewVC Help
Powered by ViewVC 1.1.26