Skip to content
Snippets Groups Projects

Algebraic Harmonic Balance Method

This package provides a Python 3.10 implementation of the algebraic harmonic balance method (algebraic HBM) as proposed by [1].

Installation

The following commands install algebraic_hbm from the Python Package Index. You will need a working installation of Python and pip.

pip install algebraic-hbm

Theoretic background

We are considering second order ordinary differential equations (ODEs) with polynomial coefficients in the state

x : \mathbb T \subset \mathbb R \to \mathbb R
, that is ODEs of the form

r(t,x;u) = \rho x''(t) + \delta x'(t) + \sum_{i=1}^q \alpha_i x^i(t) - u(t) = 0 \,, \quad u(t) = \hat u \cos(\Omega t) \,.

The idea of the HBM is to yield approximations

x_n(t) = c_0 + \sum_{i=1}^n c_{2i-1} \cos(i \Omega t) + c_{2i} \sin(i \Omega t)
of stationary periodic solutions
x
of the ODE. Given a excitation frequency
\Omega
, the algebraic HBM of order
n
yields a system of multivariate polynomials
R_i
,
i=0,1,\ldots,2n
, in the variables
c_0,c_1,\ldots,c_{2n}
that solve the algebraic system

F_n(\mathbf c; \Omega) = [R_i(\mathbf c; \Omega)]_{i=0}^{2n} = 0

where

\mathbf c = [c_0,c_1,\ldots,c_{2n}] \in \mathbb R^{2n+1}
. A solution
\mathbf c \leftrightarrow x_n
of
F_n(\mathbf c; \Omega) = 0
is also a solution of the (original) HBM defining system of integral equations

\langle r(x_n), \phi_j\rangle = \frac{1}{T} \int_0^T r(t,x_n(t)) \phi_j(t) \, \mathrm d t \,, \quad j = 0,1,\ldots,2n \,,

with basis functions

\phi_0(t) = 1
,
\phi_{2i-1}(t) = \cos(i \Omega t)
and
\phi_{2i}(t) = \sin(i \Omega t)
,
i=1,\ldots,n
. Note that building and evaluating
F_n
does not require the computation of integrals as e.g. in the classical or Alternating Frequency-Time HBM [2].

Usage

Evaluation

This example shows how to use the algebraic HBM framework to generate a system of executable functions that can be evaluated. This example can also be found here.

Required imports:

import algebraic_hbm

Define the classical softening Duffing oscillator

r(t,x) = x''(t) + 0.4 x'(t) - 0.4 x^3(t) - 0.3 \cos(\Omega t) = 0

as a second order ODE with polynomial coefficients via

ode = ODE_2nd_Order_Poly_Coeffs(mass=1, damping=.4, stiffness=1, excitation=(0,.3), monomials={3: -.4})

Then, initialize the algebraic HBM for ansatz order

n
.

HBM = Algebraic_HBM(ODE=ode, order=n)

Now generate the multivariate polynomials that define the algebraic equation system of the algebraic HBM.

HBM.generate_multivariate_polynomials()

Compile multivariate polynomials into excecutable functions

F_n
and
\mathrm DF_n=(\frac{\mathrm d F_n}{\mathrm d \mathbf c}, \frac{\mathrm d F_n}{\mathrm d a})
.

F, DF = HBM.compile()

The system

F_n
and its Jacobian
\mathrm D F_n
may now be used to perform a bifurcation analysis of the system. For example, computing the frequency response of the system for different initial guesses [3].

Coefficient matrix for Macaulay framework

This example shows how to build the coefficient matrix of the algebraic representation that can be used in conjunction with the Macaulay matrix framework [4]. This example can also be found here.

Most of the steps are as in the above example, but instead of compiling executable functions we request the coefficient matrix at a given excitation frequency

\Omega = 3.14
by invoking HBM.get_monomial_coefficient_matrix.

import algebraic_hbm

n, a = 1, 3.14
ode = ODE_2nd_Order_Poly_Coeffs(mass=1, damping=.4, stiffness=1, excitation=(0,.3), monomials={3: -.4})
HBM = Algebraic_HBM(ODE=ode, order=n)
HBM.generate_multivariate_polynomials()
A = HBM.get_monomial_coefficient_matrix(a)

References

  1. Hannes Dänschel and Lukas Lentz. "An Algebraic Representation of the Harmonic Balance Method for Ordinary Differential Equations with Polynomial Coefficients". Manuscript PDF: /algebraic_hbm.pdf
  2. Malte Krack and Johann Gross. "Harmonic Balance for Nonlinear Vibration Problems". Springer, 2019. isbn: 978-3-030-14022-9. DOI: 10.1007/978-3-030-14023-6
  3. Hannes Dänschel, Lukas Lentz, and Utz von Wagner. "Error Measures and Solution Artifacts of the Harmonic Balance Method on the Example of the Softening Duffing Oscillator". In: Journal of Theoretical and Applied Mechanics 62.2 (Apr. 2024), pp. 435–455. DOI: 10.15632/jtam-pl/186718
  4. Philippe Dreesen, Kim Batselier, and Bart De Moor. "Back to the Roots: Polynomial System Solving, Linear Algebra, Systems Theory". In: IFAC Proceedings Volumes 45.16 (2012), pp. 1203–1208. issn: 1474-6670. DOI: 10.3182/20120711-3-BE-2027.00217