As the title said, I want to solve a coordinate transformed heat equation using fourier spectral method. In particular, I am interested in transforming an uniform grid into an adaptive non-uniform grid.

Without the transformation, the heat equation on an uniform grid $ \xi $ is $$U_t = U_{\xi\xi}$$

We can solve it numerically using fourier spectral method. $$U^{n+1} = e^{-k^2}U^n $$

I would like to attach images to show the graphs, but I'm unable to do so since it's a new account.

With transformation, an uniform grid is transformed to nonuniform grid, $\xi \rightarrow x$. The heat equation becomes $$U_t=\frac{\partial\xi}{\partial x}\frac{\partial}{\partial \xi}\left(\frac{\partial U}{\partial \xi}\frac{\partial\xi}{\partial x}\right)$$ or in a simpler form
$$U_t=\frac{1}{x_\xi}\left(\frac{U_\xi}{x_\xi}\right)_\xi$$ After applying fourier transform, we have $$\widetilde{U_t} = -k^2\widetilde{\left(\frac{1}{x_\xi}\right)}^2\widetilde{U} $$ , where tilde denotes the Fourier transform, and I have used the convolution theorem. Similarly, I want to solve it numerically,

$$\widetilde{U}^{n+1} = e^{-k^2\widetilde{\left(\frac{1}{x_\xi}\right)}^2}\widetilde{U}^{n}$$

The problem is, the method does not work because the solution is unstable. Why does it not work?

I found a similar question in FFT Poisson Solver for non-uniform grid One of the answer claimed that $F[g(ξ)U_{ξξ(ξ)}]≠k^2F[g](k)F[p](k)$ is simply not allowed, but I am not convinced. Why cant we apply the convolution theorem?

  • 2
    $\begingroup$ Note that convolution theorem says: $$\mathcal{F}\{ f(x) g(x) \} = \mathcal{F} \{ f(x) \} * \mathcal{F} \{ g(x) \} = \int_{\Omega} \mathcal{F} \{ f\} (k^{‘}) \mathcal{F} \{ g\} (k-k^{‘}) dk^{‘}$$ $\endgroup$ Commented Feb 24, 2020 at 2:27
  • $\begingroup$ And this convolution theorem is really unlikely to be useful for you when you can’t calculate the right handside integral easily. So, the linked answer from @WolfgangBangerth is pretty complete and accurate. $\endgroup$ Commented Feb 24, 2020 at 2:32
  • 2
    $\begingroup$ What makes you not convinced that $F[g(ξ)U_{ξξ}(ξ)]≠k^2F[g](k)F[p](k)$? It seems pretty obvious to me that that's the case :-) $\endgroup$ Commented Feb 24, 2020 at 12:44

1 Answer 1


I elaborate my comment to show you that probably convolution theorem won't help you here and certainly: $\mathcal{F} \{ g(\xi)\frac{\partial^{2} U}{\partial\xi^{2}} \} \neq \mathcal{F} \{ g(\xi) \} \mathcal{F} \{ \frac{\partial^{2} U}{\partial \xi^{2}} \}$. First of all, the convolution theorem introduces the $*$ operator as:

$$h(\mathbf{x}) = f(\mathbf{x}) * g(\mathbf{x}) = \int_{\Omega} f(\mathbf{x}^{'}) g(\mathbf{x} - \mathbf{x}^{'}) d^{n}\mathbf{x}^{'}$$

Where $f$ and $g$ are functions: $f, g: \mathbb{R}^{n} \rightarrow \mathbb{R}$ and $\mathbf{x} \in \mathbb{R}^{n}$.

In terms of Fourier transforms, the convolution theorem says:

$$\mathcal{F}\{ f(\mathbf{x}) g (\mathbf{x}) \} (\mathbf{k}) = \mathcal{F} \{ f \} (\mathbf{k}) * \mathcal{F} \{ g \} (\mathbf{k}) = \int_{\Omega_{\mathbf{k}}} \mathcal{F}\{f\}(\mathbf{k}^{'}) \mathcal{F}\{g\}(\mathbf{k} - \mathbf{k}^{'}) d^{3} \mathbf{k}^{'} \neq \mathcal{F} \{ f \} (\mathbf{k}) \mathcal{F} \{ g \} (\mathbf{k})$$

So, in your case:

$$\mathcal{F} \{ g(\xi) \frac{\partial^{2} U(\xi)}{\partial \xi^{2}} \} = \mathcal{F} \{ g \} * \mathcal{F} \{ \frac{\partial^{2} U}{\partial \xi^{2}} \} = \int_{\Omega_{k}} \mathcal{F}\{g\}(k^{'}) \mathcal{F} \{ \frac{\partial^{2} U}{\partial \xi^{2}} \} (k-k^{'}) dk^{'} = \\ -\int_{\Omega_{k}} (k-k^{'})^{2}\mathcal{F}\{g\}(k^{'}) \mathcal{F} \{ U \} (k-k^{'}) dk^{'}$$

I would say it's impossible or at least it's really difficult to use the above integral when you can't simply factorize the unknown $\mathcal{F} \{ U \} (k-k^{'})$ out of the integral. So, in my opinion this way is probably a dead end.

Update: You transformed your initial heat equation to this one:

$$\frac{\partial U}{\partial t} = \frac{\partial \xi}{\partial x} \frac{\partial}{\partial \xi} \Bigg( \frac{\partial \xi}{\partial x} \frac{\partial U}{\partial \xi}\Bigg)$$

The main problem as I described above is that you thought the $*$ operator is a simple algebraic multiplication, which is not. So, if I take Fourier transform from your equation, I would have:

$$\frac{\partial \mathcal{F} \{ U \}}{\partial t} = \mathcal{F}\{ \frac{\partial \xi}{\partial x} \} * \mathcal{F}\{ \frac{\partial}{\partial \xi}\Bigg(\frac{\partial \xi}{\partial x} \frac{\partial U}{\partial \xi} \Bigg) \} = \mathcal{F}\{ \frac{\partial \xi}{\partial x} \} * \Bigg (ik \mathcal{F} \{ \frac{\partial \xi}{\partial x} \frac{\partial U}{\partial \xi} \} \Bigg ) = \mathcal{F}\{ \frac{\partial \xi}{\partial x} \} * \Bigg( ik \mathcal{F}\{ \frac{\partial \xi}{\partial x} \} * \mathcal{F} \{ \frac{\partial U}{\partial \xi} \} \Bigg) = -\mathcal{F}\{ \frac{\partial \xi}{\partial x} \} * \Bigg ( (k\mathcal{F}\{ \frac{\partial \xi}{\partial x} \}) * (k\mathcal{F} \{ U \}) \Bigg )$$

So the final equation is:

$$\frac{\partial \mathcal{F} \{ U \}}{\partial t} = -\mathcal{F}\{ \frac{\partial \xi}{\partial x} \} * \Bigg ( (k\mathcal{F}\{ \frac{\partial \xi}{\partial x} \}) * (k\mathcal{F} \{ U \}) \Bigg )$$

Or in simpler form by taking $\mathcal{F} \{ \frac{\partial \xi}{\partial x} \} = \tilde{\xi}$ and $\mathcal{F} \{ U \} = \tilde{U}$:

$$\frac{\partial \tilde{U}}{\partial t} = -\tilde{\xi} * ((k \tilde{\xi}) * (k \tilde{U}))$$

The above equation is extraordinarily difficult to solve cause it's a integro-differential equation in comparison to your initial heat equation.

Update 2: I was thinking if it is really possible to use above equation practically and I think still there are some hopes!:

$$-\tilde{\xi} * ((k \tilde{\xi}) * (k \tilde{U})) = - \int_{\Omega_{k}} \int_{\Omega_{k}} k^{'} (k - k^{'}-k^{''}) \tilde{\xi}(k^{'}) \tilde{\xi}(k^{''}) \tilde{U}(k-k^{'}-k^{''},t) dk^{'} dk^{''}$$


$$\mathcal{K}(k^{'},k^{''};k,t) = k^{'} (k - k^{'}-k^{''}) \tilde{\xi}(k^{'}) \tilde{\xi}(k^{''}) \tilde{U}(k-k^{'}-k^{''},t)$$


$$\frac{\partial \tilde{U}(k,t)}{\partial t} = -\int_{\Omega_{k}} \int_{\Omega_{k}} \mathcal{K} (k^{'},k^{''};k,t) dk^{'} dk^{''}$$

By using really basic approximation of integral by summation as well as Forward-Euler method to integrate in time:

$$\frac{\tilde{U}_{k}^{t+\Delta t} - \tilde{U}_{k}^{t}}{\Delta t} = - \sum_{k^{'}} \sum_{k^{''}} \mathcal{K}_{k}^{t}(k^{'},k^{''}) \Delta k^{'} \Delta k^{''}$$

So, your update equation would be:

$$\tilde{U}_{k}^{t+\Delta t} = \tilde{U}_{k}^{t} - \Delta t \Bigg( \sum_{k^{'}} \sum_{k^{''}} \mathcal{K}_{k}^{t}(k^{'},k^{''}) \Delta k^{'} \Delta k^{''} \Bigg)$$

In each time-step the summation or integral of right hand side is known because you know your initial condition and you can calculate the integral or summation for your initial condition as well. I have no idea how stable or unstable would be this scheme, it worth to try at least one time.

  • $\begingroup$ thank you for elaborating your comment. I think what i missed is the ∗ operator. I thought it was only a simple multiplication, but im wrong. My question is actually based on the application of moving mesh on fourier method, such as the following paper reader.elsevier.com/reader/sd/pii/… $\endgroup$ Commented Feb 25, 2020 at 7:14
  • $\begingroup$ Eq.(25) shows that they fourier transform the entire equation on the RHS. So I have no idea how they can compute the RHS numerically, without passing the fourier transform to each terms within the bracket, based on convolution theorem. $\endgroup$ Commented Feb 25, 2020 at 7:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.