162 |
\end{methoddesc} |
\end{methoddesc} |
163 |
|
|
164 |
\begin{methoddesc}[LinearPDE]{isUsingLumping}{} |
\begin{methoddesc}[LinearPDE]{isUsingLumping}{} |
165 |
returns \True if lumping is switched on. Otherwise \False is returned. |
returns \True if \LUMPING is set as the solver for the system of lienar equations. |
166 |
|
Otherwise \False is returned. |
167 |
\end{methoddesc} |
\end{methoddesc} |
168 |
|
|
169 |
\begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\options{, preconditioner=LinearPDE.DEFAULT}) |
\begin{methoddesc}[LinearPDE]{setSolverMethod}{\optional{solver=LinearPDE.DEFAULT}\optional{, preconditioner=LinearPDE.DEFAULT}} |
170 |
sets the solver method and preconditioner to be used. It is pointed out that a PDE solver library |
sets the solver method and preconditioner to be used. It is pointed out that a PDE solver library |
171 |
may not know the specified solver method but may choose a similar method and preconditioner. |
may not know the specified solver method but may choose a similar method and preconditioner. |
172 |
\end{methoddesc} |
\end{methoddesc} |
173 |
|
|
174 |
|
\begin{methoddesc}[LinearPDE]{getSolverMethodName}{} |
175 |
|
returns the name of the solver method and preconditioner which is currently been used. |
176 |
|
\end{methoddesc} |
177 |
|
|
178 |
|
\begin{methoddesc}[LinearPDE]{getSolverMethod}{} |
179 |
|
returns the solver method and preconditioner which is currently been used. |
180 |
|
\end{methoddesc} |
181 |
|
|
182 |
|
\begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=LinearPDE.DEFAULT}} |
183 |
|
Set the solver package to be used by PDE library to solve the linear systems of equations. The |
184 |
|
specified package may not be supported by the PDE solver library. In this case, dependng on |
185 |
|
the PDE solver, the default solver is used or an exeption is thrown. |
186 |
|
If \var{package} is not specified, the default package of the PDE solver library is used. |
187 |
|
\end{methoddesc} |
188 |
|
|
189 |
|
\begin{methoddesc}[LinearPDE]{getSolverPackage}{} |
190 |
|
returns the linear solver package currently by the PDE solver library |
191 |
|
\end{methoddesc} |
192 |
|
|
193 |
|
|
194 |
\begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}: |
\begin{methoddesc}[LinearPDE]{setTolerance}{\optional{tol=1.e-8}}: |
195 |
resets the tolerance for solution. The actually meaning of tolerance is |
resets the tolerance for solution. The actually meaning of tolerance is |
196 |
depending on the underlying PDE library. In most cases, the tolerance |
depending on the underlying PDE library. In most cases, the tolerance |
231 |
defined by \eqn{LINEARPDE.SYSTEM.5} and \eqn{LINEARPDE.SINGLE.5}, respectively. |
defined by \eqn{LINEARPDE.SYSTEM.5} and \eqn{LINEARPDE.SINGLE.5}, respectively. |
232 |
\end{methoddesc} |
\end{methoddesc} |
233 |
|
|
|
\begin{methoddesc}[LinearPDE]{getSolverMethodName}{} |
|
|
\begin{methoddesc}[LinearPDE]{getSolverMethod}{} |
|
|
\begin{methoddesc}[LinearPDE]{setSolverPackage}{\optional{package=None}} |
|
|
\begin{methoddesc}[LinearPDE]{getSolverPackage}{} |
|
234 |
|
|
235 |
\begin{methoddesc}[LinearPDE]{isSymmetric}{} |
\begin{methoddesc}[LinearPDE]{isSymmetric}{} |
236 |
returns \True if the PDE has been indicated to be symmetric. |
returns \True if the PDE has been indicated to be symmetric. |
279 |
\optional{, truncation=-1} |
\optional{, truncation=-1} |
280 |
\optional{, restart=-1} |
\optional{, restart=-1} |
281 |
} |
} |
282 |
returns (an approximation of) the solution of the PDE. If \code{verbose=True} some information during the solution process pronted. \var{reordering} selects a reordering methods that is applied before or during the solution process. |
returns (an approximation of) the solution of the PDE. If \code{verbose=\True} some information during the solution process printed. |
283 |
\var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerence. |
\var{reordering} selects a reordering methods that is applied before or during the solution process |
284 |
|
(=\NOREORDERING ,\MINIMUMFILLIN ,\NESTEDDESCTION). |
285 |
|
\var{iter_max} specifies the maximum number of iteration steps that are allowed to reach the specified tolerance. |
286 |
\var{drop_tolerance} specifies a relative tolerance for small elements to be dropped when building a preconditioner |
\var{drop_tolerance} specifies a relative tolerance for small elements to be dropped when building a preconditioner |
287 |
(eg. in ILUT \Ref{SAAD}). \var{drop_storage} limits the extra storage allowed when building a preconditioner |
(eg. in \ILUT). \var{drop_storage} limits the extra storage allowed when building a preconditioner |
288 |
(eg. in ILUT \Ref{SAAD}). The extra storage is given relative to the size of the siffness matrix, eg. |
(eg. in \ILUT). The extra storage is given relative to the size of the stiffness matrix, eg. |
289 |
\var{drop_storage=1.2} will allow the preconditioner to use the $1.2$ fold storage space than used |
\var{drop_storage=1.2} will allow the preconditioner to use the $1.2$ fold storage space than used |
290 |
for the stiffness matrix. \var{truncation} defines the truncation |
for the stiffness matrix. \var{truncation} defines the truncation. |
291 |
\end{methoddesc} |
\end{methoddesc} |
292 |
|
|
|
================== |
|
293 |
\begin{memberdesc}[LinearPDE]{DEFAULT} |
\begin{memberdesc}[LinearPDE]{DEFAULT} |
294 |
default method, preconditioner or package to be used to solve the PDE. An appropriate method should be |
default method, preconditioner or package to be used to solve the PDE. An appropriate method should be |
295 |
chosen by the used PDE solver library. |
chosen by the used PDE solver library. |
296 |
\end{memberdesc} |
\end{memberdesc} |
297 |
|
|
298 |
\begin{memberdesc}[LinearPDE]{SCSL} |
\begin{memberdesc}[LinearPDE]{SCSL} |
299 |
|
the SCSL library by SGI,~\Ref{SCSL}\footnote{The SCSL library will only be available on SGI systems} |
300 |
\end{memberdesc} |
\end{memberdesc} |
301 |
|
|
302 |
\begin{memberdesc}[LinearPDE]{MKL} |
\begin{memberdesc}[LinearPDE]{MKL} |
303 |
|
the MKL library by Intel,~\Ref{MKL}\footnote{The MKL library will only be available when the intel compilation environment is used.}. |
304 |
\end{memberdesc} |
\end{memberdesc} |
305 |
|
|
306 |
\begin{memberdesc}[LinearPDE]{UMFPACK} |
\begin{memberdesc}[LinearPDE]{UMFPACK} |
307 |
|
the UMFPACK,~\Ref{UMFPACK}. Remark: UMFPACK is not parallelized. |
308 |
\end{memberdesc} |
\end{memberdesc} |
309 |
|
|
310 |
\begin{memberdesc}[LinearPDE]{PASO} |
\begin{memberdesc}[LinearPDE]{PASO} |
311 |
|
the solver library of \finley, see \Sec{CHAPTER ON FINLEY}. |
312 |
\end{memberdesc} |
\end{memberdesc} |
313 |
|
|
314 |
\begin{memberdesc}[LinearPDE]{ITERATIVE} |
\begin{memberdesc}[LinearPDE]{ITERATIVE} |
315 |
|
the default iterative method and preconditioner. The actually used method depends on the |
316 |
|
PDE solver library and the solver package been choosen. Typically, \PCG is used for symmetric PDEs |
317 |
|
and \BiCGStab otherwise, both with \JACOBI preconditioner. |
318 |
\end{memberdesc} |
\end{memberdesc} |
319 |
|
|
320 |
\begin{memberdesc}[LinearPDE]{DIRECT} |
\begin{memberdesc}[LinearPDE]{DIRECT} |
321 |
direct linear solver~\Ref{SAAD} |
the default direct linear solver. |
322 |
\end{memberdesc} |
\end{memberdesc} |
323 |
|
|
324 |
\begin{memberdesc}[LinearPDE]{CHOLEVSKY} |
\begin{memberdesc}[LinearPDE]{CHOLEVSKY} |
325 |
direct solver based on Cholevsky factorization (or similar), see~\Ref{SAAD}. The solver will require a symmetric PDE. |
direct solver based on Cholevsky factorization (or similar), see~\Ref{Saad}. The solver will require a symmetric PDE. |
326 |
\end{memberdesc} |
\end{memberdesc} |
327 |
|
|
328 |
\begin{memberdesc}[LinearPDE]{PCG} |
\begin{memberdesc}[LinearPDE]{PCG} |
329 |
preconditioned conjugate gradient method, see~\Ref{WEISS}. The solver will require a symmetric PDE. |
preconditioned conjugate gradient method, see~\Ref{WEISS}\index{linear solver!PCG}\index{PCG}. The solver will require a symmetric PDE. |
330 |
\end{memberdesc} |
\end{memberdesc} |
331 |
|
|
332 |
\begin{memberdesc}[LinearPDE]{GMRES} |
\begin{memberdesc}[LinearPDE]{GMRES} |
333 |
the GMRES method, see~\Ref{WEISS}. Truncation and restart ar econtrolled by the parameters |
the GMRES method, see~\Ref{WEISS}\index{linear solver!GMRES}\index{GMRES}. Truncation and restart are controlled by the parameters |
334 |
\var{truncation} and \var{restart} of \method{getSolution}. |
\var{truncation} and \var{restart} of \method{getSolution}. |
335 |
\end{memberdesc} |
\end{memberdesc} |
336 |
|
|
337 |
\begin{memberdesc}[LinearPDE]{LUMPING} |
\begin{memberdesc}[LinearPDE]{LUMPING} |
338 |
conjugate residual method, see~\Ref{WEISS}. |
uses lumping to solve the system of linear equations~\index{linear solver!lumping}\index{lumping}. This solver technique |
339 |
|
condenses the stiffness matrix to a diagonal matrix so the solution of the linear systems becomes very cheap. It can be used when |
340 |
|
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 |
341 |
|
but is expect to converge to zero when the mesh gets finer. |
342 |
|
Lumping does not use the linear system solver library. |
343 |
\end{memberdesc} |
\end{memberdesc} |
344 |
|
|
345 |
\begin{memberdesc}[LinearPDE]{PRES20} |
\begin{memberdesc}[LinearPDE]{PRES20} |
346 |
the GMRES method with trunction after five residuals and |
the GMRES method with truncation after five residuals and |
347 |
restart after 20 steps, see~\Ref{WEISS}. |
restart after 20 steps, see~\Ref{WEISS}. |
348 |
|
\end{memberdesc}[LinearPDE]{CR} |
|
\begin{memberdesc}[LinearPDE]{CR} |
|
349 |
|
|
350 |
\begin{memberdesc}[LinearPDE]{CGS} |
\begin{memberdesc}[LinearPDE]{CGS} |
351 |
conjugate gradient squared method, see~\Ref{WEISS}. |
conjugate gradient squared method, see~\Ref{WEISS}. |
352 |
\end{memberdesc} |
\end{memberdesc} |
353 |
|
|
354 |
\begin{memberdesc}[LinearPDE]{BICGSTAB} |
\begin{memberdesc}[LinearPDE]{BICGSTAB} |
355 |
stabilzed bi-conjugate gradients methods, see~\Ref{WEISS}. |
stabilized bi-conjugate gradients methods, see~\Ref{WEISS}. |
356 |
\end{memberdesc} |
\end{memberdesc} |
357 |
|
|
358 |
\begin{memberdesc}[LinearPDE]{SSOR} |
\begin{memberdesc}[LinearPDE]{SSOR} |
359 |
symmetric successive overrelaxtion method, see~\Ref{WEISS}. |
symmetric successive over-relaxation method, see~\Ref{WEISS}. Typically used as preconditioner but some linear solver libraries support |
360 |
|
this as a solver. |
361 |
\end{memberdesc} |
\end{memberdesc} |
362 |
\begin{memberdesc}[LinearPDE]{ILU0} |
\begin{memberdesc}[LinearPDE]{ILU0} |
363 |
|
the incomplete LU factorization preconditioner with no fill-in, see~\Ref{Saad}. |
364 |
|
\end{memberdesc} |
365 |
|
|
366 |
\begin{memberdesc}[LinearPDE]{ILUT} |
\begin{memberdesc}[LinearPDE]{ILUT} |
367 |
\begin{memberdesc}[LinearPDE]{JACOBI} |
the incomplete LU factorization preconditioner with fill-in, see~\Ref{Saad}. During the LU-factorization element with |
368 |
\begin{memberdesc}[LinearPDE]{AMG} |
relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the |
369 |
\begin{memberdesc}[LinearPDE]{RILU} |
\var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the |
370 |
|
\method{getSolution} call. |
371 |
|
\end{memberdesc} |
372 |
|
|
373 |
|
\begin{memberdesc}[LinearPDE]{JACOBI} |
374 |
|
the Jacobi preconditioner, see~\Ref{Saad}. |
375 |
|
\end{memberdesc} |
376 |
|
|
377 |
|
\begin{memberdesc}[LinearPDE]{AMG} |
378 |
|
the algebraic--multi grid method, see~\Ref{AMG}. This method can be used as linear solver method but is more robust when used |
379 |
|
in a preconditioner. |
380 |
|
\end{memberdesc} |
381 |
|
|
382 |
|
\begin{memberdesc}[LinearPDE]{RILU} |
383 |
|
recursive incomplete LU factorization preconditioner, see~\Ref{RILU}. This method is similar to \ILUT but uses smoothing |
384 |
|
between levels. During the LU-factorization element with |
385 |
|
relative size less then \var{drop_tolerance} are dropped. Moreover, the size of the LU-factorization is restricted to the |
386 |
|
\var{drop_storage}-fold of the stiffness matrix. \var{drop_tolerance} and \var{drop_storage} are both set in the |
387 |
|
\method{getSolution} call. |
388 |
|
\end{memberdesc} |
389 |
|
|
390 |
\begin{memberdesc}[LinearPDE]{NO_REORDERING} |
\begin{memberdesc}[LinearPDE]{NO_REORDERING} |
391 |
\begin{memberdesc}[LinearPDE]{MINIMUM_FILL_IN} |
no ordering is used during factorization. |
392 |
\begin{memberdesc}[LinearPDE]{NESTED_DISSECTION} |
\end{memberdesc} |
|
|
|
|
|
|
|
|
|
393 |
|
|
394 |
\begin{memberdesc}[LinearPDE]{BICGSTAB} |
\begin{memberdesc}[LinearPDE]{MINIMUM_FILL_IN} |
395 |
|
applies reordering before factorization using a fill-in minimization strategy. You have to check with the particular solver library or |
396 |
|
linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in. |
397 |
|
\end{memberdesc} |
398 |
|
|
399 |
|
\begin{memberdesc}[LinearPDE]{NESTED_DISSECTION} |
400 |
|
applies reordering before factorization using a nested dissection strategy. You have to check with the particular solver library or |
401 |
|
linear solver package if this is supported. In any case, it is advisable to apply reordering on the mesh to minimize fill-in. |
402 |
|
\end{memberdesc} |
403 |
|
|
404 |
\section{The \Poisson Class} |
\section{The \Poisson Class} |
405 |
The \Poisson class provides an easy way to define and solve the Poisson |
The \Poisson class provides an easy way to define and solve the Poisson |