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

Revision 1811 - (show annotations)
Thu Sep 25 23:11:13 2008 UTC (10 years, 6 months ago) by ksteube
File MIME type: application/x-tex
File size: 22452 byte(s)
Copyright updated in all files


 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 different from 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. \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 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 only and refer to reference guide \ReferenceGuide for a complete list. 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 \begin{methoddesc}[LinearPDE]{setValue}{ 141 \optional{A}\optional{, B}, 142 \optional{, C}\optional{, D} 143 \optional{, X}\optional{, Y} 144 \optional{, d}\optional{, y} 145 \optional{, d_contact}\optional{, y_contact} 146 \optional{, q}\optional{, r}} 147 assigns new values to coefficients. By default all values are assumed to be zero\footnote{ 148 In fact it is assumed they are not present by assigning the value \code{escript.Data()}. The 149 can by used by the solver library to reduce computational costs. 150 } 151 If the new coefficient value is not a \Data object, it is converted into a \Data object in the 152 appropriate \FunctionSpace. 153 \end{methoddesc} 154 155 \begin{methoddesc}[LinearPDE]{getCoefficient}{name} 156 return the value assigned to coefficient \var{name}. If \var{name} is not a valid name 157 an exception is raised. 158 \end{methoddesc} 159 160 \begin{methoddesc}[LinearPDE]{getShapeOfCoefficient}{name} 161 returns the shape of coefficient \var{name} even if no value has been assigned to it. 162 \end{methoddesc} 163 164 \begin{methoddesc}[LinearPDE]{getFunctionSpaceForCoefficient}{name} 165 returns the \FunctionSpace of coefficient \var{name} even if no value has been assigned to it. 166 \end{methoddesc} 167 168 \begin{methoddesc}[LinearPDE]{setDebugOn}{} 169 switches the debug mode to on. 170 \end{methoddesc} 171 172 \begin{methoddesc}[LinearPDE]{setDebugOff}{} 173 switches the debug mode to on. 174 \end{methoddesc} 175 176 \begin{methoddesc}[LinearPDE]{isUsingLumping}{} 177 returns \True if \LUMPING is set as the solver for the system of linear equations. 178 Otherwise \False is returned. 179 \end{methoddesc} 180 181 \begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\optional{, preconditioner=LinearPDE.DEFAULT}} 182 sets the solver method and preconditioner to be used. It is pointed out that a PDE solver library 183 may not know the specified solver method but may choose a similar method and preconditioner. 184 \end{methoddesc} 185 186 \begin{methoddesc}[LinearPDE]{getSolverMethodName}{} 187 returns the name of the solver method and preconditioner which is currently been used. 188 \end{methoddesc} 189 190 \begin{methoddesc}[LinearPDE]{getSolverMethod}{} 191 returns the solver method and preconditioner which is currently been used. 192 \end{methoddesc} 193 194 \begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=LinearPDE.DEFAULT}} 195 Set the solver package to be used by PDE library to solve the linear systems of equations. The 196 specified package may not be supported by the PDE solver library. In this case, depending on 197 the PDE solver, the default solver is used or an exception is thrown. 198 If \var{package} is not specified, the default package of the PDE solver library is used. 199 \end{methoddesc} 200 201 \begin{methoddesc}[LinearPDE]{getSolverPackage}{} 202 returns the linear solver package currently by the PDE solver library 203 \end{methoddesc} 204 205 206 \begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}: 207 resets the tolerance for solution. The actually meaning of tolerance is 208 depending on the underlying PDE library. In most cases, the tolerance 209 will only consider the error from solving the discrete problem but will 210 not consider any discretization error. 211 \end{methoddesc} 212 213 \begin{methoddesc}[LinearPDE]{setToleranceReductionFactor}{TOL} 214 Lowers the tolerance by a factor of TOL. 215 \end{methoddesc} 216 217 \begin{methoddesc}[LinearPDE]{getTolerance}{} 218 returns the current tolerance of the solution 219 \end{methoddesc} 220 221 \begin{methoddesc}[LinearPDE]{getDomain}{} 222 returns the \Domain of the PDE. 223 \end{methoddesc} 224 225 \begin{methoddesc}[LinearPDE]{getDim}{} 226 returns the spatial dimension of the PDE. 227 \end{methoddesc} 228 229 \begin{methoddesc}[LinearPDE]{getNumEquations}{} 230 returns the number of equations. 231 \end{methoddesc} 232 233 \begin{methoddesc}[LinearPDE]{getNumSolutions}{} 234 returns the number of components of the solution. 235 \end{methoddesc} 236 237 \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False} 238 returns \True if the PDE is symmetric and \False otherwise. 239 The method is very computational expensive and should only be 240 called for testing purposes. The symmetry flag is not altered. 241 If \var{verbose}=\True information about where symmetry is violated 242 are printed. 243 \end{methoddesc} 244 245 \begin{methoddesc}[LinearPDE]{getFlux}{u} 246 returns the flux $J\hackscore{ij}$ \index{flux} for given solution \var{u} 247 defined by \eqn{LINEARPDE.SYSTEM.5} and \eqn{LINEARPDE.SINGLE.5}, respectively. 248 \end{methoddesc} 249 250 251 \begin{methoddesc}[LinearPDE]{isSymmetric}{} 252 returns \True if the PDE has been indicated to be symmetric. 253 Otherwise \False is returned. 254 \end{methoddesc} 255 256 \begin{methoddesc}[LinearPDE]{setSymmetryOn}{} 257 indicates that the PDE is symmetric. 258 \end{methoddesc} 259 260 \begin{methoddesc}[LinearPDE]{setSymmetryOff}{} 261 indicates that the PDE is not symmetric. 262 \end{methoddesc} 263 264 \begin{methoddesc}[LinearPDE]{setReducedOrderOn}{} 265 switches on the reduction of polynomial order for the solution and equation evaluation even if 266 a quadratic or higher interpolation order is defined in the \Domain. This feature may not 267 be supported by all PDE libraries. 268 \end{methoddesc} 269 270 \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{} 271 switches off the reduction of polynomial order for the solution and 272 equation evaluation. 273 \end{methoddesc} 274 275 \begin{methoddesc}[LinearPDE]{getOperator}{} 276 returns the \Operator of the PDE. 277 \end{methoddesc} 278 279 \begin{methoddesc}[LinearPDE]{getRightHandSide}{} 280 returns the right hand side of the PDE as a \Data object. If 281 \var{ignoreConstraint}=\True the constraints are not considered 282 when building up the right hand side. 283 \end{methoddesc} 284 285 \begin{methoddesc}[LinearPDE]{getSystem}{} 286 returns the \Operator and right hand side of the PDE. 287 \end{methoddesc} 288 289 \begin{methoddesc}[LinearPDE]{getSolution}{ 290 \optional{verbose=False} 291 \optional{, reordering=LinearPDE.NO_REORDERING} 292 \optional{, iter_max=1000} 293 \optional{, drop_tolerance=0.01} 294 \optional{, drop_storage=1.20} 295 \optional{, truncation=-1} 296 \optional{, restart=-1} 297 } 298 returns (an approximation of) the solution of the PDE. If \code{verbose=\True} some information during the solution process printed. 299 \var{reordering} selects a reordering methods that is applied before or during the solution process 300 (=\NOREORDERING ,\MINIMUMFILLIN ,\NESTEDDESCTION). 301 \var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerance. 302 \var{drop_tolerance} specifies a relative tolerance for small elements to be dropped when building a preconditioner 303 (eg. in \ILUT). \var{drop_storage} limits the extra storage allowed when building a preconditioner 304 (eg. in \ILUT). The extra storage is given relative to the size of the stiffness matrix, eg. 305 \var{drop_storage=1.2} will allow the preconditioner to use the $1.2$ fold storage space than used 306 for the stiffness matrix. \var{truncation} defines the truncation. 307 \end{methoddesc} 308 309 \begin{memberdesc}[LinearPDE]{DEFAULT} 310 default method, preconditioner or package to be used to solve the PDE. An appropriate method should be 311 chosen by the used PDE solver library. 312 \end{memberdesc} 313 314 \begin{memberdesc}[LinearPDE]{SCSL} 315 the SCSL library by SGI,~\Ref{SCSL}\footnote{The SCSL library will only be available on SGI systems} 316 \end{memberdesc} 317 318 \begin{memberdesc}[LinearPDE]{MKL} 319 the MKL library by Intel,~\Ref{MKL}\footnote{The MKL library will only be available when the Intel compilation environment is used.}. 320 \end{memberdesc} 321 322 \begin{memberdesc}[LinearPDE]{UMFPACK} 323 the UMFPACK,~\Ref{UMFPACK}. Remark: UMFPACK is not parallelized. 324 \end{memberdesc} 325 326 \begin{memberdesc}[LinearPDE]{PASO} 327 the solver library of \finley, see \Sec{CHAPTER ON FINLEY}. 328 \end{memberdesc} 329 330 \begin{memberdesc}[LinearPDE]{ITERATIVE} 331 the default iterative method and preconditioner. The actually used method depends on the 332 PDE solver library and the solver package been chosen. Typically, \PCG is used for symmetric PDEs 333 and \BiCGStab otherwise, both with \JACOBI preconditioner. 334 \end{memberdesc} 335 336 \begin{memberdesc}[LinearPDE]{DIRECT} 337 the default direct linear solver. 338 \end{memberdesc} 339 340 \begin{memberdesc}[LinearPDE]{CHOLEVSKY} 341 direct solver based on Cholevsky factorization (or similar), see~\Ref{Saad}. The solver will require a symmetric PDE. 342 \end{memberdesc} 343 344 \begin{memberdesc}[LinearPDE]{PCG} 345 preconditioned conjugate gradient method, see~\Ref{WEISS}\index{linear solver!PCG}\index{PCG}. The solver will require a symmetric PDE. 346 \end{memberdesc} 347 348 \begin{memberdesc}[LinearPDE]{GMRES} 349 the GMRES method, see~\Ref{WEISS}\index{linear solver!GMRES}\index{GMRES}. Truncation and restart are controlled by the parameters 350 \var{truncation} and \var{restart} of \method{getSolution}. 351 \end{memberdesc} 352 353 \begin{memberdesc}[LinearPDE]{LUMPING} 354 uses lumping to solve the system of linear equations~\index{linear solver!lumping}\index{lumping}. This solver technique 355 condenses the stiffness matrix to a diagonal matrix so the solution of the linear systems becomes very cheap. It can be used when 356 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 357 but is expect to converge to zero when the mesh gets finer. 358 Lumping does not use the linear system solver library. 359 \end{memberdesc} 360 361 \begin{memberdesc}[LinearPDE]{PRES20} 362 the GMRES method with truncation after five residuals and 363 restart after 20 steps, see~\Ref{WEISS}. 364 \end{memberdesc} 365 366 \begin{memberdesc}[LinearPDE]{CGS} 367 conjugate gradient squared method, see~\Ref{WEISS}. 368 \end{memberdesc} 369 370 \begin{memberdesc}[LinearPDE]{BICGSTAB} 371 stabilized bi-conjugate gradients methods, see~\Ref{WEISS}. 372 \end{memberdesc} 373 374 \begin{memberdesc}[LinearPDE]{SSOR} 375 symmetric successive over-relaxation method, see~\Ref{WEISS}. Typically used as preconditioner but some linear solver libraries support 376 this as a solver. 377 \end{memberdesc} 378 \begin{memberdesc}[LinearPDE]{ILU0} 379 the incomplete LU factorization preconditioner with no fill-in, see~\Ref{Saad}. 380 \end{memberdesc} 381 382 \begin{memberdesc}[LinearPDE]{ILUT} 383 the incomplete LU factorization preconditioner with fill-in, see~\Ref{Saad}. During the LU-factorization element with 384 relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the 385 \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the 386 \method{getSolution} call. 387 \end{memberdesc} 388 389 \begin{memberdesc}[LinearPDE]{JACOBI} 390 the Jacobi preconditioner, see~\Ref{Saad}. 391 \end{memberdesc} 392 393 \begin{memberdesc}[LinearPDE]{AMG} 394 the algebraic--multi grid method, see~\Ref{AMG}. This method can be used as linear solver method but is more robust when used 395 in a preconditioner. 396 \end{memberdesc} 397 398 \begin{memberdesc}[LinearPDE]{RILU} 399 recursive incomplete LU factorization preconditioner, see~\Ref{RILU}. This method is similar to \ILUT but uses smoothing 400 between levels. During the LU-factorization element with 401 relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the 402 \var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the 403 \method{getSolution} call. 404 \end{memberdesc} 405 406 \begin{memberdesc}[LinearPDE]{NO_REORDERING} 407 no ordering is used during factorization. 408 \end{memberdesc} 409 410 \begin{memberdesc}[LinearPDE]{MINIMUM_FILL_IN} 411 applies reordering before factorization using a fill-in minimization strategy. You have to check with the particular solver library or 412 linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in. 413 \end{memberdesc} 414 415 \begin{memberdesc}[LinearPDE]{NESTED_DISSECTION} 416 applies reordering before factorization using a nested dissection strategy. You have to check with the particular solver library or 417 linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in. 418 \end{memberdesc} 419 420 \subsection{The \Poisson Class} 421 The \Poisson class provides an easy way to define and solve the Poisson 422 equation 423 \begin{equation}\label{POISSON.1} 424 -u\hackscore{,ii}=f\; . 425 \end{equation} 426 with homogeneous boundary conditions 427 \begin{equation}\label{POISSON.2} 428 n\hackscore{i}u\hackscore{,i}=0 429 \end{equation} 430 and homogeneous constraints 431 \begin{equation}\label{POISSON.3} 432 u=0 \mbox{ where } q>0 433 \end{equation} 434 $f$ has to be a \Scalar in the \Function and $q$ must be 435 a \Scalar in the \SolutionFS. 436 437 \begin{classdesc}{Poisson}{domain} 438 opens a Poisson equation on the \Domain domain. \Poisson is derived from \LinearPDE. 439 \end{classdesc} 440 \begin{methoddesc}[Poisson]{setValue}{f=escript.Data(),q=escript.Data()} 441 assigns new values to \var{f} and \var{q}. 442 \end{methoddesc} 443 444 \subsection{The \Helmholtz Class} 445 The \Helmholtz class defines the Helmholtz problem 446 \begin{equation}\label{HZ.1} 447 \omega \; u - (k\; u\hackscore{,j})\hackscore{,j} = f 448 \end{equation} 449 with natural boundary conditions 450 \begin{equation}\label{HZ.2} 451 k\; u\hackscore{,j} n\hackscore{,j} = g- \alpha \; u 452 \end{equation} 453 and constraints: 454 \begin{equation}\label{HZ.3} 455 u=r \mbox{ where } q>0 456 \end{equation} 457 $\omega$, $k$, $f$ have to be a \Scalar in the \Function, 458 $g$ and $\alpha$ must be a \Scalar in the \FunctionOnBoundary, 459 and $q$ and $r$ must be a \Scalar in the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace. 460 461 \begin{classdesc}{Helmholtz}{domain} 462 opens a Helmholtz equation on the \Domain domain. \Helmholtz is derived from \LinearPDE. 463 \end{classdesc} 464 \begin{methoddesc}[Helmholtz]{setValue}{ \optional{omega} \optional{, k} \optional{, f} \optional{, alpha} \optional{, g} \optional{, r} \optional{, q}} 465 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. 466 \end{methoddesc} 467 468 \subsection{The \Lame Class} 469 The \Lame class defines a Lame equation problem: 470 \begin{equation}\label{LE.1} 471 -\mu (u\hackscore{i,j}+u\hackscore{j,i})+\lambda u\hackscore{k,k})\hackscore{j} = F\hackscore{i}-\sigma\hackscore{ij,j} 472 \end{equation} 473 with natural boundary conditions: 474 \begin{equation}\label{LE.2} 475 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} 476 \end{equation} 477 and constraint 478 \begin{equation}\label{LE.3} 479 u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0 480 \end{equation} 481 $\mu$, $\lambda$ have to be a \Scalar in the \Function, 482 $F$ has to be a \Vector in the \Function, 483 $\sigma$ has to be a \Tensor in the \Function, 484 $f$ must be a \Vector in the \FunctionOnBoundary, 485 and $q$ and $r$ must be a \Vector in the \SolutionFS or must be mapped or interpolated into the particular \FunctionSpace. 486 487 \begin{classdesc}{Lame}{domain} 488 opens a Lame equation on the \Domain domain. \Lame is derived from \LinearPDE. 489 \end{classdesc} 490 \begin{methoddesc}[Lame]{setValue}{ \optional{lame_lambda} \optional{, lame_mu} \optional{, F} \optional{, sigma} \optional{, f} \optional{, r} \optional{, q}} 491 assigns new values to 492 \var{lame_lambda}, 493 \var{lame_mu}, 494 \var{F}, 495 \var{sigma}, 496 \var{f}, 497 \var{r} and 498 \var{q} 499 By default all values are set to be zero. 500 \end{methoddesc} 501

## Properties

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