1D convecLinExpl

download 1D convecLinExpl

of 2

Transcript of 1D convecLinExpl

  • 8/18/2019 1D convecLinExpl

    1/2

    # N_KAID 18/02/2016 # Step 1: Explicit 1D convection equation# Python 2.7.11 |Anaconda 2.4.1 (64-bit)

    import numpy as np # librairie numeriqueimport matplotlib.pyplot as pl # librairie graphique

    nx = 5nt = 5

    dt = 0.1c = 1.00dx = 0.1x=np.linspace(0.,0.5 ,nx+1) # l axe des “x” up1=np.zeros(nx+1) # declarer un vecteur U(n+1) de 6 noeuds

    # initilaliser a zeroup1[0]=1. ; up1[5]=0. # Condition aux limites U(0)=1.0 et U(5)=0.0pl.plot(x,up1, ’-b’ ) # Afficher la fonction init de U(x,t)

    for it in range (1,nt): # boucle dans le tempsun = up1.copy()for i in range (1,nx-1): # boucle dans l’espace

    up1[i] = un[i] - c*dt/dx*(un[i] - un[i-1])# end for pl.plot(x,up1, ’-r’ ) # Afficher la fonction de U(x,t) a chaque iteration

    # end for Condition initial (1 ere Itération)

    un1.00.00.00.00.00.0

    up11.00.00.00.00.00.0

    x0.00.10.20.30.40.5

    2 éme Itération

    un1.00.00.00.0

    0.00.0

    up11.01.00.00.0

    0.00.0

    x0.00.10.20.3

    0.40.5

    3 éme Itération

    un1.01.00.0

    0.00.00.0

    up11.01.01.0

    0.00.00.0

    x0.00.10.2

    0.30.40.5

  • 8/18/2019 1D convecLinExpl

    2/2

    4 éme Itération

    MATLAB CODE

    nx = 5;nt = 5;dt = 0.1;c = 1.00;dx = 0.1;x=linspace(0.0,0.5 ,nx+1) ;up1=zeros(nx+1) ;

    % declarer un vecteur U(n+1) de 6 noeuds% initilaliser a zeroup1(1)=1.0 ;up1(6)=0.0 ;% Condition aux limites U(0)=1.0 et U(5)=0.0hold onplot(x,up1, '-b' ) % Tracer la fonction init de U(x,t)

    %% boucle dans le tempsfor it =1:nt

    un = up1 ;% boucle dans l'espace

    for i = 2:nx

    up1(i) = un(i) - c*dt/dx*(un(i) - un(i-1))end% Tracer la fonction de U(x,t) a chaque iterationhold onplot(x,up1, '-r' )

    end

    un1.01.01.00.00.00.0

    up11.01.01.01.00.00.0

    x0.00.10.20.30.40.5