Antecedentes:
Eu criei apenas uma solução numérica para o 2d Navier-Stokes, para um curso. Era uma solução para o fluxo da cavidade acionado pela tampa. O curso, no entanto, discutiu vários esquemas para discretizações espaciais e discretizações de tempo. Também fiz mais cursos de manipulação de símbolos aplicados ao NS.
Algumas das abordagens numéricas para lidar com a conversão da equação analítica / simbólica de PDE para diferença finita incluem:
- Euler FTFS, FTCS, BTCS
- Relaxado
- Midpoint Leapfrog
- Lax-Wendroff
- MacCormack
- grade deslocada (a difusão espacial permite que a informação se espalhe)
- TVD
Para mim, na época, isso parecia "inserir-nome encontra um esquema e isso funciona". Muitos destes eram de antes da época do "abundante silício". São todas aproximações. No limite eles. em teoria, levam aos PDE's.
Embora a Simulação Numérica Direta ( DNS ) seja divertida e a Rans ( Navans -Stokes Médios Reynolds ) também seja divertida, eles são os dois "pontos finais" do continuum entre tratável computacionalmente e representando plenamente os fenômenos. Existem várias famílias de abordagens que vivem dentro delas.
Eu tive professores de CFD dizendo, em palestra, que a maioria dos solucionadores de CFD faz fotos bonitas, mas, na maioria das vezes, essas fotos não representam a realidade e que pode ser muito difícil e dar muito trabalho para obter uma solução que representa a realidade.
A sequência de desenvolvimento (como eu o entendo, não exaustiva) é:
- comece com as equações que governam -> PDE's
- determine sua discretização espacial e temporal -> grade e regras FD
- aplicam-se ao domínio, incluindo condições iniciais e condições de contorno
- resolver (muitas variações na inversão da matriz)
realizar verificações de realidade grosseira, adequadas a soluções conhecidas, etc.
construir alguns modelos físicos mais simples derivados de resultados analíticos
- testá-los, analisar e avaliar
- iterar (voltando para as etapas 6, 3 ou 2)
Pensamentos:
Trabalhei recentemente com modelos CART, árvores oblíquas, florestas aleatórias e árvores com gradiente. Eles seguem regras derivadas matematicamente, e a matemática orienta a forma da árvore. Eles trabalham para criar formulários discretos também.
Embora essas abordagens numéricas criadas pelo homem funcionem um pouco, existe um "vodu" extenso necessário para conectar seus resultados aos fenômenos físicos que eles devem modelar. Frequentemente, a simulação não substitui substancialmente os testes e verificações do mundo real. É fácil usar o parâmetro errado ou não levar em consideração a variação na geometria ou nos parâmetros de aplicação experimentados no mundo real.
Questões:
- Houve alguma abordagem para permitir que a natureza do problema defina
a discretização apropriada, o esquema de diferenciação espacial e temporal, as condições iniciais ou a solução? - Uma solução de alta definição, associada às técnicas de aprendizado de máquina, pode ser usada para criar um esquema de diferenciação que possui etapas muito maiores, mas que mantém convergência, precisão e outras coisas?
- Todos esses esquemas são acessíveis "humanamente tratáveis para derivar" - eles têm alguns elementos. Existe um esquema de diferenciação com milhares de elementos que faz um trabalho melhor? Como é derivado?
Nota: Seguirei com o empiricamente inicializado e o empiricamente derivado (em oposição ao analítico) em uma pergunta separada.
ATUALIZAR:
Uso de aprendizado profundo para acelerar os fluxos de rede de Boltzmann. Deu ~ 9x aceleração para o seu caso particular
Hennigh, O. (no prelo). Lat-Net: Simulações de Fluxo de Boltzmann em Malha Compactada usando Redes Neurais Profundas. Disponível em: https://arxiv.org/pdf/1705.09036.pdf
Repo com código (acho):
https://github.com/loliverhennigh/Phy-NetAproximadamente 2 ordens de magnitude mais rápidas que a GPU, 4 ordens de magnitude ou ~ O (10.000x) mais rápidas que a CPU e o mesmo hardware.
Guo, X., Li, W. & Ioiro, F. Redes neurais convolucionais para aproximação de fluxo constante. Retirado de: https://autodeskresearch.com/publications/convolutional-neural-networks-steady-flow-approximation
Outros que analisaram o tópico há cerca de 20 anos:
Muller, S., Milano, M. e Koumoutsakos P. Aplicação de algoritmos de aprendizado de máquina para modelagem e otimização de fluxo. Resumo Anual de Pesquisa do Center for Turbulence Research 1999 Obtido em: https://web.stanford.edu/group/ctr/ResBriefs99/petros.pdf
Atualização (2017):
Isso caracteriza o uso de métodos não gradientes no aprendizado profundo, uma arena que se baseia exclusivamente em gradientes. Embora a implicação direta da atividade esteja no aprendizado profundo, também sugere que o AG pode ser usado como equivalente na resolução de um problema muito difícil, muito profundo e muito complexo no nível consistente ou superior aos métodos baseados em descidas gradientes.
Dentro do escopo desta pergunta, pode sugerir que um ataque baseado em aprendizado de máquina em maior escala possa permitir "modelos" no tempo e no espaço que aceleram substancialmente a convergência de métodos no domínio do gradiente. O artigo chega ao ponto de dizer que, às vezes, ir na direção da descida do gradiente se afasta da solução. Enquanto em qualquer problema com ótimas localidades ou trajetórias patológicas (a maioria dos problemas do mundo real de alto valor tem algumas delas), espera-se que o gradiente não seja globalmente informativo, ainda é bom quantificá-lo e validá-lo empiricamente como foi neste artigo e a capacidade de "pular os limites" sem exigir "redução da aprendizagem" à medida que você entra no momento ou descontrai.
Atualização (2019):
Parece que o Google agora tem uma contribuição "como encontrar um melhor solucionador" do quebra-cabeça da IA. link Isso faz parte da IA para resolver.
** Atualização (2020): ** E agora eles estão fazendo e fazendo bem ...
https://arxiv.org/pdf/1911.08655.pdf
Pode-se argumentar que eles poderiam desconstruir seu NN para determinar a discretização real. Eu particularmente gosto da figura 4.
fonte
Respostas:
É uma piada de longa data que CFD significa "dinâmica de fluidos colorida". No entanto, é usado - e útil - em uma ampla gama de aplicações. Acredito que seu descontentamento deriva de não distinguir suficientemente entre dois passos interconectados, mas diferentes: criar um modelo matemático de um processo físico e resolvê-lo numericamente. Deixe-me comentar um pouco sobre isso:
Nenhum modelo matemático (ou realmente qualquer) da realidade física está sempre correto ; na melhor das hipóteses, é útil para prever os resultados das medições em um conjunto de circunstâncias demarcadas de maneira muito precisa (mas esperançosamente grande). Isso inclui o fato de que deve ser possível obter essa previsão, dada uma configuração específica; é por isso que temos toda uma hierarquia de modelos, da teoria quântica de campos à mecânica newtoniana. Em particular, as equações de Navier-Stokes não descrevem o fluxo de fluido, elas fornecem uma previsão de aspectos específicos do comportamento de certos fluidos sob certas condições.
Para os modelos matemáticos mais complicados (como as equações de Navier-Stokes), você nunca pode obter uma solução exata (e, portanto, previsão), mas apenas uma aproximação numérica. Isso não é tão ruim quanto parece, pois as medidas com as quais você deseja compará-las nunca são exatas. Assim como na escolha dos modelos, existe uma troca entre precisão e tratabilidade - não faz sentido gastar tempo ou dinheiro na obtenção de uma solução mais precisa do que o necessário. Nesse ponto, torna-se puramente uma questão de como aproximar numericamente a solução (neste caso) de uma equação diferencial parcial, que é objeto de todo um campo matemático: análise numérica. Este campo preocupa-se em provarestimativas de erro para certos métodos numéricos (novamente, sob determinadas condições especificadas explicitamente). Sua declaração "insert-name encontra um esquema e funciona" é grosseiramente injusta - deve ser "insert-name encontra um esquema e prova que funciona". Além disso, esses esquemas não são retirados do nada - eles são derivados de princípios matemáticos bem compreendidos.
(Por exemplo, esquemas de diferenças finitas podem ser derivados usando aproximações de Taylor de uma determinada ordem. Certamente é possível - e algumas pessoas conseguem - obter esquemas de diferenças de ordem muito alta e implementá-los, mas existe uma lei de retornos decrescentes : isso só pode ser automatizado parcialmente e, portanto, exige muito esforço, e certas condições cada vez mais restritivas devem ser satisfeitas para obter a maior precisão correspondente. Além disso, em algum momento, é melhor usar um esquema diferente, como métodos espectrais.)
O tema comum aqui é que os modelos e esquemas numéricos vêm com uma variedade de aplicabilidade, e é importante escolher a combinação certa para um determinado objetivo. É precisamente por isso que um cientista computacional precisa conhecer tanto a ciência do domínio (para saber qual modelo é válido em qual situação) quanto a matemática (para saber qual método é aplicável a qual modelo e a qual precisão)! Ignorar esses rótulos "use apenas como direcionado" leva a produzir o tipo de "besteira computacional" (no sentido técnico de Harry Frankfurt) a que seus professores de CFD se referiram.
Por que usar um modelo computacional quando você tem um modelo físico (como um túnel de vento): Uma razão é que a execução de um software pode ser de magnitude superior à criação de um modelo e sua colocação em um túnel de vento. Além disso, geralmente não é um ou-ou: por exemplo, ao projetar um carro ou um avião, você faria centenas ou milhares de simulações para restringir as coisas e, em seguida, apenas o (s) candidato (s) final (is) colocava um modelo no vento. túnel.
Atualizar:
Usar o aprendizado de máquina em vez da simulação numérica é como dizer "não ter modelo é melhor do que ter um modelo aproximado", com o qual duvido que alguém em dinâmica de fluidos (ou qualquer outro campo) concordaria. Dito isto, é certamente possível (e realmente concluído) usar o aprendizado de máquina para selecionar "geometria ou parâmetros de aplicação" desconhecidos com base em concordância com os dados medidos; no entanto, aqui também os métodos baseados em modelo, como quantificação da incerteza ou problemas inversos (bayesianos), costumam ter um desempenho muito melhor (e são baseados em rigorosos princípios matemáticos). Selecionando numérico parâmetros como tamanho da etapa ou ordem do método usando aprendizado de máquina também são possíveis em princípio, mas não vejo o benefício, pois existe uma teoria matemática que diz exatamente como escolher esses parâmetros com base no seu modelo (matemático).
Atualização 2:
O artigo ao qual você vincula é sobre computação gráfica , não ciência da computação : o objetivo deles não é ter uma simulação precisa (ou seja, uma solução numérica de um modelo matemático) de um processo físico, mas algo que se assemelha a olho nu (um caso extremo de "dinâmica de fluidos colorida" ...) - essa é uma questão muito diferente. Em particular, não há erro vinculado à saída da rede treinada em comparação com a solução correspondente às equações de Navier-Stokes, que é uma parte indispensável de qualquer método numérico.
(E sua primeira pergunta começa com uma premissa falsa: em todas as abordagens, o problema determina o modelo, o modelo determina a discretização, a discretização determina o solucionador.)
fonte
in every approach, the problem determines the model, the model determines the discretization, the discretization determines the solver.
Eu acho que você está misturando algumas idéias diferentes que estão causando confusão. Sim, existem várias maneiras de discretizar um determinado problema. Escolher uma maneira apropriada pode parecer "vodu" quando você está aprendendo essas coisas em sala de aula, mas quando os pesquisadores as escolhem, elas o fazem com base na experiência combinada do campo, conforme publicado na literatura. Portanto, eles fazem escolhas muito mais informadas do que um aluno poderia.
Pergunta 1: Se você está solucionando um problema e alterna de um esquema para outro, o tempo de execução muda, os critérios de convergência podem mudar ou seu comportamento assintótico, mas um ponto muito importante é que sua solução convergente final NÃO deve mudar . Caso isso aconteça, você precisa refinar suas malhas ou há algo errado com seu esquema numérico. Talvez você possa usar algum algoritmo de otimização para criar seus esquemas numéricos e melhorar o desempenho de uma classe específica de problemas, mas muitas vezes os esquemas derivados da mão são criados com um comportamento ótimo de convergência / assintótico ideal matematicamente comprovável para o número de termos envolvidos ou o tipo de malha usado.
Agora, o parágrafo acima não explica coisas como diferentes modelos de turbulência, que são diferentes formulações / aproximações matemáticas da física, portanto, espera-se que tenham soluções diferentes. Estes são novamente altamente estudados na literatura, e não acho que os programas estejam no ponto em que possam analisar fenômenos físicos e produzir um modelo matemático que prediz adequadamente a resposta de sistemas físicos semelhantes.
Pergunta 2: Sim, você pode derivar um esquema que use toda a malha de uma só vez, usando algum código de computador para fazer isso. Eu até me sinto seguro em dizer que, para algumas malhas, esses códigos existem e podem fornecer o seu esquema em questão de algumas horas (depois que você encontrar o código). O problema é que você nunca derrotará Nyquist. Há um limite para o tamanho das etapas que você executa, dependendo da frequência máxima da resposta do seu sistema, e um limite para o tamanho das células / elementos da malha que você pode ter, dependendo das frequências espaciais da solução.
Isso nem explica o fato de que muitas vezes o trabalho computacional envolvido no uso de um esquema mais complexo geralmente não é linear com a complexidade. A razão pela qual a maioria dos alunos aprende métodos RK4 para integração de tempo é que, quando você começa a usar métodos com uma ordem mais alta do que isso, obtém mais avaliações de sua derivada mais rapidamente do que recebe ordens de seu método. No domínio espacial, os métodos de ordem superior aumentam muito o preenchimento da matriz, portanto, você precisa de menos pontos de malha, mas o trabalho que você faz ao inverter a matriz esparsa aumenta muito, pelo menos compensando parcialmente seus ganhos.
Não sei ao que você está se referindo na questão três. Você está falando em transformar soluções próximas a um problema em melhores soluções? Nesse caso, recomendo algumas leituras leves sobre multigrid. Se você está perguntando sobre transformar esquemas numéricos decentes em esquemas incríveis, acho que o resto da minha resposta pelo menos toca nisso.
fonte