/[escript]/branches/arrayview_from_1695_trunk/doc/user/linearPDE.tex
ViewVC logotype

Contents of /branches/arrayview_from_1695_trunk/doc/user/linearPDE.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1781 - (show annotations)
Thu Sep 11 05:03:14 2008 UTC (10 years, 7 months ago) by jfenwick
File MIME type: application/x-tex
File size: 22475 byte(s)
Branch commit

Merged changes from trunk version 1695 up to and including version 1779.


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

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26