¿Métodos para resolver sistemas no lineales de advección-difusión más allá de Newton-Raphson?


9

Estoy trabajando en un proyecto donde tengo dos dominios acoplados adv-diff a través de sus respectivos términos fuente (un dominio agrega masa, el otro resta masa). Por brevedad, los estoy modelando en estado estacionario. Las ecuaciones son su ecuación de transporte de advección-difusión estándar con un término fuente similar a este:

C1t=0 0=F1+Q1(C1,C2)C2t=0 0=F2+Q2(C1,C2)

Donde Fyo es el flujo difusivo y advectivo para la especie yo , y Qyo es el término fuente para la especie yo .

He podido escribir un solucionador de mi problema usando el método Newton-Raphson, y he acoplado completamente los dos dominios usando una matriz de masa en bloque, es decir:

Fcoupled=[A100A2][c1,ic2,i]xi[b1(c1,i,c2,i)b2(c1,i,c2,i)]

El término se utiliza para determinar la matriz jacobiana y actualizar ambas c 1Fcoupledc1 como :c2

J(xi)[xi+1xi]=Fcoupled

o

xi+1=xi(J(xi))1Fcoupled

Para acelerar las cosas, no calculo el jacobiano en cada iteración; en este momento estoy jugando con cada cinco iteraciones, lo que parece funcionar bastante bien y mantener la solución estable.

El problema es: me voy a mudar a un sistema más grande donde ambos dominios están en 2D / 2.5D, y calcular la matriz jacobiana va a agotar rápidamente mis recursos informáticos disponibles. Estoy construyendo este modelo para usarlo en una configuración de optimización más adelante, por lo que tampoco puedo estar detrás del volante en cada iteración ajustando el factor de amortiguación, etc.

¿Estoy en lo cierto al buscar en otro lugar un algoritmo más robusto para mi problema, o es tan bueno como parece? He examinado un poco la cuasi linealización, pero no estoy seguro de qué tan aplicable es wrt a mi sistema.

¿Hay algún otro algoritmo hábil que pueda haber pasado por alto que pueda resolver un sistema de ecuaciones no lineales sin recurrir a volver a calcular el jacobiano como ofensivo?


2
¿Ha considerado solucionadores iterativos como AMG - métodos algebraicos de múltiples cuadrículas. Es posible que deba encontrar buenos preacondicionadores basados ​​en la física.
NameRakes

1
¿Puede obtener acceso a un clúster informático donde puede distribuir la formación y la solución jacobiana utilizando un paquete de álgebra lineal paralela?
Bill Barth

No, no he considerado AMG, pensé que esos son solo para sistemas simétricos y no podrían usarse en problemas dominados por convección. Buscaré nuevamente en la literatura para AMG.
cbcoutinho

Los cálculos paralelos son difíciles porque este proyecto se está desarrollando como una aplicación independiente para colegas que no tienen acceso a ese tipo de recursos. Consideré el desarrollo de MPI en el proyecto para mi propio bien, sino que aumentaría la barrera de entrada para los demás, que era el punto central en el primer lugar ..
cbcoutinho

3
¿Por qué es tan problemático calcular el jacobiano? Si está utilizando diferencias / volúmenes / elementos finitos, debe tener una parte dispersa que siempre sea la misma y una parte diagonal que cambia pero es trivial de calcular.
David Ketcheson

Respuestas:


4

Supongo que la limitación en 2D y 3D es almacenar el jacobiano.

Una opción es retener las derivadas de tiempo y usar un paso de tiempo "pseudo" explícito para iterar al estado estable. Normalmente, el número de CFL que necesita para los sistemas difusivos y reactivos puede ser prohibitivamente pequeño. Puede probar multirredes no lineales (también se denomina multirredes de almacenamiento de aproximación completa) y pasos temporales locales para acelerar la convergencia.

La otra opción es usar un esquema totalmente implícito como lo estás haciendo ahora, pero no almacenar el jacobiano global. Podría usar un esquema implícito sin matriz. (donde D F es el jacobiano) se puede resolver con un solucionador de subespacio Krylov como GMRES y BiCGStab usando el hecho de que D F ( u n )

reF(tunorte)δtunorte=-F(tunorte)
reF Esto se debe a que GMRES y BiCGStab no requieren una matrizA deLHS, solo necesitan poder calcular su productoAxdado un vectorx
reF(tunorte)δtuF(tunorte+ϵδtuδtu)-F(tunorte)ϵ.
UNAUNAXX .

Ahora con un valor adecuado de (generalmente alrededor de 10 - 7 para flotadores de doble precisión) puede ejecutar un bucle de Newton sin calcular ni almacenar un jacobiano. Sé con certeza que esta técnica se utiliza para resolver algunos casos no triviales en la dinámica de fluidos computacional. Sin embargo, tenga en cuenta que el número de evaluaciones de la función Fϵ10-7 7F tenga en será mayor que en una técnica de almacenamiento de matriz, en lugar de requerir un producto de vector de matriz.

Otra cosa a tener en cuenta es que si su sistema es tal que se necesita un preacondicionador potente (es decir, Jacobi o block-Jacobi no serán suficientes), es posible que desee intentar usar el método mencionado anteriormente como un suavizador en un esquema de múltiples cuadrículas. Si desea probar un preacondicionador Jacobi de punto o bloque, puede calcular y almacenar solo los elementos diagonales o bloques diagonales del Jacobi, que no es mucho. También mencionaría que un preacondicionador Gauss-Seidel o SSOR puede implementarse sin almacenar explícitamente un jacobiano. Este artículo describe la implementación de un GMRES sin matriz preacondicionado con Gauss-Seidel simétrico sin matriz en el contexto de la dinámica de fluidos computacional.


1

Desde mi experiencia con las ecuaciones de Navier-Stokes, uno puede hacerlo muy bien sin esquemas totalmente implícitos.

Si solo desea un esquema numérico rápido para la solución de la evolución del tiempo, eche un vistazo a los esquemas IMEX (implícito-explícito); véase, por ejemplo, este documento de Ascher, Ruuth, Spiteri Métodos implícitos-explícitos de Runge-Kutta para ecuaciones diferenciales parciales dependientes del tiempo .

Incluso puede intentar usar un esquema explícito de integración de tiempo de alto orden con control de tamaño de paso (como el de Matlab ODE45). Sin embargo, puede tener problemas debido a la rigidez de su sistema, que proviene de la parte difusiva. Afortunadamente, la parte difusiva es lineal, por lo que puede tratarse implícitamente (que es la idea de los esquemas IMEX).


0

Al principio consideré agregar solo un comentario, pero el espacio no era suficiente, así que agregué una breve descripción de mis experiencias con este tema.

FCotupagslmiresi1si2C1,yoC2,yoUNA1UNA2F1F2Cyo, pero también en los valores del vecino, pero esto puede ser solo una comprensión errónea de su notación.

Como comentario general, me gustaría agregar que el uso de Jacobian analítico parece ser la única forma de obtener una convergencia cuadrática del solucionador iterativo no lineal (es decir, el solucionador Newton-Raphson en su caso). ¿Lo observaste en tu caso? Es bastante importante, porque de lo contrario podría haber algún malentendido en sus aproximaciones (linealización).

En todas las aplicaciones en las que estuve involucrado (algunas de ellas incluían cálculos a gran escala) nunca tuvimos problemas con el consumo de tiempo de ensamblar el Jacobian, el problema que más tiempo consumía siempre era la aplicación de un solucionador lineal. El analítico jacobiano (si está disponible) siempre ha estado en aplicaciones en las que estaba trabajando en la opción preferida debido a la convergencia cuadrática. En pocos casos, este solucionador no lineal produce una matriz que causa problemas a la convergencia del solucionador lineal iterativo, por lo que tratamos de utilizar una linealización más simple que la analítica Jacobian para ayudar al solucionador lineal. Tal compensación entre el comportamiento del solucionador algebraico no lineal y lineal dependiendo de la linealización del sistema algebraico no lineal siempre fue complicado y no pude dar una recomendación general.

Pero tiene razón en que el inconveniente (o propiedad) de Jacobian analítico para el sistema de PDE es que produce un sistema algebraico acoplado, por lo que si desacopla dicho sistema de alguna manera, por ejemplo, resolviendo por separado la aproximación de cada PDE mediante, por ejemplo, división iterativa método, luego nuevamente pierde la convergencia cuadrática del solucionador global. Pero, al menos, si resuelve por separado cada PDE discretizado (desacoplado), puede acelerar nuevamente la solución para este problema en particular utilizando el método Newton-Raphson.


si1si2C1C2UNA1UNA2F1F2son vectores, por lo que son funciones de un vector de variables de estado, no solo una variable. Calculo numéricamente un jacobiano usando diferencias finitas. Hasta ahora no he investigado a un jacobiano analítico.
cbcoutinho
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.