Recursos de codificação práticos para novos praticantes de CFD

Parece haver muitos livros e artigos que explicam detalhadamente vários métodos de CFD, mas infelizmente não consegui encontrar muitos recursos bons de tais métodos implementados em códigos como MATLAB ou Python (além dos problemas mais básicos como o equação de advecção linear). Como tal, eu queria saber se existem livros por aí que eu poderia comprar que vêm com muitos exemplos codificados, ou se existem recursos on-line gratuitos que mostram como resolver vários problemas de CFD. Eu percebo que CFD pode ser um campo muito difícil, especialmente quando se lida com geometrias complexas. No entanto, se eu pudesse encontrar um recurso que, por exemplo, fornece instruções passo a passo sobre como resolver as equações de Euler 2D (com geometria muito simples), que parece ser o passo lógico quando se passa de equações escalares para vetoriais Esse seria um ótimo ponto de partida para aprender tópicos mais avançados. Infelizmente, aprendo pelo exemplo, e posso ficar atolado por muita teoria. Como tal, ter exemplos de código para trabalhar e entender ao lado da teoria seria uma grande ajuda. Muito obrigado.

4
Você estudou o 12 Passos para Navier Stokes de Lorena Barba?
adicionado o autor nicoguaro, fonte
Eu sugiro que você primeiro siga as "palestras", e se depois disso você achar que a abordagem não é adequada, mantenha sua opinião. Agora, você está pressionando que será o caso.
adicionado o autor nicoguaro, fonte
Eu dei uma olhada um pouco antes de postar isso e parece um recurso muito legal. Eu notei que parece saltar de EDPs relativamente simples para as equações de Navier-Stokes, sem dar nenhum tratamento às equações de Euler, o que é um pouco desafortunado (embora eu possa estar errado sobre isso).
adicionado o autor plaidshirt, fonte
Eles parecem afirmar que não cobrem as equações de Euler nesta página: lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes . Não tendo muita experiência em CFDs, eu supus que seria melhor tentar as equações de Euler antes de mergulhar nas complexas equações de Navier-Stokes, mas você está certo, eu irei me aprofundar mais neste curso e isso deve fazer sentido.
adicionado o autor plaidshirt, fonte

4 Respostas

Depende do que você entende por CFD. Eu diferenciaria entre abordagens acadêmicas e aplicadas.

Para fins acadêmicos - por exemplo, para aquisição de habilidades em análise numérica e computação científica ou um playground para seus pré-condicionantes recém-desenvolvidos - posso recomendar o livro de Griebel, Dornseifer e Neunhoeffer Simulações Numéricas em Dinâmica dos Fluidos . Abrange toda a gama:

  1. Declaração da física e dos PDEs, condições de contorno e as dificuldades esperadas
  2. Técnica de discretização (aqui, diferenças finitas )
  3. pseudocódigo
  4. pronto para usar o código C

Se você quer se tornar um engenheiro de CFD para uma empresa, você deve obter algum conhecimento teórico sobre modelagem e aproximação de fluxos e turbulência. (Talvez encontre uma nota de aula sobre escoamentos turbulentos ) E depois vá e faça os tutoriais com sua ferramenta CFD comercial favorita. (Ansys, Fluente, Estrela ...)

6
adicionado

SUPER LONG POST AQUI, EU DESEJO QUE EU PODERIA TL; DR IT, MAS SERIA BONITAMENTE INÚTIL

Eu estou supondo que você é um estudante de graduação em engenharia, porque se você é um graduado, você deve ter feito o curso de CFD no departamento em primeiro lugar. Se você está em matemática, eu não sei como se relacionar com o seu conhecimento das coisas na dinâmica clássica de fluidos.

ANTECEDENTES PARA MIM

Eu entendo muito bem a posição em que você está, eu mesmo fiquei preso no mesmo pântano por algum tempo e as coisas nunca chegaram a mim teoricamente, e pelo que eu experimentei, ler um livro como JD Anderson ou Versteeg não realmente ajuda muito. E eu sinto que é bastante insensível pedir a alguém que leia JD Anderson para cobrir, até mesmo os primeiros capítulos, e só então permitir que ele inicie a codificação CFD real. Durante o meu tempo como um undergrad ansioso tentando aprender CFD Passei várias noites dormitório digitalizar a internet para encontrar tutoriais decentes sobre CFD, vasculhando CFD on-line e reddit. Alguns até queriam que eu lesse todo o JDA e Versteeg antes de iniciar a codificação (o que é ridículo), e eu não consegui fazer nada e fiquei realmente frustrado. Eu ainda não conseguia fazer facilmente metade das coisas nesses livros, e estou no meu segundo curso avançado de CFD na pós-graduação. Espero que minha resposta aqui defina uma maneira melhor para a próxima geração começar a codificar em CFD.

PARAFUSO 2D !!!

Primeiras coisas primeiro, se você é um estudante de graduação e não é algo de um gênio, será muito difícil lutar contra o CFD e os cursos regulares juntos. Eu sugiro que você esqueça 2D e fique com os códigos 1D por enquanto . O CFD é bem difícil e você definitivamente precisa de um curso de graduação para começar a entender as nuances do método de volume finito e do método dos elementos finitos em 2D. Eu sugiro firmemente, firmemente aderindo a 1D, e aprendendo os diferentes métodos numéricos em Diferenciação Finita, como esquemas Lax (normal, Friedrich, Wendroff, etc.), esquemas centrais de diferenciação contra upwind e esquemas de discretização de tempo. Se você precisar de exemplos, basta procurar no Google algo como "Lax Friedrich 1D Advection C ++ code simples" e tentar combinar a teoria nesses livros com o código, entender como eles funcionam e por que funcionam da maneira que funcionam. Faça a análise de erros (Von Neumann e multi-modo também). Existe um mundo de coisas a serem aprendidas em 1D, você nunca ficará sem coisas. Mais importante ainda, para uma graduação, eles são fáceis, lógicos e indispensáveis ​​ao construir conceitos.

Eu sugiro tentar a equação de advecção transiente linear, incompreensível e invíscida, e depois a equação de calor transiente, brincando com diferentes condições de contorno (dirichlet, neumann, periódico, Robin) e células fantasmas. Se isso for feito, você pode tentar passar para 1D Euler compressível, mas os dois acima devem ser feitos com perfeição e rigor, incluindo a teoria. Isso ajudará você a construir uma base perfeitamente para um curso de pós-graduação, onde você pode relaxar e se concentrar em obter seus conceitos 2D corretamente.

Se você não tem certeza sobre nada, apenas o Google.

ANTECEDENTES PARA MIM # 2

Para se ter uma idéia, fiz dois projetos Navier-Stokes 2D que basicamente incluíram 8 códigos no semestre passado. Então eu pensei que estava classificado para CFD e, em seguida, a meio caminho para o curso avançado CFD este sem ainda estou fazendo códigos 1D. É assim que é importante e enfatizado ter uma mão firme em 1D. Não fique desapontado com a falta de lindas cores e formas, elas virão. : D

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

Supondo que você fez tudo isso para sua satisfação, você pode tentar construir o solver de Poisson 2D. Geralmente, você pode encontrar códigos de amostra e uma grade de amostra simples na Internet. Se não, você pode sempre fazer sua própria grade quadrada uniforme e resolvê-la. É o ponto de partida para codificar qualquer equação NS. Você pode aprender os diferentes esquemas interativos como ILU, Point Jacobi e outras coisas. Você pode encontrar amostras fáceis de tudo na internet.

Esqueça o Euler 2D por enquanto, como o sabor principal vem quando você tenta fluxos compressíveis, que possuem uma física complicada. Aprender esquemas numéricos agora tornará muito mais fácil para você entender o Euler 2D no futuro. Você pode fazer 2D com diferenças finitas, mas isso seria bastante simplista, inútil e pesado para a maior parte, se você não for um mestre em 1D. A maioria dos códigos 2D modernos usa hoje os métodos Finite Volume ou Continuous Galerkin, que são muito avançados em termos de formulação.

PONTOS A CONSIDERAR

Gostaria de concluir dando mais algumas dicas que podem ajudá-lo a iniciar de maneira realista o CFD

1.) Tente aprender códigos comerciais primeiro e fazer estágios em lugares que os utilizem. Eles lhe darão uma ideia do que esperar e formam uma excelente ferramenta educacional para entender os elementos e o fluxo de trabalho que entram em um problema de CFD.

2.) Alterne para C ++ ou Fortran o mais rápido possível se você estiver sonhando com códigos 2D. Meu último professor sem dizer a classe sobre um estudante sênior para mim que escreveu seu código em Python, e levou uma semana para ele convergir o projeto final que levou apenas alguns minutos para nós em C ++ e Fortran. Ele não conseguiu transformar todo o seu projeto e conseguiu uma nota ruim. O Matlab é igualmente ruim na scicomp. Aprenda a produzir seus dados em um arquivo .dat e use o Tecplot ou o Origin para plotar gráficos e contornos. Entre C ++ e Fortran, não importa muito no seu estágio.

3.) Mais uma vez, não posso enfatizar isso o suficiente, não vá em 2D. É complicado e irrelevante para o seu crescimento em CFD nesta fase.

4.) Se você não planeja fazer estudos de graduação, esqueça a codificação CFD. Você levará anos para dominar uma subárea CFD, e fazer isso em um código comercial levará um dia ou dois topos. Os códigos são projetados para serem à prova de idiotas, e os resultados são muito bons também. Será muito mais útil em equipes de engenharia de pesquisa não-fundamental-scicomp se você entender os fundamentos de FM e HT corretamente.

5.) CFD vai chutar o seu traseiro, e você vai adorar. Eu não dormi mais do que um total de 4 horas em 3 dias consecutivos, e isso é no meio das minhas férias de primavera (sem merda). Esteja preparado para a sua curva de aprendizado, mas é garantido que vale a pena quando você gera sua própria pilha colorida de lixo.

NO CURSO DE 12 PASSOS

Você pode tentar fazer as 12 etapas como um hobby, mas em retrospectiva foi um esforço inútil, autocongratulatório e superestimado em termos de tentar obter insights sobre CFD real, já que a maior parte é muito bem estruturada e simplista. É um ótimo curso, admito, mas é quase bom demais a ponto de ser inútil, se é que você entende o que quero dizer. O professor é muito convincente e inteligente, mas é muito fácil nos tópicos. Eu sei que muita gente aqui jura pelo seu curso e pode ficar muito ofendida comigo, mas acho que muitos que fizeram um curso de graduação em CFD podem concordar comigo também.

APRENDA COM CORAÇÃO!

Uma Ode ao CFD

Por Steve Bova e Alfred Lorber Laboratório de CFD da Universidade do Texas

Códigos antigos nunca morrem

Eles são entregues a você e eu

Se o seu não tem muita robustez

Você só precisa adicionar mais viscosidade

Muitos um botão e vários um interruptor

São necessários para executá-lo sem problemas

Se as taxas de flop mais altas você deve perceber

Basta gerar um tamanho de grade maior

Se uma modificação trivial seu gerente procura

Minha estimativa é de pelo menos dez semanas.

4
adicionado
Se você está interessado em fluxos incompressíveis, simplesmente não há 1D, ponto final. Você tem que fazer 2D ou 3D.
adicionado o autor nsanders, fonte
Eu concordo com o seu ponto de entender primeiro o 1D, já que os casos de dimensões mais altas sobrecarregam os estudantes com detalhes técnicos que são irrelevantes para aprender sobre os conceitos básicos do CFD. Mas 2D/3D é onde a codificação e a escolha certa de algoritmos são interessantes e onde problemas físicos relevantes podem ser resolvidos. Eu não começaria aqui sem um conhecimento sólido sobre a física subjacente e matemática embora. Muitos guias profissionais tendem a ensinar técnicas sofisticadas que a princípio parecem surgir do nada, mas muitos truques são bastante "óbvios" do ponto de vista matemático.
adicionado o autor Christian Waluga, fonte
+1 para este discurso retórico, pois algumas vezes algumas opiniões pessoais ajudam um recém-chegado a entender o que está acontecendo. No entanto, discordo totalmente dos seus argumentos "parafuso 2D". Não há equação de Navier-Stokes ou Euler em 1D ...
adicionado o autor Jan, fonte
@Jan Bem, eu não quis dizer nada muito parecido com CFD, mas sei que existem códigos 1D para NS e Euler, por exemplo. em modelagem de combustão e tubos de choque. Você simplifica o NS e os encadeia com física mais complexa em 1D. Eu simplesmente queria enfatizar que 1D é onde alguém que começa o cfd ganha mais profundidade e insight. Se ele entrar em 2D agora, temo que os conceitos mais profundos sejam postos de lado. De qualquer forma, obrigado por upvoting! Apenas descobri e comecei aqui no stackexchange (eu adorei!) E comecei a pensar que o discurso tinha ido longe demais. : D
adicionado o autor sebastian, fonte
Eu já passei por algumas técnicas no meu curso usando equações 1D, e é por isso que eu queria encontrar exemplos 2D mais avançados para tentar.
adicionado o autor plaidshirt, fonte

O livro de CFD de Blazek me ajudou mais do que qualquer outro. Ele explica muito bem os métodos de volume finito. Usando este livro, eu escrevi um solucionador 2D de Euler e um solucionador de Navier-Stokes 2D compressível.

Sugiro também que você assista vídeos da palestra de Qiqi Wang . Não a aerodinâmica do curso de fluidos viscosos - role mais abaixo e você deverá ver os vídeos com o Lecture 20 ... Aula 1. Estes vídeos são de um curso de métodos numéricos no MIT. Foi aqui que aprendi realmente como escrever códigos de volume finitos. Ele explica a teoria/como os métodos funcionam e depois desenvolve exemplos no MATLAB para que você possa acompanhar. Ele ensina muito bem e é fácil de seguir.

2
adicionado

Esta questão é extremamente ampla. Como Jan afirmou acima, o CFD pode ser relacionado à indústria ou baseado em um tópico de pesquisa. Além disso, existem grandes diferenças entre problemas de fluxo compressíveis e incompressíveis. Se você está se concentrando no fluxo compressível, então se familiarizar com as leis de conservação hiperbólica é um bom começo. E como James disse, implementar um solucionador de volume finito em uma simples grade cartesiana 2D é outro bom passo.

Eu recomendo livros como:

  • Métodos de Volume Finito para Problemas Hiperbólicos por Randall J. LeVeque
  • Métodos descontínuos de Galerkin por Jan S. Hesthaven e Tim Warburton

Hesthaven e Warburton têm códigos matlab e C ++ para implementar esquemas de GD para equações de Euler em 1D e 2D. Métodos de volume finito são DG com aproximações constantes por partes.

1
adicionado