from sympy import *
from lsk.display import *
from lsk.energy import *
from lsk.symbols import *
5 Bifurcation equations
5.1 Introduction
In this chapter, the bifurcation analysis of the perfect system is performed symbolically. It is assumed that through the critical point passes a second equilibrium curve \(\lambda \mapsto u(\lambda)\), besides the fundamental branch \(\lambda \mapsto u^\star(\lambda)\). We seek an asymptotic expansion of \(u(\lambda)\) for \(\lambda \to \lambda_0\) (critical load). It will be convenient to introduce an auxiliary parametrization \(\eta\) such that the bifurcated branch is defined as the set of points \((u(\eta), \lambda(\eta))\). The functions \(\eta \mapsto \lambda(\eta)\) and \(\eta \mapsto u(\eta)\) are expanded as follows
\[ \lambda(\eta) = \order[0]{\lambda} + \eta \, \order[1]{\lambda} + \tfrac{1}{2}\eta^2 \, \order[2]{\lambda} + \ldots \tag{5.1}\]
and
\[ u(\eta) = u^\ast[\lambda(\eta)] + \eta \, \order[1]{u} + \tfrac{1}{2} \eta^2 \, \order[2]{u} + \ldots \tag{5.2}\]
It will be shown below that \[ \order[1]{u} = \order[1]{\xi_i} \, v_i \quad \text{and} \quad \order[2]{u} = \order[2]{\xi_i} \, v_i + \order[1]{\xi_i} \, \order[1]{\xi_j} \, w_{ij} + 2\order[1]{\lambda} \, \order[1]{\xi_i} \, w_{i\lambda}, \tag{5.3}\]
where the coefficients \(\order[1]{\lambda}\), \(\order[2]{\lambda}\), \(\order[1]{\xi}_i\) and \(\order[2]{\xi}_i\) solve the first bifurcation equation
\[ \tfrac{1}{2} E_{ijk} \, \order[1]{\xi_j} \, \order[1]{\xi_k} + \order[1]{\lambda} \, \dot{E}_{ij} \, \order[1]{\xi_j} = 0 \tag{5.4}\]
and the second bifurcation equation
\[ \begin{aligned}[b] \tfrac{1}{3} E_{ijkl} \, \order[1]{\xi}_j \, \order[1]{\xi}_k \, \order[1]{\xi}_l + \order[1]{\lambda} \, \bigl( \dot{E}_{ijk} \, \order[1]{\xi}_k + \order[1]{\lambda} \, \ddot{E}_{ij} \bigr) \, \order[1]{\xi}_j &\\ + \bigl( E_{ijk} \, \order[1]{\xi}_k + \order[1]{\lambda} \, \dot{E}_{ij} \bigr) \order[2]{\xi}_j + \order[2]{\lambda} \, \dot{E}_{ij} \, \order[1]{\xi}_j & = 0. \end{aligned} \tag{5.5}\]
The tensors \(\dot{E}_{ij}\), \(\ddot{E}_{ij}\), \(E_{ijk}\), \(\dot{E}_{ijk}\) and \(E_{ijkl}\) have been defined in Chapter 2 (see Section 2.4).
The starting point is the symbolic expression of the residual \((u, \lambda) \mapsto \E_{,u}(u, \lambda)\) that was derived in Chapter 4. We plug the postulated expansions (5.1) and (5.2) into the equilibrium equation
\[ \E_{, u}[u(\eta), \lambda(\eta); \hat{u}] = 0 \quad \text{for all} \quad \hat{u} \in U. \]
The coefficients of \(\eta^0\), \(\eta^1\), etc deliver a series of variational problems from which \(\order[k]{u}\) and \(\order[k]{\lambda}\) are identified.
The asymptotic expansion of \(\lambda\) according to Eq. (5.1) is first postulated and plugged into the expression of \(u^\star\). The resulting symbolic expressions are combined to define the asymptotic expansion of \(u\) according to Eq. (5.2).
= η * λ1 + η**2 / 2 * λ2 + η**3 / 6 * λ3 + η**4 / 24 * λ4 + O(η**5)
λ = create_u_star(λ)
u_star = u_star + η * u1 + η**2 / 2 * u2 + η**3 / 6 * u3 + η**4 / 24 * u4 u
Code
r"\lambda(\eta)", λ)
display_latex_equation(r"u^\star(\eta)", u_star, terms_per_line=6)
display_latex_long_equation(r"u(\eta)", u, terms_per_line=6) display_latex_long_equation(
\(\displaystyle \lambda(\eta)=\eta {\order[1]{\lambda}} + \frac{\eta^{2} {\order[2]{\lambda}}}{2} + \frac{\eta^{3} {\order[3]{\lambda}}}{6} + \frac{\eta^{4} {\order[4]{\lambda}}}{24} + O\left(\eta^{5}\right)\)
\(\displaystyle \begin{aligned}u^\star(\eta)={} &\frac{\dddot{u}_0 \eta^{3} {\order[1]{\lambda}}^{3}}{6} + \frac{\ddot{u}_0 \eta^{4} {\order[2]{\lambda}}^{2}}{8} + \frac{\ddot{u}_0 \eta^{2} {\order[1]{\lambda}}^{2}}{2} + \frac{\dot{u}_0 \eta^{3} {\order[3]{\lambda}}}{6} + \frac{\dot{u}_0 \eta^{2} {\order[2]{\lambda}}}{2} + \dot{u}_0 \eta {\order[1]{\lambda}}\\ &+\frac{\dot{u}_0 \eta^{4} {\order[4]{\lambda}}}{24} + \frac{\ddot{u}_0 \eta^{3} {\order[1]{\lambda}} {\order[2]{\lambda}}}{2} + \frac{\ddot{u}_0 \eta^{4} {\order[1]{\lambda}} {\order[3]{\lambda}}}{6} + \frac{\dddot{u}_0 \eta^{4} {\order[1]{\lambda}}^{2} {\order[2]{\lambda}}}{4} + \frac{\ddddot{u}_0 \eta^{4} {\order[1]{\lambda}}^{4}}{24} + O\left(\eta^{5}\right)\end{aligned}\)
\(\displaystyle \begin{aligned}u(\eta)={} &\frac{\ddot{u}_0 \eta^{2} {\order[1]{\lambda}}^{2}}{2} + \dot{u}_0 \eta {\order[1]{\lambda}} + \frac{\eta^{4} {\order[4]{u}}}{24} + \frac{\eta^{3} {\order[3]{u}}}{6} + \frac{\eta^{2} {\order[2]{u}}}{2} + \eta {\order[1]{u}}\\ &+\frac{\ddddot{u}_0 \eta^{4} {\order[1]{\lambda}}^{4}}{24} + \frac{\dddot{u}_0 \eta^{3} {\order[1]{\lambda}}^{3}}{6} + \frac{\ddot{u}_0 \eta^{4} {\order[2]{\lambda}}^{2}}{8} + \frac{\dot{u}_0 \eta^{4} {\order[4]{\lambda}}}{24} + \frac{\dot{u}_0 \eta^{3} {\order[3]{\lambda}}}{6} + \frac{\dot{u}_0 \eta^{2} {\order[2]{\lambda}}}{2}\\ &+\frac{\ddot{u}_0 \eta^{3} {\order[1]{\lambda}} {\order[2]{\lambda}}}{2} + \frac{\ddot{u}_0 \eta^{4} {\order[1]{\lambda}} {\order[3]{\lambda}}}{6} + \frac{\dddot{u}_0 \eta^{4} {\order[1]{\lambda}}^{2} {\order[2]{\lambda}}}{4} + O\left(\eta^{5}\right)\end{aligned}\)
These expressions are then used to compute an asymptotic expansion of the residual \(\E_{,u}\) along the bifurcated branch.
= (create_E_u(u, λ) * u_hat).expand() E_u
The general form of this expansion is
\[ \begin{aligned}[b] \E_{,u}[u(\eta), \lambda(\eta); \hat{u}] ={} & \order[0]{\E}_{,u}(\hat{u}) + \eta \, \order[1]{\E}_{,u}(\order[1]{u}; \hat{u}) + \tfrac{1}{2} \eta^2 \, \order[2]{\E}_{,u}(\order[1]{u}, \order[2]{u}, \order[1]{\lambda}; \hat{u})\\ &+ \tfrac{1}{6} \eta^3 \, \order[3]{\E}_{,u}(\order[1]{u}, \order[2]{u}, \order[3]{u}, \order[1]{\lambda}, \order[2]{\lambda}; \hat{u}) + \ldots, \end{aligned} \]
which delivers the following variational problems
\[ \order[k]{\E}_{,u}(\order[1]{u}, \ldots, \order[k]{u}, \order[1]{\lambda}, \ldots, \order[k-1]{\lambda}; \hat{u}) \quad \text{for all} \quad \hat{u} \in U, \quad k = 0, 1, 2, \ldots \]
These problems are studied successively in the following sections. Note that the variational problem of order 0 is in fact uninformative, since \(\order[0]{\E}_{,u} = 0\).
Code
assert E_u.coeff(η, 0) == 0
5.2 The variational problem of order 1
This problem reads
\[ \E_2(\order[1]{u}, \hat{u}) = 0 \quad \text{for all} \quad \hat{u} \in U. \]
Code
assert E_u.coeff(η, 1) == E2 * u1 * u_hat
Therefore \(\order[1]{u} \in V\) and we introduce the following decomposition
\[ \order[1]{u} = \order[1]{\xi}_i \, v_i, \tag{5.6}\]
where \(\order[1]{\xi}_1, \ldots, \order[1]{\xi}_m\) are yet unknown scalars.
5.3 The variational problem of order 2
= E_u.coeff(η, 2) E_u2
The term in \(\eta^2\) of the residual delivers the following variational problem
Code
0) display_latex_equation(E_u2,
\(\displaystyle \frac{\E_{2} \hat{u} {\order[2]{u}}}{2} + \frac{\E_{3} \hat{u} {\order[1]{u}}^{2}}{2} + \dot{\E}_2 \hat{u} {\order[1]{\lambda}} {\order[1]{u}}=0\)
for all \(\hat{u} \in U\). Testing with \(\hat{v} \in V\), the term in \(\E_2(\order[2]{u}, \hat{v})\) vanishes and we get the following variational problem
= E_u2.subs(u_hat, v_hat).subs(E2 * v_hat, 0) lhs1
Code
0) display_latex_equation(lhs1,
\(\displaystyle \frac{\E_{3} \hat{v} {\order[1]{u}}^{2}}{2} + \dot{\E}_2 \hat{v} {\order[1]{\lambda}} {\order[1]{u}}=0\)
to be understood as
\[ \tfrac{1}{2} \E_3(\order[1]{u}, \order[1]{u}, \hat{v}) + \order[1]{\lambda} \, \dot{\E}_2(\order[1]{u}, \hat{v}) = 0, \tag{5.7}\]
for all \(\hat{v} \in V\). The above equation fully defines \(\order[1]{u}\). Indeed, plugging the decomposition (5.6) delivers the equivalent equations
\[ \tfrac{1}{2} E_{ijk} \, \order[1]{\xi}_j \, \order[1]{\xi}_k + \order[1]{\lambda} \, \dot{E}_{ij} \, \order[1]{\xi}_j = 0, \]
where we have introduced \(\dot{E}_{ij}\) and \(E_{ijk}\), defined by Eqs. (2.6) and (2.8), respectively. We finally retrieve the first bifurcation equation (5.4).
We now test the same equation with \(\hat{w} \in W\), plugging the expansion (5.6) of \(\order[1]{u}\)
\[ \tfrac{1}{2} \E_2(\order[2]{u}, \hat{w}) +\tfrac{1}{2} \order[1]{\xi}_i \, \order[1]{\xi}_j \, \E_3(v_i, v_j, \hat{w}) + \order[1]{\lambda} \, \order[1]{\xi}_i \, \dot{E}_2(v_i, \hat{w}) = 0. \]
The second-order term \(\order[2]{u}\) is projected onto \(V\) and \(W\)
\[ \order[2]{u} = \order[2]{u}_V + \order[2]{u}_W, \quad \text{where} \quad \order[2]{u}_V = \order[2]{\xi}_i \, v_i \in V \quad \text{and} \quad \order[2]{u}_W \in W. \]
Plugging this decomposition delivers
\[ \tfrac{1}{2} \E_2(\order[2]{u}_W, \hat{w}) +\tfrac{1}{2} \order[1]{\xi}_i \, \order[1]{\xi}_j \, \E_3(v_i, v_j, \hat{w}) + \order[1]{\lambda} \, \order[1]{\xi}_i \, \dot{E}_2(v_i, \hat{w}) = 0. \]
The unique solution to this variational problem can be expressed as a function of \(w_{i\lambda}\) and \(w_{ij}\), (see Section 2.3)
\[ \order[2]{u}_W = \order[1]{\xi_i} \, \order[1]{\xi_j} \, w_{ij} + 2\order[1]{\lambda} \, \order[1]{\xi_i} \, w_{i\lambda}, \]
which proves the decomposition (5.3) of \(\order[2]{u}\).
5.4 The variational problem of order 3
We now turn to the third-order term of the residual \(\E_{,u}\). It involves \(\order[3]{u}\), that gets eliminated when testing with \(v_i \in V\).
= E_u.coeff(η, 3).subs(u_hat, v[i]).subs(E2 * v[i], 0) lhs2
We get the following equations for \(i = 1, \ldots, m\)
Code
0) display_latex_equation(lhs2,
\(\displaystyle \frac{\E_{3} {\order[1]{u}} {\order[2]{u}} {v}_{i}}{2} + \frac{\E_{4} {\order[1]{u}}^{3} {v}_{i}}{6} + \frac{\ddot{\E}_2 {\order[1]{\lambda}}^{2} {\order[1]{u}} {v}_{i}}{2} + \frac{\dot{\E}_2 {\order[1]{\lambda}} {\order[2]{u}} {v}_{i}}{2} + \frac{\dot{\E}_2 {\order[1]{u}} {\order[2]{\lambda}} {v}_{i}}{2} + \frac{\dot{\E}_3 {\order[1]{\lambda}} {\order[1]{u}}^{2} {v}_{i}}{2}=0\)
For the terms that involve only \(v_i\) and \(\order[1]{u}\), we use Eqs. (2.6), (2.7) and (2.9) together with the decomposition \(\order[1]{u} = \order[1]{\xi}_i \, v_i\).
= {
d * u1 * v[i]: ξ1[j] * E_dot[i, j],
E2_dot * u1 * v[i]: (ξ1[j] * (E_ddot[i, j]
E2_ddot - E2_dot * v[i] * w[j])
- E2_dot * u1 * w[i]),
* u1 * u1 * v[i]: (ξ1[j] * ξ1[k] * (E_dot[i, j, k]
E3_dot - E2_dot * v[i] * w[j, k])
- 2 * ξ1[j] * E2_dot * u1 * w[i, j]),
}
= lhs2.subs(d).expand() lhs2
Code
0) display_latex_equation(lhs2,
\(\displaystyle \frac{\E_{3} {\order[1]{u}} {\order[2]{u}} {v}_{i}}{2} + \frac{\E_{4} {\order[1]{u}}^{3} {v}_{i}}{6} - \frac{\dot{\E}_2 {\order[1]{\lambda}}^{2} {\order[1]{u}} {w}_{i}}{2} - \frac{\dot{\E}_2 {\order[1]{\lambda}}^{2} {v}_{i} {w}_{j} {{\order[1]{\xi}}}_{j}}{2} - \dot{\E}_2 {\order[1]{\lambda}} {\order[1]{u}} {w}_{i,j} {{\order[1]{\xi}}}_{j} + \frac{\dot{\E}_2 {\order[1]{\lambda}} {\order[2]{u}} {v}_{i}}{2} - \frac{\dot{\E}_2 {\order[1]{\lambda}} {v}_{i} {w}_{j,k} {{\order[1]{\xi}}}_{j} {{\order[1]{\xi}}}_{k}}{2} + \frac{{\order[1]{\lambda}}^{2} {\ddot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2} + \frac{{\order[1]{\lambda}} {\dot{E}}_{i,j,k} {{\order[1]{\xi}}}_{j} {{\order[1]{\xi}}}_{k}}{2} + \frac{{\order[2]{\lambda}} {\dot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2}=0\)
In the remainder of this section, we simplify this equation. To do so, we rely heavily on Eqs. (2.5) and (2.4) as well as the definitions of Section 2.4. We first apply the following simplification
\[ \dot{\E}_2(\order[2]{u}, v_i) = \dot{E}_{ij} \, \order[2]{\xi}_j + \order[1]{\xi}_j \, \order[1]{\xi}_k \, \dot{\E}_2(w_{jk}, v_i) + 2\order[1]{\lambda} \, \dot{\E}_2(w_i, \order[1]{u}). \]
= (E_dot[i, j] * ξ2[j] + ξ1[j] * ξ1[k] * E2_dot * v[i] * w[j, k]
expr + 2 * λ1 * E2_dot * u1 * w[i])
= lhs2.subs(E2_dot * u2 * v[i], expr).expand() lhs2
Code
0) display_latex_equation(lhs2,
\(\displaystyle \frac{\E_{3} {\order[1]{u}} {\order[2]{u}} {v}_{i}}{2} + \frac{\E_{4} {\order[1]{u}}^{3} {v}_{i}}{6} + \frac{\dot{\E}_2 {\order[1]{\lambda}}^{2} {\order[1]{u}} {w}_{i}}{2} - \frac{\dot{\E}_2 {\order[1]{\lambda}}^{2} {v}_{i} {w}_{j} {{\order[1]{\xi}}}_{j}}{2} - \dot{\E}_2 {\order[1]{\lambda}} {\order[1]{u}} {w}_{i,j} {{\order[1]{\xi}}}_{j} + \frac{{\order[1]{\lambda}}^{2} {\ddot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2} + \frac{{\order[1]{\lambda}} {\dot{E}}_{i,j,k} {{\order[1]{\xi}}}_{j} {{\order[1]{\xi}}}_{k}}{2} + \frac{{\order[1]{\lambda}} {\dot{E}}_{i,j} {{\order[2]{\xi}}}_{j}}{2} + \frac{{\order[2]{\lambda}} {\dot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2}=0\)
Then,
\[ \begin{aligned}[b] \E_3(\order[1]{u}, \order[2]{u}, v_i) ={} & E_{ijk} \, \order[2]{\xi}_j \, \order[1]{\xi}_k + \tfrac{1}{3} \order[1]{\xi}_j \, \order[1]{\xi}_k \, \order[1]{\xi}_l \, E_{ijkl}\\ & - \tfrac{1}{3} \E_4(\order[1]{u}, \order[1]{u}, \order[1]{u}, v_i) + 2\order[1]{\lambda} \, \order[1]{\xi}_j \, \dot{\E}_2(\order[1]{u}, w_{ij}). \end{aligned} \]
= (E[i, j, k] * ξ2[j] * ξ1[k]
expr + E[i, j, k, l] * ξ1[j] * ξ1[k] * ξ1[l] / 3
- E4 * v[i] * u1**3 / 3
+ 2 * λ1 * ξ1[j] * E2_dot * u1 * w[i, j])
= lhs2.subs(E3 * u1 * u2 * v[i], expr).expand() lhs2
Code
0) display_latex_equation(lhs2,
\(\displaystyle \frac{\dot{\E}_2 {\order[1]{\lambda}}^{2} {\order[1]{u}} {w}_{i}}{2} - \frac{\dot{\E}_2 {\order[1]{\lambda}}^{2} {v}_{i} {w}_{j} {{\order[1]{\xi}}}_{j}}{2} + \frac{{\order[1]{\lambda}}^{2} {\ddot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2} + \frac{{\order[1]{\lambda}} {\dot{E}}_{i,j,k} {{\order[1]{\xi}}}_{j} {{\order[1]{\xi}}}_{k}}{2} + \frac{{\order[1]{\lambda}} {\dot{E}}_{i,j} {{\order[2]{\xi}}}_{j}}{2} + \frac{{\order[2]{\lambda}} {\dot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2} + \frac{{E}_{i,j,k,l} {{\order[1]{\xi}}}_{j} {{\order[1]{\xi}}}_{k} {{\order[1]{\xi}}}_{l}}{6} + \frac{{E}_{i,j,k} {{\order[1]{\xi}}}_{k} {{\order[2]{\xi}}}_{j}}{2}=0\)
Finally,
\[ \begin{aligned} \order[1]{\xi}_j \, \dot{\E}_2(w_j, v_i) = - \order[1]{\xi}_j \, \E_2(w_i, w_j) = \order[1]{\xi}_j \, \dot{\E}_2(v_j, w_i) = \dot{\E}_2(\order[1]{u}, w_i). \end{aligned} \]
= lhs2.subs(ξ1[j] * E2_dot * v[i] * w[j], E2_dot * u1 * w[i]) lhs2
Code
0) display_latex_equation(lhs2,
\(\displaystyle \frac{{\order[1]{\lambda}}^{2} {\ddot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2} + \frac{{\order[1]{\lambda}} {\dot{E}}_{i,j,k} {{\order[1]{\xi}}}_{j} {{\order[1]{\xi}}}_{k}}{2} + \frac{{\order[1]{\lambda}} {\dot{E}}_{i,j} {{\order[2]{\xi}}}_{j}}{2} + \frac{{\order[2]{\lambda}} {\dot{E}}_{i,j} {{\order[1]{\xi}}}_{j}}{2} + \frac{{E}_{i,j,k,l} {{\order[1]{\xi}}}_{j} {{\order[1]{\xi}}}_{k} {{\order[1]{\xi}}}_{l}}{6} + \frac{{E}_{i,j,k} {{\order[1]{\xi}}}_{k} {{\order[2]{\xi}}}_{j}}{2}=0\)
And the second bifurcation equation (5.5) is retrieved.
Code
= (E[i, j, k, l] * ξ1[j] * ξ1[k] * ξ1[l] / 3
expected + λ1 * (E_dot[i, j, k] * ξ1[k] + λ1 * E_ddot[i, j]) * ξ1[j]
+ (E[i, j, k] * ξ1[k] + λ1 * E_dot[i, j]) * ξ2[j]
+ λ2 * E_dot[i, j] * ξ1[j])
assert expand(2 * lhs2 - expected) == 0