Second-Order Rigidity¶
This module provides algorithms related to second order rigidity of frameworks.
- pyrigi.framework._rigidity.second_order.is_prestress_stable(framework, numerical=False, tolerance=1e-09, inf_flexes=None, stresses=None)[source]¶
Return whether the framework is prestress stable.
See also
is_second_order_rigid().Definitions
- Parameters:
framework (
FrameworkBase)numerical (
bool) – IfTrue, numerical infinitesimal flexes and stresses are used in the check for prestress stability. In case thatnumerical=False, this function only properly works for symbolic coordinates.tolerance (
float) – Numerical tolerance used for the check that something is an approximate zero.inf_flexes (
Sequence[InfFlex]) – Precomputed infinitesimal flexes and equilibrium stresses can be provided to avoid recomputation. If not provided, they are computed here.stresses (
Sequence[Stress]) – Precomputed infinitesimal flexes and equilibrium stresses can be provided to avoid recomputation. If not provided, they are computed here.
- Return type:
Examples
>>> from pyrigi import frameworkDB as fws >>> F = fws.Frustum(3) >>> is_prestress_stable(F) True
- pyrigi.framework._rigidity.second_order.is_second_order_rigid(framework, numerical=False, tolerance=1e-09, inf_flexes=None, stresses=None)[source]¶
Return whether the framework is second-order rigid.
Checking second-order-rigidity for a general framework is computationally hard. If there is only one stress or only one infinitesimal flex, second-order rigidity is identical to prestress stability, so we can apply
is_prestress_stable(). See also Theorem 33.Definitions
- Parameters:
framework (
FrameworkBase)numerical (
bool) – IfTrue, numerical infinitesimal flexes and stresses are used in the check for prestress stability. In case thatnumerical=False, this function only properly works for symbolic coordinates.tolerance (
float) – Numerical tolerance used for the check that something is an approximate zero.inf_flexes (
Sequence[InfFlex]) – Precomputed infinitesimal flexes and equilibrium stresses can be provided to avoid recomputation. If not provided, they are computed here.stresses (
Sequence[Stress]) – Precomputed infinitesimal flexes and equilibrium stresses can be provided to avoid recomputation. If not provided, they are computed here.
- Return type:
Examples
>>> from pyrigi import frameworkDB as fws >>> F = fws.Frustum(3) >>> is_second_order_rigid(F) True