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.
Questions:
- 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?