Excitation models
Poscidyn currently provides OneToneExcitation, which defines a harmonic drive over one or more drive frequencies and drive amplitudes.
OneToneExcitation
The constructor is
excitation = poscidyn.OneToneExcitation(
drive_frequencies,
drive_amplitudes,
modal_forces,
)
with:
drive_frequencies: shape(n_frequencies,)drive_amplitudes: shape(n_amplitudes,)modal_forces: shape(n_modes,)
Internally, Poscidyn forms the outer product between drive_amplitudes and modal_forces, so each drive amplitude is applied with the same modal-force distribution.
Example
import numpy as np
import poscidyn
drive_frequencies = np.linspace(0.9, 1.1, 128)
drive_amplitudes = np.array([0.002, 0.004, 0.006])
modal_forces = np.array([1.0, 0.25])
excitation = poscidyn.OneToneExcitation(
drive_frequencies=drive_frequencies,
drive_amplitudes=drive_amplitudes,
modal_forces=modal_forces,
)
How it is used
- In
poscidyn.time_response(...), you pass the same excitation object style, but currently with exactly one drive frequency and one drive amplitude. - In
poscidyn.frequency_sweep(...), you pass an excitation object, typicallyOneToneExcitation, so Poscidyn can generate the full sweep grid.