Elementos Finitos en \(d = 2\)

Métodos Numéricos Avanzados. 2023-2024

Author
Affiliation

David Gómez-Castro

Universidad Complutense de Madrid

Formulación débil y método de Galerkin

Integración por partes

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.