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

Revision 1959 - (show annotations)
Tue Nov 4 01:49:19 2008 UTC (11 years, 10 months ago) by jfenwick
File MIME type: application/x-tex
File size: 22523 byte(s)
More fixes to doco.

 1 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3 % 4 % Copyright (c) 2003-2008 by University of Queensland 5 % Earth Systems Science Computational Center (ESSCC) 6 7 % 8 % Primary Business: Queensland, Australia 9 % Licensed under the Open Software License version 3.0 10 11 % 12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 13 14 15 \chapter{The Module \linearPDEs} 16 17 18 19 \section{Linear Partial Differential Equations} 20 \label{SEC LinearPDE} 21 22 The \LinearPDE class is used to define a general linear, steady, second order PDE 23 for an unknown function $u$ on a given $\Omega$ defined through a \Domain object. 24 In the following $\Gamma$ denotes the boundary of the domain $\Omega$. $n$ denotes 25 the outer normal field on $\Gamma$. 26 27 For a single PDE with a solution with a single component the linear PDE is defined in the 28 following form: 29 \begin{equation}\label{LINEARPDE.SINGLE.1} 30 -(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 \; . 31 \end{equation} 32 $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. 33 The coefficients $A$, $B$, $C$, $D$, $X$ and $Y$ have to be specified through \Data objects in the 34 \Function on the PDE or objects that can be converted into such \Data objects. 35 $A$ is a \RankTwo, $B$, $C$ and $X$ are \RankOne and $D$ and $Y$ are scalar. 36 The following natural 37 boundary conditions are considered \index{boundary condition!natural} on $\Gamma$: 38 \begin{equation}\label{LINEARPDE.SINGLE.2} 39 n\hackscore{j}(A\hackscore{jl} u\hackscore{,l}+B\hackscore{j} u)+d u=n\hackscore{j}X\hackscore{j} + y \;. 40 \end{equation} 41 Notice that the coefficients $A$, $B$ and $X$ are defined in the PDE. The coefficients $d$ and $y$ are 42 each a \Scalar in the \FunctionOnBoundary. Constraints \index{constraint} for the solution prescribing the value of the 43 solution at certain locations in the domain. They have the form 44 \begin{equation}\label{LINEARPDE.SINGLE.3} 45 u=r \mbox{ where } q>0 46 \end{equation} 47 $r$ and $q$ are each \Scalar where $q$ is the characteristic function 48 \index{characteristic function} defining where the constraint is applied. 49 The constraints defined by \eqn{LINEARPDE.SINGLE.3} override any other condition set by \eqn{LINEARPDE.SINGLE.1} 50 or \eqn{LINEARPDE.SINGLE.2}. 51 52 For a system of PDEs and a solution with several components the PDE has the form 53 \begin{equation}\label{LINEARPDE.SYSTEM.1} 54 -(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} \; . 55 \end{equation} 56 $A$ is a \RankFour, $B$ and $C$ are each a \RankThree, $D$ and $X$ are each a \RankTwo and $Y$ is a \RankOne. 57 The natural boundary conditions \index{boundary condition!natural} take the form: 58 \begin{equation}\label{LINEARPDE.SYSTEM.2} 59 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} \;. 60 \end{equation} 61 The coefficient $d$ is a \RankTwo and $y$ is a 62 \RankOne both in the \FunctionOnBoundary. Constraints \index{constraint} take the form 63 \begin{equation}\label{LINEARPDE.SYSTEM.3} 64 u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0 65 \end{equation} 66 $r$ and $q$ are each \RankOne. Notice that not necessarily all components must 67 have a constraint at all locations. 68 69 \LinearPDE also supports solution discontinuities \index{discontinuity} over contact region $\Gamma^{contact}$ 70 in the domain $\Omega$. To specify the conditions across the discontinuity we are using the 71 generalised flux $J$ which is in the case of a systems of PDEs and several components of the solution 72 defined as 73 \begin{equation}\label{LINEARPDE.SYSTEM.5} 74 J\hackscore{ij}=A\hackscore{ijkl}u\hackscore{k,l}+B\hackscore{ijk}u\hackscore{k}-X\hackscore{ij} 75 \end{equation} 76 For the case of single solution component and single PDE $J$ is defined 77 \begin{equation}\label{LINEARPDE.SINGLE.5} 78 J\hackscore{j}=A\hackscore{jl}u\hackscore{,l}+B\hackscore{j}u\hackscore{k}-X\hackscore{j} 79 \end{equation} 80 In the context of discontinuities \index{discontinuity} $n$ denotes the normal on the 81 discontinuity pointing from side 0 towards side 1. For a system of PDEs 82 the contact condition takes the form 83 \begin{equation}\label{LINEARPDE.SYSTEM.6} 84 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} \; . 85 \end{equation} 86 where $J^{0}$ and $J^{1}$ are the fluxes on side $0$ and side $1$ of the 87 discontinuity $\Gamma^{contact}$, respectively. $[u]$, which is the difference 88 of the solution at side 1 and at side 0, denotes the jump of $u$ across $\Gamma^{contact}$. 89 The coefficient $d^{contact}$ is a \RankTwo and $y^{contact}$ is a 90 \RankOne both in the \FunctionOnContactZero or \FunctionOnContactOne. 91 In case of a single PDE and a single component solution the contact condition takes the form 92 \begin{equation}\label{LINEARPDE.SINGLE.6} 93 n\hackscore{j} J^{0}\hackscore{j}=n\hackscore{j} J^{1}\hackscore{j}=y^{contact} - d^{contact}[u] 94 \end{equation} 95 In this case the the coefficient $d^{contact}$ and $y^{contact}$ are each \Scalar 96 both in the \FunctionOnContactZero or \FunctionOnContactOne. 97 98 The PDE is symmetrical \index{symmetrical} if 99 \begin{equation}\label{LINEARPDE.SINGLE.4} 100 A\hackscore{jl}=A\hackscore{lj} \mbox{ and } B\hackscore{j}=C\hackscore{j} 101 \end{equation} 102 The system of PDEs is symmetrical \index{symmetrical} if 103 \begin{eqnarray} 104 \label{LINEARPDE.SYSTEM.4} 105 A\hackscore{ijkl}&=&A\hackscore{klij} \\ 106 B\hackscore{ijk}&=&C\hackscore{kij} \\ 107 D\hackscore{ik}&=&D\hackscore{ki} \\ 108 d\hackscore{ik}&=&d\hackscore{ki} \\ 109 d^{contact}\hackscore{ik}&=&d^{contact}\hackscore{ki} 110 \end{eqnarray} 111 Note that in contrast with the scalar case~\eqn{LINEARPDE.SINGLE.4} now the coefficients $D$, $d$ abd $d^{contact}$ 112 have to be inspected. 113 114 115 \subsection{Classes} 116 \declaremodule{extension}{esys.escript.linearPDEs} 117 \modulesynopsis{Linear partial differential equation handler} 118 The module \linearPDEs provides an interface to define and solve linear partial 119 differential equations within \escript. The module \linearPDEs does not provide any 120 solver capabilities in itself but hands the PDE over to 121 the PDE solver library defined through the \Domain of the PDE. 122 The general interface is provided through the \LinearPDE class. The 123 \AdvectivePDE which is derived from the \LinearPDE class 124 provides an interface to a PDE dominated by its advective terms. The \Poisson 125 class which is also derived form the \LinearPDE class should be used 126 to define the Poisson equation \index{Poisson}. 127 128 \subsection{\LinearPDE class} 129 This is the general class to define a linear PDE in \escript. We list a selection of the most 130 important methods of the class. For a complete list, see the reference at \ReferenceGuide. 131 132 \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0} 133 opens a linear, steady, second order PDE on the \Domain \var{domain}. \var{numEquations} 134 and \var{numSolutions} gives the number of equations and the number of solution components. 135 If \var{numEquations} and \var{numSolutions} is non-positive, the number of equations 136 and the number solutions, respectively, stay undefined until a coefficient is 137 defined. 138 \end{classdesc} 139 140 \subsubsection{\LinearPDE methods} 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 on debug mode. 172 \end{methoddesc} 173 174 \begin{methoddesc}[LinearPDE]{setDebugOff}{} 175 switches off debug mode. 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 should be noted 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 in use. 190 \end{methoddesc} 191 192 \begin{methoddesc}[LinearPDE]{getSolverMethod}{} 193 returns the solver method and preconditioner which is in use. 194 \end{methoddesc} 195 196 \begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=LinearPDE.DEFAULT}} 197 sets 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 depends 210 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 computationally 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, then 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}, then some information is printed during the solution process. 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 \subsubsection{\LinearPDE symbols/members} 312 313 \begin{memberdesc}[LinearPDE]{DEFAULT} 314 default method, preconditioner or package to be used to solve the PDE. An appropriate method should be 315 chosen by the used PDE solver library. 316 \end{memberdesc} 317 318 \begin{memberdesc}[LinearPDE]{SCSL} 319 the SCSL library by SGI,~\Ref{SCSL}\footnote{The SCSL library will only be available on SGI systems} 320 \end{memberdesc} 321 322 \begin{memberdesc}[LinearPDE]{MKL} 323 the MKL library by Intel,~\Ref{MKL}\footnote{The MKL library will only be available when the Intel compilation environment is used.}. 324 \end{memberdesc} 325 326 \begin{memberdesc}[LinearPDE]{UMFPACK} 327 the UMFPACK,~\Ref{UMFPACK}. Remark: UMFPACK is not parallelized. 328 \end{memberdesc} 329 330 \begin{memberdesc}[LinearPDE]{PASO} 331 the solver library of \finley, see \Sec{CHAPTER ON FINLEY}. 332 \end{memberdesc} 333 334 \begin{memberdesc}[LinearPDE]{ITERATIVE} 335 the default iterative method and preconditioner. The actually used method depends on the 336 PDE solver library and the solver package been chosen. Typically, \PCG is used for symmetric PDEs 337 and \BiCGStab otherwise, both with \JACOBI preconditioner. 338 \end{memberdesc} 339 340 \begin{memberdesc}[LinearPDE]{DIRECT} 341 the default direct linear solver. 342 \end{memberdesc} 343 344 \begin{memberdesc}[LinearPDE]{CHOLEVSKY} 345 direct solver based on Cholevsky factorization (or similar), see~\Ref{Saad}. The solver will require a symmetric PDE. 346 \end{memberdesc} 347 348 \begin{memberdesc}[LinearPDE]{PCG} 349 preconditioned conjugate gradient method, see~\Ref{WEISS}\index{linear solver!PCG}\index{PCG}. The solver will require a symmetric PDE. 350 \end{memberdesc} 351 352 \begin{memberdesc}[LinearPDE]{GMRES} 353 the GMRES method, see~\Ref{WEISS}\index{linear solver!GMRES}\index{GMRES}. Truncation and restart are controlled by the parameters 354 \var{truncation} and \var{restart} of \method{getSolution}. 355 \end{memberdesc} 356 357 \begin{memberdesc}[LinearPDE]{LUMPING} 358 uses lumping to solve the system of linear equations~\index{linear solver!lumping}\index{lumping}. This solver technique 359 condenses the stiffness matrix to a diagonal matrix so the solution of the linear systems becomes very cheap. It can be used when 360 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 361 but is expected to converge to zero when the mesh gets finer. 362 Lumping does not use the linear system solver library. 363 \end{memberdesc} 364 365 \begin{memberdesc}[LinearPDE]{PRES20} 366 the GMRES method with truncation after five residuals and 367 restart after 20 steps, see~\Ref{WEISS}. 368 \end{memberdesc} 369 370 \begin{memberdesc}[LinearPDE]{CGS} 371 conjugate gradient squared method, see~\Ref{WEISS}. 372 \end{memberdesc} 373 374 \begin{memberdesc}[LinearPDE]{BICGSTAB} 375 stabilized bi-conjugate gradients methods, see~\Ref{WEISS}. 376 \end{memberdesc} 377 378 \begin{memberdesc}[LinearPDE]{SSOR} 379 symmetric successive over-relaxation method, see~\Ref{WEISS}. Typically used as preconditioner but some linear solver libraries support 380 this as a solver. 381 \end{memberdesc} 382 \begin{memberdesc}[LinearPDE]{ILU0} 383 the incomplete LU factorization preconditioner with no fill-in, see~\Ref{Saad}. 384 \end{memberdesc} 385 386 \begin{memberdesc}[LinearPDE]{ILUT} 387 the incomplete LU factorization preconditioner with fill-in, see~\Ref{Saad}. 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 389 \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the 390 \method{getSolution} call. 391 \end{memberdesc} 392 393 \begin{memberdesc}[LinearPDE]{JACOBI} 394 the Jacobi preconditioner, see~\Ref{Saad}. 395 \end{memberdesc} 396 397 \begin{memberdesc}[LinearPDE]{AMG} 398 the algebraic--multi grid method, see~\Ref{AMG}. This method can be used as linear solver method but is more robust when used 399 in a preconditioner. 400 \end{memberdesc} 401 402 \begin{memberdesc}[LinearPDE]{RILU} 403 recursive incomplete LU factorization preconditioner, see~\Ref{RILU}. This method is similar to \ILUT but uses smoothing 404 between levels. During the LU-factorization element with 405 relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the 406 \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the 407 \method{getSolution} call. 408 \end{memberdesc} 409 410 \begin{memberdesc}[LinearPDE]{NO_REORDERING} 411 no ordering is used during factorization. 412 \end{memberdesc} 413 414 \begin{memberdesc}[LinearPDE]{MINIMUM_FILL_IN} 415 applies reordering before factorization using a fill-in minimization strategy. You have to check with the particular solver library or 416 linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in. 417 \end{memberdesc} 418 419 \begin{memberdesc}[LinearPDE]{NESTED_DISSECTION} 420 applies reordering before factorization using a nested dissection strategy. You have to check with the particular solver library or 421 linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in. 422 \end{memberdesc} 423 424 \subsection{The \Poisson Class} 425 The \Poisson class provides an easy way to define and solve the Poisson 426 equation 427 \begin{equation}\label{POISSON.1} 428 -u\hackscore{,ii}=f\; . 429 \end{equation} 430 with homogeneous boundary conditions 431 \begin{equation}\label{POISSON.2} 432 n\hackscore{i}u\hackscore{,i}=0 433 \end{equation} 434 and homogeneous constraints 435 \begin{equation}\label{POISSON.3} 436 u=0 \mbox{ where } q>0 437 \end{equation} 438 $f$ has to be a \Scalar in the \Function and $q$ must be 439 a \Scalar in the \SolutionFS. 440 441 \begin{classdesc}{Poisson}{domain} 442 opens a Poisson equation on the \Domain domain. \Poisson is derived from \LinearPDE. 443 \end{classdesc} 444 \begin{methoddesc}[Poisson]{setValue}{f=escript.Data(),q=escript.Data()} 445 assigns new values to \var{f} and \var{q}. 446 \end{methoddesc} 447 448 \subsection{The \Helmholtz Class} 449 The \Helmholtz class defines the Helmholtz problem 450 \begin{equation}\label{HZ.1} 451 \omega \; u - (k\; u\hackscore{,j})\hackscore{,j} = f 452 \end{equation} 453 with natural boundary conditions 454 \begin{equation}\label{HZ.2} 455 k\; u\hackscore{,j} n\hackscore{,j} = g- \alpha \; u 456 \end{equation} 457 and constraints: 458 \begin{equation}\label{HZ.3} 459 u=r \mbox{ where } q>0 460 \end{equation} 461 $\omega$, $k$, $f$ have to be a \Scalar in the \Function, 462 $g$ and $\alpha$ must be a \Scalar in the \FunctionOnBoundary, 463 and $q$ and $r$ must be a \Scalar in the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace. 464 465 \begin{classdesc}{Helmholtz}{domain} 466 opens a Helmholtz equation on the \Domain domain. \Helmholtz is derived from \LinearPDE. 467 \end{classdesc} 468 \begin{methoddesc}[Helmholtz]{setValue}{ \optional{omega} \optional{, k} \optional{, f} \optional{, alpha} \optional{, g} \optional{, r} \optional{, q}} 469 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. 470 \end{methoddesc} 471 472 \subsection{The \Lame Class} 473 The \Lame class defines a Lame equation problem: 474 \begin{equation}\label{LE.1} 475 -\mu (u\hackscore{i,j}+u\hackscore{j,i})+\lambda u\hackscore{k,k})\hackscore{j} = F\hackscore{i}-\sigma\hackscore{ij,j} 476 \end{equation} 477 with natural boundary conditions: 478 \begin{equation}\label{LE.2} 479 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} 480 \end{equation} 481 and constraint 482 \begin{equation}\label{LE.3} 483 u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0 484 \end{equation} 485 $\mu$, $\lambda$ have to be a \Scalar in the \Function, 486 $F$ has to be a \Vector in the \Function, 487 $\sigma$ has to be a \Tensor in the \Function, 488 $f$ must be a \Vector in the \FunctionOnBoundary, 489 and $q$ and $r$ must be a \Vector in the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace. 490 491 \begin{classdesc}{Lame}{domain} 492 opens a Lame equation on the \Domain domain. \Lame is derived from \LinearPDE. 493 \end{classdesc} 494 \begin{methoddesc}[Lame]{setValue}{ \optional{lame_lambda} \optional{, lame_mu} \optional{, F} \optional{, sigma} \optional{, f} \optional{, r} \optional{, q}} 495 assigns new values to 496 \var{lame_lambda}, 497 \var{lame_mu}, 498 \var{F}, 499 \var{sigma}, 500 \var{f}, 501 \var{r} and 502 \var{q} 503 By default all values are set to be zero. 504 \end{methoddesc} 505

## Properties

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