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

revision 659 by gross, Fri Mar 24 07:34:34 2006 UTC revision 660 by gross, Fri Mar 24 08:43:21 2006 UTC
# Line 11  Line 11
11  \chapter{The module \linearPDEs}  \chapter{The module \linearPDEs}
12
13  \declaremodule{extension}{linearPDEs} \modulesynopsis{Linear partial pifferential equation handler}  \declaremodule{extension}{linearPDEs} \modulesynopsis{Linear partial pifferential equation handler}
14  The module \linearPDEs provides an interface to define and solve linear partial  The module \linearPDEs provides an interface to define and solve linear partial
15  differential equations within \escript. \linearPDEs does not provide any  differential equations within \escript. \linearPDEs does not provide any
16  solver capabilities in itself but hands the PDE over to  solver capabilities in itself but hands the PDE over to
17  the PDE solver library defined through the \Domain of the PDE.  the PDE solver library defined through the \Domain of the PDE.
18  The general interface is provided through the \LinearPDE class. The  The general interface is provided through the \LinearPDE class. The
19  \AdvectivePDE which is derived from the \LinearPDE class  \AdvectivePDE which is derived from the \LinearPDE class
20  provides an interface to PDE dominated by its advective terms. The \Poisson  provides an interface to PDE dominated by its advective terms. The \Poisson
21  class which is also derived form the \LinearPDE class should be used  class which is also derived form the \LinearPDE class should be used
22  to define the Poisson equation \index{Poisson}.    to define the Poisson equation \index{Poisson}.
23
24  \section{\LinearPDE Class}  \section{\LinearPDE Class}
25  \label{SEC LinearPDE}  \label{SEC LinearPDE}
# Line 27  to define the Poisson equation \index{Po Line 27  to define the Poisson equation \index{Po
27  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
28  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.
29  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
30  the outer normal field on $\Gamma$.  the outer normal field on $\Gamma$.
31
32  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
33  following form:  following form:
34  \label{LINEARPDE.SINGLE.1}  \label{LINEARPDE.SINGLE.1}
35  -(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 \; .
36
37  $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.
38  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
39  \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.
40  $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.
41  The following natural  The following natural
42  boundary conditions are considered \index{boundary condition!natural} on $\Gamma$:  boundary conditions are considered \index{boundary condition!natural} on $\Gamma$:
43  \label{LINEARPDE.SINGLE.2}  \label{LINEARPDE.SINGLE.2}
44  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  \;.
45
46  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
47  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
48  solution at certain locations in the domain. They have the form  solution at certain locations in the domain. They have the form
49  \label{LINEARPDE.SINGLE.3}  \label{LINEARPDE.SINGLE.3}
50  u=r \mbox{ where } q>0  u=r \mbox{ where } q>0
# Line 52  u=r \mbox{ where } q>0 Line 52  u=r \mbox{ where } q>0
52  $r$ and $q$ are each \Scalar where $q$ is the characteristic function  $r$ and $q$ are each \Scalar where $q$ is the characteristic function
53  \index{characteristic function} defining where the constraint is applied.  \index{characteristic function} defining where the constraint is applied.
54  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}
55  or \eqn{LINEARPDE.SINGLE.2}.  or \eqn{LINEARPDE.SINGLE.2}.
56
57  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
58  \label{LINEARPDE.SYSTEM.1}  \label{LINEARPDE.SYSTEM.1}
59  -(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} \; .
60
61  $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.
62  The natural boundary conditions \index{boundary condition!natural} take the form:  The natural boundary conditions \index{boundary condition!natural} take the form:
63  \label{LINEARPDE.SYSTEM.2}  \label{LINEARPDE.SYSTEM.2}
64  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}  \;.
65
66  The coefficient $d$ is a \RankTwo and $y$ is a    The coefficient $d$ is a \RankTwo and $y$ is a
67  \RankOne both in the \FunctionOnBoundary. Constraints \index{constraint} take the form  \RankOne both in the \FunctionOnBoundary. Constraints \index{constraint} take the form
68  \label{LINEARPDE.SYSTEM.3}  \label{LINEARPDE.SYSTEM.3}
69  u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0  u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0
70
71  $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
72  have a constraint at all locations.  have a constraint at all locations.
73
74  \LinearPDE also supports solution discontinuities \index{discontinuity} over contact region $\Gamma^{contact}$  \LinearPDE also supports solution discontinuities \index{discontinuity} over contact region $\Gamma^{contact}$
75  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
76  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
77  defined as  defined as
78  \label{LINEARPDE.SYSTEM.5}  \label{LINEARPDE.SYSTEM.5}
79  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}
80
# Line 82  For the case of single solution componen Line 82  For the case of single solution componen
82  \label{LINEARPDE.SINGLE.5}  \label{LINEARPDE.SINGLE.5}
83  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}
84
85  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
86  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
87  the contact condition takes the form  the contact condition takes the form
88  \label{LINEARPDE.SYSTEM.6}  \label{LINEARPDE.SYSTEM.6}
# Line 91  n\hackscore{j} J^{0}\hackscore{ij}=n\hac Line 91  n\hackscore{j} J^{0}\hackscore{ij}=n\hac
91  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
92  discontinuity $\Gamma^{contact}$, respectively. $[u]$, which is the difference  discontinuity $\Gamma^{contact}$, respectively. $[u]$, which is the difference
93  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}$.
94  The coefficient $d^{contact}$ is a \RankTwo and $y^{contact}$ is a    The coefficient $d^{contact}$ is a \RankTwo and $y^{contact}$ is a
95  \RankOne both in the \FunctionOnContactZero or \FunctionOnContactOne.  \RankOne both in the \FunctionOnContactZero or \FunctionOnContactOne.
96  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
97  \label{LINEARPDE.SINGLE.6}  \label{LINEARPDE.SINGLE.6}
# Line 111  A\hackscore{ijkl}=A\hackscore{klij} \\ Line 111  A\hackscore{ijkl}=A\hackscore{klij} \\
111  B\hackscore{ijk}=C\hackscore{kij} \\  B\hackscore{ijk}=C\hackscore{kij} \\
112  D\hackscore{ik}=D\hackscore{ki} \\  D\hackscore{ik}=D\hackscore{ki} \\
113  d\hackscore{ik}=d\hackscore{ki} \\  d\hackscore{ik}=d\hackscore{ki} \\
114  d^{contact}\hackscore{ik}=d^{contact}\hackscore{ki}  d^{contact}\hackscore{ik}=d^{contact}\hackscore{ki}
115  \end{eqnarray}  \end{eqnarray}
116  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}$
117  have to be inspected.  have to be inspected.
118
119  \section{\LinearPDE class}  \section{\LinearPDE class}
120  This is the general class to define a linear PDE in \escript. We list a selction of the most  This is the general class to define a linear PDE in \escript. We list a selction of the most
121  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.
122
123  \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0}  \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0}
124  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}
125  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.
126  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
127  and the number solutions, respctively, stay undefined until a coefficient is  and the number solutions, respctively, stay undefined until a coefficient is
128  defined.  defined.
129  \end{classdesc}  \end{classdesc}
130
131  \begin{methoddesc}[LinearPDE]{setValue}{  \begin{methoddesc}[LinearPDE]{setValue}{
132  \optional{A=Data()}\optional{, B=Data()},  \optional{A}\optional{, B},
133  \optional{, C=Data()}\optional{, D=Data()}  \optional{, C}\optional{, D}
134  \optional{, X=Data()}\optional{, Y=Data()}  \optional{, X}\optional{, Y}
135  \optional{, d=Data()}\optional{, y=Data()}  \optional{, d}\optional{, y}
136  \optional{, d_contact=Data()}\optional{, y_contact=Data()}  \optional{, d_contact}\optional{, y_contact}
137  \optional{, q=Data()}\optional{, r=Data()}}  \optional{, q}\optional{, r}}
138  assigns new values to coefficients.  assigns new values to coefficients. By dafault all values are assumed to be zero\footnote{
139    In fact it is assumed they are not present by assigning the value \code{escript.Data()}. The
140    can by used by the solver library to reduce computational costs.
141    }
142  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
143  appropriate \FunctionSpace.  appropriate \FunctionSpace.
144  \end{methoddesc}  \end{methoddesc}
145
146  \begin{methoddesc}[LinearPDE]{getCoefficient}{name}  \begin{methoddesc}[LinearPDE]{getCoefficient}{name}
147  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
148  an exception is raised.  an exception is raised.
149  \end{methoddesc}  \end{methoddesc}
150
151  \begin{methoddesc}[LinearPDE]{getShapeOfCoefficient}{name}  \begin{methoddesc}[LinearPDE]{getShapeOfCoefficient}{name}
# Line 168  Otherwise \False is returned. Line 171  Otherwise \False is returned.
171
172  \begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\optional{, preconditioner=LinearPDE.DEFAULT}}  \begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\optional{, preconditioner=LinearPDE.DEFAULT}}
173  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
174  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.
175  \end{methoddesc}  \end{methoddesc}
176
177  \begin{methoddesc}[LinearPDE]{getSolverMethodName}{}  \begin{methoddesc}[LinearPDE]{getSolverMethodName}{}
# Line 180  returns the solver method and preconditi Line 183  returns the solver method and preconditi
183  \end{methoddesc}  \end{methoddesc}
184
185  \begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=LinearPDE.DEFAULT}}  \begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=LinearPDE.DEFAULT}}
186  Set the solver package to be used by PDE library to solve the linear systems of equations. The  Set the solver package to be used by PDE library to solve the linear systems of equations. The
187  specified package may not be supported by the PDE solver library. In this case, dependng on  specified package may not be supported by the PDE solver library. In this case, dependng on
188  the PDE solver, the default solver is used or an exeption is thrown.  the PDE solver, the default solver is used or an exeption is thrown.
189  If \var{package} is not specified, the default package of the PDE solver library is used.  If \var{package} is not specified, the default package of the PDE solver library is used.
190  \end{methoddesc}  \end{methoddesc}
191
192  \begin{methoddesc}[LinearPDE]{getSolverPackage}{}  \begin{methoddesc}[LinearPDE]{getSolverPackage}{}
# Line 193  returns the linear solver package curren Line 196  returns the linear solver package curren
196
197  \begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}:  \begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}:
198  resets the tolerance for solution. The actually meaning of tolerance is  resets the tolerance for solution. The actually meaning of tolerance is
199  depending on the underlying PDE library. In most cases, the tolerance  depending on the underlying PDE library. In most cases, the tolerance
200  will only consider the error from solving the discerete problem but will  will only consider the error from solving the discerete problem but will
201  not consider any discretization error.  not consider any discretization error.
202  \end{methoddesc}  \end{methoddesc}
# Line 219  returns the number of components of the Line 222  returns the number of components of the
222  \end{methoddesc}  \end{methoddesc}
223
224  \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False}  \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False}
225  returns \True if the PDE is symmetric and \False otherwise.  returns \True if the PDE is symmetric and \False otherwise.
226  The method is very computational expensive and should only be  The method is very computational expensive and should only be
227  called for testing purposes. The symmetry flag is not altered.  called for testing purposes. The symmetry flag is not altered.
228  If \var{verbose}=\True information about where symmetry is violated  If \var{verbose}=\True information about where symmetry is violated
229  are printed.  are printed.
# Line 246  indicates that the PDE is not symmetric. Line 249  indicates that the PDE is not symmetric.
249  \end{methoddesc}  \end{methoddesc}
250
251  \begin{methoddesc}[LinearPDE]{setReducedOrderOn}{}  \begin{methoddesc}[LinearPDE]{setReducedOrderOn}{}
252  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
253  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
254  be supported by all PDE libraries.  be supported by all PDE libraries.
255  \end{methoddesc}  \end{methoddesc}
256
257  \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{}  \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{}
258  switches off the reduction of polynomial order for the solution and  switches off the reduction of polynomial order for the solution and
259  equation evaluation.  equation evaluation.
260  \end{methoddesc}  \end{methoddesc}
261
# Line 280  returns the \Operator and right hand sid Line 283  returns the \Operator and right hand sid
283  \optional{, restart=-1}  \optional{, restart=-1}
284  }  }
285  returns (an approximation of) the solution of the PDE. If \code{verbose=\True} some information during the solution process printed.  returns (an approximation of) the solution of the PDE. If \code{verbose=\True} some information during the solution process printed.
286  \var{reordering} selects a reordering methods that is applied before or during the solution process  \var{reordering} selects a reordering methods that is applied before or during the solution process
287  (=\NOREORDERING ,\MINIMUMFILLIN ,\NESTEDDESCTION).  (=\NOREORDERING ,\MINIMUMFILLIN ,\NESTEDDESCTION).
288  \var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerance.  \var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerance.
289  \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
290  (eg. in \ILUT). \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
291  (eg. in \ILUT). The extra storage is given relative to the size of the stiffness matrix, eg.  (eg. in \ILUT). The extra storage is given relative to the size of the stiffness matrix, eg.
292  \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
293  for the stiffness matrix. \var{truncation} defines the truncation.  for the stiffness matrix. \var{truncation} defines the truncation.
294  \end{methoddesc}  \end{methoddesc}
295
296  \begin{memberdesc}[LinearPDE]{DEFAULT}  \begin{memberdesc}[LinearPDE]{DEFAULT}
297  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
298  chosen by the used PDE solver library.  chosen by the used PDE solver library.
299  \end{memberdesc}  \end{memberdesc}
300
301  \begin{memberdesc}[LinearPDE]{SCSL}  \begin{memberdesc}[LinearPDE]{SCSL}
302  the SCSL library by SGI,~\Ref{SCSL}\footnote{The SCSL library will only be available on SGI systems}  the SCSL library by SGI,~\Ref{SCSL}\footnote{The SCSL library will only be available on SGI systems}
303  \end{memberdesc}  \end{memberdesc}
304
305  \begin{memberdesc}[LinearPDE]{MKL}  \begin{memberdesc}[LinearPDE]{MKL}
# Line 313  the solver library of \finley, see \Sec{ Line 316  the solver library of \finley, see \Sec{
316
317  \begin{memberdesc}[LinearPDE]{ITERATIVE}  \begin{memberdesc}[LinearPDE]{ITERATIVE}
318  the default iterative method and preconditioner. The actually used method depends on the  the default iterative method and preconditioner. The actually used method depends on the
319  PDE solver library and the solver package been choosen. Typically, \PCG is used for symmetric PDEs  PDE solver library and the solver package been choosen. Typically, \PCG is used for symmetric PDEs
320  and \BiCGStab otherwise, both with \JACOBI preconditioner.  and \BiCGStab otherwise, both with \JACOBI preconditioner.
321  \end{memberdesc}  \end{memberdesc}
322
323  \begin{memberdesc}[LinearPDE]{DIRECT}  \begin{memberdesc}[LinearPDE]{DIRECT}
324  the default direct linear solver.  the default direct linear solver.
325  \end{memberdesc}  \end{memberdesc}
326
327  \begin{memberdesc}[LinearPDE]{CHOLEVSKY}  \begin{memberdesc}[LinearPDE]{CHOLEVSKY}
328  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.
329  \end{memberdesc}  \end{memberdesc}
330
331  \begin{memberdesc}[LinearPDE]{PCG}  \begin{memberdesc}[LinearPDE]{PCG}
# Line 335  the GMRES method, see~\Ref{WEISS}\index{ Line 338  the GMRES method, see~\Ref{WEISS}\index{
338  \end{memberdesc}  \end{memberdesc}
339
340  \begin{memberdesc}[LinearPDE]{LUMPING}  \begin{memberdesc}[LinearPDE]{LUMPING}
341  uses lumping to solve the system of linear equations~\index{linear solver!lumping}\index{lumping}. This solver technique  uses lumping to solve the system of linear equations~\index{linear solver!lumping}\index{lumping}. This solver technique
342  condenses the stiffness matrix to a diagonal matrix so the solution of the linear systems becomes very cheap. It can be used when  condenses the stiffness matrix to a diagonal matrix so the solution of the linear systems becomes very cheap. It can be used when
343  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  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
344  but is expect to converge to zero when the mesh gets finer.    but is expect to converge to zero when the mesh gets finer.
345  Lumping does not use the linear system solver library.    Lumping does not use the linear system solver library.
346  \end{memberdesc}  \end{memberdesc}
347
348  \begin{memberdesc}[LinearPDE]{PRES20}  \begin{memberdesc}[LinearPDE]{PRES20}
# Line 352  conjugate gradient squared method, see~\ Line 355  conjugate gradient squared method, see~\
355  \end{memberdesc}  \end{memberdesc}
356
357  \begin{memberdesc}[LinearPDE]{BICGSTAB}  \begin{memberdesc}[LinearPDE]{BICGSTAB}
359  \end{memberdesc}  \end{memberdesc}
360
361  \begin{memberdesc}[LinearPDE]{SSOR}  \begin{memberdesc}[LinearPDE]{SSOR}
362  symmetric successive over-relaxation method, see~\Ref{WEISS}. Typically used as preconditioner but some linear solver libraries support  symmetric successive over-relaxation method, see~\Ref{WEISS}. Typically used as preconditioner but some linear solver libraries support
363  this as a solver.    this as a solver.
364  \end{memberdesc}  \end{memberdesc}
365  \begin{memberdesc}[LinearPDE]{ILU0}  \begin{memberdesc}[LinearPDE]{ILU0}
366  the incomplete LU factorization preconditioner with no fill-in, see~\Ref{Saad}.  the incomplete LU factorization preconditioner with no fill-in, see~\Ref{Saad}.
367  \end{memberdesc}  \end{memberdesc}
368
369  \begin{memberdesc}[LinearPDE]{ILUT}  \begin{memberdesc}[LinearPDE]{ILUT}
370  the incomplete LU factorization preconditioner with fill-in, see~\Ref{Saad}. During the  LU-factorization element with  the incomplete LU factorization preconditioner with fill-in, see~\Ref{Saad}. During the  LU-factorization element with
371  relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the  relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the
372  \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the  \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the
373  \method{getSolution} call.  \method{getSolution} call.
374  \end{memberdesc}  \end{memberdesc}
375
376  \begin{memberdesc}[LinearPDE]{JACOBI}  \begin{memberdesc}[LinearPDE]{JACOBI}
# Line 375  the Jacobi preconditioner, see~\Ref{Saad Line 378  the Jacobi preconditioner, see~\Ref{Saad
378  \end{memberdesc}  \end{memberdesc}
379
380  \begin{memberdesc}[LinearPDE]{AMG}  \begin{memberdesc}[LinearPDE]{AMG}
381  the algebraic--multi grid method, see~\Ref{AMG}. This method can be used as linear solver method but is more robust when used  the algebraic--multi grid method, see~\Ref{AMG}. This method can be used as linear solver method but is more robust when used
382  in a preconditioner.  in a preconditioner.
383  \end{memberdesc}  \end{memberdesc}
384
# Line 383  in a preconditioner. Line 386  in a preconditioner.
386  recursive incomplete LU factorization preconditioner, see~\Ref{RILU}. This method is similar to \ILUT but uses smoothing  recursive incomplete LU factorization preconditioner, see~\Ref{RILU}. This method is similar to \ILUT but uses smoothing
387  between levels. During the  LU-factorization element with  between levels. During the  LU-factorization element with
388  relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the  relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the
389  \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the  \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the
390  \method{getSolution} call.  \method{getSolution} call.
391  \end{memberdesc}  \end{memberdesc}
392
393  \begin{memberdesc}[LinearPDE]{NO_REORDERING}  \begin{memberdesc}[LinearPDE]{NO_REORDERING}
# Line 416  and homogeneous constraints Line 419  and homogeneous constraints
419  u=0 \mbox{ where } q>0  u=0 \mbox{ where } q>0
420
421  $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
422  a \Scalar in  the \SolutionFS.  a \Scalar in  the \SolutionFS.
423
424  \begin{classdesc}{Poisson}{domain}  \begin{classdesc}{Poisson}{domain}
425  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 426  assigns new values to \var{f} and \var{q Line 429  assigns new values to \var{f} and \var{q
429  \end{methoddesc}  \end{methoddesc}
430
431  \section{The \Helmholtz Class}  \section{The \Helmholtz Class}
432    The \Helmholtz class defines the Helmholtz problem
433    \label{HZ.1}
434    \omega \; u - (k\; u\hackscore{,j})\hackscore{,j} = f
435
436     with natural boundary conditons
437    \label{HZ.2}
438    k\; u\hackscore{,j} n\hackscore{,j} = g- \alpha \; u
439
440    and constraints:
441    \label{HZ.3}
442    u=r \mbox{ where } q>0
443
444    $\omega$, $k$, $f$ have to be a \Scalar in the \Function,
445    $g$ and $\alpha$ must be a \Scalar in  the \FunctionOnBoundary,
446    and $q$ and $r$ must be a \Scalar in  the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace.
447
448    \begin{classdesc}{Helmholtz}{domain}
449    opens a Helmholtz equation on the \Domain domain. \Helmholtz is derived from \LinearPDE.
450    \end{classdesc}
451    \begin{methoddesc}[Helmholtz]{setValue}{ \optional{omega} \optional{, k} \optional{, f} \optional{, alpha} \optional{, g} \optional{, r} \optional{, q}}
452    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.
453    \end{methoddesc}
454
455  \section{The \Lame Class}  \section{The \Lame Class}
456    The \Lame class defines a Lame equation problem:
457    \label{LE.1}
458    -\mu (u\hackscore{i,j}+u\hackscore{j,i})+\lambda u\hackscore{k,k})\hackscore{j} = F\hackscore{i}-\sigma\hackscore{ij,j}
459
460    with natural boundary conditons:
461    \label{LE.2}
462    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}
463
464    and constraint
465    \label{LE.3}
466    u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0
467
468    $\mu$, $\lambda$ have to be a \Scalar in the \Function,
469    $F$ has to be a \Vector in the \Function,
470    $\sigma$ has to be a \Tensor in the \Function,
471    $f$ must be a \Vector in  the \FunctionOnBoundary,
472    and $q$ and $r$ must be a \Vector in  the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace.
473
474    \begin{classdesc}{Lame}{domain}
475    opens a Lame equation on the \Domain domain. \Lame is derived from \LinearPDE.
476    \end{classdesc}
477    \begin{methoddesc}[Lame]{setValue}{ \optional{lame_lambda} \optional{, lame_mu} \optional{, F} \optional{, sigma} \optional{, f} \optional{, r} \optional{, q}}
478    assigns new values to
479    \var{lame_lambda},
480    \var{lame_mu},
481    \var{F},
482    \var{sigma},
483    \var{f},
484    \var{r} and
485    \var{q}
486    By default all values are set to be zero.
487    \end{methoddesc}
488

Legend:
 Removed from v.659 changed lines Added in v.660