Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FEBRERO DE 2013
Abstract
Índice
Introducción 1
Desarrollo teórico 3
1. La ecuación de Helmholtz 3
Parte práctica 23
2. FreeFem++ 24
3. Problemas 25
i
Conclusiones y perspectivas 33
Bibliografía 36
Apéndice 38
A. El lenguaje de FreeFem++ 38
ii
Aplicación del FEM a la ecuación de Helmholtz
Introducción
Muchos procesos físicos de la naturaleza cuyo correcto conocimiento, predicción
y control son importantes están descritos por ecuaciones que involucran tanto mag-
nitudes físicas como su variaciones espaciales o temporales (derivadas parciales).
Entre estos procesos se encuentran: electromagnetismo, transferencia de calor, de-
formación de sólidos, dinámica de fluidos, acústica y muchos otros. Las ecuaciones
que contienen derivadas parciales se denominan ecuaciones en derivadas parciales
(EDP). El grado de una EDP es el mayor orden de derivada que dicha ecuación
contiene.
Son de especial interés las ecuaciones de segundo orden, que se pueden clasi-
ficar como: elípticas, parabólicas e hiperbólicas. Las primeras describen un esta-
do especial de un sistema que se caracteriza por poseer mínima cierta magnitud
(típicamente la energía). Las ecuaciones parabólicas suelen describir procesos que
evolucionan hasta un estado estacionario, mientras que las hiperbólicas suelen des-
cribir el transporte de alguna magnitud física (ecuación de ondas). Otros tipos de
ecuaciones de segundo orden se dicen indeterminadas. La ecuación de Helmholtz,
tratada en este trabajo es de tipo elíptico.
Junto con la propia ecuación nos serán impuestas ciertas condiciones de con-
torno: los valores que toma la función incógnita, su derivada o una combinación
de ambas, en ciertas regiones.
Para la mayoría de las ecuaciones con que nos enfrentamos, no nos es posible
encontrar una solución exacta de forma analítica e incluso no podemos saber si la
solución, si es que existe, es única (aunque en el caso de la ecuación de Helmholtz,
bajo ciertas condiciones, tal solución existe y es única como se verá en la sección
2.5). Nos vemos obligados, por ello, en problemas concretos de ciencia e ingeniería
a resolverlas de forma aproximada mediante métodos numéricos. Una herramienta
muy general para la resolución de ecuaciones en derivadas parciales es el Método
de los Elementos Finitos (FEM). Este método, está basado en la reformulación del
problema en forma variacional y la sustitución del espacio de soluciones por otro
de dimensión finita. Para ello se realiza una partición del dominio en elementos de
tamaño finito (segmentos en una dimensión y típicamente triángulos y tetraedros
en dos y tres dimensiones respectivamente, pero también cuadriláteros y prismas o
cualquier otra forma geométrica con la que se pueda hacer una partición adecuada
del dominio) y se buscan soluciones mediante familias de funciones dependientes
de un número también finito de parámetros (posiblemente polinomios a trozos de
primer grado, pero también por otros de mayor grado o por familias de funciones
más generales que poseen mejores propiedades de aproximación y la posibilidad de
reducir el número de cálculos necesarios para alcanzar la solución), de forma que
el problema inicial se convierte en un sistema de ecuaciones que podemos resolver
numéricamente.
El desarrollo moderno de esta técnica comienza hacia 1940, específicamente en
el campo de ingeniería estructural (de ahí permanecen nombres como matriz de
esfuerzo y vector de carga), con los trabajos de Hrennikoff en 1941 y McHenry
1
Aplicación del FEM a la ecuación de Helmholtz
1
Richard Courant (8 de enero de 1888 – 27 de enero de 1972) Nació en Lublinitz, Alemania
entonces y actuamente Polonia. Aunque puede considerarse como el padre del método de los
elementos finitos, éste nombre no es debido a él y no apareció hasta 1960. El método se utilizó
en una demostración de existencia del teorema de representación conforme de Riemann en un
libro con Hurwitz de 1922 y posteriormente en una nota a pié de página en su libro con Hilbert
“Métodos matemáticos para la física” de 1924, manual de éxito durante décadas. La primera
aplicación como un método numérico la realizó en 1943 en su solución a un problema de torsión.
Se le asignó la tarea de fundar un instituto para estudios graduados en matemáticas, que se
convirtió en el actual “Instituto Courant”. Murió en Nueva York en 1972.
2
Aplicación del FEM a la ecuación de Helmholtz
Desarrollo teórico
1. La ecuación de Helmholtz
La ecuación de Helmholtz2 puede deducirse para un campo electromagnético
en un medio libre de fuentes a partir de las ecuaciones de Maxwell:
~
∇×E~ = −µ ∂ H
∂t
~
∇×H~ = ∂E
∂t
~
∇·E =0
∇·H~ =0
en la primera y viendo que el primer término del miembro derecho es cero podemos
escribir:
∂H~ ∂(∇ × H)~ ~
∂ 2E
2~ ~
∇ E = −∇ × ∇ × E = −∇ × − µ =µ = µ 2
∂t ∂t ∂t
es decir:
~
1 ∂ 2E
~ =
∇2 E
c2 ∂t2
que es la ecuación de ondas, donde µ = 1/c2 . Si buscamos una solución armónica,
podemos poner
~
E(x, ~ 0 (x) e−iωt )
t) = Re(E
3
Aplicación del FEM a la ecuación de Helmholtz
m
x−h x x+h
KL2
Reordenando e identificando M
con el cuadrado de la velocidad de propaga-
ción (c2 ) obtenemos
∂ 2 U (x, t) 1 ∂ 2 U (x, t)
= 2
∂x2 c ∂t2
3
Pierre-Simon Laplace (Beaumont-en-Auge (Normandía); 28 de marzo de 1749 – París; 5 de
marzo de 1827) fue un astrónomo, físico y matemático francés. Entre otras aportaciones a la
matemática caben destacar el desarrollo de la transformada de Laplace e investigaciones en la
ecuación que lleva su nombre. Fue un creyente del determinismo causal.
4
Aplicación del FEM a la ecuación de Helmholtz
o bien
∂2 1 ∂2
− U (x, t) = 0 .
∂x2 c2 ∂t2
∇2 u + k 2 u = 0.
5
Aplicación del FEM a la ecuación de Helmholtz
Las ventajas del Método de los Elementos Finitos, respecto a otros métodos
numéricos y en concreto al de diferencias finitas son:
4
Walther Ritz (Nacido el 22 de febrero de 1878 en Sion y fallecido en Göttingen(Suiza) el , 7
de julio de 1909) Fué un físico teórico suizo famoso por el principio de combinación Rydberg–Ritz,
a parte de por su método variacional.
5
Boris Grigoryevich Galerkin (en ruso: Борис Григорьевич Галёркин), nació en 1871 en
Polotsk y falleció el 12 de julio de 1945 en Moscú.
6
Aplicación del FEM a la ecuación de Helmholtz
7
Aplicación del FEM a la ecuación de Helmholtz
Usamos la notación
∂ |α| v
Dα v = con|α| = α1 + · · · + αn
∂xα1 1 · · · ∂xα1 n
para indicar la derivada parcial de v.
En el caso del Método de los Elementos Finitos no necesitamos la derivada
puntual sino en términos de integración, por lo que introducimos la derivada débil.
Una función v ∈ L1loc (Ω) tiene derivada débil Dwα v si existe una función u ∈
L1loc (Ω)
tal que
Z Z
|α|
u(x)ϕ(x) dx = (−1) v(x)Dα ϕ(x) dx ∀ϕ ∈ D(Ω)
Ω Ω
8
Aplicación del FEM a la ecuación de Helmholtz
esto es, H p es la familia de funciones v tales que tanto ellas como todas sus deri-
vadas Dα v hasta orden p son de cuadrado integrable en Ω.
Se comprueba [RA] que con estas condiciones, H p , con el producto escalar
XZ
(u, v)H p (Ω) = Dα u(x)Dα v(x) dx, u, v ∈ H p (Ω)
|α|≤p Ω
El objetivo es obtener del término de la derecha una forma lineal b(v), para lo
cual habrá que considerar las condiciones concretas en la frontera.
9
Aplicación del FEM a la ecuación de Helmholtz
donde
Z Z
2
a(u, v) = ∇u · ∇v̄ − k uv̄ dx y b(v) = gv̄ dx .
Ω Γ
10
Aplicación del FEM a la ecuación de Helmholtz
donde Z
∇u.∇v̄ − k 2 uv̄ dx
a(u, v) =
Ω
y
b(v) = 0 .
siendo ahora
Z Z
2
a(u, v) = ∇u.∇v̄ − k uv̄ dx + γuv̄ ds
Ω Γ
y Z
b(v) = gv̄ ds
Γ
13
Victor Gustave Robin fue un matemático francés nacido en 1855, impartió clases de física
matemática en la Sorbona. Trabajó también en termodinámica. Falleció en 1897
11
Aplicación del FEM a la ecuación de Helmholtz
|b(v)| ≤ γkvkV , ∀v ∈ V .
a(u, v) = b(v), ∀v ∈ V
12
Aplicación del FEM a la ecuación de Helmholtz
Au es continua pues ∀v ∈ V
|Au(v)| = |a(u, v)| ≤ γkukkvk ∀v ∈ V
por tanto
Au(v)
kAu(v)kV = sup ≤ γkuk < ∞
v6=0 kvk
0.
luego Au ∈ V De modo análogo se prueba que u → Au es una aplicación lineal
de V → V 0 . Por el teorema de representación de Riesz,
∀b ∈ V 0 ∃ ! bT ∈ V tal que b(v) = hbT , vi ∀v ∈ V
Tenemos que encontrar un único u tal que Au(v) = f (v), ∀v ∈ V o lo que es lo
mismo, encontrar un único u tal que Au = f en V 0 o (Au)T = f T .
Consideremos la aplicación
T :V →V
v → v − ρ((Av)T − f T ) ∀v ∈ V
donde ρ es una constante. Si T es contractiva, entonces, por el principio de la
aplicación contractiva,
∃ ! u ∈ V | T u = u − ρ((Au)T − f T ) = u
o lo que es lo mismo,
Au = f .
Basta considerar ρ ∈ (0 , 2δ/γ 2 ) (donde δ y γ son las constantes que de la definición
de elíptica y acotada de a(·, ·)), para que T sea contractiva.
Por lo tanto se cumple que A(u, v) = f (v) tiene solución única.
13
Aplicación del FEM a la ecuación de Helmholtz
y consideremos la base formada por las funciones sombrero, afines en cada intervalo
de la partición y que cumplan
(
0 si k 6= j
ϕj (xk ) =
1 si k = j
1 ϕj
v
xj−1 xj xj+1 x
14
Aplicación del FEM a la ecuación de Helmholtz
u(x, y) = u0 + ux x + uy y
o bien ~u = (u0 , ux , uy ). En este caso tenemos tres grados de libertad y pueden ele-
girse determinando la función en cada vértice. Otra elección puede ser determinar
la función en el punto medio de cada lado.
Si consideramos un espacio Vh formado por funciones cuadráticas a trozos (po-
linomios de grado dos), las funciones pueden representarse mediante
15
Aplicación del FEM a la ecuación de Helmholtz
Polinomios de grado 1
3 grados de libertad
se aplica a funciones continuas
Polinomios de grado 2
6 grados de libertad
se aplica a funciones continuas
Polinomios de grado 3
10 grados de libertad
se aplica a funciones continuas
Polinomios de grado 3
10 grados de libertad
se aplica a funciones continuas
Polinomios de grado 5
21 grados de libertad
se aplica a funciones continuas con derivada continua
De forma análoga, en tres dimensiones podemos optar entre una gran variedad
de elementos para hacer la partición (prismas, paralelepípedos,...) pero la más fre-
cuente será mediante tetraedros (simplex en tres dimensiones), no necesariamente
regulares. En este caso, si consideramos Vh como el espacio de funciones afines,
podremos expresar u como
u(x, y, z) = u0 + ux x + uy y + uz z
por lo que podremos utilizar los valores de la función en los cuatro vértices para
determinar las componentes de u en Vh .
Si en ver utilizar la aproximación lineal utilizamos la polinómica de grado n,
el número de grados de libertad será (n + 1)(n + 2)(n + 3)/6.
Teniendo en cuenta lo anterior, se puede decir que un elemento finito es una
terna formada por:
16
Aplicación del FEM a la ecuación de Helmholtz
α h2K
máx kD (v − πv)kL∞ (K) ≤6 máx kDα vkL∞ (K) ,
|α|=1 ρK |α|=2
donde
kvkL∞ (K) = máx |v(x)|.
x∈K
17
Aplicación del FEM a la ecuación de Helmholtz
sustituyendo en la anterior
Z N N
! Z
X X
2
∇( ξj ϕj )∇ϕ̄i − k ( ξj ϕj )ϕ̄i dx = ϕ̄i gds, i = 1, . . . , N
Ω j=1 j=1 Γ
Aξ = b.
18
Aplicación del FEM a la ecuación de Helmholtz
al no saber como expresar la integral del miembro derecho. Una vez linealizado el
problema, veamos como hacerlo:
Introduciendo la familia de funciones
Vh,g = {v ∈ Vh : v|∂Ω = g}
donde A00 es la matriz (ni × ni ) correspondiente a los ni nodos interiores, que tiene
como elementos
Z
∇ϕj ∇ϕ̄i − k 2 ϕj ϕ̄i dx ,
(A00 )ij =
Ω
A00 ξ0 + A0g ξg = b0
es decir
A00 ξ0 = b0 − A0g g
19
Aplicación del FEM a la ecuación de Helmholtz
r0 =Aξ 0 − b
d0 = − r 0
e iteramos en k =1, 2, ...
rk−1 · dk−1
αk−1 = − ,
hdk−1 , dk−1 i
ξ k =ξ k−1 + αk−1 dk−1 ,
rk =Aξ k − b,
hrk , dk−1 i
βk−1 = ,
hdk−1 , dk−1 i
dk = − rk + βk−1 dk−1
Una descripción más detallada de estos métodos y algunos más puede encontrarse
en [CM]
20
Aplicación del FEM a la ecuación de Helmholtz
21
Aplicación del FEM a la ecuación de Helmholtz
22
Aplicación del FEM a la ecuación de Helmholtz
Parte práctica
1. Sorftware para Método de los Elementos Finitos
Actualmente existe una gran cantidad de software libre disponible para los
sistemas operativos más corrientes (Windows, Unix, Linux, Mac). Se muestra una
pequeña lista.
23
Aplicación del FEM a la ecuación de Helmholtz
2. FreeFem++
FreeFem++ es un software especializado en la resolución de ecuaciones diferen-
ciales en dos y tres dimensiones aplicando el método de elementos finitos. Se trata
de software de distribución libre escrito en C++. Se puede instalar en sistemas
operativos UNIX/Linux, Windows y Mac. Puesto que los fuentes están disponi-
bles, se puede instalar en casi cualquier sistema operativo. Para realizar el trabajo
se ha utilizado FreeFem++cs que es un entorno también gratuito que incluye Free-
Fem++, un editor que resalta la sintaxis y detecta ciertos errores y un visor de
resultados.
Un archivo (script) de FreeFem++ tiene una sintaxis similar a la de C++: ter-
minación de instrucciones con punto y coma, declaración de variables obligatoria,
bifurcaciones y bucles semejantes a C. En el apéndice A se resumen las caracterís-
ticas básicas que se han utilizado. Para una guía detallada véase [FH].
Los pasos principales a seguir cuando se crea un script para resolver un problema
utilizando FreeFem++ se pueden resumir en:
24
Aplicación del FEM a la ecuación de Helmholtz
3. Problemas
ui + us = u
ui (x) = Φ(x, z)
Problema 0:
Ningún medio dispersante en el dominio
Para contrastar un campo conocido con el obtenido por el Método de los Ele-
mentos Finitos, vamos a considerar que en nuestra región de estudio no hay ningún
medio dispersante (la ecuación de Helmholtz se cumple en todo el dominio, con k
constante y sin imponer condiciones de frontera). El campo acústico generado por
15
Como FreeFem++ no dispone de las funciones de Hankel, la expresaremos como función de
(1)
las de Bessel: H0 = J0 +i · Y0 .
25
Aplicación del FEM a la ecuación de Helmholtz
una fuente puntual estará dado por la solución fundamental Φ(x, z) antes expre-
sada. Vamos a contrastar ese campo teórico con el obtenido por el Método de los
Elementos Finitos conociendo sólo el valor en la frontera.
Como primer paso en la creación del script lo que haremos es definir la región.
Se puede hacer paramétricamente, forma muy adecuada para nuestra geometría.
A continuación la triangulamos (60 aristas en la frontera). Creamos un espacio Vh
para esa triangulación y le asignamos el valor de Φ, representando, tras tomar la
parte real, el valor del campo correspondiente a la solución fundamental.
Por otro vamos a calcular el campo mediante el Método de los Elementos
Finitos dado el valor del campo en la frontera. Para ello se define el problema
variacional, con condiciones de contorno de Dirichlet. La parte sesquilineal de la
expresión de Galerkin es
Z
∇u∇v̄ − k 2 uv̄ dx
Ω
Campo teórico (mediante función de Hankel) y calculado mediante F.E.M (solapado con la triangulación).
26
Aplicación del FEM a la ecuación de Helmholtz
Problema 1:
Obstáculo impenetrable completamente absorbente
Se considerará ahora un obstáculo impenetrable completamente absorbente
(sound-soft) que ocupa la región D (circunferencia centrada en el origen de radio
1/3) dentro del dominio Ω. Se impondrá también que la pared de la región de
estudio (∂Ω) sea completamente absorbente. Ello implica que el campo u será
nulo en la frontera (tanto en ∂D como en ∂Ω).
Como no nos interesa calcular el campo dentro del material dispersante (ya
que sabemos que en su interior el campo es nulo y no necesitamos calcularlo),
podemos parametrizar su frontera en el sentido de las agujas del reloj (al aumentar
el parámetro), de forma que FreeFem++ excluye de la región de estudio su interior.
Se reduce así el tamaño de la matriz que representa la forma sesquilineal en Vh .
Para incorporar la fuente dentro del dominio, evitando valores infinitos y adap-
tándose a lo que podría ser un micrófono, se creará una pequeña circunferencia
27
Aplicación del FEM a la ecuación de Helmholtz
∇2 us (x) + k 2 us (x) = 0, x ∈ Ω
us (x) = −ui , x ∈ ∂Ω ∪ ∂D.
us (x) = ui , x ∈ ∂M.
28
Aplicación del FEM a la ecuación de Helmholtz
Problema 2:
Obstáculo completamente reflectante
El hecho de que un obstáculo refleje completamente las ondas incidentes lo
podemos expresar como
∂us ∂ui
=− x ∈ ∂D
∂ν ∂ν
i
donde g = − ∂u
∂ν
. Situaremos la fuente en el interior del dominio.
29
Aplicación del FEM a la ecuación de Helmholtz
Problema 3:
Obstáculo con comportamiento intermedio
Para una situación intermedia entre las dos anteriores, podemos modelar las
condiciones en la frontera mediante condiciones de Robin, que en el caso de des-
componer el campo en incidente mas dispersado, se escriben
∂ui i ∂us
(x) + γu = − (x) − γus x ∈ ∂D
∂ν ∂ν
30
Aplicación del FEM a la ecuación de Helmholtz
Problema 4:
Medio no homogéneo con índice de refracción continuo
La ecuación de Helmholtz en un medio no homogéneo viene dada por
u(x) = eikx1 , x ∈ ∂Ω
16
un índice de refracción complejo modela un medio absorbente.
31
Aplicación del FEM a la ecuación de Helmholtz
Onda plana.
32
Aplicación del FEM a la ecuación de Helmholtz
Conclusiones y perspectivas
Conclusiones
Aunque la ecuación de Helmholtz ya me era conocida, al realizar el trabajo
he comprendido mejor su significado, importancia y características. La técnica de
separar el campo en incidente y dispersado, aunque también conocida, ha quedado
mucho mas clara.
La elaboración de trabajo me ha permitido adquirir un conocimiento riguroso
y extenso (no se puede decir completo pues existen infinidad de variantes y técni-
cas cuyo dominio exigiría muchos años de dedicación) de una técnica que empezó
a formarse hace algunas décadas y que con el tiempo está adquiriendo un grado
de desarrollo e implantación cada vez mayor. Muestra su utilidad en infinidad de
campos de la ciencia y de la técnica mas actuales (todos aquellos gobernados por
ecuaciones diferenciales con condiciones de contorno) entre los que podemos desta-
car diagnóstico por imagen (ecografías, TAC, resonancias), fisiología, dinámica de
reacciones químicas, membranas, dinámica de fluidos (CFD), problemas de trans-
ferencia del calor, estructuras, geofísica, meteorología, antenas, física nuclear y un
largo etcétera.
El número de publicaciones que se realizan sobre el tema es inmenso. Existen
muchos grupos de trabajo accesibles en internet, algunos de ellos hacen disponi-
ble a los interesados la bibliografía y los medios (software y presentaciones) que
han elaborado. Debido a ello, a lo largo del trabajo ha sido necesario mejorar la
capacidad para filtrar y organizar información procedente de fuentes dispares.
Empezar a trabajar con FreeFem++ ha sido bastante sencillo. Tiene documen-
tación completa y gran cantidad de ejemplos. No obstante tiene una gran potencia
y hay muchas opciones que no he investigado.
Es de destacar la rigurosa base matemática sobre la que se asienta este método
numérico.
Para el estudio y desarrollo del Método de los Elementos Finitos se ha de
tener una base sólida de análisis funcional, álgebra lineal así como el conocimiento
métodos numéricos y programación.
En este trabajo se han presentado dos deducciones de la ecuación de Helm-
holtz y se han mostrado distintas condiciones de contorno aplicables a las ondas
acústicas. Tras la deducción de la formulación variacional y utilizando el teorema
fundamental del Método de los Elementos Finitos, el teorema de existencia y uni-
cidad de Lax-Milgram, se ha mostrado como aproximar un problema posiblemente
irresolubre por medios analíticos en un sistema de ecuaciones.
Aunque para mostrar la aplicabilidad del método se han utilizado problemas
con geometrías sencillas, la utilización en otras más complicadas no aporta dificul-
tad. Si la precisión buscada no es muy crítica, todos los cálculos se pueden realizar
33
Aplicación del FEM a la ecuación de Helmholtz
Perspectivas
Este trabajo abre las puertas a infinidad de áreas en las que se puede seguir
investigando, entre ellas están todas las extensiones estándard que se han descrito
en la sección 2.9. Otras vías de investigación son las siguientes:
34
Aplicación del FEM a la ecuación de Helmholtz
Bibliografía
[RC] Richard Courant, Variational methods for the soultion of problems of equili-
brium and vibrations
Bull. Amer. Math. Soc., 49 (1943), pp. 1–23.
[RK] Rainer Kress, Numerical Analysis.
Springer, 1997.
[ZC] Zhangxin Chen, Finite Element Methods and Their Applications.
Springer, 2005.
[CJ] Claes Johnson, Numerical solution of partial differential equations by the fi-
nite element method.
Cambridge University Press, 1987.
[TO] Tinsley Oden, finite element method. Scholarpedia, 2009.
[CK] David Colton, Rainer Kress, Inverse Acoustic and Electromagnetic Scattering
Theory.
Springer, 1998.
[DC] David Colton, Inverse Acoustic and Electromagnetic Scattering Theory.
MSRI Publications, 2003.
[TC] Tai L. Chow, Mathematical methods for physicists.
Cambridge University Pressications, 2000.
[PS] Pavel Šolín, Partial Differential Equations and the Finite Element Method
John Wiley & Sons, 2006.
[OM] Olga Martin, Variational study of an elliptic boundary problem
http://www.mathem.pub.ro/proc/bsgp-14/M4-MA.PDF
[RA] R. A. Adams, Sobolev Spaces
Academic Press, 1975.
[ZL] Zhilin Li, MA587 Numerical Methods for PDEs –The Finite Element Method.
Cap. 6,7,8 y 9 (PDF)
www4.ncsu.edu/ zhilin/TEACHING/MA587/chap6.pdf
[KA] Finite Element Method
Department of Mathematics, KAIST,MAS765
http://math.kaist.ac.kr/∼dykwak/Courses/Num765-08/variation-fem.pdf
[CM] Carl D. Meyer Matrix Análysis and Applied Linear Algebra Siam, 2000
[BM] Xavier Brunotte, Gérard Meunier, Jean-François Imhoff, Finite Element Mo-
deling of Unbounded Problemsunsing Transformations:
A Rigorous, Powerful and Easy Solution
IEEE Transactions on magnetics,Vol 28, Issue 2. 1992.
36
Bibliografía Aplicación del FEM a la ecuación de Helmholtz
[PX] Kristen Parrish,Chicheng Xu, Paul Tsuji, Higher Order Fem Solutions for a
Plane Wave Propagating Through an Inhomogeneous Dielectric
EE 383V COMPUTATIONAL ELECTROMAGNETICS: FEM PROJECT
http://www.cerc.utexas.edu/ kparrish/class/fem.pdf
[SC] José Serrate, Ramón Clarisó, El Método de los Elementos Finitos en proble-
mas electromagnéticos: planteamiento y aplicaciones
Revista Internacional de Métodos Numéricos para Cálculo y Diseño en Inge-
niería
Vol 17,1,219-248, 2001
37
Apéndices Aplicación del FEM a la ecuación de Helmholtz
Apéndice
A. El lenguaje de FreeFem++
Aunque para la realización del trabajo se ha utilizado el entorno FreeFem++CS,
se ha probado a utilizar FreeFem++ desde la línea de comandos, que únicamen-
te tiene la desventaja de no tener resaltado de código y tener que usar un visor
externo para observar los resultados. La sintaxis de FreeFem++ es semejante a
C++. Se describen a continuación algunas características básicas del lenguaje.
Igual que en C/C++ es necesario declarar el tipo de variables antes de usarlas.
Las mas sencillas son las de tipo int, real, complex y string. Los dos primeros
almacenan datos de tipo entero, números en coma flotante. Las variables de tipo
complex almacenan números complejos en los que la parte real y la parte imaginaria
son en coma flotante. Es de destacar que FreeFem++ no reconoce la letra i a menos
que vaya precedida de un número (i o 1+i no es reconocido pero 1i o 1+1i si.
Para la asignación de constantes a las variables tipo string se utilizan las comillas
dobles.
Las variables tipo border permiten definir las fronteras de las distintas regiones.
Se realiza paramétricamente, indicando un nombre,el tipo de parametrización y
posiblemente un segundo código para referirnos a una frontera. Un ejemplo es el
siguiente:
border a(t=0,1){x=t;y=0;label=1;};
border b(t=0,0.5){x=1;y=t;label=1;};
border c(t=0,0.5){x=1-t;y=0.5;label=1;};
border d(t=0.5,1){x=0.5;y=t;label=1;};
border e(t=0.5,1){x=1-t;y=1;label=1;};
border f(t=0,1){x=0;y=1-t;label=1;};
que a través de varias parametrizaciones forma una “L”, en sentido antihorario. En
caso de hacer parametrización en sentido horario se genera un hueco. Todos los
border deben ser cerrados.
Una vez creado podemos asignarle valores mediante on(1) si queremos referir-
nos a varios que tienen la etiqueta 1 o on(f) para referirnos a una parte concreta
de la frontera.
El siguiente tipo de datos es mesh. Se inicializan con la función buildmesh
indicando cuantos nodos se pondrán en la frontera. Un ejemplo es:
mesh th= buildmesh(a(20)+b(30)+c(10)+d(15)+e(7)+f(40)); que creará
una triangulación de la región definida por la frontera a-b-c-d-e-f-a con el número
de nodos indicados entre paréntesis en cada zona de la frontera.
El tipo de variable fespace almacena un espacio de elementos finitos. La de-
claración se hace de la forma
38
Apéndices Aplicación del FEM a la ecuación de Helmholtz
fespace Vh(Th,P1); Vh u;
En primer lugar se crea una clase Vh indicando la triangulación a utilizar y
el tipo y forma de asignar funciones (en este caso polinomios de grado uno). En
segundo lugar se crea la variable u propiamente dicha. En la creación del fespace
se puede indicar que es de tipo complejo:
Vh<complex>u;
El siguiente paso es declarar un problem:
problem miproblema(uh,vh) =
int2d(Th)( dx(uh)*dx(vh)
+ (2i+1)*dy(uh)*dy(vh) )
- int2d(Th)( f*vh )
+ on(1,2,3,4,uh=g) ;
en el ejemplo anterior se ha declarado un problema con nombre miproblema que
va a utilizara los fespace uh y vh para el espacio de soluciones y funciones test
respectivamente y se le indica la forma variacional mediante integrales de volumen
(int3d) de superficie (int2d) o de línea (int1d). Se indican también los valores
de frontera que han de estar forzados (on()).
Cabe destacar que existen los operadores dx y dy para referirse a las derivadas
parciales respecto a x e y. También existen los vectores N.x y N.y para referirse a
las componentes x e y de la normal.
Tras estos pasos, lo que se suele hacer es indicar que se resuelva el problema
indicando su nombre; en nuestro caso
miproblema;
los dos últimos pasos se pueden realizar de una vez, mediante el comando solve.
Para representar un resultado se utiliza la instrucción plot pasándole como
parámetros el o losvespace a mostrar y otros parámetros opcionales.
39
Apéndices Aplicación del FEM a la ecuación de Helmholtz
Código de ejemplo
// Problema 0 .
// C o n t i e n e 2 g r á f i c a s
// l a p r i m e r a s e o b t i e n e de a s i g n a r d i r e c t a m e n t e
// l a f u n c i ó n de Hankel a uh_H p e r t e n e c i e n t e a Vh .
// l a segunda s e c a l c u l a a p a r t i r de l o s v a l o r e s
// de l a f u n c i ó n de H. s ó l o en l a f r o n t e r a y
// r e s o l v i e n d o l a e c . de Helmholtz .
// Se o b t i e n e e l mismo r e s u l t a d o , como c a b í a e s p e r a r .
// Podemos a s í r e e m p l a z a r l a f u e n t e por l o s v a l o r e s
// que l a f u e n t e produce en l a f r o n t e r a de omega
// unas c o n s t a n t e s :
r e a l d = 1 . 3 ; // d i s t a n c i a de l a f u e n t e a l o r i g e n ( p o s i c i o n (−d , 0 )
r e a l k = 0 . 4 ; // e l e g i d o para que s e a p r e c i e b i e n .
// l a f r o n t e r a
b o r d e r omega ( t =0, 2∗ p i ) { x=c o s ( t ) ; y=s i n ( t ) ; } ; // c i r c u l o en s e n t i
// do a n t i h o r a r i o .
f e s p a c e Vh(Th , P1 ) ; // P1 v é r t i c e s , no b a r i c e n t r o .
Vh <complex> uhH , uh , vh ;
// s e d e c l a r a n t r e s e s p a c i o s p e r t e n e c i e n t e s a Vh ( c o m p l e j o )
uhH=h ; // asignamos l a f u n c i ó n de H.
Vh RuhH ; // s e d e c l a r a RuhH p e r t e n e c i e n t e a Vh( r e a l )
RuhH=r e a l (uhH ) ; // s e l e a s i g n a l a p a r t e r e a l de uhH
p l o t (RuhH, v a l u e=t r u e , n b i s o =32 , nbarrow =100 ,
L a b e l C o l o r s =0,ShowAxes=0, ps=" e j e r 0 _ 1 . e p s " ) ;
// y s e r e p r e s e n t a
problem h e l m h o l t z ( uh , vh ) =
i n t 2 d (Th ) ( dx ( uh ) ∗ dx ( vh)+dy ( uh ) ∗ dy ( vh )
− k∗k∗uh∗vh )
+ on ( omega , uh=h ) ;
// s e d e c l a r a un problema con l a forma v a r i a c i o n a l ( G a l e r k i n )
// de l a e c . Helmholtz y s e f u e r z a n l o s v a l o r e s
// de f r o n t e r a (P . D i r i c h l e t ) , mediante on ( omega , . . . = . . . )
h e l m h o l t z ; // s e l a n z a e l c á l c u l o .
// s e p o d r í a poner s o l v e h e l m h o l t ( uh , vh)= i n t 2 d . . .
// que e q u i v a l e a l a d e c l a r a c i ó n y c á l c u l o s s i m u l t a n e a m e n t e
40
Apéndices Aplicación del FEM a la ecuación de Helmholtz
41