tmdsimpy.roms.epmc.constant_displacement

tmdsimpy.roms.epmc.constant_displacement(epmc_bb, h, Flcos, Omega, control_point, control_amplitude, w=None, zeta=None)

Reduced order model based on EPMC to capture constant vibration response obtained via varying force levels.

Parameters:
epmc_bb(M, Nhc*Ndof+3) numpy.ndarray

Each row corresponds to an EPMC solution at a given amplitude level. The first Nhc*Ndof entries of each row are the displacements of the harmonics in h (all of the first harmonic component, then all of next etc.). The last three entries of each row are frequency (rad/s), xi in EPMC formulation (coefficient in front of mass matrix to create a damping matrix), and log10(modal amplitude). Harmonic displacements must be multiplied by the modal amplitude to get the physical displacements except for displacements corresponding to the zeroth harmonic.

hnumpy.ndarray, sorted

Array of the harmonics used to calculate epmc_bb, must be sorted.

Flcos(Ndof,) numpy.ndarray

External constant excitation to be considered. Excitation is just applied to the first harmonic (at undetermined phase)

Omega(Mout,) numpy.ndarray

External forcing frequencies to calculate the force scaling at to achieve constant amplitude.

control_point(Ndof,) numpy.ndarray

Vector for extracting the degree of freedom that should be controlled to constant amplitude as control_point @ U(t) where U(t) is the Ndof displacement vector.

control_amplitudefloat

Desired amplitude that the control point should be controlled to. This is displacement amplitude (0th derivative of motion)

wNone, float, or (M,) numpy.ndarray, optional

Alternative natural frequencies to use instead of those provided in epmc_bb. If provided, it is also used in calculating the fraction of critical damping (if zeta is not provided). Units should be rad/s. If a numpy.ndarray, the order corresponds to entries in epmc_bb. The default is None.

zetaNone, float, or (M,) numpy.ndarray, optional

Alternative modal damping (fraction of critical) to use rather than calculating it from the epmc_bb. If a numpy.ndarray, the order corresponds to entries in epmc_bb. The default is None.

Returns:
force_magnitude(Mout,) numpy.ndarray

The magnitude of the force at each frequency in Omega that gives the desired response amplitude according to the ROM.

epmc_point(Nhc*Ndof+3) numpy.ndarray

The interpolated EPMC solution at the desired control amplitude level. If w and or zeta are included, then the epmc_point has the modified values of these parameters (interpolated to the control amplitude).

See also

constant_force

EPMC based ROM for constant external force rather than displacement

tmdsimpy.VibrationSystem.epmc_res

EPMC residual method that each line of epmc_bb solves as the Uwxa input

tmdsimpy.VibrationSystem.hbm_amp_control_res

HBM residual method calculates something similar to a truth solution to compare this ROM to.

tmdsimpy.Continuation.continuation

Method of obtaining solutions to EPMC at multiple points to create the epmc_bb input to this function

Notes

Theory for this method is derived in [1], [2].

Interpolation along the EPMC backbone is done using linear coordinates for the modal amplitude (e.g., 10**epmc_bb[:, -1] rather than epmc_bb[:, -1]).

EPMC is the Extended Periodic Motion Concept (EPMC). The number of harmonic components is Nhc = tmdsimpy.utils.harmonic.Nhc(h)

The fraction of critical damping from an EPMC backbone can be calculated as zeta = epmc_bb[:, -2] / (2*epmc_bb[:, -3]).

The complex mode shape is represented as psi = U1c + 1j*U1s where U1c and U1s are the first harmonic cosine and sine respectively

Only 1st harmonic forcing is considered.

References

[1]

Porter, J. H., and M. R. W. Brake. Under Review. “Efficient Model Reduction and Prediction of Superharmonic Resonances in Frictional and Hysteretic Systems.” Mechanical Systems and Signal Processing. arXiv:2405.15918.

[2]

Porter, J. H. 2024. Modal Interactions and Jointed Structures. PhD Thesis. Rice University.