function [x,t,c] = UW_scheme(xf,N,T,K,U,c0) % ---- Numerical solution of the linear advection equation in a periodic domain ---- % c_t+ U * c_x = 0 with domain [0,xf] % given the initial condition c0. % ----------------------------------------------- % Sintax: % [x,t,c] = UW_scheme(xf,N,T,K,U,c0) % % Input: % xf end of our domain % N number of space intervals % T max time % K number of time intervals % U convection velocity % c0 initial condition % % Output: % x vector of spatial nodes % t vector of time nodes % c numerical solution % Space and time intervals size dx=xf/N; dt=T/K; % initialization of x and t vectors (nodes) x=linspace(0,xf,N+1)'; t=linspace(0,T,K+1)'; % Solution matrix c=zeros(N+1,K+1); % Initial conditions c(:,1) = c0(x); % Creating our matrix e = ones(N+1,1); B = spdiags([-e,e],[-1,0],N+1,N+1); I = speye(N+1); %"printing" courant number and numerical viscosity C0=(U*dt/dx) numerical_viscosity= U*dx*(1-C0)/2 %final metrix to compute the solution A = I - C0*B; %finding the solution for k=1:K c(1:end,k+1) = A*c(1:end,k); end