Yop,
Je suis parti sur un projet 2D en C avec OpenGL et SDL pour implémenter l'équation de la chaleur (1) dans le plan et en fait j'ai viré sur un modèle de diffusion de température assez simple (2) où je divise mon plan en grille de N*N cases, et dans chaque case je mets une valeur de température initiale nulle, on peut rajouter de la température à un endroit avec la souris, et le modèle semble être plus ou moins réaliste, mais j'aimerais le faire évoluer vers une simulation dynamique d'un fluide donc j'ai besoin de transporter la quantité de je diffuse via un champ de vitesse (advection), le problème est comment je réalise l'advection de mon champ scalaire ? (ici j'ai pris la température comme exemple de départ mais ça peut être n'importe quoi.)
Voici des screens qui révèlent un peu le comportement du programme :
Quand je rajoute une source à un endroit :
L'évolution après quelques secondes :
Si j'en mets plusieurs :

=>
(1) : dT/dt - A∆T = 0
(2) : T[i][j] = température case (i,j), je fais à chaque pas de temps :
(h = 1/N)
T[i][j] += dt*k*(T[i+1][j] + T[i-1][j] + T[i][j+1] + T[i][j-1] - 4T[i][j])/(4*h)