Anda di halaman 1dari 87

METODOS FINITOS

JOSE FERNANDO BOSCH MORENO

Trabajo de grado para optar al título de:


Especialista en Modelación, Simulación,
y Optimización de Sistemas

Director
WHADY FELIPE FLORES ESCOBAR
Ph.D Mecánica Computacional

UNIVERSIDAD PONTIFICIA BOLIVARIANA


INSTITUTO DE ENERGIA Y TERMODINAMICA
MEDELLIN
2006
CONTENIDO

1 INTRODUCCION .......................................................................................................... 4
2 ANTECEDENTES ................................ ................................ ................................ ......... 5
3 CONCEPTOS ............................................................................................................... 7
3.1 FUNDAMENTOS MATEMÁTICOS ................................ ................................ ................. 7
3.1.1 Operadores ................................................................................................................... 7
3.1.2 Series de Taylor. ........................................................................................................... 7
3.1.3 Teoremas de Green e Integración por partes. ................................ ................................ . 8
3.1.4 Integración Gaussiana. .................................................................................................. 9
3.2 CONCEPTOS FÍSICOS................................ ................................ ................................ 10
3.2.1 Propiedades específicas ............................................................................................... 10
3.2.2 Flujo ............................................................................................................................ 11
3.3 FUNCIONES DE FORMA E INTERPOLACIÓN .............................................................. 12
3.3.1 Interpolación lineal ................................ ................................ ................................ ........13
3.3.2 Interpolación lineal bidimensional .................................................................................. 14
3.4 MÉTODO DE GALERKIN. ............................................................................................ 16
3.5 ECUACIONES DE LAPLACE Y POISSON .....................................................................17
4 MÉTODOS FINITOS ....................................................................................................19
4.1 PROBLEMA DE TRABAJO........................................................................................... 21
4.2 DIFERENCIAS FINITAS ............................................................................................... 22
4.2.1 Formulación ................................................................................................................. 22
4.2.2 Aplicación. ................................................................................................................... 25
4.2.3 Programación ............................................................................................................... 27
4.3 VOLÚMENES FINITOS ................................ ................................ ................................ 29
4.3.1 Formulación ................................................................................................................. 29
4.3.2 Aplicación .................................................................................................................... 30
4.3.3 Programación ............................................................................................................... 32
4.4 ELEMENTOS FINITOS.................................................................................................34
4.4.1 Formulación ................................................................................................................. 34
4.4.2 Aplicación .................................................................................................................... 40
4.4.3 Programación ............................................................................................................... 43
4.5 ELEMENTOS DE FRONTERA ...................................................................................... 46
4.5.1 Formulación ................................................................................................................. 46
4.5.2 Aplicación .................................................................................................................... 57
4.5.3 Programación ............................................................................................................... 61
4.6 SOLUCION MEDIANTE SOFTWARE DE ELEMENTOS FINITOS ANSYS 8.0................. 74
4.7 RESULTADO COMPARATIVO ..................................................................................... 76
5 ESTRUCTURA DEL PROGRAMA................................................................................. 79
5.1 ESQUEMA GENERAL..................................................................................................79
5.2 MODULO GLOBALES ..................................................................................................80
5.3 MODULO LECTURAS ..................................................................................................80
5.4 MODULO PRINCIPAL ..................................................................................................82
5.5 MODULO RUTINAS .....................................................................................................83
6 CONCLUSIONES......................................................................................................... 84
7 BIBLIOGRAFIA ............................................................................................................87
LISTA DE FIGURAS
Figura 1. Interpolación lineal. ..........................................................................................13
Figura 2. Interpolación lineal bidimensional. ................................................................14
Figura 3. Problema de trabajo........................................................................................21
Figura 4. División del dominio en diferencias finitas. ..................................................25
Figura 5. Sistema matricial para diferencias finitas.....................................................27
Figura 6. Convención para los nodos............................................................................30
Figura 7. División del d ominio en volúmenes finitos. ..................................................30
Figura 8. Sistema matricial para volúmenes finitos.....................................................32
Figura 9. Elemento finito triangular................................................................................39
Figura 10. División del dominio en elementos finitos..................................................40
Figura 11. Matrices locales de rigidez para cada elemento ......................................42
Figura 12. Matriz de rigidez global.................................................................................42
Figura 13. Dominio, frontera y condicione s..................................................................47
Figura 14. Valores para la constante C i. .......................................................................49
Figura 15. Puntos para la función radial. ......................................................................51
Figura 16. Fronteras y división dominio triangular .....................................................57
Figura 17. División dominio para elementos de frontera............................................59
Figura 18. Flujos de calor y potencial alrededor de un nodo.....................................62
Figura 19. Malla empleada.............................................................................................74
Figura 20. Distribución de nodos clave para lectura de resultados..........................75
Figura 21. Temperaturas.................................................................................................75
Figura 22. Resultado por el método de elementos finitos..........................................77
Figura 23. Resultado por el método de elementos de frontera.................................78
Figura 24. Estructura del programa. ..............................................................................79
1 INTRODUCCION

En la solución de problemas de ingeniería se utilizan técnicas de modelación,


simulación y optimización de sistemas mediante la aplicación de métodos
numéricos en programas de computador. Los métodos numéricos para la
modelación y simulación de sistemas físicos que se tratan en este trabajo son
diferencias finitas (FDM), volúmenes finitos (FVM), elementos finitos (FEM) y
elementos de frontera (BEM).

En este trabajo se pretende implementar un programa de computador para cada


uno de los métodos mencionados y resolver un mismo problema con cada uno de
los métodos. Este trabajo permitirá entender el proceso de formulación de cada
método, como se aplica a un problema especifico y como se puede programar en
un lenguaje de computador.

Aunque e n la formulación de los distintos métodos se mostrarán sus fundamentos


matemáticos básicos, no se pretende realizar un análisis matemático completo el
cual incluiría solución analítica, análisis de error y de convergencia. Para el autor,
el propósito de este trabajo esta en entender cada método, sus fundamentos,
similitudes, diferencias, aplicación y forma de programación.
2 ANTECEDENTES

A continuación se reseñan algunos hechos importantes en la historia de los métodos


finitos.

Leonhard Euler (1707-1783) desarrolla un método de diferencias finitas conocido como


método de Euler para hallar la solución aproximada de ecuaciones diferenciales. Sentó
las bases del calculo variacional inventado por los hermanos Bernoulli.

George Green (1793-1841), en 1828 publicó An Essay on the Application of Mathematical


Análisis to the Theories of Electricity and Magnetism . En este ensayo se presenta por
primera vez la expresión “función de potencial” y se presentan las tres identidades del
Teorema de Green, el cual fue utilizado inicialmente para resolver problemas de
electroestática y magnetismo de forma tan exitosa que su uso se extendió para resolver
muchos otros problemas físicos en las áreas de la acústica, elasticidad, dilatación y otras.

Carl Friedrich Gauss (1777-1855), a la edad de 22 años publicó su tesis doctoral


“Fundamental Theorem of Álgebra”, inventó el método de los mínimos cuadrados y lo
utilizó para calcular las orbitas de los planetas. Hizo aportes en la teoría matemática,
electromagnética, óptica, probabilidad, astronomía y geofísica.

Boris Grigorievich Galerkin (1871-1945), desarrolló un Método para realizar


integraciones aproximadas de ecuaciones diferenciales, el cual es conocido como Método
de Galerkin. En 1915 publicó su método del elemento finito basado en el Método de
Galerkin.

Lord Rayleigh (1842 – 1919), Walter Ritz (1879 – 1909) establecieron la aplicación del
método variacional conocido como método Rayleigh-Ritz a problemas de sólidos
elásticos.
A partir de 1940 numerosos investigadores realizan aportes que llevan al desarrollo y uso
difundido del método de los elementos finitos. Hrennikoff en 1941 utilizó el método de
trabajo del marco para solucionar problemas de elasticidad. Courant publicó un artículo
en 1943 donde utiliza la interpolación lineal por partes sobre regiones triangulares para
modelar problemas de torsión. En 1955, Argyris presenta teoremas de energía y métodos
matriciales que permiten expandir la teoría del elemento finito. En 1956, Turner y otros
investigadores obtuvieron matrices de rigidez para armaduras y vigas. Clough retoma el
término elemento finito en 1960. En 1967, Zienkiewicz publica el primer libro sobre
elementos finitos. Alrededor de 1970 se inicio su aplicación a modelos no lineales, se
afianzaron sus bases matemáticas y estudios de convergencia.

Carlos Alberto Brebbia (1948-). El término “Boundary Element” surgió en 1977 al ser
utilizado por simultáneamente por varios autores en la universidad de Southampton.
Brebbia presentó el método de elementos de frontera utilizando la formulación de residuos
ponderados. Brebbia también ha publicado numerosos textos en el tema de elementos
finitos.

En el 2004, una revisión de las referencias a los métodos finitos que se encontraron en
Internet arrojo como resultado 66.237 entradas para el método de los elementos finitos
(FEM); 19.531, para el método de diferencias finitas (FDM); 10.126, para el método de
elementos de frontera (BEM); 1.695, para el método de volúmenes finitos (FVM) y 1.615
para el método de colocación (CM). Con lo cual se observa que el método de mayor
difusión es el método de los elementos finitos.

El profesor Eduard Kansa ha escrito numerosos artículos sobre la solución de


ecuaciones diferenciales mediante métodos numéricos sin grilla basados en funciones de
base radial. A la fecha continua expandiéndose las aplicaciones de los métodos finitos y
anualmente se publican numerosos artículos sobre el tema.
3 CONCEPTOS

3.1 FUNDAMENTOS MATEMÁTICOS

3.1.1 Operadores

Gradiente
∂f ∧ ∂f ∧ ∂f ∧
∇f = i+ j+ k Con f función escalar
∂x ∂y ∂z

Divergencia
∂f x ∂f y ∂f z
∇⋅ F = + + Con F función vectorial
∂x ∂y ∂z

Laplaciano

∂ 2 f x ∂ f y ∂ 2 fz
2

∇ f =
2
+ + Con f función escalar
∂x 2 ∂y 2 ∂z 2

3.1.2 Series de Taylor.

Las series de Taylor son importantes en los métodos de Diferencias Finitas y de


Volúmenes Finitos. Cuando solo se toman los primeros términos de una serie de Taylor
se denominan polinomios de Taylor. Una serie de Taylor permite aproximar el valor de
una función en un punto cercano x alrededor de un punto conocido x0 mediante una
suma de términos obtenidos de la forma:
f ' ' ( xo )
(x − xo )2 + f ( xo ) ( x − xo )3 + ... + f (xo ) (x − xo )n + ...
'' ' n
f ( x) = f ( xo ) + f ( xo ) ( x − xo ) +
'

2! 3! n!
3.1.3 Teoremas de Green e Integración por partes.

Los teoremas o identidades Green permiten reducir la dimensionalidad del problema. Esto
lo hace de dos formas: La primera al permitir transformar una integral de volumen a una
de área y/o una de área a una de línea. La segunda al reducir el orden de las derivadas.
Los teoremas de Green pueden considerarse como casos de integración por partes,
puesto que una integral se descompone en integrales que deben ser más simples de
resolver. Así los teoremas de Green permiten expresar ecuaciones integro diferenciales
de forma más apropiada para su manipulación y solución utilizando métodos numéricos
y/o analíticos.

Se tiene la siguiente expresión inicial:


∂ψ
∫∫φ
Ω ∂x
dxdy

Mediante la regla de integración por partes:

∫ udv = (uv) − (uv )x =a − ∫ vdu


b b
x= b
a a

La integral interna se puede expresar de la siguiente forma:


∂ψ b ∂φ
∫φ dx = (φψ ) x=b − (φψ )x = a − ∫
b
ψdx
a ∂x a ∂x
Reemplazando en la expresión inicial como se observa a continuación:
∂ψ d b ∂φ
∫∫φ dxdy = ∫ [(φψ )x =b − (φψ )x =a ]dy − ∫ ∫
d
ψdxdy
Ω ∂x c c a ∂x

Sea Γ el contorno o frontera del dominio Ω , para un diferencial de frontera dΓ se tiene:


−> ∧ −>
dy = n ⋅ i dΓ = n x dΓ

∫ [(φψ ) − (φψ )x =a ]dy se puede expresar como una integral de línea sobre la
d
El término x= b
c

−> ∧

∫ [(φψ ) − (φψ ) x= a ]dy = ∫ φψ n ⋅ i dΓ y la expresión general queda:


d
frontera Γ así: x= b
c
Γ

∂ψ −> ∧ d b ∂φ
∫∫ φ

∂x
dxdy = ∫ φψ n ⋅ i dΓ − ∫ ∫
Γ
c a ∂x
ψ dxdy
Para la variable y se tiene:

∂ψ −> −> d b ∂φ
∫∫ φ

∂y
dxdy = ∫ φψ n ⋅ j dΓ − ∫ ∫
Γ
c a ∂y
ψ dxdy

Sumando las dos ecuaciones anteriores:


 ∂ψ ∂ψ    − > − > − > −>  d b  ∂φ ∂φ 
∫∫Ω  ∂x ∂y 
φ + φ dxdy = ∫Γ φψ  n ⋅ i + n ⋅ j dΓ − ∫c ∫a  ∂x ψ + ∂y ψ  dxdy

Partiendo del Teorema de la Divergencia de Gauss se puede obtener la primera identidad


o Teorema de Green y la segunda identidad o Teorema Simétrico. Sea el siguiente
Teorema de Gauss donde F es una función vectorial.
−>

∫∫∫ ∇ ⋅ FdV = ∫∫ F ⋅ n dS
V S

Se toma F = φ∇ψ con φ,ψ funciones escalares y se aplica la propiedad de la


divergencia de un escalar por un vector:
∇ ⋅ (φ∇ψ ) = ∇φ ⋅ ∇ψ + φ (∇ ⋅ ∇ψ ) = ∇φ ⋅ ∇ψ + φ ∇ 2ψ ( )
Se reemplaza en el Teorema de Gauss y se obtiene la expresión

∫∫∫ (∇ φ ⋅ ∇ψ + φ (∇ ψ ))dV = ∫∫ (φ∇ψ ) ⋅ n dS


−>
2

V S

Conocida como la primera identidad de Green.


Realizando el mismo procedimiento con F = ψ∇φ se obtiene:

∫∫∫ (∇ φ ⋅ ∇ψ +ψ (∇ φ ))dV = ∫∫ (ψ∇φ ) ⋅ n dS


−>
2

V S

Se restan las dos últimas ecuaciones y se obtiene el teorema simétrico de Green.

∫∫∫ (φ (∇ ψ ) −ψ (∇ φ ))dV = ∫∫ (φ∇ψ −ψ∇φ ) ⋅ n dS


−>
2 2

V S

3.1.4 Integración Gaussiana.

Existen varios métodos de integración numérica para calcular una integral definida de una
función. Entre estos se puede mencionar la regla trapezoidal, las reglas de Simpson y
otras, las cuales están basadas en la división del intervalo de integración en segmentos
iguales y el cálculo de la función en los extremos de cada segmento. Esto conduce a
expresiones conformadas por sumatorias de la evaluación de la función en distintos
puntos del intervalo ponderadas por un valor de peso. Estos métodos aún cuando son
muy fáciles de implementar en muchos casos son ineficientes.
El método de Integración utilizando cuadraturas de Gauss es similar a los anteriores
siendo a la vez eficiente y fácil de implementar. La extensión de este método a dos y tres
dimensiones se puede obtener fácilmente.

1 npg
I = ∫ f (ξ ) dξ ≅ w1 f (ξ1 ) + w 2 f (ξ 2 ) + .... + wn f (ξ n ) = ∑ f (ξ i ) wi
−1 i =1

Donde:
La variable npg indica el número de puntos de Gauss.

Las variables ξ i y wi representan respectivamente los puntos de Gauss y los pesos de


Gauss.
Para el caso en que se requiera integrar una función con respecto a x entre límites
generales a y b se puede emplear el cambio de variable:

x=
a
(1 − ξ ) + b (1 + ξ )
2 2

f (x )dx =
(b − a ) 1 f (x (ξ ))dξ
∫ ∫
b

a 2 −1

Un tratamiento más profundo de este tema se puede consultar en textos de métodos


numéricos (Ver CHAPRA).

3.2 CONCEPTOS FÍSICOS

En esta parte se presentan los conceptos físicos fundamentales asociados a los


problemas de ingeniería que se pretenden resolver mediante los métodos numéricos
finitos.

3.2.1 Propiedades específicas

Una propiedad especifica expresa una cantidad contenida por unidad de masa. Las
propiedades específicas también se llaman propiedades intensivas, en contraposición a
las propiedades extensivas, las cuales expresan la cantidad contenida total. Entre las
propiedades específicas se pueden mencionar las siguientes: volumen específico (v en
m 3/Kg.), entalpía específica (h en KJ/Kg.), entropía específica (s en KJ/Kg.). Las
propiedades específicas generalmente se denotan mediante letras minúsculas.

Si se tiene una propiedad específica f para una sustancia y se multiplica por la densidad
? de la sustancia se obtiene la concentración volumétrica de la propiedad, es decir, la
cantidad contenida por unidad de volumen:

kg φ φ
ρφ[= ] = Donde φ conserva sus unidades originales.
m 3 kg m 3

Entonces la cantidad total dada de una propiedad F se puede expresar de varias formas:

Φ = mφ Para una masa m dada.

Φ = ∫ ρφdV Para un volumen dado.


V

3.2.2 Flujo

El flujo volumétrico consiste en el volumen que atraviesa una superficie dada en la unidad
de tiempo, sus unidades son por lo tanto metros cúbicos por segundo. Sin embargo,
cuando se refiere al flujo por unidad de área se habla de flux. El flux volumétrico es el
volumen que atraviesa una unidad de área en la unidad de tiempo. Si el volumen contiene
una propiedad, se puede calcular el flujo y el flux de esta propiedad. Para el caso
presente se consideraran el flujo volumétrico y el flujo masico.
FlujoVolumentrico = (Velocidad )( Area )

Flujomasico = (Densidad )(Velocidad )( Area )

FlujoGeneral = (ConcentraciónVolumet rica )(Velocidad )( Area )

FlujoP r opiedad = (Densidad )(φ )(Velocidad )( Area )


La concentración volumétrica se refiere a cualquier propiedad específica φ que sea de
interés.
Si se tiene un campo de velocidad sobre una frontera Γ el flujo sobre la frontera esta
dado por la integral:
−>
FlujoVolumetrico = ∫ υ n dΓ = ∫ υ ⋅ n dΓ
Γ Ω

FlujoMásico = ∫ ρυ n dΓ
Γ

Donde υ n es la componente normal de la velocidad sobre la frontera Γ .


Para una propiedad especifica su flujo masico esta dado por:

FlujoMásico = ∫ ρφυn dΓ
Γ

3.3 FUNCIONES DE FORMA E INTERPOLACIÓN

Los métodos numéricos se refieren a las funciones de forma e interpolación en muchos


casos de forma indistinta. La diferencia entre estos términos puede ser sutil y en algunos
casos contextos pueden ser equivalentes, sin embargo, son conceptos distintos. Debido
al uso común de estas funciones en los métodos numéricos se explicará la diferencia
entre estas y se mostrará dos casos básicos. En términos de solución numérica de
ecuaciones diferenciales, se puede decir que las funciones de forma se utilizan para
aproximar la solución de la ecuación diferencial, mientras que las funciones de
interpolación se utilizan para calcular el valor de una variable entre valores conocidos.
Las funciones de forma se utilizan cuando se aproxima una función desconocida mediante
una combinación de funciones se trata de que la forma de la combinación de funciones se
asemeje a la forma de la función desconocida en un dominio dado.
Sea la función desconocida f(x) la cual será aproximada por:
f ( x ) = a1ϕ1 + a2ϕ2 + ... + a nϕn

Las funciones ϕ1, ϕ 2 ,...,ϕ n son llamadas funciones de forma.

Las constantes a1 , a 2 ,....a n son constantes por determinar. La forma como se determinan
estas constantes depende del método numérico empleado, lo cual será visto más
adelante.
Mientras que las funciones de interpolación, son funciones que se utilizan para
determinar el valor de una variable conociendo los valores en los extremos de un dominio
en cualquier número de dimensiones. Por ejemplo, si el dominio es una línea se requiere
conocer dos valores, si el dominio es un plano se requieren al menos tres valores.

Una función de interpolación supone un comportamiento de la variable entre los extremos


del dominio. Este comportamiento se puede suponer:
a) Constante, El valor de la función en cada punto del dominio es igual al valor de un
punto conocido en el dominio.
b) Lineal, El valor de la función en cada punto del dominio varía linealmente entre los
valores conocidos de dos puntos en el dominio.
c) Polinomial. En general, se utiliza la interpolación con polinomios para determinar
los valores de la función en cualquier parte del dominio. Sin que esto quiera decir,
que no se puedan utilizar funciones de otro tipo para interpolar.

En este texto se utilizarán dos clases de interpolación. La interpolación lineal entre dos
puntos e interpolación bidimensional Isoparamétrica. La interpolación lineal entre dos
puntos se aplica en el método de elementos finitos y de elementos de frontera para
evaluar integrales de línea. La interpolación bidimensional se utiliza para calcular
integrales de dominio.

3.3.1 Interpolación lineal

Figura 1. Interpolación lineal.


Se utiliza un polinomio de primer grado para aproximar el comportamiento de la función U:
u( x) = a0 + a1 x
La función debe pasar a través de los valores de u(x) en los puntos x1 y x 2 , entonces se
debe cumplir:
u1 = a0 + a1 x1

u 2 = a0 + a1 x 2
Resolviendo este sistema se obtiene:
u1 x 2 − u 2 x1 u − u1
a0 = a1 = 2
x2 − x1 x 2 − x1
Sustituyendo a 0 y a1 en u( x ) = a0 + a1 x se tiene:

u1 x 2 − u 2 x1 u 2 − u1
u ( x) = + x
x2 − x1 x 2 − x1
Reorganizando los términos:

u1 x2 − u 2 x1 + u 2 x − u1 x x −x x − x1
u ( x) = = 2 u1 + u 2 = N 1u1 + N 2 u2
x2 − x1 x 2 − x1 x2 − x1

x2 − x x − x1
Donde N 1 = y N2 = son las funciones de interpolación.
x2 − x1 x2 − x1

3.3.2 Interpolación lineal bidimensional

Figura 2. Interpolación lineal bidimensional.


 c1 
 
U ( x, y) = c1 + c2 x + c3 y . En forma matricial: U = [1 x y ]c 2 
c 
 3
Para cada punto se debe cumplir:
u1 = c1 + c 2 x1 + c3 y1 u 2 = c1 + c2 x2 + c 3 y2 u3 = c1 + c 2 x 3 + c3 y3

Con lo cual se obtiene el sistema:

1 x1 y1   c1  u1 
1 x y 2  c2  = u 2 
 2

1 x3 y 3  c3  u3 

Por lo tanto: [X ]{C} = {U }

Resolviendo se obtiene: {C} = [X ]−1 {U }

c1   u1 
  u 
Dado que U ( x, y ) = [1 x y ]c 2  se tiene: U ( x, y ) = [1 x y][X ]
−1
 2
c  u 3 
 3
Haciendo [N ] = [1 x y][X ] Es decir [N 1 N 3 ] = [1 x y ][ X ]
−1 −1
N2

Resolviendo el sistema anterior se obtiene:

N1 =
( x 2 y3 − x3 y 2 ) + x ( y 2 − y 3 ) + y( x3 − x2 )
2A

N2 =
( x3 y1 − x1 y3 ) + x( y 3 − y1 ) + y( x1 − x3 )
2A
(x1 y 2 − x2 y1 ) + x ( y1 − y2 ) + y( x2 − x1 )
N3 =
2A
Donde: 2 A = x1 ( y2 − y3 ) + x2 ( y 3 − y1 ) + x3 ( y1 − y 2 ) = det [X ]

Se pueden obtener funciones de interpolación generalizadas a partir de los polinomios de


Lagrange:
n x − xj
Li (x ) = Χ
j =0 xi − x j
j ≠i
Para un tratamiento detallado sobre este tema se puede consultar el texto de O.C.
Zienkiewicz.

3.4 MÉTODO DE GALERKIN.

El método de Galerkin es un método para resolver ecuaciones diferenciales. Se basa en


la integración de los residuos ponderados sobre un intervalo. Este método se fundamenta
en la teoría de funciones ortogonales.
Uno de los métodos para resolver ecuaciones diferenciales consiste en suponer que su
solución se puede aproximar mediante los términos de una suma de funciones. El método
de Galerkin se aplica de la siguiente manera:
Por ejemplo sea la siguiente ecuación:
∇ 2u = b

Se elige una función de la forma: u( x, y) = α 1φ1 + α 2 φ 2 + ... + α n φ n que aproxima u .

Donde los coeficientes α 1, α 2 ,...,α n son coeficientes por determinar.

Las funciones φ1 ,φ 2 ,...,φ n llamadas funciones de forma, deben satisfacer las condiciones
de frontera impuestas al problema.

Como u (x, y ) aproxima la solución de la ecuación, entonces ∇ 2 u− b = R es igual aun
_

residuo R diferente de cero. Si la función representa adecuadamente la solución este será


muy cercano a cero y para algunos casos podrá ser cero.
A continuación se pondera el residuo R multiplicándolo por una función de peso φi y se

integra sobre el dominio.


 2_ 


Rφ i d Ω = ∫  ∇ u− b φi dΩ = 0 Para i = 1,2, …, n.
Ω

Por esta razón en un método de residuos ponderados.


Por cada función de peso se obtiene una ecuación integral así:

∫ (∇ (α φ ) )
+ α 2 φ 2 + ... + α n φ n − b φ1 dΩ = 0
2
1 1

∫ (∇ (α φ ) )
+ α 2φ 2 + ... + α nφ n − b φ 2dΩ = 0
2
1 1

∫ (∇ (α φ ) )
+ α 2φ 2 + ... + α nφ n − b φ n dΩ = 0
2
1 1

Con lo cual después de realizar las operaciones necesarias se obtiene un sistema de


ecuaciones algebraicas simultaneas que puede ser resuelto por cualquier procedimiento
estándar, para hallar los coeficientes: α 1 , α 2 ,..., α n .
El método de Galerkin es solo uno de los métodos residuales que pueden ser aplicados.
Entre otros métodos residuales se mencionan como referencia el método de colocación,
el método de mínimos cuadrados y el método de subdominios. Ver KAPLAN.

3.5 ECUACIONES DE LAPLACE Y POISSON

El problema del potencial se presenta cuando se requiere resolver problemas de


transferencia de calor, procesos de difusión, movimiento de fluidos, etc. Generalmente
estos problemas se pueden describir mediante la ecuación ∇ 2 u = b , la cual es conocida
como ecuación de Poisson. Cuando se tiene el término b = 0 , entonces se llama ecuación

de Laplace: ∇ 2u = 0

La solución teórica de la ecuación de Laplace es sencilla de obtener, mientras que para la


ecuación de Poisson su solución teórica es muy dispendiosa y en muchas ocasiones solo
se puede hallar para casos sencillos. La solución de estas ecuaciones consisten en hallar
el valor del potencial u (sea temperatura, presión, concentración, voltaje, etc.) en cada
punto del espacio para el dominio considerado. Una vez que se conoce el potencial se
puede calcular el flujo correspondiente. A continuación se muestran algunas
transformaciones útiles de la ecuación de Poisson :

∇ 2 u = b en O (3.5.1)

∫ (∇ u − b )wdΩ = 0
2
(3.5.2.)

∫ ∇ (u )wdΩ − ∫ bwdΩ = 0
2
(3.5.3.)
Ω Ω
Integrando por partes el primer termino utilizando la primera identidad de Green vista en el
numeral 3.1.3 se obtiene:

∫ (∇ u) wdΩ = ∫ w∇udΓ − ∫ ∇u∇wdΩ


2
(3.5.4.) sustituyendo en (3.5.3.)
Ω Γ Ω

∫ w∇udΓ − ∫ ∇u∇wdΩ − ∫ bwdΩ = 0


Γ Ω Ω
(3.5.5.)

Reordenando la expresión (3.5.5) se obtiene la ecuación inicial para el desarrollo de los


elementos finitos:

∫ ∇u∇wdΩ = ∫ w ∇udΓ − ∫ bwd Ω


Ω Γ Ω
(3.5.6.)

Integrando nuevamente por partes el término



∫ ∇u∇wdΩ se tiene:
∫ ∇u∇wdΩ = ∫ (∇w )udΓ − ∫ (∇ w )udΩ
2
(3.5.7.)
Ω Γ Ω

Reemplazando en la ecuación (3.5.5.) se tiene:

∫ w∇udΓ − ∫ (∇w)udΓ + ∫ (∇ w)udΩ − ∫ bwdΩ = 0


2
(3.5.8.)
Γ Γ Ω Ω

La expresión (3.5.8.) es equivalente a la (3.5.3.) por lo que

∫ ∇ (u)wdΩ − ∫ bwdΩ = ∫ w∇udΓ − ∫ (∇w)udΓ + ∫ (∇ w)udΩ − ∫ bwdΩ


2 2
(35.9.)
Ω Ω Γ Γ Ω Ω

Se cancelan los términos iguales a ambos lados

∫ ∇ (u )wdΩ = ∫ w∇udΓ − ∫ (∇w)udΓ + ∫ (∇ w)udΩ


2 2
(3.5.10)
Ω Γ Γ Ω

Reorganizando y agrupando se obtiene la segunda identidad de Green:

∫ (w∇ u − u∇ 2 w dΩ = ) ∫ (w∇u − u∇w)dΓ


2
(3.5.11.)
Ω Γ

La cual es el punto de partida para el desarrollo de los métodos de integrales de frontera.


4 MÉTODOS FINITOS

En este punto se puede preguntar por que son necesarios los métodos finitos para
resolver un problema. La respuesta reside en que a menudo es la única forma de resolver
el sistema sin tener que construirlo físicamente. Las soluciones analíticas exactas para las
ecuaciones que gobiernan muchos fenómenos solo se pueden obtener para problemas en
los cuales se hacen supuestos y se simplifican algunas restricciones con relación a la
geometría, propiedades del material y condiciones de frontera. Por lo cual no queda otra
opción que recurrir a métodos numéricos de solución en situaciones donde tales
simplificaciones no son posibles.

En la solución de problemas mediante técnicas de métodos finitos normalmente existen


varios pasos que son comunes: Preparación del problema (Preprocesamiento), Solución
del sistema (Procesamiento) y Análisis y presentación de resultados (Postprocesamiento)

En la preparación del problema se debe decidir una forma de representar el objeto de tal
manera que se pueda verificar el planteamiento del problema, que permita su
manipulación mediante rutinas de computador, que reduzca el número de calculo
necesarios mediante el aprovechamiento de simetrías y que su procesamiento sea
eficiente. Los métodos finitos implican una discretización del sistema u objeto del estudio
en el cual la naturaleza continúa e infinitos grados de libertad del mismo es representada
por un conjunto finito de elementos cada uno con un número limitado de grados de
libertad. La representación discreta del problema implica una descripción precisa de la
geometría del sistema, las propiedades del mismo y las condiciones a las cuales esta
sometido, para lo cual se utilizan elementos geométricos tales como puntos, líneas ,
polígonos y volúmenes. Las líneas, superficies y volúmenes se determinan con sus
puntos, sus coordenadas, matrices de conectividad y propiedades. Existen programas que
permiten tomar dibujos o esquemas del sistema para convertirlos en una malla de puntos
y a partir de ellos generar automáticamente la descripción del sistema incluyendo,
geometría, conectividad o topología, condiciones del sistema, propiedades de los
materiales, etc. Estos programas se conocen con el nombre de malladores.

La preparación del problema tiene como resultado un sistema algebraico de ecuaciones


que sirve como insumo de entrada para el procesamiento o solución del sistema, el cual
se puede realizar por métodos directos o iterativos. Cuando se trata de problemas de
poco tamaño, los métodos directos son inmediatos. Sin embargo para problemas de gran
tamaño a menudo la única alternativa viables son los métodos iterativos. El método de
solución también depende de la forma de almacenamiento de la matriz del sistema
algebraico de ecuaciones resultante. La matriz se puede almacenar en forma compacta o
como una matriz dispersa. El número de variaciones a este respecto resulta muy grande.

En el procesamiento posterior, se toma como insumo la solución obtenida en el paso


anterior y se efectúan cálculos adicionales. Incluso puede repetirse todo el proceso de
solución variando las condiciones para realizar análisis de sensibilidad u optimizar el
sistema. Los sistemas de post procesamiento cuentan con facilidades que permite desde
imprimir un simple reporte con los datos hasta diagramas y visualizaciones animadas y
gráficas para la solución del sistema.

En el comercio se pueden encontrar desde aplicaciones que incluyen todos las etapas de
preparación, solución y procesamiento posterior hasta programas especializados en una
sola de estas etapas. Desde aplicaciones que solo reciben formatos texto hasta
aplicaciones que reciben y entregan imágenes en formato gráfico.
4.1 PROBLEMA DE TRABAJO

El problema de trabajo es el ejemplo que permitirá comparar los distintos métodos. Se


desea determinar la distribución de temperaturas de una placa rectangular metálica en
condiciones de estado estable sometida a condiciones de temperatura y flujo de calor en
sus fronteras. Las dimensiones de la placa son 6.0 m x 6.0 m . El material de la placa es
isotrópico y su coeficiente de conductividad es k = 1.0 W / m ⋅ K . En el lado izquierdo se
tiene una temperatura de 300° C y en el lado derecho 0° C. En la parte superior e inferior
se tiene un flujo de calor de 10.0 W / m . Se puede asumir que la placa tiene una unidad
de profundidad, en cuyo caso el flujo de calor sería 10.0 W / m 2 .

q = 10
(0,6) (6,6)

Placa metalica
T = 300 °C T = 0 °C

b = -5

(0,0) (6,0)
q = 10

Figura 3. Problema de trabajo.

Los flujos de calor en los lados o fronteras superior e inferior es de 10 unidades por
unidad y sus signos positivos significan que este calor esta saliendo de la placa. El valor
de la generación interna b significa que por cada unidad de área se generan 10 unidades
de calor y este debe salir de la placa. En términos matemáticos se tiene:
∂ 2T ∂ 2T
k∇ 2T ( x, y) = k x + k = b Tal que: b = −5 y k = k x = k x = 1
∂x 2 ∂y 2
y

Con condiciones de frontera: T (0 , y) = 300 , T (6 , y) = 0 ,  ∂T   ∂T 


= 10 ,   = 10
 ∂ y  x =0  ∂y  x =6
Para 0 ≤ x ≤ 6 y 0 ≤ y ≤ 6
4.2 DIFERENCIAS FINITAS

4.2.1 Formulación

El método de diferencias finitas se basa en asignar puntos espaciados de manera


apropiada sobre el dominio y aplicar las ecuaciones constitutivas correspondientes del
fenómeno a cada punto. El método de diferencias finitas tiene como punto de partida las
series de Taylor. Sea x un punto cercano al punto x i , tal que x = xi + h , y sea f ( x ) el

valor de una función en el punto x . Entonces f ( x ) se puede aproximar mediante una

serie de Taylor alrededor del punto xi , de la siguiente manera:

f ( xi + h) = f ( xi ) + f 1 ( xi )h + (xi )h 2 + 1 (xi )h 3 + ... + 1 ( xi )h n + ...


1 2 3 n
f f f (1)
2! 3! n!
Donde f k
(xi ) representa la k-esima derivada de la función f(x) evaluada en el punto xi .

Si se evalúa f ( x ) en x = xi − h , se obtiene:

f ( xi − h ) = f ( xi ) − f 1 (xi )h +
1
f 2
( xi )h 2 − 1 f 3 (x i )h 3 + ... +
(− 1)n f n
(x i )h n + ... (2)
2! 3! n!
Tomando las ecuaciones (1) y (2) hasta el segundo termino se llega a (3) y (4):
f ( xi + h) = f ( xi ) + f 1 ( xi )h (3) f ( xi − h ) = f ( xi ) − f 1
(xi )h (4)

Se despeja f 1 ( xi ) en (3) y (4) se obtiene:

f (x i + h ) − f ( xi )
f 1 ( xi ) = (5) Ecuación diferencia finita hacia adelante
h
f ( xi ) − f (x i − h )
f 1 ( xi ) = (6) Ecuación diferencia finita hacia atrás.
h
Si se resta (3) y (4) se obtiene:
f ( xi + h) − f ( xi − h) = 2 f 1 ( xi )h

Despejando f 1 ( xi ):

f ( xi + h) − f (x i − h )
f 1 ( xi ) = (7) Ecuación diferencia finita central.
2h
Para hallar la ecuación en diferencias finitas de la segunda derivada se toma el polinomio
de Taylor hasta el término de segundo orden en las ecuaciones (1) y (2):
1
f ( xi + h) = f ( xi ) + f 1 ( xi )h + f 2
(xi )h 2 (8)
2!

f ( xi − h) = f ( xi ) − f 1 (xi )h + ( xi )h 2
1 2
f (9)
2!
Sumando (8) y (9):
f ( xi + h) + f (xi − h) = 2 f ( xi ) + f 2
(xi )h 2
Despejando f 2
( xi ) se tiene la aproximación de la segunda derivada en diferencias
finitas:
f ( xi + h ) − 2 f ( xi ) + f ( xi − h )
f 2 ( xi ) =
h2
En el caso de dos dimensiones la ecuación de Laplace es:

∂ 2T ∂ 2T
k∇ 2T ( x, y ) = k + k =0
∂x 2 ∂y 2
El coeficiente de conductividad térmica k para un material isotrópico es igual en ambas
direcciones. Este desaparece al ser tomado como factor común y pasado al lado derecho.
Otra interpretación es que este coeficiente toma el valor de unitario k = 1 .

∂ 2T ∂ 2T
∇ 2 T ( x, y ) = + =0
∂x 2 ∂y 2

∂ 2T ∂ 2T
Se aproxima el término y mediante diferencias finitas:
∂x 2 ∂y 2

∂ 2 T T (x i + h ) − 2T ( x i ) + T ( xi − h)
=
∂x 2 h2
∂ 2T T ( yi + h ) − 2T ( yi ) + T ( yi − h)
=
∂y 2 h2

∂ 2T ∂ 2T T (xi + h ) − 2T ( xi ) + T ( xi − h) T ( y i + h) − 2T ( y i ) + T ( yi − h)
+ = + =0
∂x 2 ∂y 2 hx
2
hy
2

T ( xi + h) − 2T ( xi ) + T (xi − h) T ( y i + h) − 2T ( y i ) + T ( yi − h)
2
+ 2
=0
hx hy
Para el caso de la ecuación de Poisson:
∂ 2T ∂ 2T
k∇ T ( x, y) = k x
2
+ ky =b
∂x 2 ∂y 2
Si el material es isotrópico los coeficientes de conductividad térmica son iguales kx = ky y
la ecuación se puede expresar:

∂ 2T ∂ 2T b
∇ 2 T ( x, y ) = + =
∂x 2 ∂y 2 k
Su expresión en diferencias finitas esta dada por:

T ( xi + hx ) − 2T ( x i ) + T ( xi − hx ) T (y i + hy ) − 2T ( yi ) + T ( yi − hy ) b
2
+ 2
=
hx hy k
Si se toman incrementos hx y hy de igual tamaño h se tiene:

T ( xi + h) + T (xi − h) + T ( y i + h ) + T ( yi − h) − 4T ( xi ) = h 2
b
k
En este punto se introduce una convención para simplificar la notación. Para cada punto o
nodo del dominio se debe establecer una ecuación. En el caso bidimensional cada punto
esta rodeado máximo por cuatro nodos vecinos los cuales se denominaran con
subíndices de acuerdo a su posición relativa al nodo de referencia, con los subíndices n –
norte, w- oeste, s – sur, e – este.

Así:
xe = (x i + h ) , x w = (xi − h) , y n = ( y i + h ), y s = ( yi − h ) y

Te = T ( xe ) Tw = T (xw ) Tn = T ( yn ) T s = T ( ys ) Ti = T ( xi )

Entonces para un punto i dado su ecuación sería:


b
Ts + Te + Tn + Tw − 4Ti = h 2
k
4.2.2 Aplicación.
q = 10

10 9 8 7

11 16 6
15

T = 300 °C b = -5 T = 0 °C

12 13 14 5

2 3 4
1

q = 10

Figura 4. División del dominio en diferencias finitas.

Observe que S, E, N, W son relativos para cada nodo. Como ilustración para el nodo 5; S
es el nodo 4, W es el nodo14, N es el nodo 6. Como el nodo 5 es un nodo de frontera en
el lado derecho el nodo E relativo al nodo 5 no existe. Mientras que para el nodo 12, es un
nodo de frontera en el lado izquierdo por lo tanto el nodo W no existe, S es el nodo 1, E es
el nodo 13 y N es el nodo 11.

Las ecuaciones para los nodos son las siguientes:


Nodo 1: T1 = 300 Temperatura conocida.

Nodo 2: T s + Te + T n + T w − 4T2 = h 2 b
Observe que para el nodo 2 se especifica una condición de flujo y que el nodo en la
posición s es un nodo virtual por no existir. En este caso se aplica la Ley de Fourier del
calor entre el nodo norte y sur con el fin de despejar Ts y reemplazarlo en la ecuación. Por
lo tanto aproximando se tiene:
Tn − Ts
=q ==> Ts = Tn − q * 2h
2h
Remplazando Ts en la ecuación inicial del nodo 2:
Tn − 10 * 2h + Te + Tn + Tw − 4T2 = h 2b
Entonces la ecuación para el nodo 2 queda:
T n + T e + Tn + Tw − 4T 2 = h 2 b + q * 2h
Reemplazando valores:
2T n + Te + T w − 4T 2 = 2 2 ( −5) + 10 * 2( 2)

Nodo 3: 2T n + Te + T w − 4T 3 = 2 2 ( −5) + 10 * 2( 2) Caso similar al del nodo 2.

Nodo 4: T4 = 0 Temperatura conocida.

Nodo 5: T5 = 0 Temperatura conocida.

Nodo 6: T6 = 0 Temperatura conocida.

Nodo 7: T7 = 0 Temperatura conocida.

Nodo 8: 2T s + Te + T w − 4T8 = 2 2 ( −5) + 10 * 2( 2) Caso similar al del nodo 2.

Nodo 9: 2T s + Te + T w − 4T9 = 2 2 (− 5) + 10 * 2(2) Caso similar al del nodo 2.

Nodo 10: T10 = 300 Temperatura conocida.

Nodo 11: T11 = 300 Temperatura conocida.

Nodo 12: T12 = 300 Temperatura conocida.

Nodo 13: T s + Te + T n + Tw − 4T13 = h 2 b

Nodo 14: T s + Te + T n + Tw − 4T14 = h 2 b

Nodo 15: T s + Te + T n + Tw − 4T15 = h 2 b

Nodo 16: T s + Te + T n + Tw − 4T16 = h 2 b


El anterior sistema de ecuaciones produce el siguiente problema matricial:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T1 300
1 -4 1 0 0 0 0 0 0 0 0 0 2 0 0 0 T2 20
0 1 -4 1 0 0 0 0 0 0 0 0 0 2 0 0 T3 20
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 T4 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 T5 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 T6 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 T7 0
0 0 0 0 0 0 1 -4 1 0 0 0 0 0 2 0 T8 20
0 0 0 0 0 0 0 1 -4 1 0 0 0 0 0 2 T9 20
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 T10 300
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 T11 300
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 T12 300
0 1 0 0 0 0 0 0 0 0 0 1 -4 1 0 1 T13 -20
0 0 1 0 1 0 0 0 0 0 0 0 1 -4 1 0 T14 -20
0 0 0 0 0 1 0 1 0 0 0 0 0 1 -4 1 T15 -20
0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 -4 T16 -20
Figura 5. Sistema matricial para diferencias finitas.
El cual al ser resuelto entrega los siguientes valores para las temperaturas T:
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16
300 200 100 0 0 0 0 100 200 300 300 300 210 110 110 210

4.2.3 Programación

En esta subrutina el ciclo externo se utiliza para recorrer todos los nodos Do I = 1,nn
Por cada nodo existe una fila y una columna en la matriz H, de acuerdo con la condición y
ubicación de cada nodo se establecen los coeficientes de la matriz H y los coeficientes del
lado derecho en el vector B.
Las condiciones del nodo pueden ser 0 - Potencial conocido, 1 - Flujo conocido, 2 - No se
conoce el flujo ni el potencial. Estas condiciones fueron leídas del archivo de entrada y se
colocaron en el vector Condición.
Las instrucciones Select Case e If colocan los coeficientes correspondientes para cada
nodo de acuerdo con la ecuación planteada para cada nodo como se muestra
anteriormente.
Una vez que se procesan todos los nodos la matriz H y el vector B contienen los valores
del problema para formar el sistema HX = B, el cual se resuelve mediante la llamada de la
función ResolverSistema(H,X,B), donde los valores calculados de las temperaturas
quedan en el vector X.
Los arreglos S(I), E(I), N(I) y W(I), indican respectivamente el nodo que se encuentra al
sur, al este, al norte y al oeste del nodo I, el cual es el nodo que se esta procesando. Esta
información se lee del archivo de datos de entrada.

El siguiente es el código del programa que implementa el método de las diferencias


finitas:

SUBROUTINE DiferenciasFinitas
INTEGER I,J
REAL Delta
WRITE(*,*) "Método de Diferencias Finitas"
ALLOCATE(H(nn,nn),B(nn),X(nn))
H=0
B=0
X=0
Delta = XF(2) - XF(1) !Se supone una malla uniforme
DO I = 1,nn
SELECT CASE (Condicion(I))
CASE (0) !Potencial conocido
H(I,I) = 1
B(I) = V(I)
CASE (1) !Flujo conocido
IF (S(I) == 0) THEN
H(I,I) = -4.0
H(I,N(I)) = 2.0
H(I,W(I)) = 1.0
H(I,E(I)) = 1.0
B(I) = 2*V(I)*Delta + Constante*(Delta**2)
END IF
IF (N(I) == 0) THEN
H(I,I) = -4.0
H(I,S(I)) = 2.0
H(I,W(I)) = 1.0
H(I,E(I)) = 1.0
B(I) = 2*V(I)*Delta + Constante*(Delta**2)
END IF
IF (E(I) == 0) THEN
H(I,I) = -4
H(I,W(I)) = 2.0
H(I,S(I)) = 1.0
H(I,N(I)) = 1.0
B(I) = 2*V(I)*Delta + Constante*(Delta**2)
END IF
IF (W(I) == 0) THEN
H(I,I) = -4
H(I,E(I)) = 2.0
H(I,S(I)) = 1.0
H(I,N(I)) = 1.0
B(I) = 2*V(I)*Delta + Constante*(Delta**2)
END IF
CASE (2) !Valor desconocido
H(I,I) = -4.0
H(I,S(I)) = 1.0
H(I,E(I)) = 1.0
H(I,N(I)) = 1.0
H(I,W(I)) = 1.0
B(I) = Constante*(Delta**2)
END SELECT
END DO
CALL ImprimirMatriz(H)
CALL WRRRN ('B', 1, UBOUND(B), B, 1, 0) !Imprime el vector solución B
CALL ResolverSistema(H,X,B)
DEALLOCATE(S,E,N,W,XF,YF,Condicion,V,H,B)
END SUBROUTINE
4.3 VOLÚMENES FINITOS

4.3.1 Formulación

Este se puede obtener de la ponderación de residuos con la función de pesos w = 1 y


aplicar el teorema de la divergencia de Gauss. Lo cual es equivalente a dividir el dominio
en volúmenes de control y aplicar un balance de conservación a cada volumen.
∇2u = b Ecuación de Poisson.

∫ (∇ u − b )wdΩ = 0
2
Ponderación de residuos.

Para el método de los volúmenes finitos se toma w = 1 como función de ponderación.

∫ (∇ u )dΩ = ∫ bdΩ
2

Ω Ω

Por definición del Laplaciano el término del lado izquierdo se puede expresar:

∫ (∇ u )dΩ = ∫ ∇ ⋅ (∇u )Ω
2

Ω Ω

Por el teorema de la divergencia de Gauss:

 −>

∫Ω ∇ ⋅ (∇u )d Ω = ∫s  n ds
 ∇ u ⋅

 −>
  ∂u 
 ds Hasta el momento se
Por definición de derivada direccional: ∫s 
 ∇u ⋅ n 

ds = ∫  −> 
s∂ n 

tiene:

 ∂u 
∫s  −> ds = ∫Ω bdΩ
∂ n 

Debido a que el dominio se dividió en volúmenes rectangulares se separa la integral en i


dominios, para cada uno de los cuales su frontera consta de cuatro segmentos j = 1, 2, 3,
4.

 ∂u   
ds = ∑  ∂u ds
4

∫s  −>  i j=1 Γ∫  −>  i
i ∂ n  i,j  ∂ n 
 ∂u 
 ds = u j − ui L(Γ )
∫  −>  i h
Γi , j  ∂ n 
i, j Con j = W, E, N, S.

Para la región bidimensional i la ecuación de balance queda así:


?x

W E ?y
i

Figura 6. Convención para los nodos.

uW − u i u − ui u − ui u − ui
∆y + E ∆y + S ∆x + N ∆x = b∆x∆y
∆x ∆x ∆y ∆y
Donde b es la generación interna por unidad del dominio en la región i.

4.3.2 Aplicación

q = 10

10 9 8 7

11 16 15 6

T = 300 °C b = -5 T = 0 °C

12 13 14 5

1 2 3 4

q = 10

Figura 7. División del dominio en volúmenes finitos.


En este caso los nodos han pasado a ser el centro de una región del dominio para cada
una de las cuales se aplica la ecuación de balance.

Volumen 1: T1 = 300 Temperatura conocida (Condición de frontera).


Volumen 2:

(Tw − T2 ) ∆ y + (Te − T2 ) ∆ y − q∆ x +
(Tn − T2 ) ∆ x  ∆y 
= −b∆x 
∆x 2 ∆x 2 ∆y  2 
∆ x = ∆ y = ∆ Malla uniforme

(Tw − T2 ) 1 (Te − T2 ) 1 (Tn − T2 )  ∆y 


+ − q∆ x + = − b∆x 
2 2  2 

1 1 1 1 ∆2
Tw − T2 + Te − T2 + Tn − T2 = q∆ x + b
2 2 2 2 2
1 1 ∆2
Tw + Te + Tn − 2T2 = q∆ + b
2 2 2
1 1 ∆2
Volumen 3: Tw + Te + T n − 2T3 = q∆ + b
2 2 2
Volumen 4: T4 = 0 Temperatura conocida (Condición de frontera).

1 1 ∆2
Volumen 5: Ts + Tw + Tn − 2T5 = q∆ + b
2 2 2
1 1 ∆2
Volumen 6: Ts + Tw + Tn − 2T6 = q∆ + b
2 2 2
Volumen 7: T7 = 0 Temperatura conocida (Condición de frontera).

1 1 ∆2
Volumen 8: T s + Te + Tw − 2T8 = q∆ + b
2 2 2
1 1 ∆2
Volumen 9: Ts + Te + Tw − 2T9 = q∆ + b
2 2 2
Volumen 10: T10 = 0 Temperatura conocida (Condición de frontera).

1 1 ∆2
Volumen 11: Ts + Te + Tn − 2T11 = q∆ + b
2 2 2
1 1 ∆2
Volumen 12: Ts + Te + Tn − 2T12 = q∆ + b
2 2 2
Volumen 13: T s + Te + T n + Tw − 4T13 = b∆2

Volumen 14: T s + Te + T n + Tw − 4T14 = b∆2

Volumen 15: T s + Te + T n + Tw − 4T15 = b∆ 2

Volumen 16: Ts + Te + Tn + Tw − 4T16 = b∆2

Al sustituir los valores se obtiene el siguiente sistema de ecuaciones:


C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 C 9 C10 C11 C12 C13 C14 C15 C16
R1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T1 300
R2 0.5 -2 0.5 0 0 0 0 0 0 0 0 0 1 0 0 0 T2 10
R3 0 0.5 -2 0.5 0 0 0 0 0 0 0 0 0 1 0 0 T3 10
R4 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 T4 0
R5 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 T5 0
R6 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 T6 0
R7 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 T7 0
R8 0 0 0 0 0 0 0.5 -2 0.5 0 0 0 0 0 1 0 T8 10
R9 0 0 0 0 0 0 0 0.5 -2 0.5 0 0 0 0 0 1 T9 10
R10 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 T1 0 300
R11 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 T1 1 300
R12 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 T1 2 300
R13 0 1 0 0 0 0 0 0 0 0 0 1 -4 1 0 1 T1 3 -20
R14 0 0 1 0 1 0 0 0 0 0 0 0 1 -4 1 0 T1 4 -20
R15 0 0 0 0 0 1 0 1 0 0 0 0 0 1 -4 1 T1 5 -20
R16 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 -4 T1 6 -20

Figura 8. Sistema matricial para volúmenes finitos.

4.3.3 Programación

Esta subrutina es muy similar al método anterior debido a que el número de puntos,
geometría y ecuaciones también resultan ser similares. El número de instrucciones
condicionales para tener en cuenta las condiciones de frontera aumenta. Con estos se
pretende saber si el volumen se encuentra ubicado en una esquina, en un lado o en el
medio, en cuyo caso los coeficientes asignados a cada variable son diferentes.

SUBROUTINE VolumenesFinitos
INTEGER I,J
REAL Delta
WRITE(*,*) "Metodo de Diferencias Finitas"
ALLOCATE(H(nn,nn),B(nn),X(nn))
H=0
B=0
X=0
Delta = XF(2) - XF(1) !Se supone una malla uniforme
DO I = 1,nn
SELECT CASE (Condicion(I))
CASE (0) !Potencial conocido
H(I,I) = 1
B(I) = V(I)
CASE (1) !Flujo conocido
IF (S(I) == 0 .AND. W(I) == 0) THEN
H(I,I) = -1.0
H(I,N(I)) = 0.5
H(I,E(I)) = 0.5
B(I) = V(I)*Delta + Constante*(Delta**2)/4
END IF
IF (S(I) == 0 .AND. E(I) == 0) THEN
H(I,I) = -1.0
H(I,N(I)) = 0.5
H(I,W(I)) = 0.5
B(I) = V(I)*Delta + Constante*(Delta**2)/4
END IF
IF (N(I) == 0 .AND. W(I) == 0) THEN
H(I,I) = -1.0
H(I,S(I)) = 0.5
H(I,E(I)) = 0.5
B(I) = V(I)*Delta + Constante*(Delta**2)/4
END IF
IF (N(I) == 0 .AND. E(I) == 0) THEN
H(I,I) = -1.0
H(I,S(I)) = 0.5
H(I,W(I)) = 0.5
B(I) = V(I)*Delta + Constante*(Delta**2)/4
END IF
IF (E(I) == 0 .AND. S(I) /= 0 .AND. N(I) /= 0 .AND. W(I) /= 0) THEN
H(I,I) = -2
H(I,W(I)) = 1.0
H(I,S(I)) = 0.5
H(I,N(I)) = 0.5
B(I) = V(I)*Delta + Constante*(Delta**2)/2
END IF
IF (E(I) /= 0 .AND. S(I) == 0 .AND. N(I) /= 0 .AND. W(I) /= 0) THEN
H(I,I) = -2
H(I,W(I)) = 0.5
H(I,E(I)) = 0.5
H(I,N(I)) = 1.0
B(I) = V(I)*Delta + Co nstante*(Delta**2)/2
END IF
IF (E(I) /= 0 .AND. S(I) /= 0 .AND. N(I) == 0 .AND. W(I) /= 0) THEN
H(I,I) = -2
H(I,W(I)) = 0.5
H(I,S(I)) = 1.0
H(I,E(I)) = 0.5
B(I) = V(I)*Delta + Constante*(Delta**2)/2
END IF
IF (E(I) /= 0 .AND. S(I) /= 0 .AND. N(I) /= 0 .AND. W(I) == 0) THEN
H(I,I) = -2
H(I,E(I)) = 1.0
H(I,S(I)) = 0.5
H(I,N(I)) = 0.5
B(I) = V(I)*Delta + Constante*(Delta**2)/2
END IF
CASE (2) !Valor desconocido
H(I,I) = -4.0
H(I,S(I)) = 1.0
H(I,E(I)) = 1.0
H(I,N(I)) = 1.0
H(I,W(I)) = 1.0
B(I) = Constante*(Delta**2)
END SELECT
END DO
CALL ImprimirMatriz(H)
CALL ResolverSistema(H,X,B)
DEALLOCATE(S,E,N,W,XF,YF,Condicion,V,H,B)
END SUBROUTINE

4.4 ELEMENTOS FINITOS

4.4.1 Formulación

Consiste en un método de Garlerkin, en el cual las funciones de forma son funciones


polinómicas por tramos (“Piecewise”). Para discretizar la ecuación de Poisson según el
método de los elementos finitos se procede de la siguiente manera:
∇ 2 u = b en O (4.4.1)

∫ (∇ u − b )wdΩ = 0
2
(4.4.2.)

∫ ∇ (u )wdΩ − ∫ bwdΩ = 0
2
(4.4.3.)
Ω Ω

Integrando por partes el primer termino utilizando la primera identidad de Green

∫ (∇ u) wd Ω = ∫ w ∇u ⋅ dΓ − ∫ ∇u ⋅ ∇wd Ω
2
(4.4.4.) sustituyendo en (4.4.3.)
Ω Γ Ω

∫ w∇u ⋅ dΓ − ∫ ∇u ⋅ ∇ wdΩ − ∫ bwdΩ = 0


Γ Ω Ω
(4.4.5.) reordenando se obtiene la ecuación

inicial para el desarrollo de los elementos finitos:

∫ ∇u ⋅ ∇ wdΩ = ∫ w∇u ⋅ dΓ − ∫ bwdΩ


Ω Γ Ω
(4.4.6.)

El método de los elementos finitos requiere por ser un método de Galerkin que las
funciones de peso sean iguales a las de forma. Para que sea un método de elementos
finitos se requiere que sean polinómicas por tramos. Las funciones de interpolación
cumplen estas condiciones. En este caso se utilizaran funciones lineales de interpolación
para elementos lineales triangulares.

Se supone que la solución para u admite la siguiente forma:


u = u1 N 1 + u2 N 2 + u3 N 3
Las funciones de peso w corresponden a:
w1 = N 1 w2 = N 2 w3 = N 3

Para un elemento triangular las funciones de interpolación

N1 =
( x 2 y3 − x3 y 2 ) + x ( y 2 − y 3 ) + y (x3 − x2 )
2A
( x3 y1 − x1 y3 ) + x( y 3 − y1 ) + y( x1 − x3 )
N2 =
2A

N3 =
(x1 y 2 − x2 y1 ) + x ( y1 − y2 ) + y( x2 − x1 )
2A
Como x1, x2, x3 , y1, y2, y3 son permanecen constantes para cada elemento se puede
remplazar:
a1 = ( x2 y 3 − x 3 y2 ) b1 = ( y 2 − y 3 ) c1 = (x3 − x 2 )

a 2 = (x3 y1 − x1 y 3 ) b2 = ( y3 − y1 ) c2 = ( x1 − x3 )

c3 = (x1 y 2 − x 2 y1 ) b3 = ( y1 − y 2 ) c3 = ( x2 − x1 )
Con lo cual:
N 1 = (a1 + b1 x + c1 y ) / (2 A )
N 2 = (a2 + b2 x + c2 y ) / (2 A )
N 3 = (a3 + b3 x + c3 y ) / (2 A )

 a1 a2 a3 
Expresado en forma matricial: [N ] = 1 [1 x y] b1 b2 b3 
2A  
 c1 c2 c3 
La expresión ∫ ∇u ⋅ ∇ wdΩ = ∫ w ∇u ⋅ dΓ − ∫ bwd Ω
Ω Γ Ω
entonces se obtiene una ecuación

integral por cada función de peso, así:

∫ ∇(u N

1 1 + u 2 N 2 + u 3 N 3 )∇N 1 dΩ = ∫ N 1 ∇(u1 N 1 + u 2 N 2 + u3 N 3 )dΓ − ∫ bN1 dΩ (4.4.7)
Γ Ω

∫ ∇(u N

1 1 + u 2 N 2 + u 3 N 3 )∇ N 2 dΩ = ∫ N 2∇ (u1 N 1 + u 2 N 2 + u3 N 3 )dΓ − ∫ bN 2dΩ (4.4.8)
Γ Ω

∫ ∇(u N

1 1 + u 2 N 2 + u 3 N 3 )∇N 3 dΩ = ∫ N 3 ∇(u1 N 1 + u 2 N 2 + u 3 N 3 )dΓ − ∫ bN 3 dΩ (4.4.9)
Γ Ω

4.4.1.1 Desarrollo de lado izquierdo

Se calcula el gradiente para la función u:


∂ ∂ 
∇(u1 N 1 + u 2 N 2 + u 3 N 3 ) =  (u1 N 1 + u 2 N 2 + u3 N 3 ), (u1 N 1 + u2 N 2 + u3 N 3 )
 ∂x ∂y 


(u1 N1 ) = u1 ∂  a1 + b1 x + c1 y  = 1 u1 (b1 )
∂x ∂x  2A  2A

(u2 N 2 ) = u2 ∂  a2 + b2 x + c 2 y  = 1 u 2 (b2 )
∂x ∂x  2A  2A

(u 3 N 3 ) = u3 ∂  a3 + b3 x + c 3 y  = 1 u 3 (b3 )
∂x ∂x  2A  2A

(u1 N 1 + u 2 N 2 + u 3 N 3 ) = 1 (u1b1 + u 2b2 + u3b3 )
∂x 2A

De forma similar:

(u1 N 1 + u 2 N 2 + u 3 N 3 ) = 1 (u1c1 + u 2 c2 + u3 c3 )
∂y 2A
Por lo tanto el gradiente para la función u:

b1 c1 
∇(u1N 1 + u2 N 2 + u3 N 3 ) =
1
(u1b1 + u2b2 + u3b3 u1c1 + u 2c2 + u3c3 ) = [u1 u2 u3 ]b2 c2 
1
2A 2A
b3 c3 
Ahora se calculan los gradientes para las funciones de peso N1, N2, N 3:

 ∂  a + b x + c1 y  ∂  a1 + b1 x + c1 y   1
∇N 1 =   1 1     = (b1 c1 )
 ∂x  2A  ∂y  2A  2A

∇N 2 =
1
(b2 c2 ) y ∇N 3 =
1
(b3 c3 )
2A 2A
Sustituyendo las expresiones en las ecuaciones integrales para cada función de peso:
Para la primera ecuación integral

∫ ∇(u N

1 1 + u 2 N 2 + u 3 N 3 ) ⋅ (∇N 1 )dΩ = ∫ N 1∇(u1 N 1 + u 2 N 2 + u 3 N 3 ) ⋅ dΓ − ∫ bN1dΩ
Γ Ω

Sustituyendo los respectivos gradientes en el lado izquierdo de las tres ecuaciones se


obtiene:

  b1 c1    u1 
1  
 [u1 u 2 u3 ]b2 c2   ⋅ [b1 c1 ]dΩ = ∫ [b ]
b1 b3 + c1 c3 u2  dΩ
1
4 A 2 ∫Ω 
2
+c 2
b1 b2 + c1c 2
  4 A2
1 1  

b3 c3   Ω
u3 

  b1 c1    u1 
1  
 [u1 u 2 u3 ]b2 c2   ⋅ [b2 c 2 ]dΩ = ∫ [b b ]
b2 b3 + c2 c3 u 2  dΩ
1
4 A 2 ∫Ω 
+ c1 c2 b +c 2 2
  4A2
1 2 2 2  
 b3 c3   Ω
u 3 

  b1 c1    u1 
1  
 [u1 u3 ]b2 c2   ⋅ [b3 c3 ]dΩ = ∫ [b b ]
b + c u 2 dΩ
1
4 A 2 ∫Ω 
u2 1 3 + c1 c3 b1b3 + c2 c 3 2
3
2
3
4 A2
 b3 c3   Ω
u 3 

Puesto que todos los elementos dentro de las integrales son constantes la integral de

dominio corresponde al área del elemento: ∫ dΩ = A . Las anteriores expresiones quedan


así:

 u1  u1 
A 2
[
b1 + c12 b1b2 + c1c2 ]
b1b3 + c1c3 u 2  =
  4A 1
1 2
b + c12 [ b1b2 + c1c2
 
]
b1b3 + c1c3 u 2 
4 A2
 u3  u3 
u1  u 1 
∫ [b b ]
b 2 b3 + c 2 c 3 u 2  dΩ = [ ]
b2 b3 + c 2 c 3 u 2 
1 1
1 2 + c1 c 2 b +c
2
2
2
2 b1 b2 + c1 c 2 b +c
2
2
2
2
4 A2 4A

u 3  u 3 

u1  u1 
1
2 ∫ 1 3
4A Ω
[
b b + c1c3 b1b3 + c2c3 b3 + c3 u2 dΩ =
2 2  1
4A
] [
b1b3 + c1c3 b1b3 + c2 c3 b32 + c32 ]u 
 2
u3  u3 
Reuniendo los tres resultados anteriores en una sola expresión matricial el lado izquierdo
de las tres ecuaciones integrales se resume en:

 b12 + c12 b1 b2 + c1 c2 b1b3 + c1 c3  u1 


1  
b1 b2 + c1 c2 b22 + c 22 b2 b3 + c2 c3  u 2 
4A
 b1 b3 + c1 c3 b1 b3 + c2 c3 b32 + c32  u3 
 
Expresada en forma matricial se tiene: KU
 b12 + c12 b1b2 + c1 c2 b1b3 + c1 c3 
1  
La matriz K =  b1 b2 + c1 c 2 b22 + c22 b2 b3 + c2 c3  es llamada matriz de rigidez del
4A
 b1b3 + c1 c3 b1b3 + c2 c3 b32 + c32 
 
elemento o matriz local de rigidez.

4.4.1.2 Desarrollo del lado derecho

Para la ecuación integral (4.4.7) se tiene :

∫ ∇(u N

1 1 + u 2 N 2 + u 3 N 3 ) ⋅ (∇N 1 )dΩ = ∫ N 1∇(u1 N 1 + u 2 N 2 + u 3 N 3 ) ⋅ dΓ − ∫ bN1dΩ
Γ Ω

Se ha demostrado que la integración sobre elementos unidimensionales que tienen


funciones de forma N 1 y N 2 elevadas a las potencias α y β se puede calcular mediante
la formula (Ver FAGAN):
α! β !
∫N
α
N 2β dL = L Donde L es la longitud del elemento.
L
1
(α + β + 1)!
Para elementos bidimensionales con funciones de forma elevadas a las potencias α , β y
γ ; su integración se puede realizar mediante la siguiente formula:
α !β !γ !
∫N
α
N 2β dL = 2A Donde A es el área del elemento.
L
1
(α + β + γ + 2)!
Para el término de conducción de calor en la frontera se tiene la ecuación:
∫ N ∇(u N
1 1 1 + u2 N 2 + u3 N 3 ) ⋅ dΓ Donde ∇(u1 N 1 + u 2 N 2 + u 3 N 3 ) es el gradiente del
Γ

potencial o flujo, el cual es una condición de frontera dada por el problema. Por lo tanto se
puede expresar como: q = ∇(u1 N1 + u2 N 2 + u3 N 3 ) y la ecuación queda:

1!0! qL
∫ N qdΓ = q∫ N dΓ = q (1 + 0 + 1)! L =
Γ
1
Γ
1
2
Donde L es la longitud de Γ .

Similarmente se procede para ∫ qN


Γ
2 dΓ y ∫ qN 3 dΓ .
Γ

4.4.1.3 Calculo del término de generación de calor

Para el término de generación de calor:


1!0!0! 2bA bA
∫ bN dΩ = b (1 + 0 + 0 + 2)! 2 A =

1
6
=
3
Donde b es constante.

Similarmente se procede para ∫ bN



2 dΩ y ∫ bN3 dΩ .

Para un elemento triangular con generación interna b y conducción en el lado entre los
nodos i y j se tendría la siguiente ecuación:
k

b
1 0 
bA   qL  
j KU = 1 − 1
3  2  
1 1

Figura 9. Elemento finito triangular.


4.4.2 Aplicación

En este método se debe resaltar que ya no se requiere solamente numerar los nodos,
también es necesario numerar los elementos. Del orden de numeración de nodos y
elementos dependerá la forma que adopte la matriz de rigidez.
q = 10
10 9 8 7

13 11 9

12 10 8
11 16 15 6
b=-5
T = 300 °C 14 18 7 T = 0 °C
15 17 6
12 13 14 5

16 2 4
1 3 5

1 2 3 4

q = 10

Figura 10. División del dominio en elementos finitos.

Para el elemento 1 ubicado entre los nodos 1,2 y 13. El nodo 1 con coordenadas (0,0), el
nodo 2 con coordenadas (2,0) y el nodo 13 con coordenadas (2,2).

1 0
bA   qL  
La ecuación KU = 1 − 1 , produce los siguientes resultados.
3  2  
1 1

a1 = ( x2 y 3 − x3 y 2 ) = 2 ⋅ 2 − 2 ⋅ 0 = 4 b1 = ( y 2 − y3 ) = 0 − 2 = −2 c1 = (x 3 − x 2 ) = 2 − 2 = 0

a 2 = (x3 y1 − x1 y 3 ) = 2 ⋅ 0 − 0 ⋅ 2 = 0 b2 = ( y 3 − y1 ) = 2 − 0 = 2 c2 = ( x1 − x3 ) = 0 − 2 = −2
c3 = ( x1 y2 − x 2 y1 ) = 0 ⋅ 0 − 2 ⋅ 0 = 0 b3 = ( y1 − y 2 ) = 0 − 0 = 0 c3 = (x 2 − x1 ) = 2 − 0 = 2
2⋅2
A= =2
2
 b12 + c12 b1 b 2 + c1 c 2 b1 b 3 + c 1 c 3   (− 2) 2 − 2⋅2 0 
1 
K =
1 


b1 b2 + c 1 c 2 b 22 + c 22 b2 b 3 + c 2 c 3  = − 2⋅2 (2 ) + (− 2)2
2
(− 2 )(2 )
4A 4 ⋅ 2
 b1 b 3 + c 1 c 3 b 2 b3 + c 2 c 3 b32 + c 32 
 
 0

(− 2 )(2 ) 22 

 1 1 
 2 − 0 
2
 1 1 
K = − 1 − 
 2 2 
 0 −
1 1 
 2 2 

1 1 6.67


bA   10 ⋅ 2   
1 = 1 = 6.67
3   3    
1 1 6.67

0 1 10


qL   10 ⋅ 2    
1 = 1 = 10 La conducción se da en el lado i, j
2   2    
1 0  0 
Donde i, j, k corresponden respectivamente a los nodos 1,2 y 13.
La ecuación para el elemento 1 entonces queda:
 1 1 
 2 − 0

2  300   6 . 67  10 
1 1   u  =  6 . 67  − 10 
− 1 −   2     
 2 2 
 u 3   6 . 67   0 
 0 −
1 1 
 2 2 
El valor de u1 es conocido por ser condición de frontera u1 = 300
Matriz rigidez elemento 1 Matriz rigidez elemento 7 Matriz rigidez elemento 13
1 2 13 14 6 15 11 9 10
1 0.5 -0.5 0 14 0.5 0 -0.5 11 0.5 0 -0.5
2 -0.5 1 -0.5 6 0 0.5 -0.5 9 0 0.5 -0.5
13 0 -0.5 0.5 15 -0.5 -0.5 1 10 -0.5 -0.5 1

Matriz rigidez elemento 2 Matriz rigidez elemento 8 Matriz rigidez elemento 14


2 14 13 15 6 7 12 16 11
2 0.5 0 -0.5 15 0.5 -0.5 0 12 0.5 0 -0.5
14 0 0.5 -0.5 6 -0.5 1 -0.5 16 0 0.5 -0.5
13 -0.5 -0.5 1 7 0 -0.5 0.5 11 -0.5 -0.5 1

Matriz rigidez elemento 3 Matriz rigidez elemento 9 Matriz rigidez elemento 15


2 3 14 15 7 8 12 13 16
2 0.5 -0.5 0 15 0.5 0 -0.5 12 0.5 -0.5 0
3 -0.5 1 -0.5 7 0 0.5 -0.5 13 -0.5 1 -0.5
14 0 -0.5 0.5 8 -0.5 -0.5 1 16 0 -0.5 0.5

Matriz rigidez elemento 4 Matriz rigidez elemento 10 Matriz rigidez elemento 16


3 5 14 16 15 8 1 13 12
3 0.5 0 -0.5 16 0.5 -0.5 0 1 0.5 0 -0.5
5 0 0.5 -0.5 15 -0.5 1 -0.5 13 0 0.5 -0.5
14 -0.5 -0.5 1 8 0 -0.5 0.5 12 -0.5 -0.5 1

Matriz rigidez elemento 5 Matriz rigidez elemento 11 Matriz rigidez elemento 17


3 4 5 16 8 9 13 14 15
3 0.5 -0.5 0 16 0.5 0 -0.5 13 0.5 -0.5 0
4 -0.5 1 -0.5 8 0 0.5 -0.5 14 -0.5 1 -0.5
5 0 -0.5 0.5 9 -0.5 -0.5 1 15 0 -0.5 0.5

Matriz rigidez elemento 6 Matriz rigidez elemento 12 Matriz rigidez elemento 18


14 5 6 11 16 9 13 15 16
14 0.5 -0.5 0 11 0.5 -0.5 0 13 0.5 0 -0.5
5 -0.5 1 -0.5 16 -0.5 1 -0.5 15 0 0.5 -0.5
6 0 -0.5 0.5 9 0 -0.5 0.5 16 -0.5 -0.5 1

Figura 11. Matrices locales de rigidez para cada elemento

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16


R1 1 -0.5 0 0 0 0 0 0 0 0 0 -0.5 0 0 0 0
R2 -0.5 2 -0.5 0 0 0 0 0 0 0 0 0 -1 0 0 0
R3 0 -0.5 2 -0.5 0 0 0 0 0 0 0 0 0 -1 0 0
R4 0 0 -0.5 1 -0.5 0 0 0 0 0 0 0 0 0 0 0
R5 0 0 0 -0.5 2 -0.5 0 0 0 0 0 0 0 -1 0 0
R6 0 0 0 0 -0.5 2 -0.5 0 0 0 0 0 0 0 -1 0
R7 0 0 0 0 0 -0.5 1 -0.5 0 0 0 0 0 0 0 0
R8 0 0 0 0 0 0 -0.5 2 -0.5 0 0 0 0 0 -1 0
R9 0 0 0 0 0 0 0 -0.5 2 -0.5 0 0 0 0 0 -1
R10 0 0 0 0 0 0 0 0 -0.5 1 -0.5 0 0 0 0 0
R11 0 0 0 0 0 0 0 0 0 -0.5 2 -0.5 0 0 0 -1
R12 -0.5 0 0 0 0 0 0 0 0 0 -0.5 2 -1 0 0 0
R13 0 -1 0 0 0 0 0 0 0 0 0 -1 4 -1 0 -1
R14 0 0 -1 0 -1 0 0 0 0 0 0 0 -1 4 -1 0
R15 0 0 0 0 0 -1 0 -1 0 0 0 0 0 -1 4 -1
R16 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 -1 4

Figura 12. Matriz de rigidez global


4.4.3 Programación

La subrutina Elementos Finitos utiliza la matriz H como matriz de rigidez. El calculo de


esta se realiza mediante el calculo de la matriz local de rigidez para cada elemento
directamente en la matriz de rigidez global. Para esto la matriz H se inicia en ceros y en
cada término se van acumulando los valores correspondientes a la matriz de rigidez
global. Para recorrer los elementos se utiliza la variable K. El total de elementos es NCI el
cual es leído del archivo de entrada. Observe que la matriz de rigidez global se calcula en
un solo ciclo DO. En el mismo ciclo se acumulan en el vector B los términos de
generación para cada elemento finito. Después de este se procede a incorporar las
condiciones de conducción de calor en la frontera para cada nodo aprovechando el hecho
de que estos se encuentran en la frontera.
Debido a que se conoce el valor de las variables en algunos nodos por ser condiciones de
frontera, la matriz de rigidez contiene columnas que corresponden a variables conocidas.
Estas variables conocidas deben ser reemplazadas por las variables que no se conocen
mediante la multiplicación del valor conocido por la columna y su adición algebraica en el
lado izquierdo. Todos los términos de la columna reemplazada deben quedar con valor
cero excepto el que corresponde a la variable desconocida que queda con valor uno. Esta
operación con las columnas se efectúa al incorporar las condiciones de frontera de
temperatura para lo cual se debe leer el vector de condiciones de frontera CF.
Obsérvese que una vez calculadas las matrices del sistema su resolución es inmediata
mediante el empleo de la función Resolver Sistema.
SUBROUTINE ElementosFinitos
INTEGER K,I,J,Nodo1,Nodo2,Nodo3,nElem
REAL N1,N2,N3,Ai,Aj,Ak,Bi,Bj,Bk,Ci,Cj,Ck,Xi,Xj,Xk,Yi,Yj,Yk, pX,pY,Area,Longitud
ALLOCATE(H(nn,nn),Q(nn),B(nn),X(nn))
ALLOCATE(Conexion(NNF,2))
WRITE(Salida,*) 'Elementos Finitos'
H = 0.0
B = 0.0 ! Generación de calor
X = 0.0

DO K = 1,NCI
Nodo1 = NodosDeCeldas(K,1)
Nodo2 = NodosDeCeldas(K,2)
Nodo3 = NodosDeCeldas(K,3)
Xi = xf(Nodo1)
Xj= xf(Nodo2)
Xk = xf(Nodo3)
Yi = yf(Nodo1)
Yj = yf(Nodo2)
Yk = yf(Nodo3)
Ai = Xj*Yk - Xk*Yj
Aj = Xk*Yi - Xi*Yk
Ak = Xi*Yj - Xj*Yi
pX = (Xi + Xj + Xk)/3
pY = (Yi + Yk + Yk)/3
Bi = Yj - Yk
Bj = Yk - Yi
Bk = Yi - Yj
Ci = Xk - Xj
Cj = Xi - Xk
Ck = Xj - Xi
Area = fCalcularAreaCelda(K)

! Ensamblar matriz de rigidez para el elemento


H(Nodo1,Nodo1) = H(Nodo1,Nodo1) + (Bi**2 + Ci**2)/(4*Area)
H(Nodo1,Nodo2) = H(Nodo1,Nodo2) + (Bi*Bj + Ci*Cj)/(4*Area)
H(Nodo1,Nodo3) = H(Nodo1,Nodo3) + (Bi*Bk + Ci*Ck)/(4*Area)

H(Nodo2,Nodo2) = H(Nodo2,Nodo2) + (Bj*Bj + Cj*Cj)/(4*Area)


H(Nodo2,Nodo3) = H(Nodo2,Nodo3) + (Bj*Bk + Cj*Ck)/(4*Area)
H(Nodo3,Nodo3) = H(Nodo3,Nodo3) + (Bk*Bk + Ck*Ck)/(4*Area)

H(Nodo2,Nodo1) = H(Nodo1,Nodo2)
H(Nodo3,Nodo1) = H(Nodo1,Nodo3)
H(Nodo3,Nodo2) = H(Nodo2,Nodo3)

! Ensamblar vector generación de calor


B(Nodo1) = B(Nodo1) - Constante*Area/3
B(Nodo2) = B(Nodo2) - Constante*Area/3
B(Nodo3) = B(Nodo3) - Constante*Area/3
END DO

WRITE(Salida,*) 'Matriz de rigidez sin Condiciones frontera'


CALL ImprimirMatriz(H)

!Imprimir vector B
WRITE(Salida,*) 'Vector B'
CALL WRRRN ('B', 1, UBOUND(B), B, 1, 0) !Imprime el vector B

!Conexion de los elementos de frontera


DO nNodo = 1,nnf
Conexion(nNodo,1) = nNodo
Conexion(nNodo,2) = nNodo+1
END DO
Conexion(nnf,2) = 1

!Agregar condiciones de frontera de calor


DO K = 1,NEF
IF (CF(K*2-1) == 1) THEN
Longitud = fCalcularLongitud(Conexion(K,1),Conexion(K,2))
B(Conexion(K,1)) = B(Conexion(K,1)) - Longitud*VF(K*2-1)/2
B(Conexion(K,2)) = B(Conexion(K,2)) - Longitud*VF(K*2)/2
END IF
END DO

!Agregar condiciones de frontera de temperatura


DO K = 1,NNF
IF (Condicion(K) == 0) THEN
DO I = 1,NN
B(I) = B(I) - V(K)*H(I,K)
H(I,K) = 0
END DO
H(K,K) = 1
END IF
END DO

!Imprimir vector B
WRITE(Salida,*) 'Vector B + Condiciones frontera'
CALL WRRRN ('B', 1, UBOUND(B), B, 1, 0) !Imprime el vector B

WRITE(Salida,*) 'Matriz H de rigidez mas Condiciones frontera'


CALL ImprimirMatriz(H)
CALL ResolverSistema(H,X,B)
END SUBROUTINE
4.5 ELEMENTOS DE FRONTERA

Resuelve el problema del potencial mediante el cálculo de integrales sobre la frontera del
dominio, las cuales se derivan de la minimización de residuos ponderados.

4.5.1 Formulación

∇ 2 u = b en O

∫ (∇ u − b )wdΩ = 0
2

∫ ∇ (u )wdΩ − ∫ bwd Ω = 0
2

Ω Ω

Integrando por partes el primer termino utilizando la primera identidad de Green

∫ (∇ u) wdΩ = ∫ w∇udΓ − ∫ ∇u∇wdΩ


2
Sustituyendo en la anterior
Ω Γ Ω

∫ w∇udΓ − ∫ ∇u∇wdΩ − ∫ bwdΩ = 0


Γ Ω Ω

Reordenando se obtiene:

∫ ∇u∇wdΩ = ∫ w ∇udΓ − ∫ bwd Ω


Ω Γ Ω

Integrando nuevamente por partes el término ∫ ∇u∇wdΩ se tiene:


∫ ∇u∇wdΩ = ∫ (∇w )udΓ − ∫ (∇ w )udΩ


2

Ω Γ Ω

Reemplazando en la ecuación se tiene:

∫ w∇udΓ − ∫ (∇w)udΓ + ∫ (∇ w)udΩ − ∫ bwdΩ = 0


2

Γ Γ Ω Ω

Si de divide la frontera Γ del dominio Ω en las fronteras Γ1 y Γ 2 tales que en Γ1 se


_ _
∂u
conoce el valor de u = u y en Γ 2 q = q donde q =
∂n
_ _
u =u Ω q=q
Γ1 Γ2

Figura 13. Dominio, frontera y condiciones.

La ecuación anterior se puede escribir así:

∫ (∇ w )udΩ − ∫ bwd Ω + ∫ w(∇u )dΓ − ∫ u(∇w )dΓ = 0


2

Ω Ω Γ Γ

∫ (∇ w)udΩ − ∫ bwdΩ + ∫ w(∇u )dΓ + ∫ w q dΓ − ∫ u(∇w)dΓ − ∫ u(∇w)dΓ


  _ _
2
1 2 1 2 =0
Ω Ω Γ1 Γ2 Γ1 Γ2

∫ (∇ w)udΩ se obtiene:
2
Integrando por partes el término

∫ (∇ w)udΩ = − ∫ ∇w∇ udΩ + ∫ u∇wdΓ


2

Ω Ω Γ

Se separa la última integral en dos términos:

∫ (∇ w )udΩ = − ∫ ∇w∇udΩ + ∫ u∇wdΓ + ∫ u∇wdΓ


2
1 2
Ω Ω Γ1 Γ2

Reemplazando en la ecuación y cancelando el término ∫ u (∇w)dΓ


Γ2
2
se obtiene:

_ _
− ∫ ∇ w∇ ud Ω + ∫ u ∇wd Γ1 − ∫ bwdΩ + ∫ w(∇ u )d Γ1 + ∫ w q d Γ2 − ∫ u (∇ w)d Γ1 = 0
Ω Γ1 Ω Γ1 Γ2   Γ1

Integrando por partes el término ∫ ∇w∇udΩ se tiene:


∫ ∇w∇udΩ = −∫ w∇ udΩ + ∫ w∇udΓ


2

Ω Ω Γ

Separando la integral de frontera en sus componentes:

∫ ∇w∇ udΩ = − ∫ w∇ udΩ + ∫ w∇udΓ + ∫ w∇udΓ


2
1 2
Ω Ω Γ1 Γ2

Sustituyendo en la ecuación y cancelando el término ∫ w(∇u )dΓ


Γ1
1 se tiene:
_ _

∫ ∇ Ω − ∫ ∇ Γ + ∫ ∇ Γ − ∫Ω Ω + ∫   Γ − ∫ (∇w)dΓ1 = 0
2
w ud w ud 2 u wd 1 bwd w q d 2 u
Ω Γ2 Γ1 Γ2   Γ1

∫ w∇ udΩ se obtiene:
2
Integrando por partes dos veces el término

∫ w∇ udΩ = −∫ ∇w∇udΩ + ∫ w∇udΓ = ∫ (∇ w)udΩ − ∫ u∇ wdΓ + ∫ w∇udΓ


2 2

Ω Ω Γ Ω Γ Γ

Separando las integrales de frontera:

∫ (∇ w)udΩ − ∫u∇wdΓ + ∫ w∇udΓ = ∫ (∇ w)udΩ − ∫u∇wdΓ − ∫ u∇wdΓ + ∫ w∇udΓ + ∫ w∇udΓ


2 2
1 2 1 2
Ω Γ Γ Ω Γ1 Γ2 Γ1 Γ2

Remplazando y cancelando los términos ∫ u∇ wd Γ1 y ∫ w∇udΓ 2 se obtiene:


Γ1 Γ2

∫ (∇ w)udΩ − ∫ u∇wdΓ + ∫ w∇udΓ − ∫ bwdΩ + ∫ w q dΓ − ∫ u(∇w)dΓ


  _ _
2
2 1 2 1 =0
Ω Γ2 Γ1 Ω Γ2 Γ1

Reorganizando los términos:

∫ (∇ w)udΩ − ∫ bwdΩ = − ∫ w q d Γ − ∫ w∇udΓ + ∫ u ∇wdΓ + ∫ u (∇w)dΓ


2   _ _

2 1 2 1
Ω Ω Γ2 Γ1 Γ2 Γ1

Reuniendo nuevamente términos se tiene la expresión inicial para el método de los


elementos de frontera:

∫ (∇ w)udΩ + ∫ w∇udΓ − ∫ bwdΩ = ∫ u∇wdΓ


2

Ω Γ Ω Γ

En este punto se introduce la función radial u * , la cual será utilizada en la ecuación


anterior para obtener las ecuaciones del método elementos de frontera:
1  1 *
La ecuación u* = ln   , u representa el campo generado por una unidad de carga
2π  r 
concentrada en el punto i , y tiene la propiedad de ∇ 2 u * + δ i = 0 ( )
= Lim δ i = ∞
Donde δ : i x −> xi

= 0 en otro caso.
δ i es la función delta de Dirac. r es la distancia desde el punto xi de aplicación de la
función delta de Dirac hasta cualquier otro punto en consideración. El efecto de esta carga
se propaga desde el punto i hasta el infinito sin considerar las condiciones de frontera.
De la propiedad anterior se obtiene:

( )
∇ 2 u * = −δ i

∫ (∇ w)udΩ se toma w = u
2 *
En la integral

Por la propiedad del delta de Dirac mediante la cual la integral de una función delta de
Dirac multiplicada por otra función es igual a la función evaluada en el punto i se tiene:

∫ (∇ w)udΩ = ∫ (∇ u )udΩ = ∫ (− δ )udΩ = −c u


2 2 * i i i
El superíndice i significa evaluada en el
Ω Ω Ω

punto i. ci es un factor que permite modificar el valor de la función de acuerdo con la


ubicación punto donde se evalúa respecto a la frontera. Si el punto i se encuentra en
medio del dominio, es decir es un punto interior c i = 1 . Si se encuentra en una frontera es
proporcional al área de un circulo unitario (Con centro en i) entre los lados de la frontera
que tienen el punto i como punto de unión, como se muestra en la figura.

c i
= 0 .5

ci = 1

c i
= 0 . 25 c i = 0 . 125

i
Figura 14. Valores para la constante C .

Como se menciono anteriormente se toma la función radial y se sustituye en la ecuación:

∫ (∇ w)udΩ + ∫ w∇udΓ − ∫ bwdΩ = ∫ u∇wdΓ


2

Ω Γ Ω Γ

Para lo cual se emplean las siguientes equivalencias:

∫ (∇ w)udΩ = −c u w = u* ∇w = q * ∇u = q
2 i i

Con lo cual se llega a la ecuación integral para el método de elementos de frontera:


− c i u i + ∫ u * qdΓ − ∫ bu * dΩ = ∫ uq * d Γ
Γ Ω Γ
Reordenando los términos:

c i u i + ∫ uq * dΓ + ∫ bu * dΩ = ∫ qu * dΓ
Γ Ω Γ

Esta ecuación esta formulada para el dominio y la frontera completos. Ahora la tarea que
falta consiste en dividir la frontera en varias partes y aplicar la ecuación en cada una de
ellas. La anterior ecuación se cumple para cada punto que este en la frontera. Si la
frontera se divide en N segmentos o elementos entonces para cada punto i del dominio
se cumplirá la siguiente ecuación expresada en forma de sumatoria.
N N
c i u i + ∑ H iju i + D i = ∑ G ij q j
j =1 j =1

Donde H ij = ∫ uq* dΓ j sobre la frontera j desde el punto i ,


Γj

D i = ∫ bu *dΩ , integral de superficie desde el punto i sobre todo el dominio


G ij = ∫ qu* dΓ , sobre la frontera j desde el punto i.


Γ

Si se toman N puntos sobre la frontera entonces se obtiene el sistema matricial:

HU + D = GQ
La cual es la ecuación de partida para la discretización del método de los elementos de
frontera, la cual permite calcular el potencial para un punto dado del dominio.
A continuación se muestra como se efectúa su discretización. En donde, u* representa la
función radial y q* representa su derivada con respecto al vector normal en la frontera,
así:

1  1
u* = ln   Para un medio bidimensional isotrópico.
2π  r 

1
u* = Para un medio tridimensional isotrópico.
4πr

r es la distancia desde punto de origen a la frontera considerada.

∂u *
q* = −>
∂n
Para un nodo i se cumple la siguiente integral de frontera:

c i u i + ∫ uq * dΓ = ∫ qu * dΓ
Γ Γ
Para una frontera dividida en n elementos lineales se tiene para cada nodo:

c i u i + ∫ uq * d Γ1 + ... + ∫ uq * dΓn = ∫ qu * dΓ1 + ... + ∫ qu * dΓn


Γ1 Γn Γ1 Γn

Para evaluar las integrales se debe tener presente que:

1  1 ∂u *
u* = ln   , q* = −>
, φ1 =
1
(1 − ε ) , φ2 =
1
(1 + ε )
2π  r  ∂n 2 2

Sea ? la frontera comprendida entre los puntos A y B.

3
(XB ,YB)

(X ,Y)

?j
r

(XA
i (XI ,YI)

Figura 15. Puntos para la función radial.

Las coordenadas del elemento se pueden obtener mediante la siguiente expresión:

X (ε ) =
(X A + X B )

(X B − X A ) , Y (ε ) =
(YA + YB ) (Y − YA )
+ε B con − 1 ≤ ε ≤ 1
2 2 2 2

[
Para el radio se tiene: r 2 = ( X − X I )2 + (Y − Y I )2 ]
[
El radio en función de ε : r 2 (ε ) = ( X (ε ) − X I ) 2 + (Y (ε ) − YI )2 ]
La frontera Γ expresada en función del parámetro ε se puede expresar de la forma:
 (X + X B )
Γ (ε ) =  A +ε
( X B − X A ) , (Y A + YB ) + ε (YB − YA ) 

 2 2 2 2 
Su derivada Γ (ε ) y magnitud de la derivada son respectivamente:
'

 ( X − X A ) (YB − YA ) 
Γ ' (ε ) =  B  y Γ ' (ε ) = ( X B − X A ) 2 + (YB − YA )2
1
,
 2 2  2
Esta última constituirá más adelante el Jacobiano para el cambio de variable en la
expresión integral que se obtendrá.

4.5.1.1 Calculo integral de la integral que contiene el termino u*

Sea la integral: ∫ qu * dΓ
Γ

1  1
q = φ1 q 1 + φ 2 q 2 y u* = ln  
2π  r 

Reemplazando q y u* en la integral

∫ (φ q )1 1 q1 1  1
2

∫ (φ1 )ln  r dΓ + 2π ∫ (φ 2 ) ln  r dΓ


q
1
+ φ 2q 2 ln   dΓ =
2π  r  2π
1
Γ Γ Γ

Del cálculo integral para un cambio de variable se tiene:

∫ f ( x )dΓ = ∫ f ( x(ε )) Γ (ε ) dε
'

Γ ε

Por lo tanto haciendo el cambio de variable:

q1  1
1
 1  ´'
∫ (φ1 ) ln  dΓ = ∫ (φ1 (ε )) ln   Γ (ε ) dε
q
2π Γ  r 2π Γ  r (ε ) 
Se tiene:
 1  ´'  1
∫ (φ1(ε )) ln  Γ (ε ) dε = ∫ (1− ε ) ln   ( X − X ) 2 + (Y − Y )2 dε
1 1
 r(ε )  
( ( ) ) ( ( ) ) 2 B A B A
2 ε − + ε −
2 2
Γ Γ
 X X I Y YI 
4.5.1.2 Calculo de la integral que contiene el termino q*

Sea la integral: ∫ uq * dΓ
Γ

∂u * ∂u * −>
Para q* = −>
se tiene q* = −>
= ∇u * • n
∂n ∂n

En dos dimensiones se tiene:

 1  1    ∂u * ∂u *  ∂ u * ∂u * ∂ r ∂u * ∂u * ∂r
∇u* = ∇ ln    =  ,  , = y =
 2π  r    ∂x ∂y  ∂x ∂r ∂ x ∂y ∂r ∂y

Se determinan el gradiente y las derivadas parciales de la función radial

[
r 2 = ( X − X I ) + (Y − YI )
2 2
] Derivando implícitamente:
∂r X − X I
∂x
=
r
∂r Y − Y I
∂y
=
r

∂u * ∂  1  1   1  1
=  ln    = −  
∂r ∂r  2π  r   2π  r 
−>
Ahora se determina el vector normal n al vector de recta determinado por los puntos
−>
(XA,YA) y (XB,YB) mediante su producto cruz con el vector k = (0,0,1) . El producto de un
−>
vector en el plano xy con el vector k = (0,0,1) produce otro vector normal en el plano xy
perpendicular a ambos vectores.

−>

n = (X B − X A , YB − YA ,0) × (0,0,1)

−> −> −>

−> i j k −> −>

n= 0 0 1 = (YA − YB ) i + ( X B − X A ) j
X B − X A YB − Y A 0

∂u * −>
Reemplazando los términos anteriores en q* = −>
= ∇u * • n se tiene:
∂n
∂u * −>
 X − X I Y − YI 
q* = −>
= ∇u * • n = − ,−  ⋅ (YA − YB , X B − X A )
∂n  2πr 2
2πr 2

El valor de u en un punto del elemento en función ε de esta dado por:

1 1
u(ε ) = φ1 u A + φ 2 u B = (1 − ε )u A + (1 + ε )u B
2 2

∂u * −>  X (ε ) − X I Y (ε ) − Y I 
q* = = ∇u * • n =  − ,−  ⋅ (Y A − Y B , X B − X A )
∂n
−>
 2πr 2
(ε ) 2πr 2 (ε ) 

∂u * −>  ( X (ε ) − X I )(Y A − YB ) + (Y (ε ) − Y I )( X B − X A ) 
q* = = ∇u * • n = − 
∂n
−>
 2π r 2
(ε ) 

Introduciendo las expresiones anteriores en la integral y teniendo en cuenta el cambio de


variable r por ε :

( ( ) )( ) ( ( ) )( )
1
∫ u(ε )q * (ε )dΓ = −∫  2 (1 − ε )u
A
+
1
(1+ ε )u B  X ε − X I YA − YB +2 Y ε − YI X B − X A dΓ
Γ
2  2πr (ε ) 
Del cálculo integral para un cambio de variable se tiene:

∫ f ( x )dx = ∫ f ( x(ε )) Γ (ε ) dε
'

Γ ε

Para este caso se tiene:


1 B  ( X (ε ) − X I )(YA − YB ) + (Y (ε ) − YI )( X B − X A )  '
∫Γ u(ε )q * (ε )dΓ = −∫  2 (1 − ε )u + 2 (1 + ε )u   Γ (ε ) dε
A 1
2πr 2 (ε ) 

Donde:

 (X + X B )
Γ (ε ) =  A
( X − X A ) , (Y A + YB ) + ε (YB − YA ) 
+ε B 
 2 2 2 2 

 ( X − X A ) (Y B − Y A ) 
Γ ' (ε ) =  B
1
,  y Γ ' (ε ) = ( X B − X A ) 2 + (YB − Y A )2
 2 2  2


Cada integral de la forma uq * dΓ1 por lo tanto se puede separar en dos integrales:
Γ1

∫ uq * dΓ
Γ1
1 = u1 ∫ φ1q11 * dΓ1 + u2 ∫ φ 2 q11 * dΓ1
Γ1 Γ1
Donde:

1  ( X (ε ) − X I )(YA − YB ) + (Y(ε ) − YI )( X B − X A )  1
u A ∫φ1 q11 * dΓ = −u A ∫  (1 − ε )  ( XB − X A ) 2 + (YB − YA )2 dε
Γ 2  2πr 2 (ε ) 2
1  ( X(ε ) − X I )(YA − YB ) + (Y(ε ) − YI )( X B − X A )  1
u B ∫φ2 q11 * dΓ = −u B ∫  (1 + ε ) 2 ( X B − X A )2 + (YB − YA )2 dε
Γ 2  2πr 2 (ε ) 

4.5.1.3 Calculo de la integral de dominio con generación b de calor

Ahora se procede a evaluar la integral que contiene el término b de generación de calor:

Sea la integral: ∫ bu * dΩ

 1  1 
∫ bu * dΩ = ∫ b 2π ln  r   dΩ
Ω Ω

El término ∫ bu * dΩ

implica que se debe calcular una integral de dominio. Si la forma del

dominio es simple se puede efectuar una integración sobre todo el dominio. En otros
casos se recomienda dividir el dominio en regiones de integración llamadas celdas. Al
seleccionar los puntos de integración se debe tener cuidado de que estos no queden
sobre la frontera ya que esto causaría que la distancia r del punto a la frontera empleada
en la función radial u * sea cero y su valor infinito con lo cual la integral se vuelva
impropia. Una forma de evaluar las integrales impropias consiste en eliminar la
singularidad mediante su cambio en otra integral utilizando la Transformación de Telles.
(Ver BREBBIA, The Dual Reciprocity Boundary Element Method). La función contenida
dentro del símbolo de integral se puede evaluar mediante diversos métodos de
integración numérica: Romberg, Simpson, Regla del Trapecio, Cuadraturas Gaussianas,
etc. (Ver CHAPRA). Por sencillez y eficiencia se opta por la integración gaussiana, en la
cual se tomaran puntos de evaluación de la función radial que no estén sobre la frontera.

M
 r 
Di = ∫ bu * dΩ = ∑  ∑ bu *  Ae
Ω e=1  k =1 
Donde:
e = Número de celda
M = Número de celdas o regiones internas
Ae = Área de la celda e
D i = Resultado de la integración para cada punto i
r = Número de puntos de integración en cada celda

Al unir todos los términos de las ecuaciones integrales para los elementos de frontera se
tiene el siguiente sistema de ecuaciones:
Hu + B = Gq

Para las celdas triangulares se utilizó integración con siete puntos de gauss de acuerdo
con la siguiente tabla:

Punto Peso Coordenada 1 Coordenada 2 Coordenada 3


1 0.225 0.33333333 0.33333333 0.33333333
2 0.12592918 0.79742699 0.10128651 0.10128651
3 0.12592918 0.10128651 0.79742699 0.10128651
4 0.12592918 0.10128651 0.10128651 0.79742699
5 0.13239416 0.05971587 0.47014206 0.47014206
6 0.13239416 0.47014206 0.05971587 0.47014206
7 0.13239416 0.47014206 0.47014206 0.05971587

Tabla 1. Puntos y pesos de gauss para integración con siete puntos.


4.5.2 Aplicación

Debido al tamaño de las ecuaciones para el caso de la placa rectangular con 16 nodos y
12 elementos de frontera, se presenta el desarrollo de las ecuaciones para un modelo que
consta de tres elementos de frontera y cuatro nodos.

?3 ?2

1 ?1 2

Figura 16. Fronteras y división dominio triangular

Para un nodo i se cumple la siguiente integral de frontera:

c i u i + ∫ uq * dΓ + ∫ bu *dΩ = ∫ qu * dΓ
Γ Γ

Se separa la frontera en tres elementos correspondientes a cada lado del triangulo:

ciui + ∫ uq* dΓ1 + ∫ uq* dΓ2 + ∫ uq*dΓ3 = ∫ qu*dΓ1 + ∫ qu*dΓ2 + ∫ qu*dΓ3


Γ1 Γ2 Γ3 Γ1 Γ2 Γ3
El lado izquierdo de la ecuación queda de la siguiente forma:

c i u i + ∫ uq * dΓ1 + + ∫ uq * dΓ2 + ∫ uq * dΓ3


Γ1 Γ2 Γ3

c1u1 + u1 ∫ φ1 q11 * dΓ1 + u2 ∫ φ2 q11 * dΓ1 + u2 ∫ φ1 q12 * dΓ2 + u3 ∫ φ2 q12 *dΓ2 + u3 ∫ φ1q13 * dΓ3 + u1 ∫ φ2 q13 * dΓ3
Γ1 Γ1 Γ2 Γ2 Γ3 Γ3
c2u 2 + u1 ∫ φ1 q21 * dΓ1 + u 2 ∫φ2q 21 * dΓ1 + u2 ∫ φ1 q22 * dΓ2 + u3 ∫φ2 q22 * dΓ2 + u3 ∫φ1q23 * dΓ3 + u1 ∫φ2 q23 * dΓ3
Γ1 Γ1 Γ2 Γ2 Γ3 Γ3

c u + u1 ∫φ1q31 * dΓ1 + u2 ∫φ2 q31 * dΓ1 + u2 ∫φ1q32 * dΓ2 + u3 ∫φ2 q32 *dΓ2 + u3 ∫ φ1 q33 *dΓ3 + u1 ∫ φ2 q33 * dΓ3
1 1

Γ1 Γ1 Γ2 Γ2 Γ3 Γ3

Reorganizando los elementos se obtiene:

c1u1 + u1 ∫ φ1 q11 *dΓ1 + u1 ∫ φ2 q13 *dΓ3 + u2 ∫ φ1q12 *dΓ2 + u2 ∫ φ2 q11 * dΓ1 + u3 ∫ φ1q13 *dΓ3 + u3 ∫φ2 q12 *dΓ2
Γ1 Γ3 Γ2 Γ1 Γ3 Γ2

u1 ∫ φ1q21 * dΓ1 + u1 ∫φ2 q23 * dΓ3 + c2u 2 + u2 ∫φ1q22 * dΓ2 + u2 ∫ φ2 q21 * dΓ1 + u 3 ∫φ1q23 * dΓ3 + u3 ∫φ2 q22 * dΓ2
Γ1 Γ3 Γ2 Γ1 Γ3 Γ2

u1 ∫ φ1q31 *dΓ1 + u1 ∫ φ2 q33 *dΓ3 + u2 ∫ φ1q32 *dΓ2 + u2 ∫φ2 q31 * dΓ1 + c u + u3 ∫φ1q33 *dΓ3 + u3 ∫φ2q32 *dΓ2
3 3

Γ1 Γ3 Γ2 Γ1 Γ3 Γ2

Lo cual se puede expresar como un producto matricial:

c1 + φ1q11 * dΓ1 + φ2 q13 *dΓ3


 Γ∫1 ∫
Γ3
∫φ1q12 * dΓ2 + Γ∫1φ2q11 *dΓ1
Γ2
∫φ1q13 *dΓ3 + Γ∫2φ2q12 *dΓ2 
Γ3
 u1 
 φ q * dΓ + φ q *dΓ
∫ ∫ c + ∫ φ1 q22 * dΓ2 + ∫ φ2 q21 * dΓ1
2
∫ φ1 q23 *dΓ3 + ∫ φ2 q22 *dΓ2 u2 
 Γ1 1 21 1 2 23 3

u3 
Γ3 Γ2 Γ1 Γ3 Γ2

 ∫ φ1 q31 * dΓ1 + ∫ φ2 q33 * dΓ3 ∫φ1q32 * dΓ2 + ∫φ2q31 * dΓ1 c + ∫φ1q33 * dΓ3 + ∫φ2q32 *dΓ2 
3

 Γ1 Γ3 Γ2 Γ1 Γ3 Γ2 

Para el lado derecho de la ecuación:

∫ qu * dΓ + ∫ qu * dΓ + ∫ qu * dΓ
Γ1
1
Γ2
2
Γ3
3

Se tiene:
q11 ∫ φ1u11 *dΓ1 + q21 ∫ φ2 u11 *dΓ1 + q22 ∫ φ1u12 *dΓ2 + q32 ∫ φ2 u12 *dΓ2 + q33 ∫ φ1u13 *dΓ3 + q13 ∫φ2 u13 *dΓ3
Γ1 Γ1 Γ2 Γ2 Γ3 Γ3

q11 ∫ φ1u21 *dΓ1 + q21 ∫ φ2 u21 *dΓ1 + q22 ∫φ1 u22 *dΓ2 + q32 ∫ φ2 u22 *dΓ2 + q33 ∫ φ1u23 *dΓ3 + q13 ∫ φ2 u23 *dΓ3
Γ1 Γ1 Γ2 Γ2 Γ3 Γ3

q11 ∫ φ1 u31 *dΓ1 + q21 ∫ φ2 u31 *dΓ1 + q22 ∫ φ1 u32 * dΓ2 + q32 ∫ φ2 u32 *dΓ2 + q33 ∫ φ1u33 *dΓ3 + q13 ∫ φ2 u33 *dΓ3
Γ1 Γ1 Γ2 Γ2 Γ3 Γ3
Expresado en forma matricial se tiene:

 
   q11 
 ∫ φ1u11 * dΓ1 ∫φ u 2 11 * dΓ1 ∫φ u 1 12 * dΓ2 ∫φ u2 12 * dΓ2 ∫φ u 1 13 * dΓ3 ∫Γ3φ2u13 * dΓ3  q21 
 Γ1 Γ1 Γ2 Γ2 Γ3
 
  q22 
 ∫ φ1u21 * dΓ1 ∫φ u 2 21 * dΓ1 ∫φ u 1 22 * dΓ2 ∫φ u 2 22 * dΓ2 ∫φ u 1 23 * dΓ3 ∫ 2 23 3  q32 
φ u * d Γ
Γ1 Γ1 Γ2 Γ2 Γ3 Γ3 
  q33 
 ∫ φ1u31 * dΓ1 ∫φ u 2 31 * dΓ1 ∫φ u 1 32 * dΓ2 ∫φ u 2 32 * dΓ2 ∫φ u 1 33 * dΓ3 ∫ φ 2 u 33 * d Γ3  
Γ1 Γ1 Γ2 Γ2 Γ3 Γ3   q13 
 

Para el problema de la placa rectangular se tiene:


q = 10
10 9 9 8 8 7 7

10 13 11 9
6
12 10 8
11 16 15 6
b = -5
T = 300 °C 11
14 18 7 T = 0 °C
5
15 17 6
12 13 14 5 Nodo

16 5
12 2 4
4 Celda
1 3 5

1 2 3 4 5 Elemento de frontera
1 2 3
q = 10

Figura 17. División dominio para elementos de frontera.


La matriz H queda como sigue:
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12
R1 -0.250 0.000 0.000 0.026 0.047 0.037 0.030 0.037 0.047 0.026 0.000 0.000
R2 0.070 -0.500 0.000 0.038 0.063 0.041 0.035 0.047 0.052 0.035 0.034 0.085
R3 0.038 0.000 -0.500 0.070 0.085 0.034 0.035 0.052 0.047 0.035 0.041 0.063
R4 0.026 0.000 0.000 -0.250 0.000 0.000 0.026 0.047 0.037 0.030 0.037 0.047
R5 0.035 0.034 0.085 0.070 -0.500 0.000 0.038 0.063 0.041 0.035 0.047 0.052
R6 0.035 0.041 0.063 0.038 0.000 -0.500 0.070 0.085 0.034 0.035 0.052 0.047
R7 0.030 0.037 0.047 0.026 0.000 0.000 -0.250 0.000 0.000 0.026 0.047 0.037
R8 0.035 0.047 0.052 0.035 0.034 0.085 0.070 -0.500 0.000 0.038 0.063 0.041
R9 0.035 0.052 0.047 0.035 0.041 0.063 0.038 0.000 -0.500 0.070 0.085 0.034
R10 0.026 0.047 0.037 0.030 0.037 0.047 0.026 0.000 0.000 -0.250 0.000 0.000
R11 0.038 0.063 0.041 0.035 0.047 0.052 0.035 0.034 0.085 0.070 -0.500 0.000
R12 0.070 0.085 0.034 0.035 0.052 0.047 0.035 0.041 0.063 0.038 0.000 -0.500

La matriz G:
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12
R1 0.12 -0.03 -0.15 -0.19 -0.24 -0.27 -0.29 -0.29 -0.30 -0.31 -0.32 -0.33
R2 -0.03 0.12 0.12 -0.03 -0.15 -0.19 -0.22 -0.23 -0.25 -0.26 -0.29 -0.30
R3 -0.19 -0.15 -0.03 0.12 0.12 -0.03 -0.12 -0.14 -0.19 -0.22 -0.26 -0.28
R4 -0.27 -0.24 -0.19 -0.15 -0.03 0.12 0.12 -0.03 -0.15 -0.19 -0.24 -0.27
R5 -0.28 -0.26 -0.22 -0.19 -0.14 -0.12 -0.03 0.12 0.12 -0.03 -0.15 -0.19
R6 -0.30 -0.29 -0.26 -0.25 -0.23 -0.22 -0.19 -0.15 -0.03 0.12 0.12 -0.03
R7 -0.33 -0.32 -0.31 -0.30 -0.29 -0.29 -0.27 -0.24 -0.19 -0.15 -0.03 0.12
R8 -0.31 -0.30 -0.29 -0.29 -0.29 -0.29 -0.28 -0.26 -0.22 -0.19 -0.14 -0.12
R9 -0.29 -0.29 -0.29 -0.29 -0.30 -0.31 -0.30 -0.29 -0.26 -0.25 -0.23 -0.22
R10 -0.29 -0.29 -0.30 -0.31 -0.32 -0.33 -0.33 -0.32 -0.31 -0.30 -0.29 -0.29
R11 -0.22 -0.23 -0.25 -0.26 -0.29 -0.30 -0.31 -0.30 -0.29 -0.29 -0.29 -0.29
R12 -0.12 -0.14 -0.19 -0.22 -0.26 -0.28 -0.29 -0.29 -0.29 -0.29 -0.30 -0.31

C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 C23 C24
R1 -0.33 -0.32 -0.31 -0.30 -0.29 -0.29 -0.27 -0.24 -0.19 -0.15 -0.03 0.12
R2 -0.31 -0.30 -0.29 -0.29 -0.29 -0.29 -0.28 -0.26 -0.22 -0.19 -0.14 -0.12
R3 -0.29 -0.29 -0.29 -0.29 -0.30 -0.31 -0.30 -0.29 -0.26 -0.25 -0.23 -0.22
R4 -0.29 -0.29 -0.30 -0.31 -0.32 -0.33 -0.33 -0.32 -0.31 -0.30 -0.29 -0.29
R5 -0.22 -0.23 -0.25 -0.26 -0.29 -0.30 -0.31 -0.30 -0.29 -0.29 -0.29 -0.29
R6 -0.12 -0.14 -0.19 -0.22 -0.26 -0.28 -0.29 -0.29 -0.29 -0.29 -0.30 -0.31
R7 0.12 -0.03 -0.15 -0.19 -0.24 -0.27 -0.29 -0.29 -0.30 -0.31 -0.32 -0.33
R8 -0.03 0.12 0.12 -0.03 -0.15 -0.19 -0.22 -0.23 -0.25 -0.26 -0.29 -0.30
R9 -0.19 -0.15 -0.03 0.12 0.12 -0.03 -0.12 -0.14 -0.19 -0.22 -0.26 -0.28
R10 -0.27 -0.24 -0.19 -0.15 -0.03 0.12 0.12 -0.03 -0.15 -0.19 -0.24 -0.27
R11 -0.28 -0.26 -0.22 -0.19 -0.14 -0.12 -0.03 0.12 0.12 -0.03 -0.15 -0.19
R12 -0.30 -0.29 -0.26 -0.25 -0.23 -0.22 -0.19 -0.15 -0.03 0.12 0.12 -0.03
El vector de integrales de dominio con el término de generación da como
resultado:
-40.80
-33.65
-33.65
-40.78
-33.65
-33.65
-40.80
-33.65
-33.65
-40.78
-33.65
-33.65
-23.40
-23.40
-23.40
-23.40

La solución del sistema formado es:


Nodo T Qd Qa
1 300.00 10.00 -57.45
2 198.76 10.00 10.00
3 98.01 10.00 10.00
4 0.00 42.74 10.00
5 0.00 61.94 61.94
6 0.00 61.97 61.97
7 0.00 10.00 42.66
8 98.02 10.00 10.00
9 198.75 10.00 10.00
10 300.00 -57.37 10.00
11 300.00 -39.63 -39.63
12 300.00 -39.60 -39.60

4.5.3 Programación

En la subrutina Elementos Frontera se ejecuta una llamada a MATRICES la cual produce


como salida el sistema AX = B. Este sistema se resuelve llamando a Resolver Sistema y
coloca la solución en el vector X. El vector X debe ser interpretado debido a que contiene
información de temperaturas y flujo de calor. La forma de saber a que corresponde
consiste en leer el vector de condiciones CF. Este vector tiene dos condiciones por cada
elemento de frontera. Una para el nodo al inicio del elemento y otra para el nodo al final
del elemento. La condición es 0 cuando se conoce la temperatura y 1 cuando se conoce
el flujo. Para este caso existe un nodo de frontera entre dos elementos de frontera, en
ese nodo la temperatura es única pero el flujo de calor puede ser distinto en cada
elemento.

qd qa

u
Gi+1 Gi

Figura 18. Flujos de calor y potencial alrededor de un nodo.

NEF es el número de elementos de frontera, NNF es el número de nodos de


frontera, nNodo es el número del nodo que se esta procesando y nElem es el
número del elemento de frontera. Entonces se recorren los elementos de frontera
y para cada uno se halla la condición del nodo común en el elemento anterior y en
el elemento actual. Se hace nNodo = nElem. Actual = nElem*2 - 1 esto da la
posición de la condición del nodo común del elemento de frontera en el vector de
condiciones CF. Y Anterior = nElem*2-2 es la posición del mismo nodo en el
elemento de frontera anterior. Es decir que se revisa la condición del mismo nodo
en los dos elementos actual y anterior. Si el elemento es el primer elementos de
frontera, entonces el mismo nodo es compartido con el último elemento y por eso
varia el calculo de la posición del nodo Anterior para el primer elemento: IF (Actual
.EQ. 1) THEN Anterior = nef*2.

Las condiciones para un nodo dado pueden ser:

U(nNodo) Conocido Q(Actual) Desconocido Q(Anterior) Desconocido


U(nNodo) Conocido Q(Actual) Desconocido Q(Anterior) Conocido
U(nNodo) Conocido Q(Actual) Conocido Q(Anterior) Desconocido
U(nNodo) Desconocido Q(Actual) Conocido Q(Anterior) Conocido

Por lo tanto el vector X contiene el valor desconocido y los valores conocidos se


llevan al vector correspondiente. Sí la condición del nodo indica que el flujo de
calor Q(Anterior) es desconocido, entonces X contiene el valor del flujo de calor Q
para el nodo sobre el elemento anterior. En el caso de que ambos flujos de calor
Q(Anterior) y Q(Actual) sean desconocidos, entonces se asume que son iguales.

SUBROUTINE ElementosFrontera
INTEGER nn,I,J,nNodo
WRITE(*,*) "Elementos Frontera"
ALLOCATE(H(nnf,nnf),G(nnf,nnf*2),A(nnf,nnf),F(nnf,nnf*2),B(nnf),C(nnf),X(nnf),U(nnf*2),Q(nnf*2))
ALLOCATE(Conexion(nnf,2),D(nnf+nni))

!Conexion de los elementos de frontera


DO nNodo = 1,nnf
Conexion(nNodo,1) = nNodo
Conexion(nNodo,2) = nNodo+1
END DO
Conexion(nnf,2) = 1
CALL MATRICES
CALL ResolverSistema(A,X,B)
WRITE(Salida,*) " nNodo "," X "," U "," QActual "," QAnterior"
DO nElem=1,nef
nNodo = nElem
Actual = nElem*2-1
IF (Actual .EQ. 1) THEN
Anterior = nef*2
ELSE
Anterior = nElem*2-2
END IF
!U(nNodo) Conocido, Q(Actual) Desconocido, Q(Anterior) Desconocido
IF (CF(Actual) .EQ. 0 .AND. CF(Anterior) .EQ. 0) THEN
U(nNodo) = VF(Actual)
Q(Actual) = X(nNodo)
Q(Anterior) = X(nNodo)
END IF
!U(nNodo) Conocido, Q(Actual) Desconocido Q(Anterior) Conocido
IF (CF(Actual) .EQ. 0 .AND. CF(Anterior) .EQ. 1) THEN
U(nNodo) = VF(Actual)
Q(Anterior) = VF(Anterior)
Q(Actual) = X(nNodo)
END IF
!U(nNodo) Conocido, Q(Actual) Conocido Q(Anterior) Desconocido
IF (CF(Actual) .EQ. 1 .AND. CF(Anterior) .EQ. 0) THEN
U(nNodo) = VF(Anterior)
Q(Actual)= VF(Actual)
Q(Anterior) = X(nNodo)
END IF
!U(nNodo) DesConocido, Q(Actual) Conocido Q(Anterior) Conocido
IF (CF(Actual) .EQ. 1 .AND. CF(Anterior) .EQ. 1) THEN
Q(Anterior) = VF(Anterior)
Q(Actual)= VF(Actual)
U(nNodo) = X(nNodo)
END IF
WRITE(Salida,"(I7,4F10.2)") nNodo,X(nNodo),U(nNodo), Q(Actual),Q(Anterior)
END DO
CALL CalcularPuntosInternos
END SUBROUTINE ElementosFrontera
En la subrutina MATRICES se elaboran las matrices H, Q y se llama la rutina CALL
IntegralesArea para calcular las integrales de dominio a partir de los datos de entrada.
Para calcular integrales que componen cada número de la matriz se llaman las funciones
correpondientes: CalcularHij, CalcularHii, IntegralG1, IntegralG2. Para cada nodo se
recorren todos los elementos y se calculan las integrales de frontera.

SUBROUTINE MATRICES
INTEGER Nodo,Elem,I,prmElem
H = 0.0
G = 0.0
¡ Calcular los elementos de la matriz H
DO Nodo = 1,nnf
DO Elem = 1,nef
IF (Nodo .NE. Elem) THEN
H(Nodo,Elem) = CalcularHij(Nodo,Elem,nef)/2
END IF
END DO
! Calcular elemento diagonal de la matriz H
H(Nodo,Nodo) = CalcularHii(Nodo,nef)
END DO
CALL ImprimirMatriz(H)
! Calcular los elementos de la matriz G
DO Nodo = 1,nnf
DO Elem = 1,nef
!IF (Nodo .NE. Elem) THEN
G(Nodo,Elem*2-1) = IntegralG1(Nodo,Elem)
G(Nodo,Elem*2) = IntegralG2(Nodo,Elem)
!END IF
END DO
END DO
CALL ImprimirMatriz(G)
CALL IntegralesArea
CALL CalcularMatricesAF
END SUBROUTINE MATRICES
La función CalcularHii calcula los valores de la diagonal principal de la matriz H mediante
la suma de todos los valores de la fila que no pertenecen a la diagonal.
REAL FUNCTION CalcularHii(I,prm_nef)
INTEGER, INTENT(IN) :: I
INTEGER, INTENT(IN) :: prm_nef
INTEGER prmNodo,prmElem
REAL fValor
fValor = 0.0
DO prmElem = 1,prm_nef
IF (prmElem .NE. I) THEN
fValor = fValor + H(I,prmElem)
END IF
END DO
CalcularHii = -fValor
END FUNCTION CalcularHii

En la función CalcularHij se calcula el valor de la integral de frontera o de línea desde un


nodo prmNodo sobre un elemento prmElem.

hij = h1 + h2 = ∫ φ1 q * dΓ prmElem + ∫ φ2 q * dΓ prmElem

REAL FUNCTION CalcularHij(prmNodo,prmElem,prm_nef)


INTEGER, INTENT(IN) :: prmNodo
INTEGER, INTENT(IN) :: prmElem
INTEGER, INTENT(IN) :: prm_nef
REAL h1,h2
h1 = 0
h2 = 0
h1 = IntegralH1(prmNodo,prmElem)
IF (prmElem .EQ. 1) THEN
h2 = IntegralH2(prmNodo,prm_nef)
ELSE
h2 = IntegralH2(prmNodo,prmElem-1)
END IF
CalcularHij = h1 + h2
END FUNCTION CalcularHij

En IntegralH1 se calcula la expresión h1 = ∫ φ1 q * dΓ prmElem

REAL FUNCTION IntegralH1(prmNodo,prmElem)


INTEGER, INTENT(IN) :: prmNodo
INTEGER, INTENT(IN) :: prmElem
INTEGER I
REAL fResultado, fTotal
fResultado = 0.0
fTotal = 0.0
DO I = 1,4
fResultado = fPhi1(PGauss(I))*fQRadial(prmNodo,prmElem,PGauss(I))*
FPeso(I)*fJacobiano(prmElem)
fTotal = fTotal + fResultado
END DO
IntegralH1 = -fTotal
END FUNCTION IntegralH1

En la función IntegralH2 se calcula h2 = ∫ φ 2 q * dΓ prmElem

REAL FUNCTION IntegralH2(prmNodo,prmElem)


REAL fResultado, fTotal
INTEGER prmNodo,prmElem,I,J
fResultado = 0.0
fTotal = 0.0
DO I = 1,4
fResultado = fPhi2(PGauss(I))*fQRadial(prmNodo,prmElem,PGauss(I))*
FPeso(I)*fJacobiano(prmElem)
fTotal = fTotal + fResultado
END DO
IntegralH2 = -fTotal
END FUNCTION IntegralH2

La función fPhi1 corresponde a la función de interpolación Isoparamétrica φ1 =


1
(1 − ε ) .
2
REAL FUNCTION fPhi1(PGauss)
REAL,INTENT(IN) :: PGauss
fPhi1 = (1-PGauss)/2
END FUNCTION fPhi1

La función fPhi2 corresponde a la función de interpolación Isoparamétrica φ 2 =


1
(1 + ε ) .
2
REAL FUNCTION fPhi2(PGauss)
REAL,INTENT(IN) :: PGauss
fPhi2 = (1+PGauss)/2
END FUNCTION fPhi2
La función fQRadial evalúa la función radial q * en el punto PG desde el nodo
prmNodo.

∂u * −>  X (ε ) − X I Y (ε ) − Y I 
q* = = ∇ u * • n =  − ,−  ⋅ (Y A − YB , X B − X A )
 2π ⋅ r (ε ) 2π ⋅ r (ε ) 
−> 2 2
∂n

Los arreglos xf y yf son variables globales que indican las coordenadas x y y del nodo.

REAL FUNCTION fQRadial(prmNodo,prmElem,PG)


INTEGER prmNodo,prmElem
REAL XA, XB, YA, YB, XI, YI, X, Y, R2, fNum, fDen, PG
XI = xf(prmNodo)
YI = yf(prmNodo)
XA = xf(Conexion(prmElem,1))
XB = xf(Conexion(prmElem,2))
YA = yf(Conexion(prmElem,1))
YB = yf(Conexion(prmElem,2))
X = (XA + XB)/2 + PG*(XB - XA)/2
Y = (YA + YB)/2 + PG*(YB - YA)/2
R2 = (X - XI)*(X - XI) + (Y - YI)*(Y - YI)
fNum = (X - XI)*(YA - YB) + (Y - YI)*(XB - XA)
fDen = 2*3.141592654*R2
fQRadial = fNum/fDen
END FUNCTION fQRadial

La función fJacobiano calcula corresponde a un medio de la longitud del elemento de


frontera.

Γ ' (ε ) = ( X B − X A ) 2 + (YB − YA )2
1
2

REAL FUNCTION fJacobiano(prmElem)


REAL XA,XB,YA,YB
INTEGER prmElem
XA = xf(Conexion(prmElem,1))
XB = xf(Conexion(prmElem,2))
YA = yf(Conexion(prmElem,1))
YB = yf(Conexion(prmElem,2))
fJacobiano = SQRT((XB - XA)**2 + (YB - YA)**2)/2
END FUNCTION fJacobiano
La función IntegralG1 corresponde a la integral de frontera, evaluada mediante el uso de
integración gaussiana de cuatro puntos.
 1 
∫ (φ (ε )) ln r(ε )  Γ (ε ) dε
´'
1
Γ

 1
1
∫Γ 2 (1 − ε ) ln 

1 
2
( X B − X A )2 + (YB − YA )2 dε
 ( X (ε ) − X I ) + (Y (ε ) − YI )
2 2

REAL FUNCTION IntegralG1(prmNodo,prmElem)
INTEGER, INTENT(IN) :: prmNodo,prmElem
INTEGER I,J
REAL f1,f2,f3,f4,fResultado
IntegralG1 = 0.0
f1 = 0.0
f2 = 0.0
f3 = 0.0
f4 = 0.0
fResultado = 0.0
DO I = 1,4
f1 = fPhi1(PGauss(I))
f2 = fURadial(prmNodo,prmElem,PGauss(I))
f3 = FPeso(I)
f4 = fJacobiano(prmElem)
fResultado = (f1*f2*f3*f4)
IntegralG1 = IntegralG1 + fResultado
END DO
END FUNCTION IntegralG1
La función IntegralG2 corresponde a la integral de frontera, evaluada mediante el uso de
integración gaussiana de cuatro puntos.
 1 
∫ (φ (ε )) ln r(ε )  Γ (ε ) dε
´'
2
Γ

REAL FUNCTION IntegralG2(prmNodo,prmElem)


INTEGER prmNodo,prmElem,I,J
REAL f1,f2,f3,f4,fResultado
IntegralG2 = 0.0
f1 = 0.0
f2 = 0.0
f3 = 0.0
f4 = 0.0
fResultado = 0.0
DO I = 1,4
f1 = fPhi2(PGauss(I))
f2 = fURadial(prmNodo,prmElem,PGauss(I))
f3 = FPeso(I)
f4 = fJacobiano(prmElem)
fResultado = (f1*f2*f3*f4)
IntegralG2 = IntegralG2 + fResultado
END DO
END FUNCTION IntegralG2

La función fURadial evalua la función radial u * en con base en el nodo prmNodo


hasta el punto de gauss PG del elemento prmElem.

1  

u * (ε ) =
1
ln
2π  ( X (ε ) − X I )2 + (Y (ε ) − YI )2 
 

REAL FUNCTION fURadial(prmNodo,prmElem,PG)


REAL XA,XB,YA,YB,XI,YI,X,Y,R, PG
INTEGER prmNodo,prmElem
XI = xf(prmNodo)
YI = yf(prmNodo)
XA = xf(Conexion(prmElem,1))
XB = xf(Conexion(prmElem,2))
YA = yf(Conexion(prmElem,1))
YB = yf(Conexion(prmElem,2))
X = (XA + XB)/2 + PG*(XB - XA)/2
Y = (YA + YB)/2 + PG*(YB - YA)/2
R = SQRT((X - XI)**2 + (Y - YI)**2)
fURadial = (1/(2*3.141592654))*ALOG(1/R)
END FUNCTION fURadial
En la subrutina CalcularMatricesAF se toman las matrices H y G como variables de
entrada y a partir de estas se construyen las matrices A y F. Este cambio es necesario
debido a que en las matrices H y G existen columnas que corresponden a valores de
frontera conocidos y columnas que corresponden a valores desconocidos. Por lo tanto en
el sistema HQ + D = GU existen valores conocidos en los vectores Q y de U. Para poder
resolver este sistema se debe llevar a la forma AX = B, donde la matriz A contendrá todas
las columnas que corresponden a las variables desconocidas y el vector B contendrá el
valor de todas las valores conocidos multiplicados por su fila columna correspondiente.
Esto requiere un intercambio de columnas entre las matrices H y G. Para realizar este
intercambio se crean dos matrices auxiliares A y F donde A contendrá las columnas
correspondientes a las variables desconocidas y F contendrá los valores de las columnas
correspondientes a las variables conocidas. En el vector C se calculara el resultado de
multiplicar la matriz F por los valores conocidos y se coloc ará el resultado en el vector B.
Con lo cual se obtiene el sistema AX = B.

SUBROUTINE CalcularMatricesAF
INTEGER Actual,Anterior,nElem,nNodo, I,J
A = 0.0
F = 0.0
!A = H
!F = G
! Ab = c = FV
DO nElem=1,nef
nNodo = nElem
Actual = nElem*2-1
IF (Actual .EQ. 1) THEN
Anterior = nef*2
ELSE
Anterior = nElem*2-2
END IF
!U(nNodo) Conocido, Q(Actual) Desconocido, Q(Anterior) Desconocido
IF (CF(Actual) .EQ. 0 .AND. CF(Anterior) .EQ. 0) THEN
U(nNodo) = VF(Actual)
DO J=1,nnf
A(J,nElem) = -G(J,Actual) -G(J,Anterior)
F(J,Actual) = -H(J,nElem)
END DO
END IF

!U(nNodo) Conocido, Q(Actual) Desconocido Q(Anterior) Conocido


IF (CF(Actual) .EQ. 0 .AND. CF(Anterior) .EQ. 1) THEN
U(nNodo) = VF(Actual)
Q(Anterior) = VF(Anterior)
DO J=1,nnf
A(J,nElem) = -G(J,Actual)
F(J,Actual) = -H(J,nElem)
F(J,Anterior) = G(J,Anterior)
END DO
END IF
!U(nNodo) Conocido, Q(Actual) Conocido Q(Anterior) Desconocido
IF (CF(Actual) .EQ. 1 .AND. CF(Anterior) .EQ. 0) THEN
U(nNodo) = VF(Anterior)
Q(Actual)= VF(Actual)
DO J=1,nnf
A(J,nElem) = -G(J,Anterior)
F(J,Anterior) = -H(J,nElem)
F(J,Actual) = G(J,Actual)
END DO
END IF
!U(nNodo) DesConocido, Q(Actual) Conocido Q(Anterior) Conocido
IF (CF(Actual) .EQ. 1 .AND. CF(Anterior) .EQ. 1) THEN
Q(Anterior) = VF(Anterior)
Q(Actual)= VF(Actual)
DO J=1,nnf
A(J,nElem) = H(J,nElem)
F(J,Anterior) = G(J,Anterior)
F(J,Actual) = G(J,Actual)
END DO
END IF

END DO

WRITE(Salida,*) "Matriz A"


CALL ImprimirMatriz(A)

WRITE(Salida,*) "Matriz F"


CALL ImprimirMatriz(F)

!Calcular vector c
WRITE(Salida,*) "Vector c"
DO I=1,nnf
c(I) = 0.0
DO J=1,nef*2
c(I) = c(I) + F(I,J)*VF(J)
END DO
c(I) = c(I) - D(I)
WRITE(Salida,*) c(I)
END DO
b=c
END SUBROUTINE CalcularMatricesAF
En la subrutina INTEGRALESAREA se calculan los valores correspondientes a la integral
de dominio,
M
 r 
Di = ∫ bu * d Ω = ∑  ∑ bu * Ae
Ω e=1  k =1 
Para lo cual se evalúa la función u * utilizando integración gaussiana de siete puntos. NN
es el total de nodos del sistema.

SUBROUTINE INTEGRALESAREA
INTEGER Nodo1,Nodo2,Nodo3,K,PG,I
REAL XA,XB,XC,YA,YB,YC,XI,YI,XP,YP,IntegralDominio
REAL C1,C2,C3,DX,DY,R,LE,LJ
!Calcular area celdas internas
WRITE(Salida,*) "Area Celdas"
DO K = 1,nci
AreaCelda(K) = fCalcularAreaCelda(K)
WRITE(Salida,*) K," ",AreaCelda(K)
END DO
DO I = 1,nn
!Integración sobre todo el dominio desde el punto i
XI = xf(I)
YI = yf(I)
IntegralDominio = 0.0
DO K=1,nci
!Nodo1,Nodo2,Nodo3 Conectividad de la celda
!XA,XB,XC,YA,YB,YC Coordenadas de los vértices de las celdas
Nodo1 = NodosDeCeldas(K,1)
Nodo2 = NodosDeCeldas(K,2)
Nodo3 = NodosDeCeldas(K,3)
XA = xf(Nodo1)
XB = xf(Nodo2)
XC = xf(Nodo3)
YA = yf(Nodo1)
YB = yf(Nodo2)
YC = yf(Nodo3)
DO PG = 1,7
C1 = PGauss7(PG,1)
C2 = PGauss7(PG,2)
C3 = PGauss7(PG,3)
! XY YP Coordenadas del punto de integración
XP = XA*C1 + XB*C2 + XC*C3
YP = YA*C1 + YB*C2 + YC*C3
! DX, DY Componentes de R
DX = XI - XP
DY = YI - YP
R = SQRT(DX*DX + DY*DY)
IntegralDominio = IntegralDominio - FPeso7(PG)*
AreaCelda(K)*ALOG(1.0/R)*Constante/(2.0*PI)
END DO
END DO

!Al completarse la integración sobre el dominio completo


!desde el punto i el resultado se coloca en el vector D
D(I) = IntegralDominio
WRITE(Salida,*) I," ",D(I)
END DO
END SUBROUTINE INTEGRALESAREA

La subrutina CalcularPuntosInternos calcula el potencial de los puntos interiores del


dominio, es decir los puntos que no están en la frontera. Para esto se aprovecha el hecho
de que las matrices H, la matriz G y el vector D ya están calculados y también se conocen
los valores del potencial y del flujo de calor en cada uno de los puntos de la frontera, por
lo tanto solo es necesario calcular la expresión:

c i u i = ∫ qu * dΓ − ∫ uq * dΓ − ∫ bu *dΩ
Γ Γ

La cual expresada en forma matricial para obtener u i queda así:

ui = ∑G ij
q j − ∑ H ij u j − D i
j =1

Esta se cumple para cada punto interior, puesto que es valida para cada punto del
dominio.
SUBROUTINE CalcularPuntosInternos
INTEGER I,J
REAL G,H
G = 0.0
H = 0.0
DO I = NNF+1,NNF+NNI
U(I) = 0.0
DO J = 1,NNF
U(I) = U(I) - (IntegralG1(I,J)*Q(J*2-1) +
IntegralG2(I,J)*Q(J*2)) + (CalcularHij(I,J,nef)/2)*U(J)
END DO
U(I) = U(I) + D(I)
WRITE(Salida,*) I, U(I)
END DO

END SUBROUTINE CalcularPuntosInternos


4.6 SOLUCION MEDIANTE SOFTWARE DE ELEMENTOS FINITOS ANSYS 8.0

Para resolver el problema con el programa ANSYS 8.0 se planteo un modelo


tridimensional con 12 elementos por lado.

Figura 19. Malla empleada.


Figura 20. Distribución de nodos clave para lectura de resultados.

Figura 21. Temperaturas.


4.7 RESULTADO COMPARATIVO

En la tabla siguiente se muestra el resumen de los resultados obtenidos por cada método.
Metodo FDM FVM FEM BEM ANSYS 8.0
Nodo T T T Q T Qd Qa T
1 300.00 300.00 300.00 -53.30 300.00 10.00 -57.45 300.00
2 200.00 200.00 200.00 198.76 10.00 10.00 197.57
3 100.00 100.00 100.00 98.01 10.00 10.00 97.57
4 0.00 0.00 0.00 43.30 0.00 42.74 10.00 0.00
5 0.00 0.00 0.00 120.00 0.00 61.94 61.94 0.00
6 0.00 0.00 0.00 120.00 0.00 61.97 61.97 0.00
7 0.00 0.00 0.00 46.70 0.00 10.00 42.66 0.00
8 100.00 100.00 100.00 98.02 10.00 10.00 97.57
9 200.00 200.00 200.00 198.75 10.00 10.00 197.57
10 300.00 300.00 300.00 -56.70 300.00 -57.37 10.00 300.00
11 300.00 300.00 300.00 -80.00 300.00 -39.63 -39.63 300.00
12 300.00 300.00 300.00 -80.00 300.00 -39.60 -39.60 300.00
13 210.00 210.00 210.00 210.39 209.65
14 110.00 110.00 110.00 109.77 109.65
15 110.00 110.00 110.00 109.77 109.65
16 210.00 210.00 210.00 210.39 209.65

Tabla 2. Resultado comparativo métodos finitos.

Se observa que los valores hallados para la temperatura coinciden. En los métodos de
diferencias y volúmenes finitos solo se obtuvieron valores para la temperatura, los valores
para los flujos de calor se deben hallar mediante un post procesamiento. En el método de
elementos finitos se calcularon los valores faltantes no incluidos en las condiciones de
frontera. En el método de elementos de frontera se calcularon los valores desconocidos
para los nodos de frontera (Del 1 al 12): temperatura del nodo, calor en el nodo del
elemento anterior, calor en el nodo del elemento posterior. Para obtener los valores de
temperatura en los nodos interiores (Del 13 al 16) se realizo un cálculo posterior.

Para verificar si los resultados son consistentes se debe hacer un balance de calor en los
distintos modelos. El calor ingresa al sistema por dos medios por la frontera oeste (W)
que tiene una temperatura de 300° C y por generación de calor en su interior. El calor sale
por todas las demás fronteras (S, E, N) .
Para el método de los elementos finitos se tiene el siguiente resultado:

300 200 100 0

20 20 20
-56.7 10 9 8 7 46.7

-80 11 16 210 15 110 6 120

T = 300 °C B= -180 T = 0 °C

-80 12 13 210 14 110 5 120

-53.3 1 2 3 4 43.3
20 20 20

Figura 22. Resultado por el método de elementos finitos.

Cuyo balance es como sigue:


Por la cara W ingresan 56.7 + 80 + 80 + 53.3 = 270 julios.
El calor generado es 5x6x6 = 180 julios.
El aumento de calor en el sistema es 270 + 180 = 450 julios.
La salida de calor por la cara N es 10 x 6 = 60 julios.
La salida de calor por la cara S es 10 x 6 = 60 julios.
Por la cara E salen: 46.7 + 120 + 120 + 43.3 = 330 julios.
Total calor que abandona el sistema: 60 + 60 + 330 = 450 julios.
Se cumple en condiciones de flujo estable que el aumento de calor es igual a la
disminución en el sistema: 270 + 180 = 60 + 60 + 330 = 450 julios.
Para el método de los elementos de frontera se tiene el siguiente resultado:

300 198.75 98.02 0

10 10 10 10 10 10
-57.37 10 9 8 7 42.66

-39.63 11 16 210.39 15 109.77 6 61.97


-39.63 61.97
T = 300 °C B= -180 T = 0 °C

-39.6 12 13 210.39 14 109.77 5 61.94


-39.6 61.94

-57.45 1 2 3 4 42.74
10 10 10 10 10 10

300 198.76 98.01 0

Figura 23. Resultado por el método de elementos de frontera.

Cuyo balance es como sigue:


Por la cara W ingresan 57.37+39.63x2+39.2x2+57.45 = 273.28 julios.
El calor generado es 5x6x6 = 180 julios.
El aumento de calor en el sistema es 273.28 + 180 = 453.28 julios.
La salida de calor por la cara N es 10 x 6 = 60 julios.
La salida de calor por la cara S es 10 x 6 = 60 julios.
Por la cara E salen: 42.74+61.94x2+61.97x2+42.66 = 333.22 julios.
Total calor que abandona el sistema: 60 + 60 + 330 = 453.22 julios.
Se cumple en condiciones de flujo estable que el aumento de calor es igual a la
disminución en el sistema: 273.28 + 180 = 60 + 60 + 333.22 ≅ = 453.2 julios.

Los resultados obtenidos por elementos finitos y por elementos de frontera son
consistentes para cada método y entre sí.
5 ESTRUCTURA DEL PROGRAMA

En este aparte solo se presenta el código compartido por los distintos métodos. El detalle
de cada método se puede consultar en la sección dedicada a cada método en capítulos
anteriores.

5.1 ESQUEMA GENERAL

Modulo
Globales

Modulo
Lectura

Modulo
Principal

Modulo Modulo Modulo Modulo


Diferencias Volumenes Elementos Elementos
Finitas Finitos Finitos de Frontera

Modulo
Rutinas
Comunes

Figura 24. Estructura del programa.

En este esquema se aprecia que existe un solo modulo de variables globales y un solo
modulo de lectura. Cada método se implemento en un modulo independiente. Las rutinas
que pueden ser utilizadas por dos o mas módulos se agruparon en un solo modulo de
rutinas comunes.
5.2 MODULO GLOBALES

En este modulo, se declaran todas las variables y constantes utilizadas por el programa,
entre ellas:
NN Numero Nodos = NNF + NNI
NNF Numero Nodos Frontera
NNI Numero Nodos Internos
NEF Numero Elementos Frontera
NCI Numero Celdas Internas
XF Vector coordenadas X de nodos
YF Vector c oordenadas Y de los nodos
Conexion Arreglo bidimensional indica la conexión de los elementos de
frontera.
NodosDeCeldas Arreglo indica los nodos que conforman una celda interna.
AreaCelda Vector que indica el área de las celdas internas
U Vector para almacenar el valor del Potencial
Q Vector para almacenar el valor de la derivada del potencial o flujo

Las variables son declaradas en este modulo pero solo se le asigna espacio y son
iniciadas con su valores antes de ser utilizadas. Las variables que contienen datos de
entrada son iniciadas en el modulo de lectura, las que contienen resultados son iniciadas
en el modulo respectivo, para lo cual primero se les debe asignar espacio en memoria
utilizando la instrucción ALLOCATE y a continuación se inician sus valores según se
requiera.

5.3 MODULO LECTURAS

La rutina de lectura debe estar en concordancia con el formato del archivo de entrada de
datos, el cual es un archivo texto con el nombre Problema.inp. El archivo de entrada tiene
el siguiente formato que es el mismo para todos los métodos:
Primera línea: b Valor constante de generación
Segunda línea: NF Número nodos de frontera
NNI Numero nodos internos
NEF Número de líneas de frontera
NCI Número de celdas internas o elementos
Tercera línea: Línea de encabezados para las líneas siguientes
Siguientes NN líneas, una línea por cada nodo con la siguiente información:
P Numero nodo
S Nodo Sur
E Nodo Este
N Nodo Norte
W Nodo Oeste
X Coordenada X
Y Coordenada Y
C Código condición del nodo
V Valor condición nodo

Observe que NN se calcula con los valores leídos en la segunda línea: NN = NNF + NNI

Siguientes NCI líneas. Una línea por cada celda interna o elemento:
Numero de la celda o elemento
Primer nodo local de la celda o nodo 1 o nodo i
Segundo nodo local de la celda o nodo 2 o nodo j
Tercer nodo local de de la celda o nodo 3 o nodo k

Siguientes 2*NEF líneas. Dos líneas por cada elemento de frontera para indicar la
condición frontera y su valor para cada elemento de frontera:
Código de la condición
Valor de la condición
Cada dato dentro del archivo de entrada esta separado por tabuladores y cada línea esta
separada de la siguiente por un retorno de línea.

SUBROUTINE LECTURA
USE GLOBALES
INTEGER nNodo,nElem
Entrada = 5 ! Archivo de entrada
Salida = 6 ! Archivo de salida

OPEN(Entrada, FILE = 'Problema.inp', STATUS='OLD')


OPEN(Salida, FILE = 'Salida.txt', STATUS='REPLACE')

READ(Entrada,*) Constante,NNF,NNI,NEF,NCI
WRITE(Salida,"(F7.3,4I4)") Constante,NNF,NNI,NEF,NCI
READ(Entrada,*) !Saltar linea de encabezados
NN = NNF + NNI
ALLOCATE(S(nn),E(nn),N(nn),W(nn),YF(nn),XF(nn),Condicion(nn),V(nn))
ALLOCATE(NodosDeCeldas(NCI,3),AreaCelda(NCI) ,CF(2*NNF),VF(2*NNF))
READ(Entrada,*) (S(I),S(I),E(I),N(I),W(I),XF(I),YF(I),Condicion(I),V(I),I=1,nn)
WRITE(Salida,"(5I4,2F7.2,I3,F7.2)")
(I,S(I),E(I),N(I),W(I),XF(I),YF(I),Condicion(I),V(I),I=1,nn)

!Leer los nodos de las celdas internas triangulares


WRITE(Salida,*) 'Conexión de los nodos de las celdas internas'
READ(Entrada,*)(nCelda,(NodosDeCeldas(nCelda,nNodo),nNodo=1,3),nCelda=1,nci)
WRITE(Salida,"(4I4)")(nCelda,(NodosDeCeldas(nCelda,nNodo),nNodo=1,3),nCelda=1,nci
)
!Leer las condiciones de frontera para el método elementos de frontera
write(Salida,*) "Condiciones frontera"
READ(Entrada,*) (CF(I),VF(I),I=1,2*NNF)
WRITE(Salida,"(I4,F7.2)") (CF(I),VF(I),I=1,2*NNF)

write(Salida,*) "Fin Lectura"


RETURN
END SUBROUTINE LECTURA

5.4 MODULO PRINCIPAL

PROGRAM Principal
USE Globales
USE Lecturas
USE MetodoDiferencias
USE MetodoVolumenes
USE MetodoElementos
USE MetodoFrontera
USE Rutinas
IMPLICIT NONE

INTEGER Opcion

PI = 3.141592654
Opcion = "0"
CALL Lectura

DO WHILE (Opcion<>5)
WRITE(*,*) "METODOS FINITOS"
WRITE(*,*) "1-Diferencias Finitas"
WRITE(*,*) "2-Volúmenes Finitos"
WRITE(*,*) "3-Elementos Finitos"
WRITE(*,*) "4-Elementos de Frontera"
WRITE(*,*) "5-Salir"
WRITE(*,*) "Elija una opción"

READ(*,*) Opcion

SELECT CASE (Opcion)


CASE (1)
CALL DiferenciasFinitas
CASE (2)
CALL VolumenesFinitos
CASE (3)
CALL ElementosFinitos
CASE (4)
CALL ElementosFrontera
END SELECT
END DO
END PROGRAM Principal
Su función es enlazar y coordinar los distintos componentes de la aplicación.

5.5 MODULO RUTINAS


Este modulo contiene las siguientes funciones y subrutinas:
Subrutina ResolverSistema(Matriz,X,B)
Resuelve el sistema AX = B
Donde: A es la matriz de entrada.
X es el vector solución del sistema.
B es el vector del lado derecho del sistema.
Para resolver el sistema la subrutina realiza una llamada a la función LSARG de la librería
IMSL de Fortran:
CALL LSARG (N, Matriz, LDA, B, IPATH, X)
Para mostrar el vector solución se utiliza la función WRRRN de la misma librería.

Función fCalcularAreaCelda(nCelda)
Esta función recibe el código o número de la celda (nCelda). Con este valor mediante el
uso de la función NodosDeCelda() determina los tres nodos que conforman la celda y
mediante la magnitud del producto cruz de dos vectores determinados por los tres puntos
calcula el área de la celda. Esta es una propiedad muy conocida del producto cruz.

Función fCalcularLongitud(nNodo1,nNodo2)
Esta función recibe dos puntos y calcula la distancia entre ellos utilizando la formula de la
distancia entre dos puntos.

Subrutina ImprimirMatriz(Matriz)
Utiliza la función WRRRL de la librería IMSL de Fortran. Esta función permite imprimir la
matriz en el archivo de salida utilizando un formato de presentación compacto, legible y
organizado.

Subrutina EnteroATexto(Numero,Texto)
Esta subrutina convierte un numero entero en una cadena de texto que puede ser
concatenada e impresa con otro texto para propósitos de presentación de los datos de los
encabezados de la matriz impresa.
6 CONCLUSIONES

Aunque la teoría de los métodos finitos es una campo de las matemáticas cuya
elaboración tomo aproximadamente dos siglos, su aplicación prác tica a la solución de
problemas de ingeniería es relativamente reciente y continúa aumentando el número y
variedad de problemas que se pueden resolver con ellos.

Los métodos finitos requieren la división del sistema en regiones, su descripción


geométrica, topológica y condiciones que afectan al sistema. Dependiendo del tipo de
sistema estos aspectos pueden variar considerablemente. La descripción geométrica se
refiere a la ubicación de los puntos de acuerdo con el sistema de coordinas utilizado. La
descripción topológica se refiere a que puntos conforman cada elemento del dominio. Y
las condiciones se refieren a cualquier conjunto de variables o medidas dadas para
puntos o elementos dados.

El modelo de un sistema elaborado mediante elementos discretos puede variar


notablemente de acuerdo con el número de puntos elegido, el número y forma de
elementos, el sistema de coordenadas, el número de grados de libertad o variables para
cada punto y las funciones de forma e interpolación seleccionadas. Mediante una
definición adecuada del sistema que se desea modelar, eligiendo un sistema de
coordenadas apropiado y aprovechando las propiedades de la simetría, el tamaño,
complejidad y dimensionalidad del problema se puede reducir.

El tiempo de preparación de un modelo y su tiempo de ejecución aumenta


exponencialmente con el número de puntos y elementos utilizados para construir el
modelo. Un error muy común consiste en tratar de modelar un sistema con más exactitud
de la requerida, lo cual ocasiona retrasos, aumento de costos para la obtención de los
resultados o vuelve la solución impractica por la cantidad de información que se debe
recoger y analizar.
La estrategia de solución del sistema de ecuaciones resultante del modelo incide en el
tiempo de solución del probl ema y en la cantidad de almacenamiento necesaria para
realizar los cálculos internos. Por lo cual para problemas pequeños y de propósito
ilustrativo la solución directa del sistema y la representación completa de la matriz puede
ser apropiado, pero esto no sucede en problemas grandes los cuales requieren otro tipo
de procesamiento del modelo y de almacenamiento de la matriz.

La reducción del orden de las ecuaciones diferenciales asociadas a un sistema, mediante


la integración por partes basada en el uso del teorema de Green facilita notablemente el
tratamiento matemático de los métodos finitos.

Uno de los aspectos que más dificultad ofrece al escribir los programas para cada uno de
los métodos es tener en cuenta apropiadamente las condiciones de frontera de forma que
estas se puedan procesar automáticamente. Esta dificultad debe ser tenida en cuenta al
definir el formato del archivo de entrada del problema, para lo cual se debería definir un
estándar que pueda ser procesado por varios métodos.

Para modelar, simular, validar e interpretar los resultados de un sistema cada sistema se
requiere entender el comportamiento físico subyacente del mismo.

Cuando se requiera construir un modelo nuevo es recomendable iniciar con un modelo


pequeño que se pueda verificar y validar fácilmente y solo aumentar su tamaño en la
medida que se requiera para obtener los resultados apropiados con la resolución
requerida.

Existen gran cantidad de programas comerciales y académicos basados en algunos de


los métodos finitos. Sin embargo, estos en su mayoría están escritos para aplicaciones o
problemas específicos. Por lo cual al intentar resolver un problema mediante métodos
numéricos es conveniente revisar si los programas existentes satisfacen la necesidad.
Solo en casos muy específicos y para aplicaciones particulares se recomendaría escribir
un programa.

Para cada una de las etapas de solución de problemas de ingeniería mediante el uso de
métodos finitos: Preparación, solución del sistema y procesamiento posterior existen
programas de aplicación que se pueden utilizar independientemente. Lo cual diminuye el
tiempo total para la solución del problema lo que permite dedicar mayor tiempo y esfuerzo
al análisis y optimización del sistema.
7 BIBLIOGRAFIA

AKIN, J.E., Finite Element Análisis With Error Estimators. Butterwoth Heinemann: Elservier,
2005. 447p.

BREBBIA, Carlos Alberto, DOMINGUEZ, J. Boundary elements. An introductory course. 2ed.


Boston: Southampton, 1992. 206p. (Computational mechanics publications)

BREBBIA, Carlos Alberto, PARTRIDGE, P.W.,WROBEL,L.C. The dual reciprocity boundary


element method. 2ed. Boston: Southampton, 1992. 276p. (Computational mechanisc Publications)

BUCHANAN, George R. Finite element análisis. Theory and problems. Estados Unidos:
McGrawHill, 1994. 280p.

CHAPRA, Steven C., CANALE, Raymond P. Métodos numéricos para ingenieros. 3ed. Mexico:
Mc Graw Hill, 1999. 982p.

FAGAN, M. J., Finite element analysis. Theory and practice. England: Longman. 1992. 315p.

FERZIGER, Joel H., PERIC, Milovan. computational methods for fluid dynamics. Germany:
Springer, 1996. 364p.

HSU, Hwei P. Analisis vectorial. Delaware: Addison-Wesley Iberoamericana, 1987. 286p.

KAPLAN, Wilfred. Matemáticas avanzadas. Para estudiantes de ingeniería. Mexico: Fondo


Educativo Interamericano, 1985. 874p.

LEWIS, R.W. MORGAN, K., THOMAS, H.R., SEETHARAMU, K.N. The finite element method
in heat transfer a nalysis. . England: John Wiley & Sons , 1996. 279p.

NORRIE, Douglas H., DE VRIES, Gerard. The finite element method. Fundamentals and
applications. . New Yorik: Academic Press, 1973. 322p.

ZIENKIEWICZ, O. C. El método de los elementos finitos. . España: Reverte, S.A, 1980. 484p.

ZILL, Dennos G., CULLEN, Michael R. Ecuaciones diferenciales con problemas de valores en la
frontera. 5ed. Boston: Thomson Learning, 2002. 631p.

GALERKIN, Boris Grigorievich. [En línea]. <http://www.history.mcs.st- andrews.ac.uk/


Mathematicians/Galerkin.html>

Anda mungkin juga menyukai