Elementos Finitos en \(d = 2\)
Métodos Numéricos Avanzados. 2023-2024
Formulación débil y método de Galerkin
Integración por partes
\[ \newcommand{\diff}{\mathrm{d}} \DeclareMathOperator{\diver}{div} \]
Recordamos la fórmula \[ \diver(v \nabla u) = \nabla v \nabla u + v \Delta u \]
Con el teorema de la divergencia \[ \int_{\partial \Omega} v \nabla u \cdot n = \int_\Omega \nabla v \nabla u + \int_\Omega v \Delta u. \] donde \(n\) es el vector normal exterior a \(\Omega\).
Un momento de teoría
Si \(v\) es una función Lipschitz, entonces es derivable en casi todo punto (teorema de Rademacher). Y denotamos a su derivada \(\nabla v\).
Esta derivada (a veces llamada “débil”) sigue teniendo la propiedad de integración por partes: si \(u\) es de clase \(C^2\) entonces \[ \int_{\partial \Omega} v \nabla u \cdot n = \int_\Omega \nabla v \nabla u + \int_\Omega v \Delta u. \]
El espacio de funciones Lipschitz es un ejemplo de los llamados espacios de Sobolev. Denotaremos \[ \begin{aligned} W^{1,\infty} (\Omega) &= \{ v : \overline \Omega \to \mathbb R \mid \text{ Lipschitz} \} \\ W^{1,\infty}_0 (\Omega) &= \{ v \in W^{1,\infty} (\Omega) \mid \text{ tal que } v = 0 \text{ en } \partial \Omega \}. \end{aligned} \]
Ejemplo. Ecuación de calor con condiciones Dirichlet
Volvemos sobre la ecuación de calor \[ \tag{C} \label{eq:calor} \frac{\partial u}{\partial t} = \Delta u + f(t,x) \]
Tomemos \(\eqref{eq:calor}\) en \(\Omega\) con condiciones de Dirichlet homogéneas \(u = 0\) en \(\partial \Omega\). La solución exacta de la ecuación satisface que para toda \(v\) Lipscthitz se tiene
\[ \int_\Omega \frac{\partial u}{\partial t} v = \int_\Omega (\Delta u) v + \int_\Omega f v \]
Si \(v = 0\) en \(\partial \Omega\) podemos integrar por partes \[ \int_\Omega \frac{\partial u}{\partial t} v = - \int_\Omega \nabla u \nabla v + \int_\Omega f v , \qquad \forall v \in W_0^{1,\infty} (\Omega). \]
Con \(n = 2\) se tiene \[ \nabla u \cdot \nabla v = \frac{\partial u}{\partial x}\frac{\partial v}{\partial x} + \frac{\partial u}{\partial y}\frac{\partial v}{\partial y} \]
La solución exacta satisface \[ \int_\Omega \frac{\partial u}{\partial t} v = - \int_\Omega \nabla u \nabla v + \int_\Omega f v , \qquad \forall v \in W_0^{1,\infty} (\Omega). \]
Tomando \(\varphi_1^h, \cdot,s, \varphi_N^h \in W_0^{1,\infty}\) vamos a buscar
\[ u^h(t,x) = \sum_{j=1}^N u_j^h(t) \varphi_j^h(x). \]
Pediremos que cumpla \[ \int_\Omega \frac{\partial u^h}{\partial t} v = - \int_\Omega \nabla u^h \nabla v + \int_\Omega f v , \qquad \forall v \in V^h. \]
Estos es equivalente al sistema de \(N\) ecuaciones (diferenciales) \[ \int_\Omega \frac{\partial u^h}{\partial t} \varphi_i^h = - \int_\Omega \nabla u^h \nabla \varphi_i^h + \int_\Omega f \varphi_i^h , \qquad i = 1, \cdots, N. \]
Al igual que ocurría en \(n=1\) podemos escribir esto como un sistema Llegamos a un sistema de la forma \[ M^h \frac{\diff }{\diff t} \begin{pmatrix} u_1^h \\ \vdots \\ u^N_h \end{pmatrix} = - A^h \begin{pmatrix} u_1^h \\ \vdots \\ u^N_h \end{pmatrix} + b^h (t) \]
donde \[ M^h_{ij} = \int_\Omega \varphi_j^h \varphi_i^h , \qquad A_{ij}^h = \int_\Omega \frac{\diff \varphi_j^h}{\diff x} \frac{\diff \varphi_i^h}{\diff x}, \qquad b_i^h (t) = \int_\Omega f(t,x) \varphi_i^h (x) \diff x . \]
Ejemplo. Ecuación de calor con condiciones Neumann
Tomemos \(\eqref{eq:calor}\) en \(\Omega\) con condiciones de Dirichlet homogéneas \(\nabla u \cdot n = 0\) en \(\partial \Omega\). La solución exacta de la ecuación satisface que para toda \(v\) Lipscthitz se tiene
\[ \int_\Omega \frac{\partial u}{\partial t} v = \int_\Omega (\Delta u) v + \int_\Omega f v \]
Podemos integrar por partes incluso si \(v \ne 0\) en el borde, es decir \[ \int_\Omega \frac{\partial u}{\partial t} v = - \int_\Omega \nabla u \nabla v + \int_\Omega f v , \qquad \forall v \in W^{1,\infty} (\Omega). \]
Elementos finitos
Fijemos \(d = 2\) por simplicidad. De nuevo, tomaremos una descomposición de \(\overline \Omega\) en polígonos convexos (llamada \(\mathcal T\)), y \(\varphi_i^h\) para que generen el espacio \[ V^h = \{ v \in C^p (\overline \Omega) : \forall K \in \mathcal T \text{ tenemos }v|_K \text{ es un polinomio de grado } g \} \]
De nuevo, el caso más fácil es \(p = 0\) (funciones continuas) y \(g=1\) (lineales en cada \(K\)).
Sea \(K \in \mathcal T\) polígono. Si intentamos que \(\varphi_i^h\) sea lineal en \(K\) tiene 3 coeficientes. Así, si queremos fijar los valores de \(\varphi_i^h\) en los vértices de \(K\), sólo puede haber \(3\). Es decir, \(K\) tiene que ser un tríangulo.
Mallas cuadradas
Malla cuadradas
Para esta sección vamos a seguir el planteamiento propuesto en [Süli, 2020]. Consideramos en cuadrado \(\overline \Omega = [0,1]\times[0,1]\) y puntos \((x_i,y_j) = (ih, ih)\) con \(i,j = 0, \cdots, N\) definiendo una malla uniforme. Elegimos sobre esta malla los triángulos tal y como se presentan en la Figure 1.