Tools#
- felupe.newtonrhapson(x0=None, fun=<function fun>, jac=<function jac>, solve=<function solve>, maxiter=16, update=<function update>, check=<function check>, args=(), kwargs={}, tol=1.4901161193847656e-08, items=None, dof1=None, dof0=None, ext0=None, solver=<function spsolve>, verbose=True)[source]#
General-purpose Newton-Rhapson algorithm
(Nonlinear) equilibrium equations f, as a function f(x) of the unknowns x, are solved by linearization of f at given unknowns x0.
f(x0) = 0 (1)
f(x0 + dx) = f(x0) + (df/dx)(x0) dx (= 0) (2) (df/dx)(x0) dx = -f(x0)
dx = solve(df/dx(x0), -f(x0)) (3)
x = x0 + dx (4)
Repeated evaluations of Eq.(3) and Eq.(4) lead to an incrementally updated solution of x which is shown in equation (4). Herein xn refer to the inital unknowns whereas x to the updated unknowns (the subscript n+1 is dropped for readability).
dx = solve(df/dx(xn), -f(xn)) (5)
x = xn + dx (6)
Eq.(5) and Eq.(6) are repeated until check(dx, x, f) returns True.
- felupe.save(region, fields, r=None, gradient=None, converged=True, filename='result.vtk', cell_data=None, point_data=None)[source]#