|
The Open FUSION Toolkit 1.0.0-beta6
Modeling tools for plasma and fusion research and engineering
|
PETSc multi-grid preconditioner.
Use PETSc multi-grid framework for preconditioning. V and W cycle types are supported. Galerkin construction of sub-level matrices is also available.

Public Member Functions | |
| procedure | apply (self, u, g) |
| Solve system. | |
| procedure(solver_apply), deferred | apply (self, u, g) |
| Solve system. | |
| procedure | check_thread (self) |
| Check thread safety. | |
| procedure | delete (self) |
| Destory wrapper solver. | |
| procedure(solver_delete), deferred | delete (self) |
| Clean-up internal storage. | |
| procedure | setup (self, pc, dist) |
| Setup preconditioner. | |
| procedure | setup (self, pc, dist) |
| Setup preconditioner. | |
| procedure | setup_from_xml (self, solver_node, level) |
| Setup solver from XML node. | |
| procedure | update (self, new_pattern) |
| Update preconditioner with new settings/operators. | |
| procedure | update (self, new_pattern) |
| Update solver with new settings/operators. | |
| procedure | view (self) |
| Print solver information. | |
Public Attributes | |
| class(oft_matrix), pointer | a => NULL() |
| Matrix to be inverted. | |
| real(r8) | atol = 1.d-14 |
| Absolute convergence tolerance \( |res| < atol \). | |
| class(oft_solver_bc), pointer | bc => NULL() |
| Boundary condition. | |
| integer(i4) | cits = 0 |
| Number of iteractions to convergence. | |
| character(len=1) | cycle_type = "V" |
| MG cycle type. | |
| real(r8), dimension(:), pointer | df => NULL() |
| Damping factors. | |
| logical | direct_base = .TRUE. |
| Use direct solver for base level. | |
| logical | full_residual = .TRUE. |
| Output true residual on exit. | |
| logical | galerkin = .FALSE. |
| Use Galerkin method to construct operator matrices. | |
| type(oft_matrix_ptr), dimension(:), pointer | i => NULL() |
| Interpolation matrices. | |
| logical | initialized = .FALSE. |
| Solver has been constructed. | |
| integer(i4) | itplot =10 |
| Output frequency for iterative solvers when pm=.TRUE. | |
| integer(i4) | its = -1 |
| Maximum iteration count. | |
| type(oft_matrix_ptr), dimension(:), pointer | mats => NULL() |
| Operator matrices. | |
| integer(i4) | nlevels = 0 |
| Number of levels. | |
| integer(i4), dimension(:), pointer | nu => NULL() |
| Number of smoother applications. | |
| logical | pm = .FALSE. |
| Performance monitor override. | |
| class(oft_solver), pointer | pre => NULL() |
| Preconditioner. | |
| type(tpc) | pre_obj |
| PETSc preconditioner object. | |
| real(r8) | rtol = 1.d-14 |
| Relative convergence tolerance \( |res|/|res_0| < rtol \). | |
| character(len=8) | smooth_type = "jacobi" |
| Smoother type. | |
| type(tksp) | solver |
| PETSc solver object. | |
|
inherited |
Solve system.
| [in,out] | self | Solver object |
| [in,out] | u | Guess (input), Solution (output) |
| [in,out] | g | RHS (input), Residual (output) |
|
pure virtualinherited |
Solve system.
| [in,out] | self | Solver object |
| [in,out] | u | Guess/Solution field |
| [in,out] | g | RHS/Residual field |
|
inherited |
Check thread safety.
| [in,out] | self | Solver object |
|
inherited |
Destory wrapper solver.
| [in,out] | self | Solver object |
|
pure virtualinherited |
Clean-up internal storage.
| [in,out] | self | Solver object |
|
inherited |
Setup preconditioner.
| [in,out] | self | Solver object |
| [in,out] | pc | PETSc PC object |
| [in] | dist | Flag for local vs distributed solve? |
| procedure setup | ( | class(oft_petsc_mgprecond), intent(inout) | self, |
| type(tpc), intent(inout) | pc, | ||
| logical, intent(in) | dist | ||
| ) |
Setup preconditioner.
| [in,out] | self | Solver object |
| [in,out] | pc | PETSc PC object |
| [in] | dist | Flag for local vs distributed solve? |
|
inherited |
Setup solver from XML node.
| [in,out] | self | Solver object |
| [in] | solver_node | XML element containing solver definition |
| [in] | level | Level in MG hierarchy (optional) |
|
inherited |
Update preconditioner with new settings/operators.
| [in,out] | self | Solver object |
| [in] | new_pattern | Update matrix pattern (optional) |
|
inherited |
Update solver with new settings/operators.
| [in,out] | self | Solver object |
| [in] | new_pattern | Update matrix non-zero pattern? (optional) |
|
inherited |
Print solver information.
| [in,out] | self | Solver object |
|
inherited |
Matrix to be inverted.
|
inherited |
Absolute convergence tolerance \( |res| < atol \).
|
inherited |
Boundary condition.
|
inherited |
Number of iteractions to convergence.
| character(len=1) cycle_type = "V" |
MG cycle type.
| real(r8), dimension(:), pointer df => NULL() |
Damping factors.
| logical direct_base = .TRUE. |
Use direct solver for base level.
|
inherited |
Output true residual on exit.
| logical galerkin = .FALSE. |
Use Galerkin method to construct operator matrices.
| type(oft_matrix_ptr), dimension(:), pointer i => NULL() |
Interpolation matrices.
|
inherited |
Solver has been constructed.
|
inherited |
Output frequency for iterative solvers when pm=.TRUE.
|
inherited |
Maximum iteration count.
| type(oft_matrix_ptr), dimension(:), pointer mats => NULL() |
Operator matrices.
| integer(i4) nlevels = 0 |
Number of levels.
| integer(i4), dimension(:), pointer nu => NULL() |
Number of smoother applications.
|
inherited |
Performance monitor override.
|
inherited |
Preconditioner.
|
inherited |
PETSc preconditioner object.
|
inherited |
Relative convergence tolerance \( |res|/|res_0| < rtol \).
| character(len=8) smooth_type = "jacobi" |
Smoother type.
|
inherited |
PETSc solver object.