Tools#

felupe.newtonrhapson(x0=None, fun=<function fun>, jac=<function jac>, solve=<function solve>, maxiter=16, update=<function update>, check=<function check>, args=(), kwargs={}, kwargs_solve=None, kwargs_check=None, tol=1.4901161193847656e-08, umat=None, items=None, dof1=None, dof0=None, ext0=None, solver=<function spsolve>, export_jac=False, verbose=True, timing=True)[source]#

(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]#
felupe.topoints(values, region, sym=True, mode='tensor')[source]#
felupe.project(values, region, average=True)[source]#

Projection (and optionally averaging) of scalar or vectorial values at quadrature points to mesh-points.