Mapping

dec.spectral.varphi(x)[source]
\[\begin{split}\varphi:&& [-1,1]\to[0,\pi]\\ && x\mapsto\arccos(-x)\end{split}\]
>>> varphi(-1) == 0
True
>>> varphi(+1) == pi
True
dec.spectral.varphi_inv(x)[source]
\[\begin{split}\varphi^{-1}:&& [0,\pi]\to[-1,1]\\ && \theta\mapsto-\cos(\theta)\end{split}\]
>>> varphi_inv(0) == -1
True
>>> varphi_inv(pi) == +1
True

Helper Functions

dec.spectral.alpha0(N, x)[source]
\[\begin{split}\alpha_{N}(x)=\frac{1}{N} \begin{cases} \cot\frac{x}{2}\,\sin\frac{Nx}{2} & \text{if N even,}\\ \csc\frac{x}{2}\,\sin\frac{Nx}{2} & \text{if N odd.} \end{cases}\end{split}\]
>>> def a0(N, i): return round(alpha0(N, i*2*pi/N), 15)
>>> (a0(5, 0), a0(5, 1), a0(5, 2)) == (1.0, 0.0, 0.0)
True
>>> (a0(6, 0), a0(6, 1), a0(6, 2)) == (1.0, 0.0, 0.0)
True
dec.spectral.beta0(N, x)[source]
\[\begin{split}\beta_{N}(x)= \begin{cases} \frac{1}{2\pi} -\frac{1}{4}\cos\frac{Nx}{2} + \frac{1}{N}\sum\limits_{n=1}^{N/2} \frac{n\cos nx}{\sin\frac{n\pi}{N}} & \text{if N even,}\\ \frac{1}{2\pi} + \frac{1}{N}\sum\limits_{n=1}^{(N-1)/2} \frac{n\cos nx}{\sin\frac{n\pi}{N}} & \text{if N odd.} \end{cases}\end{split}\]
dec.spectral.alpha(N, n, x)[source]
\[\alpha_{N, n} (x) = \alpha_N(x-h n)\]
dec.spectral.beta(N, n, x)[source]
\[\beta_{N, n} (x) = \beta_N(x-h n)\]
dec.spectral.rho(N, n, x)[source]
\[\rho_{N, n}(x) = 2 \gamma_{2N-2, n}\delta_N(x) + 2 \gamma_{2N-2, N-n-1} \delta_N(\pi-x)\]
dec.spectral.gamma(N, k)[source]
\[\begin{split}\gamma_{N, n} = \int_0^{\frac{h}{2}=\frac{\pi}{N}} \beta_{N,n}(x) \, dx = \begin{cases} \frac{1}{2N} - \frac{(-1)^k}{2N} + \frac{1}{N}\sum\limits_{n=1}^{N/2} \frac{\sin(2 k n \pi/N) - \sin((2 k-1) n \pi/N)} {\sin\frac{n\pi}{N}} & \text{if N even,}\\ \frac{1}{2N} + \frac{1}{N}\sum\limits_{n=1}^{(N-1)/2} \frac{\sin(2 k n \pi/N) - \sin((2 k-1) n \pi/N)}{\sin\frac{n\pi}{N}} & \text{if N odd.} \end{cases}\end{split}\]
dec.spectral.delta(N, x)[source]

Basis function for dual half-edge at the boundary.

\[\delta_{N}(x)=\left((N-1)^{2}\alpha_{2N-2,0}(x)+\frac{1}{2}\cos\left((N-1)x\right)\right)\sin(x)\]

Periodic Basis Functions

dec.spectral.phi0(N, n, x)[source]

Basis functions for primal 0-forms.

\[\phi_{N,n}^{0}(x)=\alpha_{N,n}(x)\]
dec.spectral.phi1(N, n, x)[source]

Basis functions for primal 1-forms.

\[\phi_{N,n}^{1}(x)=\beta_{N,n+\frac{1}{2}}(x)\]
dec.spectral.phid0(N, n, x)[source]

Basis functions for dual 0-forms.

\[\widetilde{\phi}_{N,n}^{0}(x)=\alpha_{N,n+\frac{1}{2}}(x)\]
dec.spectral.phid1(N, n, x)[source]

Basis functions for dual 1-forms.

\[\widetilde{\phi}_{N,n}^{1}(x)=\alpha_{N,n}(x)\]

(Source code, png, hires.png, pdf)

_images/bases-1.png

Regular Basis Functions

dec.spectral.kappa0(N, n, x)[source]

Basis functions for primal 0-forms.

\[\begin{split}\kappa_{N,n}^{0}(x) = \begin{cases} \alpha_{2N-2,n}(x), & n\in\{0,N-1\}\\ \alpha_{2N-2,n}(x)+\alpha_{2N-2,2N-2-n}(x), & n\in\{1,\dots,N-2\} \end{cases}\end{split}\]
dec.spectral.kappa1(N, n, x)[source]
\[\kappa_{N,n}^{1}(x) = \left( \beta_{2N-2,n+\frac{1}{2}}(x)- \beta_{2N-2,2N-3-n+\frac{1}{2}}(x)\right) \mathbf{d}x,n\in\{0,\dots,N-2\}\]
dec.spectral.kappad0(N, n, x)[source]
\[\widetilde{\kappa}_{N,n}^{0}(x)= \alpha_{2N-2,\, n+\frac{1}{2}}(x)+ \alpha_{2N-2,\,2N-3-n+\frac{1}{2}}(x),\quad n\in\{0,\dots,N-2\}\]
dec.spectral.kappad1(N, n, x)[source]
\[\begin{split}\widetilde{\kappa}_{N,n}^{1}(x)= \begin{cases} \delta(x)\mathbf{d}x & \qquad n=0\\ \left(\beta_{2N-2,n}(x)-\beta_{2N-2,2N-2-n}(x)-\rho_{N,n}(x)\right)\mathbf{d}x & \qquad n\in\{1,\dots,N-2\}\\ \delta(\pi-x)\mathbf{d}x & \qquad n=N-1 \end{cases}\end{split}\]

Even 0-forms, Odd 1-forms

(Source code)

Chebyshev Basis Functions

dec.spectral.psi0(N, n, x)[source]

Basis functions for primal 0-forms.

\[\psi_{N,n}^{0}(x)=\kappa_{N,n}^{0}(\arccos(-x))\]
dec.spectral.psi1(N, n, x)[source]

Basis functions for primal 1-forms.

\[\psi_{N,n}^{1}(x)\mathbf{d}x= \kappa_{N,n}^{1}(\arccos(-x))\frac{\mathbf{d}x}{\sqrt{1-x^{2}}}\]
dec.spectral.psid0(N, n, x)[source]

Basis functions for dual 0-forms.

\[\tilde{\psi}_{N,n}^{0}(x)=\tilde{\kappa}_{N,n}^{0}(\arccos(-x))\]
dec.spectral.psid1(N, n, x)[source]

Basis functions for dual 1-forms.

\[\tilde{\psi}_{N,n}^{1}(x)\mathbf{d}x=\tilde{\kappa}_{N,n}^{1}(\arccos(-x))\frac{\mathbf{d}x}{\sqrt{1-x^{2}}}\]

(Source code, png, hires.png, pdf)

_images/bases-3.png

\(\psi^0\) and \(\widetilde{\psi}^0\) match the Lagrange polynomials

dec.spectral.lagrange_polynomials(x)[source]

Lagrange Polynomials for the set of points defined by \(x_m\). The Lagrange Polynomials are such that they are 1 at the point, and 0 everywhere else.

\[\psi_{n}^{0}(x)=\prod_{m=0,m\neq n}^{N-1}\frac{x-x_{m}}{x_{n}-x_{m}}\]
>>> L = lagrange_polynomials([0, 1, 2])
>>> [l(0) for l in L]
[1.0, 0.0, -0.0]
>>> [l(1) for l in L]
[-0.0, 1.0, 0.0]
>>> [l(2) for l in L]
[0.0, -0.0, 1.0]

2D Periodic Basis Function

(Source code)

(Source code, png, hires.png, pdf)

_images/vector_field_plot.png