I am currently working on a project where I need to use Fourier spectral methods to solve the KS equation. I found this code which is using the Fourier spectral methods to solve the classic 1D heat equation. Here's the code:
""" Solving Heat Equation using pseudo-spectral and Forward Euler u_t= \alpha*u_xx BC= u(0)=0, u(2*pi)=0 IC=sin(x) """ import math import numpy import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import LinearLocator # Grid N = 64 # Number of steps h = 2*math.pi/N # step size x = h*numpy.arange(0,N) # discretize x-direction alpha = 0.5 # Thermal Diffusivity constant t = 0 dt = .001 # Initial conditions v = numpy.sin(x) I = complex(0,1) k = numpy.array([I*y for y in range(0,N/2) +  + range(-N/2+1,0)]) k2=k**2; # Setting up Plot tmax = 5; tplot = .1; plotgap = int(round(tplot/dt)) nplots = int(round(tmax/tplot)) data = numpy.zeros((nplots+1,N)) data[0,:] = v tdata = [t] for i in xrange(nplots): v_hat = numpy.fft.fft(v) for n in xrange(plotgap): v_hat = v_hat+dt*alpha*k2*v_hat # FE timestepping v = numpy.real(numpy.fft.ifft(v_hat)) # back to real space data[i+1,:] = v # real time vector t = t+plotgap*dt tdata.append(t)
I don't really understand how the code deals with the boundary conditions. I understand that the initial condition satisfies the boundary conditions. But in the code there is nothing about the boundary conditions.
How should I proceed to change the boundary conditions in this code? For exemple how would I compute periodic boundary conditions for the heat equation?