Eq convection dispersion régime transitoire

Fermé
ayoubgood Messages postés 2 Date d'inscription mercredi 14 mars 2012 Statut Membre Dernière intervention 14 mars 2012 - 14 mars 2012 à 02:15
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 14 mars 2012 à 16:02
Bonjour,
Svp g besoin d'un programme en C/C++ de résolution de l'équation de convection dispersion en régime transitoire ( concentration en fonction du temps).

j'ai déjà essayé un programme que j'ai fais en C/C++ mais ça donne pas des résultats satisfaisantes, je me demande si quelqu'un peut m'aider , c'est très très urgent...

l'équation s'annonce comme suit:

dC/dt=D.(d2 C/dx2) - V.(dC/dx) avec les conditions aux limites et initiales suivantes:

C(t=0, x) = 0;
C(t, x=0) = (m/q).£(t) avec £(t) = 0 si t diffèrent de 0 et égale à 1 si t=0;
C(t, x= infini) = 0;

je serais vraiment très reconnaissant si qlqn peut m'aider même avec un minimum d'idées que ça soit un programme en C/C++ ou bien un algorithme...
Voila mon E-Mail: ayoubgood@live.fr.

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
14 mars 2012 à 10:23
salut.
Un tel programme n'est pas bien compliqué à faire. Première étape il faut discrétiser ton équation en temps et en espace. Ensuite, dans un schéma purement explicite il faut exprimer ton temps n+1 en fonction du temps n.
Donne nous ta discrétisation, et précise en quoi tes résultats étaient mauvais.
Avec un schéma explicite il y a une condition de stabilité dite CFL qui veux que dt<dx/V.
1
ayoubgood Messages postés 2 Date d'inscription mercredi 14 mars 2012 Statut Membre Dernière intervention 14 mars 2012
14 mars 2012 à 15:20
D'abord merci pour ta reponse;

pour la discretisation j'ai utilisé la méthode de difference finis, schéma implicite décentrée....
le probleme que j'ai, c'est ce que normalement la solution donnée ( concentration en fonction du temps ) doit s'annuler dans les premieres secondes et apres de prendre l'allure d'une courbe gaussienne, alors que c pas le cas pour mon programme( le cas d'une injection instantannee de particules dans une colonne" un milieu poreux " ), je ne sais pas encore l'origine de l'erreur est ce que c la methode de resolution ou bien l'algorithme du regime transitoire etc ( vue que je ne suis pas assez fort en programmation, je suis d'origine physicien..)..donne moi ton e-mail si tu veux pour t'envoyer mon prog à fin de voir le decalage entre une courbe rellee et la courbe donnee par ce programme..

et merci d'avance .
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
14 mars 2012 à 16:02
décentré amont je suppose ?
Comme tu dois le savoir, un schéma implicite est imprécis, donc faire attention aux pas de temps. Essai de diminuer les pas de temps de manière inférieur au critère que je t'ai donné.
Je te conseil de tester ton code au fur à mesure :
commence par mettre une vitesse nulle et met une maille du centre à 1 à l'instant initial. Voit si ta diffusion se fait correctement.
étape 2, vérifier la convection en mettant un paquet de concentration dans ton domaine avec une certaine vitesse, et une diffusion nulle. Le paquet devrait être convecter avec une certaine dispersion (inérante à l'ordre 1).
Je trouve ta condition limite un peu raide.
1