%  test9.m    demo6 por l X      demo6_2 pour octave 6.4
%  advection avec conditions limites periodiques
%  schema de Lax-Wendroff ;  creneau  ,  
%  fd, 14 janvier 2K, 18 fevrier 2k, 15 janvier 2002,
%      17 janvier 2005, 05 fevreir 2006, fevrier 2025
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfl=0.8 ;  tmax = 1. ;  n1=101;   dx=1/(n1-1) ;
%%%% [chcfl,msg] = sprintf (' nombre de Courant : %5.2f',cfl) ;
%%%% [chn1,msg] = sprintf ('        nombre de mailles : %3i',n1-1) ; 
%%%% [chtps,msg] = sprintf ('        temps final  : %5.2f',tmax);chtps ; 
%%%% titx = [chcfl , chn1] ; titx ;
%%%% titx1 = [chcfl , chn1 , chtps] ; titx1 ; 
x=0:dx:1 ;   n=length(x) ; 
%   la condition initiale est un creneau 
u0=zeros(n,1) ;  u0((n-1)/4:3*(n-1)/4,1)=1 ; 
% gset yrange[-0.2:1.2] ; 
% gset xrange[0.: 1.0] ; gset yrange[-0.4:1.5]
%%%% axis ([0 1 -.4 1.5]) 

plot (x,u0,'*;condition initiale;')  ;
axis ([0 1 -.21  1.31])
pause (1.5)

ue = u0;    dt=cfl*dx;    t=0:dt:tmax;   m=length(t)-1 ; 
V=zeros(n,1);  V(1:n,1)=u0(1:n);
%%%%title ('Advection d un creneau   Conditions limites periodiques   Schema de Lax Wendroff')  
% gset yrange[-0.4:1.5]
U=V;  for i=1:m ; 
W(1:n-1,1) = 0.5*(U(1:n-1,1)+U(2:n,1))-(0.5*dt/dx)*   (U(2:n,1)-U(1:n-1,1));
% W(n:n,1)   = 0.5*(U(n:n,1)+U(1:1,1))  -(0.5*dt/dx)*   (U(1:1,1)-U(n:n,1));
W(n:n,1)   = W(1:1,1) ; 
V(2:n,1) = U(2:n,1) -dt/dx*(W(2:n,1)-W(1:n-1,1));
% V(1:1,1) = U(1:1,1) -dt/dx*(W(1:1,1)-W(n:n,1)) ;    
V( 1:1,1) = V(n:n,1) ;     U=V;
%   solution exacte 
    for j=1:n ; zz =  (j*dx- i*dt) / dx ; mm = round (zz) ;
    if mm<=0 ;    p=mm+n-1; mu=mm ; 
    while p<=0 ; pp=mm ;  p=pp+n-1 ; mm=p ; end ; mm=p; 
    zz = zz + mm-mu ; end ; 
    if mm==1 ;  mmm1=n-1; mmp1 = 2 ; else ; if mm==n; mmm1=n-1; mmp1=2 ;
    else mmm1=mm-1 ; mmp1 = mm+1 ; end ; end ; 
    if mm <= zz ; ue(j:j,1) = (1-zz+mm)*u0(mm)+(zz-mm)*u0(mmp1);
    else  ue(j:j,1) = (mm-zz)*u0(mmm1)+ (1+zz-mm)*u0(mm) ; end ;  end;
%   fin de la solution exacte
% plot(x,ue(:,1),"b;solution exacte;",x,U(:,1),'*;solution approchee;',x,U(:,1),"r;;")
%        plot(x,ue(:,1),"b;;", x,U(:,1),'*;;',x,U(:,1),"r;;")
%%%%        plot(x,ue(:,1),"ob;;"  ,   x,U(:,1),'*;;' )
end ;


plot(x,ue(:,1),"b;solution exacte;", x,U(:,1),"*k;solution approchee;"  , x,U(:,1),"k;;") ; 
axis ([0 1 -.21  1.31])
title('schema de Lax Wendroff pour un creneau')
print -djpg figure-6.jpg
print -dpdf figure-6.pdf

	
%
%   gset terminal postscript ;  gset output "octave/LaxWendroff.ps" ;  
%%%% plot(x,ue(:,1),"b;solution exacte;", x,U(:,1),'*;solution approchee;',x,U(:,1),"r;;")



