Recursos de codificación prácticos para los nuevos practicantes de CFD

Parece que hay muchos libros y artículos que explican varios métodos de CFD con gran detalle, pero desafortunadamente no he podido encontrar muchos recursos buenos de tales métodos implementados en códigos como MATLAB o Python (además de los problemas más básicos como el ecuación de advección lineal). Como tal, me preguntaba si hay algún libro por ahí que pueda comprar que venga con muchos ejemplos codificados, o si hay recursos en línea gratuitos que muestren cómo resolver varios problemas de CFD. Me doy cuenta de que el CFD puede ser un campo muy difícil, especialmente cuando se trata de geometrías complejas. Sin embargo, si pudiera encontrar un recurso que, por ejemplo, proporcione instrucciones paso a paso sobre cómo resolver las ecuaciones de Euler 2D (con una geometría muy simple), que parece ser el paso lógico hacia arriba cuando se pasa de las ecuaciones escalares a las vectoriales. , este sería un excelente punto de partida para aprender temas más avanzados. Desafortunadamente, aprendo con el ejemplo y puedo atascarme con demasiada teoría. Como tal, tener ejemplos de código para trabajar y comprender junto con la teoría sería una gran ayuda. Muchas gracias.

4
¿Has estudiado los 12 Steps to Navier Stokes por Lorena Barba?
agregado el autor nicoguaro, fuente
Le sugiero que primero siga las "conferencias", y si después de eso piensa que el enfoque no es adecuado, conserve su opinión. En este momento, estás presionando que ese será el caso.
agregado el autor nicoguaro, fuente
Le eché un vistazo un poco antes de publicar esto y me parece un recurso muy bueno. Sin embargo, sí noté que parece pasar de PDE relativamente simples a las ecuaciones de Navier-Stokes, sin dar ningún tratamiento a las ecuaciones de Euler, lo cual es un poco desafortunado (aunque podría estar equivocado al respecto).
agregado el autor plaidshirt, fuente
Parecen afirmar que no cubren las ecuaciones de Euler en esta página: lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes . Al no tener mucha experiencia con CFD, asumí que sería mejor probar las ecuaciones de Euler antes de saltar a las complejas ecuaciones de Navier-Stokes, pero tienes razón, profundizaré más en este curso y debería tener sentido.
agregado el autor plaidshirt, fuente

4 Respuestas

Depende de lo que quieres decir con CFD. Me gustaría diferenciar entre enfoques académicos y aplicados.

Para fines académicos, por ejemplo, para la adquisición de habilidades en análisis numérico y computación científica o en un área de juegos para sus precondicionadores recientemente desarrollados, puedo recomendar el libro de Griebel, Dornseifer y Neunhoeffer Simulaciones numéricas en dinámica de fluidos . Abarca toda la gama:

  1. Declaración de la física y las PDE, condiciones de contorno y las dificultades esperadas
  2. Técnica de discretización (aquí, diferencias finitas )
  3. pseudocódigo
  4. listo para usar código C

Si desea convertirse en ingeniero de CFD para una empresa, debe obtener algunos antecedentes teóricos sobre el modelado y la aproximación de flujos y turbulencias. (Tal vez encuentre una nota de conferencia sobre flujos turbulentos ) Y luego vaya y haga los tutoriales con su herramienta de CFD comercial favorita. (Ansys, Fluido, Estrella ...)

6
agregado

SUPER LONG POST AQUÍ, DESEO PODRÍA TL; DR IT, PERO SERÍA BONITA DE UTILIDAD

Supongo que usted es un estudiante universitario, en ingeniería, porque si es un graduado, debería haber tomado el curso de CFD en el departamento respectivo primero. Si estás en matemáticas, no sé cómo relacionarme con tu conocimiento de las cosas en la dinámica de fluidos clásica. Moviéndote ...

ANTECEDENTES PARA MÍ

Entiendo la posición en la que se encuentra bastante bien, yo mismo estuve atrapado en el mismo pantano durante bastante tiempo y las cosas nunca me vinieron teóricamente, y hasta donde he experimentado, leer un libro como JD Anderson o Versteeg no lo hace. Realmente ayuda mucho. Y, siento que es bastante insensible pedirle a alguien que lea la cubierta de J.D Anderson, incluso los primeros capítulos, y solo así permitirle que comience la codificación CFD real. Durante mi tiempo como estudiante de pregrado que estaba tratando de aprender CFD, pasé varias noches en el dormitorio explorando Internet para encontrar tutoriales decentes sobre CFD, recorriendo CFD en línea y reddit. Algunos incluso querían que leyera todo JDA y Versteeg antes de comenzar a codificar (lo que es ridículo), y no pude descifrarlo, y me frustré mucho. Todavía no puedo hacer fácilmente la mitad de las cosas en esos libros, y estoy en mi segundo curso avanzado de CFD en la escuela de posgrado. Espero que mi respuesta aquí describa una mejor manera para que la próxima generación comience a codificar en CFD.

SCREW 2D !!!

Lo primero es lo primero, si eres un estudiante universitario y no eres un genio, será muy difícil luchar contra el CFD y los cursos regulares juntos. Le sugiero que olvide el 2D y se adhiera a los códigos 1D por ahora . CFD es bastante difícil y definitivamente necesitas un curso de nivel de graduación para comenzar a entender los matices del método de volumen finito y el método de elementos finitos en 2D. Le sugiero que se adhiera firmemente a la 1D y aprenda los diferentes métodos numéricos en la diferenciación finita, como los esquemas Lax (normal, Friedrich, Wendroff, etc.), los esquemas de diferenciación centrales, contra el viento y los esquemas de discretización del tiempo. Si necesita ejemplos, solo busque en Google algo como "Lax Friedrich 1D Advection C ++ code simple" e intente relacionar la teoría en esos libros con el código, entienda cómo funcionan y por qué funcionan de la manera en que lo hacen. Hacer análisis de errores (Von Neumann, y multimodo también). Hay un mundo de cosas que aprender en 1D, nunca te quedarás sin cosas. Más importante aún, para un estudiante universitario, son fáciles, lógicos e indispensables al construir conceptos.

Sugiero probar la ecuación de advección transitoria, inviscida, incompresible, lineal, y luego la ecuación de Calor transitoria, jugando con diferentes condiciones de contorno (dirichlet, neumann, periodic, Robin) y células fantasma. Si se hace eso, puede intentar pasar a 1D Euler comprimible, pero los dos anteriores deben hacerse de manera perfecta y rigurosa, incluida la teoría. Esto te ayudará a construir una base perfecta para un curso de posgrado, donde podrás relajarte y enfocarte en entender correctamente tus conceptos 2D.

Si no estás seguro de nada, solo Google.

ANTECEDENTES PARA MÍ # 2

Para darle una idea, hice dos proyectos 2D Navier-Stokes que básicamente incluían como 8 códigos el semestre pasado. Luego pensé que estaba ordenado por CFD, y luego a mitad de camino en el curso avanzado de CFD este sem. Todavía estoy haciendo códigos 1D. Así de importante y enfatizado es tener una mano firme en 1D. No se desilusione por la falta de hermosos colores y formas, vendrán. :RE

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

Suponiendo que hizo todo esto a su entera satisfacción, puede intentar construir el solucionador de Poisson 2D. Por lo general, puede encontrar códigos de muestra y una cuadrícula de muestra simple en Internet. Si no, siempre puedes hacer tu propia cuadrícula cuadrada uniforme y resolverla. Es EL punto de partida para codificar cualquier ecuación de NS. Puedes aprender los diferentes esquemas iterativos como ILU, Point Jacobi y esas cosas. Puede encontrar muestras fáciles de todo en Internet.

Olvídate de Euler 2D por ahora, ya que su sabor principal se presenta cuando intentas flujos compresibles, que tienen algo de física complicada. Aprender esquemas numéricos ahora hará que sea mucho más fácil para usted comprender 2D Euler en el futuro. Puedes hacer 2D con diferencias finitas, pero eso sería bastante simplista, inútil y engorroso en su mayor parte si no eres un maestro en 1D. La mayoría de los códigos 2D modernos utilizan métodos de volumen finito o Galerkin discontinuo, que son muy avanzados en términos de formulación.

PUNTOS A TENER EN CUENTA

Me gustaría concluir dando algunos consejos más que podrían ayudarlo a iniciar CFD de manera realista.

1.) Intente aprender códigos comerciales primero y hacer pasantías en lugares que los utilizan. Le darán una idea de qué esperar y formarán una excelente herramienta educativa para comprender los elementos y el flujo de trabajo que conlleva un problema de CFD.

2.) Cambie a C ++ o Fortran ASAP si está soñando con los códigos 2D. El último semestre de mi profesor le contó a la clase sobre un estudiante de último año que escribí su código en Python, y le llevó una semana reunir el proyecto final, que nos llevó solo unos pocos minutos en C ++ y Fortran. No pudo entregar todo su proyecto y obtuvo una mala nota. Matlab es igualmente malo en scicomp. Aprenda a generar sus datos en un archivo .dat y use Tecplot u Origin para trazar gráficos y contornos. Entre C ++ y Fortran, realmente no importa mucho en tu etapa.

3.) Una vez más, no puedo enfatizar esto lo suficiente, NO IR PARA 2D. Es engorroso e irrelevante para su crecimiento en CFD en esta etapa.

4.) Si no planeas hacer estudios de posgrado, olvídate de la codificación CFD. Le llevará años dominar una sub-área de CFD, y hacerlo en un código comercial lo llevará a uno o dos días. Los códigos están diseñados para ser a prueba de idiotas, y los resultados también son bastante buenos. Será mucho más útil en los equipos de ingeniería de investigación no fundamental-scicomp si entiende los conceptos básicos de FM y HT correctamente.

5.) CFD te va a patear el trasero, y te encantará. No he dormido más de un total de 4 horas en 3 días consecutivos, y esto es en medio de mis vacaciones de primavera (sin mierda). Prepárese para la curva de aprendizaje, pero se garantiza que valdrá la pena cuando genere su propio montón de basura de colores.

EN EL CURSO DE 12 PASOS

Puede intentar hacer los 12 pasos como un pasatiempo, pero en retrospectiva, fue un esfuerzo inútil, auto felicitado y sobrevalorado en términos de tratar de comprender el CFD real, ya que la mayoría es demasiado bien estructurado y simplista. Es un gran curso, lo admito, pero es casi demasiado bueno hasta el punto de ser en última instancia inútil, si sabes lo que quiero decir. El profesor es muy convincente e inteligente, pero se enfoca demasiado en los temas. Conozco a mucha gente aquí que jura por su curso y podría ofenderse mucho conmigo, pero creo que muchos que han tomado un curso de posgrado en CFD también podrían estar de acuerdo conmigo.

¡APRENDE ESTO POR CORAZÓN!

Una Oda al CFD

Por Steve Bova y Alfred Lorber Laboratorio de CFD de la Universidad de Texas

Los viejos códigos nunca mueren

Ellos se transmiten a usted y yo

Si el tuyo no tiene mucha robosidad.

Solo necesitas añadir más viscosidad.

Muchos botones y varios interruptores

Se requieren para ejecutarlo sin problemas.

Si hay mayores tasas de flop debes darte cuenta

Simplemente genera un tamaño de cuadrícula más grande

Si una modificación trivial su gerente busca

Mi estimación es de al menos diez semanas.

4
agregado
Si está interesado en flujos incompresibles, simplemente no hay período 1D. Tienes que hacer 2D o 3D.
agregado el autor nsanders, fuente
Estoy de acuerdo con su punto de entender primero la 1D, ya que los casos de dimensiones superiores abruman a los estudiantes con aspectos técnicos que son irrelevantes para aprender sobre los conceptos básicos de CFD. Pero 2D/3D es donde la codificación y la elección correcta de algoritmos se vuelven interesantes y donde se pueden abordar problemas físicos relevantes. Sin embargo, no empezaría aquí sin un sólido conocimiento sobre la física y las matemáticas subyacentes. Muchos guías practicantes tienden a enseñar técnicas sofisticadas que al principio parecen aparecer de la nada, pero muchos trucos son bastante "obvios" desde un punto de vista matemático.
agregado el autor Christian Waluga, fuente
+1 para esta perorata, ya que a veces algunas opiniones personales ayudan a un recién llegado a comprender lo que está pasando. Sin embargo, estoy totalmente en desacuerdo con tus argumentos de "tornillo 2D". No hay una ecuación de Navier-Stokes o Euler en 1D ...
agregado el autor Jan, fuente
@Jan Bueno, no quise decir nada parecido al CFD, pero sé que existen códigos 1D para NS y Euler para, por ejemplo. En modelos de combustión y tubos de choque. Usted simplifica NS y los enlaza con física más compleja en 1D. Simplemente quería enfatizar que 1D es donde alguien que comienza a partir de cfd obtendría más profundidad y conocimiento. Si él/ella entra en 2D ahora, me temo que los conceptos más profundos quedarán al margen. De todos modos, gracias por votar! Acabo de descubrir y comenzar aquí en stackexchange (¡me encanta!) Y había empezado a pensar que la perorata había llegado demasiado lejos. :RE
agregado el autor sebastian, fuente
Ya he pasado por algunas técnicas en mi curso usando ecuaciones 1D, y es por eso que quería encontrar ejemplos 2D más avanzados para intentarlo.
agregado el autor plaidshirt, fuente

El libro de CFD de Blazek me ayudó más que ningún otro. Explica muy bien los métodos de volumen finito. Usando este libro, escribí un solucionador de Euler en 2D y un solucionador de Navier - Stokes compresible en 2D.

También te sugiero que veas videos de conferencias de Qiqi Wang . No es el curso de aerodinámica de fluidos viscosos: desplácese más hacia abajo y debería ver los videos con la Clase 20 ... Clase 1. Estos videos son de un curso de métodos numéricos en el MIT. Aquí es donde realmente aprendí a escribir códigos de volumen finitos. Explica la teoría/cómo funcionan los métodos y luego desarrolla ejemplos en MATLAB para que pueda seguirlos. Él enseña muy bien y es fácil de seguir.

2
agregado

Esta pregunta es extremadamente amplia. Como Jan dijo anteriormente, el CFD podría estar relacionado con la industria o estar basado en un tema de investigación. Además, hay una gran diferencia entre problemas de flujo compresibles e incompresibles. Si se está enfocando en el flujo compresible, entonces familiarizarse con las leyes de conservación hiperbólica es un buen comienzo. Y como James ha dicho anteriormente, la implementación de un solucionador de volúmenes finitos en una simple cuadrícula cartesiana 2D es otro buen paso.

Recomiendo libros como:

  • Métodos de volumen finito para problemas hiperbólicos por Randall J. LeVeque
  • Métodos nodales discontinuos de Galerkin por Jan S. Hesthaven y Tim Warburton

Hesthaven y Warburton tienen códigos matlab y C ++ para implementar esquemas DG para ecuaciones de Euler en 1D y 2D. Los métodos de volumen finito son DG con aproximaciones constantes por partes.

1
agregado