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

Revision 1700 - (hide annotations)
Thu Aug 14 03:35:46 2008 UTC (11 years, 7 months ago) by lgraham
File MIME type: application/x-tex
File size: 22475 byte(s)

 1 ksteube 1316 % 2 jgs 102 % $Id$ 3 gross 625 % 4 ksteube 1316 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5 gross 625 % 6 ksteube 1316 % Copyright 2003-2007 by ACceSS MNRF 7 % Copyright 2007 by University of Queensland 8 % 9 10 % Primary Business: Queensland, Australia 11 % Licensed under the Open Software License version 3.0 12 13 % 14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 15 % 16 jgs 102 17 ksteube 1318 \chapter{The Module \linearPDEs} 18 jgs 102 19 20 gross 999 21 \section{Linear Partial Differential Equations} 22 jgs 102 \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 gross 660 the outer normal field on $\Gamma$. 28 jgs 102 29 gross 660 For a single PDE with a solution with a single component the linear PDE is defined in the 30 jgs 102 following form: 31 \begin{equation}\label{LINEARPDE.SINGLE.1} 32 gross 660 -(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 jgs 102 \end{equation} 34 gross 660 $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 jgs 102 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 gross 660 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 jgs 102 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 gross 660 or \eqn{LINEARPDE.SINGLE.2}. 53 gross 625 54 jgs 102 For a system of PDEs and a solution with several components the PDE has the form 55 \begin{equation}\label{LINEARPDE.SYSTEM.1} 56 gross 660 -(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 jgs 102 \end{equation} 58 gross 660 $A$ is a \RankFour, $B$ and $C$ are each a \RankThree, $D$ and $X$ are each a \RankTwo and $Y$ is a \RankOne. 59 jgs 102 The natural boundary conditions \index{boundary condition!natural} take the form: 60 \begin{equation}\label{LINEARPDE.SYSTEM.2} 61 gross 625 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 jgs 102 \end{equation} 63 gross 660 The coefficient $d$ is a \RankTwo and $y$ is a 64 jgs 102 \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 gross 660 $r$ and $q$ are each \RankOne. Notice that not necessarily all components must 69 gross 625 have a constraint at all locations. 70 71 jgs 102 \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 gross 660 defined as 75 jgs 102 \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 gross 660 In the context of discontinuities \index{discontinuity} $n$ denotes the normal on the 83 jgs 102 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 gross 660 The coefficient $d^{contact}$ is a \RankTwo and $y^{contact}$ is a 92 jgs 102 \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 ksteube 1316 In this case the the coefficient $d^{contact}$ and $y^{contact}$ are each \Scalar 98 jgs 102 both in the \FunctionOnContactZero or \FunctionOnContactOne. 99 gross 625 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 gross 660 d^{contact}\hackscore{ik}=d^{contact}\hackscore{ki} 112 gross 625 \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 gross 999 117 \subsection{Classes} 118 \declaremodule{extension}{esys.escript.linearPDEs} 119 ksteube 1316 \modulesynopsis{Linear partial differential equation handler} 120 gross 999 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 ksteube 1316 This is the general class to define a linear PDE in \escript. We list a selection of the most 132 gross 625 important methods of the class only and refer to reference guide \ReferenceGuide for a complete list. 133 134 jgs 102 \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0} 135 opens a linear, steady, second order PDE on the \Domain \var{domain}. \var{numEquations} 136 ksteube 1316 and \var{numSolutions} gives the number of equations and the number of solution components. 137 gross 660 If \var{numEquations} and \var{numSolutions} is non-positive, the number of equations 138 ksteube 1316 and the number solutions, respectively, stay undefined until a coefficient is 139 gross 660 defined. 140 jgs 102 \end{classdesc} 141 142 gross 625 \begin{methoddesc}[LinearPDE]{setValue}{ 143 gross 660 \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 ksteube 1316 assigns new values to coefficients. By default all values are assumed to be zero\footnote{ 150 gross 660 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 gross 625 If the new coefficient value is not a \Data object, it is converted into a \Data object in the 154 jgs 102 appropriate \FunctionSpace. 155 \end{methoddesc} 156 157 \begin{methoddesc}[LinearPDE]{getCoefficient}{name} 158 gross 660 return the value assigned to coefficient \var{name}. If \var{name} is not a valid name 159 an exception is raised. 160 jgs 102 \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 gross 625 \begin{methoddesc}[LinearPDE]{getFunctionSpaceForCoefficient}{name} 167 jgs 102 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 gross 625 \begin{methoddesc}[LinearPDE]{isUsingLumping}{} 179 ksteube 1316 returns \True if \LUMPING is set as the solver for the system of linear equations. 180 gross 653 Otherwise \False is returned. 181 jgs 102 \end{methoddesc} 182 183 gross 653 \begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\optional{, preconditioner=LinearPDE.DEFAULT}} 184 gross 625 sets the solver method and preconditioner to be used. It is pointed out that a PDE solver library 185 gross 660 may not know the specified solver method but may choose a similar method and preconditioner. 186 jgs 102 \end{methoddesc} 187 188 gross 653 \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 gross 660 Set the solver package to be used by PDE library to solve the linear systems of equations. The 198 ksteube 1316 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 gross 660 If \var{package} is not specified, the default package of the PDE solver library is used. 201 gross 653 \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 gross 625 \begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}: 209 resets the tolerance for solution. The actually meaning of tolerance is 210 gross 660 depending on the underlying PDE library. In most cases, the tolerance 211 ksteube 1316 will only consider the error from solving the discrete problem but will 212 gross 625 not consider any discretization error. 213 \end{methoddesc} 214 jgs 102 215 lgraham 1700 \begin{methoddesc}[LinearPDE]{setToleranceReductionFactor}{TOL} 216 Lowers the tolerance by a factor of TOL. 217 \end{methoddesc} 218 219 gross 625 \begin{methoddesc}[LinearPDE]{getTolerance}{} 220 returns the current tolerance of the solution 221 jgs 102 \end{methoddesc} 222 223 gross 625 \begin{methoddesc}[LinearPDE]{getDomain}{} 224 returns the \Domain of the PDE. 225 jgs 102 \end{methoddesc} 226 227 gross 625 \begin{methoddesc}[LinearPDE]{getDim}{} 228 returns the spatial dimension of the PDE. 229 jgs 102 \end{methoddesc} 230 231 gross 625 \begin{methoddesc}[LinearPDE]{getNumEquations}{} 232 returns the number of equations. 233 \end{methoddesc} 234 jgs 102 235 gross 625 \begin{methoddesc}[LinearPDE]{getNumSolutions}{} 236 returns the number of components of the solution. 237 jgs 102 \end{methoddesc} 238 239 gross 625 \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False} 240 gross 660 returns \True if the PDE is symmetric and \False otherwise. 241 The method is very computational expensive and should only be 242 gross 625 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 jgs 102 \end{methoddesc} 246 247 gross 625 \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 jgs 102 \end{methoddesc} 251 252 gross 625 253 jgs 102 \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 gross 660 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 gross 625 be supported by all PDE libraries. 270 jgs 102 \end{methoddesc} 271 272 \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{} 273 gross 660 switches off the reduction of polynomial order for the solution and 274 jgs 102 equation evaluation. 275 \end{methoddesc} 276 277 \begin{methoddesc}[LinearPDE]{getOperator}{} 278 returns the \Operator of the PDE. 279 \end{methoddesc} 280 281 gross 625 \begin{methoddesc}[LinearPDE]{getRightHandSide}{} 282 jgs 102 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 gross 625 \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 gross 653 returns (an approximation of) the solution of the PDE. If \code{verbose=\True} some information during the solution process printed. 301 gross 660 \var{reordering} selects a reordering methods that is applied before or during the solution process 302 gross 653 (=\NOREORDERING ,\MINIMUMFILLIN ,\NESTEDDESCTION). 303 gross 660 \var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerance. 304 gross 625 \var{drop_tolerance} specifies a relative tolerance for small elements to be dropped when building a preconditioner 305 gross 653 (eg. in \ILUT). \var{drop_storage} limits the extra storage allowed when building a preconditioner 306 gross 660 (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 jgs 102 \end{methoddesc} 310 311 gross 625 \begin{memberdesc}[LinearPDE]{DEFAULT} 312 gross 660 default method, preconditioner or package to be used to solve the PDE. An appropriate method should be 313 gross 625 chosen by the used PDE solver library. 314 \end{memberdesc} 315 jgs 102 316 gross 625 \begin{memberdesc}[LinearPDE]{SCSL} 317 gross 660 the SCSL library by SGI,~\Ref{SCSL}\footnote{The SCSL library will only be available on SGI systems} 318 gross 625 \end{memberdesc} 319 jgs 102 320 gross 625 \begin{memberdesc}[LinearPDE]{MKL} 321 lgraham 1700 the MKL library by Intel,~\Ref{MKL}\footnote{The MKL library will only be available when the Intel compilation environment is used.}. 322 gross 625 \end{memberdesc} 323 jgs 102 324 gross 625 \begin{memberdesc}[LinearPDE]{UMFPACK} 325 gross 653 the UMFPACK,~\Ref{UMFPACK}. Remark: UMFPACK is not parallelized. 326 gross 625 \end{memberdesc} 327 jgs 102 328 gross 625 \begin{memberdesc}[LinearPDE]{PASO} 329 gross 653 the solver library of \finley, see \Sec{CHAPTER ON FINLEY}. 330 gross 625 \end{memberdesc} 331 jgs 102 332 gross 625 \begin{memberdesc}[LinearPDE]{ITERATIVE} 333 gross 653 the default iterative method and preconditioner. The actually used method depends on the 334 ksteube 1316 PDE solver library and the solver package been chosen. Typically, \PCG is used for symmetric PDEs 335 gross 660 and \BiCGStab otherwise, both with \JACOBI preconditioner. 336 gross 625 \end{memberdesc} 337 jgs 102 338 gross 625 \begin{memberdesc}[LinearPDE]{DIRECT} 339 gross 660 the default direct linear solver. 340 gross 625 \end{memberdesc} 341 jgs 102 342 gross 625 \begin{memberdesc}[LinearPDE]{CHOLEVSKY} 343 gross 660 direct solver based on Cholevsky factorization (or similar), see~\Ref{Saad}. The solver will require a symmetric PDE. 344 gross 625 \end{memberdesc} 345 jgs 110 346 gross 625 \begin{memberdesc}[LinearPDE]{PCG} 347 gross 653 preconditioned conjugate gradient method, see~\Ref{WEISS}\index{linear solver!PCG}\index{PCG}. The solver will require a symmetric PDE. 348 gross 625 \end{memberdesc} 349 jgs 110 350 gross 625 \begin{memberdesc}[LinearPDE]{GMRES} 351 gross 653 the GMRES method, see~\Ref{WEISS}\index{linear solver!GMRES}\index{GMRES}. Truncation and restart are controlled by the parameters 352 gross 625 \var{truncation} and \var{restart} of \method{getSolution}. 353 \end{memberdesc} 354 jgs 102 355 gross 625 \begin{memberdesc}[LinearPDE]{LUMPING} 356 gross 660 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 gross 653 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 gross 660 but is expect to converge to zero when the mesh gets finer. 360 Lumping does not use the linear system solver library. 361 gross 625 \end{memberdesc} 362 jgs 107 363 gross 625 \begin{memberdesc}[LinearPDE]{PRES20} 364 gross 653 the GMRES method with truncation after five residuals and 365 gross 625 restart after 20 steps, see~\Ref{WEISS}. 366 gross 999 \end{memberdesc} 367 gross 625 368 \begin{memberdesc}[LinearPDE]{CGS} 369 conjugate gradient squared method, see~\Ref{WEISS}. 370 jgs 107 \end{memberdesc} 371 372 gross 625 \begin{memberdesc}[LinearPDE]{BICGSTAB} 373 gross 660 stabilized bi-conjugate gradients methods, see~\Ref{WEISS}. 374 jgs 107 \end{memberdesc} 375 376 gross 625 \begin{memberdesc}[LinearPDE]{SSOR} 377 gross 653 symmetric successive over-relaxation method, see~\Ref{WEISS}. Typically used as preconditioner but some linear solver libraries support 378 gross 660 this as a solver. 379 gross 625 \end{memberdesc} 380 \begin{memberdesc}[LinearPDE]{ILU0} 381 gross 660 the incomplete LU factorization preconditioner with no fill-in, see~\Ref{Saad}. 382 gross 653 \end{memberdesc} 383 384 gross 625 \begin{memberdesc}[LinearPDE]{ILUT} 385 gross 653 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 gross 660 \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 gross 653 \end{memberdesc} 390 391 gross 625 \begin{memberdesc}[LinearPDE]{JACOBI} 392 gross 653 the Jacobi preconditioner, see~\Ref{Saad}. 393 \end{memberdesc} 394 395 gross 625 \begin{memberdesc}[LinearPDE]{AMG} 396 gross 660 the algebraic--multi grid method, see~\Ref{AMG}. This method can be used as linear solver method but is more robust when used 397 gross 653 in a preconditioner. 398 \end{memberdesc} 399 400 gross 625 \begin{memberdesc}[LinearPDE]{RILU} 401 gross 653 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 gross 660 \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 gross 653 \end{memberdesc} 407 jgs 107 408 gross 653 \begin{memberdesc}[LinearPDE]{NO_REORDERING} 409 no ordering is used during factorization. 410 \end{memberdesc} 411 gross 625 412 gross 653 \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 gross 625 417 \begin{memberdesc}[LinearPDE]{NESTED_DISSECTION} 418 gross 653 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 gross 625 422 gross 999 \subsection{The \Poisson Class} 423 jgs 102 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 gross 660 a \Scalar in the \SolutionFS. 438 jgs 102 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 gross 625 446 gross 999 \subsection{The \Helmholtz Class} 447 gross 660 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 ksteube 1316 with natural boundary conditions 452 gross 660 \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 gross 625 463 gross 660 \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 gross 999 \subsection{The \Lame Class} 471 gross 660 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 ksteube 1316 with natural boundary conditions: 476 gross 660 \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 gross 625 489 gross 660 \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