He estado tratando de depurar este error los últimos días, me preguntaba si alguien tiene consejos sobre cómo proceder.
Estoy resolviendo la ecuación de Poisson para una distribución de carga escalonada (un problema común en la electrostática / física de semiconductores) en una malla de volumen finito no uniforme donde lo desconocido se define en los centros celulares y los flujos en las caras celulares.
el perfil de carga (el término fuente) viene dado por,
y las condiciones de contorno son,
y el dominio es .
Estoy usando un código desarrollado para resolver la ecuación de advección-difusión-reacción (me he escrito, vea mis notas aquí, http://danieljfarrell.github.io/FVM ). La ecuación de advección-difusión-reacción es un caso más general de la ecuación de Poisson. De hecho, la ecuación de Poisson se puede recuperar estableciendo la velocidad de advección en cero y eliminando el término transitorio.
El código ha sido probado en una serie de situaciones para cuadrículas uniformes, no uniformes y aleatorias y siempre produce soluciones razonables ( http://danieljfarrell.github.io/FVM/examples.html ) para la ecuación de advección-difusión-reacción.
Para mostrar dónde se descompone el código, hice el siguiente ejemplo. Configuré una malla uniforme de 20 celdas y luego la hice no uniforme al eliminar una sola celda. En la figura izquierda, eliminé la celda y en la derecha Ω 9 se eliminó. La novena celda cubre la región donde el término fuente (es decir, la carga) cambia de signo. El error aparece cuando la cuadrícula no es uniforme en una región donde el término de reacción cambia de signo . Como puede ver abajo.
¿Alguna idea de qué posibilidad podría estar causando este problema? Avíseme si sería útil obtener más información sobre la discretización (no quería incluir demasiados detalles en esta pregunta).
fuente
Respuestas:
Por otro lado, su documentación de github es fantástica.
Esto es solo una suposición de los métodos DG, que pueden tener problemas similares si los flujos numéricos no se eligen con cuidado (me imagino que los métodos FV son un subconjunto de los métodos DG). Si está utilizando la interpolación de los centros celulares para definir sus flujos, entonces esto debería ser equivalente a usar el promedio como flujo numérico en DG y usar una base constante por partes. Para los métodos DG estándar para Poisson, esto lleva a soluciones numéricamente no únicas: puede obtener un espacio nulo no trivial para el operador discreto, que creo que es lo que está causando sus problemas en el segundo ejemplo. Vea este documento de DG para conocer su teoría desde el lado de DG.
Intentaré simular un ejemplo para FV que muestre cómo entra esto en juego.
fuente
Lo primero que debe notar son sus condiciones de contorno. Como puede cambiar la pendiente y el valor, no tiene condiciones de Dirichlet ni de Neumann.
Entonces, cada línea recta es una solución donde el lado derecho es cero. Tienes esa parte.
fuente