metodos finitos
Transcripción
metodos finitos
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 2 INTRODUCCION .......................................................................................................... 4 ANTECEDENTES ................................ ................................ ................................ ......... 5 3 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.4 3.5 CONCEPTOS ............................................................................................................... 7 FUNDAMENTOS MATEMÁTICOS ................................ ................................ ................. 7 Operadores ................................................................................................................... 7 Series de Taylor. ........................................................................................................... 7 Teoremas de Green e Integración por partes. ................................ ................................ . 8 Integración Gaussiana. .................................................................................................. 9 CONCEPTOS FÍSICOS................................ ................................ ................................ 10 Propiedades específicas ............................................................................................... 10 Flujo ............................................................................................................................ 11 FUNCIONES DE FORMA E INTERPOLACIÓN .............................................................. 12 Interpolación lineal ................................ ................................ ................................ ........13 Interpolación lineal bidimensional .................................................................................. 14 MÉTODO DE GALERKIN. ............................................................................................ 16 ECUACIONES DE LAPLACE Y POISSON .....................................................................17 4 4.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2 4.3.3 4.4 4.4.1 4.4.2 4.4.3 4.5 4.5.1 4.5.2 4.5.3 4.6 4.7 5 5.1 5.2 5.3 5.4 5.5 6 7 MÉTODOS FINITOS ....................................................................................................19 PROBLEMA DE TRABAJO........................................................................................... 21 DIFERENCIAS FINITAS ............................................................................................... 22 Formulación ................................................................................................................. 22 Aplicación. ................................................................................................................... 25 Programación ............................................................................................................... 27 VOLÚMENES FINITOS ................................ ................................ ................................ 29 Formulación ................................................................................................................. 29 Aplicación .................................................................................................................... 30 Programación ............................................................................................................... 32 ELEMENTOS FINITOS.................................................................................................34 Formulación ................................................................................................................. 34 Aplicación .................................................................................................................... 40 Programación ............................................................................................................... 43 ELEMENTOS DE FRONTERA ...................................................................................... 46 Formulación ................................................................................................................. 46 Aplicación .................................................................................................................... 57 Programación ............................................................................................................... 61 SOLUCION MEDIANTE SOFTWARE DE ELEMENTOS FINITOS ANSYS 8.0................. 74 RESULTADO COMPARATIVO ..................................................................................... 76 ESTRUCTURA DEL PROGRAMA................................................................................. 79 ESQUEMA GENERAL..................................................................................................79 MODULO GLOBALES ..................................................................................................80 MODULO LECTURAS ..................................................................................................80 MODULO PRINCIPAL ..................................................................................................82 MODULO RUTINAS .....................................................................................................83 CONCLUSIONES......................................................................................................... 84 BIBLIOGRAFIA ............................................................................................................87 LISTA DE FIGURAS Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura 1. Interpolación lineal. ..........................................................................................13 2. Interpolación lineal bidimensional. ................................................................14 3. Problema de trabajo........................................................................................21 4. División del dominio en diferencias finitas. ..................................................25 5. Sistema matricial para diferencias finitas.....................................................27 6. Convención para los nodos............................................................................30 7. División del d ominio en volúmenes finitos. ..................................................30 8. Sistema matricial para volúmenes finitos.....................................................32 9. Elemento finito triangular................................................................................39 10. División del dominio en elementos finitos..................................................40 11. Matrices locales de rigidez para cada elemento ......................................42 12. Matriz de rigidez global.................................................................................42 13. Dominio, frontera y condicione s..................................................................47 14. Valores para la constante C i. .......................................................................49 15. Puntos para la función radial. ......................................................................51 16. Fronteras y división dominio triangular .....................................................57 17. División dominio para elementos de frontera............................................59 18. Flujos de calor y potencial alrededor de un nodo.....................................62 19. Malla empleada.............................................................................................74 20. Distribución de nodos clave para lectura de resultados..........................75 21. Temperaturas.................................................................................................75 22. Resultado por el método de elementos finitos..........................................77 23. Resultado por el método de elementos de frontera.................................78 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 elásticos. a problemas de sólidos 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 3.1 CONCEPTOS FUNDAMENTOS MATEMÁTICOS 3.1.1 Operadores Gradiente ∇f = ∂f ∧ ∂f ∧ ∂f ∧ i+ j+ k ∂x ∂y ∂z Con f función escalar Divergencia ∇⋅ F = ∂f x ∂f y ∂f z + + ∂x ∂y ∂z Con F función vectorial Laplaciano 2 ∂ 2 f x ∂ f y ∂ 2 fz Con f función escalar ∇ f = + + ∂x 2 ∂y 2 ∂z 2 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 ( x) = f ( xo ) + f ( xo ) ( x − xo ) + ' '' ' n f ' ' ( xo ) (x − xo )2 + f ( xo ) ( x − xo )3 + ... + f (xo ) (x − xo )n + ... 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: ∫∫φ Ω ∂ψ dxdy ∂x Mediante la regla de integración por partes: ∫ udv = (uv) b a La ∫φ b a − (uv )x =a − ∫ vdu b x= b integral a interna se puede expresar de la siguiente forma: b ∂φ ∂ψ dx = (φψ ) x=b − (φψ )x = a − ∫ ψdx a ∂x ∂x Reemplazando en la expresión inicial como se observa a continuación: ∫∫φ Ω d d b ∂φ ∂ψ dxdy = ∫ [(φψ )x =b − (φψ )x =a ]dy − ∫ ∫ ψdxdy c c a ∂x ∂x Sea Γ el contorno o frontera del dominio Ω , para un diferencial de frontera dΓ se tiene: −> ∧ −> dy = n ⋅ i dΓ = n x dΓ El término ∫ [(φψ ) d c frontera Γ así: ∫∫ φ Ω x= b − (φψ )x =a ]dy se puede expresar como una integral de línea sobre la ∫ [(φψ ) −> ∧ d c x= b − (φψ ) x= a ]dy = ∫ φψ n ⋅ i dΓ y la expresión general queda: −> ∧ d b ∂φ ∂ψ dxdy = ∫ φψ n ⋅ i dΓ − ∫ ∫ ψ dxdy c a ∂x ∂x Γ Γ Para la variable y se tiene: ∫∫ φ Ω −> −> d b ∂φ ∂ψ dxdy = ∫ φψ n ⋅ j dΓ − ∫ ∫ ψ dxdy c a ∂y ∂y Γ Sumando las dos ecuaciones anteriores: d b ∂φ ∂ψ ∂ψ − > − > − > −> ∂φ φ + φ dxdy = ∫∫Ω ∂x ∂y ∫Γ φψ 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 V 3.1.4 −> 2 S 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 −1 i =1 I = ∫ f (ξ ) dξ ≅ w1 f (ξ1 ) + w 2 f (ξ 2 ) + .... + wn f (ξ n ) = ∑ f (ξ i ) wi 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= ∫ b a a (1 − ξ ) + b (1 + ξ ) 2 2 f (x )dx = (b − a ) 1 f (x (ξ ))dξ ∫ 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 φ φ = m 3 kg m 3 Donde φ conserva sus unidades originales. 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: a0 = u1 x 2 − u 2 x1 u − u1 a1 = 2 x2 − x1 x 2 − x1 Sustituyendo a 0 y a1 en u( x ) = a0 + a1 x se tiene: u ( x) = u1 x 2 − u 2 x1 u 2 − u1 + x x2 − x1 x 2 − x1 Reorganizando los términos: u ( x) = u1 x2 − u 2 x1 + u 2 x − u1 x x −x x − x1 = 2 u1 + u 2 = N 1u1 + N 2 u2 x2 − x1 x 2 − x1 x2 − x1 Donde N 1 = 3.3.2 x2 − x x − x1 y N2 = son las funciones de interpolación. x2 − x1 x2 − x1 Interpolación lineal bidimensional Figura 2. Interpolación lineal bidimensional. c1 y ]c 2 c 3 En forma matricial: U = [1 x U ( x, y) = c1 + c2 x + c3 y . 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 1 x 2 1 x3 y1 c1 u1 y 2 c2 = u 2 y 3 c3 u3 Por lo tanto: [X ]{C} = {U } Resolviendo se obtiene: {C} = [X ]−1 {U } Dado que U ( x, y ) = [1 x Haciendo [N ] = [1 x c1 y ]c 2 se tiene: U ( x, y ) = [1 x c 3 y][X ] −1 Es decir [N 1 N2 y][X ] N 3 ] = [1 x −1 u1 u 2 u 3 y ][ X ] −1 Resolviendo el sistema anterior se obtiene: N1 = N2 = N3 = ( 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 ) 2A (x1 y 2 − x2 y1 ) + x ( y1 − y2 ) + y( x2 − x1 ) 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 Li (x ) = Χ j =0 j ≠i x − xj xi − x j 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 φ d Ω = i ∫ ∫ ∇ 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φ 2 + ... + α nφ n − b φ 2dΩ = 0 2 1 1 Ω 2 1 1 Ω ) ) ) ) … ∫ (∇ (α φ 2 1 1 ) ) + α 2φ 2 + ... + α nφ n − b φ n dΩ = 0 Ω 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 (3.5.2.) ∫ ∇ (u )wdΩ − ∫ bwdΩ = 0 (3.5.3.) 2 Ω 2 Ω Ω 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Ω (3.5.4.) sustituyendo en (3.5.3.) ∫ w∇udΓ − ∫ ∇u∇wdΩ − ∫ bwdΩ = 0 (3.5.5.) 2 Ω Γ Γ Ω Ω Ω 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∇ Ω 2 ) u − u∇ 2 w dΩ = ∫ (w∇u − u∇w)dΓ (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 (6,6) (0,6) Placa metalica T = 300 °C T = 0 °C b = -5 (6,0) (0,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: k∇ 2T ( x, y) = k x ∂ 2T ∂ 2T + k = b Tal que: b = −5 y k = k x = k x = 1 y ∂x 2 ∂y 2 Con condiciones de frontera: T (0 , y) = 300 , T (6 , y) = 0 , ∂T ∂ y x =0 Para 0 ≤ x ≤ 6 y 0 ≤ y ≤ 6 ∂T = 10 , ∂y = 10 x =6 4.2 4.2.1 DIFERENCIAS FINITAS 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 + Donde f k 1 f 2! 2 (xi )h 2 + 1 3! f 3 (xi )h 3 + ... + 1 n! f n ( xi )h n + ... (1) (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! 2 ( xi )h 2 − 1 3! f 3 (x i )h 3 + ... + (− 1)n n! f n (x i )h n + ... (2) 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 f ( xi − h ) = f ( xi ) − f (3) 1 (xi )h (4) Se despeja f 1 ( xi ) en (3) y (4) se obtiene: f 1 ( xi ) = f (x i + h ) − f ( xi ) h (5) Ecuación diferencia finita hacia adelante f 1 ( xi ) = f ( xi ) − f (x i − h ) h (6) Ecuación diferencia finita hacia atrás. (7) Ecuación diferencia finita central. Si se resta (3) y (4) se obtiene: f ( xi + h) − f ( xi − h) = 2 f 1 ( xi )h Despejando f 1 ( xi ): f 1 ( xi ) = f ( xi + h) − f (x i − h ) 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): f ( xi + h) = f ( xi ) + f 1 ( xi )h + 1 f 2! f ( xi − h) = f ( xi ) − f 1 (xi )h + 1 f 2! 2 (xi )h 2 (8) 2 ( xi )h 2 (9) 2 (xi )h 2 Sumando (8) y (9): f ( xi + h) + f (xi − h) = 2 f ( xi ) + f Despejando f 2 ( xi ) se tiene la aproximación de la segunda derivada en diferencias finitas: f 2 ( xi ) = f ( xi + h ) − 2 f ( xi ) + f ( xi − h ) h2 En el caso de dos dimensiones la ecuación de Laplace es: k∇ 2T ( x, y ) = k ∂ 2T ∂ 2T + 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 . ∇ 2 T ( x, y ) = ∂ 2T ∂ 2T + =0 ∂x 2 ∂y 2 Se aproxima el término ∂ 2T ∂ 2T 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 2 2 ∂x 2 ∂y 2 hx hy T ( xi + h) − 2T ( xi ) + T (xi − h) hx 2 + T ( y i + h) − 2T ( y i ) + T ( yi − h) Para el caso de la ecuación de Poisson: ∂ 2T ∂ 2T k∇ T ( x, y) = k x + ky =b ∂x 2 ∂y 2 2 hy 2 =0 Si el material es isotrópico los coeficientes de conductividad térmica son iguales kx = ky y la ecuación se puede expresar: ∇ 2 T ( x, y ) = ∂ 2T ∂ 2T b + = ∂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 k hx hy 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) , Te = T ( xe ) Tw = T (xw ) y n = ( y i + h ), Tn = T ( yn ) T s = T ( ys ) Entonces para un punto i dado su ecuación sería: Ts + Te + Tn + Tw − 4Ti = h 2 b k y s = ( yi − h ) Ti = T ( xi ) y 4.2.2 Aplicación. q = 10 10 11 9 8 16 T = 300 °C 7 6 15 b = -5 12 T = 0 °C 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 Nodo 2: T s + Te + T n + T w − 4T2 = h 2 b Temperatura conocida. 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 2h ==> Ts = Tn − q * 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 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 20 Figura 5. Sistema matricial para diferencias finitas. El cual al ser resuelto entrega los siguientes valores para las temperaturas T: T1 300 4.2.3 T2 200 T3 100 T4 0 T5 0 T6 0 T7 0 T8 100 T9 200 T10 300 T11 300 T12 300 T13 210 T14 110 T15 110 T16 210 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 Ponderación de residuos. 2 Ω 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 Ω = ∇ u ⋅ ∫Ω ∫s n ds Por definición de derivada direccional: ∂u −> ds Hasta el momento se ∇ u ⋅ n ds = ∫s ∫ −> 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. 4 ∂u ds = ∑ ∂u ds ∫s −> i j=1 Γ∫ −> i i ∂ n i,j ∂ n ∂u ds = u j − ui L(Γ ) i, j ∫ −> i h Γi , j ∂ n Con j = W, E, N, S. Para la región bidimensional i la ecuación de balance queda así: ?x N W ?y E i S 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 b = -5 T = 300 °C 12 13 1 T = 0 °C 14 2 5 3 q = 10 Figura 7. División del dominio en volúmenes finitos. 4 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 ∆x ∆x 2 2 − q∆ x + (Tn − T2 ) ∆ x ∆y ∆y = −b∆x 2 ∆ x = ∆ y = ∆ Malla uniforme (Tw − T2 ) 1 (Te − T2 ) 1 2 + 2 − q∆ x + (Tn − T2 ) ∆y = − b∆x 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 Volumen 3: 1 1 ∆2 Tw + Te + T n − 2T3 = q∆ + b 2 2 2 T4 = 0 Volumen 4: Temperatura conocida (Condición de frontera). Volumen 5: 1 1 ∆2 Ts + Tw + Tn − 2T5 = q∆ + b 2 2 2 Volumen 6: 1 1 ∆2 Ts + Tw + Tn − 2T6 = q∆ + b 2 2 2 Volumen 7: T7 = 0 Volumen 8: T s + Temperatura conocida (Condición de frontera). 1 1 ∆2 Te + Tw − 2T8 = q∆ + b 2 2 2 1 2 1 2 Volumen 9: Ts + Te + Tw − 2T9 = q∆ + b Volumen 10: T10 = 0 ∆2 2 Temperatura conocida (Condición de frontera). Volumen 11: 1 1 ∆2 Ts + Te + Tn − 2T11 = q∆ + b 2 2 2 Volumen 12: 1 1 ∆2 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: R1 R2 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 -2 0.5 0 0 0 0 0 0 0 0 0 1 0 0 0 T1 300 10 0 0 0 0 0 0 0 0 0 1 0 0 T2 T3 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T4 T5 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T6 T7 0 0 0 0 0 0 0 0 0 0 0 0.5 -2 0.5 0 0 0 0.5 -2 0.5 0 0 0 0 0 0 0 0 1 0 0 1 T8 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 R12 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 T1 1 T1 2 R13 R14 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -4 1 1 -4 0 1 1 0 T1 3 T1 4 -20 -20 R15 R16 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 -4 1 1 -4 T1 5 T1 6 -20 -20 R3 0 0.5 -2 0.5 R4 R5 0 0 0 0 0 0 R6 R7 0 0 0 0 R8 R9 0 0 R10 R11 T9 T1 0 10 300 300 300 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) /= 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) /= 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) /= 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) == H(I,I) = -2 H(I,E(I)) = 1.0 0) THEN 0) THEN 0) THEN 0) THEN 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 (4.4.2.) ∫ ∇ (u )wdΩ − ∫ bwdΩ = 0 (4.4.3.) 2 Ω 2 Ω Ω Integrando por partes el primer termino utilizando la primera identidad de Green ∫ (∇ Ω 2 u) wd Ω = ∫ w ∇u ⋅ dΓ − ∫ ∇u ⋅ ∇wd Ω Γ ∫ w∇u ⋅ dΓ − ∫ ∇u ⋅ ∇ wdΩ − ∫ bwdΩ = 0 Γ Ω (4.4.4.) sustituyendo en (4.4.3.) Ω (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 = N2 = N3 = ( 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 ) 2A (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 ) Expresado en forma matricial: [N ] = 1 [1 x 2A a1 y] b1 c1 a2 b2 c2 a3 b3 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 N 1 Γ 1 Ω ∫ ∇(u N 1 Ω 4.4.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 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) Γ 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) Γ Ω 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 ) ∂y ∂x ∂ (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 1 1 ∇(u1N 1 + u2 N 2 + u3 N 3 ) = (u1b1 + u2b2 + u3b3 u1c1 + u 2c2 + u3c3 ) = [u1 u2 u3 ]b2 c2 2A 2A b3 c3 Ahora se calculan los gradientes para las funciones de peso N1, N2, N 3: ∂ a + b x + c1 y ∇N 1 = 1 1 2A ∂x ∇N 2 = 1 (b2 2A c2 ) ∂ a1 + b1 x + c1 y 1 (b1 = ∂y 2A 2A y ∇N 3 = 1 (b3 2A c1 ) c3 ) 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: 1 [u1 u 2 4 A 2 ∫Ω b1 c1 1 u3 ]b2 c2 ⋅ [b1 c1 ]dΩ = 4 A2 b3 c3 1 [u1 u 2 4 A 2 ∫Ω b1 c1 u3 ]b2 c2 ⋅ [b2 b3 c3 1 c 2 ]dΩ = 4A2 1 [u1 4 A 2 ∫Ω b1 c1 u3 ]b2 c2 ⋅ [b3 b3 c3 1 c3 ]dΩ = 4 A2 u2 ∫ [b 2 1 +c 2 1 b1 b2 + c1c 2 Ω ∫ [b b 1 2 + c1 c2 b +c 2 2 2 2 Ω ∫ [b b 1 3 + c1 c3 u1 b1 b3 + c1 c3 u2 dΩ u3 ] u1 b2 b3 + c2 c3 u 2 dΩ u 3 ] b1b3 + c2 c 3 Ω u1 b + c u 2 dΩ u 3 2 3 2 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í: [ A 2 b1 + c12 4 A2 b1b2 + c1c2 u1 1 2 b1b3 + c1c3 u 2 = b + c12 4A 1 u3 ] [ b1b2 + c1c2 u1 b1b3 + c1c3 u 2 u3 ] 1 4 A2 ∫ [b b 1 2 + c1 c 2 b +c 2 2 2 2 Ω u1 1 b 2 b3 + c 2 c 3 u 2 dΩ = b1 b2 + c1 c 2 4A u 3 ] [ b +c 2 2 u 1 b2 b3 + c 2 c 3 u 2 u 3 ] 2 2 u1 1 1 2 2 b b + c1c3 b1b3 + c2c3 b3 + c3 u2 dΩ = b1b3 + c1c3 b1b3 + c2 c3 b32 + c32 2 ∫ 1 3 4A Ω 4A u3 [ ] [ u1 u 2 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 α 1 N 2β dL = L α! β ! L (α + β + 1)! Donde L es la longitud del elemento. Para elementos bidimensionales con funciones de forma elevadas a las potencias α , β y γ ; su integración se puede realizar mediante la siguiente formula: ∫N L α 1 N 2β dL = α !β !γ ! 2A (α + β + γ + 2)! Donde A es el área del elemento. Para el término de conducción de calor en la frontera se tiene la ecuación: ∫ N ∇(u N 1 1 1 ∇(u1 N 1 + u 2 N 2 + u 3 N 3 ) es el gradiente del + u2 N 2 + u3 N 3 ) ⋅ dΓ Donde Γ 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! ∫ N qdΓ = q∫ N dΓ = q (1 + 0 + 1)! L = 1 1 Γ Γ Similarmente se procede para ∫ qN 2 Γ 4.4.1.3 qL 2 Donde L es la longitud de Γ . dΓ y ∫ qN 3 dΓ . Γ Calculo del término de generación de calor Para el término de generación de calor: 1!0!0! 2bA bA = 6 3 ∫ bN dΩ = b (1 + 0 + 0 + 2)! 2 A = 1 Ω Similarmente se procede para ∫ bN Ω 2 Donde b es constante. 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 q b j 1 0 bA qL 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 8 9 10 13 11 9 10 12 11 7 8 15 16 6 b=-5 T = 300 °C 14 18 13 12 6 5 14 16 4 2 1 1 T = 0 °C 7 17 15 5 3 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 A= 2⋅2 =2 2 (− 2) 2 b12 + c12 b1 b 2 + c1 c 2 b1 b 3 + c 1 c 3 1 1 K = b1 b2 + c 1 c 2 b 22 + c 22 b2 b 3 + c 2 c 3 = − 2⋅2 4A 4 ⋅ 2 0 b1 b 3 + c 1 c 3 b 2 b3 + c 2 c 3 b32 + c 32 − 2⋅2 (2 ) + (− 2)2 (− 2 )(2 ) 2 0 (− 2 )(2 ) 22 1 2 1 K = − 2 0 1 2 − 1 − 1 2 1 − 2 1 2 0 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 2 2 1 0 0 La conducción se da en el lado i, j Donde i, j, k corresponden respectivamente a los nodos 1,2 y 13. La ecuación para el elemento 1 entonces queda: 1 2 1 − 2 0 1 2 − 1 − 1 2 1 − 2 1 2 0 300 u 2 u 3 6 . 67 10 = 6 . 67 − 10 6 . 67 0 El valor de u1 es conocido por ser condición de frontera u1 = 300 Matriz rigidez elemento 1 1 2 13 1 0.5 -0.5 0 2 -0.5 1 -0.5 13 0 -0.5 0.5 Matriz rigidez elemento 7 14 6 15 14 0.5 0 -0.5 6 0 0.5 -0.5 15 -0.5 -0.5 1 Matriz rigidez elemento 13 11 9 10 11 0.5 0 -0.5 9 0 0.5 -0.5 10 -0.5 -0.5 1 Matriz rigidez elemento 2 2 14 13 2 0.5 0 -0.5 14 0 0.5 -0.5 13 -0.5 -0.5 1 Matriz rigidez elemento 8 15 6 7 15 0.5 -0.5 0 6 -0.5 1 -0.5 7 0 -0.5 0.5 Matriz rigidez elemento 14 12 16 11 12 0.5 0 -0.5 16 0 0.5 -0.5 11 -0.5 -0.5 1 Matriz rigidez elemento 3 2 3 14 2 0.5 -0.5 0 3 -0.5 1 -0.5 14 0 -0.5 0.5 Matriz rigidez elemento 9 15 7 8 15 0.5 0 -0.5 7 0 0.5 -0.5 8 -0.5 -0.5 1 Matriz rigidez elemento 15 12 13 16 12 0.5 -0.5 0 13 -0.5 1 -0.5 16 0 -0.5 0.5 Matriz rigidez elemento 4 3 5 14 3 0.5 0 -0.5 5 0 0.5 -0.5 14 -0.5 -0.5 1 Matriz rigidez elemento 10 16 15 8 16 0.5 -0.5 0 15 -0.5 1 -0.5 8 0 -0.5 0.5 Matriz rigidez elemento 16 1 13 12 1 0.5 0 -0.5 13 0 0.5 -0.5 12 -0.5 -0.5 1 Matriz rigidez elemento 5 3 4 5 3 0.5 -0.5 0 4 -0.5 1 -0.5 5 0 -0.5 0.5 Matriz rigidez elemento 11 16 8 9 16 0.5 0 -0.5 8 0 0.5 -0.5 9 -0.5 -0.5 1 Matriz rigidez elemento 17 13 14 15 13 0.5 -0.5 0 14 -0.5 1 -0.5 15 0 -0.5 0.5 Matriz rigidez elemento 6 14 5 6 14 0.5 -0.5 0 5 -0.5 1 -0.5 6 0 -0.5 0.5 Matriz rigidez elemento 12 11 16 9 11 0.5 -0.5 0 16 -0.5 1 -0.5 9 0 -0.5 0.5 Matriz rigidez elemento 18 13 15 16 13 0.5 0 -0.5 15 0 0.5 -0.5 16 -0.5 -0.5 1 Figura 11. Matrices locales de rigidez para cada elemento C1 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 1 -0.5 0 0 0 0 0 0 0 0 0 -0.5 0 0 0 0 C2 -0.5 2 -0.5 0 0 0 0 0 0 0 0 0 -1 0 0 0 C3 C4 C5 C6 C7 C8 C9 0 -0.5 2 -0.5 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -0.5 1 -0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.5 2 -0.5 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 -0.5 2 -0.5 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 -0.5 1 -0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.5 2 -0.5 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -0.5 2 -0.5 0 0 0 0 0 -1 Figura 12. Matriz de rigidez global C10 C11 C12 C13 C14 C15 C16 0 0 -0.5 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -0.5 0 0 0 0 0 -1 1 -0.5 0 0 0 0 0 -0.5 2 -0.5 0 0 0 -1 0 -0.5 2 -1 0 0 0 0 0 -1 4 -1 0 -1 0 0 0 -1 4 -1 0 0 0 0 0 -1 4 -1 0 -1 0 -1 0 -1 4 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 _ _ conoce el valor de u = u y en Γ 2 q = q donde q = ∂u ∂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 1 Γ2 Integrando por partes el término Γ1 2 =0 Γ2 ∫ (∇ w)udΩ se obtiene: 2 Ω ∫ (∇ 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 Ω Ω Γ1 2 Γ2 Reemplazando en la ecuación y cancelando el término ∫ u (∇w)dΓ 2 se obtiene: Γ2 _ _ − ∫ ∇ 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 Ω Ω Γ1 2 Γ2 Sustituyendo en la ecuación y cancelando el término ∫ w(∇u )dΓ 1 Γ1 se tiene: _ _ 2 w ∇ ud Ω − w ∇ ud Γ + u ∇ w d Γ − bwd Ω + w q d Γ − u 2 1 2 ∫ ∫ ∫ ∫Ω ∫ ∫ (∇w)dΓ1 = 0 Ω Γ2 Γ1 Γ2 Γ1 Integrando por partes dos veces el término ∫ w∇ udΩ se obtiene: 2 Ω ∫ 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 1 Γ2 Remplazando y cancelando los términos ∫ u∇ wd Γ1 y Γ1 Γ1 ∫ w∇udΓ 2 se obtiene: Γ2 ∫ (∇ w)udΩ − ∫ u∇wdΓ + ∫ w∇udΓ − ∫ bwdΩ + ∫ w q dΓ − ∫ u(∇w)dΓ _ 2 2 Ω Γ2 1 Γ1 _ 2 Ω 2 Γ2 1 Γ2 =0 Γ1 Reorganizando los términos: ∫ (∇ w)udΩ − ∫ bwdΩ = − ∫ w q d Γ − ∫ w∇udΓ + ∫ u ∇wdΓ + ∫ u (∇w)dΓ _ _ 2 2 Ω Ω Γ2 1 Γ1 2 Γ2 1 Γ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: La ecuación u* = 1 1 * 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 Donde δ : i = Lim δ 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 En la integral ∫ (∇ w)udΩ se toma w = u 2 * Ω 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 Ω ci es un factor que permite modificar el valor de la función de acuerdo con la punto i. 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 2 i i w = u* ∇w = q * ∇u = q Ω 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 j =1 j =1 c i u i + ∑ H iju i + D i = ∑ G ij q j 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í: u* = 1 1 ln 2π r Para un medio bidimensional isotrópico. 1 4πr Para un medio tridimensional isotrópico. y u* = r es la distancia desde punto de origen a la frontera considerada. q* = ∂u * −> ∂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: u* = 1 1 ln 2π r , q* = ∂u * −> ∂n , φ1 = 1 (1 − ε ) 2 , φ2 = 1 (1 + ε ) 2 Sea ? la frontera comprendida entre los puntos A y B. 3 (XB ,YB) (X ,Y) ?j r i (XA (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 ) , +ε 2 2 [ Y (ε ) = (YA + YB ) (Y − YA ) +ε B 2 2 Para el radio se tiene: r 2 = ( X − X I )2 + (Y − Y I )2 [ con − 1 ≤ ε ≤ 1 ] 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 B − X A ) , (Y A + YB ) + ε (YB − YA ) (X + X B ) Γ (ε ) = A +ε 2 2 2 2 ' Su derivada Γ (ε ) y magnitud de la derivada son respectivamente: ( X − X A ) (YB − YA ) 1 Γ ' (ε ) = B , ( X B − X A ) 2 + (YB − YA )2 y Γ ' (ε ) = 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Γ Γ q = φ1 q 1 + φ 2 q 2 u* = y 1 1 ln 2π r Reemplazando q y u* en la integral ∫ (φ q 1 1 + φ 2q 2 Γ )1 q1 1 ln dΓ = 2π r 2π q 1 1 ∫ (φ1 )ln r dΓ + 2π ∫ (φ 2 ) ln r dΓ 2 Γ Γ 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 2π q 1 ∫ (φ1 ) ln dΓ = ∫ (φ1 (ε )) ln 1 r Γ 2π Γ 1 ´' Γ (ε ) dε r (ε ) Se tiene: 1 1 ´' 1 1 ( X − X ) 2 + (Y − Y )2 dε Γ (ε ) dε = ∫ (1− ε ) ln B A B A 2 2 2 2 r(ε ) Γ ( X ( ε ) − X ) + ( Y ( ε ) − Y ) I I ∫ (φ1(ε )) ln Γ 4.5.1.2 Calculo de la integral que contiene el termino q* Sea la integral: ∫ uq * dΓ Γ Para q* = ∂u * −> ∂n se tiene q* = ∂u * −> ∂n −> = ∇u * • n En dos dimensiones se tiene: 1 1 ∂u * ∂u * ∇u* = ∇ ln = , , 2π r ∂x ∂y ∂ u * ∂u * ∂ r = ∂x ∂r ∂ x ∂u * ∂u * ∂r = ∂y ∂r ∂y 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) −> −> n= i −> j 0 0 X B − X A YB − Y A −> k −> 1 = (YA − YB ) i + ( X B − X A ) 0 Reemplazando los términos anteriores en q* = q* = ∂u * −> ∂n −> j −> = ∇u * • n se tiene: −> X − X I Y − YI = ∇ u * • n = − ,− ⋅ (YA − YB , X B − X A ) −> 2 2 2 π r 2 π r ∂n ∂u * El valor de u en un punto del elemento en función ε de esta dado por: u(ε ) = φ1 u A + φ 2 u B = q* = q* = 1 1 (1 − ε )u A + (1 + ε )u B 2 2 −> X (ε ) − X I Y (ε ) − Y I = ∇u * • n = − ,− 2 2 π r ( ε ) 2πr 2 (ε ) ∂n ∂u * −> ⋅ (Y A − Y B , X B − X A ) −> ( X (ε ) − X I )(Y A − YB ) + (Y (ε ) − Y I )( X B − X A ) = ∇u * • n = − 2 2 π r ( ε ) ∂n ∂u * −> 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 1 A B ( X (ε ) − X I )(YA − YB ) + (Y (ε ) − YI )( X B − X A ) ' Γ (ε ) dε ∫Γ u(ε )q * (ε )dΓ = −∫ 2 (1 − ε )u + 2 (1 + ε )u 2πr 2 (ε ) Donde: ( X − X A ) , (Y A + YB ) + ε (YB − YA ) (X + X B ) Γ (ε ) = A +ε B 2 2 2 2 ( X − X A ) (Y B − Y A ) Γ ' (ε ) = B , 2 2 y Γ ' (ε ) = ∫ 1 2 ( X B − X A ) 2 + (YB − Y A )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 − ε ) 2πr 2 (ε ) 2 Γ 2 1 ( X(ε ) − X I )(YA − YB ) + (Y(ε ) − YI )( X B − X A ) 1 u B ∫φ2 q11 * dΓ = −u B ∫ (1 + ε ) 2 2πr 2 (ε ) 2 Γ ( XB − X A ) 2 + (YB − YA )2 dε ( X B − X A )2 + (YB − YA )2 dε 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 1 2 3 4 5 6 7 Peso Coordenada 1 Coordenada 2 Coordenada 3 0.225 0.33333333 0.33333333 0.33333333 0.12592918 0.79742699 0.10128651 0.10128651 0.12592918 0.10128651 0.79742699 0.10128651 0.12592918 0.10128651 0.10128651 0.79742699 0.13239416 0.05971587 0.47014206 0.47014206 0.13239416 0.47014206 0.05971587 0.47014206 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 ?3 ?2 4 1 2 ?1 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 ∫ ∫φ1q12 * dΓ2 + Γ∫1φ2q11 *dΓ1 ∫φ1q13 *dΓ3 + Γ∫2φ2q12 *dΓ2 Γ∫1 Γ3 Γ2 Γ3 u1 2 φ q * dΓ + φ q *dΓ c + ∫ φ1 q22 * dΓ2 + ∫ φ2 q21 * dΓ1 φ1 q23 *dΓ3 + ∫ φ2 q22 *dΓ2 u2 1 21 1 2 23 3 ∫ ∫ ∫ Γ1 Γ3 Γ2 Γ1 Γ3 Γ2 u3 3 ∫φ1q32 * dΓ2 + ∫φ2q31 * dΓ1 c + ∫φ1q33 * dΓ3 + ∫φ2q32 *dΓ2 ∫ φ1 q31 * dΓ1 + ∫ φ2 q33 * dΓ3 Γ3 Γ2 Γ1 Γ3 Γ2 Γ1 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: ∫ φ1u11 * dΓ1 Γ1 ∫ φ1u21 * dΓ1 Γ1 ∫ φ1u31 * dΓ1 Γ1 ∫φ u 2 11 ∫φ u 2 ∫φ u * dΓ2 ∫φ u * dΓ2 ∫φ u * dΓ2 * dΓ1 Γ1 1 12 ∫φ u 21 * dΓ1 Γ1 1 22 Γ2 ∫φ u 2 31 * dΓ1 1 32 22 ∫φ u 32 * dΓ2 Γ2 2 Γ2 ∫φ u * dΓ3 ∫φ u * dΓ3 ∫φ u * dΓ3 1 13 Γ3 ∫φ u 2 Γ2 Γ1 * dΓ2 2 12 Γ2 1 23 Γ3 * dΓ2 Γ2 1 33 Γ3 q11 ∫Γ3φ2u13 * dΓ3 q21 q22 φ u * d Γ ∫ 2 23 3 q32 Γ3 q33 φ u * d Γ 2 33 3 ∫ Γ3 q13 Para el problema de la placa rectangular se tiene: 9 10 10 9 13 q = 10 8 11 12 11 7 8 7 9 6 10 8 15 16 6 b = -5 T = 300 °C 11 14 7 18 13 12 1 4 2 q = 10 4 5 3 2 Nodo 5 2 1 1 6 14 16 12 T = 0 °C 5 17 15 4 3 3 Figura 17. División dominio para elementos de frontera. 5 Celda 5 Elemento de frontera La matriz H queda como sigue: R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 C1 -0.250 0.070 0.038 0.026 0.035 0.035 0.030 0.035 0.035 0.026 0.038 0.070 C2 0.000 -0.500 0.000 0.000 0.034 0.041 0.037 0.047 0.052 0.047 0.063 0.085 C3 0.000 0.000 -0.500 0.000 0.085 0.063 0.047 0.052 0.047 0.037 0.041 0.034 C4 0.026 0.038 0.070 -0.250 0.070 0.038 0.026 0.035 0.035 0.030 0.035 0.035 C5 0.047 0.063 0.085 0.000 -0.500 0.000 0.000 0.034 0.041 0.037 0.047 0.052 C6 0.037 0.041 0.034 0.000 0.000 -0.500 0.000 0.085 0.063 0.047 0.052 0.047 C7 0.030 0.035 0.035 0.026 0.038 0.070 -0.250 0.070 0.038 0.026 0.035 0.035 C8 0.037 0.047 0.052 0.047 0.063 0.085 0.000 -0.500 0.000 0.000 0.034 0.041 C9 0.047 0.052 0.047 0.037 0.041 0.034 0.000 0.000 -0.500 0.000 0.085 0.063 C10 0.026 0.035 0.035 0.030 0.035 0.035 0.026 0.038 0.070 -0.250 0.070 0.038 C11 0.000 0.034 0.041 0.037 0.047 0.052 0.047 0.063 0.085 0.000 -0.500 0.000 La matriz G: R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 C1 0.12 -0.03 -0.19 -0.27 -0.28 -0.30 -0.33 -0.31 -0.29 -0.29 -0.22 -0.12 C2 -0.03 0.12 -0.15 -0.24 -0.26 -0.29 -0.32 -0.30 -0.29 -0.29 -0.23 -0.14 C3 -0.15 0.12 -0.03 -0.19 -0.22 -0.26 -0.31 -0.29 -0.29 -0.30 -0.25 -0.19 C4 -0.19 -0.03 0.12 -0.15 -0.19 -0.25 -0.30 -0.29 -0.29 -0.31 -0.26 -0.22 C5 -0.24 -0.15 0.12 -0.03 -0.14 -0.23 -0.29 -0.29 -0.30 -0.32 -0.29 -0.26 C6 -0.27 -0.19 -0.03 0.12 -0.12 -0.22 -0.29 -0.29 -0.31 -0.33 -0.30 -0.28 C7 -0.29 -0.22 -0.12 0.12 -0.03 -0.19 -0.27 -0.28 -0.30 -0.33 -0.31 -0.29 C8 -0.29 -0.23 -0.14 -0.03 0.12 -0.15 -0.24 -0.26 -0.29 -0.32 -0.30 -0.29 C9 -0.30 -0.25 -0.19 -0.15 0.12 -0.03 -0.19 -0.22 -0.26 -0.31 -0.29 -0.29 C10 -0.31 -0.26 -0.22 -0.19 -0.03 0.12 -0.15 -0.19 -0.25 -0.30 -0.29 -0.29 C11 -0.32 -0.29 -0.26 -0.24 -0.15 0.12 -0.03 -0.14 -0.23 -0.29 -0.29 -0.30 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 C13 -0.33 -0.31 -0.29 -0.29 -0.22 -0.12 0.12 -0.03 -0.19 -0.27 -0.28 -0.30 C14 -0.32 -0.30 -0.29 -0.29 -0.23 -0.14 -0.03 0.12 -0.15 -0.24 -0.26 -0.29 C15 -0.31 -0.29 -0.29 -0.30 -0.25 -0.19 -0.15 0.12 -0.03 -0.19 -0.22 -0.26 C16 -0.30 -0.29 -0.29 -0.31 -0.26 -0.22 -0.19 -0.03 0.12 -0.15 -0.19 -0.25 C17 -0.29 -0.29 -0.30 -0.32 -0.29 -0.26 -0.24 -0.15 0.12 -0.03 -0.14 -0.23 C18 -0.29 -0.29 -0.31 -0.33 -0.30 -0.28 -0.27 -0.19 -0.03 0.12 -0.12 -0.22 C19 -0.27 -0.28 -0.30 -0.33 -0.31 -0.29 -0.29 -0.22 -0.12 0.12 -0.03 -0.19 C20 -0.24 -0.26 -0.29 -0.32 -0.30 -0.29 -0.29 -0.23 -0.14 -0.03 0.12 -0.15 C21 -0.19 -0.22 -0.26 -0.31 -0.29 -0.29 -0.30 -0.25 -0.19 -0.15 0.12 -0.03 C22 -0.15 -0.19 -0.25 -0.30 -0.29 -0.29 -0.31 -0.26 -0.22 -0.19 -0.03 0.12 C23 -0.03 -0.14 -0.23 -0.29 -0.29 -0.30 -0.32 -0.29 -0.26 -0.24 -0.15 0.12 C12 -0.33 -0.30 -0.28 -0.27 -0.19 -0.03 0.12 -0.12 -0.22 -0.29 -0.29 -0.31 C24 0.12 -0.12 -0.22 -0.29 -0.29 -0.31 -0.33 -0.30 -0.28 -0.27 -0.19 -0.03 C12 0.000 0.085 0.063 0.047 0.052 0.047 0.037 0.041 0.034 0.000 0.000 -0.500 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 1 2 3 4 5 6 7 8 9 10 11 12 4.5.3 T 300.00 198.76 98.01 0.00 0.00 0.00 0.00 98.02 198.75 300.00 300.00 300.00 Qd Qa 10.00 10.00 10.00 42.74 61.94 61.97 10.00 10.00 10.00 -57.37 -39.63 -39.60 -57.45 10.00 10.00 10.00 61.94 61.97 42.66 10.00 10.00 10.00 -39.63 -39.60 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. qa qd 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 = REAL FUNCTION fPhi2(PGauss) REAL,INTENT(IN) :: PGauss fPhi2 = (1+PGauss)/2 END FUNCTION fPhi2 1 (1 + ε ) . 2 La función fQRadial evalúa la función radial q * en el punto PG desde el nodo prmNodo. q* = −> X (ε ) − X I Y (ε ) − Y I = ∇ u * • n = − ,− ⋅ (Y A − YB , X B − X A ) −> 2 2 2π ⋅ r (ε ) 2π ⋅ r (ε ) ∂n ∂u * 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. Γ ' (ε ) = 1 2 ( X B − X A ) 2 + (YB − YA )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 − ε ) ln ∫Γ 2 1 ( X (ε ) − X I ) + (Y (ε ) − YI ) 2 2 1 2 ( X B − X A )2 + (YB − YA )2 dε 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. u * (ε ) = 1 ln 2π 1 ( 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 Nodo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 FDM T FVM T 300.00 200.00 100.00 0.00 0.00 0.00 0.00 100.00 200.00 300.00 300.00 300.00 210.00 110.00 110.00 210.00 300.00 200.00 100.00 0.00 0.00 0.00 0.00 100.00 200.00 300.00 300.00 300.00 210.00 110.00 110.00 210.00 FEM T 300.00 200.00 100.00 0.00 0.00 0.00 0.00 100.00 200.00 300.00 300.00 300.00 210.00 110.00 110.00 210.00 Q -53.30 43.30 120.00 120.00 46.70 -56.70 -80.00 -80.00 T 300.00 198.76 98.01 0.00 0.00 0.00 0.00 98.02 198.75 300.00 300.00 300.00 210.39 109.77 109.77 210.39 BEM Qd 10.00 10.00 10.00 42.74 61.94 61.97 10.00 10.00 10.00 -57.37 -39.63 -39.60 Qa ANSYS 8.0 T -57.45 10.00 10.00 10.00 61.94 61.97 42.66 10.00 10.00 10.00 -39.63 -39.60 300.00 197.57 97.57 0.00 0.00 0.00 0.00 97.57 197.57 300.00 300.00 300.00 209.65 109.65 109.65 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 20 -56.7 10 20 20 9 -80 11 16 T = 300 °C 0 8 210 110 15 7 46.7 6 120 B= -180 -80 12 13 -53.3 1 T = 0 °C 14 210 2 20 110 3 20 5 120 4 43.3 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 10 -57.37 10 10 16 -39.6 12 -39.6 13 300 10 10 9 -39.63 11 -39.63 T = 300 °C -57.45 1 10 98.02 0 10 8 210.39 109.77 15 10 7 42.66 6 61.97 61.97 B= -180 210.39 T = 0 °C 14 2 10 109.77 3 10 198.76 10 10 98.01 5 61.94 61.94 4 42.74 10 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 Diferencias Finitas Modulo Volumenes Finitos Modulo Elementos Finitos Modulo Elementos 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 NNF NNI NEF NCI XF YF Conexion NodosDeCeldas AreaCelda U Q Numero Nodos = NNF + NNI Numero Nodos Frontera Numero Nodos Internos Numero Elementos Frontera Numero Celdas Internas Vector coordenadas X de nodos Vector c oordenadas Y de los nodos Arreglo bidimensional indica la conexión de los elementos de frontera. Arreglo indica los nodos que conforman una celda interna. Vector que indica el área de las celdas internas Vector para almacenar el valor del Potencial 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 NNI NEF NCI Número nodos de frontera Numero nodos internos Número de líneas de frontera 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 S E Numero nodo Nodo Sur Nodo Este N W X Y C V Nodo Norte Nodo Oeste Coordenada X Coordenada Y Código condición del nodo 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. McGrawHill, 1994. 280p. Estados Unidos: 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. Mathematicians/Galerkin.html> [En línea]. <http://www.history.mcs.st- andrews.ac.uk/