The Open FUSION Toolkit 1.0.0-8905cc5
Modeling tools for plasma and fusion research and engineering
|
Native Newton solver.
Non-linear system solver based on Newton iteration for the system, \( M_j(x_i) = y_j \), where the Jacobian is defined as \( J_{ij} = \frac{\partial M_j}{\partial x_i} \). The non-linear update then takes the form \( x^{n+1} = x^n - J^{-1}(x^n) \cdot M(x^n) \).
Public Member Functions | |
procedure | apply (self, u, g) |
Solve non-linear system. | |
procedure | delete (self) |
Clean-up internal storage. | |
Public Attributes | |
class(oft_matrix), pointer | a => NULL() |
Metric matrix. | |
real(r8) | atol = 1.d-14 |
Absolute convergence tolerance \( |res| < atol \). | |
logical | backtrack = .TRUE. |
Perform backtracking? | |
class(oft_solver_bc), pointer | bc => NULL() |
Boundary condition. | |
integer(i4) | cits = 0 |
Number of iteractions to convergence. | |
class(oft_vector), pointer | du => NULL() |
Storage for non-linear corrections. | |
integer(i4) | its = -1 |
Maximum iteration count. | |
class(oft_solver), pointer | j_inv => NULL() |
Jacobian inverse solver. | |
integer(i4) | lits = 0 |
Number of linear solver iteractions. | |
integer(i4) | nlits = 0 |
Number of non-linear steps to convergence. | |
real(r8) | rtol = 1.d-14 |
Relative convergence tolerance \( |res|/|res_0| < rtol \). | |
integer(i4) | up_freq = 1 |
Frequency of jacobian updates. | |
Static Public Attributes | |
procedure(oft_update_jacobian), pointer, nopass | j_update => NULL() |
Jacobian update subroutine. | |
procedure apply | ( | class(oft_nksolver), intent(inout) | self, |
class(oft_vector), intent(inout) | u, | ||
class(oft_vector), intent(inout) | g | ||
) |
Solve non-linear system.
[in,out] | self | Solver object |
[in,out] | u | Guess (input), Solution (output) |
[in,out] | g | RHS (input), Residual (output) |
procedure delete | ( | class(oft_nksolver), intent(inout) | self | ) |
Clean-up internal storage.
[in,out] | self | Solver object |
class(oft_matrix), pointer a => NULL() |
Metric matrix.
real(r8) atol = 1.d-14 |
Absolute convergence tolerance \( |res| < atol \).
logical backtrack = .TRUE. |
Perform backtracking?
class(oft_solver_bc), pointer bc => NULL() |
Boundary condition.
integer(i4) cits = 0 |
Number of iteractions to convergence.
class(oft_vector), pointer du => NULL() |
Storage for non-linear corrections.
integer(i4) its = -1 |
Maximum iteration count.
class(oft_solver), pointer j_inv => NULL() |
Jacobian inverse solver.
|
static |
Jacobian update subroutine.
integer(i4) lits = 0 |
Number of linear solver iteractions.
integer(i4) nlits = 0 |
Number of non-linear steps to convergence.
real(r8) rtol = 1.d-14 |
Relative convergence tolerance \( |res|/|res_0| < rtol \).
integer(i4) up_freq = 1 |
Frequency of jacobian updates.