| Line | |
|---|
| 1 |
|
|---|
| 2 | namespace Eigen {
|
|---|
| 3 |
|
|---|
| 4 | /**
|
|---|
| 5 |
|
|---|
| 6 | \eigenManualPage MatrixfreeSolverExample Matrix-free solvers
|
|---|
| 7 |
|
|---|
| 8 | Iterative solvers such as ConjugateGradient and BiCGSTAB can be used in a matrix free context. To this end, user must provide a wrapper class inheriting EigenBase<> and implementing the following methods:
|
|---|
| 9 | - Index rows() and Index cols(): returns number of rows and columns respectively
|
|---|
| 10 | - operator* with and Eigen dense column vector
|
|---|
| 11 | - resize(rows,cols): needed for source compatibility (can stay empty)
|
|---|
| 12 |
|
|---|
| 13 | Eigen::internal::traits<> must also be specialized for the wrapper type.
|
|---|
| 14 |
|
|---|
| 15 | For efficiency purpose, one might also want to provide a custom preconditioner. Here is an example using ConjugateGradient and implementing also a custom Jacobi preconditioner:
|
|---|
| 16 | \include matrixfree_cg.cpp
|
|---|
| 17 | Output: \verbinclude matrixfree_cg.out
|
|---|
| 18 |
|
|---|
| 19 | */
|
|---|
| 20 |
|
|---|
| 21 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.