function p=upwind(q,cfl,b)
[~,n]=size(q);
if(b==1)
for i=2:1:n-1
du2 = q(i+1)-2*q(i)+q(i-1);
du = q(i+1)-q(i-1);
% for Lax-Wendoff scheme
p(i) = q(i)-cfl*du/2+cfl^2*du2/2;
end
p(1)=0;
p(n)=0;
end
if(b==2)
for i=2:1:n-1
du2 = q(i+1)-2*q(i)+q(i-1);
du = q(i+1)-q(i-1);
% for Lax scheme
p(i)=q(i)-cfl*du/2+du2/2;
end
p(1)=0;
p(n)=0;
end
if(b==3)
for i=2:1:n-1
du2 = q(i+1)-2*q(i)+q(i-1);
du = q(i+1)-q(i-1);
% for 1-st-order upwind
p(i)=q(i)-cfl*du/2+cfl*du2/2;
end
p(1)=0;
p(n)=0;
end
if(b==4)
for i=3:1:n-2
du21 = (-q(i+2)+2^4*q(i+1)-30*q(i)+2^4*q(i-1)-q(i-2))/12;
du = q(i+1)-q(i-1);
% for myself upwind scheme
p(i)=q(i)-cfl*du/2+cfl^2*du21/2;
end
p(1)=0;
p(2) = q(2)-cfl*(q(3)-q(1))/2+cfl*(q(3)-2*q(2)+q(1))/2;
p(n)=0;
p(n-1)=q(100)-cfl*(q(101)-q(99))/2+cfl*(q(101)-2*q(100)+q(99))/2;
end
return