%  test10.m          demo8  pour l X   demo7_2 pour octave 6.4 
%  cas  d un cfl exactement un
%  advection avec conditions limites periodiques
%  schema explicite  decentre ;  creneau  ,  
%  fd, 14 janvier 2K, 21 fevrier 2k, 15 janvier 2002, 
%      17 janvier 2005, 05 fevreir 2006, fevrier 2025
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfl=1. ;  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; 
% label (chcfl) at 0.1,-0.1
% gset yrange[-0.2:1.2] ; gset xrange[-0: 1.0] ; 
%%%%%%% axis ([0 1 -.2 1.2]) 
%%%%%%% title (' Advection d un creneau       Conditions limites periodiques      Schema  explicite decentre ') ;   
%%%%%%% xlabel (titx) ;

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

%%%%%%% xlabel (titx1) ;
dt=cfl*dx;    t=0:dt:tmax;   m=length(t)-1 ; 
ue=zeros(n,1) ; ue(1:n,1)=u0(1:n) ; 
V=ue  ; U=V ;  W=V ;  
%  debut de la boucle en temps
for i=1:m ; 
W(2:n,1)   = U(2:n,1) - cfl * (U(2:n,1)-U(1:n-1,1)) ;
W(1:1,1)   = W(n:n,1) ; V=W ;   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),"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 -.05  1.05])
title('schema decentre avec CFL = 1')
print -djpg figure-8.jpg
print -dpdf figure-8.pdf

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




