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

Prestress stability

Parameters:
  • framework (FrameworkBase)

  • numerical (bool) – If True, numerical infinitesimal flexes and stresses are used in the check for prestress stability. In case that numerical=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:

bool

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

Second-order rigidity

Parameters:
  • framework (FrameworkBase)

  • numerical (bool) – If True, numerical infinitesimal flexes and stresses are used in the check for prestress stability. In case that numerical=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:

bool

Examples

>>> from pyrigi import frameworkDB as fws
>>> F = fws.Frustum(3)
>>> is_second_order_rigid(F)
True