I'm trying to simulate the scattering of a wave-packet at a potential barrier in Python. I'm using a Fourier Transform method (not sure if its the same as the Split-Step method), where I apply Fourier Transform on my initial wavepacket (plane wave in a gaussian envelope) to get the wavefunction in momentum-space: $$\phi(k) = \int^{\infty}_{-\infty} \psi(x) e^{ikx} dx $$ I then calculate the dispersion term, $\omega$, at each $k$ value, $\omega = \frac{\hbar k^2}{2m}$. I can then incorporate the time-evolution operator $e^{-i\omega t}$. This allows me to obtain $\psi(x)$ at a given time:

$$\psi(x,t) = \int^{\infty}_{-\infty} \phi(k) e^{-ikx}e^{-i\omega t}$$ which I achieve through an Inverse Fourier Transform of $\phi(k)e^{-i\omega t}$.

My wavepacket moves as expected, but I am now trying to incorporate a potential barrier. To start, I am trying to get my wave-packet to reflect off of a barrier (like a particle in a box).

I'm a bit unsure of how to implement this into my code. This problem is usually described by having both a incoming and reflected wave in the region before the barrier, so I have implemented a 'reflected' wave-packet which is simply a mirror image of the initial wave-packet with its amplitudes reversed. This can be manipulated to simulate the wave reflecting off the barrier but I'm wondering if there is a more trivial solution.


  • Is there a way to incorpate reflection/transmission at a barrier using my method of propagating the wave-packet?
  • I've seen this problem solved using a finite difference method to solve the Schrodinger equation instead, is there an advantage of using that method?
  • $\begingroup$ I think that you need to find the wavefunctions for your potential barrier. Then do a convolution with your spectrum. $\endgroup$ – nicoguaro Mar 9 '19 at 15:42
  • $\begingroup$ So define a function for my potential barrier, Fourier Transform it and then convolve with my wavepacket in k-space? Thanks for the suggestion! $\endgroup$ – FeelsToWaltz Mar 13 '19 at 11:34

The neat thing about Fourier codes is that you can achieve very high order derivatives and if you are describing physics which is about waves, then the trigonometric base functions are a good choice. You also have a reasonably fast transform in $\mathcal O(n\log(n)$.

The bad thing about Fourier codes is, that they can only really work well in periodic settings, and they refuse to work wherever you have jumps in your profile.

The best way to describe this is wiki: Fourier rect or wiki: Gibbs phenomenon. If you transform a rect-function into Fourier space you get a nasty sinc function in your spectrum. If your barrier should look something like this, then your Fourier spectrum will deteriorate rapidly and you will not be able to fix that with increasing resolution.

It might at least be advisable to have your barrier be 'smooth' so that the Fourier base functions have a chance at estimating them. It might be advisable to move away from the Fourier-base towards FEM/FV altogether.

  • $\begingroup$ Thanks! I realised that using the Fourier method was perhaps a but too complicated for what I needed to do. I have since used a FDTD method to solve the Schrodinger Equation instead and it works perfectly! $\endgroup$ – FeelsToWaltz Mar 22 '19 at 15:30
  • $\begingroup$ You're welcome! $\endgroup$ – MPIchael Mar 22 '19 at 15:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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