Time and frequency domain equation of motion solvers

Time and frequency domain ODE solvers for matrix equations. Adapted and enhanced from the Yeti versions (which were adapted and enhanced from the original CAM versions). Note that some features depend on the equations being in modal space (particularly important where there are distinctions between the rigid-body modes and the elastic modes).

Note

Some features of this module are demonstrated in the pyYeti Tutorials: ode - time and frequency domain ODE solvers. There is also a link to the source Jupyter notebook at the top of the tutorial.

1st Order ODE Solver SolveExp1

SolveExp1(A, h[, order])

1st order ODE time domain solver based on the matrix exponential.

SolveExp1.tsolve(force[, d0])

Solve time-domain 1st order ODE equations.

2nd Order ODE Solver SolveUnc

SolveUnc(m, b, k[, h, rb, rf, order, ...])

2nd order ODE time and frequency domain solvers for "uncoupled" equations of motion

SolveUnc.tsolve(force[, d0, v0, static_ic])

Solve time-domain 2nd order ODE equations

SolveUnc.fsolve(force, freq[, incrb, ...])

Solve frequency-domain modal equations of motion using uncoupled equations.

SolveUnc.generator(nt, F0[, d0, v0, static_ic])

Python "generator" version of SolveUnc.tsolve(); interactively solve (or re-solve) one step at a time.

SolveUnc.finalize([get_force])

Finalize time-domain generator solution.

SolveUnc.get_f2x(phi[, velo])

Get force-to-displacement or force-to-velocity transform

SolveUnc.get_su_eig(delcc)

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

2nd Order ODE Solver SolveCDF

SolveCDF(m, b, k[, h, rb, rf, order, pre_eig])

2nd order ODE time and frequency domain solvers for "uncoupled" equations of motion

SolveCDF.tsolve(force[, d0, v0, static_ic])

Solve time-domain 2nd order ODE equations

SolveCDF.fsolve(force, freq[, incrb, ...])

Solve frequency-domain modal equations of motion using uncoupled equations.

SolveCDF.generator(nt, F0[, d0, v0, static_ic])

Python "generator" version of SolveCDF.tsolve(); interactively solve (or re-solve) one step at a time.

SolveCDF.finalize([get_force])

Finalize time-domain generator solution.

SolveCDF.get_f2x(phi[, velo])

Get force-to-displacement or force-to-velocity transform

2nd Order ODE Solver SolveExp2

SolveExp2(m, b, k, h[, rb, rf, order, pre_eig])

2nd order ODE time domain solver based on the matrix exponential.

SolveExp2.tsolve(force[, d0, v0, static_ic])

Solve time-domain 2nd order ODE equations

SolveExp2.generator(nt, F0[, d0, v0, static_ic])

Python "generator" version of SolveExp2.tsolve(); interactively solve (or re-solve) one step at a time.

SolveExp2.finalize([get_force])

Finalize time-domain generator solution.

SolveExp2.get_f2x(phi[, velo])

Get force-to-displacement or force-to-velocity transform

2nd Order ODE Solver SolveNewmark

SolveNewmark(m, b, k[, h, rf])

2nd order ODE time domain "Newmark-Beta" solver

SolveNewmark.tsolve(force[, d0, v0])

Solve time-domain 2nd order ODE equations

SolveNewmark.def_nonlin(dct)

Define nonlinear force terms

2nd Order ODE Frequency Domain Solver FreqDirect

FreqDirect(m, b, k[, rb, rf])

2nd order ODE frequency domain solver

FreqDirect.fsolve(force, freq[, incrb, ...])

Solve equations of motion in frequency domain.

Other main routines

getmodepart(h_or_frq, sols, mfreq[, factor, ...])

Get modal participation from frequency response plots.

modeselect(name, fs, force, freq, Trcv, ...)

Select modes based on mode participation in graphically chosen responses.

solvepsd(fs, forcepsd, t_frc, freq, drmlist)

Solve equations of motion in frequency domain with uncorrelated PSD forces.

Utility routines

addconj(lam, ur, ur_inv)

Add back in the missing complex-conjugate mode

delconj(lam, ur, ur_inv, dups)

Delete one eigenvalue/eigenvector from of each pair of complex conjugates.

eigss(A, delcc)

Solve complex eigen problem for state-space formulation.

get_freq_damping(lam[, suppress_warning])

Get frequency and damping from complex eigenvalues

get_su_coef(m, b, k, h[, rbmodes, rfmodes])

Get uncoupled equations of motion integration coefficients.

make_A(M, B, K)

Setup the state-space matrix from mass, damping and stiffness.