tmdsimpy.postprocess.harmonic.local_harmonic_forces

tmdsimpy.postprocess.harmonic.local_harmonic_forces(vibration_system, U, w, h, Nt=128, aft_tol=1e-07)

Calculate local harmonic forces for each nonlinear force in the vibration system.

Parameters:
vibration_systemtmdsimpy.VibrationSystem

Vibration system with nonlinear forces. The system has N degrees of freedom with N = vibration_system.M.shape[0].

Unumpy.ndarray (N*Nhc,)

Harmonic DOFs, displacements, np.hstack((U0, U1c, U1s…)) with harmonics h.

wdouble

Frequency (rad/s)

h1D numpy.ndarray, sorted

Sorted list of harmonics

Ntinteger, power of 2, optional

Number of Time Steps for AFT. The default is 128.

aft_toldouble, optional

Tolerance for AFT that is passed as an argument. The default is 1e-7.

Returns:
Uh_ut_Fh_ftlist of tuples of size 4

The indices and length of the list correspond to the list of nonlinear forces in vibration_system.nonlinear_forces. Each local nonlinear force is based on Nnl local displacements and gives Nnlf local nonlinear forces. At each index in the list, the tuple contains: the local harmonic coefficients ((Nhc, Nnl) numpy.ndarray), the local time series of displacements ((Nt, Nnl) numpy.ndarray), local nonlinear forces harmonic coefficients ((Nhc, Nnlf) numpy.ndarray), and local nonlinear force time series ((Nt, Nnlf) numpy.ndarray).

Notes

The number of harmonic components is Nhc = tmdsimpy.utils.harmonic.Nhc(h)

For the output of a given nonlinear force nlforce, the dimensions are

>>> Nnl = nlforce.Q.shape[0]
>>> Nnlf = nlforce.T.shape[1]

In the future, a calc_grad option may be added to speed up computations by not calculating the gradient.