anastruct.fem.system_components.solver

Functions

stiffness_adaptation(→ numpy.ndarray)

Non linear solver for the nodes by adapting the stiffness of the elements (nodes).

det_linear_buckling(→ float)

Determine linear buckling by solving the generalized eigenvalue problem (k -λkg)x = 0.

geometrically_non_linear(→ Optional[float])

Module Contents

anastruct.fem.system_components.solver.stiffness_adaptation(system: anastruct.fem.system.SystemElements, verbosity: int, max_iter: int) numpy.ndarray[source]

Non linear solver for the nodes by adapting the stiffness of the elements (nodes).

Returns:

Vector with displacements.

anastruct.fem.system_components.solver.det_linear_buckling(system: anastruct.fem.system.SystemElements) float[source]

Determine linear buckling by solving the generalized eigenvalue problem (k -λkg)x = 0.

geometrical stiffness matrix at buckling point: Kg = f(N_max) 1st order forces: N0 Nmax = λN0 Kg(Nmax) = λ(Kg(N0) = λKg0

2nd order analysis is solved by: (K + λKg0)U = F

We are interested in the point that there is nog additional load F and displacement U is possible. (K + λKg0)ΔU = ΔF = 0 (K + λKg0) = 0

Is the generalized eigenvalue problem: (A - λB)x = 0

Returns:

The factor the loads can be increased until the structure fails due to buckling.

anastruct.fem.system_components.solver.geometrically_non_linear(system: anastruct.fem.system.SystemElements, verbosity: int = 0, return_buckling_factor: bool = True, discretize_kwargs: dict | None = None) float | None[source]
Parameters:
  • system – (SystemElements)

  • verbosity – (int)

  • return_buckling_factor – (bool)

  • discretize_kwargs – (dict) Containing the kwargs passed to the discretize function

  • discretize – (function) discretize function.

Returns:

buckling_factor: (flt) The factor the loads can be increased until the structure fails due to buckling.