Ressources de codage pratiques pour les nouveaux praticiens en CFD

Il semble y avoir beaucoup de livres et de documents qui expliquent de manière très détaillée diverses méthodes CFD, mais malheureusement, je n’ai pas trouvé beaucoup de bonnes ressources de ces méthodes implémentées dans des codes tels que MATLAB ou Python (à part les problèmes les plus fondamentaux tels que équation d'advection linéaire). En tant que tel, je me demandais si je pouvais acheter des livres contenant de nombreux exemples codés, ou s'il existe des ressources gratuites en ligne qui montrent comment résoudre divers problèmes de CFD. Je me rends compte que le CFD peut être un domaine très difficile, surtout lorsqu'il s'agit de géométries complexes. Cependant, si je pouvais trouver une ressource qui, par exemple, donne des instructions pas à pas sur la façon de résoudre les équations d'Euler 2D (avec une géométrie très simple), ce qui semble être l'étape logique pour passer d'équations scalaires à vectorielles. , ce serait un excellent point de départ pour apprendre des sujets plus avancés. Malheureusement, j'apprends par l'exemple et je peux me perdre dans trop de théorie. En tant que tel, avoir des exemples de code à comprendre et à comprendre parallèlement à la théorie serait d'une grande aide. Merci beaucoup.

4
Avez-vous étudié les 12 étapes de Navier Stokes de Lorena Barba?
ajouté l'auteur nicoguaro, source
Je suggère que vous suiviez d'abord les "conférences", et si après cela vous pensez que l'approche n'est pas adéquate, gardez votre opinion. En ce moment, vous appuyez sur ce sera le cas.
ajouté l'auteur nicoguaro, source
J'y ai jeté un coup d'oeil un peu avant de poster ceci et cela semble être une très bonne ressource. J'ai cependant remarqué qu'il semble passer des EDP relativement simples aux équations de Navier-Stokes, sans traiter les équations d'Euler, ce qui est un peu regrettable (bien que je puisse me tromper à ce sujet).
ajouté l'auteur plaidshirt, source
Ils semblent indiquer qu'ils ne couvrent pas les équations d'Euler de cette page: lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes . N'ayant pas beaucoup d'expérience en CFD, j'ai supposé qu'il serait préférable d'essayer les équations d'Euler avant de plonger dans les équations complexes de Navier-Stokes, mais vous avez raison, je vais approfondir ce cours et cela devrait avoir du sens.
ajouté l'auteur plaidshirt, source

4 Réponses

Cela dépend de ce que vous entendez par CFD. Je ferais la différence entre les approches académiques et appliquées.

À des fins académiques - par exemple, pour l'acquisition de compétences en analyse numérique et en calcul scientifique ou comme terrain de jeu pour vos préconditionneurs nouvellement développés - je peux recommander le livre de Griebel, Dornseifer et Neunhoeffer Simulations numériques dans la dynamique des fluides . Il couvre toute la gamme:

  1. Exposé de la physique et des EDP, conditions aux limites et difficultés attendues
  2. Technique de discrétisation ( différences finies )
  3. pseudocode
  4. prêt à utiliser le code C

Si vous souhaitez devenir ingénieur CFD pour une entreprise, vous devez acquérir des connaissances théoriques sur la modélisation et l’approximation des écoulements et de la turbulence. (Trouvez peut-être une note de cours sur les écoulements turbulents ). Ensuite, suivez les didacticiels avec votre outil de CFD commercial préféré. (Ansys, Fluent, Star ...)

6
ajouté

SUPER LONG POST ICI, JE SOUHAITE PEUT-ÊTRE RÉDUIRE, MAIS CELA SERAIT JOLIUSSE

Je suppose que vous êtes un étudiant de premier cycle en génie, car si vous êtes un diplômé, vous auriez dû suivre le cours de CFD en premier dans le département concerné. Si vous êtes en maths, je ne sais pas comment me rattacher à votre connaissance des choses de la dynamique des fluides classique.

HISTORIQUE POUR MOI

Je comprends très bien la situation dans laquelle vous vous trouvez, je suis moi-même coincé dans le même marais pendant un bon bout de temps et les choses ne me sont jamais vraiment parvenues théoriquement, et autant que je sache, lire un livre comme JD Anderson ou Versteeg ne me laisse pas vraiment aider beaucoup. Et, j’ai le sentiment qu’il est assez insensible de demander à quelqu'un de lire la totalité de la couverture de J.D Anderson, même les premiers chapitres, et de lui permettre ensuite de commencer à coder réellement en CFD. Pendant que je travaillais comme étudiant désireux d'apprendre le CFD, j'ai passé plusieurs nuits en dortoir à scanner Internet pour trouver des tutoriels décents sur le CFD, parcourir le CFD en ligne et reddit. Certains voulaient même que je lise l'intégrale JDA et Versteeg avant de commencer à coder (ce qui est ridicule), et je ne pouvais pas en faire une prise, et j'étais vraiment frustré. Je ne pouvais toujours pas faire facilement la moitié des choses dans ces livres, et je suis dans mon deuxième cours avancé de CFD à l'école des cycles supérieurs. J'espère que ma réponse ici indique un meilleur moyen pour la prochaine génération de commencer à coder en CFD.

VIS 2D !!!

Tout d’abord, si vous êtes un étudiant de premier cycle et que vous n’êtes pas un génie, il sera très difficile de lutter ensemble contre CFD et les cours réguliers. Je vous suggère d'oublier la 2D et de vous en tenir aux codes 1D pour l'instant . CFD est assez difficile et vous devez absolument suivre un cours de niveau gradué pour commencer à comprendre les nuances de la méthode des volumes finis et de la méthode des éléments finis en 2D. Je suggère fermement, coller fermement à 1D et apprendre les différentes méthodes numériques dans Finite Differencing, comme les schémas Lax (normal, Friedrich, Wendroff, etc.), les schémas de différenciation centraux au vent et les schémas de discrétisation du temps. Si vous avez besoin d'exemples, cherchez quelque chose comme "Code simple Lax Friedrich 1D Advection C ++" et essayez de faire correspondre la théorie de ces livres au code, de comprendre comment ils fonctionnent et pourquoi ils fonctionnent de cette manière. Faites l'analyse d'erreur (Von Neumann, et multi-mode aussi). Il y a un monde de choses à apprendre dans 1D, vous ne serez jamais à court de choses. Plus important encore, pour un étudiant de premier cycle, ils sont faciles, logiques et indispensables pour la construction de concepts.

Je suggère d’essayer l’équation d’advection transitoire linéaire, incompressible et invisible, puis l’équation de Heat transitoire, en jouant avec différentes conditions aux limites (dirichlet, neumann, périodique, Robin) et des cellules fantômes. Si cela est fait, vous pouvez essayer de passer à 1D Euler compressible, mais les deux précédentes devraient être effectuées de manière parfaite et rigoureuse, y compris la théorie. Cela vous aidera à constituer une base idéale pour un cours de deuxième cycle, où vous pourrez ensuite vous détendre et vous concentrer sur la définition correcte de vos concepts 2D.

Si vous n'êtes pas sûr de rien, simplement Google.

HISTORIQUE POUR MOI N ° 2

Pour vous donner une idée, j'ai réalisé deux projets 2D Navier-Stokes qui incluaient essentiellement 8 codes le semestre dernier. Je pensais alors avoir été trié pour le CFD, puis à mi-parcours du cours avancé de CFD, je suis encore en train de faire des codes 1D. C’est la raison pour laquelle il est important et important d’avoir une main ferme sur 1D. Ne soyez pas déçu par le manque de belles couleurs et formes, elles viendront. :RÉ

VIS 2D # 2 !!!!!!!

En supposant que vous ayez fait tout cela à votre satisfaction, vous pouvez essayer de construire le solveur de Poisson 2D. Vous pouvez généralement trouver des exemples de codes et un exemple de grille sur Internet. Sinon, vous pouvez toujours créer votre propre uniforme de grille carrée et résoudre le problème. C’est LE point de départ pour coder toutes les équations NS. Vous pouvez apprendre les différents schémas itératifs comme ILU, Point Jacobi, etc. Vous pouvez trouver des exemples faciles de tout sur Internet.

Oubliez pour le moment Euler 2D, car sa saveur principale vient lorsque vous tentez des écoulements compressibles, qui contiennent une physique délicate. En apprenant des schémas numériques, il vous sera beaucoup plus facile de comprendre Euler 2D à l’avenir. Vous pouvez faire de la 2D avec des différences finies, mais ce serait plutôt simpliste, inutile et fastidieux pour la plupart si vous n’êtes pas un maître chez 1D. La plupart des codes 2D modernes utilisent aujourd'hui des méthodes de volume fini ou de Galerkin discontinues, qui sont très avancées en termes de formulation.

POINTS À CONSIDÉRER

Je voudrais terminer en vous donnant quelques indications supplémentaires qui pourraient vous aider à démarrer de manière réaliste.

1.) Essayez d’apprendre d’abord les codes commerciaux et les stages dans des endroits qui les utilisent. Ils vous donneront une idée de ce à quoi vous attendre, et constitueront un excellent outil pédagogique pour comprendre les éléments et le flux de travail qui entrent dans un problème de CFD.

2.) Passez en C ++ ou Fortran dès que possible si vous rêvez même de codes 2D. La semaine dernière, mon professeur a raconté à la classe qu'un élève de niveau supérieur avait écrit son code en Python. Il lui a fallu une semaine pour faire converger le projet final, qui ne nous a pris que quelques minutes en C ++ et Fortran. Il ne pouvait pas tourner tout son projet et avait une mauvaise note. Matlab est également mauvais en scicomp. Apprenez à exporter vos données dans un fichier .dat et utilisez Tecplot ou Origin pour tracer des graphiques et des contours. Entre C ++ et Fortran, n’a pas beaucoup d’importance à votre stade.

3.) Encore une fois, je ne saurais trop insister là-dessus, NE PARLEZ PAS EN 2D. Il est lourd et peu pertinent pour votre croissance en CFD à ce stade.

4.) Si vous ne prévoyez pas faire d'études supérieures, oubliez le codage CFD. Il vous faudra des années pour maîtriser une sous-zone CFD, et le faire avec un code commercial vous prendra un jour ou deux. Les codes sont conçus pour être idiot-proof, et les résultats sont assez bons aussi. Cela sera beaucoup plus utile dans les équipes d'ingénierie de recherche non fondamentale si vous comprenez correctement les bases de FM et HT.

5.) CFD va vous botter le cul, et vous allez l'adorer. Je n'ai pas dormi plus de 4 heures au total en 3 jours consécutifs, et c'est au milieu de mes vacances de printemps (pas de merde). Soyez prêt pour l'apprentissage, mais cela en vaut la peine lorsque vous générez votre propre tas d'ordures colorées.

SUR LE PARCOURS DES 12 ÉTAPES

Vous pouvez essayer de jouer aux 12 étapes comme un passe-temps, mais avec le recul, c’était un effort inutile, compliqué d’auto-félicitation et surestimé, qui visait à mieux comprendre le vrai CFD, la plupart étant trop bien structuré et simpliste. C'est un excellent parcours, je l'avoue, mais il est presque trop beau au point d'être finalement inutile, si vous voyez ce que je veux dire. Le professeur est très convaincant et intelligent, mais va trop facile sur les sujets. Je sais que beaucoup de personnes ici jurent devant son cours et pourraient être assez offensées avec moi, mais je pense que bon nombre de ceux qui ont suivi un cours de cycle supérieur en CFD pourraient aussi être d'accord avec moi.

Apprendre à connaître le cœur!

Une hymne à la CFD

Par Steve Bova et Alfred Lorber Laboratoire CFD de l'Université du Texas

Les vieux codes ne meurent jamais

Ils vous sont transmis et je

Si le tien n'a pas beaucoup de robotic

Il suffit d'ajouter plus de viscosité

Beaucoup un bouton et plusieurs un commutateur

Sont nécessaires pour l'exécuter sans accroc

Si les taux de flop plus élevés, vous devez réaliser

Générer simplement une plus grande taille de grille

Si une modification triviale de votre manager cherche

Mon estimation est au moins dix semaines.

4
ajouté
Si vous êtes intéressé par les écoulements incompressibles, il n'y a tout simplement pas 1D, point. Vous devez faire 2D ou 3D.
ajouté l'auteur nsanders, source
Je suis d’accord sur votre point pour comprendre d’abord parfaitement 1D, car les cas de dimension supérieure submergent les étudiants de techniques qui ne sont pas pertinentes pour en apprendre davantage sur les bases du CFD. Mais 2D/3D est l’endroit où le codage et le bon choix d’algorithmes deviennent intéressants et où les problèmes physiques pertinents peuvent être abordés. Je ne commencerais pas ici sans une connaissance solide de la physique et des mathématiques sous-jacentes. De nombreux guides de praticiens ont tendance à enseigner des techniques sophistiquées qui semblent à première vue sembler sortir de nulle part, mais de nombreuses astuces sont plutôt "évidentes" du point de vue mathématique.
ajouté l'auteur Christian Waluga, source
+1 pour ce coup de gueule, car parfois certains avis personnels aident un nouveau venu à comprendre ce qui se passe. Cependant, je suis totalement en désaccord avec vos arguments de "vis 2D". Il n'y a pas d'équation Navier-Stokes ou Euler dans 1D ...
ajouté l'auteur Jan, source
@ Jan Eh bien, je ne voulais pas dire grand chose qui ressemble à CFD mais je sais qu'il existe des codes 1D pour NS et Euler pour par exemple. dans la modélisation de la combustion et les tubes de choc. Vous simplifiez NS et les intégrez dans 1D à une physique plus complexe. Je voulais simplement souligner que 1D est l'endroit où une personne commençant par cfd gagnerait en profondeur et en perspicacité. S'il/elle passe maintenant en 2D, je crains que les concepts les plus profonds ne soient marginalisés. Quoi qu'il en soit, merci pour votre vote! Je viens juste de découvrir et de commencer ici à stackexchange (j'adore!) Et je commençais à penser que le discours était trop avancé. :RÉ
ajouté l'auteur sebastian, source
Au cours de mon cours, j'ai déjà utilisé quelques techniques utilisant des équations 1D et c'est pourquoi je voulais essayer des exemples 2D plus avancés.
ajouté l'auteur plaidshirt, source

Le livre CFD de Blazek m'a aidé plus que tout autre. Il explique très bien les méthodes de volumes finis. À l'aide de ce livre, j'ai écrit un solveur Euler 2D et un solveur Navier-Stokes compressible 2D.

Je vous conseillerais également de regarder les les vidéos de conférences de Qiqi Wang . Pas l'aérodynamique des fluides visqueux - défilez plus bas et vous devriez voir des vidéos avec Lecture 20 ... Conférence 1. Ces vidéos proviennent d'un cours sur les méthodes numériques au MIT. C'est là que j'ai vraiment appris à écrire des codes de volume fini. Il explique la théorie/le fonctionnement des méthodes, puis développe des exemples dans MATLAB afin que vous puissiez suivre. Il enseigne très bien et est facile à suivre.

2
ajouté

Cette question est extrêmement large. Comme Jan l'a indiqué ci-dessus, les CFD pourraient être liés à l'industrie ou basés sur un sujet de recherche. En outre, il existe une grande différence entre les problèmes d'écoulement compressibles et incompressibles. Si vous vous concentrez sur l’écoulement compressible, vous familiariser avec les lois de conservation hyperboliques est un bon début. Et comme l'a dit James ci-dessus, la mise en œuvre d'un résolveur de volume fini dans une simple grille cartésienne 2D est une autre bonne étape.

Je recommande des livres tels que:

  • Méthodes en volume fini pour les problèmes hyperboliques par Randall J. LeVeque
  • Méthodes nodales discontinues de Galerkin par Jan S. Hesthaven et Tim Warburton

Hesthaven et Warburton ont à la fois des codes matlab et C ++ pour la mise en œuvre de schémas DG pour les équations d'Euler en 1D et 2D. Les méthodes de volumes finis sont DG avec des approximations constantes par morceaux.

1
ajouté