|
pde2path - a Matlab package
for continuation and bifurcation
in 2D elliptic systems |
Here we briefly explain the ideas behind some main functions of pde2path, with links to the code; for more details see the printed manual.
pde2path uses (pseudo) arclength continuation to numerically find solution branches of G(u,λ) = 0, where now G : X × ℝ → X, X = ℝn, is the FEM discretization of the PDE.
Consider a branch z(s) := (u(s),λ(s)) ∈ X × ℝ parametrized by s ∈ ℝ and the extended system
(1) |
(2) |
(3) |
(4) |
The main role of ξ is to balance u and λ in the continuation. Given a weight ξ, a starting point (u0,λ0,τ0), and an intended step size ds, the basic continuation algorithm thus reads as follows, already including some elementary stepsize control:
Theoretically, continuation does not work at possible “bifurcation points” where A is singular. More specifically, we define:
B1. A simple bifurcation point is a point (u,λ) where detA changes sign. The implicit assumption is that this happens due to a simple eigenvalue of A crossing zero.
For algorithmic reasons, for the detection of bifurcation points we only use the first part of B1, i.e., the sign change of detA, which also occurs for an odd number of eigenvalues (counting multiplicities) crossing zero. To calculate sign(det A) we only calculate the set Σ0 of eigenvalues μi, i = 1,…,neig of A closest to 0 and then use sign( det A)=sign(Πi=1neig Reμi). Here the implicit assumption is that neig is sufficiently large such that all eigenvalues with negative real part are always contained in Σ0. This is reasonable as Gu + γ is a positive elliptic operator for sufficiently large γ.
After detection of a bifurcation between sk and sk+1, the bifurcation is located by a bisection method, bifdetec.
Once a bifurcation point has been saved to file, branch–switching can be performed by calling swibra.
Theory guarantees that the standard continuation algorithm converges to a given branch for “suffienctly small” ds, but near bifurcation points only in cones around the branch. Thus, near a bifurcation point it is often not useful to choose very small ds. To circumvent this and similar problems we provide the function pmcont (parallel multi continuation). Instead of using just one predictor (u1,λ1) = (u0,λ0) + p.dsτ, pmcont creates in every continuation step the predictors