Outils pour utilisateurs

Outils du site


teaching:progappchim:diffusion_chimique_1d

Modélisation de la diffusion chimique dans un film

Technique de différences finies, utilisation de matplotlib

#!/usr/bin/env python 
# -*- coding: utf-8 -*-
from math import *
# pour utiliser la librairie graphique matplotlib
from pylab import *

# simulation de la diffusion chimique par différence finie
# on considère un problème à une dimension correspondant à la diffusion
# au sein d'un film mince d'un constituant (par immersion dans un
# solvant par exemple)
# cf. en.wikipedia.org/wiki/Finite_difference
#

# initialisations
ni= 101  # nombre d'abscisses
n=range(0,ni,1) # les "numéros" des abscisses
# print n
x=[]  # la liste des abscisses
c=[]  # la liste des concentrations
cnew=[]  # une liste intermédiaire pour l'évolution des concentrations
for i in n:
    x.append(float(n[i]))
    c.append(0.)   #concentration initiale nulle au sein du film
    cnew.append(0.)
c[0]=10.   # conditions aux bords : forte concentration imposée
c[ni-1]=10.
cnew[0]=10.
cnew[ni-1]=10.
# print c

t=0.  # temps
ite=0  # compteur d'itérations
endt=2000.   #temps final
dx=1.  # intervalle spatial
dtsurdx2=0.1   # constante liée à la méthode des différences finies
dt=dx*dx*dtsurdx2   # intervalle temporel

while t < endt:    # boucle temporelle
    i=1
    while i < ni-1:   # actualisation des concentrations
        cnew[i]=c[i]+dtsurdx2*(c[i-1]-2.*c[i]+c[i+1])
        i=i+1
    c=cnew
    if ite % 250 == 0:  # affichage périodique
        #print t
        #print x
        #print c
        plot(x,c)  # affichage de la concentration en fonction de l'épaisseur
	#show()
    t=t+dt
    ite=ite+1

show()

Suggestion : récrire ce programme en utilisant des directives d'importation standard des librairies Matplotlib/NumPy et des tableaux numériques (array) de NumPy

Exemple de sortie graphique :

Ce site web utilise des cookies pour analyser le trafic de visites. En restant sur ce site, vous acceptez le stockage de cookies sur votre ordinateur. En savoir plus
teaching/progappchim/diffusion_chimique_1d.txt · Dernière modification: 2015/01/15 13:48 par villersd