Purpose
- The package "BariS" solves the 1-D viscous Burgers' equation with periodic boundary condition. The spatial discretization is a Fourier psuedospectral method. Three methods were proposed to calculate the nonlinear term: (i) evaluating Fourier coefficients exactly with the convolution; (ii) padding zeros in the k-space; and (iii) filtering with the two thirds rule. For the temporal discretization, a second-order symmetric Strang splitting was used. The linear diffusion term was integrated exactly, while the nonlinear term by a third-order Runge-Kutta scheme.
Specifications
- Name: BariS.
- Author: Feng Chen.
- Finishing date: 10/13/2012.
- Languages: MATLAB.
Simple Example
- Equation:
ut+uux=ϵuxx,x∈(0,2π),u is periodic.
- Parameters:
T=2,ϵ=0.001,Nx=1024,δt=0.005.
- Initial condition:
u0(x)=sin(x).
Quick Start
- Compiling and running:
matlab Bari_Driver_Serial
- Graphics:
- CPU: Intel(R) Xeon(R) CPU X5550 @2.67GHz.
- OS: CentOS release 6.4 (Final).
- Release: MATLAB R2012a.
References
- Lloyd N. Trefethen. Spectral Methods in MATLAB (Software, Environments, Tools), SIAM, (2001).
- Canuto, C., Hussaini, M.Y., Quarteroni, A., Zang, Th.A. Spectral Methods: Fundamentals in Single Domains (Scientific Computation), Springer, (2007).
Code Highlights
%%% calculate the nonlinear term with convolution % re-order the modes uu = [ui(lcut+1:N); ui(1:lcut)]/N; % convolution uc = conv(uu,uu); % re-order to matlab convention m = length(uc); ucc = [uc((m+1)/2:m); uc(1:(m-1)/2)]*2*N; % first-order derivative du = rfft_grad_1d(ucc, 1); % cut off the high modes rhs = [du(1:lcut); du(lcut+N:m)]/2; rhs = -rhs/2;
No comments:
Post a Comment