La ecuación de calor se discretiza en el espacio con FV (o FEM), y se obtiene una ecuación semi-discreta (sistema de EDO). Este enfoque, conocido como el método de líneas , permite cambiar fácilmente de una discretización temporal a otra, sin duplicación de código. En particular, puede reutilizar cualquier integrador de tiempo para ODE sin mucho esfuerzo. Esto es muy conveniente porque si decides cambiar tu discretización espacial de FV para decir FE, aún obtienes una ecuación semi-discreta y tus integradores de tiempo aún funcionan.
Ahora estoy tratando de implementar el método de rothe para el mismo problema. Sin embargo, la discretización en el tiempo primero me obliga a reescribir la discretización espacial para cada esquema de discretización temporal que quiera utilizar. Esto elimina la reutilización de los integradores de tiempo que tenía anteriormente, y hace que sea muy complicado escribir software modular que pueda discretizar un PDE utilizando el método de líneas o el método de Rothe.
¿Hay alguna manera de implementar ambos enfoques, sin duplicación de código?
Editar:
En problemas dominados por convección, la discretización FE necesita estabilización tanto en tiempo como en espacio, lo que hace que el método de Rothe sea la "mejor" opción. Sin embargo, este no es el caso de los métodos FV / DG.
En el método de líneas, el PDE se discretiza primero en el espacio y luego en el tiempo. En el método de Rothe, el PDE se discretiza primero en el tiempo y luego en el espacio. La tercera posibilidad es discretizar tanto en el espacio como en el tiempo simultáneamente (también conocido como discretizaciones espacio-tiempo). Una discusión sobre el método de líneas y el método de Rothe se puede encontrar aquí . Para obtener más información, el libro "Métodos de elementos finitos para problemas de flujo" de Donea y Huerta es un buen recurso.
Respuestas:
Realmente no tengo mucho más que decir de lo que ya hice en las páginas a las que se vinculó, pero para mí los argumentos principales son los siguientes:
En muchos problemas, uno necesita adaptar la malla entre pasos de tiempo. El marco conceptual para hacer esto es el método Rothe, donde uno puede elegir la discretización espacial de forma independiente en cada paso de tiempo, mientras que el método de líneas a priori supone que el PDE se convierte en un sistema de EDO, lo cual es incompatible con la adaptación de malla.
Por otro lado, si no desea adaptar su malla, entonces no importa: en la mayoría de los casos, si la discretización espacial será la misma entre los pasos de tiempo, entonces no importa si desea para discretizar primero en el espacio y luego en el tiempo usando su integrador de tiempo favorito, o al revés: saldrá con el mismo problema discreto que resolver en cada paso del tiempo. En tales casos, el método Rothe y el método de líneas son los mismos.
Esto se extiende al caso en el que solo desea adaptar la malla de vez en cuando: puede considerar esto como el método de líneas aplicadas a varios pasos de tiempo, luego adaptando la malla, luego un conjunto más de pasos de tiempo donde Aplicar el método de líneas. O puede pensar en esto como el método Rothe en el que solo adapta la malla de vez en cuando. Básicamente saldrá al mismo esquema numérico, solo un punto de vista filosófico diferente.
Puede valer la pena agregar un punto más: en el mundo ODE, a menudo se usan esquemas de alto orden con varias etapas o pasos múltiples. Por lo tanto, hay un beneficio significativo al embotellar estos algoritmos en paquetes que solo tiene que entregar a un sistema ODE de una forma u otra. Por otro lado, para PDEs dependientes del tiempo, la mayoría de las veces se usan métodos de paso de tiempo bastante simples (con la notable excepción de algunos solucionadores hiperbólicos): por ejemplo, Crank-Nicolson, BDF-2 o solo los esquemas de Euler hacia adelante o hacia atrás . Para estos integradores de tiempo simples, no es particularmente difícil codificar manualmente la integración de tiempo, ya que es mucho más simple que la discretización espacial. Lo que esto significa es que el precio a pagar por pensar en términos del método Rothe (no poder usar un paquete de solución ODE) es pequeño, mientras que el precio a pagar por usar el método de líneas (no poder adaptar la malla entre pasos de tiempo) es grande. Eso podría explicar por qué la mayoría de las personas en el mundo de elementos finitos adaptativos prefieren pensar con el método Rothe.
Como corolario del último punto, y volviendo a la pregunta original: de hecho, es cierto que en el método Rothe es difícil empaquetar todo de una manera orientada a objetos. Sin embargo, (i) siempre y cuando se quede con una sola clase de integradores ODE, por supuesto, todavía puede tabular los coeficientes de las diversas etapas del integrador en una clase y hacer que el código que los computa esté completamente encapsulado; y (ii) el hecho de que comúnmente se utilizan integradores de tiempo relativamente simples para PDE dependientes del tiempo significa que la cantidad de código necesaria para implementar la integración de tiempo suele ser mucho menor que la cantidad de código que se ocupa de la discretización espacial. En otras palabras, no sé cómo separar bien la discretización espacial de la temporal utilizando el método Rothe, pero no he
fuente