pyyeti.ode.SolveUnc.get_su_eig

SolveUnc.get_su_eig(delcc)[source]

Does pre-calcs for the SolveUnc solver via the complex eigenvalue approach.

Parameters:
  • delcc (bool) – If True, delete one of each complex-conjugate pair and put the appropriate factor of 2.0 in the kept mode (see ode.eigss()). It will be automatically added back in if needed later (for example, if SolveUnc.fsolve() is called).

  • Class is expected to be populated with

  • m (1d or 2d ndarray or None) – Mass; vector (of diagonal), or full; if None, mass is assumed identity. Has only rigid-body and elastic modes.

  • b (1d or 2d ndarray) – Damping; vector (of diagonal), or full. Has only rigid-body and elastic modes.

  • k (1d or 2d ndarray) – Stiffness; vector (of diagonal), or full. Has only rigid-body and elastic modes.

  • h (scalar or None) – Time step; can be None if just solving static case.

  • rb (1d array or None) – Index vector for the rigid-body modes; None for no rigid-body modes.

  • el (1d array or None) – Index vector for the elastic modes; None for no elastic modes.

Returns:

  • A record (SimpleNamespace) containing

  • G, A, Ap, Fe, Ae, Be (1d ndarrays) – The integration coefficients. G, A, Ap are for the rigid-body equations and Fe, Ae, Be are for the elastic equations. These will only be present if h is not None.

  • lam (1d ndarray) – The complex eigenvalues.

  • ur (2d ndarray) – The complex right-eigenvectors

  • ur_d, ur_v (2d ndarrays) – Partitions of ur

  • ur_inv_v, ur_inv_d (2d ndarrays) – Partitions of inv(ur)

  • rur_d, iur_d (2d ndarrays) – Real and imaginary parts of ur_d

  • rur_v, iur_v (2d ndarrays) – Real and imaginary parts of ur_v

  • invm (2d ndarray or None) – Decomposition of the elastic part of the mass matrix; None if self.m is None (identity mass)

  • imrb (2d ndarray or None) – LU decomposition of rigid-body part of mass; or None if m is None.

  • wn (1d ndarray) – Real natural frequencies in same order as lam. See ode.get_freq_damping()

  • zeta (1d ndarray) – Critical damping ratios. See ode.get_freq_damping()

  • eig_success (bool) – True if routine is successful. False if the eigenvectors form a singular matrix or they do not diagonalize A; in that case, ODE solution (if computed) is most likely wrong.

Notes

The members m, b, and k are partitioned down to the elastic part only.

See also

SolveUnc