The poloidal-toroidal decomposition
In vector calculus, the poloidal-toroidal (PT) decomposition [1] is a restricted form of the Helmholtz-Hodge decomposition [3]. It states that any sufficiently smooth and divergence-free vector field in the ball can be expressed as the sum of a poloidal field and a toroidal field. It is used in the analysis of divergence-free vector fields in geomagnetism, flow visualization, and incompressible fluid simulations.
For a given unit vector $\hat{r}$, a toroidal field, $\mathbf{T}$, is one that is orthogonal to $\hat{r}$, while a poloidal field, $\mathbf{P}$, is one whose curl is orthogonal to $\hat{r}$, i.e., $$ \hat{r}\cdot \mathbf{T} = 0, \quad \hat{r}\cdot (\nabla \times \mathbf{P}) = 0. $$ In this setting, the natural unit vector $\hat{r}$ to select is the unit radial vector pointing away from the origin.
The PT decomposition for vector fields in the unit ball
Let $w$ be a divergence-free vector field in the unit ball. Then the PT decomposition says that $w$ can be written as the sum $$ w = \nabla\times\nabla\times(r P_w\hat{r}) + \nabla\times(rT_w\hat{r}), $$ where $P_w$ and $T_w$ are scalar-valued potential functions (called the poloidal and toroidal scalars). The scalars $P_w$ and $T_w$ are unique up to the addition of an arbitrary function that only depends on $r$.
In this Example, we show how this decomposition is computed by Ballfun and introduce the command PTdecomposition
[2].
To illustrate the decomposition, we take the following divergence-free vector field:
Pw = ballfun(@(x,y,z)cos(x.*y)); Tw = ballfun(@(x,y,z)sin(y.*z)); w = ballfunv.PT2ballfunv(Pw, Tw); quiver( w )
We start by checking that $w$ is divergence-free:
norm( div( w ) )
ans = 4.162099210310871e-10
Computing the PT decomposition
The scalars $P_w$ and $T_w$ are unique up to the addition of an arbitrary function that depends only on $r$. A popular additional constraint is to select $P_w$ and $T_w$ so that their integrals over the unit sphere are zero. Under this additional restriction, they satisfy the relations [1] $$\nabla_1^2 P_w = -rv_r, $$ $$\nabla_1^2 T_w = -\Lambda_1\cdot w, $$ where $\nabla_1^2$ and $\Lambda_1$ denote the dimensionless Laplacian and surface curl, respectively. These operations are defined in the spherical coordinates $(r,\lambda,\theta)$ by $$ \nabla_1^2 = \frac{1}{\sin\theta}\partial_\theta(\sin\theta\partial_\theta) +\frac{1}{\sin^2\theta}\partial_\lambda^2, $$ $$ \Lambda_1\cdot w = \frac{1}{\sin\theta}[\partial_\theta(w_\lambda\sin\theta) -\partial_\lambda w_\theta]. $$ These constraints are imposed in the solver by requiring that the zeroth Fourier modes in $\lambda$ and $\theta$ are zero. This actually means that if $P_w$ is represented by a Chebyshev-Fourier-Fourier series, i.e., $$\sum_{i=0}^n\sum_{j=-n/2}^{n/2}\sum_{k=-n/2}^{n/2}a_{i,j,k}T_i(r)e^{\mathbf{i}j\lambda}e^{\mathbf{i}k\theta},$$ then $a_{i,0,0} = 0$ for $0\leq i\leq n$.
The PTdecomposition
command
Ballfun has a command PTdecomposition
that computes the PT decomposition of a divergence-free vector field. The decomposition of $v$ can be computed as follows:
[Pw, Tw] = PTdecomposition( w ); subplot(1,2,1) plot(Pw), title('poloidal scalar') subplot(1,2,2) plot(Tw), title('toroidal scalar')
Visualizing the decomposition
Here are plots of the decomposition.
[P,T] = ballfunv.PT2ballfunv(Pw,Tw); subplot(1,3,1) quiver( w ), title('divergence-free field') subplot(1,3,2) quiver( P ), title('poloidal component') subplot(1,3,3) quiver( T ), title('toroidal component')
Recovering the vector field from the PT scalars
The original vector field can be recovered from the poloidal and toroidal scalars since $$ w = \nabla\times\nabla\times(rP_w\hat{r}) + \nabla\times(rT_w\hat{r}). $$ This operation is implemented in Ballfun in the PT2ballfunv
command:
v = ballfunv.PT2ballfunv(Pw, Tw);
As a sanity check, we confirm that the decomposition has been successful:
norm( v - w )
ans = 1.281358965881723e-12
References
[1] G. Backus, Poloidal and toroidal fields in geomagnetic field modelling, Reviews of Geophysics, 24 (1986), pp. 75-109.
[2] N. Boullé and A. Townsend, Computing with functions on the ball, in preparation.
[3] Y. Tong, S. Lombeyda, A. Hirani, and M. Desbrun, Discrete multiscale vector field decomposition, ACM Trans. Graphics, 22 (2003), pp. 445-452.