Oscilación extraña al resolver la ecuación de advección por diferencia finita con condiciones de contorno de Neumann completamente cerradas (reflexión en los límites)


33

Estoy tratando de resolver la ecuación de advección, pero aparece una extraña oscilación en la solución cuando la onda se refleja desde los límites. ¡Si alguien ha visto este artefacto antes, me interesaría saber la causa y cómo evitarlo!

Este es un gif animado, se abre en una ventana separada para ver la animación (¡solo se reproducirá una vez o no una vez que se haya almacenado en caché!) Propagación de un pulso gaussiano

Observe que la propagación parece altamente estable hasta que la onda comienza a reflejarse desde el primer límite. ¿Qué crees que podría estar pasando aquí? He pasado unos días revisando mi código y no puedo encontrar ningún error. Es extraño porque parece haber dos soluciones de propagación: una positiva y otra negativa; después de la reflexión desde el primer límite. Las soluciones parecen estar viajando a lo largo de puntos de malla adyacentes.

Los detalles de implementación siguen.

La ecuación de advección,

ut=vux

donde es la velocidad de propagación.v

Crank-Nicolson es una discretización estable incondicional (enlace pdf) para la ecuación de advección, siempre que varíe lentamente en el espacio (solo contiene componentes de bajas frecuencias cuando Fourier se transforma).u(x)

La discretización que he aplicado es,

ϕjn+1ϕjnΔt=v[1β2Δx(ϕj+1nϕj1n)+β2Δx(ϕj+1n+1ϕj1n+1)]

Poner las incógnitas en el lado derecho permite que esto se escriba en forma lineal,

βrϕj1n+1+ϕjn+1βrϕj+1n+1=(1β)rϕj1n+ϕjn+(1β)rϕj+1n

donde (para tomar el tiempo promedio ponderado de manera uniforme entre el punto presente y futuro) y .r = v Δ tβ=0.5r=vΔt2Δx

Este conjunto de ecuaciones tiene la forma de matriz , donde,Aun+1=Mun

A=(1βr0βr1βrβr1βr0βr1)

M=(1(1β)r0(1β)r1(1β)r(1β)r1(1β)r0(1β)r1)

Los vectores y son los conocidos y desconocidos de la cantidad que queremos resolver.unun+1

Luego aplico condiciones de contorno de Neumann cerradas en los límites izquierdo y derecho. Por límites cerrados quiero decir en ambas interfaces. Para los límites cerrados resulta que (no mostraré mi trabajo aquí) solo necesitamos resolver la ecuación matricial anterior. Como señaló @DavidKetcheson, las ecuaciones matriciales anteriores en realidad describen las condiciones de contorno de Dirichlet . Para las condiciones de contorno de Neumann,ux=0

A=(100βr1βrβr1βr001)

Actualizar

El comportamiento parece bastante independiente de la elección de las constantes que uso, pero estos son los valores para la gráfica que ves arriba:

  • v = 2
  • dx = 0.2
  • dt = 0.005
  • σ = 2 (gaussiano hwhm)
  • β = 0.5

Actualización II

Una simulación con un coeficiente de difusión distinto de cero, (ver comentarios más abajo), la oscilación desaparece, pero la onda ya no se refleja. No entiendo porqueD=1

Difusión y advección


¿Qué tomaste para ? v
Chris

v=2 en esas simulaciones. Actualizaré con la configuración de simulación. Buena idea.
boyfarrell

Entonces esperaría que la condición inicial se advecte a la derecha y desaparezca a través del límite derecho. Todo lo que viene a la mente es que el esquema central puede dar oscilaciones espurias a menos que se aplique a la ecuación de advección-difusión con el número de Peclet de la celda por debajo de 2. ¿Quizás intente el esquema de viento arriba?
Chris

¿Crees que podría haber un error de signo con la ecuación? En realidad, mi objetivo final es aplicar esto con la ecuación de advección-difusión. Actualmente estoy probando diferentes casos limitantes. En el ejemplo anterior, el coeficiente de difusión se estableció en cero. He incluido una nueva animación arriba. No entiendo por qué el pico no se refleja cuando el coeficiente de difusión es distinto de cero. Hace exactamente lo que mencionaste (aparte de la dirección).
boyfarrell

Estaba pensando en , por lo que el signo está bien. La segunda trama me parece bien. ¿Por qué esperarías que algo se refleje? Eso solo podría suceder si cambios firman de alguna manera. Pruebe con el esquema de advección en contra del viento en lugar del esquema central, entonces debería ver algo similar para . tu+vxu=0vD=0
Chris

Respuestas:


28

La ecuación que está resolviendo no permite soluciones correctas, por lo que no existe tal cosa como un condición límite que refleje esta ecuación. Si considera las características, se dará cuenta de que solo puede imponer una condición de límite en el límite correcto. Está tratando de imponer una condición de límite de Dirichlet homogénea en el límite izquierdo, que es matemáticamente inválido.

xνt=CC

A diferencia de la ecuación, su esquema numérico no admite soluciones que van derecho. Los modos de marcha a la derecha se denominan modos parásitos e implican frecuencias muy altas. Observe que la onda que va hacia la derecha es un paquete de ondas de diente de sierra, asociado con las frecuencias más altas que se pueden representar en su cuadrícula. Esa ola es puramente un artefacto numérico, creado por su discretización.

Para enfatizar: no ha escrito el problema completo del valor del límite inicial que está tratando de resolver. Si lo hace, quedará claro que no es un problema matemáticamente bien planteado.

Sin embargo, me alegro de que haya publicado esto aquí, ya que es una hermosa ilustración de lo que puede suceder cuando discrepa un problema que no está bien planteado, y del fenómeno de los modos parasitarios. Un gran +1 para tu pregunta de mí.


Gracias por la discusión y las correcciones. No había apreciado que la matriz no tendrá las mismas propiedades que la ecuación diferencial. Más comentarios a seguir ...
boyfarrell

Sí, ahora veo cómo estas son realmente las condiciones de contorno de Dirichlet. He hecho una nota arriba para la corrección. Esta es la primera vez que intento (en serio) comprender realmente el proceso de resolver estas ecuaciones, sigo golpeando golpes en el camino. ¡Estoy feliz de publicar mi progreso!
boyfarrell

@David Ketcheson: Me encuentro con el mismo problema y publiqué mi problema en el siguiente enlace scicomp.stackexchange.com/questions/30329/... ¿Puede explicarme por qué dice que el problema no está "matemáticamente bien planteado"? ? Gracias.
Herman Jaramillo

@HermanJaramillo Está intentando imponer un valor de solución en el límite izquierdo, donde ya está determinado por el PDE. Cualquier libro de texto que incluya una discusión de la advección también indicará cuáles son las condiciones límite válidas y por qué. Agregué un segundo párrafo con una explicación adicional; Espero que ayude.
David Ketcheson el

1
@HermanJaramillo: no "matemáticamente bien planteado" básicamente significa que tiene dos ecuaciones para un valor de función en el límite, la condición de límite y el PDE en sí. En general, esas dos ecuaciones se contradicen entre sí. En términos más generales, uno puede considerar esto como un problema de optimización en el que ambos objetivos deben cumplirse lo mejor posible.
davidhigh

0

Aprendí mucho de las respuestas anteriores. Quiero incluir esta respuesta porque creo que ofrece diferentes puntos de vista sobre el problema.

uxx+1cutt=0.
do .

u(x,t)=f(xct)

tu(X,t0 0)=pags(X)X(-,)pags[X-do(t-t0 0)] . No hay límite y esa es la solución.

X[una,si]unasi

t0 0

u(a,t0)=0,u(b,t0)=p[bc(tt0)].

Esto produce un pulso que corre hacia la derecha hasta que desaparece en el borde derecho.

presione aquí para animación en Dirichlet en el límite izquierdo

Todavía recibo algo de ruido que no puedo entender (¿alguien podría ayudarme aquí, por favor?)

La otra opción es imponer condiciones de contorno periódicas. Es decir, en lugar de imponer la condición de límite de Dirichlet a la izquierda, podemos imponer el paquete de ondas que es consistente con el límite a la izquierda. Es decir:

u(a,t0)=p[ac(tt0)],u(b,t0)=p[bc(tt0)].

ac(tt0)<at>t0c>0[a,b]baac(tt0)+ba=a+b(tt0)u(a,t0)=p[bc(tt0]

Este enlace muestra lo que yo llamaría condiciones de contorno periódicas.

Hice las animaciones en Python y el esquema es un esquema de Crank-Nicholson como se indica en la pregunta aquí.

Todavía estoy luchando con el patrón de ruido después de que la ola golpea el primer límite (derecho).


1
No pude ver la animación en mi teléfono móvil, pero creo que su patrón de ruido es causado por la falta de precisión numérica. La absorción solo funciona porque impones la solución exacta en el límite. Con esta solución exacta, la solución numérica que llega al límite derecho difiere ligeramente en frecuencia y fase. Esto nuevamente conduce a la reflexión y, por lo tanto, a la interferencia.
davidhigh

@davidhigh: Gracias por tu información. Comprobaré esto Lamento que la animación no haya funcionado en tu teléfono. Tampoco funcionó en mi teléfono (Samsung). Esto podría ser algún software faltante en los teléfonos. Debería funcionar en una computadora. Gracias de nuevo.
Herman Jaramillo

De nada. La animación en sí no es tan importante, solo quería ver qué tan grandes son los errores. Por cierto, al imponer la solución exacta en el límite, se evita la "mala postura" por diseño. Es decir, todavía tiene dos ecuaciones para un valor en el límite, pero al usar el resultado exacto, las obliga a ser consistentes. Pero esto solo funciona aproximadamente, ya que el resultado numérico no es completamente exacto.
davidhigh

Y otro comentario: la solución analítica general a la ecuación de onda es una superposición de un pulso que se mueve hacia la izquierda y otro hacia la derecha. En su caso, solo considera el pulso que se mueve hacia la derecha, por lo que ya aplicó las condiciones iniciales, en contraste con lo que dice en el texto.
davidhigh

@davidhigh: He estado pensando un poco en tus ideas sobre el ruido después de que el pulso llega al límite. Creo que tiene razón y hay una diferencia entre la solución analítica exacta y el pulso numérico propagado. En el límite, esa pequeña diferencia genera el pequeño patrón de ruido que se ve allí. El sistema de advección CN que se muestra en esta discusión es dispersivo y creo que si bien la dispersión no se nota antes de que el pulso llegue al límite, podría desencadenar, pero la pequeña perturbación (diferencia entre soluciones analíticas y numéricas) en el límite. Gracias de nuevo.
Herman Jaramillo
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.