Tipe probleme de simulation advection

Une petite question sur votre TIPE...

Messages : 0

Inscription : 10 nov. 2018 21:31

Profil de l'utilisateur : Élève de lycée

Tipe probleme de simulation advection

Message par zeine » 09 juin 2019 17:00

Bonjour ,
En ce qui concerne mon tipe , j'avais besoin de faire une simulation numerique avec python pour la resolution de l'equation d'advection mais le probleme c'est que cette figure reste inchangée meme lorsque j'augmente la vitesse de l'espece etudié , ce qui ne devrait pas être le cas est ce que qulqu'un a une idée svp ?
Et merci d'avance

Messages : 0

Inscription : 13 févr. 2018 09:22

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par matmeca_mcf1 » 09 juin 2019 17:41

Cela peut arriver avec Burgers si on a un choc transsonique (avec -1 pour x<0 et +1 si x>0 pour la CI) si on utilise un schéma de Roe sans correction entropique. Mais si c'est juste l'équation d'advection linéaire, je ne vois pas quel schéma donnerait ce résultat. Je suppose que vous utilisez un schéma amont.
Ancien ENS Cachan (maths) 1999--2003
Enseignant-Chercheur à l'Enseirb-Matmeca (Bordeaux INP) filière matmeca
Les opinions exprimées ci-dessus sont miennes et ne reflètent pas la position officielle de l'école dans laquelle j'enseigne.

Messages : 0

Inscription : 10 nov. 2018 21:31

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par zeine » 09 juin 2019 20:03

matmeca_mcf1 a écrit :
09 juin 2019 17:41
Cela peut arriver avec Burgers si on a un choc transsonique (avec -1 pour x<0 et +1 si x>0 pour la CI) si on utilise un schéma de Roe sans correction entropique. Mais si c'est juste l'équation d'advection linéaire, je ne vois pas quel schéma donnerait ce résultat. Je suppose que vous utilisez un schéma amont.
J'ai utilisé la methode des differences finies , en effuctuant une discretisation spatiale (differences centrees) tandis que pour le temps j'ai effectué une dicretisation par differences avant
J'ai procedè par la meme demarche pour la diffusion et ça marche trés bien lorsque je varie le coefficient de diffusion . Je ne comprends pas vraiment pourquoi .Je ne peut même pas exposé une interpretation pour le resultat

Messages : 0

Inscription : 13 févr. 2018 09:22

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par matmeca_mcf1 » 09 juin 2019 20:41

L'équation d'advection est
$$
\frac{\partial u}{\partial t}+a\frac{\partial u}{\partial x}=0
$$
Cette équation toute simple, et dont on connait la solution exacte n'est pas simple à discrétiser.

Le schéma numérique que vous décrivez me semble être:
$$
\frac{u_{i,n+1}-u_{i,n}}{\delta t}+a\frac{u_{i+1,n}-u_{i-1,n}}{2\delta x}=0
$$
C'est ce que l'on appelle le schéma centré. Il est instable et inutilisable. La solution numérique va exploser. Cela peut se voir avec une analyse de Von Neumann. Cela n'explique pas pourquoi votre solution reste constante en temps par contre. Le plus probable est une erreur de programmation.

Le schéma le plus simple que vous pouvez utiliser est le schéma amont qui est
  • Le schéma décentré à gauche lorsque a>0:
    $$
    \frac{u_{i,n+1}-u_{i,n}}{\delta t}+a\frac{u_{i,n}-u_{i-1,n}}{\delta x}=0
    $$
  • Le schéma décentré à droite lorsque a<0:
    $$
    \frac{u_{i,n+1}-u_{i,n}}{\delta t}+a\frac{u_{i+1,n}-u_{i,n}}{\delta x}=0
    $$
Le schéma amont est stable lorsque $ \lvert a\rvert\delta t/\delta x\leq1 $. C'est ce que l'on appelle la CFL.
Ancien ENS Cachan (maths) 1999--2003
Enseignant-Chercheur à l'Enseirb-Matmeca (Bordeaux INP) filière matmeca
Les opinions exprimées ci-dessus sont miennes et ne reflètent pas la position officielle de l'école dans laquelle j'enseigne.

Messages : 0

Inscription : 10 nov. 2018 21:31

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par zeine » 09 juin 2019 20:46

matmeca_mcf1 a écrit :
09 juin 2019 20:41
L'équation d'advection est
$$
\frac{\partial u}{\partial t}+a\frac{\partial u}{\partial x}=0
$$
Cette équation toute simple, et dont on connait la solution exacte n'est pas simple à discrétiser.

Le schéma numérique que vous décrivez me semble être:
$$
\frac{u_{i,n+1}-u_{i,n}}{\delta t}+a\frac{u_{i+1,n}-u_{i-1,n}}{2\delta x}=0
$$
C'est ce que l'on appelle le schéma centré. Il est instable et inutilisable. La solution numérique va exploser. Cela peut se voir avec une analyse de Von Neumann. Cela n'explique pas pourquoi votre solution reste constante en temps par contre. Le plus probable est une erreur de programmation.

Le schéma le plus simple que vous pouvez utiliser est le schéma amont qui est
  • Le schéma décentré à gauche lorsque a>0:
    $$
    \frac{u_{i,n+1}-u_{i,n}}{\delta t}+a\frac{u_{i,n}-u_{i-1,n}}{\delta x}=0
    $$
  • Le schéma décentré à droite lorsque a<0:
    $$
    \frac{u_{i,n+1}-u_{i,n}}{\delta t}+a\frac{u_{i+1,n}-u_{i,n}}{\delta x}=0
    $$
Le schéma amont est stable lorsque $ \lvert a\rvert\delta t/\delta x\leq1 $.
Mais pourquoi , ça marche trés bien pour l'equation de diffusion si c'etait une erreur de programmation ? Moi jr comprends pas , bon j'ai essayé de vous montrez le resultats que j'aai obtenue mais le site n'arrive pas à les telecharger , bon je vais essayer avec ce nouveau schema

Messages : 0

Inscription : 13 févr. 2018 09:22

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par matmeca_mcf1 » 09 juin 2019 20:59

Pour voir pourquoi le schéma centré est instable sur l'équation d'advection, il faut connaître l'analyse de Von Neumann. Elle n'est évidemment pas au programme en prépa. Vous connaissez les séries de Fourier?
Ancien ENS Cachan (maths) 1999--2003
Enseignant-Chercheur à l'Enseirb-Matmeca (Bordeaux INP) filière matmeca
Les opinions exprimées ci-dessus sont miennes et ne reflètent pas la position officielle de l'école dans laquelle j'enseigne.

Messages : 0

Inscription : 10 nov. 2018 21:31

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par zeine » 09 juin 2019 21:18

matmeca_mcf1 a écrit :
09 juin 2019 20:59
Pour voir pourquoi le schéma centré est instable sur l'équation d'advection, il faut connaître l'analyse de Von Neumann. Elle n'est évidemment pas au programme en prépa. Vous connaissez les séries de Fourier?
Les series de fourier sont exclus de notre programme mais j'en connais comme meme des notions

Messages : 3823

Inscription : 17 avr. 2012 21:19

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par bullquies » 09 juin 2019 21:24

Ecoute matmeca_mcf1 fait de son mieux, mais il ne va pas deviner ce qui ne va pas comme ça...

Peut-on voir ton code
The Axiom of Choice is obviously true, the Well-Ordering Principle is obviously false, and nobody knows about Zorn's Lemma. - Jerry Bona

Messages : 0

Inscription : 10 nov. 2018 21:31

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par zeine » 09 juin 2019 21:27

bullquies a écrit :
09 juin 2019 21:24
Ecoute matmeca_mcf1 fait de son mieux, mais il ne va pas deviner ce qui ne va pas comme ça...

Peut-on voir ton code
J'ai dèja mentionnè que le site n'arrive pas à telcherger les images

Messages : 0

Inscription : 10 nov. 2018 21:31

Profil de l'utilisateur : Élève de lycée

Re: Tipe probleme de simulation advection

Message par zeine » 09 juin 2019 21:51

bullquies a écrit :
09 juin 2019 21:24
Ecoute matmeca_mcf1 fait de son mieux, mais il ne va pas deviner ce qui ne va pas comme ça...

Peut-on voir ton code
Sinon si vous voulez voir le script et l'executer vous meme et l'executer pour voir les resultats le voilà :

import matplotlib.pyplot as plt
import numpy as np
import math

C0=3

# This function solves the Discretized space and time model
def solve(t,x,y,dx,dy,dt,u,v):
C = np.zeros((len(t), len(x), len(y))) # 3D array of Zeros
C[0] = initialise(C,x,y) # t=0
for k in range(len(t)):
for i in range(len(x)):
for j in range(len(y)):
if not(i==0 or j==0 or k==len(t)-1 or i==len(x)-1 or j==len(y)-1): # Exclude boundary changes
C[k+1][j] = Update_Rule(C[k],i,j,dx,dy,dt,u,v)
return C

# This function builds the 3D data set, C(t,x,y) and applies IC's to t=0
def initialise(C,x,y):
for i in range(len(x)):
for j in range(len(y)):
return C0 # Initialise the space


# Defines the update for x,y,t
def Update_Rule(C,i,j,dx,dy,dt,u,v):
dC_dx = (C[i+1][j] - C[i-1][j]) / 2*dx # 2nd order central diff
dC_dy = (C[j+1] - C[j-1]) /2*dy # 2nd order central diff
return C[j] + (u*dC_dx + v*dC_dy)*dt # Forward-Euler

# Parameters
x_min, x_max, y_min, y_max, t0, tf = -1.0, 1.0, -1.0, 1.0, 0.0,1
dx, dy, dt = 0.1, 0.1, 0.1e-3
u, v =6,6
x = np.arange(x_min, x_max, dx) # min, max, step
y = np.arange(y_min, y_max, dy) # min, max, step
t = np.arange(t0, tf, dt) # min, max, step
print(t[20])
# Solver
C = solve(t,x,y,dx,dy,dt,u,v)

# Illustrate all 4 possible "extend" settings:
time_index = [1,100,200,399] # the indices you want
times = ['{:04.1f}'.format(t*1000) for i in time_index] # time in msec for plot label
fig, axs = plt.subplots(2, 2) # 2 x 2 plot

for ax, tm, ti in zip(axs.ravel(), times, time_index):
cs = ax.contourf(x, y, C[ti]) # plot(x,y,t)
fig.colorbar(cs, ax=ax, shrink=0.9) # (plot data, axis equal, shrink to fit clr.bar)
ax.set_title("time (ms) = %s" % tm) # each title in turn read from "times"
ax.locator_params(nbins=4) # split data over 4 zones

plt.show()

Répondre