Quais são os métodos possíveis para resolver equações de Euler compressíveis


13

Gostaria de escrever meu próprio solucionador para equações de Euler compressíveis e, mais importante, quero que ele funcione de maneira robusta em todas as situações. Eu gostaria que fosse baseado em FE (DG está ok). Quais são os métodos possíveis?

Estou ciente de fazer a DG de ordem 0 (volumes finitos) e isso deve funcionar com muita robustez. Eu implementei um solucionador básico de FVM e funciona muito bem, mas a convergência é bastante lenta. No entanto, esta é definitivamente uma opção.

Eu implementei um solucionador FE (funciona para qualquer malha e qualquer ordem polinomial em qualquer elemento) para equações lineares de Euler, mas estou recebendo oscilações espúrias (e eventualmente ele explode, então não posso usá-lo para resolver meu problema) e Eu li na literatura que é preciso estabilizá-lo. Se eu implementar alguma estabilização, isso funcionaria de maneira robusta para todos os problemas (= condições de contorno e geometrias)? Qual será a taxa de convergência?

Fora isso, existe alguma outra metodologia robusta para equações de Euler (isto é, DG de ordem superior com alguma estabilização)?

Estou ciente de que muitas pessoas tentaram muitas coisas diferentes em seus códigos de pesquisa, mas estou interessado em um método robusto que funcione para todas as geometrias e condições de contorno (editar: em 2D e 3D).

Respostas:


11

A principal dificuldade numérica na solução de um sistema não linear de primeira ordem de EDPs hiperbólicas, como as equações de Euler (para fluxo compressível e inviscível), é que descontinuidades (ondas de choque) aparecem na solução após um tempo finito, mesmo que os dados iniciais sejam suaves. Para lidar com isso, a maioria dos códigos modernos usa tanto

  • limitadores de declive (ou fluxo ) , que fornecem uma maneira de calcular com precisão derivadas próximas a descontinuidades sem introduzir oscilações espúrias; e
  • Solucionadores aproximados de Riemann , que localmente (em cada extremidade / face da grade) resolvem um problema de valor inicial com dados iniciais constantes por partes e uma única descontinuidade.

Existem discretizações de diferença finita (FD), volume finito (FV) e elemento finito (FE) que incorporam limitadores e solucionadores de Riemann, e tudo isso pode ser feito com alta precisão, pelo menos longe de choques. Portanto, não faz sentido dizer categoricamente que os métodos FE convergem mais rapidamente que os métodos FV - eles serão comparáveis ​​se discretizações de ordem comparáveis ​​forem usadas.

Entre os métodos de EF, os métodos descontínuos de Galerkin são os mais adequados aqui, uma vez que a solução será de fato descontínua. Se você deseja implementar o seu próprio, sugiro que você leia este documento de revisão e obtenha uma cópia do texto de Hesthaven & Warburton para entender o básico. Existem muitos papéis no DG para fluxo compressível .

Se você deseja usar o código de outra pessoa, e como eu sei que você usa Python, você pode dar uma olhada no código Hedge de Andreas Kloeckner , que tem uma interface Python e pode ser executado em GPUs. Provavelmente existem outros bons códigos DG disponíveis e muitos bons códigos FV (como o Clawpack , que também possui uma interface Python ).

Existem também métodos mais recentes de alta ordem, como diferença espectral. Para uma perspectiva recente, consulte Cheng & Shu 2009, Esquemas de alta ordem para CFD: uma revisão ou Ekaterinaris 2005, Métodos de alta ordem precisos e de baixa difusão numérica para aerodinâmica .


Obrigado David, especialmente por todos os ponteiros para os papéis. FV é apenas DG ordem zero, não é? Ou o FV de ordem superior é de alguma forma diferente da mesma ordem de DG? Eu mesmo quero implementar algo, para entender completamente o que está acontecendo. O código de cobertura parece legal.
Ondřej Čertík

1
FE e FV são frequentemente equivalentes para esquemas de primeira ordem. Os esquemas de ordem superior são geralmente diferentes e nenhum é um subconjunto do outro.
David Ketcheson

1
Você pode unificar até certo ponto com a "DG de reconstrução". O FV normalmente usa funções de teste constantes por partes e reconstrói usando vizinhos para aumentar a ordem. A DG normalmente usa um espaço de teste correspondente (Galerkin) e aumenta a ordem interna. Observe que a DG ainda precisa de limitadores para choques fortes, e então não é mais um método de Galerkin. O DG de reconstrução permite que você faça as duas coisas: elevar a ordem interna e reconstruir usando vizinhos; portanto, o VF e o DG convencionais são casos limitantes.
Jed Brown

Se estou modelando um sistema físico que, por razões empíricas, não apresenta ondas de choque, então qual é um bom método?
SIGFPE

@sigfpe, seria melhor você postar uma nova pergunta, com mais informações.
David Ketcheson 15/09/2013
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.