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

Revision 599 - (show annotations)
Fri Mar 17 05:48:59 2006 UTC (14 years ago) by gross
File MIME type: application/x-tex
File size: 21272 byte(s)
update on escript function

 1 % $Id$ 2 3 \chapter{The module \linearPDEs} 4 5 \declaremodule{extension}{linearPDEs} \modulesynopsis{Linear partial pifferential equation handler} 6 The module \linearPDEs provides an interface to define and solve linear partial 7 differential equations within \escript. \linearPDEs does not provide any 8 solver capabilities in itself but hands the PDE over to 9 the PDE solver library defined through the \Domain of the PDE. 10 The general interface is provided through the \LinearPDE class. The 11 \AdvectivePDE which is derived from the \LinearPDE class 12 provides an interface to PDE dominated by its advective terms. The \Poisson 13 class which is also derived form the \LinearPDE class should be used 14 to define the Poisson equation \index{Poisson}. 15 16 \section{\LinearPDE Class} 17 \label{SEC LinearPDE} 18 19 The \LinearPDE class is used to define a general linear, steady, second order PDE 20 for an unknown function $u$ on a given $\Omega$ defined through a \Domain object. 21 In the following $\Gamma$ denotes the boundary of the domain $\Omega$. $n$ denotes 22 the outer normal field on $\Gamma$. 23 24 For a single PDE with a solution with a single component the linear PDE is defined in the 25 following form: 26 \begin{equation}\label{LINEARPDE.SINGLE.1} 27 -(A\hackscore{jl} u\hackscore{,l}){,j}+(B\hackscore{j} u)\hackscore{,j}+C\hackscore{l} u\hackscore{,l}+D u =-X\hackscore{j,j}+Y \; . 28 \end{equation} 29 $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. 30 The coefficients $A$, $B$, $C$, $D$, $X$ and $Y$ have to be specified through \Data objects in the 31 \Function on the PDE or objects that can be converted into such \Data objects. 32 $A$ is a \RankTwo, $B$, $C$ and $X$ are \RankOne and $D$ and $Y$ are scalar. 33 The following natural 34 boundary conditions are considered \index{boundary condition!natural} on $\Gamma$: 35 \begin{equation}\label{LINEARPDE.SINGLE.2} 36 n\hackscore{j}(A\hackscore{jl} u\hackscore{,l}+B\hackscore{j} u)+d u=n\hackscore{j}X\hackscore{j} + y \;. 37 \end{equation} 38 Notice that the coefficients $A$, $B$ and $X$ are defined in the PDE. The coefficients $d$ and $y$ are 39 each a \Scalar in the \FunctionOnBoundary. Constraints \index{constraint} for the solution prescribing the value of the 40 solution at certain locations in the domain. They have the form 41 \begin{equation}\label{LINEARPDE.SINGLE.3} 42 u=r \mbox{ where } q>0 43 \end{equation} 44 $r$ and $q$ are each \Scalar where $q$ is the characteristic function 45 \index{characteristic function} defining where the constraint is applied. 46 The constraints defined by \eqn{LINEARPDE.SINGLE.3} override any other condition set by \eqn{LINEARPDE.SINGLE.1} 47 or \eqn{LINEARPDE.SINGLE.2}. The PDE is symmetrical \index{symmetrical} if 48 \begin{equation}\label{LINEARPDE.SINGLE.4} 49 A\hackscore{jl}=A\hackscore{lj} \mbox{ and } B\hackscore{j}=C\hackscore{j} 50 \end{equation} 51 For a system of PDEs and a solution with several components the PDE has the form 52 \begin{equation}\label{LINEARPDE.SYSTEM.1} 53 -(A\hackscore{ijkl} u\hackscore{k,l}){,j}+(B\hackscore{ijk} u_k)\hackscore{,j}+C\hackscore{ikl} u\hackscore{k,l}+D\hackscore{ik} u_k =-X\hackscore{ij,j}+Y\hackscore{i} \; . 54 \end{equation} 55 $A$ is a \RankFour, $B$ and $C$ are each a \RankThree, $D$ and $X$ are each a \RankTwo and $Y$ is a \RankOne. 56 The natural boundary conditions \index{boundary condition!natural} take the form: 57 \begin{equation}\label{LINEARPDE.SYSTEM.2} 58 n\hackscore{j}(A\hackscore{ijkl} u\hackscore{k,l}){,j}+(B\hackscore{ijk} u_k)+d\hackscore{ik} u_k=n\hackscore{j}-X\hackscore{ij}+y\hackscore{i} \;. 59 \end{equation} 60 The coefficient $d$ is a \RankTwo and $y$ is a 61 \RankOne both in the \FunctionOnBoundary. Constraints \index{constraint} take the form 62 \begin{equation}\label{LINEARPDE.SYSTEM.3} 63 u\hackscore{i}=r\hackscore{i} \mbox{ where } q\hackscore{i}>0 64 \end{equation} 65 $r$ and $q$ are each \RankOne. Notice that at some locations not necessarily all components must 66 have a constraint. The system of PDEs is symmetrical \index{symmetrical} if 67 \begin{eqnarray}\label{LINEARPDE.SYSTEM.4} 68 A\hackscore{ijkl}=A\hackscore{klij} \\ 69 B\hackscore{ijk}=C\hackscore{kij} \\ 70 D\hackscore{ik}=D\hackscore{ki} \\ 71 d\hackscore{ik}=d\hackscore{ki} \ 72 \end{eqnarray} 73 \LinearPDE also supports solution discontinuities \index{discontinuity} over contact region $\Gamma^{contact}$ 74 in the domain $\Omega$. To specify the conditions across the discontinuity we are using the 75 generalised flux $J$ which is in the case of a systems of PDEs and several components of the solution 76 defined as 77 \begin{equation}\label{LINEARPDE.SYSTEM.5} 78 J\hackscore{ij}=A\hackscore{ijkl}u\hackscore{k,l}+B\hackscore{ijk}u\hackscore{k}-X\hackscore{ij} 79 \end{equation} 80 For the case of single solution component and single PDE $J$ is defined 81 \begin{equation}\label{LINEARPDE.SINGLE.5} 82 J\hackscore{j}=A\hackscore{jl}u\hackscore{,l}+B\hackscore{j}u\hackscore{k}-X\hackscore{j} 83 \end{equation} 84 In the context of discontinuities \index{discontinuity} $n$ denotes the normal on the 85 discontinuity pointing from side 0 towards side 1. For a system of PDEs 86 the contact condition takes the form 87 \begin{equation}\label{LINEARPDE.SYSTEM.6} 88 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} \; . 89 \end{equation} 90 where $J^{0}$ and $J^{1}$ are the fluxes on side $0$ and side $1$ of the 91 discontinuity $\Gamma^{contact}$, respectively. $[u]$, which is the difference 92 of the solution at side 1 and at side 0, denotes the jump of $u$ across $\Gamma^{contact}$. 93 The coefficient $d^{contact}$ is a \RankTwo and $y^{contact}$ is a 94 \RankOne both in the \FunctionOnContactZero or \FunctionOnContactOne. 95 In case of a single PDE and a single component solution the contact condition takes the form 96 \begin{equation}\label{LINEARPDE.SINGLE.6} 97 n\hackscore{j} J^{0}\hackscore{j}=n\hackscore{j} J^{1}\hackscore{j}=y^{contact} - d^{contact}[u] 98 \end{equation} 99 In this case the the coefficient $d^{contact}$ and $y^{contact}$ are eaach \Scalar 100 both in the \FunctionOnContactZero or \FunctionOnContactOne. 101 102 \begin{classdesc}{LinearPDE}{domain,numEquations=0,numSolutions=0} 103 opens a linear, steady, second order PDE on the \Domain \var{domain}. \var{numEquations} 104 and \var{numSolutions} gives the number of equations and the number of solutiopn components. 105 If \var{numEquations} and \var{numSolutions} is non-positive, the number of equations 106 and the number solutions, respctively, stay undefined until a coefficient is 107 defined. 108 \end{classdesc} 109 110 \begin{methoddesc}[LinearPDE]{setValues}{arg1,arg2,...,argN} 111 assigns new values to coefficients \var{arg1}, \var{arg2}, $\ldots$ \var{argN}. 112 The coefficients must be one of the valid coefficient names 113 \var{A}, 114 \var{B}, 115 \var{C}, 116 \var{D}, 117 \var{X}, 118 \var{Y}, 119 \var{d}, 120 \var{y}, 121 \var{dcontact}, 122 \var{ycontact}, 123 \var{r}, 124 or \var{q}. 125 If the coefficient is not a \Data object, it is converted into a \Data object in the 126 appropriate \FunctionSpace. 127 \end{methoddesc} 128 129 \begin{methoddesc}[LinearPDE]{createCoefficient}{name} 130 facilitates the creation of a \Data object corresponding to coefficient of name 131 \var{name}. If \var{name} is not a valid name an exception is raised. The 132 returned \Data object is initialised to zero and is not set as a value of the 133 LinearPDE. 134 \end{methoddesc} 135 136 \begin{methoddesc}[LinearPDE]{getCoefficient}{name} 137 return the value assigned to coefficient \var{name}. If \var{name} is not a valid name 138 an exception is raised. 139 \end{methoddesc} 140 141 \begin{methoddesc}[LinearPDE]{cleanCoefficients}{} 142 resets all coefficients to their initialization values. This method is useful to call when trying to save memory 143 as is releaces eqnerences to coefficients but keeping the differential operator. 144 \end{methoddesc} 145 \begin{methoddesc}[LinearPDE]{createNewCoefficient}{name} 146 returns a \Data object which has the \FunctionSpace and \Shape of coefficient \var{name}. The initial value is $0$. 147 \end{methoddesc} 148 149 \begin{methoddesc}[LinearPDE]{getShapeOfCoefficient}{name} 150 returns the shape of coefficient \var{name} even if no value has been assigned to it. 151 \end{methoddesc} 152 153 154 \begin{methoddesc}[LinearPDE]{getFunctionSpaceOfCoefficient}{name} 155 returns the \FunctionSpace of coefficient \var{name} even if no value has been assigned to it. 156 \end{methoddesc} 157 158 \begin{methoddesc}[LinearPDE]{hasCoefficient}{name} 159 returns \True if \var{name} is valid name of a coefficient 160 \end{methoddesc} 161 162 163 \begin{methoddesc}[LinearPDE]{getFunctionSpaceForEquation}{} 164 returns \FunctionSpace of the right hand side which is identical to \FunctionSpace of 165 the result of the PDE operator. 166 \end{methoddesc} 167 168 \begin{methoddesc}[LinearPDE]{getFunctionSpaceForSolution}{} 169 returns \FunctionSpace of the solution of the PDE hich is identical to \FunctionSpace of 170 the result of argument of the PDE operator. 171 \end{methoddesc} 172 173 \begin{methoddesc}[LinearPDE]{setDebugOn}{} 174 switches the debug mode to on. 175 \end{methoddesc} 176 177 \begin{methoddesc}[LinearPDE]{setDebugOff}{} 178 switches the debug mode to on. 179 \end{methoddesc} 180 181 \begin{methoddesc}[LinearPDE]{debug}{} 182 returns \True if the debug mode is switched on. Otherwise it return \False. 183 \end{methoddesc} 184 185 \begin{methoddesc}[LinearPDE]{setLumpingOn}{} 186 switches on lumping \index{lumping}. If lumping is switched on 187 the operator is 188 \end{methoddesc} 189 190 191 \begin{methoddesc}[LinearPDE]{setLumpingOff} 192 switches lumping off \index{lumping}. 193 \end{methoddesc} 194 195 \begin{methoddesc}[LinearPDE]{setLumping}{flag=\False} 196 switches on lumping if \var{flag} is \True. Otherwise lumping is swiched off. 197 \end{methoddesc} 198 199 \begin{methoddesc}[LinearPDE]{isUsingLumping}{} 200 returns \True if lumping is switched on. Otherwise \False is returned. 201 \end{methoddesc} 202 203 \begin{memberdesc}[LinearPDE]{DEFAULT_METHOD} 204 default method to be used to solve the PDE. An appropriate method should be 205 chosen by the used PDE solver library. 206 \end{memberdesc} 207 208 \begin{memberdesc}[LinearPDE]{DIRECT} 209 direct linear solver~\Ref{SAAD} 210 \end{memberdesc} 211 212 \begin{memberdesc}[LinearPDE]{CHOLEVSKY} 213 direct solver based on Cholevsky factorization (or similar), see~\Ref{SAAD}. The solver will require a symmetric PDE. 214 \end{memberdesc} 215 216 \begin{memberdesc}[LinearPDE]{PCG} 217 preconditioned conjugate gradient method, see~\Ref{WEISS}. The solver will require a symmetric PDE. 218 \end{memberdesc} 219 220 \begin{memberdesc}[LinearPDE]{GMRES} 221 the GMRES method, see~\Ref{WEISS}. Truncation and restart ar econtrolled by the parameters 222 \var{truncation} and \var{restart} of \method{getSolution}. 223 \end{memberdesc} 224 225 \begin{memberdesc}[LinearPDE]{PRES20} 226 the GMRES method with trunction after five residuals and 227 restart after 20 steps, see~\Ref{WEISS}. 228 \end{memberdesc} 229 230 \begin{memberdesc}[LinearPDE]{CR} 231 conjugate residual method, see~\Ref{WEISS}. 232 \end{memberdesc} 233 234 \begin{memberdesc}[LinearPDE]{CGS} 235 conjugate gradient squared method, see~\Ref{WEISS}. 236 \end{memberdesc} 237 238 \begin{memberdesc}[LinearPDE]{BICGSTAB} 239 stabilzed bi-conjugate gradients methods, see~\Ref{WEISS}. 240 \end{memberdesc} 241 242 \begin{memberdesc}[LinearPDE]{SSOR} 243 symmetric successive overrelaxtion method, see~\Ref{WEISS}. 244 \end{memberdesc} 245 246 \begin{methoddesc}[LinearPDE]{setSolverMethod}{solver=linearPDE.DEFAULT_METHOD} 247 sets the solver method to be used. It is pointed out that the PDE solver library 248 does not know the specified solver method but may choose a similar method. 249 \end{methoddesc} 250 251 \begin{methoddesc}[LinearPDE]{setTolerance}{tol=1.e-8} 252 resets the tolerance for solution. The actually meaning of tolerance is 253 depending on the underlying PDE library. In most cases, the tolerance 254 will only consider the error from solving the discerete problem but will 255 not consider any discretization error. 256 \end{methoddesc} 257 258 \begin{methoddesc}[LinearPDE]{getTolerance}{} 259 returns the current tolerance of the solution 260 \end{methoddesc} 261 262 \begin{methoddesc}[LinearPDE]{isSymmetric}{} 263 returns \True if the PDE has been indicated to be symmetric. 264 Otherwise \False is returned. 265 \end{methoddesc} 266 267 \begin{methoddesc}[LinearPDE]{setSymmetryOn}{} 268 indicates that the PDE is symmetric. 269 \end{methoddesc} 270 271 \begin{methoddesc}[LinearPDE]{setSymmetryOff}{} 272 indicates that the PDE is not symmetric. 273 \end{methoddesc} 274 275 \begin{methoddesc}[LinearPDE]{setSymmetryTo}{flag=\False} 276 indicates that the PDE is symmetric if \var{flag}=\True 277 and indicates a non-symmetric PDE is \var{flag}=\False. 278 \end{methoddesc} 279 280 \begin{methoddesc}[LinearPDE]{setReducedOrderOn}{} 281 switches on the reduction of polynomial order for the solution and 282 equation evaluation. 283 \end{methoddesc} 284 285 \begin{methoddesc}[LinearPDE]{setReducedOrderOff}{} 286 switches off the reduction of polynomial order for the solution and 287 equation evaluation. 288 \end{methoddesc} 289 290 \begin{methoddesc}[LinearPDE]{setReducedOrderTo}{flag=\False} 291 switches on the reduction of polynomial order for the solution and 292 equation evaluation if \var{flag}=\True. Otherwise 293 the order reduction is switched off. 294 \end{methoddesc} 295 296 \begin{methoddesc}[LinearPDE]{setReducedOrderForSolutionOn}{} 297 switches on reduction of polynomial order for the solution. 298 \end{methoddesc} 299 300 \begin{methoddesc}[LinearPDE]{setReducedOrderForSolutionOff}{} 301 switches off reduction of polynomial order for the solution. 302 \end{methoddesc} 303 304 \begin{methoddesc}[LinearPDE]{setReducedOrderForSolutionTo}{flag=\False} 305 switches on the reduction of polynomial order for the solution 306 if \var{flag}=\True. Otherwise 307 the order reduction is switched off. 308 \end{methoddesc} 309 310 \begin{methoddesc}[LinearPDE]{setReducedOrderForEquationOn}{} 311 switches on reduction of polynomial order for the equation evaluation. 312 \end{methoddesc} 313 314 \begin{methoddesc}[LinearPDE]{setReducedOrderForEquationOff}{} 315 switches off reduction of polynomial order for the equation evaluation. 316 \end{methoddesc} 317 318 \begin{methoddesc}[LinearPDE]{setReducedOrderForEquationTo}{flag=\False} 319 switches on the reduction of polynomial order for the equation 320 evaluation if \var{flag}=\True. Otherwise 321 the order reduction is switched off. 322 \end{methoddesc} 323 324 \begin{methoddesc}[LinearPDE]{getOperator}{} 325 returns the \Operator of the PDE. 326 \end{methoddesc} 327 328 \begin{methoddesc}[LinearPDE]{getRightHandSide}{ignoreConstraint=\False} 329 returns the right hand side of the PDE as a \Data object. If 330 \var{ignoreConstraint}=\True the constraints are not considered 331 when building up the right hand side. 332 \end{methoddesc} 333 334 \begin{methoddesc}[LinearPDE]{getSystem}{} 335 returns the \Operator and right hand side of the PDE. 336 \end{methoddesc} 337 338 \begin{methoddesc}[LinearPDE]{getSolution}{option1,option2,...,optionN} 339 returns (an approximation of) the solution of the PDE. \var{options1}, \var{options2} 340 $\ldots$ \var{optionsN} are options handed over to the underlying PDE solver library. 341 \end{methoddesc} 342 343 \begin{methoddesc}[LinearPDE]{getDomain}{} 344 returns the \Domain of the PDE. 345 \end{methoddesc} 346 347 \begin{methoddesc}[LinearPDE]{getDim}{} 348 returns the spatial dimension of the PDE. 349 \end{methoddesc} 350 351 \begin{methoddesc}[LinearPDE]{getNumEquations}{} 352 returns the number of equations. 353 \end{methoddesc} 354 355 \begin{methoddesc}[LinearPDE]{getNumSolutions}{} 356 returns the number of components of the solution. 357 \end{methoddesc} 358 359 \begin{methoddesc}[LinearPDE]{checkSymmetry}{verbose=\False} 360 returns \True if the PDE is symmetric and \False otherwise. 361 The method is very computational expensive and should only be 362 called for testing purposes. The symmetry flag is not altered. 363 If \var{verbose}=\True information about where symmetry is violated 364 are printed. 365 \end{methoddesc} 366 367 \begin{methoddesc}[LinearPDE]{getFlux}{u} 368 returns the flux $J\hackscore{ij}$ \index{flux} for given solution \var{u} 369 defined by \eqn{LINEARPDE.SYSTEM.5} and \eqn{LINEARPDE.SINGLE.5}, respectively. 370 \end{methoddesc} 371 372 \begin{methoddesc}[LinearPDE]{applyOperator}{u} 373 applies the PDE operator to \var{u} 374 \end{methoddesc} 375 376 \begin{methoddesc}[LinearPDE]{getResidual}{u} 377 returns the residual when insering \var{u} into the PDE 378 \end{methoddesc} 379 380 \section{\AdvectivePDE Class} 381 In cases of PDEs dominated by the advection terms $B$ and $C$ against the diffusion term $A$ 382 up-winding has been used. 383 The \AdvectivePDE class applies upwinding to the advective terms, see \Ref{SUPG}. 384 385 In the following we set 386 \begin{eqnarray}\label{LINEARPDE.UPWIND.Z} 387 Z\hackscore{j}=C\hackscore{j}-B\hackscore{j} 388 \mbox{ or } \\ 389 Z\hackscore{ikl}=C\hackscore{ikl}-B\hackscore{ilk} 390 \end{eqnarray} 391 To measure the dominance of the advective terms over the diffusive term $A$ the 392 Pelclet number is used \index{Pelclet number}. The are defined as 393 \begin{eqnarray}\label{LINEARPDE.Peclet.single} 394 P=\frac{h\|Z\hackscore{:}\|}{2\|A\hackscore{::}\|} 395 \end{eqnarray} 396 \begin{eqnarray}\label{LINEARPDE.Peclet.system} 397 P\hackscore{ik}=\frac{h\|Z\hackscore{i:k}\|}{2\|A\hackscore{i:k:}\|} 398 \end{eqnarray} 399 where $h$ is the local cell size and 400 \begin{eqnarray}\label{LINEARPDE.ADVECTIVE.1b} 401 \|Z\hackscore{:}\|^2=Z\hackscore{j}Z\hackscore{j} \\ 402 \|A\hackscore{::}\|^2=A\hackscore{jl}A\hackscore{jl} \\ 403 \|Z\hackscore{i:k}\|^2=\delta\hackscore{in} \delta\hackscore{km} Z\hackscore{njm}Z\hackscore{njm} \\ 404 \|A\hackscore{i:k:}\|^2=\delta\hackscore{in} \delta\hackscore{km} A\hackscore{njml}A\hackscore{njml} \; . 405 \end{eqnarray} 406 In the case that it is $\|A\hackscore{::}\|$ we set $P=0$ if $\|Z\hackscore{:}\|=0$ and 407 $P=\infinity$ if $\|Z\hackscore{:}\|=0$. Analogously for $P$ in the case of a systems of PDEs. 408 409 From the Pelclet number the stabilization parameters $\Xi$ and $\Xi$ are calculated: 410 \begin{eqnarray}\label{LINEARPDE.Peclet.2} 411 \Xi=\xi(P) \frac{h}{\|Z\hackscore{:}\|} \\ 412 \mbox{ or } \\ 413 \Xi\hackscore{ik}=\xi(P\hackscore{ik}) \frac{h}{\|Z\hackscore{i:k}\|} 414 \end{eqnarray} 415 where $\xi$ is a suitable function of the Peclet number. 416 In the case of a single PDE the coefficient are up-dated in the following way: 417 \begin{eqnarray}\label{LINEARPDE.ADVECTIVE.1} 418 A\hackscore{jl} \leftarrow A\hackscore{jl} + \Xi Z\hackscore{j} Z\hackscore{l} \\ 419 B\hackscore{j} \leftarrow B\hackscore{j} + \Xi C\hackscore{j} D \\ 420 C\hackscore{j} \leftarrow C\hackscore{j} + \Xi B\hackscore{j} D \\ 421 X\hackscore{j} \leftarrow X\hackscore{j} + \Xi Z\hackscore{j} Y \\ 422 \end{eqnarray} 423 Similar for the case of a systems of PDEs: 424 \begin{eqnarray}\label{LINEARPDE.ADVECTIVE.SYSTEM} 425 A\hackscore{ijkl} \leftarrow A\hackscore{ijl} + \delta\hackscore{pm} \Xi\hackscore{mi} Z\hackscore{pij} Z\hackscore{mkl} \\ 426 B\hackscore{ijk} \leftarrow B\hackscore{ijk} + \delta\hackscore{pm} \Xi\hackscore{mi} D\hackscore{pk} C\hackscore{mij} \\ 427 C\hackscore{ikl} \leftarrow C\hackscore{ikl} + \delta\hackscore{pm} \Xi\hackscore{mi} D\hackscore{pk} B\hackscore{mli} \\ 428 X\hackscore{ij} \leftarrow X\hackscore{ij} + \delta\hackscore{pm} \Xi\hackscore{mi} Y\hackscore{p} Z\hackscore{mij}\\ 429 \end{eqnarray} 430 Using upwinding in this form, introduces an additonal error which is proprtional to the cell size $h$ 431 but with the intension to stabilize the solution. 432 433 \begin{classdesc}{AdvectivePDE}{domain,numEquations=0,numSolutions=0,xi=AdvectivePDE.ELMAN_RAMAGE} 434 opens a linear, steady, second order PDE on the \Domain \var{domain}. \var{numEquations} 435 and \var{numSolutions} gives the number of equations and the number of solutiopn components. 436 If \var{numEquations} and \var{numSolutions} is non-positive, the number of equations 437 and the number solutions, respectively, stay undefined until a coefficient is 438 defined. \var{xi} defines a function which returns for any given Preclet number $P\ge 0$ the 439 $\xi$-value used to define the stabilization parameters $\Xi$ and $\Xi$. 440 \AdvectivePDE is derived from \LinearPDE. 441 \end{classdesc} 442 443 \begin{memberdesc}[AdvectivePDE]{SIMPLIFIED_BROOKS_HUGHES}{} 444 Predefined function to set a values for $\xi$ from a Preclet number $P$. 445 This function uses the method suggested in \Ref{SUPG1} 446 where $\xi(P)$ is given by 447 \begin{equation}\label{LINEARPDE.ADVECTIVE.1d} 448 \xi(P)=coth(P)-\frac{1}{P} \;. 449 \end{equation} 450 As the evaluation of $coth$ is expensive we are using the approximation: 451 The function $\xi$ is approximated by 452 \begin{equation}\label{LINEARPDE.ADVECTIVE.23} 453 \xi(P)= 454 \left\{ 455 \begin{array}{lc} 456 \frac{P}{6} & P<3 \\ 457 \frac{1}{2} & \mbox{otherwise} 458 \end{array} 459 \right. 460 \end{equation} 461 \end{memberdesc} 462 463 \begin{memberdesc}[AdvectivePDE]{ELMAN_RAMAGE}{} 464 Predefined function to set a values for $\xi$ from a Preclet number $P$. 465 This function uses the method suggested in \Ref{SUPG2} 466 where $\xi(P)$ is given by 467 \begin{equation}\label{LINEARPDE.ADVECTIVE.23b} 468 \xi(P)= 469 \left\{ 470 \begin{array}{lc} 471 0 & P<1 \\ 472 \frac{1}{2}(1-\frac{1}{P}) & \mbox{otherwise} 473 \end{array} 474 \right. 475 \end{equation} 476 \end{memberdesc} 477 478 479 \section{The \Poisson Class} 480 481 The \Poisson class provides an easy way to define and solve the Poisson 482 equation 483 \begin{equation}\label{POISSON.1} 484 -u\hackscore{,ii}=f\; . 485 \end{equation} 486 with homogeneous boundary conditions 487 \begin{equation}\label{POISSON.2} 488 n\hackscore{i}u\hackscore{,i}=0 489 \end{equation} 490 and homogeneous constraints 491 \begin{equation}\label{POISSON.3} 492 u=0 \mbox{ where } q>0 493 \end{equation} 494 $f$ has to be a \Scalar in the \Function and $q$ must be 495 a \Scalar in the \SolutionFS. 496 497 \begin{classdesc}{Poisson}{domain} 498 opens a Poisson equation on the \Domain domain. \Poisson is derived from \LinearPDE. 499 \end{classdesc} 500 \begin{methoddesc}[Poisson]{setValue}{f=escript.Data(),q=escript.Data()} 501 assigns new values to \var{f} and \var{q}. 502 \end{methoddesc}

## Properties

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