pyyeti.cla.DR_Event.apply_uf¶
- DR_Event.apply_uf(sol, m, b, k, nrb, rfmodes)[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
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.
- Returns:
solout (dict) – Dictionary of solution namespaces with scaled versions of .a, .v, .d and .pg. The keys are all the “uf_reds” values. Additionally, the displacement member is separated into static and dynamic parts: .d_static, .d_dynamic. On output,
.d = .d_static + .d_dynamic. For example, if one of the “uf_reds” tuples is:(1, 1, 1.25, 1), then these variables will exist:solout[(1, 1, 1.25, 1)].a solout[(1, 1, 1.25, 1)].v solout[(1, 1, 1.25, 1)].d solout[(1, 1, 1.25, 1)].d_static solout[(1, 1, 1.25, 1)].d_dynamic solout[(1, 1, 1.25, 1)].pg (optional)
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