Diferencias finitas en dominios con límites irregulares.


11

¿Alguien puede ayudarme a encontrar los libros sobre soluciones numéricas (diferencia finita y métodos de Crank-Nicolson) de Poisson y ecuaciones de difusión que incluyen ejemplos sobre geometría irregular, como un dominio que consiste en el área entre un rectángulo y un círculo (especialmente libros o enlaces en ejemplos de código MATLAB en este caso)?


44
¿Para que propósito? Introducción para los estudiantes desde el principio? ¿Y qué es una geometría irregular en tu caso? Dominios con rincones reentrantes?
shuhalo

@ Martin: Soy fanático en este campo. Lo necesito para resolver la ecuación de Poisson usando métodos iterativos en dominios de forma irregular, especialmente aquellos con límites curvos (p. Ej., Dominio circular 2-D)
liona

2
@last Edite el título y el cuerpo de la pregunta para que quede claro lo que está preguntando. Especifique los tipos de ecuaciones que le interesan. ¿Está interesado en discretizaciones, solucionadores algebraicos o ambos? ¿Le importa la diferencia finita frente a los elementos finitos ( scicomp.stackexchange.com/questions/290/… )? Su pregunta actual es extremadamente amplia y es difícil de encontrar en la búsqueda.
Jed Brown

@JedBrown: Quiero resolver la ecuación de Poisson usando la diferencia finita en el dominio dado y la condición de límite.
liona

Por último, edite el cuerpo de su pregunta para incluir la información en sus dos comentarios hasta la fecha. Además, como dijo JedBrown, edite también el título de su pregunta para que sea más fácil para las personas buscar su pregunta y más fácil para las personas juzgar si la pregunta puede ser interesante o aplicable a ellos.
Geoff Oxberry

Respuestas:


3

La clave para hacer que un esquema de diferencia finita funcione en una geometría irregular es tener una matriz de 'forma' con valores que denoten puntos fuera, dentro y en el límite del dominio. Digamos que teníamos una forma como esta:

000000000000011111111110001222222100000122221000000012210000000001100000000000000000

El dominio verdadero (donde están todas las entradas distintas de cero de la matriz) forma un triángulo apuntando hacia abajo. Los 1 representan puntos en el límite, mientras que los 2 representan puntos interiores (normalmente no conocidos). Podemos asignar números de nodo de la siguiente manera:

000000000000011111111110001123456100000178910100000001111210000000001100000000000000000

Aquí, los -1 representan las ubicaciones de los límites. Luego, puede ejecutar un esquema de diferencia finita sobre todas las entradas en la matriz, pero use una instrucción if para ejecutar su esquema solo en los nodos interiores (del 1 al 12). Este enfoque no es la forma más eficiente de hacerlo, pero hará el trabajo ... si puede permitirse la memoria, podría ser bueno almacenar las entradas (i, j) de todos los nodos interiores y ejecutar un bucle for solo en esos nodos.

Para crear la geometría directamente, puede hacer una de dos cosas:
1. Cree una imagen en blanco y negro manualmente e impórtela a su programa (más fácil de implementar, pero imposible de refinar su resolución espacial dx o dy).
2. Escriba un código que cree representaciones discretas de las formas básicas que desee para cualquier resolución espacial que elija (más difícil de implementar, pero más robusta para esquemas generales de diferencias finitas de cualquier resolución espacial dx o dy).

Si desea obtener más información sobre cómo hacer esto, puede considerar ver estos videos:
Curso de gráficos por computadora NPTEL, Video 2 (Gráficos ráster)
Curso de gráficos por computadora NPTEL, Video 3 (Gráficos ráster, continuación) Mírelos
y avíseme si esto responde a su pregunta.


¿Hay una manera que puedo mejorar el formato de los valores de la matriz que he publicado ... no se ve bastante la forma en que me gustaría para que se vea
Paul

Sí, podría usar MathJax y ponerlos en un entorno de matriz.
David Ketcheson el

Tienes razón ... se ve mucho mejor con MathJax. Gracias por la sugerencia :)
Paul

@Paul: ¡Gracias por tu solución simple! Sin embargo, ¿cómo puedo calcular los puntos límite para obtener puntos internos para la región cerrada entre rectangular y triángulo o (región cerrada entre rectangular y círculo)?
liona

¿Tiene una imagen de la forma del dominio que desea modelar? Siempre es más fácil verlo que describirlo solo con palabras :)
Paul


2

Sugeriría los siguientes documentos:

El método de diferencia finita en rejillas irregulares arbitrarias y su aplicación en mecánica aplicada - Liszka Orkisz

http://www.sciencedirect.com/science/article/pii/0045794980901492

Técnicas de diferencias finitas para cuadrículas variables - Jensen

http://www.mendeley.com/research/finite-difference-techniques-variable-grids-7/

Resolviendo ecuaciones parabólicas e hiperbólicas por el método de diferencia finita generalizada - Benito Urena Gavete

http://www.sciencedirect.com/science/article/pii/S037704270600687X

Básicamente describen cómo generar diferencias finitas estenciales para mallas no estructuradas / irregulares. No conozco ningún libro que trate este tema específico en profundidad, pero el libro de Randall LeVeque podría tener algo al respecto. Aquí está el enlace a la página web del autor, que contiene algunos archivos m de Matlab para diferencias finitas.

http://faculty.washington.edu/rjl/booksnotes.html


1

Creo que hacer que la malla se ajuste al límite y, por lo tanto, una desviación de la malla cuadrada estándar del fdm es probablemente una solución, pero sin embargo tiene serias implicaciones en el uso de algoritmos de alto orden, difícil si no imposible. He adoptado un enfoque diferente, es decir, mantener la cuadrícula rectangular sobre la geometría del límite curvo, crear algoritmos de alto orden, interpolar desde el límite para establecer los valores "fuera" de la geometría, y eso es todo lo que hay. Hemos logrado precisiones en geometrías de prueba de esfera concéntrica de ~ 1e-12 con este método usando un algoritmo de orden 8. si buscas en Google "Edwards, límite curvo fdm" encontrarás referencias a mi trabajo.


0

¿Sería posible para usted utilizar el refinamiento de malla adaptativa? Una búsqueda rápida en Google mostrará muchos enlaces. AMR se usa, por ejemplo, en la dinámica de fluidos para modelar el flujo en formas complicadas; así como muchas otras aplicaciones. Aquí hay un ejemplo de resolución de sistemas de leyes de conservación hiperbólica que surgen en la formación de estrellas. Las geometrías son muy complejas. La primera parte del documento es un buen tutorial. http://www.mpa-garching.mpg.de/lectures/ADSEM/SS05_Homann.pdf


0

Esta pregunta abre una lata de gusanos, como lo demuestra la variedad de respuestas dadas. Muchos de estos hacen puntos útiles, pero una respuesta realmente útil tomaría en cuenta las consideraciones que no se han planteado. Además de especificar la naturaleza exacta de la geometría, sería valioso saber a) ¿Qué tipo de precisión necesita? b) ¿Quieres quedarte con mallas cuadradas regulares? c) ¿Cuánto estás dispuesto a invertir en aprender nuevas tecnologías?

Las mallas cuadradas regulares dificultan la definición precisa del límite, de modo que muchas personas cambian a mallas conformes. Las mallas conformes con conectividad rectangular tienen dificultades para adaptarse a formas muy irregulares, por lo que muchas personas adoptan mallas no estructuradas (triángulos / tetraheda o más generales).

Para cualquier dato que no tenga una estructura cartesiana regular, es difícil evaluar los derivados, por lo que muchas personas reformulan sus problemas en forma integral, lo que lleva a métodos de elementos finitos / volúmenes finitos (que PUEDEN lograr un orden superior). Existen métodos sin malla. Hay métodos de elementos de límite. Hay métodos de límite inmersos. Hay métodos de células cortadas. A menudo hay un método que es popular en algunas aplicaciones pero no en otras, por razones que son principalmente históricas.

Le deseo buena suerte al navegar este laberinto, pero debe darse cuenta de que no hay una solución única para su pregunta.

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.