Implementación del Método de los Elementos Finitos
Por fijar ideas y para facilitar las explicaciones, vamos a describir el proceso de resolución de un problema por el método de los elementos finitos (MEF) sobre un problema concreto.
Sea el abierto acotado representado en la figura.
Consideramos el siguiente problema:
Formulación variacional
Observación: todos los cálculos que se hacen en esta sección son puramente formales, es decir, se supone siempre la regularidad suficiente para que todos ellos estén justificados.
Se recuerda que es el espacio de Sobolev de las funciones cuyas derivadas (parciales) en el sentido de las distribuciones son también funciones de :
y consideramos el subespacio vectorial de formado por las funciones de que valen cero sobre :
Para obtener la formulación variacional del problema se procede como sigue:
Se multiplica la ecuación diferencial en por cualquiera y se integra en :
Se aplica la fórmula de integración por partes:
Se tiene entonces, de
donde la integral de frontera se puede escribir
Se llega así a la formulación variacional del problema :
donde es una función de que coincide con en : y .
El problema es un problema de dimensión infinita: buscamos la solución en un espacio de Hilbert de dimensión infinita. Para abordar su resolución numérica necesitamos discretizarlo, esto es, sustituirlo por otro aproximado que tenga dimensión finita.
Discretización del problema variacional (PV) mediante Elementos Finitos P_1-Lagrange
En lo sucesivo, por simplicidad, supondremos que la frontera de , , está formada por una o varias curvas poligonales. Si no fuera así, el primer paso en la discretización sería aproximar el dominio por otro con dichas características.
Una triangulación de es una familia finita de triángulos verificando
Consideremos, por ejemplo, la de la Figura siguiente:
La bondad de la aproximación que vamos a describir a continuación dependerá, entre otras cosas, del tamaño de los triángulos que consideremos. Para medir éste se introduce el diámetro de la triangulación:
Así, denotaremos una triangulación de de diámetro .
Denotamos
y
es un subespacio de dimensión finita de , siendo el número de vértices de , y es un subespacio de dimensión finita de , , siendo el número de vértices de que no están sobre .
Sean los vertices de y sean () los vertices de que no están sobre , siendo y .
Una función queda unívocamente determinada por sus valores en los vértices de la triangulación, i.e. por el conjunto de valores . Análogamente, una función está unívocamente determinada por el conjunto de valores .
La base canónica de está constituida por las funciones definidas por
La función está asociada al vértice de y solo es distinta de cero en los triángulos que contienen a dicho vértice.
A su vez, la base de está constituida por el subconjunto de la base de . Luego,
Por tanto, una aproximación del problema es la que sigue:
siendo tal que para todo .
Puesto que es una base de , el problema anterior se puede escribir
Ahora bien, se puede expresar en función de la base de :
de donde para obtener solo hay que calcular los coeficientes para .
Sustituyendo en las ecuaciones , el problema que tenemos que resolver se escribe:
Utilizando la siguiente notación
el problema se puede reescribir de la forma, más compacta:
es decir el problema se reduce a la resolución de un sistema lineal de ecuaciones.
Bloqueo de las condiciones de contorno
Por razones de tipo informático que más adelante se verán, construir la matriz resulta más costoso que construir la matriz .
Por ello, el sistema que en la práctica se resuelve no es , sino el que vemos a continuación, obtenido penalizando el anterior.
El problema es equivalente a
Obsérvese que lo que hemos hecho es añadir como incógnitas los valores de sobre los nodos de a la vez que añadimos las ecuaciones que harán que esos valores sean iguales a los valores de . Tenemos ahora un sistema "más grande", con ecuaciones.
A su vez, es equivalente a
donde
donde un número muy grande ().
En efecto, para la -ésima ecuación del sistema es
Despejando :
Sustituyendo ahora estos valores en las ecuaciones de correspondientes a , recuperaremos las ecuaciones .
En resumen, es el sistema que, realmente, se resuelve. Inicialmente, se construyen la matriz y el segundo miembro del sistema "sin penalizar"
y, posteriormente, se añaden las modificaciones descritas en .
Cálculo de matrices y segundos miembros
Llamemos a la matriz , , siendo el número de vértices de y
La condición de Dirichelet se introducirá más tarde, mediante la técnica del bloqueo ya explicada. Sea también
La matriz es simétrica, definida positiva y hueca.
Nota: Se denomina matriz hueca aquélla cuyas componentes son mayoritariamente nulas. Las matrices de grandes dimensiones que tienen esta característica se suelen almacenar de formas especiales, no solo para evitar el almacenamiento de cantidades ingentes de ceros, sino también para evitar operaciones inútiles con ceros (multiplicaciones y sumas).
Una de las maneras de almacenar una matriz hueca es hacerlo como matriz sparse. Para ello se utilizan tres vectores: uno que contiene las componentes de la matriz que no son nulas y otros dos que contienen, respectivamente, los números de la fila y la columna en la que se encuentran.
Nota: Se llama matriz banda a una matriz que es hueca (es decir, cuyos elementos son mayoritariamente nulos) y cuyos elementos no nulos están concentrados en una banda de anchura pequeña (en relación con la dimensión de la matriz) en torno a la diagonal principal. Una manera de almacenar este tipo de matrices es el almacenamiento en orden perfil, consistente en guardar solamente las componentes de la matriz que están dentro de la mencionada banda.
La matriz se puede escribir como suma de tres matrices:
Las dos primeras se llaman matriz de rigidez y matriz de masa, respectivamente.
Veamos cómo se realiza el cálculo de la matriz de rigidez, siendo análogo el cálculo para las otras dos. Denotamos
La integral solo es distinta de cero si los soportes de las funciones de base y tienen intersección no vacía con el triángulo , esto es, si y son vértices de . Por tanto, el sumatorio de la derecha de se reduce en realidad a unos pocos términos no nulos:
En la práctica, el cálculo de los elementos de la matriz no se hace elemento a elemento, ya que esto implicaría:
para cada elemento , búsqueda de los triángulos que contienen a los vértices y ,
repetición de muchos cálculos.
Lo que debe hacerse es calcular, para cada triángulo , los tableros elementales no nulos (esto es, las integrales que no sean nulas) y acumularlos en los elementos correspondientes de la matriz. Obsérvese que, en principio, habría que calcular 9 valores:
Pero, dado que
este número se reduce a 6. Esto queda descrito en el siguiente algoritmo.
Algoritmo 1 (cálculo de la matriz de rigidez)
Inicializar a cero los elementos de la matriz
Para cada triángulo , , siendo , e los números de sus tres vértices, calcular las 6 integrales
y acumular cada una de ellas en el correspondiente, es decir, hacer
á
á
Detalle de los cálculos elementales
En construcción.
Anna Doubova - Rosa Echevarría - Dpto. EDAN - Universidad de Sevilla