Discretização PDE com o método de rothe e o método de linhas (implementação modular)

8

A equação do calor é discretizada no espaço com FV (ou FEM), e uma equação semi-discreta é obtida (sistema de EDOs). Essa abordagem, conhecida como método de linhas , permite alternar facilmente de uma discretização temporal para outra, sem duplicação de código. Em particular, você pode reutilizar qualquer integrador de tempo para EDOs sem muito esforço. Isso é muito conveniente porque se você decidir alterar sua discretização espacial de FV para dizer FE, você ainda terá uma equação semi-discreta e seus integradores de tempo ainda funcionarão.

Agora estou tentando implementar o método de rothe para o mesmo problema. No entanto, discretizar no tempo primeiro me obriga a reescrever a discretização espacial para cada esquema de discretização temporal que eu queira usar. Isso elimina a reutilização de integradores de tempo que eu tinha anteriormente e torna muito complicado escrever software modular que pode discretizar um PDE usando o método de linhas ou o método de Rothe.

Existe uma maneira de implementar as duas abordagens, sem duplicação de código?

Editar:

Em problemas dominados por convecção, a discretização da EF precisa de estabilização no tempo e no espaço, tornando o método de Rothe a "melhor" opção. No entanto, este não é o caso dos métodos FV / DG.

No método das linhas, o PDE é discretizado primeiro no espaço e depois no tempo. No método de Rothe, o PDE é discretizado primeiro no tempo e depois no espaço. A terceira possibilidade é discretizar simultaneamente no espaço e no tempo (também conhecidas como discretizações espaço-temporais). Uma discussão sobre o método de linhas e o método de Rothe pode ser encontrada aqui . Para mais informações, o livro "Métodos de elementos finitos para problemas de fluxo" da Donea e Huerta é um bom recurso.

gnzlbg
fonte
@gnzlbg: Talvez você possa incluir uma referência ou duas aos métodos que está discutindo? Esse é o tipo de pergunta em que nossa comunidade tende a ser boa; portanto, a falta de respostas indica que não temos certeza exatamente do que você está perguntando.
Aron Ahmadia
@AronAhmadia done.
precisa saber é o seguinte
2
Obrigado pela informação adicionada. Não tenho uma resposta, mas acredito que as objeções ao método de linhas da página à qual você está vinculado estão equivocadas. Na verdade, são apenas objeções ao uso de discretizações de tempo de várias etapas em combinação com grades espaciais dinamicamente adaptáveis. Essas escolhas são independentes de se usar o método das linhas ou o método de Rothe. Dentro do método das linhas, é possível obter esquemas de alta ordem e de uma etapa usando a discretização de tempo de Runge-Kutta.
precisa saber é o seguinte
@DavidKetcheson Sim, também não concordo totalmente com os argumentos apresentados na discussão. Ainda assim, o método de Rothe é realmente melhor para discretizações do MEF de problemas dominados por convecção: o parâmetro de estabilização depende tanto do intervalo de tempo quanto da discretização espacial e temporal utilizada. Usando o método de linhas, seu parâmetro de estabilização seria complicado para dizer o mínimo. No entanto, prós e contras de cada método é um tópico completo em si, e é preciso considerar também as formulações espaço-tempo.
precisa saber é o seguinte
Como o @Wolfgang escreveu a descrição do Method of Rothe ao qual você vinculou como parte da documentação do acordo.II, pedi a ele que tentasse resolver sua resposta.
Aron Ahmadia

Respostas:

8

Eu realmente não tenho muito mais a dizer do que já fiz nas páginas às quais você vinculou, mas, para mim, os argumentos principais são assim:

  • Em muitos problemas, é necessário adaptar a malha entre as etapas do tempo. A estrutura conceitual para fazer isso é o método Rothe, no qual é possível escolher a discretização espacial de maneira independente a cada etapa do tempo, enquanto o método das linhas a priori assume que o PDE é convertido em um sistema de ODEs - incompatível com a adaptação da malha.

  • Por outro lado, se você não deseja adaptar sua malha, isso não importa: na maioria dos casos, se a discretização espacial for a mesma entre as etapas do tempo, não importa se você deseja para discretizar primeiro no espaço e depois no tempo usando seu integrador de tempo favorito ou o contrário - você terá o mesmo problema discreto a ser resolvido a cada passo do tempo. Nesses casos, o método Rothe e o método das linhas são os mesmos.

  • Isso se estende ao caso em que você só deseja adaptar a malha de vez em quando: você pode considerar isso como o método de linhas aplicado a várias etapas de tempo, adaptando a malha e, em seguida, mais um conjunto de etapas em que você aplique o método das linhas. Ou você pode pensar nisso como o método Rothe, no qual apenas adapta a malha de vez em quando. Essencialmente, sairá para o mesmo esquema numérico, apenas um ponto de vista filosófico diferente.

Pode valer a pena acrescentar mais um ponto: no mundo da ODE, costuma-se usar esquemas de alta ordem com vários estágios ou várias etapas. Portanto, há um benefício significativo em agrupar esses algoritmos em pacotes que você só precisa entregar um sistema ODE de uma maneira ou de outra. Por outro lado, para PDEs dependentes do tempo, na maioria das vezes utiliza-se métodos simples de escalonamento do tempo (com a exceção notável de alguns solucionadores hiperbólicos): por exemplo, Crank-Nicolson, BDF-2 ou apenas os esquemas de Euler para a frente ou para trás . Para esses integradores simples de tempo, não é particularmente difícil codificar manualmente a integração de tempo, pois é muito mais simples que a discretização espacial. O que isso significa é que o preço a pagar por pensar em termos do método Rothe - por não poder usar um pacote de solucionador de ODE - é pequeno, considerando que o preço a pagar pelo uso do método das linhas - não sendo capaz de adaptar a malha entre as etapas do tempo - é grande. Isso pode explicar por que a maioria das pessoas no mundo dos elementos finitos adaptativos prefere pensar ao longo do método Rothe.

Como corolário até o último ponto, e voltando à pergunta original: é realmente verdade que no método Rothe é difícil empacotar tudo bem de maneira orientada a objetos. No entanto, (i) desde que você se mantenha com uma única classe de integradores de ODE, é claro que ainda pode tabular os coeficientes dos vários estágios do integrador em uma classe e ter o código que os calcula totalmente encapsulado; e (ii) o fato de que geralmente se usa integradores de tempo relativamente simples para PDEs dependentes do tempo significa que a quantidade de código necessária para implementar a integração de tempo é geralmente muito menor do que a quantidade de código que lida com a discretização espacial. Em outras palavras, não sei como separar bem a discretização espacial da temporal usando o método Rothe, mas não entendi.

Wolfgang Bangerth
fonte
1
Essa "resposta" é mais um comentário - não vejo como ela responde à pergunta. Além disso, no método de linhas, se você usar um método de uma etapa, não há nada errado em ter um conjunto diferente de ODEs a cada etapa.
David Ketcheson 08/08/12
1
@WolfgangBangerth Método "uma etapa", em oposição ao método de várias etapas. Os métodos Runge-Kutta, incluindo as variantes Rosenbrocks, DG in-time e IMEX, são fáceis de usar com adaptabilidade. O projeto de esquemas de integração de tempo pode ser igualmente sutil à discretização espacial, considerando fortes propriedades de estabilidade, controle de erro incorporado, onde os esquemas incorporados têm propriedades de estabilidade desejadas, adjuntos com propriedades desejadas, visando partes específicas do espectro, atingindo partes específicas do espectro, obtendo uma ordem de estágio desejada, preservando a estrutura geométrica. Propriedades, como sendo de baixo custo para o agente de resolução implícitas quanto possível, etc
Jed Brown
1
Claro que você pode fazer isso. O problema com sua abordagem é que você precisa interpolar (ou projetar de alguma forma) soluções em malhas anteriores na nova malha. Isso introduz um erro que não é apenas uma projeção de Galerkin e, portanto, não é fácil de analisar - o resultado não é simplesmente um esquema de Galerkin.
Wolfgang Bangerth 8/08
1
Por outro lado, se você der um método através da abordagem Rothe, obtém um PDE para cada etapa em que a solução da etapa anterior aparece no lado direito. Ao discretizar, você testa esta solução anterior com funções de teste na malha atual. Isso pode ser interpretado como algum tipo de projeção - mas não é a projeção L2, mas algo que é uma combinação ponderada da projeção L2 e H1 com o peso, dependendo do intervalo de tempo. Como é um esquema de Galerkin puro, é fácil de analisar e eu arriscaria adivinhar que o erro é menor dessa maneira.
Wolfgang Bangerth 8/08
1
Agora, como ponto final, meu melhor palpite é que, se você mudar a malha apenas ocasionalmente, não fará muita diferença na prática. Desde a testar uma solução em uma malha com funções de teste a partir de uma malha diferente é uma espécie de dor, eu faço isso interpolação o tempo todo - sem muitos problemas ;-)
Wolfgang Bangerth