You are currently browsing the tag archive for the ‘PDE’ tag.

Después de muchísimo tiempo sin escribir, vuelvo con este post que resume todo el trabajo que hemos realizado durante este último año.

En julio del año pasado nos enteramos de un artículo publicado por X. Yang and R. Mittal, de la Johns Hopkins University, en el que aceleraban de manera espectacular el algoritmo de Jacobi y lo utilizaban para resolver ecuaciones en derivadas parciales de tipo elíptico.

A pesar del relativo eco mediático que tuvo, y aunque aceleraba muchísimo Jacobi, seguía sin ser competitivo con los métodos utilizados actualmente para solucionar este tipo de ecuaciones. Sin embargo, como prometía en cuanto a su sencillez desde el punto de vista tanto de implementación como de paralelización, decidimos trabajar un tiempo sobre el mismo.

Finalmente, en junio presentamos unos proceedings en el CEDYA 2015 (pag. 733) y hace tres semanas enviamos un paper a JCP, donde presentamos una serie de mejoras realizadas que permiten, tal y como allí comentamos, que el SRJ sea prácticamente competitivos en ejecución secuencial con los algoritmos utilizados actualmente.

Por un lado, su inmediata implementación (todos tenemos un Jacobi implementado de nuestro curso de métodos numéricos, y es trivial convertirlo en un SRJ 🙂 ) hace pensar que mucha gente que no tenga y necesite un resolvedor elíptico eficiente sin invertir mucho esfuerzo en su implementación quiera utilizarlo. Por otro, su trivial paralelización, por ejemplo en entornos GPU, nos hace pensar en su extraordinario potencial en el ámbito de la supercomputación.

En la página de nuestro grupo de investigación tenemos disponibles todos los esquemas SRJ presentados en el paper.

¡Disfrutenlo!

Una PDE cuasilineal de segundo orden en dos variables independientes x e y con función incógnita u(x,y) tiene la forma general:

a(x,y,u,u_x,u_y) u_{xx} + 2b(x,y,u,u_x,u_y) u_{xy}

+ c(x,y,u,u_x,u_y)u_{yy} + d(x,y,u,u_x,u_y) = 0,

donde a,b,c,d son funciones contínuas en un subconjunto abierto \mathcal{V} de \mathcal{U} \times \mathbb{R}^3 de las variables (x,y,u,u_x,u_y) donde \mathcal{U} es un abierto de \mathbb{R}^2.

Definimos el discriminante como

D(v^0) := a(v^0)c(v^0) - b^2(v^0),

con v^0 = (x^0,y^0,u^0,u_x^0,u_y^0) \in \mathcal{V}. Diremos que la ecuación anterior es:

  1. Elíptica en el punto v^0 si D(v^0) > 0,
  2. Parabólica en el punto v^0 si D(v^0) = 0,
  3. Hiperbólica en el punto v^0 si D(v^0) < 0.

Por tanto, el carácter elíptico, parabólico o hiperbólico depende no solo del punto (x^0,y^0) \in \mathcal{U} sino también del valor de una solución y sus derivadas parciales de primer orden en dicho punto. Además, en el caso de que la parte principal, los coeficientes que multiplican a las derivadas de segundo orden, sea de coeficientes constantes, el carácter se mantiene en todos los puntos donde esté definida la función d.

De esta manera, la ecuación de Laplace u_{tt} + u_{xx} = 0 es elíptica en todos los puntos; la ecuación del calor u_t - u_{xx} =0 es parabólica; y la ecuación de ondas u_{tt} - u_{xx} = 0 es hiperbólica.

En el caso de tener n variables independientes x_1, x_2, \ldots, x_n entonces la ecuación general tiene la forma:

a^{ij}(x_1,\ldots, x_n, u, u_{x_1},\ldots, u_{x_n}) u_{x_i, x_j} + \ldots =0,

donde a^{ij} es la parte principal y el resto son terminos de menor orden. En este caso, el carácter de la ecuación depende de la signatura de los valores propios de la matriz de coeficientes:

  1. Elíptica si los valores propios son todos positivos o todos negativos,
  2. Parabólica cuando todos los valores propios son positivos o negativos excepto uno que es zero,
  3. Hiperbólica si todos los valores propios son positivos excepto uno que es negativo o todos son negativos excepto uno que es positivo.

Finalmente, toda ecuación se puede reducir a una forma canónica, que corresponde a uno de los tres tipos clásicos: Laplace, calor u ondas.

Aunque siempre podemos hacer cambios de coordenadas, vamos a ver como quedan los esquemas de diferencias finitas en sistemas no rectangulares: coordenadas cilíndricas, (\rho,\phi, z), y coordenadas esféricas, (r,\theta,\phi). Nos centraremos en la ecuación de Poisson aunque la técnica se puede extender de manera inmediata a cualquier tipo de PDE.

En coordenadas cilíndricas podemos escribir:

\nabla \cdot \nabla u = \frac{\partial^2}{\partial \rho^2}u + \frac{1}{\rho}\frac{\partial}{\partial \rho}u + \frac{1}{\rho^2}\frac{\partial^2}{\partial \phi^2}u + \frac{\partial^2}{\partial z^2} u = f,

que podemos discretizar como:

\frac{u_{i-1,j,k}-2u_{i,j,k}+u_{i+1,j,k}}{(\Delta \rho)^2} +

+ \frac{1}{\rho_{i,j,k}}\frac{u_{i+1,j,k}-u_{i-1,j,k}}{2\Delta \rho} +

+ \frac{1}{\rho_{i,j,k}^2} \frac{u_{i,j-1,k}-2u_{i,j,k}+u_{i,j+1,k}}{(\Delta \phi)^2} +

+ \frac{u_{i,j,k-1}-2u_{i,j,k}+u_{i,j,k+1}}{(\Delta z)^2} = f_{i,j,k}

En coordenadas esféricas tenemos:

\nabla \cdot \nabla u = \frac{\partial^2}{\partial r^2}u + \frac{2}{r} \frac{\partial}{\partial r}u + \frac{1}{r^2}\frac{\partial^2}{\partial \theta^2}u + \frac{1}{r^2\sin\theta} \frac{\partial}{\partial \theta}u + \frac{1}{r^2 \sin^2\theta} \frac{\partial^2}{\partial \phi^2}u = f

que podemos discretizar como:

\frac{u_{i-1,j,k-2u_{i,j,k}+u_{i+1,j,k}}}{(\Delta r)^2} +

+ \frac{2}{r_{i,j,k}} \frac{u_{i+1,j,k}+u_{i-1,j,k}}{2\Delta r} +

+ \frac{u_{i,j-1,k}-2u_{i,j,k}+u_{i,j+1,k}}{(r_{i,j,k} \Delta \theta)^2} +

+ \frac{1}{r_{i,j,k}^2 \sin \phi_{i,j,k}} \frac{u_{i,j+1,k}-u_{i,j-1,k}}{2 \Delta \phi} +

+ \frac{u_{i,j,k-1}-2u_{i,j,k}+u_{i,j,k+1}}{(r_{i,j,k} \sin \phi_{i,j,k} \Delta \phi)^2} = f_{i,j,k}

Vamos a suponer n=3 para reducir el tamaño de las matrices.

Empezamos suponiendo que conocemos:

\frac{\partial}{\partial x}|_{0,0,}u, \frac{\partial}{\partial x}|_{0,1}u, \frac{\partial}{\partial x}|_{0,2}u

\frac{\partial}{\partial y}|_{0,0}u, \frac{\partial}{\partial y}|_{1,0}u

\frac{\partial}{\partial y}|_{0,2}u, \frac{\partial}{\partial y}|_{1,2}u

u|_{2,0}, u|_{2,1}, u|_{2,2}

Discretizamos:

\frac{u_{-1,0}-2u_{0,0}+u_{1,0}}{h^2} + \frac{u_{0,-1}-2u_{0,0}+u_{0,1}}{h^2} = f_{0,0}

\frac{u_{-1,1}-2u_{0,1}+u_{1,1}}{h^2} + \frac{u_{0,0}-2u_{0,1}+u_{0,2}}{h^2} = f_{0,1}

\frac{u_{-1,2}-2u_{0,2}+u_{1,2}}{h^2} + \frac{u_{0,1}-2u_{0,2}+u_{0,3}}{h^2} = f_{0,2}

\frac{u_{0,0}-2u_{1,0}+u_{2,0}}{h^2} + \frac{u_{1,-1}-2u_{1,0}+u_{1,1}}{h^2} = f_{1,0}

\frac{u_{0,1}-2u_{1,1}+u_{2,1}}{h^2} + \frac{u_{1,0}-2u_{1,1}+u_{1,2}}{h^2} = f_{1,1}

\frac{u_{0,2}-2u_{1,2}+u_{2,2}}{h^2} + \frac{u_{1,1}-2u_{1,2}+u_{1,3}}{h^2} = f_{1,2}

En las fronteras, sabemos que:

\frac{u_{1,0}-u_{-1,0}}{2h} = \frac{\partial}{\partial x}|_{0,0}u \Leftrightarrow u_{-1,0}=u_{1,0}-2h \frac{\partial}{\partial x}|_{0,0}u

\frac{u_{1,1}-u_{-1,1}}{2h} = \frac{\partial}{\partial x}|_{0,1}u \Leftrightarrow u_{-1,1}=u_{1,1}-2h \frac{\partial}{\partial x}|_{0,1}u

\frac{u_{1,2}-u_{-1,2}}{2h} = \frac{\partial}{\partial x}|_{0,2}u \Leftrightarrow u_{-1,2}=u_{1,2}-2h \frac{\partial}{\partial x}|_{0,2}u

\frac{u_{0,1}-u_{0,-1}}{2h} = \frac{\partial}{\partial y}|_{0,0}u \Leftrightarrow u_{0,-1}=u_{0,1}-2h \frac{\partial}{\partial y}|_{0,0}u

\frac{u_{1,1}-u_{1,-1}}{2h} = \frac{\partial}{\partial y}|_{1,0}u \Leftrightarrow u_{1,-1}=u_{1,1}-2h \frac{\partial}{\partial y}|_{1,0}u

\frac{u_{0,3}-u_{0,1}}{2h} = \frac{\partial}{\partial y}|_{0,2}u \Leftrightarrow u_{0,3}=u_{0,1}+2h \frac{\partial}{\partial y}|_{0,2}u

\frac{u_{1,3}-u_{1,1}}{2h} = \frac{\partial}{\partial y}|_{1,2}u \Leftrightarrow u_{1,3}=u_{1,1}+2h \frac{\partial}{\partial y}|_{1,2}u

La matriz queda:

\left(  \begin{array}{ccc|ccc}  -4 & 2 & 0 & 2 & 0 & 0 \\  1 & -4 & 1 & 0 & 2 & 0 \\  0 & 2 & -4 & 0 & 0 & 2 \\ \hline  1 & 0 & 0 & -4 & 2 & 0 \\  0 & 1 & 0 & 1 & -4 & 1 \\  0 & 0 & 1 & 0 & 2 & -4  \end{array}  \right)

Simetrizable como:

\left(  \begin{array}{ccc|ccc}  -1 & \frac{1}{2} & 0 & \frac{1}{2} & 0 & 0 \\  \frac{1}{2} & -2 & \frac{1}{2} & 0 & 1 & 0 \\  0 & \frac{1}{2} & -1 & 0 & 0 & \frac{1}{2} \\ \hline  \frac{1}{2} & 0 & 0 & -2 & 1 & 0 \\  0 & 1 & 0 & 1 & -4 & 1 \\  0 & 0 & \frac{1}{2} & 0 & 1 & -2  \end{array}  \right)

Tenemos 6 ecuaciones con 6 incognitas y la matriz tiene rango 6, por lo que la solución es única.

En el segundo caso, suponemos que todas las fronteras son Neumann:

\frac{\partial}{\partial x}|_{0,0}u, \frac{\partial}{\partial x}|_{0,1}u, \frac{\partial}{\partial x}|_{0,2}u

\frac{\partial}{\partial y}|_{0,0}u, \frac{\partial}{\partial y}|_{1,0}u, \frac{\partial}{\partial y}|_{2,0}u

\frac{\partial}{\partial y}|_{0,2}u, \frac{\partial}{\partial y}|_{1,2}u, \frac{\partial}{\partial y}|_{2,2}u

\frac{\partial}{\partial x}|_{2,0}u, \frac{\partial}{\partial x}|_{2,1}u, \frac{\partial}{\partial x}|_{2,2}u

Si discretizamos:

\frac{u_{-1,0}-2u_{0,0}+u_{1,0}}{h^2} + \frac{u_{0,-1}-2u_{0,0}+u_{0,1}}{h^2} = f_{0,0}

\frac{u_{-1,1}-2u_{0,1}+u_{1,1}}{h^2} + \frac{u_{0,0}-2u_{0,1}+u_{0,2}}{h^2} = f_{0,1}

\frac{u_{-1,2}-2u_{0,2}+u_{1,2}}{h^2} + \frac{u_{0,1}-2u_{0,2}+u_{0,3}}{h^2} = f_{0,2}

\frac{u_{0,0}-2u_{1,0}+u_{2,0}}{h^2} + \frac{u_{1,-1}-2u_{1,0}+u_{1,1}}{h^2} = f_{1,0}

\frac{u_{0,1}-2u_{1,1}+u_{2,1}}{h^2} + \frac{u_{1,0}-2u_{1,1}+u_{1,2}}{h^2} = f_{1,1}

\frac{u_{0,2}-2u_{1,2}+u_{2,2}}{h^2} + \frac{u_{1,1}-2u_{1,2}+u_{1,3}}{h^2} = f_{1,2}

\frac{u_{1,0}-2u_{2,0}+u_{3,0}}{h^2} + \frac{u_{2,-1}-2u_{2,0}+u_{2,1}}{h^2} = f_{2,0}

\frac{u_{1,1}-2u_{2,1}+u_{3,1}}{h^2} + \frac{u_{2,0}-2u_{2,1}+u_{2,2}}{h^2} = f_{2,1}

\frac{u_{1,2}-2u_{2,2}+u_{3,2}}{h^2} + \frac{u_{2,1}-2u_{2,2}+u_{2,3}}{h^2} = f_{2,2}

En las fronteras, sabemos que:

\frac{u_{1,0}-u_{-1,0}}{2h} = \frac{\partial}{\partial x}|_{0,0}u \Leftrightarrow u_{-1,0}=u_{1,0}-2h \frac{\partial}{\partial x}|_{0,0}u

\frac{u_{1,1}-u_{-1,1}}{2h} = \frac{\partial}{\partial x}|_{0,1}u \Leftrightarrow u_{-1,1}=u_{1,1}-2h \frac{\partial}{\partial x}|_{0,1}u

\frac{u_{1,2}-u_{-1,2}}{2h} = \frac{\partial}{\partial x}|_{0,2}u \Leftrightarrow u_{-1,2}=u_{1,2}-2h \frac{\partial}{\partial x}|_{0,2}u

\frac{u_{0,1}-u_{0,-1}}{2h} = \frac{\partial}{\partial y}|_{0,0}u \Leftrightarrow u_{0,-1}=u_{0,1}-2h \frac{\partial}{\partial y}|_{0,0}u

\frac{u_{1,1}-u_{1,-1}}{2h} = \frac{\partial}{\partial y}|_{1,0}u \Leftrightarrow u_{1,-1}=u_{1,1}-2h \frac{\partial}{\partial y}|_{1,0}u

\frac{u_{2,1}-u_{2,-1}}{2h} = \frac{\partial}{\partial y}|_{2,0}u \Leftrightarrow u_{2,-1}=u_{2,1}-2h \frac{\partial}{\partial y}|_{2,0}u

\frac{u_{0,3}-u_{0,1}}{2h} = \frac{\partial}{\partial y}|_{0,2}u \Leftrightarrow u_{0,3}=u_{0,1}+2h \frac{\partial}{\partial y}|_{0,2}u

\frac{u_{1,3}-u_{1,1}}{2h} = \frac{\partial}{\partial y}|_{1,2}u \Leftrightarrow u_{1,3}=u_{1,1}+2h \frac{\partial}{\partial y}|_{1,2}u

\frac{u_{2,3}-u_{2,1}}{2h} = \frac{\partial}{\partial y}|_{2,2}u \Leftrightarrow u_{2,3}=u_{2,1}+2h \frac{\partial}{\partial y}|_{2,2}u

\frac{u_{3,0}-u_{1,0}}{2h} = \frac{\partial}{\partial x}|_{2,0}u \Leftrightarrow u_{3,0}=u_{1,0}+2h \frac{\partial}{\partial x}|_{2,0}u

\frac{u_{3,1}-u_{1,1}}{2h} = \frac{\partial}{\partial x}|_{2,1}u \Leftrightarrow u_{3,1}=u_{1,1}+2h \frac{\partial}{\partial x}|_{2,1}u

\frac{u_{3,2}-u_{1,2}}{2h} = \frac{\partial}{\partial x}|_{2,2}u \Leftrightarrow u_{3,2}=u_{1,2}+2h \frac{\partial}{\partial x}|_{2,2}u

La matriz, por tanto, queda:

\text{A6}=\left(  \begin{array}{ccc|ccc|ccc}  -4 & 2 & 0 & 2 & 0 & 0 & 0 & 0 & 0 \\  1 & -4 & 1 & 0 & 2 & 0 & 0 & 0 & 0 \\  0 & 2 & -4 & 0 & 0 & 2 & 0 & 0 & 0 \\ \hline  1 & 0 & 0 & -4 & 2 & 0 & 1 & 0 & 0 \\  0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 \\  0 & 0 & 1 & 0 & 2 & -4 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 2 & 0 & 0 & -4 & 2 & 0 \\  0 & 0 & 0 & 0 & 2 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 2 & 0 & 2 & -4  \end{array}  \right)

Simetrizable como:

\text{A6s}=\left(  \begin{array}{ccc|ccc|ccc}  -1 & 1/2 & 0 & 1/2 & 0 & 0 & 0 & 0 & 0 \\  1/2 & -2 & 1/2 & 0 & 1 & 0 & 0 & 0 & 0 \\  0 & 1/2 & -1 & 0 & 0 & 1/2 & 0 & 0 & 0 \\ \hline  1/2 & 0 & 0 & -2 & 1 & 0 & 1/2 & 0 & 0 \\  0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 \\  0 & 0 & 1/2 & 0 & 1 & -2 & 0 & 0 & 1/2 \\ \hline  0 & 0 & 0 & 1/2 & 0 & 0 & -1 & 1/2 & 0 \\  0 & 0 & 0 & 0 & 1 & 0 & 1/2 & -2 & 1/2 \\  0 & 0 & 0 & 0 & 0 & 1/2 & 0 & 1/2 & -1  \end{array}  \right)

En este caso, tenemos 9 ecuaciones con 9 incognitas pero la matriz tiene rango 8, por lo que tenemos infinitas soluciones. Hay que conservar.

Suponemos \Delta u = f en 2D, es decir,

\frac{\partial^2}{\partial x^2}u(x,y) + \frac{\partial^2}{\partial y^2}u(x,y) = f(x,y).

Miraremos como queda la matriz del sistema al discretizar, como simetrizarla y su rango en tres casos: condición Neuman respecto x en una frontera, condición Neumann respecto y en una frontera y condición Neumann respecto x e y en dos fronteras.

Discretizamos con n=5. Si todas las condiciones fueran Dirichlet, la matriz quedaría:

A_1 = \left(  \begin{array}{ccc|ccc|ccc}  -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\  1 & -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 \\  0 & 1 & -4 & 0 & 0 & 1 & 0 & 0 & 0 \\ \hline  1 & 0 & 0 & -4 & 1 & 0 & 1 & 0 & 0 \\  0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 \\  0 & 0 & 1 & 0 & 1 & -4 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 1 & 0 & 0 & -4 & 1 & 0 \\  0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4  \end{array}  \right) .

En este caso, A_1 \in \mathcal{M}(9 \times 9) y simétrica, lo que permite tratar de manera conjunta los problemas de existencia y unicidad de solución. Si calculamos su rango obtenemos 9 por lo que existe solución y es única. Desde el punto de vista algebraico, es el punto (u_{1,1},u_{1,2},u_{1,3},u_{2,1},u_{2,2},u_{2,3},u_{3,1},u_{3,2},u_{3,3}) intersección de 9 hiperplanos

-4x_{1,1} + x_{1,2} + x_{2,1} = f_{1,1},

x_{1,1}-4x_{1,2}+x_{1,3} + x_{2,2} = f_{1,2},

\ldots

en el espacio \mathbb{R}^9.

Si condiremos conocidos \frac{\partial}{\partial x}|_{0,1}u, \frac{\partial}{\partial x}|_{0,2}u, \frac{\partial}{\partial x}|_{0,3}u en lugar de u_{0,1}, u_{0,2}, u_{0,3} (u_{0,0} y u_{0,4} son conocidos por las otras fronteras que son Dirichelt), tenemos:

A_2 = \left(  \begin{array}{ccc|ccc|ccc|ccc}  -4 & 1 & 0 & 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  1 & -4 & 1 & 0 & 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & -4 & 0 & 0 & 2 & 0 & 0 & 0 & 0 & 0 & 0 \\ \hline  1 & 0 & 0 & -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 \\  0 & 0 & 1 & 0 & 1 & -4 & 0 & 0 & 1 & 0 & 0 & 0 \\ \hline  0 & 0 & 0 & 1 & 0 & 0 & -4 & 1 & 0 & 1 & 0 & 0 \\  0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & -4 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4  \end{array}  \right)

de manera que A_2 \in \mathcal{M}(12 \times 12) y no es simétrica. Sin embargo es facilmente simetrizable dividiendo las tres primera filas (hacemos lo mismo en el termino independiente) por 2:

A_2 = \left(  \begin{array}{ccc|ccc|ccc|ccc}  -2 & \frac{1}{2} & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  \frac{1}{2} & -2 & \frac{1}{2} & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & \frac{1}{2} & -2 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ \hline  1 & 0 & 0 & -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 \\  0 & 0 & 1 & 0 & 1 & -4 & 0 & 0 & 1 & 0 & 0 & 0 \\ \hline  0 & 0 & 0 & 1 & 0 & 0 & -4 & 1 & 0 & 1 & 0 & 0 \\  0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & -4 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4  \end{array}  \right)

Tenemos 12 incognitas (u_{i,j} con i=0..3 y j=1..3) y el rango de A_2 es 12, por lo que la solución, nuevamente, es única.

Para el caso en el que conocemos \frac{\partial}{\partial y}|_{1,0}u, \frac{\partial}{\partial y}|_{2,0}u, \frac{\partial}{\partial y}|_{3,0}u en lugar de u_{1,0}, u_{2,0}, u_{3,0}, si el orden que tomamos es el contrario al tomado anteriormente llegaremos a la misma estructura de antes. Sin embargo, como en el siguiente caso nos veremos obligados a seleccionar uno de los dos, vamos a ver como queda este caso utilizando el mismo orden que antes:

A_3 = \left(  \begin{array}{cccc|cccc|cccc}  -4 & 2 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ \hline  1 & 0 & 0 & 0 & -4 & 2 & 0 & 0 & 1 & 0 & 0 & 0 \\  0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 \\  0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 \\  0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & -4 & 2 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4  \end{array}  \right)

que podemos simetrizar facilmente y queda:

A_3 = \left(  \begin{array}{cccc|cccc|cccc}  -2 & 1 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ \hline  \frac{1}{2} & 0 & 0 & 0 & -2 & 1 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 \\  0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 \\  0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 \\  0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 & -2 & 1 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4  \end{array}  \right)

Tenemos 12 ecuaciones con 12 incognitas (u_{i,j} con i=1..3 y j=0..3) y el rango de A_3 es 12, por lo que la solución es única.

Finalmente, suponemos conocidos \frac{\partial}{\partial x}|_{0,0}u, \frac{\partial}{\partial x}|_{0,1}u, \frac{\partial}{\partial x}|_{0,2}u, \frac{\partial}{\partial x}|_{0,3}u, \frac{\partial}{\partial y}|_{0,0}u, \frac{\partial}{\partial y}|_{1,0}u, \frac{\partial}{\partial y}|_{2,0}u, \frac{\partial}{\partial y}|_{3,0}u que incorpora 7 ecuaciones mas a las 9 que ya teniamos por lo que nos queda una matrix A_4 \in \mathcal{M}(16 \times 16):

\left(  \begin{array}{cccc|cccc|cccc|cccc}  -4 & 2 & 0 & 0 & 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  1 & -4 & 1 & 0 & 0 & 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & -4 & 1 & 0 & 0 & 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 1 & -4 & 0 & 0 & 0 & 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \hline  1 & 0 & 0 & 0 & -4 & 2 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ \hline  0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & -4 & 2 & 0 & 0 & 1 & 0 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & -4 & 2 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4  \end{array}  \right),

simetrizable dividiendo la fila correspondiente a u_{0,0} por 4, y las correspondientes a u_{0,1}, u_{0,2}, u_{0,3}, u_{1,0},u_{2,0}, u_{3,0}  por 2, quedando:

\left(  \begin{array}{cccc|cccc|cccc|cccc}  -1 & \frac{1}{2} & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  \frac{1}{2} & -2 & \frac{1}{2} & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & \frac{1}{2} & -2 & \frac{1}{2} & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & \frac{1}{2} & -2 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \hline  \frac{1}{2} & 0 & 0 & 0 & -2 & 1 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\  0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ \hline  0 & 0 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 & -2 & 1 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 & 0 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 0 & 0 & 0 & 1 \\ \hline  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 & -2 & 1 & 0 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 & 0 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4 & 1 \\  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 1 & -4  \end{array}  \right),

con lo que el sistema vuelve a ser compatible y determinado.

Suponemos n=5. En el caso de tener todas las fronteras con condiciones Dirichlet:

\frac{u_{0,1} -2u_{1,1} + u_{2,1}}{h^2} + \frac{u_{1,0} -2u_{1,1} + u_{1,2}}{h^2} = f_{1,1} para i,j=1,1,

\frac{u_{0,2} -2u_{1,2} + u_{2,2}}{h^2} + \frac{u_{1,1} -2u_{1,2} + u_{1,3}}{h^2} = f_{1,2} para i,j=1,2,

\frac{u_{0,3} -2u_{1,3} + u_{2,3}}{h^2} + \frac{u_{1,2} -2u_{1,3} + u_{1,4}}{h^2} = f_{1,3} para i,j=1,3,

\frac{u_{1,1} -2u_{2,1} + u_{3,1}}{h^2} + \frac{u_{2,0} -2u_{2,1} + u_{2,2}}{h^2} = f_{2,1} para i,j=2,1,

\frac{u_{1,2} -2u_{2,2} + u_{3,2}}{h^2} + \frac{u_{2,1} -2u_{2,2} + u_{2,3}}{h^2} = f_{2,2} para i,j=2,2,

\frac{u_{1,3} -2u_{2,3} + u_{3,3}}{h^2} + \frac{u_{2,2} -2u_{2,3} + u_{2,4}}{h^2} = f_{2,3} para i,j=2,3,

\frac{u_{2,1} -2u_{3,1} + u_{4,1}}{h^2} + \frac{u_{3,0} -2u_{3,1} + u_{3,2}}{h^2} = f_{3,1} para i,j=3,1,

\frac{u_{2,2} -2u_{3,2} + u_{4,2}}{h^2} + \frac{u_{3,1} -2u_{3,2} + u_{3,3}}{h^2} = f_{3,2} para i,j=3,2,

\frac{u_{2,3} -2u_{3,3} + u_{4,3}}{h^2} + \frac{u_{3,2} -2u_{3,3} + u_{3,4}}{h^2} = f_{3,3} para i,j=3,3,

de donde:

\begin{bmatrix} f_{1,1} -\frac{u_{1,0} + u_{0,1}}{h^2} & f_{1,2} - \frac{u_{0,2}}{h^2} & f_{1,3} - \frac{u_{0,3}+u_{1,4}}{h^2} \\ f_{2,1} -\frac{u_{2,0}}{h^2} & f_{2,2} & f_{2,3} - \frac{u_{2,4}}{h^2} \\ f_{3,1} - \frac{u_{3,0}+u_{4,1}}{h^2} & f_{3,2} - \frac{u_{4,2}}{h^2} & f_{3,3} - \frac{u_{4,3}+u_{3,4}}{h^2} \end{bmatrix}

En forma de matriz por bloques (para pensar en la simetrización):

\frac{1}{h^2} \begin{bmatrix} -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 1 & -4 & 1 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & -4 & 0 & 0 & 1 & 0 & 0 & 0 \\ 1 & 0 & 0 & -4 & 1 & 0 & 1 & 0 & 0 \\ 0 & 1 & 0 & 1 & -4 & 1 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 1 & -4 & 0 & 0 & 1 \\ 0 & 0 & 0 & 1 & 0 & 0 & -4 & 1 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 & 1 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -4 \end{bmatrix} u_{i,j} = \begin{bmatrix} f_{1,1} -\frac{u_{1,0} + u_{0,1}}{h^2} \\ f_{1,2} - \frac{u_{0,2}}{h^2} \\ f_{1,3} - \frac{u_{0,3}+u_{1,4}}{h^2} \\ f_{2,1} -\frac{u_{2,0}}{h^2} \\ f_{2,2} \\ f_{2,3} - \frac{u_{2,4}}{h^2} \\ f_{3,1} - \frac{u_{3,0}+u_{4,1}}{h^2} \\ f_{3,2} - \frac{u_{4,2}}{h^2} \\ f_{3,3} - \frac{u_{4,3}+u_{3,4}}{h^2} \end{bmatrix}

¿Qué pasa ahora si en lugar de conocer u_{0,1}, u_{0,2}, u_{0,3} conocemos \frac{\partial}{\partial x}|_{0,1}u, \frac{\partial}{\partial x}|_{0,2}u, \frac{\partial}{\partial x}u|_{0,3}? Necesitamos tres ecuaciones mas:

\frac{u_{-1,1} -2u_{0,1} + u_{1,1}}{h^2} + \frac{u_{0,0} -2u_{0,1} + u_{0,2}}{h^2} = f_{0,1} para i,j=0,1

\frac{u_{-1,2} -2u_{0,2} + u_{1,2}}{h^2} + \frac{u_{0,1} -2u_{0,2} + u_{0,3}}{h^2} = f_{0,2} para i,j=0,2

\frac{u_{-1,3} -2u_{0,3} + u_{1,3}}{h^2} + \frac{u_{0,2} -2u_{0,3} + u_{0,4}}{h^2} = f_{0,3} para i,j=0,3

y

\frac{u_{1,1}-u_{-1,1}}{2h} = \frac{\partial}{\partial x}|_{0,1}u \Leftrightarrow u_{-1,1} = u_{1,1} - 2h \, \frac{\partial}{\partial x}|_{0,1}u

\frac{u_{1,2}-u_{-1,2}}{2h} = \frac{\partial}{\partial x}|_{0,2}u \Leftrightarrow u_{-1,2} = u_{1,2} - 2h \, \frac{\partial}{\partial x}|_{0,2}u

\frac{u_{1,3}-u_{-1,3}}{2h} = \frac{\partial}{\partial x}|_{0,3}u \Leftrightarrow u_{-1,3} = u_{1,3} - 2h \, \frac{\partial}{\partial x}|_{0,3}u

por lo que:

\begin{bmatrix} f_{0,1} +\frac{2h \, \frac{\partial}{\partial x}|_{0,1}u - u_{0,0}}{h^2} & f_{0,2} + \frac{2h \, \frac{\partial}{\partial x}|_{0,2}u}{h^2} & f_{0,3} + \frac{ 2h \, \frac{\partial}{\partial x}|_{0,3}u - u_{0,4}}{h^2} \\ f_{1,1} -\frac{u_{1,0}}{h^2} & f_{1,2} & f_{1,3} - \frac{u_{1,4}}{h^2} \\ f_{2,1} -\frac{u_{2,0}}{h^2} & f_{2,2} & f_{2,3} - \frac{u_{2,4}}{h^2} \\ f_{3,1} - \frac{u_{3,0}+u_{4,1}}{h^2} & f_{3,2} - \frac{u_{4,2}}{h^2} & f_{3,3} - \frac{u_{4,3}+u_{3,4}}{h^2} \end{bmatrix}

La matriz queda:

\frac{1}{h^2} \begin{bmatrix} -4 & 1 & 0 & 2 & 0 & 0 & \ldots \\ 1 & -4 & 1 & 0 & 2 & 0 & \ldots \\ 0 & 1 & -4 & 0 & 0 & 2 & \ldots \\ 1 & 0 & 0 & -4 & 1 & 0 & \ldots \\ 0 & 1 & 0 & 1 & -4 & 1 & \ldots \\ 0 & 0 & 1 & 0 & 1 & -4 & \ldots \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \ddots \end{bmatrix}

Que podemos simetrizar:

\frac{1}{h^2} \begin{bmatrix} -2 & \frac{1}{2} & 0 & 1 & 0 & 0 & \ldots \\ \frac{1}{2} & -2 & \frac{1}{2} & 0 & 1 & 0 & \ldots \\ 0 & \frac{1}{2} & -2 & 0 & 0 & 1 & \ldots \\ 1 & 0 & 0 & -4 & 1 & 0 & \ldots \\ 0 & 1 & 0 & 1 & -4 & 1 & \ldots \\ 0 & 0 & 1 & 0 & 1 & -4 & \ldots \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \ddots \end{bmatrix}

con:

\begin{bmatrix} \frac{1}{2}(f_{0,1} +\frac{2h \, \frac{\partial}{\partial x}|_{0,1}u - u_{0,0}}{h^2}) & \frac{1}{2}(f_{0,2} + \frac{2h \, \frac{\partial}{\partial x}|_{0,2}u}{h^2}) & \frac{1}{2}(f_{0,3} + \frac{ 2h \, \frac{\partial}{\partial x}|_{0,3}u - u_{0,4}}{h^2}) \\ f_{1,1} -\frac{u_{1,0}}{h^2} & f_{1,2} & f_{1,3} - \frac{u_{1,4}}{h^2} \\ f_{2,1} -\frac{u_{2,0}}{h^2} & f_{2,2} & f_{2,3} - \frac{u_{2,4}}{h^2} \\ f_{3,1} - \frac{u_{3,0}+u_{4,1}}{h^2} & f_{3,2} - \frac{u_{4,2}}{h^2} & f_{3,3} - \frac{u_{4,3}+u_{3,4}}{h^2} \end{bmatrix}

Si las condiciones las tenemos sobre la derivada en el extremo opuesto llegaremos a la misma estructura pero en la parte inferior de la frontera y de la matriz.

Si las condiciones las tenemos sobre derivadas en la otra dirección, podemos llegar también a estas estructuras tomando el orden de variables donde tiene prioridad la variable contraria a la tomada en los casos anteriores.

En el post anterior hablamos sobre condiciones de frontera y su transferencia entre mallas pero no comentamos en el caso de que las condición haga referencia al valor de la derivada y no al de la función: condición de Neumann.

En 1D supongamos que ahora tenemos \frac{\partial^2}{\partial x^2}u = f en [a,b] con u(a)=u_a pero \frac{\partial}{\partial x} = du_b. Suponiendo de nuevo n=8, las ecuaciones nos quedan:

\frac{u_0 -2u_1 + u_2}{h^2} = f_1 para i=1,

\frac{u_1 -2u_2 + u_3}{h^2} = f_2 para i=2,

\frac{u_2 -2u_3 + u_4}{h^2} = f_3 para i=3,

\frac{u_3 -2u_4 + u_5}{h^2} = f_4 para i=4,

\frac{u_4 -2u_5 + u_6}{h^2} = f_5 para i=5,

\frac{u_5 -2u_6 + u_7}{h^2} = f_6 para i=6,

\frac{u_6 -2u_7 + u_8}{h^2} = f_7 para i=7,

La única diferencia con respecto al caso anterior es que, en la primera ecuación, desconocemos el valor de u_0 pero  conocemos el de su primera derivada. Sabemos que:

\frac{u_1 - u_{-1}}{2h} = \frac{d}{dx}u_{0} = du_0,

que, despejando, nos da:

u_1 - u_{-1} = 2h \, du_0 \Leftrightarrow u_{-1} = u_1 - 2h \, du_0,

Como tenemos una incognita mas por determinar, añadimos una nueva ecuación:

\frac{u_{-1} -2u_0 + u_1}{h^2} = f_0 para i=0,

donde reescribimos el valor de u_{-1} según acabamos de determinar:

\frac{ u_1 - 2h \, du_0 -2u_0 + u_1}{h^2} = \frac{ -2u_0 + 2u_1 - 2h \, du_0}{h^2} = f_0.

Por lo tanto,  en forma matricial tenemos:

\frac{1}{h^2} \begin{bmatrix} -1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & -2 & 1 & 0 & 0 & 0 & 0 &0 \\ 0 & 1 & -2 & 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & -2 & 1 & 0 & 0 &0 \\ 0 & 0 & 0 & 1 & -2 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & -2 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & -2 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & -2 \end{bmatrix} \begin{bmatrix} u_0 \\ u_1 \\ u_2 \\ u_3 \\ u_4 \\ u_5 \\ u_6 \\u_7 \end{bmatrix} = \begin{bmatrix} \frac{1}{2} (f_0 + \frac{2h \, du_0}{h^2}) \\ f_1 \\ f_2 \\ f_3 \\f_4 \\ f_5 \\ f_6 \\ f_7 - \frac{u_8}{h^2}\end{bmatrix}.

De la misma manera, en el caso por el otro extremo, llegariamos a:

\frac{1}{h^2} \begin{bmatrix} -2 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & -2 & 1 & 0 & 0 & 0 & 0 &0 \\ 0 & 1 & -2 & 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & -2 & 1 & 0 & 0 &0 \\ 0 & 0 & 0 & 1 & -2 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & -2 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & -2 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & -1 \end{bmatrix} \begin{bmatrix} u_1 \\ u_2 \\ u_3 \\ u_4 \\ u_5 \\ u_6 \\ u_7 \\u_8 \end{bmatrix} = \begin{bmatrix} \ f_1 - \frac{u_0}{h^2} \\ f_2 \\ f_3 \\ f_4 \\f_5 \\ f_6 \\ f_7 \\ \frac{1}{2}(f_8 + \frac{2h \, du_8}{h^2})\end{bmatrix}.

En resumen, básicamente hay que hacer dos trabajos: en primer lugar, construir el termino independiente de manera apropiada para incorporar la información de las fronteras; en segundo, llegados a los extremos, escoger entre -2 y -1 en la diagonal en función de si es Dirichlet o Neumann.

agosto 2017
L M X J V S D
« Jul    
 123456
78910111213
14151617181920
21222324252627
28293031