CASL / Futility

VERA Fortran Utilities
Other
44 stars 20 forks source link

Implement Non-linear Solver Class #169

Closed aarograh closed 5 years ago

aarograh commented 5 years ago

Adds a new NonLinearSolver module that implements a class for solving systems of equations. Currently Newton's method using native vector, matrix, and linear system objects is all the only supported functionality, but this can be extended to use other methods or TPLs.

This capability can be used as a simple root-finding procedure or it could be used to solve non-linear problems. The client code implements an extension of the NonLinearSolverInterface_Base object, which provides methods to evaluate a function and evaluate (or approximate) its Jacobian. This function and its Jacobian can be arbitrary so long as they follow the defined interface.