Elementos Finitos de orden superior

Métodos Numéricos Avanzados. 2023-2024

Author
Affiliation

David Gómez-Castro

Universidad Complutense de Madrid

Más allá de simplexes y funciones lineales

¿Por qué simplexes y funciones lineales?

Hasta ahora, hemos trabajado con simplexes (segmentos, triángulos, …) y con funciones lineales en cada simplex.

La malla podría no de simplexes. Por ejemplo, en dimensión 2, podría ser de cuadrados.

Pero si \(K\) es un cuadrado de vértices \(\mathbf x_i\), no podemos encontrar una función lineal tal que \(\varphi(\mathbf x_j) = \delta_{1j}\).

Pero podemos encontrar \(\varphi\) polinomios de orden superior.

Elemento de referencia

Vamos a tomar un elemento “normalizado”, y a utilizarlo para construir las funciones de base. Digamos que la malla \(\mathcal T\) se compone de subconjunto \(K_i \in \mathbb T\), todos ellos transformaciones de uno de conjunto de referencia \(K_a\) (si hay varios \(K_a\) se habla de mallas mixtas).

La idea es construir un conjunto de polinomios \(P\) definidos \(K_a\), que se pueda “pegar” para construir una base \[ V_h = \{ v \in V : v|_{K_i} \circ \mathbf x_{K_i} \in P \} \] donde \(\mathbf x_{K_i} : K_a \to K_i\).

En [Ciarlet, 2002] se hace estudia la noción rigurosa de “elemento”, y los elementos válidos y no válidos.

Polinomios de orden \(p > 1\) y conformes \(H^1\)

En esta sección buscamos discretizar \[ V_h = \{ v \in H^1(\Omega) : v|_{K_i} \circ \mathbf x_{K_i} \in P \} \]

donde \(P\) son polinomios de grado \(p\).

Dado que en el interior de cada \(K_i\) tenemos polinomios, basta pegar de manera continua en las aristas.

Funciones nodales

Tomamos un elemento de referencia \(K_a = (-1,1)\). Vamos a construir polinomios de orden \(p\) que se anulen en ciertos puntos \[ X_0 = -1, \qquad X_1 = 1, \qquad X_{j} = -1 + \frac{2(j-1)}{p} \text{para} j = 2, \cdots, p \]

Así \[ \theta_i (\xi) = \frac{ \xi - X_1 }{X_i - X_1} \frac{ \xi - X_2 }{X_i - X_2} \cdots \frac{\xi - X_{i-1}} {X_i - X_{i-1}} \frac{\xi - X_{i+1}} {X_i - X_{i+1}} \cdots \frac{\xi - X_{p+1}} {X_i - X_{p+1}} \]

θ(i,ξ,X) = prod([ 
- X[j])/(X[i+1] - X[j]) 
        for j in setdiff(1:length(X),i+1) 
        ] )
θ (generic function with 1 method)

p = 2 
X = [-1; 1; [-1 + 2*j/p for j=1:p-1]]

using Plots, LaTeXStrings
plot(xlabel=L"\xi")
for i=0:p
    plot!-> θ(i,ξ,X), label="i=$i", xlim=(-1,1))
end 
scatter!(X, zeros(size(X)), label="")


p = 3 
X = [-1; 1; [-1 + 2*j/p for j=1:p-1]]


plot(xlabel=L"\xi")
for i=0:p
    plot!(ξ->θ(i,ξ,X), label="i=$i", xlim=(-1,1))
end 
scatter!(X, zeros(size(X)), label="")