I need to solve following partial differential equation with Fourier transform numerically.

$ \frac{\partial T}{\partial t} = \nabla(c\nabla T) $

where T is temperature, c heat conductivity and t is time.

Now the problem is c itself has space dependence. Had it not been after Fourier transform equation would look like $ \frac{\partial \tilde T}{\partial t} = -k^2c\tilde T $

How should Fourier transform of first equation look like?

What I am doing is as follows:

  1. Take Fourier transform of T. Multiply corresponding values of c(in real space) and T (in Fourier space). i.e. evaluate $g = k\cdot i \cdot c \cdot\tilde T$

  2. Take $g$ back to real space. Now $g = c\nabla T$

  3. Take $g$ back to Fourier space . Evaulate $f = k \cdot i \cdot \tilde g$

  4. Take $f$ to real space. Now $f$ should be $\nabla c \nabla T$

But results of the above procedure are not matching with Finite Difference approach. What am I missing here? Using convolution theorem seems difficult. Is using convolution theorem the only option?

Thanks for any help in advance

  • $\begingroup$ Why do you think it should match finite difference? Even if $c$ was constant I doubt they match. $\endgroup$
    – timur
    Sep 2, 2012 at 1:11
  • $\begingroup$ @timur, there is difference of nearly factor of two in the results of FFT and Finite difference. In sufficiently small time step results of FFT and Finite difference must be identical. $\endgroup$
    – alekhine
    Sep 2, 2012 at 5:02
  • $\begingroup$ I don't think the results are supposed to match. Here's why I think so. (I could be wrong.) If you use finite difference, which method do you use for the time variable? If you use an explicit method, the domain of influence/dependence of one cell is only limited to nearby cells in the case of finite difference. You expand the domain of influence/dependence of one cell to be the whole domain by taking Fourier transform. $\endgroup$
    – Tunococ
    Sep 5, 2012 at 6:43

2 Answers 2


To evaluate $\nabla(c\nabla T)$ in Fourier space, you need to do the following. Suppose that you are given $\hat T$, which is the Fourier image of $T$.

  1. Compute $\hat g(k)=ik\hat T(k)$. This corresponds to real space gradient.
  2. $g= \mathrm{IFT}\,\hat g$, the inverse Fourier transform.
  3. $f=cg$.
  4. $\hat f = \mathrm{FT}\,f$, the Fourier transform.
  5. Compute $\hat r(k)=ik\cdot\hat f(k)$. Note the scalar product. This corresponds to real space divergence.
  6. $r= \mathrm{IFT}\,\hat r$, the inverse Fourier transform.

Now you have $r = \nabla\cdot(c\nabla T)$. I think in practice, you don't need step 6, because the left hand side $\partial T/\partial t$ can be computed in Fourier space directly from $\hat T$. You can also write all the steps in one formula $$ \frac{\partial\hat T}{\partial t} = ik\cdot\mathrm{FT} (c\cdot\mathrm{IFT}(ik\hat{T})). $$


Not sure why I can't comment below your question, so I'm posting a comment here: The fourier transform will be a convolution, which is a bit nasty to work with, i.e. you get that:

$$\mathcal{F}(c T) = \mathcal{F}(c) \star \mathcal{F}(T)$$

Here $\mathcal{F}(f) = $ Fourier transform of $f$. Note that

$$ \mathcal{F}(c) \star \mathcal{F}(T) (s) = \int_{\infty}^{\infty} \mathcal{F}(c)(s - t) \mathcal{F}(T) (t) dt$$

This will couple all the Fourier modes together. In my humble opinion, the Fourier transform is going to be a bit nasty numerically, though maybe still do-able. Unfortunately, I am not able to suggest another alternative.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .