teaching:progappchim:diffusion_chimique_1d

Modélisation de la diffusion chimique dans un film

Technique de différences finies, utilisation de matplotlib

<sxh python; title : Diffusion-chimique-finitediff-01.py> #!/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() </sxh>

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. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • teaching/progappchim/diffusion_chimique_1d.txt
  • Dernière modification : 2015/01/15 13:48
  • de villersd