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.
Respostas:
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.
fonte