pyyeti.cla.apply_uf

pyyeti.cla.apply_uf(sol, uf_reds, m, b, k, nrb, rfmodes, save=None)[source]

Applies the uncertainty factors to the modal ODE solution

Parameters:
  • sol (SimpleNamespace) –

    Solution, input only; expected to have:

    .a = modal acceleration time-history matrix
    .v = modal velocity time-history matrix
    .d = modal displacement time-history matrix
    .pg = g-set forces; optional
    
  • uf_reds (4-element tuple) – This is the uncertainty factors in “reds” order: [rigid, elastic, dynamic, static].

  • m (1d or 2d ndarray or None) – Modal mass; can be vector or matrix or None (for identity)

  • b (1d or 2d ndarray) – Modal damping; vector or matrix

  • k (1d or 2d ndarray) – Modal stiffness; vector or matrix

  • nrb (scalar) – Number of rigid-body modes

  • rfmodes (1d array or None) – Index or bool partition vector specifying where the residual-flexibility modes are; if None, there are no res-flex vectors.

  • save (None or dict; optional) – For efficiency. When calling this routine multiple times to apply different uncertainty factors (that is, only uf_reds is changing), set save to an empty dict; this routine will put items in save for subsequent calls.

Returns:

solout (SimpleNamespace) – The scaled version of sol. Additionally, the displacement member is separated into static and dynamic parts:

.a
.v
.d
.d_static
.d_dynamic
.pg (optional)

where:

solout.d = solout.d_static + solout.d_dynamic

Notes

Uncertainty factors are applied as follows (rb=rigid-body, el=elastic, rf=residual-flexibility):

ruf = rb uncertainty factor
euf = el uncertainty factor
duf = dynamic uncertainty factor
suf = static uncertainty factor

.a_rb and .v_rb - scaled by ruf*suf
.a_el and .v_el - scaled by euf*duf
.a_rf and .v_rf - zeroed out

.d_rb - zeroed out
.d_el - static part:  scaled by euf*suf
      - dynamic part: scaled by euf*duf
.d_rf - scaled by euf*suf

.pg   - scaled by suf

Note that d_el is written out as:

d_el = euf*inv(k_el)*(suf*F_el - duf*(a_el+b_el*v_el))

where:

F = m*a + b*v + k*d