{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# Complex Modes in Non-Classically Damped Systems\n", "\n", "An interactive companion to:\n", "\n", "> C.\u00a0Chern and O.\u00a0M.\u00a0O'Reilly, *On Complex Modal Inverse Analysis: The Cautionary Tale of the Single Surviving Mode*, ASME Journal of Applied Mechanics, 2026. [doi:10.1115/1.4072378](https://doi.org/10.1115/1.4072378)\n", "\n", "For a classically damped system, the modes are real and mutually orthogonal, and each mode traces a straight line in configuration space. Moreover, the number of modes (harmonic, synchronous solutions) equals the number of degrees of freedom in the system.\n", "\n", "When damping is **non-classical**, this picture can break down. The animation below shows the two modes of a simple damped oscillator for three cases."]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n
"], "text/plain": [""]}, "execution_count": 1, "metadata": {}, "output_type": "execute_result"}], "source": ["from mdof.utilities import visualization\n", "from IPython.display import HTML\n", "\n", "fig = visualization.plot_simplest_oscillator(nt=175, speed_up=True)\n", "HTML(fig.to_html(include_plotlyjs=\"cdn\", full_html=False, auto_play=False))"]}, {"cell_type": "markdown", "metadata": {}, "source": ["For the governing equation of motion,\n", "\n", "$$\n", " \\begin{bmatrix}\n", " {x}'' \\\\ {y}''\n", " \\end{bmatrix}\n", " +\n", " \\begin{bmatrix}\n", " 2\\zeta_{1} & 0 \\\\ 2\\zeta_{3} & 2\\zeta_{2}\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " {x}' \\\\ {y}'\n", " \\end{bmatrix}\n", " +\n", " \\begin{bmatrix}\n", " 1 & 0 \\\\ 0 & \\Delta\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " {x} \\\\ {y}\n", " \\end{bmatrix}\n", " =\n", " \\begin{bmatrix}\n", " 0 \\\\ 0\n", " \\end{bmatrix},\n", "$$\n", "\n", "- **Ex 1 \u2014 \u03b6\u2083 = 0 (classical):** modes are orthogonal and trace straight lines.\n", "- **Ex 2 \u2014 \u0394 = 1 (monophase):** both modes are still *monophase* (straight-line) trajectories, but they are no longer orthogonal.\n", "- **Ex 3 \u2014 \u0394 = 1.5 (non-monophase):** the second mode becomes *non-monophase*. Its trajectory becomes an elliptical spiral.\n", "\n", "The lower panels show the phase-normalized displacement eigenvector in the complex plane for each mode."]}], "metadata": {"kernelspec": {"display_name": "mdof-dev", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.0"}, "orig_nbformat": 4}, "nbformat": 4, "nbformat_minor": 2}