Uso óptimo de la división de Strang (para la ecuación de difusión de reacción)

9

Hice una observación extraña mientras calculaba la solución a una ecuación de difusión de reacción 1D simple:

ta=2x2aab

tb=ab

tc=a

El valor inicial de b es una constanteb(0,x)=b0), y solo me interesa la integral sobre a desde 0 a 1 (01a(t,x)dt) El propósito dec y la ecuación tc=a es solo evaluar esta integral.

Utilicé un esquema de división de Strang para el acoplamiento entre difusión y reacción (una reacción de medio paso, luego una difusión de paso completo, y luego una reacción de medio paso), un esquema de Crank Nicholson para la difusión y una solución analítica para la reacción ( incluyendo la ecuación tc=a)

Debido a que un paso de la solución analítica fue más de un factor 3 más lento que un paso del esquema de Crank Nicholson, intenté hacer más de un paso de Crank Nicholson para cada paso de reacción. Esperaba sobrevivir con menos pasos del esquema de división de Strang, para ser más rápido en general.

Sin embargo, se puede observar el efecto contrario, a saber, que se requieren muchos más pasos para el esquema de división de Strang si se usa más de un paso de Crank Nicholson. (Solo me preocupa la precisión de la integral sobrea, que parece converger más rápido que a en sí.) Después de preguntarme por un tiempo, noté que el mismo efecto también ocurre para b(t,x)=b0=0, y que incluso entiendo por qué para este caso. El punto es que si hago exactamente un paso de Crank Nicholson, entonces el esquema general se convierte en una regla trapezoidal (sib(t)=0)

Entonces si tratara tc=aComo parte del paso de difusión, aumentar el número de pasos de Crank Nicholson (probablemente) no conduciría a una precisión general reducida (como se observó). Pero eso parece anular el propósito de usar una solución analítica para la parte de reacción (no lineal y potencialmente muy rígida) del sistema.

Así que aquí está mi pregunta: ¿hay una mejor manera de tratar tc=aen el contexto de una división de Strang, que tratarlo como parte del paso de reacción o tratarlo como parte del paso de difusión. Quiero evitar ser "forzado" a usar exactamente un paso de Crank Nicholson para la difusión. (Por ejemplo, en 3D, preferiría resolver la difusión analíticamente mediante una FFT en lugar de usar Crank Nicholson. Por supuesto, también puedo combinar FFT con Crank Nicholson, por lo que no es tan importante).

Thomas Klimpel
fuente
En people.maths.ox.ac.uk/dellar/OperatorLB.html , parece describirse un efecto similar. La conclusión es que es crucial usar Crank Nicholson en lugar de la solución exacta. Entonces, tal vez la respuesta a mi pregunta es un simple no.
Thomas Klimpel
Algo parece estar mal con tus ecuaciones. c no aparece en los dos primeros haciendo que el acoplamiento sea unidireccional y significa que podría calcular c a cualquiera tcomo un paso posterior al procesamiento.
Bill Barth
@BillBarth Cambié la pregunta para aclarar el papel de c. Entoncesc es solo un medio para calcular 01a(t,x)dt. Avíseme si tiene alguna sugerencia sobre cómo calcular esta integral más precisa (que lo que obtengo de la combinación de división de Strang y Crank Nicholson descrita anteriormente), utilizando potencialmente un paso de postprocesamiento.
Thomas Klimpel
Esto ya pasó hace mucho tiempo, pero ¿reconociste que este sistema de ecuaciones se puede escribir como una PDE parabólica en ccon un término de reacción exponencial? Supongo que me pregunto si realmente quieres resolver este sistema de 3 variables en lugar de uno simplificado.
Bill Barth
@BillBarth Me interesaría saber cómo se puede escribir este sistema como una PDE parabólica con un término de reacción exponencial. La velocidad de la solución de este modelo es un factor limitante durante la calibración del modelo (que puede tomar varias horas), aun así la precisión utilizada con respecto a la integración de tiempo está bastante lejos de la convergencia total.
Thomas Klimpel

Respuestas:

6

Voy a escribir esto como respuesta, aunque no responde directamente a la pregunta.

Conectando la segunda ecuación y la tercera ecuación a la primera, y conectando la tercera a la segunda, juntas dan:

2ct2=2x2ct+btbt=(ct)b
Reorganizar estos dos da:
t(ct2cx2b)=01b(bt)=ct
Ahora, podemos integrar ambos una vez en t, dejando para la primera ecuación:
ct2cx2=b+A(x)
Usando la tercera ecuación, podemos expresar la "constante" de integración como A(x)=a02c0x2b0. La segunda ecuación es un poco más complicada. Reescribiendo un poco, tenemos:
0t1b(x,t)(b(x,t)t)dt=0tc(x,t)tdt
Esto lleva a la solución.
lnb(x,t)lnb0(x)=c(x)+c0(x)
O
lnbb0=c+c0
Exponenciante da:
b=b0ec0c
Y, finalmente, enchufar esto en el PDE para c da
ct2cx2=b0ec0c+A(x)

Sustitución c por cc0, o equivalentemente usando las condiciones iniciales c0(x)=0, esta ecuación se simplifica a

ct=2cx2+a0(1ec)b0
Ahora, debería poder encontrar considerable literatura sobre la mejor manera de resolver esta ecuación. No sé si Crank-Nicholson es una buena opción para el término exponencial, pero parece plausible. Probablemente se debe tener cuidado para garantizar quec>c0 en todas partes o la solución puede explotar rápidamente.

Solo he recorrido esta derivación dos veces, por lo que puede haber un error o dos en ella, pero me parece correcta. Sib0=0 en todas partes, entonces esta es claramente la solución correcta, y de lo contrario tiene una pizca de plausibilidad.

Resolviendo esto hasta t=1 y evaluando c(x,1) debería darte la respuesta que estás buscando.

Bill Barth
fuente
Muchas gracias por esta respuesta. Lo encuentro bastante esclarecedor, al menos me facilita la comprensión / predicción del comportamiento de la solución. Otra ventaja es que la evolución temporal dec es más lento que el tiempo de evolución de a, así que soy bastante optimista de que la convergencia será mejor que antes.
Thomas Klimpel
No hay problema. Me estaba molestando después de nuestro intercambio inicial de comentarios. Espero que sea útil.
Bill Barth