The Open FUSION Toolkit 1.0.0-8905cc5
Modeling tools for plasma and fusion research and engineering
|
This page outlines the solvers that are currently available through Open FUSION Toolkit solver objects. Additional solvers may be used through backend implementations, but only internally controlled and supported solvers are outlined here.
Solver interfaces have been designed to allow mixing of native and PETSc methods. Most native solvers are written with generic API calls for linear algebra and as a result can be used when either backend is used for vectors and matrices. There are many cases however where the PETSc implementation of a particular solver/preconditioner is more optimal for its matrices and vectors. Additionally, there are some methods, ex. direct methods, which are only available through PETSc. The oft_petsc_pre_solver class is provided to allow using PETSc solvers as preconditioners for native solvers. This class acts as a wrapper around the PETSc solver, allowing it to be called using the standard solver calling sequence.
Jacobi iterations solves a system of linear equations by iterating on the method
\[ x^{n+1} = x^n + D^{-1}(A*x^n - y) \]
where \( D \) is a matrix of only the diagonal elements of \( A \). Functionality is provided through either a general native interface oft_diag_scale and an optimized PETSc interface oft_petsc_diagprecond.
XML Spec: <pre type="jacobi">
This method is supported through both the native and PETSc backends through oft_lusolver and oft_petsc_direct_solver for a full solver or oft_petsc_luprecond as a PETSc preconditioner.
XML Spec: <solver type="lu">
Group | Description | Type | List |
---|---|---|---|
package | Solver package to use {super, superd, mumps} | str | No |
PETSc only options
Group | Description | Type | List |
---|---|---|---|
type | Inverse type {lu, ilu} | str | No |
This method is supported through both the native and PETSc backends through oft_bjprecond and oft_petsc_asprecond.
XML Spec: <pre type="block_jacobi">
Group | Description | Type | List |
---|---|---|---|
nlocal | Number of local blocks (-1 for field based) | int | Yes |
groups | Group index for each field in multi-field vector [n] | int | Yes |
boverlap | Overlap boundary rows (native only) | bool | false |
This method is currently only supported with the PETSc backend through oft_petsc_asprecond as a preconditioner.
XML Spec: <pre type="add_schwarz">
Group | Description | Type | List |
---|---|---|---|
nlocal | Number of local blocks (-1 for field based) | int | Yes |
overlap | Overlap size | int | Yes |
This method is provided through both the native and PETSc backends through oft_cg_solver and oft_petsc_cg_solver.
XML Spec: <solver type="cg">
Group | Description | Type | List |
---|---|---|---|
atol | Absolute convergence tolerance | real | Yes |
rtol | Relative convergence tolerance | real | Yes |
its | Iteration limit | int | Yes |
This method is provided through both the native and PETSc backends through oft_gmres_solver and oft_petsc_gmres_solver.
XML Spec: <solver type="gmres">
Group | Description | Type | List |
---|---|---|---|
atol | Absolute convergence tolerance | real | Yes |
rtol | Relative convergence tolerance | real | Yes |
its | Iteration limit | int | Yes |
nrit | Restart size | int | Yes |