CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Diffusion => Fluide ?

Pseudo supprimé
Pseudo supprimé 09 juillet 2014 à 21:46:53

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 :

https://image.noelshack.com/fichiers/2014/28/1404935067-diffusion1.png

L'évolution après quelques secondes :

https://image.noelshack.com/fichiers/2014/28/1404935072-diffusion2.png

Si j'en mets plusieurs :

https://image.noelshack.com/fichiers/2014/28/1404935077-diffusion3.png
=>
https://image.noelshack.com/fichiers/2014/28/1404935086-diffusion4.png

(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)

Pseudo supprimé
Pseudo supprimé 25 juillet 2014 à 14:38:23

J'up.

Odvie
Odvie
Niveau 10
25 juillet 2014 à 18:48:08

Bah sinon, tu appliques pas l'advection dans ta formule, mais tu fais un deuxième passage?

J'sais pas, moi la physique j'ai arrêté en terminale :hap:

Pseudo supprimé
Pseudo supprimé 25 juillet 2014 à 18:55:19

Je viens de finir ma terminale. :noel:

Bah le truc c'est que si j'essaye de balancer un term d'advection un peu à l'arrache dans mon calcul de diffusion ou si je l'applique après c'est pareil ça fait n'importe quoi.

J'ai réussi à transporter grossièrement ma quantité selon un champ de vecteurs, avec en même temps la diffusion, mais du coup faut que je fasse évoluer le champ de vitesse et avoir des conditions aux bords de ma fenetre, mais aucune idée pour ça.

Aldebran
Aldebran
Niveau 10
25 juillet 2014 à 21:29:12

En projet étudiant j'avais implémenté une simulation dynamique de fluide sur GPU, et ce lien m'avait beaucoup aidé :
http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html

Pseudo supprimé
Pseudo supprimé 25 juillet 2014 à 21:36:44

Merci, j'ai lu pas mal de papiers de SIGGRAPH aussi, l'advection de Jos Stam c'est un truc à l'envers dans le temps, dans ton article ils préconisent de l'utiliser car celle que j'ai tentée d'implémenter, enfin la plus intuitive quoi, est pas stable et marche pas apparemment pour des calculs gpu.

De toute manière maintenant j'ai à peu près réussi à établir l'advection de cette manière, mais je bloque sur le champ de vitesse, je sais pas comment le faire évoluer, j'ai bien l'équation div u = 0 mais je suis pas sûr de comment le faire, et d'autres papiers parlent de résoudre ça avec la pression, pour laquelle j'ai aucune idée de l'implémentation. :(

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment