- Rotor.run_forced_response(force=None, speed_range=None, modes=None, cluster_points=False, num_modes=12, num_points=10, rtol=0.005, unbalance=None)#
Forced response for a mdof system.
This method returns the unbalanced response for a mdof system given magnitude and phase of the unbalance, the node where it’s applied and a frequency range.
- Available plotting methods:
.plot() .plot_magnitude() .plot_phase() .plot_polar_bode() .plot_deflected_shape() .plot_bending_moment() .plot_deflected_shape_3d() .plot_deflected_shape_2d()
- forcelist, array
Unbalance force in each degree of freedom for each value in omega
- speed_rangelist, array
Array with the desired range of frequencies
- modeslist, optional
Modes that will be used to calculate the frequency response (all modes will be used if a list is not given).
- unbalancearray, optional
Array with the unbalance data (node, magnitude and phase) to be plotted with deflected shape. This argument is set only if running an unbalance response analysis. Default is None.
- cluster_pointsbool, optional
boolean to activate the automatic frequency spacing method. If True, the method uses _clustering_points() to create an speed_range. Default is False
- num_pointsint, optional
The number of points generated per critical speed. The method set the same number of points for slightly less and slightly higher than the natural circular frequency. It means there’ll be num_points greater and num_points smaller than a given critical speed. num_points may be between 2 and 12. Anything above this range defaults to 10 and anything below this range defaults to 4. The default is 10.
The number of eigenvalues and eigenvectors to be calculated using ARPACK. It also defines the range for the output array, since the method generates points only for the critical speed calculated by run_critical_speed(). Default is 12.
- rtolfloat, optional
Tolerance (relative) for termination. Applied to scipy.optimize.newton to calculate the approximated critical speeds. Default is 0.005 (0.5%).
For more information on attributes and methods available see:
>>> rotor = rotor_example() >>> speed = np.linspace(0, 1000, 101) >>> force = rotor._unbalance_force(3, 10.0, 0.0, speed) >>> resp = rotor.run_forced_response(force=force, speed_range=speed) >>> abs(resp.forced_resp) array([[0.00000000e+00, 5.06073311e-04, 2.10044826e-03, ...
Using clustered points option. Set cluster_points=True and choose how many modes the method must search and how many points to add just before and after each critical speed.
>>> response = rotor.run_forced_response( ... force=force, cluster_points=True, num_modes=12, num_points=5 ... ) >>> response.speed_range.shape (61,)