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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 999 - (show annotations)
Tue Feb 27 08:12:37 2007 UTC (13 years, 1 month ago) by gross
File MIME type: application/x-tex
File size: 22188 byte(s)
start to put some pycad documentation into the users guide
1 % $Id$
2 %
3 % Copyright © 2006 by ACcESS MNRF
4 % \url{http://www.access.edu.au
5 % Primary Business: Queensland, Australia.
6 % Licensed under the Open Software License version 3.0
7 % http://www.opensource.org/licenses/osl-3.0.php
8 %
9
10
11 \chapter{The module \linearPDEs}
12
13
14
15 \section{Linear Partial Differential Equations}
16 \label{SEC LinearPDE}
17
18 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.
20 In the following $\Gamma$ denotes the boundary of the domain $\Omega$. $n$ denotes
21 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
24 following form:
25 \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 \; .
27 \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.
29 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.
31 $A$ is a \RankTwo, $B$, $C$ and $X$ are \RankOne and $D$ and $Y$ are scalar.
32 The following natural
33 boundary conditions are considered \index{boundary condition!natural} on $\Gamma$:
34 \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 \;.
36 \end{equation}
37 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
39 solution at certain locations in the domain. They have the form
40 \begin{equation}\label{LINEARPDE.SINGLE.3}
41 u=r \mbox{ where } q>0
42 \end{equation}
43 $r$ and $q$ are each \Scalar where $q$ is the characteristic function
44 \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}
46 or \eqn{LINEARPDE.SINGLE.2}.
47
48 For a system of PDEs and a solution with several components the PDE has the form
49 \begin{equation}\label{LINEARPDE.SYSTEM.1}
50 -(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}
52 $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:
54 \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} \;.
56 \end{equation}
57 The coefficient $d$ is a \RankTwo and $y$ is a
58 \RankOne both in the \FunctionOnBoundary. Constraints \index{constraint} take the form
59 \begin{equation}\label{LINEARPDE.SYSTEM.3}
60 u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0
61 \end{equation}
62 $r$ and $q$ are each \RankOne. Notice that not necessarily all components must
63 have a constraint at all locations.
64
65 \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
67 generalised flux $J$ which is in the case of a systems of PDEs and several components of the solution
68 defined as
69 \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}
71 \end{equation}
72 For the case of single solution component and single PDE $J$ is defined
73 \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}
75 \end{equation}
76 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
78 the contact condition takes the form
79 \begin{equation}\label{LINEARPDE.SYSTEM.6}
80 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} \; .
81 \end{equation}
82 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
84 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
86 \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
88 \begin{equation}\label{LINEARPDE.SINGLE.6}
89 n\hackscore{j} J^{0}\hackscore{j}=n\hackscore{j} J^{1}\hackscore{j}=y^{contact} - d^{contact}[u]
90 \end{equation}
91 In this case the the coefficient $d^{contact}$ and $y^{contact}$ are eaach \Scalar
92 both in the \FunctionOnContactZero or \FunctionOnContactOne.
93
94 The PDE is symmetrical \index{symmetrical} if
95 \begin{equation}\label{LINEARPDE.SINGLE.4}
96 A\hackscore{jl}=A\hackscore{lj} \mbox{ and } B\hackscore{j}=C\hackscore{j}
97 \end{equation}
98 The system of PDEs is symmetrical \index{symmetrical} if
99 \begin{eqnarray}
100 \label{LINEARPDE.SYSTEM.4}
101 A\hackscore{ijkl}=A\hackscore{klij} \\
102 B\hackscore{ijk}=C\hackscore{kij} \\
103 D\hackscore{ik}=D\hackscore{ki} \\
104 d\hackscore{ik}=d\hackscore{ki} \\
105 d^{contact}\hackscore{ik}=d^{contact}\hackscore{ki}
106 \end{eqnarray}
107 Note that different from the scalar case~\eqn{LINEARPDE.SINGLE.4} now the coefficients $D$, $d$ abd $d^{contact}$
108 have to be inspected.
109
110
111 \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.
127
128 \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0}
129 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.
131 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
133 defined.
134 \end{classdesc}
135
136 \begin{methoddesc}[LinearPDE]{setValue}{
137 \optional{A}\optional{, B},
138 \optional{, C}\optional{, D}
139 \optional{, X}\optional{, Y}
140 \optional{, d}\optional{, y}
141 \optional{, d_contact}\optional{, y_contact}
142 \optional{, q}\optional{, r}}
143 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
148 appropriate \FunctionSpace.
149 \end{methoddesc}
150
151 \begin{methoddesc}[LinearPDE]{getCoefficient}{name}
152 return the value assigned to coefficient \var{name}. If \var{name} is not a valid name
153 an exception is raised.
154 \end{methoddesc}
155
156 \begin{methoddesc}[LinearPDE]{getShapeOfCoefficient}{name}
157 returns the shape of coefficient \var{name} even if no value has been assigned to it.
158 \end{methoddesc}
159
160 \begin{methoddesc}[LinearPDE]{getFunctionSpaceForCoefficient}{name}
161 returns the \FunctionSpace of coefficient \var{name} even if no value has been assigned to it.
162 \end{methoddesc}
163
164 \begin{methoddesc}[LinearPDE]{setDebugOn}{}
165 switches the debug mode to on.
166 \end{methoddesc}
167
168 \begin{methoddesc}[LinearPDE]{setDebugOff}{}
169 switches the debug mode to on.
170 \end{methoddesc}
171
172 \begin{methoddesc}[LinearPDE]{isUsingLumping}{}
173 returns \True if \LUMPING is set as the solver for the system of lienar equations.
174 Otherwise \False is returned.
175 \end{methoddesc}
176
177 \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
179 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}
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}}:
203 resets the tolerance for solution. The actually meaning of tolerance is
204 depending on the underlying PDE library. In most cases, the tolerance
205 will only consider the error from solving the discerete problem but will
206 not consider any discretization error.
207 \end{methoddesc}
208
209 \begin{methoddesc}[LinearPDE]{getTolerance}{}
210 returns the current tolerance of the solution
211 \end{methoddesc}
212
213 \begin{methoddesc}[LinearPDE]{getDomain}{}
214 returns the \Domain of the PDE.
215 \end{methoddesc}
216
217 \begin{methoddesc}[LinearPDE]{getDim}{}
218 returns the spatial dimension of the PDE.
219 \end{methoddesc}
220
221 \begin{methoddesc}[LinearPDE]{getNumEquations}{}
222 returns the number of equations.
223 \end{methoddesc}
224
225 \begin{methoddesc}[LinearPDE]{getNumSolutions}{}
226 returns the number of components of the solution.
227 \end{methoddesc}
228
229 \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False}
230 returns \True if the PDE is symmetric and \False otherwise.
231 The method is very computational expensive and should only be
232 called for testing purposes. The symmetry flag is not altered.
233 If \var{verbose}=\True information about where symmetry is violated
234 are printed.
235 \end{methoddesc}
236
237 \begin{methoddesc}[LinearPDE]{getFlux}{u}
238 returns the flux $J\hackscore{ij}$ \index{flux} for given solution \var{u}
239 defined by \eqn{LINEARPDE.SYSTEM.5} and \eqn{LINEARPDE.SINGLE.5}, respectively.
240 \end{methoddesc}
241
242
243 \begin{methoddesc}[LinearPDE]{isSymmetric}{}
244 returns \True if the PDE has been indicated to be symmetric.
245 Otherwise \False is returned.
246 \end{methoddesc}
247
248 \begin{methoddesc}[LinearPDE]{setSymmetryOn}{}
249 indicates that the PDE is symmetric.
250 \end{methoddesc}
251
252 \begin{methoddesc}[LinearPDE]{setSymmetryOff}{}
253 indicates that the PDE is not symmetric.
254 \end{methoddesc}
255
256 \begin{methoddesc}[LinearPDE]{setReducedOrderOn}{}
257 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
259 be supported by all PDE libraries.
260 \end{methoddesc}
261
262 \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{}
263 switches off the reduction of polynomial order for the solution and
264 equation evaluation.
265 \end{methoddesc}
266
267 \begin{methoddesc}[LinearPDE]{getOperator}{}
268 returns the \Operator of the PDE.
269 \end{methoddesc}
270
271 \begin{methoddesc}[LinearPDE]{getRightHandSide}{}
272 returns the right hand side of the PDE as a \Data object. If
273 \var{ignoreConstraint}=\True the constraints are not considered
274 when building up the right hand side.
275 \end{methoddesc}
276
277 \begin{methoddesc}[LinearPDE]{getSystem}{}
278 returns the \Operator and right hand side of the PDE.
279 \end{methoddesc}
280
281 \begin{methoddesc}[LinearPDE]{getSolution}{
282 \optional{verbose=False}
283 \optional{, reordering=LinearPDE.NO_REORDERING}
284 \optional{, iter_max=1000}
285 \optional{, drop_tolerance=0.01}
286 \optional{, drop_storage=1.20}
287 \optional{, truncation=-1}
288 \optional{, restart=-1}
289 }
290 returns (an approximation of) the solution of the PDE. If \code{verbose=\True} some information during the solution process printed.
291 \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
295 (eg. in \ILUT). \var{drop_storage} limits the extra storage allowed when building a preconditioner
296 (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
298 for the stiffness matrix. \var{truncation} defines the truncation.
299 \end{methoddesc}
300
301 \begin{memberdesc}[LinearPDE]{DEFAULT}
302 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.
304 \end{memberdesc}
305
306 \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}
309
310 \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}
313
314 \begin{memberdesc}[LinearPDE]{UMFPACK}
315 the UMFPACK,~\Ref{UMFPACK}. Remark: UMFPACK is not parallelized.
316 \end{memberdesc}
317
318 \begin{memberdesc}[LinearPDE]{PASO}
319 the solver library of \finley, see \Sec{CHAPTER ON FINLEY}.
320 \end{memberdesc}
321
322 \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}
327
328 \begin{memberdesc}[LinearPDE]{DIRECT}
329 the default direct linear solver.
330 \end{memberdesc}
331
332 \begin{memberdesc}[LinearPDE]{CHOLEVSKY}
333 direct solver based on Cholevsky factorization (or similar), see~\Ref{Saad}. The solver will require a symmetric PDE.
334 \end{memberdesc}
335
336 \begin{memberdesc}[LinearPDE]{PCG}
337 preconditioned conjugate gradient method, see~\Ref{WEISS}\index{linear solver!PCG}\index{PCG}. The solver will require a symmetric PDE.
338 \end{memberdesc}
339
340 \begin{memberdesc}[LinearPDE]{GMRES}
341 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}.
343 \end{memberdesc}
344
345 \begin{memberdesc}[LinearPDE]{LUMPING}
346 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}
352
353 \begin{memberdesc}[LinearPDE]{PRES20}
354 the GMRES method with truncation after five residuals and
355 restart after 20 steps, see~\Ref{WEISS}.
356 \end{memberdesc}
357
358 \begin{memberdesc}[LinearPDE]{CGS}
359 conjugate gradient squared method, see~\Ref{WEISS}.
360 \end{memberdesc}
361
362 \begin{memberdesc}[LinearPDE]{BICGSTAB}
363 stabilized bi-conjugate gradients methods, see~\Ref{WEISS}.
364 \end{memberdesc}
365
366 \begin{memberdesc}[LinearPDE]{SSOR}
367 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}
370 \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}
375 the incomplete LU factorization preconditioner with fill-in, see~\Ref{Saad}. During the LU-factorization element with
376 relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the
377 \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}
399 no ordering is used during factorization.
400 \end{memberdesc}
401
402 \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 \subsection{The \Poisson Class}
413 The \Poisson class provides an easy way to define and solve the Poisson
414 equation
415 \begin{equation}\label{POISSON.1}
416 -u\hackscore{,ii}=f\; .
417 \end{equation}
418 with homogeneous boundary conditions
419 \begin{equation}\label{POISSON.2}
420 n\hackscore{i}u\hackscore{,i}=0
421 \end{equation}
422 and homogeneous constraints
423 \begin{equation}\label{POISSON.3}
424 u=0 \mbox{ where } q>0
425 \end{equation}
426 $f$ has to be a \Scalar in the \Function and $q$ must be
427 a \Scalar in the \SolutionFS.
428
429 \begin{classdesc}{Poisson}{domain}
430 opens a Poisson equation on the \Domain domain. \Poisson is derived from \LinearPDE.
431 \end{classdesc}
432 \begin{methoddesc}[Poisson]{setValue}{f=escript.Data(),q=escript.Data()}
433 assigns new values to \var{f} and \var{q}.
434 \end{methoddesc}
435
436 \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 \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

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26