Resurse practice de codificare pentru noii practicieni CFD

Se pare că există multe cărți și lucrări care explică foarte multe metode CFD, dar, din nefericire, nu am reușit să găsesc multe resurse bune ale unor astfel de metode implementate în coduri precum MATLAB sau Python (pe lângă cele mai esențiale probleme cum ar fi ecuația advecției lineare). Ca atare, mă întrebam dacă există cărți acolo pe care le-aș putea cumpăra, care vin cu multe exemple codificate sau dacă există resurse online gratuite care arată cum să rezolve diferite probleme CFD. Îmi dau seama că CFD poate fi un câmp foarte dificil, mai ales când se ocupă de geometrii complexe. Cu toate acestea, dacă aș putea găsi o resursă care, de exemplu, oferă instrucțiuni pas cu pas cu privire la modul de rezolvare a ecuațiilor 2D Euler (cu geometrie foarte simplă), care pare a fi pasul logic atunci când se trece de la ecuații scalare la vectori , acesta ar fi un bun punct de pornire pentru cum să înveți teme mai avansate. Din nefericire, învăț prin exemplu și pot fi împotmolit de prea multă teorie. Ca atare, a avea exemple de cod pentru a lucra și înțelege alături de teorie ar fi un mare ajutor. Mulțumesc foarte mult.

4
Ați studiat 12 pași pentru Navier Stokes de Lorena Barba?
adăugat autor nicoguaro, sursa
Vă sugerez să urmați mai întâi "prelegerile" și, dacă după aceea, considerați că abordarea nu este adecvată, păstrați-vă părerea. Chiar acum, presimți că va fi cazul.
adăugat autor nicoguaro, sursa
M-am uitat la ea puțin înainte de a posta acest lucru și se pare că este o resursă foarte frumoasă. Am observat însă că pare să sară de la PDE relativ simple la ecuațiile lui Navier-Stokes, fără a oferi nici un tratament ecuațiilor Euler, ceea ce este un pic nefericit (deși am greșit în legătură cu acest lucru).
adăugat autor plaidshirt, sursa
Ei par să spună că nu acoperă ecuațiile Euler pe această pagină: lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes . Având în vedere că nu am avut multă experiență în domeniul CFD, am presupus că ar fi mai bine să încercați ecuațiile lui Euler înainte de a sări în ecuațiile complexe Navier-Stokes, dar aveți dreptate, voi aprofunda acest curs și ar trebui să aibă sens.
adăugat autor plaidshirt, sursa

4 răspunsuri

Depinde de ceea ce spui prin CFD. Aș face diferența între abordările academice și cele aplicate.

În scopuri academice - să zicem, pentru a obține abilități de analiză numerică și computere științifice sau un loc de joacă pentru precondiționarii recent dezvoltați - vă pot recomanda cartea lui Griebel, Dornseifer și Neunhoeffer Simulări numerice în Fluid Dynamics . Acesta acoperă întreaga gamă:

  1. Declarația fizicii și a PDE-urilor, condițiile limită și dificultățile asteptate
  2. Tehnica de discretizare (aici diferențe finite )
  3. pseudocode
  4. gata de utilizare a codului C

Dacă doriți să deveniți un inginer CFD pentru o companie, ar trebui să obțineți câteva teorii despre modelarea și aproximarea fluxurilor și turbulențelor. (Poate că găsiți o notă de curs despre fluxurile turbulente ) Și apoi mergeți și faceți tutorialele cu instrumentul comercial CFD preferat. (Ansys, Fluent, Star ...)

6
adăugat

SUPER LUNG POST aici, aș vrea să-l pot, dar, dar ar fi pretențios USELESS

Presupun că sunteți absolvent în inginerie, pentru că dacă sunteți un grad, ar fi trebuit să luați mai întâi cursul CFD în departamentul respectiv. Dacă sunteți în matematică, nu știu cum să vă refer la cunoștințele dvs. despre lucrurile dinamicii fluide clasice.

CONTEXT PENTRU ME

Înțeleg poziția în care te afli destul de bine, eu eram însrântit în același mormânt de ceva timp și lucrurile nu mi-au venit niciodată teoretic și, în măsura în care am experimentat, citirea unei cărți ca JD Anderson sau Versteeg nu ajuta foarte mult. Și simt că este destul de insensibil să-i ceri pe cineva să citească coperta lui J.D Anderson pentru a acoperi chiar și primele câteva capitole și numai apoi să-i lase să înceapă codarea reală a CFD. De-a lungul timpului meu, în timp ce încercam să învăț CFD, am petrecut mai multe nopți de dormit, scanând internetul pentru a găsi tutoriale decente pe CFD, curățând CFD online și reddit. Unii chiar mi-au dorit să citesc JDA și Versteeg înainte de a începe codarea (ceea ce este ridicol), și nu am reușit să fac asta și am fost foarte frustrat. Încă nu reușeam să fac cu ușurință jumătate din lucrurile din aceste cărți și sunt la cel de-al doilea curs avansat de CFD în școala de grad. Sper ca răspunsul meu aici să prezinte o cale mai bună pentru generația următoare de a începe codificarea în CFD.

SCREW 2D !!!

Mai intai lucrurile, daca esti student si nu un geniu, va fi foarte greu sa lupti impreuna cu CFD-ul si cursurile obisnuite. Vă sugerez să uitați 2D și să rămâneți la codurile 1D pentru moment . CFD-ul este destul de greu și cu siguranță aveți nevoie de un curs la nivel de nivel pentru a începe să înțelegeți nuanțele metodei volumului finit și a metodei cu elemente finite în 2D. Vă sugerez ferm, fixând ferm la 1D și învățând diferitele metode numerice în Diferențierea finită, cum ar fi schemele Lax (schema normală, Friedrich, Wendroff, etc.), schemele de diferențiere centrală, de vânt și schemele de discretizare în timp. Dacă aveți nevoie de exemple, doar ceva de genul "Lax Friedrich 1D Advection C ++ code simple" și încercați să potriviți teoria în aceste cărți cu codul, să înțelegeți cum funcționează și de ce lucrează așa cum procedează. Efectuați analiza de eroare (Von Neumann și, de asemenea, multi-mode). Există o lume a lucrurilor care trebuie învățate în 1D, nu veți rămâne fără lucruri. Cel mai important, într-un studiu, ele sunt ușor, logice și indispensabile în timp ce construiesc concepte.

Vă sugerez să încercați ecuația invizibilă, incompresibilă, liniară tranzitorie și apoi ecuația de căldură tranzitorie, jucând în jurul cu condiții limită diferite (dirichlet, neumann, periodic, Robin) și celule fantomatice. Dacă se face acest lucru, puteți încerca să treceți la Euler comprimabil 1D, dar cele două de mai sus ar trebui să se facă perfect și riguros, inclusiv teoria. Acest lucru vă va ajuta să construiți o bază perfectă pentru un curs de școală de grad, unde puteți să vă relaxați și să vă concentrați pe obținerea corectă a conceptelor dvs. 2D.

Dacă nu sunteți sigur de ceva, doar Google.

CONTEXTUL PENTRU ME # 2

Pentru a vă oferi o idee, am făcut două proiecte de tip 2D Navier-Stokes, care în principiu au inclus 8 coduri în ultimul semestru. Apoi am crezut că am fost sortat pentru CFD, și apoi la jumătatea drumului în cursul CFD avansat acest sem încă fac coduri 1D. Acesta este cât de important și accentuat obținerea unei mâini ferme pe 1D este. Nu fi dezamăgit de lipsa de culori și forme minunate, vor veni. : D

SCREW 2D # 2 !!!!!!!

Presupunând că ați făcut toate astea pentru a vă satisface, puteți încerca să construiți solverul 2D Poisson. De obicei, puteți găsi coduri de probă și o rețea simplă pe internet. În caz contrar, puteți să vă creați întotdeauna uniforma dvs. de pătrat și să o rezolvați. Acesta este punctul de plecare pentru codarea oricarei ecuații NS. Puteți afla diferitele scheme iterative precum ILU, Point Jacobi și altele. Puteți găsi pe internet exemple ușor de tot .

Uita de Euler de 2D deocamdată, pentru că este vorba de aroma principală când încerci fluxuri compresibile, care au o fizică dificilă în ele. Învățarea schemelor numerice acum va face mult mai ușor pentru tine să înțelegi Euler 2D în viitor. Puteți face 2D cu diferențe finite, dar acest lucru ar fi destul de simplist, inutil și greoi în cea mai mare parte dacă nu sunteți un maestru la 1D. Majoritatea codurilor 2D moderne utilizează astăzi metode cu volum finit sau discontinue Galerkin, care sunt foarte avansate în ceea ce privește formularea.

PUNCTELE PENTRU A CONSIDERA

Aș dori să închei prin a da mai multe indicii care vă pot ajuta să începeți în mod real CFD

1.) Incearca sa inveti mai intai codurile comerciale si sa faci stagii in locurile care le folosesc. Acestea vă vor oferi o idee despre ceea ce vă așteptați și veți forma un excelent instrument educațional pentru înțelegerea elementelor și a fluxului de lucru care intră într-o problemă cu CFD.

2.) Comutați la C ++ sau Fortran ASAP dacă visezi chiar și despre codurile 2D. Profesorul meu a dat sem a doua oară seminarului despre un elev senior care mi-a scris codul în Python și a durat o săptămână pentru ca acesta să converge la proiectul final care a durat doar câteva minute pentru noi în C ++ și Fortran. Nu și-a putut întoarce întregul proiect și a obținut o notă proastă. Matlab este la fel de rău la scicomp. Aflați cum să ieșiți datele într-un fișier .dat și să folosiți Tecplot sau Origin pentru a compune grafice și contururi. Între C ++ și Fortran, nu prea contează prea mult la stadiul dvs.

3.) Din nou, nu pot sublinia acest lucru suficient, NU GO PENTRU 2D. Este greoaie și irelevantă pentru creșterea în CFD în acest stadiu.

4.) Dacă nu intenționați să faceți studii de grad, uitați de codificarea CFD. Va durează ani pentru a stăpâni o subzonă CFD, și o veți face într-un cod comercial vă va lua o zi sau două vârfuri. Codurile sunt concepute pentru a fi idiot-dovada, iar rezultatele sunt destul de bune prea. Acesta va fi mult mai util în echipele non-fundamentale-scicomp-cercetare de inginerie dacă înțelegeți elementele de bază ale FM și HT în mod corespunzător.

5.) CFD-ul îți va lovi cu piciorul fundul, și o vei iubi. Nu am mai dormit mai mult de 4 ore în 3 zile consecutive, iar asta e în mijlocul pauzei mele de primăvară (nici un rahat). Fiți pregătiți pentru curba de învățare, dar este garantat că merită atunci când generați propria grămadă de gunoi.

PE CURSUL DE 12 STEPS

Puteți încerca să faci lucrul cu 12 pași ca pe un hobby, dar, din nou, a fost un efort inutil, de auto-felicitare și de supraestimare în ceea ce privește încercarea de a obține o perspectivă asupra CFD-ului real, deoarece cea mai mare parte este prea bine structurată și simplistă. Este un curs minunat, recunosc, dar este aproape prea bun pentru a fi în cele din urmă inutil, dacă știți ce vreau să spun. Profesorul este foarte convingător și inteligent, dar merge prea ușor pe subiecte. Știu că o mulțime de oameni aici jur pe cursul ei și s-ar putea să mă deranjeze destul de mult cu mine, dar cred că unii care au luat un curs de grad în CFD ar putea fi de acord și cu mine.

ÎNVĂȚAȚI ACEASTA PE INIMA!

Oda la CFD

De Steve Bova și Alfred Lorber Universitatea din Texas CFD Laboratory

Codurile vechi nu mor niciodată

Ele sunt primite la tine și la mine

Dacă a ta nu are mult robozitate

Trebuie doar să adăugați o mai mare vâscozitate

Multe butoane și mai multe comutatoare

Este necesar să-l rulați fără agitație

Dacă trebuie să realizați rate mai mari de flop

Pur și simplu generați o dimensiune mai mare a grilei

Dacă o modificare trivială caută managerul tău

Estimarea mea este de cel puțin zece săptămâni.

4
adăugat
Dacă sunteți interesat de fluxuri incompresibile, pur și simplu nu există 1D, perioadă. Trebuie să faceți 2D sau 3D.
adăugat autor nsanders, sursa
Sunt de acord cu ideea dvs. de a înțelege pe deplin 1D, deoarece cazurile de dimensiuni mai mari copleșesc studenții cu tehnici care sunt irelevante pentru a învăța despre foarte elementele fundamentale ale CFD. Dar 2D/3D este locul unde codificarea și alegerea corectă a algoritmilor devin interesante și unde pot fi abordate problemele fizice relevante. Nu aș începe fără o cunoaștere solidă despre fizica și matematica care stau la baza. Multe ghiduri de practicieni tind să predea tehnici sofisticate care la început par să pară nicăieri, dar multe trucuri sunt mai degrabă "evidente" dintr-un punct de vedere matematic.
adăugat autor Christian Waluga, sursa
+1 pentru acest rant, deoarece, uneori, unele opinii personale ajută un nou-venit să înțeleagă ce se întâmplă. Cu toate acestea, nu sunt total de acord cu argumentele "șurubului 2D". Nu există o ecuație Navier-Stokes sau Euler în 1D ...
adăugat autor Jan, sursa
@ Jan Ei bine, nu am vrut să spun ceva foarte asemănător cu CFD, dar știu că nu există coduri 1D pentru NS și Euler de exemplu. în modele de combustie și tuburi de șoc. Puteți simplifica NS și le-ați fir cu o fizică mai complexă în 1D. Pur și simplu am vrut să subliniez că 1D este locul în care cineva care începe CFD va câștiga mai multă profunzime și înțelegere. Dacă el/ea intră acum în 2D, mă tem că conceptele mai profunde vor fi marginalizate. Oricum, vă mulțumim că ați crescut! Doar am descoperit si am inceput aici la stackexchange (imi place!) Si am inceput sa cred ca rantul a ajuns prea departe. : D
adăugat autor sebastian, sursa
Am trecut deja prin câteva tehnici în cursul meu folosind ecuații 1D și de aceea am vrut să găsesc mai multe exemple avansate de 2D pentru a încerca.
adăugat autor plaidshirt, sursa

Cartea CFD de la Blazek ma ajutat mai mult decât oricare altul. Explică foarte bine metodele cu volum finit. Folosind această carte am scris un solver 2D Euler și un solver 2D compresibil Navier - Stokes.

Aș sugera, de asemenea, să vizionați videoclipurile de lectură ale lui Qiqi Wang . Nu cursul aerodinamic al cursurilor de fluide vâscoase - derulați mai jos și ar trebui să vedeți videoclipuri cu Lectura 20 ... Prelegerea 1. Aceste videoclipuri sunt dintr-un curs de metode numerice la MIT. Aici am învățat cum să scriu coduri de volum finite. El explică teoria/modul în care funcționează metodele și apoi dezvoltă exemple în MATLAB, astfel încât să puteți urma. El predă foarte bine și este ușor de urmărit.

2
adăugat

Această întrebare este extrem de largă. După cum a declarat Jan, CFD ar putea fi legat de industrie sau bazat pe un subiect de cercetare. În plus, există o mare diferență între problemele de debit comprimabil și incompresibil. Dacă vă concentrați pe fluxul compresibil, atunci vă familiarizați cu legile hiperbolice de conservare este un început bun. Iar după cum a spus James de mai sus, implementarea unui solver de volum finit într-o rețea simplă 2D carteziană este un alt pas bun.

Vă recomandăm cărți precum:

  • Metode de volum finit pentru probleme hiperbolice de Randall J. LeVeque
  • Metode Galerkin discontinue nodale de Jan S. Hesthaven și Tim Warburton

Hesthaven și Warburton au coduri MATLAB și C ++ pentru implementarea schemelor DG pentru ecuațiile Euler în 1D și 2D. Metodele cu volum finit sunt DG cu aproximări constante parțiale.

1
adăugat
Python România
Python România
61 participanți

Comunitatea pasionaților de Python din România.

Python Jobs România - Moldova
Python Jobs România - Moldova
30 participanți

Comunitatea Python Română: @python_ro