PEFICA-vol1

PEFiCA Programa de elementos finitos a código abierto  versión 1.0 Volumen 1. Descripción y manejo del programa PEFiCA

Views 295 Downloads 14 File size 6MB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

PEFiCA Programa de elementos finitos a código abierto  versión 1.0 Volumen 1. Descripción y manejo del programa

PEFiCA 1.0

Dorian L. Linero S.

PEFiCA Programa de elementos finitos a código abierto  versión 1.0 Volumen 1. Descripción y manejo del programa

Dorian Luis Linero Segrera Profesor Asociado Facultad de Ingeniería Universidad Nacional de Colombia 2010

© Dorian Luís Linero Segrera – Universidad Nacional de Colombia, 2010 Certificado de Registro de Soporte Lógico (Software) de la Dirección Nacional de Derechos de Autor, Ministerio del Interior y de Justicia, libro 13, tomo 25, partida 403 del 20 de mayo de 2010.

Índice Índice ................................................................................................................................ 1 Capítulo 1 Descripción general del programa .................................................................. 5 1.1. Antecedentes .................................................................................................. 6 1.2. Objetivos ........................................................................................................ 7 1.3. Alcance........................................................................................................... 7 1.4. Características técnicas .................................................................................. 8 Capítulo 2 Estructura y manejo del programa................................................................ 11 2.1. Estructura del pre- y post-proceso: hojas de cálculo.................................... 11 2.2. Estructura del proceso: módulos y rutinas en VBA ..................................... 12 2.3. Capacidad del programa PEFiCA ................................................................ 20 2.4. Instalación y ejecución del programa PEFiCA ............................................ 21 2.5. Editor de Visual Basic.................................................................................. 23 2.6. Etapas de cálculo con el programa PEFiCA ................................................ 27 Capítulo 3 Tipos de datos, formatos y matrices ............................................................. 31 3.1. Tipos de datos .............................................................................................. 31 3.1.1. Variables escalares ................................................................................... 31 3.1.2. Variables matriciales o matrices .............................................................. 32 3.1.3. Variables especiales ................................................................................. 33 3.2. Formatos de salida........................................................................................ 33 3.3. Presentación de resultados de forma secuencial en una hoja de cálculo...... 35 3.4. Matrices especiales....................................................................................... 37 3.4.1. Matrices o tablas de la topología de la malla de elementos finitos.......... 37 3.4.2. Matrices o tablas de fuerzas y desplazamientos aplicados....................... 41 Capítulo 4 Instrucciones de edición de matrices ............................................................ 45 4.1. EDLECI........................................................................................................ 45 4.2. EDLECR ...................................................................................................... 46 4.3. EDLECE ...................................................................................................... 48 4.4. EDTABI ....................................................................................................... 49 4.5. EDTABR...................................................................................................... 50 4.6. EDIMEI........................................................................................................ 52 4.7. EDIMER ...................................................................................................... 53 4.8. EDIMPI........................................................................................................ 54 4.9. EDIMPR....................................................................................................... 55 4.10. EDLIMH ...................................................................................................... 56 Capítulo 5 Instrucciones de operaciones matriciales básicas ......................................... 57 5.1. MTCONS ..................................................................................................... 57 5.2. MTCONI...................................................................................................... 58 5.3. MTSUBM .................................................................................................... 58

2

Índice

5.4. MTADJU ......................................................................................................59 5.5. MTADMR.....................................................................................................61 5.6. MTADMI ......................................................................................................63 5.7. MTTRAN......................................................................................................63 5.8. MTMULT .....................................................................................................64 5.9. MTMUL3......................................................................................................65 5.10. MTSUMA .....................................................................................................67 5.11. MTREST.......................................................................................................68 5.12. MTPROD ......................................................................................................69 5.13. MTDIVI ........................................................................................................69 5.14. MTPORE ......................................................................................................70 5.15. MTSUCI........................................................................................................71 5.16. MTSUCR ......................................................................................................72 5.17. MTMACI ......................................................................................................72 5.18. MTMACR.....................................................................................................73 5.19. MTBAND .....................................................................................................73 5.20. MTFUDU......................................................................................................74 5.21. MTFCLU ......................................................................................................75 5.22. MTDETE ......................................................................................................76 5.23. MTINVE .......................................................................................................77 5.24. MTCOPI........................................................................................................78 Capítulo 6 Instrucciones de solución de ecuaciones simultáneas ...................................79 6.1. SOGAUS.......................................................................................................79 6.2. SOCHLK.......................................................................................................80 6.3. SOBAND ......................................................................................................81 Capítulo 7 Instrucciones de cálculo de valores y vectores propios .................................85 7.1. VPITER.........................................................................................................85 7.2. VPJACK........................................................................................................87 7.3. VPJACO........................................................................................................88 Capítulo 8 Instrucciones para crear la matriz de funciones de forma de un elemento....91 8.1. NUNID2........................................................................................................91 8.2. NUNID3........................................................................................................93 8.3. NTRIAN........................................................................................................94 8.4. NRECTA.......................................................................................................97 8.5. NTRIEL ......................................................................................................101 8.6. NRECEL .....................................................................................................102 Capítulo 9 Instrucciones para crear la matriz de derivadas de funciones de forma de un elemento ..............................................................................................................................105 9.1. BUNID2 ......................................................................................................105 9.2. BUNID3 ......................................................................................................106 9.3. BTRIAN......................................................................................................108 9.4. BRECTA.....................................................................................................109 9.5. BTRIEL.......................................................................................................111 9.6. BRECEL .....................................................................................................112 © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

3

Capítulo 10 Instrucciones para crear la matriz de rigidez de un elemento................... 115 10.1. KUNID2..................................................................................................... 115 10.2. KUNID3..................................................................................................... 116 10.3. KTRIAN..................................................................................................... 118 10.4. KRECTA.................................................................................................... 119 10.5. KTRIEL...................................................................................................... 121 10.6. KRECEL .................................................................................................... 126 Capítulo 11 Instrucciones para crear el vector de fuerzas de un elemento .................. 129 11.1. FUNID2 ..................................................................................................... 129 11.2. FUN2QL .................................................................................................... 130 11.3. FUNID3 ..................................................................................................... 131 11.4. FUN3QL .................................................................................................... 132 11.5. FTRIAN ..................................................................................................... 133 11.6. FRECTA .................................................................................................... 134 11.7. FTRIES ...................................................................................................... 136 11.8. FTRIEC ...................................................................................................... 138 11.9. FRECES ..................................................................................................... 140 11.10. FRECEC..................................................................................................... 142 Capítulo 12 Instrucciones para crear matrices de constantes elásticas......................... 145 12.1. CELAPL..................................................................................................... 145 Capítulo 13 Instrucciones de cambios de base ............................................................. 147 13.1. TRVECO.................................................................................................... 147 13.2. TRESP2...................................................................................................... 148 13.3. TRPRIN ..................................................................................................... 149 13.4. TRVMIS..................................................................................................... 151 Capítulo 14 Instrucciones para numerar los grados de libertad ................................... 153 14.1. NGLNUD................................................................................................... 153 14.2. NGLELE .................................................................................................... 155 14.3. NGLBAN ................................................................................................... 156 Capítulo 15 Instrucciones para ensamblar y extraer matrices ...................................... 159 15.1. ENSAMK................................................................................................... 159 15.2. ENSAMV................................................................................................... 161 15.3. ENBAND ................................................................................................... 163 15.4. ENSAMX................................................................................................... 163 15.5. EXTRAV ................................................................................................... 165 Capítulo 16 Instrucciones de organización de matrices ............................................... 169 16.1. ORFUGL.................................................................................................... 169 16.2. ORGLFU.................................................................................................... 172 16.3. ORSONO ................................................................................................... 173 16.4. ORSONM................................................................................................... 176 16.5. ORNUDE ................................................................................................... 178 16.6. ORNLIN..................................................................................................... 180 16.7. ORNLIX..................................................................................................... 181 16.8. ORELIN ..................................................................................................... 182 16.9. ORELIX ..................................................................................................... 184 © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

4

Índice

16.10. ORXYNU....................................................................................................186 Capítulo 17 Instrucciones para importar y exportar matrices .......................................189 17.1. IOEXPR ......................................................................................................190 17.2. IOEXPI........................................................................................................191 17.3. IOEXPD ......................................................................................................192 17.4. IOELDR ......................................................................................................193 17.5. IOEXPT ......................................................................................................194 Capítulo 18 Instrucciones internas de uso común .........................................................195 18.1. PBDEMR ....................................................................................................195 18.2. PBDEMI......................................................................................................195 18.3. PBATRI ......................................................................................................195 18.4. PBDIST.......................................................................................................196 18.5. PBCOSD .....................................................................................................196 18.6. PBDIAG......................................................................................................197 18.7. PBCOEL .....................................................................................................197 18.8. PBREDO.....................................................................................................198 18.9. PBDINU......................................................................................................198 18.10. PBPGAU.....................................................................................................199 Capítulo 19 Instrucciones gráficas ................................................................................201 19.1. GRAFDE.....................................................................................................204 19.2. GRAFIL ......................................................................................................204 19.3. GRAGEO ....................................................................................................205 19.4. GRAMAT ...................................................................................................207 19.5. GRAFIF ......................................................................................................208 19.6. GRAFIM .....................................................................................................210 19.7. GRAFIE ......................................................................................................214 19.8. GRATDE ....................................................................................................217 19.9. GRATFI ......................................................................................................218 19.10. GRATFE .....................................................................................................221 Capítulo 20 Instrucciones de generación de malla........................................................223 20.1. GEMARE....................................................................................................223 Capítulo 21 Instrucciones para crear el vector de contribución interelemental ............227 21.1. ITRIAN .......................................................................................................228 21.2. IRECTA ......................................................................................................229 Referencias ....................................................................................................................233

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 1 Descripción general del programa Desde la década de los setenta, la simulación numérica en la mecánica de sólidos y fluidos mediante el método de los elementos finitos (Zienkiewicz 1980; Hughes 2000), ha permitido representar el comportamiento de estructuras, suelos, rocas y líquidos ante diferentes acciones, con geometrías irregulares, con varios materiales y con condiciones de borde particulares. En las primeras aplicaciones del método de los elementos finitos se obtenía la distribución de esfuerzos en un sólido de comportamiento lineal elástico bidimensional, sustituyendo el medio continuo por barras elásticas simples (Argyris 1954; Argyris 1955; Clough 1960). Actualmente, el desarrollo de la mecánica computacional y la capacidad de cálculo de los computadores, permiten la simulación de problemas no-lineales en sólidos y fluidos considerando materiales inelásticos, grandes deformaciones, condiciones especiales de contacto y acciones estáticas o dinámicas, entre otras (Crisfield 1991a; Crisfield 1991b; Felippa 1991; Bonet & Wood 1997; Belytschko, Liu et al. 2000; Holzapfel 2000; Reddy 2004; Kojic & Bathe 2005). La potencia y funcionalidad del método de los elementos finitos lo ha convertido en una herramienta importante para la investigación teórica y experimental en aplicaciones de la Mecánica de Sólidos y de Fluidos. De igual forma, el método participa cada vez más en la ingeniería de diseño y construcción en las áreas de Geotecnia, Hidráulica y principalmente en la Ingeniería Estructural. En algunas universidades se ha considerado que la simulación numérica del comportamiento mecánico de sólidos y fluidos debe hacer parte de la formación de un Ingeniero Civil. En particular en la Universidad Nacional de Colombia sede Bogotá, la asignatura Taller III del programa curricular de Ingeniería Civil dedica 3 horas por semana a dicho tema, desde la reforma académica de 1993. En la década de los 70s, las Maestrías en Geotecnia y en Estructuras introducen en sus programas curriculares la simulación numérica de sólidos, ofreciendo como electivas las asignaturas Métodos Numéricos en Geotecnia y Análisis Estructural por Elementos Finitos, respectivamente. La intervención del computador como medio para la aplicación del método de los elementos finitos en la simulación de problemas con muchos grados de libertad, exige que el estudiante, además de comprender el método, programe y automatice el procedimiento de cálculo. La investigación en el tema busca desarrollar nuevos modelos numéricos que describan el comportamiento de sólidos y fluidos con mayor precisión y eficiencia. Para cumplir este

6

Capítulo 1. Descripción general del programa

objetivo, es habitual que cada centro de investigación cuente con un programa básico de elementos finitos a código abierto, el cual enriquece permanentemente con sus nuevos desarrollos. Los planteamientos expresados en los párrafos anteriores justificaron y motivaron la creación de PEFiCA, acrónimo que significa Programa de Elementos Finitos a Código Abierto. Este documento está dividido en tres partes. La primera parte o Capítulo 1 presenta los antecedentes, el objetivo y el alcance del programa. La segunda parte, conformada por los capítulos 2 y 3, describe la estructura y el manejo del programa, así como los tipos y formatos de los datos de entrada y de salida. En la tercera parte presentada entre los capítulos 4 y 21, se detallan las instrucciones o subrutinas disponibles para construir el proceso principal de cálculo, donde cada capítulo agrupa las instrucciones con un fin común.

1.1. Antecedentes En los años 60s después de establecidos los conceptos básicos del análisis matricial, comienza el desarrollo de programas aislados de simulación numérica con propósito específico. Mediante un proyecto de cooperación de la NASA surge en 1968, uno de los primeros programas de elementos finitos de uso general denominado NASTRAN (Nasa STRuctural ANalysis) (MacNeal 1972). Desde entonces se han desarrollado muchos programas de computador con objetivos similares. En la actualidad se encuentran algunos programas comerciales como el ABACUS, ALGOR, ANSYS, COSMOS y ADINA, entre otros, que permiten la simulación numérica de problemas multifísicos con gran eficiencia y comodidad para el usuario. En este tipo de herramientas un programa previamente compilado realiza el proceso de cálculo y otro programa denominado post proceso, presenta los resultados, actuando en conjunto como una “caja negra” para el usuario. Por otro lado, los centros de investigación en el área han desarrollado programas a código abierto, es decir, grupos de rutinas observables y modificables, que después de ser compiladas en conjunto generan un programa ejecutable de elementos finitos. Entre los más populares se encuentran los programas escritos en lenguaje FORTRAN como el FEAP (Taylor 2008) y el COMET (Cervera, Agelet et al. 2001), y las herramientas ejecutables en el programa MATLAB como el FEMLAB (COMSOL 2007) y CALFEM (LundUniversity 1999). En la Universidad Nacional de Colombia se desarrolló el Programa Didáctico de Elementos Finitos - Euler (Linero 1999), el cual proporcionaba al usuario un grupo de instrucciones fijas con las cuales se podrían resolver algunos problemas de campo y de elasticidad unidimensional y bidimensional. Durante 3 años éste programa fue incorporado en las asignaturas correspondientes en los programas curriculares de Ingeniería Civil y de Maestría en Ingeniería – Estructuras. La respuesta de los estudiantes reveló las fortalezas y debilidades de la herramienta, dando paso a la creación del nuevo programa denominado PEFiCA.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

7

1.2. Objetivos El programa PEFiCA tiene como objetivo principal motivar, estimular y facilitar el aprendizaje del Método de los Elementos Finitos (MEF) en el campo de la Ingeniería Civil, a través del uso de subrutinas preestablecidas para resolver un problema específico. El estudiante debe programar el procedimiento principal a partir de las subrutinas proporcionadas por el programa o mediante nuevas rutinas creadas por él mismo. Con lo anterior el programa busca que el usuario participe activamente del proceso de aprendizaje en el tema, observando, entendiendo y desarrollando progresivamente cada una de las etapas de cálculo. El programa pone al estudiante en un estadio intermedio entre la programación de todos y cada uno de los procedimientos de cálculo y el proceso automatizado entrada de datos y presentación de resultados. El programa evita que el usuario ocupe mucho tiempo en los procedimientos básicos como la solución de un sistema de ecuaciones simultaneas o el ensamblaje de una matriz, sin embargo permite que observe y modifique cualquiera de las subrutinas. Esta transparencia y flexibilidad del programa le permitan al usuario analizar cada procedimiento y desarrollar nuevos procesos de cálculo.

1.3. Alcance Las rutinas definidas en la primera versión programa permiten resolver algunos problemas particulares en Ingeniería y específicamente en mecánica de sólidos, mediante el método de los elementos finitos. Por un lado, PEFiCA soluciona de forma débil la ecuación diferencial de campo unidimensional presentada en la Expresión (10.1), la cual gobierna problemas como deflexión de vigas, alargamiento de barras sometidas a fuerza axial distribuida y transferencia de calor unidimensional. De igual manera, se puede resolver la ecuación diferencial parcial de campo bidimensional denominada ecuación de Poisson (Oñate & Zárate 2000) expresada en la Ecuación (10.5), que define varios fenómenos en Ingeniería, tales como: distribución de esfuerzos cortantes en barras de sección transversal arbitraria sometidas a torsión pura, líneas de potencial y de corriente en flujo irrotacional, infiltración del agua en suelos permeables y transferencia de calor bidimensional, entre otros. Asimismo, el programa permite obtener el campo de los desplazamientos, deformaciones y esfuerzos de un sólido sometido a fuerzas estáticas en condición plana de esfuerzos o de deformaciones, considerando que las deformaciones son infinitesimales y que el material es elástico lineal isótropo. Para dar solución a estos tipos de problemas el programa cuenta con subrutinas capaces de construir la matriz de funciones de forma, la matriz de operadores diferenciales actuando sobre funciones de forma, el vector de fuerzas y la matriz de rigidez de los elementos finitos unidimensional lineal y cuadrático, triangular lineal y rectangular bilineal de campo, triangular lineal y rectangular bilineal de elasticidad. Otro grupo de subrutinas permite, entre otras operaciones matriciales, calcular el vector solución de un sistema de ecuaciones simultáneas linealmente independiente y los valores y vectores propios de un sistema de

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

8

Capítulo 1. Descripción general del programa

ecuaciones homogéneo. También existen rutinas que ensamblan matrices y vectores de acuerdo con la numeración de los valores nodales o grados de libertad del problema. Con respecto al pre y post proceso, hay rutinas que convierten el contenido de las celdas de las hojas de cálculo en matrices y otras que escriben las matrices obtenidas en las celdas de una hoja de cálculo. Asimismo, otras subrutinas presentan la función de aproximación y sus derivadas en el interior de cada elemento finito o los valores promedio en los nudos de la malla, mediante gráficos de iso líneas o de áreas llenas en escala de colores o de grises. A partir del Capítulo 3 de este documento se describen con detalle las instrucciones desarrolladas en el programa clasificadas por su objetivo, por ejemplo, las subrutinas que construyen la matriz de rigidez de los diferentes elementos finitos están en el Capítulo 10. El diseño del programa permite la construcción de nuevas subrutinas que conlleven a la solución de otros problemas. Por ejemplo, para resolver un problema de elasticidad plana donde el material es ortótropo, el usuario tan solo debe crear una instrucción que calcule la matriz de rigidez del elemento finito, ya que los demás procedimientos en la solución del problema están preestablecidos en el programa. De hecho varias tesis y trabajos de final de curso han ampliando y modificando la versión preliminar de PEFiCA para lograr objetivos particulares (Herrera 2007; Puerto 2008; Parra 2009).

1.4. Características técnicas Las principales características técnicas del programa de elementos finitos a código abierto PEFiCA son las siguientes: Funcionalidad. El programa tiene más de 100 instrucciones escritas en lenguaje Visual Basic for Applications que permiten resolver los problemas indicados en el apartado anterior mediante método de los elementos finitos. Estabilidad. Las subrutinas del programa cuentan con controles y trampas de errores que garantizan la estabilidad del programa durante su ejecución. Sin embargo, la posibilidad de modificar las subrutinas de los programas a código abierto como este, reducen su robustez. Usabilidad. La aplicación Microsoft Excel proporciona una interfaz de entrada y salida de datos ágil y amigable para el usuario. Por otro lado, el post proceso gráfico del programa PEFiCA, permite visualizar cómodamente las cantidades de interés en el dominio del problema, como por ejemplo: funciones de campo, desplazamientos, deformaciones y esfuerzos. Eficiencia. Debido a sus fines didácticos, el programa guarda en la memoria RAM algunas matrices características de las etapas intermedias del procedimiento, sin embargo, los usuarios avanzados podrán evitar que dichas matrices sean guardadas. El tiempo de ejecución depende del número de grados de libertad que tenga el problema y de la cantidad de resultados intermedios que se desean observar. Extendibilidad. Al ser un programa a código abierto es fácil adicionar nuevas subrutinas que permitan la solución de otros problemas mediante el método de los elementos finitos. Portabilidad. Tanto el programa como los datos de un problema están contenidos en un libro de Microsoft Excel, esto facilita su portabilidad a computadores que cuenten con © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

9

sistema operativo Microsoft Windows y con el programa Microsoft Excel, lo cual es común en el medio. Documentación. El manual del usuario está dividido en dos volúmenes: el presente documento o volumen 1, el cual contiene la descripción y manejo del programa, y el volumen 2 que presenta los ejemplos de aplicación y los algoritmos de cálculo más representativos. Adicionalmente, se incluyen los archivos de más de 20 ejemplos resueltos con el programa.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 2 Estructura y manejo del programa El Programa de Elementos Finitos a Código Abierto - PEFiCA es una herramienta computacional de análisis de problemas físicos por medio del método de los elementos finitos, cuyas rutinas son visibles, modificables y ejecutables. El programa está conformado por un libro de Microsoft Office Excel que contiene los datos y las rutinas del proceso denominado PEFiCA.xls y por otro programa ejecutable llamado PEFiCAGraf.exe el cual genera las gráficas resultantes del análisis. La documentación incluida en el archivo PEFiCA.pdf presenta la descripción, estructura y manejo del programa y de las rutinas que lo conforman, como también muestra algunos ejemplos de aplicación. Adicionalmente, la carpeta \ejemplos\ tiene los libros de Microsoft Office Excel con los ejemplos de aplicación indicados en la documentación. El libro PEFiCA.xls contiene un grupo de hojas de cálculo que almacena los datos de entrada y de salida asociados al proceso de cálculo escrito y compilado en los módulos de Visual Basic for Applications (VBA). Las partes que conforman el archivo PEFiCA.xls se presentan en los siguientes apartados. Se recomienda al usuario del programa consultar permanente de libros y manuales de referencia de programación en lenguaje VBA aplicado a Microsoft Excel (Microsoft 2001; Roman 2002; Simon 2002; Microsoft 2003; Walkenbach 2004).

2.1. Estructura del pre- y post-proceso: hojas de cálculo El programa puede leer el valor de las celdas de las hojas de cálculo que contengan la información básica del problema que se desea resolver. Asimismo, las matrices resultantes pueden escribirse en las celdas especificadas por el usuario. A continuación se indica una distribución recomendada de las hojas de cálculo como pre y post-proceso del programa. •

Las hojas de entrada de datos constituyen el pre procesador del programa de elementos finitos. En cada una de ellas se almacena parte de la información del problema, como las coordenadas de los nudos, las conectividades del los elementos, las fuerzas aplicadas, entre otras. La Tabla 2.1 describe el contenido sugerido en cada una de las hojas de entrada de datos incluidas en el libro de Excel, sin embargo, el usuario puede modificar la organización presentada de las hojas de cálculo siempre y cuando contenga la información completa del problema.

12

Capítulo 2. Estructura y manejo del programa

Hoja de cálculo TB_GEN

TB_XYZ

TB_ELE

TB_RES

TB_FUN

TB_FUE



Descripción Contiene los parámetros generales del problema como el título, la cantidad de nudos y de elementos de la malla, el número de grados de libertad por nudo, las variables de dibujo de los resultados, etc. Contiene las coordenadas de los nudos de la malla de elementos finitos, ordenados de forma secuencial. A partir de esta tabla se construye la matriz especial de coordenadas de los nudos descrita en la Sección 3.4.1. Contiene los nudos asociados a cada elemento de la malla, ordenados de forma secuencial. A partir de esta tabla se construye la matriz especial de elementos descrita en la Sección 3.4.1. Establece las condiciones de borde naturales, indicando los grados de libertad conocidos por cada nudo. A partir de esta tabla se construye la matriz especial de condiciones de borde descrita en la Sección 3.4.1. Contiene las componentes de las fuerzas puntuales aplicadas a cada uno de los nudos para los problemas de elasticidad. A partir de esta tabla se construye la matriz especial de fuerzas organizadas por nudos descrita en la Sección 3.4.2 Contiene las componentes de las fuerzas distribuidas por unidad de superficie y por unidad de volumen aplicadas sobre los elementos para los problemas de elasticidad. A partir de esta tabla se construye la matriz especial de fuerzas distribuidas descrita en la Sección 3.4.2 Tabla 2.1. Hojas de entrada de datos

La hoja de salida de datos se utiliza para presentar los resultados del problema a través de las matrices escogidas por el usuario. Las instrucciones EDIMEI, EDIMER, EDIMPI y EDIMPR permiten escribir en una hoja de cálculo: matrices y escalares, enteras y reales, con un formato de salida particular. Se recomienda utilizar la hoja TB_OUT para presentar los datos de salida, sin embargo el usuario puede escribir los resultados en las celdas de cualquier hoja de cálculo. El Apartado 3.3 indica como presentar los resultados en la hoja de cálculo TB_OUT de manera secuencial, lo cual evita que se sobrescriban las matrices resultantes.

2.2. Estructura del proceso: módulos y rutinas en VBA Los módulos de VBA contienen las subrutinas del proceso de cálculo clasificadas de acuerdo con su objetivo dentro del método de los elementos finitos. El nombre de cada rutina es de 6 caracteres de los cuales el primero o en algunos casos los dos o tres primeros, indican a que módulo pertenecen. La Tabla 2.2 describe el contenido de cada módulo de Visual Basic, mientras que de la Tabla 2.3 a la Tabla 2.20 se indica el objetivo de cada una de las rutinas existentes en el programa.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

13

PEFiCA – Programa de elementos finitos a código abierto

Módulo

Prefijo de las rutinas

Md MdED

ED

MdMT

MT

MdSO

SO

MdVP

VP

MdN

N

MdB

B

MdK

K

MdF

F

MdCE

CE

MdTR

TR

MdNGL

NGL

MdEN

EN

MdEX

EX

MdOR

OR

MdIO

IO

MdPB

PB

MdGRA

GRA

MdGE

GE

MdI

I

objetivo Contiene solamente la subrutina principal del programa PEFiCA(). Contiene las subrutinas que construyen una matriz a partir de los valores de un grupo de celdas de una hoja de cálculo y que escriben o presentan los coeficientes de una matriz en una hoja de cálculo (Capítulo 4). Contiene las subrutinas que realizan las operaciones básicas entre matrices. Estas instrucciones se describen en el Capítulo 5. Contiene las subrutinas que solucionan sistemas de ecuaciones simultáneas linealmente independientes mediante diferentes métodos. Estas instrucciones se describen en el Capítulo 6. Contiene las subrutinas que calculan los valores y vectores propios en sistemas homogéneos de ecuaciones simultáneas (Capítulo 7). Contiene las subrutinas que crean la matriz o el vector de funciones de forma de un tipo de elemento finito de la librería del programa (Capítulo 8). Contiene las subrutinas que crean la matriz de operadores diferenciales actuando sobre las funciones de forma de un tipo de elemento finito (Capítulo 9). Contiene las subrutinas que crean la matriz de rigidez de los elementos finitos que constituyen la librería del programa (Capítulo 10). Contiene las subrutinas que el vector de fuerzas equivalentes o vector de términos independientes de los elementos finitos que constituyen la librería del programa. Estas instrucciones se describen en el Capítulo 11. Contiene las subrutinas que generan la matriz de constantes elásticas D en materiales cuya relación constitutiva indicada en la Ecuación (12.1). Estas instrucciones se describen en el Capítulo 12. Contiene las subrutinas de cambio de base coordenada de variables físicas como fuerzas, desplazamientos, esfuerzos y deformaciones. En algunas rutinas se construye la matriz de transformación T, y en otros casos la instrucción transforma directamente a la variable física. Estas instrucciones se describen en el Capítulo 13. Contiene las subrutinas que generan matrices o tablas de los identificadores de los grados de libertad o valores nodales asociados a cada uno de los nudos o cada uno de los elementos de la malla. Estas instrucciones se describen en el Capítulo 14. Contiene las subrutinas que construyen la matriz o vector del sistema a partir del ensamblaje de las matrices o vectores elementales (Capítulo 15). Contiene las subrutinas que extraen una matriz o vector elemental conformada por algunos coeficientes de una matriz o vector del sistema (Capítulo 15). Contiene las subrutinas dedicadas a ordenar los coeficientes de una matriz de acuerdo con la numeración de los grados de libertad, de los nudos o de los elementos del problema. Estas instrucciones se describen en el Capítulo 16. Contiene las subrutinas que permiten importar y exportar matrices a un archivo plano. Estas instrucciones se describen en el Capítulo 17. Contiene las subrutinas misceláneas del programa, generalmente utilizadas por las demás instrucciones. Estas instrucciones se describen en el Capítulo 18. Contiene las subrutinas dedicadas a la generación de gráficas de cantidades de interés sobre la malla de elementos finitos (Capítulo 19). Contiene las subrutinas dedicadas a la generación de la malla a partir de una región específica. Estas instrucciones se describen en el Capítulo 20. Contiene las subrutinas dedicadas a la generación de vectores de constribución interelemental. Estas instrucciones se describen en el Capítulo 21. Tabla 2.2. Módulos del programa

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

14

rutina MTCONS MTCONI MTSUBM MTADJU MTADMR MTADMI MTTRAN MTMULT MTMUL3 MTSUMA

Capítulo 2. Estructura y manejo del programa

objetivo Crea una matriz M de nf filas por nc columnas, cuyos coeficientes corresponden a un número real c. Crea una matriz M de nf filas por nc columnas, cuyos coeficientes corresponden a un número entero c. Extrae una submatriz S de la matriz existente M. Crea un vector columna x conformado por dos subvectores columna existentes s y t. Crea una matriz real X conformada por dos submatrices reales existentes S y T, adjuntando T después de la última fila o de la última columna de S. Crea una matriz de términos enteros X conformada por dos submatrices enteras existentes S y T, adjuntando T después de la última fila o de la última columna de S. Calcula la matriz transpuesta de la matriz existente M, creando la matriz T. Multiplica la matriz A por la matriz B obteniendo la matriz C. Multiplica la primera matriz transpuesta AT por la segunda matriz B y el resultado lo multiplica a la primera matriz A. Calcula la matriz C como la suma entre las matrices A y B.

MTDIVI

Calcula la matriz C como la resta de la matriz A menos la matriz B. Multiplica término a término los coeficientes de las matrices A y B, almacenando el resultado en la matriz C. Multiplica término a término los coeficientes de las matrices A y B.

MTPORE

Obtiene la matriz B como resultado de multiplicar el escalar c por la matriz A.

MTSUCI

Suma los coeficientes de una matriz entera A.

MTSUCR

Suma los coeficientes de una matriz real A.

MTMACI

Encuentra el coeficiente máximo o mínimo de una matriz entera A.

MTMACR

MTDETE

Encuentra el coeficiente máximo o mínimo de una matriz real A. Establece el ancho de semi banda de una matriz simétrica llena A y crea la matriz banda B correspondiente. Factoriza una matriz cuadrada M. Factoriza la matriz M en el producto entre una matriz triangular inferior L y una matriz triangular superior U. Calcula el determinante de una matriz cuadrada M.

MTINVE

Calcula la matriz inversa de una matriz cuadrada M mediante eliminación Gaussiana.

MTCOPI

Crea una copia de una matriz real determinada. Tabla 2.3. Instrucciones de operaciones matriciales básicas indicadas en el módulo MdMT

MTREST MTPROD

MTBAND MTFUDU MTFCLU

rutina

objetivo Resuelve un sistema de ecuaciones simultaneas linealmente independiente mediante el método SOGAUS de eliminación de Gauss. Resuelve un sistema simétrico de ecuaciones simultaneas linealmente independiente mediante SOCHLK el método de Cholesky modificado. Resuelve un sistema de ecuaciones simultaneas linealmente independiente mediante el método SOBAND de Cholesky modificado, en el cual la matriz simétrica se lee como una matriz banda. Tabla 2.4. Instrucciones de solución de ecuaciones simultáneas indicadas en el módulo MdSO

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

15

PEFiCA – Programa de elementos finitos a código abierto

rutina EDLECI EDLECR EDLECE

EDTABI

EDTABR

EDIMEI EDIMER EDIMPI EDIMPR EDLIMH

objetivo Crea la matriz entera M para la cual cada coeficiente corresponde a una celda de la hoja de cálculo. Crea la matriz real M para la cual cada coeficiente corresponde a una celda de la hoja de cálculo Captura el valor de una celda específica de una hoja de cálculo y lo guarda en una variable escalar. Construye una matriz entera a partir de un bloque de celdas de una hoja de cálculo específica. En esta subrutina un índice establece en que fila de la matriz creada se guardarán los valores de las celdas Construye una matriz real a partir de un bloque de celdas de una hoja de cálculo específica. En esta subrutina un índice establece en que fila de la matriz creada se guardarán los valores de las celdas. Escribe una variable escalar entera en una hoja de cálculo en el formato de salida para variables enteras. Escribe una variable escalar real en una hoja de cálculo en el formato de salida para variables reales. Escribe una matriz entera en una hoja de cálculo en el formato de salida para variables enteras. Escribe una matriz real en una hoja de cálculo en el formato de salida para variables reales. Borra el contenido de todas las celdas de la hoja de cálculo especificada. Tabla 2.5. Instrucciones de edición de matrices indicadas en el módulo MdED

rutina

objetivo Obtiene el primer vector propio y el primer valor propio mediante el método de la iteración VPITER inversa. Obtiene los vectores propios y los valores propios mediante el método de Jacobi de un sistema VPJACK de ecuaciones homogéneo sin matriz de masas. Obtiene los vectores propios y los valores propios mediante el método de Jacobi de un sistema VPJACO de ecuaciones homogéneo con matriz simétrica de masas. Tabla 2.6. Instrucciones de cálculo de vectores y valores propios, indicadas en el módulo MdVP rutina NUNID2

objetivo Crea la matriz de funciones de forma de un elemento unidimensional lineal.

Crea la matriz de funciones de forma de un elemento unidimensional cuadrático. Crea la matriz de funciones de forma de un elemento triangular lineal con un grado de libertad NTRIAN por nudo. Crea la matriz de funciones de forma de un elemento rectangular bilineal con un grado de NRECTA libertad por nudo. Crea la matriz de funciones de forma de un elemento triangular lineal para elasticidad bidiNTRIEL mensional u otro problema con dos grados de libertad por nudo. Crea la matriz de funciones de forma de un elemento rectangular bilineal para elasticidad NRECEL bidimensional u otro problema con dos grados de libertad por nudo. Tabla 2.7. Instrucciones para crear la matriz de funciones de forma de un elemento, indicadas en el módulo MdN NUIND3

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

16

Capítulo 2. Estructura y manejo del programa

rutina

objetivo Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento BUNID2 unidimensional lineal en un problema de campo unidimensional. Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento BUNID3 unidimensional cuadrático en un problema de campo unidimensional. Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento BTRIAN triangular lineal con un grado de libertad por nudo. Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento BRECTA rectangular bilineal con un grado de libertad por nudo. Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento BTRIEL triangular lineal para elasticidad bidimensional u otro problema con dos grados de libertad por nudo. Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento BRECEL rectangular bilineal para elasticidad bidimensional u otro problema con dos grados de libertad por nudo. Tabla 2.8. Instrucciones para crear la matriz de derivadas de funciones de forma de un elemento, indicadas en el módulo MdB rutina

objetivo Crea la matriz de rigidez de un elemento finito unidimensional lineal preparado para resolver KUNID2 una ecuación diferencial de campo unidimensional. Crea la matriz de rigidez de un elemento finito unidimensional cuadrático preparado para KUNID3 resolver una ecuación diferencial de campo unidimensional.. Crea la matriz de rigidez de un elemento finito triangular lineal preparado para resolver la KTRIAN ecuación diferencial de campo bidimensional de Poisson. Crea la matriz de rigidez de un elemento finito rectangular bilineal preparado para resolver la KRECTA ecuación diferencial de campo bidimensional de Poisson. Crea la matriz de rigidez de un elemento finito triangular lineal de elasticidad para un material KTRIEL isótropo en condición plana de esfuerzos o de deformaciones. Crea la matriz de rigidez de un elemento finito rectangular bilineal de elasticidad para un maKRECEL terial isótropo en condición plana de esfuerzos o de deformaciones. Tabla 2.9. Instrucciones para crear la matriz rigidez de un elemento, indicadas en el módulo MdK

rutina

objetivo Crea la matriz de constantes elásticas para un material de comportamiento lineal elástico isóCELAPL tropo en condición plana de esfuerzos y en condición plana deformaciones. Tabla 2.10. Instrucciones para crear matrices de constantes elásticas, indicadas en el módulo MdCE

rutina TRVECO TRESP2

TRPRIN

TRVMIS

objetivo Crea la matriz de transformación de un vector definido en el plano. Se utiliza para realizar cambios de base del vector de fuerza o de desplazamiento en un espacio bidimensional. Crea la matriz de transformación de las componentes de esfuerzo o deformación contenidas en el plano xy. Calcula los esfuerzos (o deformaciones) principales y las respectivas direcciones principales a partir de las componentes de esfuerzo (o de deformaciones) en la base original en un espacio bidimensional. Calcula el esfuerzo de von Misses asociado al criterio de fluencia de la energía de distorsión a partir de las componentes de esfuerzo en la base original en un espacio bidimensional. Tabla 2.11. Instrucciones de cambio de base, indicadas en el módulo MdTR

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

17

rutina

objetivo Crea el vector de términos independientes de un elemento finito unidimensional lineal prepaFUNID2 rado para resolver una ecuación diferencial de campo unidimensional donde el parámetro independiente es constante. Crea el vector de términos independientes de un elemento finito unidimensional lineal prepaFUN2QL rado para resolver una ecuación diferencial de campo unidimensional donde el parámetro independiente tiene variación lineal. Crea el vector de términos independientes de un elemento finito unidimensional cuadrático FUNID3 preparado para resolver una ecuación diferencial de campo unidimensional donde el parámetro independiente es constante. Crea el vector de términos independientes de un elemento finito unidimensional cuadrático FUN3QL preparado para resolver una ecuación diferencial de campo unidimensional donde el parámetro independiente tiene variación lineal. Crea el vector de términos independientes de un elemento finito triangular lineal preparado FTRIAN para resolver la ecuación diferencial de campo bidimensional de Poisson. Crea el vector de términos independientes de un elemento finito rectangular bilineal preparado FRECTA para resolver la ecuación diferencial de campo bidimensional de Poisson. Crea el vector de fuerzas en los nudos equivalentes a la aplicación de una fuerza de superficie FTRIES o presión constante sobre uno de los lados de un elemento finito triangular lineal de elasticidad. Crea el vector de fuerzas en los nudos equivalentes a la acción de una fuerza másica constante FTRIEC o fuerza distribuida por unidad de volumen del elemento finito triangular lineal de elasticidad. Crea el vector de fuerzas en los nudos equivalentes a la aplicación de una fuerza de superficie FRECES o presión constante sobre uno de los lados de un elemento finito rectangular bilineal de elasticidad. Crea el vector de fuerzas en los nudos equivalentes a la acción de una fuerza másica constante FRECEC o fuerza distribuida por unidad de volumen del elemento finito rectangular bilineal de elasticidad. Tabla 2.12. Instrucciones para crear el vector de fuerzas de un elemento, indicadas en el módulo MdF rutina NGLNUD NGLELE NGLBAN

objetivo Crea la matriz de grados de libertad por nudo a partir de la matriz indicadora de condiciones de borde del problema. Crea la matriz de incidencias o tabla de grados de libertad por elemento a partir de la matriz de grados de libertad por nudo y la matriz de conectividades del problema. Calcula el ancho de la semi-banda de la matriz de rigidez y el número de grados de libertad del sistema a partir de la matriz de incidencias. Tabla 2.13. Instrucciones numerar grados de libertad, indicadas en el módulo MdNGL

rutina

objetivo Suma la contribución de una matriz elemental a la matriz del sistema de acuerdo con la numeENSAMK ración de los valores nodales o grados de libertad del elemento adicionado. Suma la contribución de un vector elemental al vector del sistema de acuerdo con la numeraENSAMV ción de los valores nodales o grados de libertad del elemento adicionado. Suma la contribución de una matriz elemental simétrica a la matriz del sistema en formato de ENBAND matriz banda de acuerdo con la numeración de los grados de libertad del elemento. Suma un coeficiente especificado de una matriz elemental a los coeficientes de un vector del ENSAMX sistema de acuerdo con la numeración de los grados de libertad del elemento. Extrae un vector elemental conformado por los coeficientes de un vector del sistema definidos EXTRAV de acuerdo con la numeración de los valores nodales o grados de libertad del elemento. Tabla 2.14. Instrucciones para ensamblar y extraer matrices, indicadas en los módulos MdEN y MdEX

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

18

rutina ORFUGL ORGLFU ORSONO ORSONM ORNUDE ORNLIN ORNLIX ORELIN ORELIX ORXYNU

rutina

Capítulo 2. Estructura y manejo del programa

objetivo Crea el vector de valores nodales de la estructura ordenado de acuerdo con la numeración de los grados de libertad a partir de la tabla de valores nodales ordenada por nudo. Crea la tabla de valores nodales ordenada por nudo a partir del vector de valores nodales de la estructura ordenado de acuerdo con la numeración de los grados de libertad. Crea un vector de resultados nodales a partir de una matriz de resultados elementales calculados en los nudos de cada elemento. Crea una matriz de resultados nodales por material a partir de una matriz de resultados elementales calculados en los nudos de cada elemento. Crea una matriz o tabla que contiene en cada fila los elementos asociados a cada nudo. Construye una listado de los nudos que hacen parte de un segmento recto entre dos nudos extremos definidos en la tabla de coordenadas. Construye una listado de los nudos que hacen parte de un segmento recto definido entre dos puntos cuya posición puede o no coincidir con los nudos de la malla. Construye una listado de los elementos cuyos lados hacen parte de un segmento definido por dos nudos. Construye una listado de los elementos cuyos lados hacen parte de segmento recto definido entre dos puntos cuya posición puede o no coincidir con los nudos de la malla. Extrae de la matriz de coordenadas o de cualquier matriz de resultados nodales, los respectivos valores para los nudos relacionados en un vector o lista predefinida. Tabla 2.15. Instrucciones de organización de matrices, indicadas en el módulo MdOR objetivo

IOEXPR

Permite exportar una matriz real existente a un archivo plano.

IOEXPI

Permite exportar una matriz entera existente a un archivo plano.

Permite exportar un vector de datos enteros a un archivo plano en un formato definido. Permite exportar una matriz real existente a un archivo plano en el formato indicado en la para IOELDR un paso de carga específico. IOEXPT Permite exportar una cadena de caracteres a la primera línea de un archivo plano. Tabla 2.16. Instrucciones para importar y exportar matrices, indicadas en el módulo MdIO IOEXPD

rutina GEMARE

objetivo Genera una malla de elementos finitos rectangulares en una región en forma de rectangular. Tabla 2.17. Instrucciones de generación de malla, indicadas en el módulo MdGE

rutina

objetivo Crea el vector de contribución interelemental de un elemento finito triangular lineal preparado ITRIAN para resolver una ecuación diferencial de campo bidimensional de Poisson. Crea el vector de contribución interelemental de un elemento finito rectangular bilineal prepaIRECTA rado para resolver una ecuación diferencial de campo bidimensional de Poisson. Tabla 2.18. Instrucciones para crear el vector de contribuciones interelementales, indicadas en el módulo MdI

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

19

PEFiCA – Programa de elementos finitos a código abierto

rutina

objetivo

PBDEMR

Extrae el número de filas y de columnas de una matriz real existente.

PBDEMI

Extrae el número de filas y de columnas de una matriz entera existente.

PBATRI

Calcula el área de un triangulo a partir de las coordenadas de sus extremos. Calcula la distancia entre dos nudos en el espacio bidimensional a partir de la matriz o tabla de coordenadas en los nudos. Calcula los cosenos directores que describen la dirección de un segmento recto definido entre dos nudos a partir de las coordenadas de los mismos. Llena los coeficientes de la diagonal inferior de una matriz cuadrada a partir de los coeficientes de la diagonal superior convirtiéndola en una matriz simétrica. Calcula cuatro factores de elasticidad para condición plana de esfuerzos y plana de deformaciones útiles en el cálculo de la matriz de rigidez de los elementos de elasticidad plana. Redondea un escalar real según el número de cifras significativas establecido.

PBDIST PBCOSD PBDIAG PBCOEL PBREDO PBDINU PBPGAU

rutina GRAFDE GRAFIL GRAGEO GRAMAT

GRAFIF

GRAFIM

GRAFIE GRATDE GRATFI

GRATFE

Calcula la distancia entre un nudo y un segmento recto definido por dos nudos. Construye una tabla que contiene las constantes de ponderación en el método de integración numérica de la cuadratura de Gauss. Tabla 2.19. Instrucciones internas de uso común, indicadas en el módulo MdPB objetivo Crea la matriz de parámetros gráficos con los valores por defecto de cada uno de los coeficientes. Crea un archivo que contiene los parámetros gráficos almacenados en un vector existente. Dibuja la geometría de la malla de elementos finitos a partir de la matriz de coordenadas de los nudos y la matriz de conectividades. Dibuja la malla de elementos finitos y representa el valor de una cantidad entera definida en cada elemento (como por ejemplo el tipo de material), con un color especificado. Dibuja los resultados nodales de una cantidad o función de aproximación definida por el vector de valores nodales, la cual es interpolada en el interior de cada elemento mediante sus funciones de forma. Dibuja los resultados nodales de una cantidad o función de aproximación definida por el vector de valores nodales, la cual es interpolada en el interior de los elementos finitos del mismo material. Dibuja los resultados elementales de una cantidad o función de aproximación definida por una matriz de valores en el interior de cada elemento. Dibuja la malla de elementos finitos deformada de acuerdo con el vector de desplazamientos en los nudos para un problema de elasticidad bidimensional durante varios pasos de carga. Dibuja los resultados nodales de una cantidad o función de aproximación definida por el vector de valores en los nudos durante varios pasos de carga (o de pseudo-tiempo en general). Dibuja los resultados elementales de una cantidad o función de aproximación definida por el vector de valores en los elementos durante varios pasos de carga (o de pseudo-tiempo en general). Tabla 2.20. Instrucciones gráficas indicadas en el módulo MdGR

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

20

Capítulo 2. Estructura y manejo del programa

Observación 2.1. El Editor de Visual Basic (VBE) incluido en Microsoft Office Excel permite visualizar y modificar las rutinas contenidas en los módulos. Para activar el VBE en Excel 2000 o 2003 seleccione el menú: Herramientas Macro Editor de Visual Basic. En cambio para activar el VBE en Excel 2007, seleccione la ficha Programador de la cinta de opciones y haga clic en el icono de Visual Basic. Si la ficha Programador no está disponible en la cinta de opciones, haga clic en el botón de Office, haga clic en el botón Opciones de Excel, seleccione la pestaña Más frecuentes, seleccione la caja de verificación Mostrar ficha del Programador en la cinta de opciones y haga clic en le botón Aceptar.

2.3. Capacidad del programa PEFiCA El programa PEFiCA requiere para su funcionamiento un sistema operativo Microsoft Windows XP o Microsoft Windows Vista, como también Microsoft Office Excel versión 2000, 2003 o 2007 previamente instalado. La capacidad del programa esta determinada por el tamaño máximo de la matriz de rigidez del sistema. En general las matrices son arreglos de dos índices enteros tipo Integer, cuyo tamaño máximo es de 32,767. Sin embargo, la velocidad de cálculo se reduce fuertemente cuando se declaran matrices de gran tamaño debido al espacio ocupado en la memoria RAM o en la memoria virtual del disco duro, por ejemplo, una matriz de doble precisión de 32,767 por 32,767 tiene un tamaño de almacenamiento de 8.5 GB aproximadamente. La Tabla 2.21 muestra los valores máximos para algunos problemas típicos resueltos con el método de los elementos finitos. Máximo de nudos 32,762

Máximo de elementos 32,762

32,762

32,762

16,381

32,762

16,381

32,762

Análisis estructural de pórticos bidimensionales.

10,920

32,762

Análisis estructural de armaduras tridimensionales.

10,920

32,762

5,460

32,762

10,920

32,762

Tipo de problema Problema de campo unidimensional. Problema de campo bidimensional: torsión pura en secciones transversales, flujo potencial, infiltración del agua en suelos, transferencia de calor. Análisis mecánico bidimensional de sólidos: estado plano de esfuerzos y estado plano de deformaciones. Análisis estructural de armaduras bidimensionales.

Análisis estructural de pórticos tridimensionales. Análisis estructural de placas planas delgadas.

Análisis mecánico tridimensional de sólidos. 10,920 32,762 Tabla 2.21. Capacidad del programa para problemas típicos resueltos con el MEF

La lectura y presentación de matrices esta limitada al número máximo de filas y de columnas de las hojas de cálculo propio de la versión de Microsoft Excel que se esté utilizando. © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

21

2.4. Instalación y ejecución del programa PEFiCA A continuación se indica (en primera persona), el procedimiento de instalación del programa PEFiCA, para sistema operativo Windows XP y Microsoft Office Excel 2000 o 2003. •

Seleccione el menú Inicio Panel de control, haga clic sobre el icono Configuración regional y de idioma. En la pestaña de Opciones regionales haga clic sobre el botón Personalizar… En la pestaña Números modifique el símbolo decimal por el punto (.) y modifique el separador de miles por un espacio (_), haga clic en el botón Aceptar de la ventana de Personalización de configuración regional, y haga clic en el botón Aceptar de la ventana de Configuración regional. El generador de gráficos del programa PEFiCAgraf.exe y otros programas de ingeniería utilizan el punto como separador decimal.



Abra Microsoft Office Excel, seleccione el menú Herramientas Macro Seguridad, en la pestaña Nivel de seguridad, seleccione Medio, y haga clic en el botón Aceptar. Esto le permitirá decidir si ejecuta o no las macros contenidas en un archivo de Excel; en particular, podrá ejecutar las macros de PEFiCA.xls e impedir la ejecución de macros no seguras provenientes de otros archivos.



Copie la carpeta PEFiCA\ en el lugar del disco duro donde se desea ubicar el programa. Esta carpeta contiene los archivos: PEFiCA.xls, PEFiCAGraf.exe, PEFiCA.pdf, y la carpeta \ejemplos\.



Abra el archivo PEFiCA.xls desde Microsoft Excel, aparecerá la ventana Advertencia de seguridad. Haga clic en el botón Habilitar macros. De esta forma el archivo PEFiCA.xls dispondrá de las rutinas que conforman el programa.



Para visualizar y modificar las rutinas de cálculo, seleccione Herramientas Macro Editor de Visual Basic y después seleccione Ver Explorador de proyectos. Como lo indica la Figura 2.1, a la izquierda se presenta la ventana ProyectoVBAProyect que contiene una la lista de los módulos del programa y a la derecha se observan las líneas de código de las rutinas de cada módulo.

El proceso de instalación del programa PEFiCA en computadores que cuentan con un sistema operativo Windows Vista y Microsoft Office Excel 2007 es el siguiente: •

Seleccione el menú Inicio Panel de control, haga doble clic sobre el icono de Opciones regionales y de idioma, en la pestaña de Formatos haga clic en el botón Personalice este formato, en la pestaña Número modifique el símbolo decimal escribiendo el punto (.) y modifique el separador de miles por un espacio (_), finalmente, haga clic en el botón Aceptar de la ventana Personalice este formato y haga clic en Aceptar en la ventana Opciones regionales y de idioma. El generador de gráficos

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

22

Capítulo 2. Estructura y manejo del programa

del programa PEFiCAgraf.exe y otros programas de ingeniería utilizan el punto como separador decimal. •

Abra Microsoft Office Excel, haga clic en el botón de Office en el extremo superior izquierdo de la ventana, haga clic en el botón Opciones de Excel, seleccione la pestaña Centro de confianza, haga clic en el botón Configuración del centro de confianza, seleccione la pestaña Configuración de macros, haga clic en las cajas de verificación Deshabilitar todas las macros con notificación y Confiar en el acceso al modelo de objetos de proyectos de VBA, finalmente haga clic en el botón Aceptar de la ventana actual, y haga clic en el botón Aceptar de la ventana Centro de confianza. Esto le permitirá decidir si ejecuta o no las macros contenidas en un archivo de Excel; en particular, podrá ejecutar las macros de PEFiCA.xls e impedir la ejecución de macros no seguras provenientes de otros archivos.



Copie la carpeta PEFiCA\ en el lugar del disco duro donde se desea ubicar el programa. Esta carpeta contiene los archivos: PEFiCA.xls, PEFiCAGraf.exe, PEFiCA.pdf, y la carpeta \ejemplos\.



Abra el archivo PEFiCA.xls desde Microsoft Excel 2007, aparecerá en la barra de tareas el mensaje Advertencia de seguridad las macros se han deshabilitado y el botón Opciones, haga clic sobre este botón, seleccione Habilitar este contenido y haga clic en el botón Aceptar. De esta forma el archivo PEFiCA.xls dispondrá de las rutinas que conforman el programa.



Si Microsoft Excel 2007 no incluye la ficha Programador en la cinta de opciones, haga clic en el botón de Office, a continuación haga clic en el botón Opciones de Excel, seleccione la pestaña Más frecuentes, haga clic en la caja de verificación Mostrar ficha del Programador en la cinta de opciones y finalmente haga clic en el botón Aceptar.



Para visualizar y modificar las rutinas de cálculo, seleccione la ficha Programador de la cinta de opciones y haga clic en el icono de Visual Basic. Como lo indica la Figura 2.1, a la izquierda se presenta la ventana Proyecto-VBAProyect que contiene una la lista de los módulos del programa y a la derecha se observan las líneas de código de las rutinas de cada módulo.

Después de la instalación, se puede ejecutar el programa desde el Editor de Visual Basic, el cual es común para Excel 2003 y 2007. Los siguientes pasos conducen a la ejecución de la rutina principal de cálculo. •

Haga doble clic sobre el módulo Md en la ventana de Proyecto-VBAProyect, y en la ventana a la derecha aparecerá la rutina principal PEFiCA().

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

23



Escriba las líneas de código dentro de la rutina PEFiCA() que conformen el proceso general de cálculo del problema contando con las subrutinas contenidas en los demás módulos y con las instrucciones básicas del lenguaje de programación (Dim, For … Next, If … Then … Else , entre otras).



Para ejecutar el programa, ubique el cursor en cualquier línea de la rutina PEFiCA(), y seleccione el menú Ejecutar Ejecutar Sub/UserForm. La compilación y la depuración del programa se explicará en el siguiente apartado. Observación 2.2. Las rutinas sin argumentos escritas en los módulos son macros ejecutables en Microsoft Excel, como por ejemplo, la rutina principal PEFiCA() del módulo Md. El usuario debe escribir el procedimiento en la rutina principal PEFiCA() y ejecutar la macro de su mismo nombre. Observación 2.3. El contenido del menú Ayuda del Editor de Visual Basic contiene temas de ayuda relacionados con el lenguaje de programación Visual Basic for Applications, en cambio, el menú de ayuda ? en la Hoja de Cálculo contiene los temas relacionados con el manejo general de Excel.

2.5. Editor de Visual Basic Microsoft Office Excel cuenta con un entorno del lenguaje Visual Basic for Applications denominado Editor de Visual Basic (VBE), el cual permite compilar, depurar y ejecutar rutinas o macros organizadas por módulos (Figura 2.1). El Editor de Visual Basic está conformado por un grupo de ventanas que contienen el código del programa, la lista de módulos del mismo y la magnitud de las variables en tiempo de ejecución. A continuación se describen algunas de estas ventanas. •

Ventana de código: muestra las líneas de código de un módulo específico. Se activa seleccionando el menú Ver Código. El título de la ventana indica el nombre del módulo. Para ubicarse en una rutina específica, se escoge el nombre de la misma en la lista desplegable de la parte superior derecha de la ventana, como lo indica la Figura 2.2.



Explorador de proyectos: muestra una lista jerárquica de los elementos contenidos en cada proyecto, principalmente los módulos. Se activa seleccionando Ver Explorador de proyectos. Corresponde a una ventana ubicada a la izquierda en el VBE (Figura 2.1), que permite abrir la ventana de código de un módulo específico haciendo doble clic sobre él.



Ventana de inmediato: muestra la información que resulta de las instrucciones de depuración en el código o comandos escritos directamente en la ventana. Se activa seleccionando el menú Ver Ventana inmediato. Puede utilizarse para visualizar la evolución del proceso de cálculo mediante mensajes de texto.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

24

Capítulo 2. Estructura y manejo del programa

área de código

explorador de proyectos

ventana de propiedades del objeto

ventana de inspección de variables

Figura 2.1. Editor de Visual Basic.



Ventana de inspección: muestra la magnitud de un grupo de variables preestablecidas Agregar inspección. Se activa seleccionando por el usuario en el menú Depuración el menú Ver Ventana inspección en tiempo de ejecución.



Ventana de variables locales: muestra la magnitud de todas las variables locales de la subrutina en ejecución. Se activa seleccionando el menú Ver Ventana locales en tiempo de ejecución.



Ventana de propiedades: muestra la lista de propiedades de un objeto. En particular, para los objetos tipo módulo, permite ver y modificar el nombre del módulo. Se activa seleccionando el menú Ver Ventana propiedades. En extremo inferior izquierdo de la Figura 2.1.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

25

PEFiCA – Programa de elementos finitos a código abierto

Figura 2.2. Editor de Visual Basic, ventana de código.

Las herramientas de ejecución y depuración del código permiten compilar, controlar, corregir y ejecutar el código del programa. A continuación se indica algunas de estas funciones, ubicadas en la barra de herramientas de depuración (Figura 2.3).

Interrumpir ejecución

Modo de diseño

Ejecutar rutina

Paso a paso por procedimientos

Alternar punto de interrupción

Ventana de locales

Paso a paso por instrucciones

Reestablecer proyecto

Ventana de inspección Pila de llamadas

Ventana de inmediato

Paso a paso para salir

Inspección rápida

Figura 2.3. Editor de Visual Basic, barra de herramientas de depuración.



Ejecutar una rutina o macro: ejecuta la rutina actual si el cursor está situado sobre ella y no tiene una lista de argumentos (Observación 2.2). Se activa seleccionando el menú Ejecutar Ejecutar Sub/UserForm u oprimiendo la tecla F5.



Interrumpir ejecución: suspende temporalmente la ejecución de un programa mientras está en la etapa de desarrollo. En el modo interrumpido, se puede examinar, depurar, volver a configurar, incrementar o continuar la ejecución. Se activa seleccionando el menú Ejecutar Interrumpir u oprimiendo simultáneamente las teclas Ctrl+Pausa.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

26

Capítulo 2. Estructura y manejo del programa



Restablecer proyecto: borra las variables de nivel de módulo y pila de ejecución, y restablece el proyecto, es decir, aborta la ejecución de la rutina y sale del modo de ejecución. Se activa seleccionando el menú Ejecutar Restablecer.



Alternar punto de interrupción: establece y retira un punto de interrupción en la línea de comando donde esté ubicado el cursor. Los puntos de interrupción son líneas de código en las cuales la ejecución del programa se detiene automáticamente. Se activa Alternar punto de interrupción u oprimiendo las seleccionando el menú Depuración tecla F9. La Figura 2.1 muestra en color marrón un punto de interrupción.



Ejecutar paso a paso por instrucciones: ejecuta de forma secuencial una de las instrucciones de la rutina actual. Permite correr una rutina completa ejecutando instrucción por instrucción. Si la instrucción es un llamado a otra subrutina entra a ella para ejecutar su primera instrucción. Se activa seleccionando el menú Depuración Paso a paso por instrucciones u oprimiendo la tecla F8. La Figura 2.1 muestra en color amarrillo la ejecución de una instrucción.



Ejecutar paso a paso por procedimientos: ejecuta de forma secuencial una de las instrucciones de la rutina actual. A diferencia del procedimiento anterior, cuando la instrucción es un llamado a otra subrutina sin salirse de la rutina principal ejecuta todas las instrucciones de la subrutina. Permite correr la rutina principal completa ejecutando instrucción por instrucción sin entrar a las subrutinas llamadas. Para comenzar el proceso se selecciona el menú Depuración Paso a paso por instrucciones o se oprime la tecla F8, en adelante se ejecuta cada instrucción seleccionando el menú Depuración Paso a paso por procedimientos u oprimiendo simultáneamente las teclas Mayus+F8.



Pila de llamadas: muestra en un cuadro de diálogo la lista de las rutinas que han llamado a una instrucción activa en tiempo de ejecución. Por ejemplo, cuando se produce un error de compilación, como lo indica la Figura 2.4, aparece en color amarillo la línea del código dentro de la subrutina generadora del error EDIMER (paso 1); para conocer las rutinas que llamaron a la subrutina EDIMER se hace clic en el icono de pila de llamadas (paso 2), se selecciona del cuadro de dialogo la rutina principal PEFiCA, y se hace clic en Mostrar (paso 3), finalmente, en la rutina PEFiCA aparece un triangulo verde a la izquierda de la línea de código que llamó a la subrutina generadora del error (paso 4).

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

27

PEFiCA – Programa de elementos finitos a código abierto





 

Figura 2.4. Editor de Visual Basic, utilización de la pila de llamadas.

2.6. Etapas de cálculo con el programa PEFiCA Este apartado indica las etapas que el usuario debe realizar para solucionar un problema específico mediante el programa PEFiCA. •

Etapa de pre proceso: Introducir los datos del problema en las hojas de cálculo designadas para tal fin, describiendo la geometría de la malla de elementos finitos, las condiciones de borde, los parámetros mecánicos de los materiales, las acciones externas y las demás características propias del problema, como lo ilustra la Figura 2.6(1).



Etapa de construcción del proceso: Escribir en la rutina principal PEFiCA() las líneas de código del análisis con elementos finitos (Figura 2.5), apoyándose en las instrucciones preexistentes en el programa y las instrucciones propias del lenguaje de programación, como lo ilustra la Figura 2.6(2). En esta etapa el usuario construye por si mismo el proceso de cálculo apropiándose del conocimiento en el tema.



Etapa de ejecución del proceso: En el Editor de Visual Basic se depura, compila y ejecuta la rutina principal PEFiCA() obteniendo la solución del problema, como lo ilustra la Figura 2.6(2).

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

28



Capítulo 2. Estructura y manejo del programa

Etapa de post-proceso: Como parte del proceso de cálculo se incluyen líneas de código que presentan los resultados mediante matrices escritas en la hoja de salida habitualmente denominada TB_OUT (Figura 2.6(3)) y gráficas creadas en ventanas nuevas (Figura 2.6(4)).

'opciones generales Option Explicit 'forzar la declaración de todas las variables Option Base 1 'declarar el límite inferior predeterminado para subíndices 'de matriz igual a 1 '--------------------------------------------------------------Public Sub PEFiCA() 'escriba aquí el procedimiento principal de cálculo End Sub

Figura 2.5. Rutina principal de cálculo PEFiCA() donde el usuario escribirá el procedimiento de cálculo









Figura 2.6. Etapas de cálculo con el programa PEFiCA.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

Observación 2.4. Las dos primeras líneas del módulo Md mostradas en la Figura 2.5, se utilizan para forzar declaraciones explícitas de todas las variables en dicho módulo y para establecer el límite inferior del índice de toda matriz como 1. En consecuencia todas las variables utilizadas deben ser declaradas y el primer término de una matriz cualquiera A debe ser el A1,1 .

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

29

Capítulo 3 Tipos de datos, formatos y matrices En este capítulo se describen los tipos de datos y los formatos de presentación numérica, como también las matrices especiales utilizadas por las instrucciones del programa.

3.1. Tipos de datos En el desarrollo del programa se han utilizado diferentes tipos de datos compatibles con Visual Basic for Applications (VBA). Los parámetros de las instrucciones son variables escalares o matriciales que contienen cadenas de caracteres, números enteros o números reales.

3.1.1. Variables escalares Las variables escalares almacenan un solo valor de tamaño y características definidas en la Tabla 3.1. Las variables de cadena de caracteres tipo string deben escribirse entre comillas dobles respetando las letras mayúsculas y minúsculas; por ejemplo, si se desea indicar el nombre de la hoja de cálculo Hoja1 con una variable tipo string ésta será igual a “Hoja1”. En todas las operaciones numéricas las variables reales son declaradas de doble precisión o tipo double, con el fin de evitar errores de redondeo. En cambio, las variables que contienen numeración de nudos, elementos, grados de libertad, condiciones de borde, etc. se definen como enteras o tipo integer. Tipo de datos

Descripción

Tamaño almacenado

Intervalo

String

cadena de caracteres

10 bytes + longitud de la cadena

Integer

entero

2 bytes

-32768 a 32767

8 bytes

para valores negativos: -1.79769313486E+306 a -4.94065645841E-324 para valores positivos: 4.94065645841E-324 a 1.79769313486E308

Double

real de doble precisión

desde 0 a 2E+09 de caracteres

Tabla 3.1. Tipos de datos utilizados en el programa

32

Capítulo 3. Tipos de datos, formatos y matrices

3.1.2. Variables matriciales o matrices En general en los lenguajes de programación, una matriz es el conjunto de elementos ordenados de forma secuencial denominados términos o coeficientes, que tienen el mismo tipo de datos y que están definidos por una variable. De igual forma como se establece en álgebra lineal, cada elemento de una matriz posee una combinación de índices único que lo identifica. Estos índices son variables enteras introducidas en la sintaxis de la variable matricial, es decir, el elemento M(I,J) de la variable M() corresponde al coeficiente mij de la matriz M, donde los índices de la matriz I y J son escalares enteros tipo integer. Como lo indica el ejemplo presentado en la Figura 3.1, si se define la variable tipo matriz real de doble precisión MX() de 2 filas por 2 columnas, el término MX(1,1) puede contener un valor diferente al término MX(1,2) conservando el mismo tipo de dato (double en este caso). A la izquierda se presentan las instrucciones de la ventana de código en el editor de Visual Basic for Applications y a la derecha se indica la matriz. Código en VBA

Notación matricial

Dim M() As Double ReDim M(2, 2) M(1, 1) = 0.5758 M(1, 2) = 0.9594 M(2, 1) = 0.1249 M(2, 2) = 0.8963

0.5758 0.9594 M=  0.1249 0.8963 2× 2 Figura 3.1. Ejemplo de definición de la matriz M.

Una matriz con un tamaño especificado es una matriz de tamaño fijo; por ejemplo, en la primera línea de código de la Figura 3.2 se declara a una matriz de tamaño fijo con 2 filas y 4 columnas como real de doble precisión (double). El primer argumento corresponde al número de filas y el segundo al número de columnas. Dim M(2, 4) As Double : : Dim I() as Integer

' matriz de tamaño fijo

' matriz dinámica

Figura 3.2. Ejemplo de matriz de tamaño fijo y matriz dinámica.

En cambio, una matriz cuyo tamaño puede cambiar mientras el programa se está ejecutando es una matriz dinámica. Al declarar la matriz se abre y cierra paréntesis omitiendo los indicadores de tamaño, como se presenta en la última línea de código en la Figura 3.2. Cuando se necesario establecer una dimensión específica de la matriz se utiliza la instrucción ReDim, como se ilustra la Figura 3.1. Este tipo de matrices son las más utilizadas en el programa. El tamaño almacenado en memoria depende de las dimensiones de la matriz y del tipo de datos. Cada elemento o término de la matriz tiene el tamaño de una variable escalar del mismo tipo, por lo tanto, una matriz de nf filas y nc columnas ocupará nf por nc por el tamaño según el tipo (Tabla 3.1).

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

33

PEFiCA – Programa de elementos finitos a código abierto

Tanto el sistema operativo, como la cantidad de memoria disponible determinan el tamaño máximo de una matriz. Es más lento utilizar una matriz que sobrepasa la cantidad de memoria RAM disponible en el sistema ya que los datos tienen que ser leídos y escritos del disco.

3.1.3. Variables especiales En muchas ocasiones es necesario indicar la posición de una celda dentro de una hoja de cálculo, con el fin convertir sus contenidos en matrices o viceversa. Microsoft Excel designa numéricamente a las filas y alfabéticamente a las columnas, sin embargo, el programa utiliza números de forma secuencial para definir tanto filas como columnas. La designación alfabética de las columnas en la hoja de cálculo se transforma en numérica para especificar la posición de las celdas en el programa; por ejemplo, la celda C20 en la hoja de cálculo estaría ubicada en la fila POSF=20 y en la columna POSC=3, como se muestra en la Figura 3.3. POSC = 3 columna 1

columna 2

columna 3

POSF = 20

Figura 3.3. Designación numérica las filas y las columnas en la posición de una celda.

3.2. Formatos de salida Parte de la información obtenida en el procedimiento de cálculo puede presentarse mediante matrices o tablas. A continuación se ilustra los formatos establecidos en el programa para mostrar datos en una hoja de cálculo. Los resultados preliminares del proceso pueden escribirse en cualquier hoja de cálculo, sin embargo se recomienda utilizar una sola hoja para tal fin. En este documento la hoja de resultados de denomina TB_OUT. Las instrucciones de presentación de resultados como EDIMER, EDIMEI, EDIMPR y EDIMPI escriben los coeficientes de una matriz especificada con un formato especial. La Figura 3.4 y la Figura 3.5 muestran dicho formato el cual tiene las siguientes características:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

34

Capítulo 3. Tipos de datos, formatos y matrices



Cada matriz presenta un título identificador en color negro y en letra negrita cursiva que termina con el tamaño de la misma entre paréntesis.



En las matrices, los rótulos en color gris C1, C2, … y F1, F2, … indican el número de la columna y de la fila respectivamente.



Los coeficientes positivos de la matriz se presentan en color azul, los negativos en color rojo y los coeficientes iguales a cero en color negro.



Los coeficientes de matrices reales se escriben en notación científica con formato 0.0000E+00. En cambio, los coeficientes de matrices enteras se representan con formato 000, como se indica en la Tabla 3.2.

Formato numérico

Tipo de datos Entera Real

positivos

cero

negativos

010

000

-010

1.52340E+01

0.0000E+00

-1.52340E+01

Tabla 3.2. Ejemplos de los formatos de salida

Tamaño de matriz

Rótulos indicadores de columnas de la matriz

Título de matriz

Rótulos indicadores de filas de la matriz Coeficiente entero cero

Coeficiente entero positivo

Matriz de términos enteros

Figura 3.4. Formato de salida de matrices con términos enteros

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

35

PEFiCA – Programa de elementos finitos a código abierto

Tamaño de matriz

Rótulos indicadores de columnas de la matriz

Título de matriz Coeficiente real positivo

Rótulos indicadores de filas de la matriz

Coeficiente real cero

Coeficiente real negativo Matriz de términos reales

Figura 3.5. Formato de salida de matrices con términos reales

3.3. Presentación de resultados de forma secuencial en una hoja de cálculo El programa utiliza las hojas de cálculo para leer los datos de entrada y para escribir los resultados del problema. Con respecto a este último, las instrucciones EDIMER, EDIMEI, EDIMPR y EDIMPI escriben escalares y matrices en una posición específica dentro de una hoja de cálculo. Con el fin de presentar las matrices resultantes, una después de la otra, sin que se sobrescriban y sin dejar grandes espacios, se realiza el siguiente procedimiento en la rutina principal PEFiCA(): •

Con anterioridad se crea la hoja de cálculo para presentar los resultados o hoja de salida. Por defecto el programa tiene la hoja TB_OUT.



La posición de las matrices en la hoja de salida se define con las variables FILA y COLM, las cuales solo deben ser utilizadas para tal fin.



Se limpia la hoja de salida con la instrucción EDLIMH, por ejemplo la línea de código en Visual Basic for Applications EDLIMH "TB_OUT" borra el contenido de la hoja de cálculo TB_OUT.



Se establece la posición inicial en la hoja de cálculo asignando el valor de FILA y COLM, por ejemplo las líneas de código FILA=2 : COLM=1 establecen que la primera matriz escrita ubicará a partir de la segunda fila y de la primera columna de la hoja de salida.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

36

Capítulo 3. Tipos de datos, formatos y matrices



A través del código en Visual Basic for Applications se escriben los resultados en la hoja de salida utilizando las instrucciones EDIMER, EDIMEI, EDIMPR y EDIMPI. Algunos parámetros de este tipo de instrucciones, como el nombre de la hoja de cálculo debe ser el mismo nombre asignado a la hoja de salida, (por ejemplo "TB_OUT"). Asimismo, la fila POSF y la columna POSC donde se escriben los resultados deben corresponder a las variables FILA y COLM.



Como se describe en el Capítulo 4, el parámetro POSF se modifica en el interior de las instrucciones de escritura de matrices. El valor de entrada a la subrutina de POSF corresponde al número de la fila de la celda donde se desea escribir el primer término de la matriz M11, en cambio, su valor de salida de la subrutina es igual a la suma entre su valor de entrada, el número de filas de la matriz y 3, evitando así la superposición entre resultados.

La Figura 3.6 muestra algunas líneas de código de la rutina principal relacionadas con la presentación secuencial de resultados en una hoja de salida, en particular escribe las matrices XYZ() y ELE() en la hoja TB_OUT. Después de ejecutada la rutina PEFiCA, el contenido del la hoja TB_OUT es el presentado en la Figura 3.7. Public Sub PEFiCA() 'declaración de variables escalares 'declaración de variables que definen la posición en la hoja de salida Dim FILA As Integer, COLM As Integer : : 'declaración de matrices Dim ELE() As Integer, GRA() As Integer Dim XYZ() As Double : : 'parámetros predefinidos 'posición inicial en la hoja de salida FILA = 2 COLM = 1 'limpiar hoja de salida EDLIMH "TB_OUT" 'limpiar la hoja de salida : : 'escribir la matriz real XYZ() en la hoja de salida EDIMPR "TB_OUT", "XYZ()", FILA, COLM, XYZ() : : 'escribir la matriz entera ELE() en la hoja de salida EDIMPI "TB_OUT", "ELE()", FILA, COLM, ELE() : : End Sub Figura 3.6. Parte del Código en VBA de la rutina principal PEFiCA, donde se indican las

lí-

neas correspondientes a la presentación de resultados en una hoja de salida.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

37

Figura 3.7. Contenido de la hoja de salida TB_OUT después de ejecutar la rutina PEFiCA.

3.4. Matrices especiales La formulación matricial que enmarca el método de los elementos finitos permite identificar algunas matrices características necesarias en el análisis. En las secciones siguientes se describen dichas matrices.

3.4.1. Matrices o tablas de la topología de la malla de elementos finitos La malla de elementos finitos está constitutita por un grupo de elementos conectados entre sí por nudos. En el programa, cada nudo tiene un código identificador o simplemente identificador que corresponde a un número entero entre 1 y el total de nudos de la malla. Asimismo, cada elemento se define con un identificador entero entre 1 y el total de elementos finitos. En la Figura 3.8 se muestra una malla de 9 nudos, 4 elementos finitos rectangulares bilineales y 2 grados de libertad por nudo.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

38

Capítulo 3. Tipos de datos, formatos y matrices Φ(04) Φ(03)

Φ(09) Φ(08)

06

03

04

Φ(02) Φ(01)

Φ(07) Φ(06)

05

01

Φ(12) Φ(11)

# grado de libertad

04

vk um

m

08

Φ(16)=0 Φ(05)

vm

magnitud de un g.l. conocido

Φ(11)=2.4 Φ(10)

03

01 Φ(17)=0 Φ(18)=0

notación

09

02

02

Φ(14) Φ(13)

07

Φ(15)=0 Φ(10)

k (e)

vi

vj

ui

# nudo

i

uj

j

07

Figura 3.8. Ejemplo de una malla de elementos finitos.

En la figura, los grados de libertad desconocidos están numerados del 1 al 14 y los conocidos del 15 al 18, de tal manera que el vector de valores nodales Φ se puede dividir en los subvectores Φ α y Φ β que contienen los grados de libertad desconocidos y conocidos respectivamente. Φ = [Φ α

Φβ ]

T T

Φ α = [φ1 φ 2 K φ14 ] Φ β = [φ15 φ16

(3.1) T

T

φ17 φ18 ] = [0 0 0 0]

Como parte de la programación del método son esenciales las matrices o tablas que describan la geometría y las condiciones de borde de la malla de elementos finitos. A continuación se indican dichas matrices: •

Matriz o tabla de coordenadas de los nudos. Matriz real que contiene en cada fila la coordenada de un nudo de la malla con respecto al origen de un sistema coordenado cartesiano general. En la primera columna se ubica el valor de la coordenada x, en la segunda la coordenada y, y en la tercera, si es el caso, la coordenada z. El número de filas de esta matriz es igual al total de nudos de la malla y el número de columnas corresponde a la dimensión del problema. La Figura 3.9 indica la matriz de coordenadas de los 9 nudos del ejemplo bidimensional ilustrado en la Figura 3.8.

nudo

coordenada en x en y

Figura 3.9. Matriz o tabla de coordenadas de los nudos.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

39

PEFiCA – Programa de elementos finitos a código abierto



Matriz de elementos o tabla de conectividades. Matriz entera que contiene los códigos identificadores de los nudos asociados a cada elemento finito. Una fila de la matriz presenta la información de un elemento finito y cada columna contiene el identificador de un nudo, por lo tanto, el número de filas es igual a la cantidad de elementos de la malla y el número de columnas corresponde con la cantidad de nudos que tenga un elemento finito. El orden establecido para identificar los nudos de un elemento finito corresponderá con el orden de las columnas de la matriz de elementos, por ejemplo, si los nudos de los elementos rectangulares bilineales de una malla están identificados en su orden como i, j, k y m (Figura 3.8), la primera columna de la matriz de elementos contendrá el código que identifica al nudo i, la segunda al nudo j, la tercera al nudo k y la cuarta al nudo m como se indica en la Figura 3.10. Cuando la malla tiene elementos finitos con diferente cantidad de nudos, el número de columnas de la tabla de conectividades estará definido por el tipo de elemento finito con mayor número de nudos. En este caso, se llenan con cero los coeficientes de la(s) última(s) columna(s) de la tabla de conectividades que corresponde(n) a el(los) nudo(s) inexistente(s) de los elementos finitos con menor cantidad de nudos.

elem

Identificador del nudo del elemento nudo k nudo m nudo i nudo j

Figura 3.10. Matriz o tabla de elementos.



Matriz o tabla indicadora de condiciones de borde. Matriz indicadora de los valores nodales o grados de libertad conocidos que establecen las condiciones de borde de Dirichlet o naturales (Hughes 2000). Si un coeficiente de esta matriz es igual a uno (001), está indicando que el grado de libertad que representa es conocido. En cambio, si el coeficiente es igual a cero (000), establece que el grado de libertad es desconocido. Para el ejemplo presentado en esta sección, la Figura 3.11 muestra la tabla indicadora de las condiciones de borde. nudo

en x

en y

g.l. conocido = 001 g.l. desconocido = 000 Identificador de grado de libertad conocido

Identificador de grado de libertad desconocido

Figura 3.11. Matriz o tabla indicadora de condiciones de borde.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

40



Capítulo 3. Tipos de datos, formatos y matrices

Matriz o tabla de grados de libertad por nudo. Matriz entera que contiene el identificador de los valores nodales o grados de libertad de cada uno de los nudos de la malla. Cada fila contiene la información de un nudo y cada columna presenta el identificador de un grado de libertad o valor nodal, por lo tanto, el número de filas de la matriz es igual a la cantidad de nudos de la malla y el número de columnas corresponde a la cantidad de valores nodales o de grados de libertad tenga un nudo. En problemas donde hay dos o más grados de libertad por nudo es necesario establecer el orden en el cual se presentarán en la matriz de grados de libertad, por ejemplo, en problemas de elasticidad bidimensional en un plano xy, la primera columna contiene el identificador del desplazamiento nodal en dirección x, y la segunda columna almacena el identificador del desplazamiento nodal en dirección y. La Figura 3.12 indica la matriz de grados de libertad por nudo para el ejemplo de esta sección. Un coeficiente igual a 0 está indicando que no existe o que no se quiere considerar ese grado de libertad. Esta matriz se puede obtener a partir de la tabla de condiciones de borde, utilizando la instrucción NGLNUD.

nudo

Identificador del g.l. en x en y

Figura 3.12. Matriz o tabla de grados de libertad por nudo.



Matriz de incidencias o tabla de grados de libertad por elemento. Matriz entera que contiene los identificadores de los grados de libertad o valores nodales asociados a cada elemento finito de la malla. Se presenta en cada fila la información de un elemento finito y en cada columna el identificador de un grado de libertad, como lo muestra la Figura 3.13 para el ejemplo de esta sección. Esta tabla es indispensable en el proceso de ensamblaje de la matriz de rigidez y del vector de términos independientes. A partir de la matriz de elementos y de la matriz de grados de libertad por nudo, la instrucción NGLELE del programa puede generar la matriz de incidencias.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

41

PEFiCA – Programa de elementos finitos a código abierto

Identificador del grado de libertad del elemento elem

# ui

# vi

# uj

# vj

# uk

# vk

# um

# vm

Figura 3.13. Matriz de incidencias.

3.4.2. Matrices o tablas de fuerzas y desplazamientos aplicados En problemas de elasticidad, las fuerzas y desplazamientos impuestos a la estructura se organizan en matrices o tablas especiales de acuerdo con la numeración de los nudos, de los elementos o de los grados de libertad. A continuación se indican las matrices más comunes: •

Matriz o tabla de fuerzas organizadas por nudo. Tabla que contiene en cada fila la magnitud de las componentes de fuerzas aplicadas sobre un nudo específico, por tanto, su tamaño será el número nudos por el número de grados de libertad por nudo. Un coeficiente igual a cero indica que la componente de la fuerza nodal es cero o que es desconocida (fuerza reactiva en un apoyo), dicha diferencia estará definida por la matriz indicadora de condiciones de borde. En el ejemplo de elasticidad plana presentado en la Figura 3.14, el coeficiente de la fila 3 y columna 2 de la matriz indica la magnitud de la fuerza en dirección y aplicada en el nudo 3. Esta forma de organizar las fuerzas en los nudos permite introducir la información cómodamente y presentar de manera agradable de los resultados.



Vector o tabla de fuerzas organizadas por grados de libertad. Vector que contiene la magnitud de las fuerzas nodales organizadas de acuerdo con la numeración previamente asignada a los grados de libertad. Para el ejemplo anterior, la Figura 3.15 muestra que el coeficiente de la fila 10 de la matriz corresponde a la magnitud de la fuerza nodal en el grado de libertad número 10. Esta forma de organizar las fuerzas nodales es indispensable en el proceso de cálculo, dado que el sistema de ecuaciones del problema está planteado en términos de los valores nodales o grados de libertad. En el programa se puede cambiar el formato de la matriz de fuerzas con las instrucciones ORFUGL y ORGLFU descritas en el Capítulo 16.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

42

Capítulo 3. Tipos de datos, formatos y matrices

nudo

fuerza nodal en x en y

FY

FY=4.8 FX=1.5

FX

03

02 FY

09

FY

FX

04

01

notación magnitud de la fuerza

componente de la fuerza

Matriz o tabla de fuerzas nodales ordenada de acuerdo con la numeración de los nudos

FX

12

11 FY

FY FX

FY FX

FX

08

FY=1.2 FX=-1.6

10

07 FY

FY FX

FY=2.4 FX=2.3

FY FX

FX

06

05

malla de elementos finitos

FY=2.4 FX=2.3

07

# nudo

Figura 3.14. Matriz o tabla de fuerzas organizadas por nudo.



Matriz o tabla de desplazamientos organizados por nudo. Tabla que contiene en cada fila la magnitud de las componentes de desplazamiento en un nudo específico. Esta matriz tiene las mismas características de la tabla de fuerzas organizadas por nudo (Figura 3.14).



Vector o tabla de desplazamientos organizados por grados de libertad. Vector que contiene la magnitud de los desplazamientos nodales organizados de acuerdo con la numeración previamente asignada a los grados de libertad. Este vector se obtiene al plantear el equilibrio del sólido con sus condiciones de borde. Tiene las mismas características de la tabla de fuerzas organizadas por grados de libertad (Figura 3.15).



Matriz o tabla de fuerzas distribuidas. Tabla que contiene en cada fila la magnitud de las componentes de fuerza de volumen o de superficie aplicadas sobre un elemento finito específico. Las fuerzas de superficie son acciones distribuidas por unidad de área actuantes en una cara del elemento y las fuerzas de volumen son acciones distribuidas en el volumen del elemento. Como se muestra en la Figura 3.16, la primera columna contiene el número identificador del elemento, la segunda y la tercera contienen las componentes en las direcciones x y y respectivamente, de la fuerza por unidad de volumen o fuerza másica. La cuarta y quinta columna indican la magnitud de la presión en dirección x y y aplicada sobre la cara del elemento identificada en la sexta columna. Las caras o lados de un elemento finito se numera de forma secuencial a partir del nudo inicial y en sentido antihorario, como se muestra en la Figura 11.1 para un elemento triangular lineal y la Figura 11.3 para un elemento rectangular bilineal. Los datos contenidos en esta tabla proporcionan los argumentos necesarios para calcular el vector de fuerzas equivalentes a la acción de una fuerza másica mediante las instrucciones FTRIEC y FRECEC, o para obtener el vector de fuerzas equivalentes a la © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

43

PEFiCA – Programa de elementos finitos a código abierto

acción de una presión aplicada sobre un lado del elemento mediante las instrucciones FTRIES y FRECES. grado de libertad

fuerza nodal Vector de fuerzas nodales ordenadas según la numeración de los grados de libertad

notación magnitud de la fuerza

# grado de libertad

F(11)=2.4 F(10)=2.3

07 F(01) F(00)

02 F(13) F(12)

08 F(00) F(00)

01

# nudo

F(11)=2.4 F(10)=2.3

F(03)=4.8 F(02)=1.5

03

10

07 F(19) F(18)

F(15) F(14)

09

F(07) F(06)

04

F(21) F(20)

12

11

F(05) F(04)

F(17)=1.2 F(16)=-1.6

F(09) F(08)

06

05

malla de elementos finitos

Figura 3.15. Matriz o tabla de fuerzas organizadas por grados de libertad. elemento

fuerza másica en x en y

presión en un lado en x en y lado

nudo 10 lado 3

elem. 20 nudo 87 (inicial)

lado 2 lado 1

nudo 1

p x = 10 k / pul 2 Figura 3.16. Tabla de fuerzas distribuidas en los elementos.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 4 Instrucciones de edición de matrices Una de las ventajas sustanciales del uso de Microsoft Excel como plataforma del programa consiste en utilizar las celdas de las hojas de cálculo como interfaz de lectura y escritura de datos. El pre proceso del programa de elementos finitos se realiza a través de tablas que contienen la descripción del problema. Asimismo, el post proceso presenta las cantidades de interés o incluso algunos resultados parciales mediante tablas escritas en una hoja de cálculo preparada para tal fin o a través de gráficos de la malla de elementos finitos. Este capítulo describe las instrucciones que construyen una matriz a partir de los valores de un grupo de celdas de una hoja de cálculo y que escriben o presentan los coeficientes de una matriz en una hoja de cálculo. Estas subrutinas tienen el prefijo ED y están contenidas en el módulo MdED del libro de Excel para facilitar su ubicación en el código. La Tabla 2.4 resume el objetivo de cada una de las rutinas de este módulo.

4.1. EDLECI Construye una matriz entera a partir de un bloque de celdas de una hoja de cálculo específica. En otras palabras, crea la matriz entera M para la cual cada coeficiente corresponde a una celda de la hoja de cálculo. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDLECI HOJA, POSF, POSC, MX(), NF, NC

Argumento

POSF

Integer (entero)

POSC

Integer (entero)

MX()

Integer (entero)

Descripción Hoja de cálculo que contiene las celdas que conformarán la matriz M. Número de la fila en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente m11 de la matriz creada. Número de la columna en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente m11 de la matriz creada. Matriz creada M.

NF

Integer (entero)

Número de filas de la matriz M.

NC

Integer (entero) Número de columnas de la matriz M. Tabla 4.1. Sintaxis de la instrucción EDLECI.

HOJA

Tipo de variable String (cadena de caracteres)

46

Capítulo 4. Instrucciones de edición de matrices

La designación alfabética de las columnas en la hoja de cálculo se transforma en numérica para especificar la posición de las celdas en el programa, como lo indica el argumento POSC en la Tabla 4.1. Ejemplo 4.1 Construir una matriz MI()de 2 filas por 4 columnas cuyos coeficientes están en la hoja de cálculo Hoja1; específicamente, el término (1,1) corresponde a la celda A14 como lo indica la Figura 4.1. columna 1 columna 2

columna 3

POSF = 14 POSC = 1

NC = 4

NF = 2

fila 13 fila 14 fila 15

HOJA = “Hoja1”

Figura 4.1. Parámetros de la instrucción EDLECI.

La línea de comando utilizada es: EDLECI “Hoja1”, 14, 1, MI(), 2, 4

Como resultado la matriz MI() tendrá los siguientes coeficientes: MI() F1 F2

(2x4) C1 000 004

C2 001 005

C3 002 006

C4 003 007

4.2. EDLECR Construye una matriz real a partir de un bloque de celdas de una hoja de cálculo específica. En otras palabras, crea la matriz real M para la cual cada coeficiente corresponde a una celda de la hoja de cálculo. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

47

PEFiCA – Programa de elementos finitos a código abierto

EDLECR HOJA, POSF, POSC, MX(), NF, NC

Argumento

Tipo de variable String (cadena de caracteres)

POSF

Integer (entero)

POSC

Integer (entero)

MX()

Double (real)

Descripción Hoja de cálculo que contiene las celdas que conformarán la matriz M. Número de la fila en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente m11 de la matriz creada. Número de la columna en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente m11 de la matriz creada. Matriz creada M.

NF

Integer (entero)

Número de filas de la matriz M.

NC

Integer (entero) Número de columnas de la matriz M. Tabla 4.2. Sintaxis de la instrucción EDLECR.

HOJA

Como se puede observar, que esta instrucción tiene un objetivo similar al de la instrucción EDLECI con la única diferencia en el tipo de variable de la matriz creada. Ejemplo 4.2 Construir una matriz XY()de 6 filas por 2 columnas cuyos coeficientes están en la hoja de cálculo TB_XYZ; específicamente, el término (1,1) corresponde a la celda B5 como lo indica la Figura 4.2. columna 2 columna 1

columna 3

POSF = 5 POSC = 2

NC = 2

fila 5 fila 6 fila 7

NF = 6

HOJA = “TB_XYZ”

Figura 4.2. Parámetros de la instrucción EDLECR.

La línea de comando utilizada es: EDLECR “TB_XYZ”, 5, 2, XY(), 6, 2

Como resultado la matriz XY() tendrá los siguientes coeficientes: XY() F1

(6x2) C1 4.0000E+00

C2 0.0000E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

48

Capítulo 4. Instrucciones de edición de matrices F2 F3 F4 F5 F6

5.0000E-01 3.5000E+00 3.0000E+00 2.5000E+00 2.0000E+00

0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

4.3. EDLECE Captura el valor de una celda específica de una hoja de cálculo y lo guarda en una variable escalar. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDLECE HOJA, POSF, POSC, ESC

Argumento HOJA

Tipo de variable String (cadena de caracteres)

POSF

Integer (entero)

POSC

Integer (entero)

ESC

Descripción Hoja de cálculo que contiene la celda que se desea capturar. Número de la fila en la hoja de cálculo que identifica a la celda. Número de la columna en la hoja de cálculo que identifica a la celda.

Integer (entero) o Variable escalar donde se guarda el valor de la celda. Double (real) Tabla 4.3. Sintaxis de la instrucción EDLECE.

Ejemplo 4.3 Guardar en la variable YOUN el valor de la celda B12 de la hoja de cálculo TB_GEN como lo indica la Figura 4.1. columna 1

columna 2 POSF = 12 POSC = 2

fila 12 fila 13 fila 14

HOJA = “TB_GEN”

Figura 4.3. Parámetros de la instrucción EDLECE.

La línea de comando utilizada es: EDLECE “Hoja1”, 12, 2, YOUN

Como resultado la variable real YOUN=2.0000E+05. © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

49

PEFiCA – Programa de elementos finitos a código abierto

4.4. EDTABI Construye una matriz entera a partir de un bloque de celdas de una hoja de cálculo específica. A diferencia de la instrucción EDLECI, en esta subrutina un índice establece en que fila de la matriz creada se guardarán los valores de las celdas. Los números de filas no especificados por los índices generan coeficientes iguales a cero en la matriz. Esta instrucción permite construir una matriz indicando solamente las filas donde sus coeficientes diferentes de cero. La tabla de condiciones de borde y de fuerzas en los nudos son ejemplos de este tipo de matrices. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDTABI HOJA, POSF, POSC, MX(), NF, NC

Argumento

POSF

Integer (entero)

POSC

Integer (entero)

MX()

Integer (entero)

Descripción Hoja de cálculo que contiene las celdas que conformarán la matriz M. Número de la fila en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente mi1 de la matriz creada. Número de la columna en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente mi1 de la matriz creada. La columna POSC-1 debe contener el índice i correspondiente. Matriz creada M.

NF

Integer (entero)

Número de filas de la matriz M.

NC

Integer (entero) Número de columnas de la matriz M. Tabla 4.4. Sintaxis de la instrucción EDTABI.

HOJA

Tipo de variable String (cadena de caracteres)

Ejemplo 4.4 Construir una matriz MRE()de NNUD=10 filas por NGLN=2 columnas cuyos coeficientes diferentes de cero están ubicados en las filas 1 y 5, como se indica en la hoja de cálculo TB_RES de la siguiente figura.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

50

Capítulo 4. Instrucciones de edición de matrices

POSC-1 número de la fila de los coeficientes de la matriz

POSC = 2

fila 1 de la matriz

coeficientes de la matriz

m11=001 m12=001

POSF = 5

coeficientes de la matriz

fila 5 de la matriz HOJA = “TB_RES”

Figura 4.4. Parámetros de la instrucción EDTABI.

m51=000 m52=001

La línea de comando utilizada es: EDTABI "TB_RES", 5, 2, MRE(), NNUD, NGLN

Como resultado la matriz MRE() tendrá los siguientes coeficientes: MRE() F1 F2 F3 F4 F5 F6 F7 F8 F9 F10

(10x2) C1 001 000 000 000 000 000 000 000 000 000

C2 001 000 000 000 001 000 000 000 000 000

4.5. EDTABR Construye una matriz real a partir de un bloque de celdas de una hoja de cálculo específica. A diferencia de la instrucción EDLECR, en esta subrutina un índice establece en que fila de la matriz creada se guardarán los valores de las celdas. Los números de filas no especificados por los índices generan coeficientes iguales a cero en la matriz. Esta instrucción permite construir una matriz indicando solamente las filas donde sus coeficientes diferentes de cero. La tabla de condiciones de borde y de fuerzas en los nudos son ejemplos de este tipo de matrices. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

51

PEFiCA – Programa de elementos finitos a código abierto

EDTABR HOJA, POSF, POSC, MX(), NF, NC

Argumento

POSF

Integer (entero)

POSC

Integer (entero)

MX()

Double (real)

Descripción Hoja de cálculo que contiene las celdas que conformarán la matriz M. Número de la fila en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente mi1 de la matriz creada. Número de la columna en la hoja de cálculo donde se ubica la celda correspondiente al coeficiente mi1 de la matriz creada. La columna POSC-1 debe contener el índice i correspondiente. Matriz creada M.

NF

Integer (entero)

Número de filas de la matriz M.

NC

Integer (entero) Número de columnas de la matriz M. Tabla 4.5. Sintaxis de la instrucción EDTABR.

HOJA

Tipo de variable String (cadena de caracteres)

Ejemplo 4.5 Construir una matriz MFN()de NNUD=12 filas por NGLN=2 columnas cuyos coeficientes diferentes de cero están ubicados en las filas 3, 7 y 10, como se indica en la hoja de cálculo TB_FUN de la siguiente figura. POSC-1 número de la fila de los coeficientes de la matriz

POSC = 2 coeficientes de la matriz

fila 3 de la matriz

m31=1.500 m32=4.800

POSF = 5

coeficientes de la matriz

fila 7 de la matriz

m71=2.300 m72=2.400

fila 10 de la matriz

coeficientes de la matriz

HOJA = “TB_FUN”

Figura 4.5. Parámetros de la instrucción EDTABR.

m10,1=-1.600 m10,2=1.200

La línea de comando utilizada es: EDTABR "TB_FUN", 5, 2, MFN(), NNUD, NGLN

Como resultado la matriz MFN() tendrá los siguientes coeficientes:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

52

Capítulo 4. Instrucciones de edición de matrices MFN() F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12

(12x2)

C1 0.0000E+00 0.0000E+00 1.5000E+00 0.0000E+00 0.0000E+00 0.0000E+00 2.3000E+00 0.0000E+00 0.0000E+00 -1.6000E+00 0.0000E+00 0.0000E+00

C2 0.0000E+00 0.0000E+00 4.8000E+00 0.0000E+00 0.0000E+00 0.0000E+00 2.4000E+00 0.0000E+00 0.0000E+00 1.2000E+00 0.0000E+00 0.0000E+00

4.6. EDIMEI Escribe una variable escalar entera en una hoja de cálculo en el formato de salida para variables enteras indicado en el Capítulo 3. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDIMEI HOJA, MXLB, POSF, POSC, ESC

Argumento HOJA MXLB

POSF

POSC ESC

Tipo de variable String (cadena de caracteres) String (cadena de caracteres)

Descripción Hoja de cálculo donde se escribirá la variable ESC.

Rotulo relacionado con la variable que será escrito en la fila superior a la celda que contiene la variable. • Como variable de entrada corresponde al número de fila de la celda donde se desea ubicar la variaInteger (entero) ble ESC. Este parámetro debe ser mayor que 2. • Como variable de salida corresponde al parámetro de entrada POSF más 3. Número de columna de la celda donde se desea ubicar Integer (entero) la variable ESC. Integer (entero) Variable escalar entera que se desea escribir. Tabla 4.6. Sintaxis de la instrucción EDIMEI.

Ejemplo 4.6 Escribir en la celda B870 de la hoja de cálculo TB_OUT, la variable entera escalar ESC = 18 mediante la instrucción: EDIMEI "TB_OUT", "BAND", FILA, COLM, BAND

donde FILA=870 y COLM=2. El resultado se presenta en la siguiente figura:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

53

PEFiCA – Programa de elementos finitos a código abierto

POSC = 2 MXLB = “BAND”

tamaño de la matriz rotulo y tamaño de matriz ESC línea en blanco

POSF-1 POSF POSF+1 POSF+3

HOJA = “TB_OUT”

Figura 4.6. Parámetros de la instrucción EDIMEI.

4.7. EDIMER Escribe una variable escalar real en una hoja de cálculo en el formato de salida para variables reales indicado en el Capítulo 3. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDIMER HOJA, MXLB, POSF, POSC, ESC

Argumento HOJA MXLB

POSF

POSC ESC

Tipo de variable String (cadena de caracteres) String (cadena de caracteres)

Descripción Hoja de cálculo donde se escribirá la variable ESC.

Rotulo relacionado con la variable que será escrito en la fila superior a la celda que contiene la variable. • Como variable de entrada corresponde al número de fila de la celda donde se desea ubicar la variaInteger (entero) ble ESC. Este parámetro debe ser mayor que 2. • Como variable de salida corresponde al parámetro de entrada POSF más 3. Número de columna de la celda donde se desea ubicar Integer (entero) la variable ESC. Double (real) Variable escalar entera que se desea escribir. Tabla 4.7. Sintaxis de la instrucción EDIMER.

Ejemplo 4.7 Escribir en la celda B880 de la hoja de cálculo TB_OUT, la variable real escalar ESC = 2020 mediante la instrucción: EDIMER "TB_OUT", "determinante", FILA, COLM, ESC

donde FILA=880 y COLM=2. El resultado se presenta en la siguiente figura:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

54

Capítulo 4. Instrucciones de edición de matrices

POSC = 2 MXLB = “determinante”

tamaño de la matriz POSF-1 POSF POSF+1

ESC línea en blanco

POSF+3

HOJA = “TB_OUT”

Figura 4.7. Parámetros de la instrucción EDIMER.

4.8. EDIMPI Escribe una matriz entera en una hoja de cálculo en el formato de salida para variables enteras indicado en el Capítulo 3. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDIMPI HOJA, MXLB, POSF, POSC, MX(), TP

Argumento HOJA MXLB

Tipo de variable String (cadena de caracteres) String (cadena de caracteres)

POSF

Integer (entero)

POSC

Integer (entero)

MX()

Integer (entero)

TP

Optional Integer (argumento opcional tipo entero)

Descripción Hoja de cálculo donde se escribirá la variable ESC. Rotulo relacionado con la variable que será escrito en la fila superior a la celda que contiene la variable. • Como variable de entrada corresponde al número de fila de la celda donde se desea ubicar el término m1,1 de la matriz M. Este parámetro debe ser mayor que 2. • Como variable de salida corresponde al parámetro de entrada POSF más el número de filas de la matriz M y más 3. Número de columna de la celda donde se desea ubicar la variable ESC. Matriz entera que se desea escribir M.

• Si TP=0 presenta todas las columnas de una matriz en el ancho de la hoja de cálculo (por defecto). • Si TP=1 establece una presentación de 6 columnas como máximo para impresión en papel tamaño carta. Tabla 4.8. Sintaxis de la instrucción EDIMPI.

Ejemplo 4.8 Escribir la matriz ELE() de 6 filas y 4 columnas en la hoja de cálculo TB_OUT, mediante la instrucción: EDIMPI "TB_OUT", "ELE()", FILA, COLM, ELE() © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

55

PEFiCA – Programa de elementos finitos a código abierto

POSC = 2

rotulo de la matriz MXLB = “ELE()”

donde

FILA=977 y COLM=2.

tamaño de la matriz

El

rotulo de columnas

POSF-1 POSF POSF+1

rotulo de filas POSF+NF+1 POSF+NF+3 resultado se presenta en la guiente figura:

si-

HOJA = “TB_OUT”

términos de la matriz

Figura 4.8. Parámetros de la instrucción EDIMPI.

4.9. EDIMPR Escribe una matriz real en una hoja de cálculo en el formato de salida para variables reales indicado en el Capítulo 3. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDIMPR HOJA, MXLB, POSF, POSC, MX(), TP

Argumento HOJA MXLB

Tipo de variable String (cadena de caracteres) String (cadena de caracteres)

POSF

Integer (entero)

POSC

Integer (entero)

MX()

Double(real)

TP

Optional Integer (argumento opcional tipo entero)

Descripción Hoja de cálculo donde se escribirá la variable ESC. Rotulo relacionado con la variable que será escrito en la fila superior a la celda que contiene la variable. • Como variable de entrada corresponde al número de fila de la celda donde se desea ubicar el término m1,1 de la matriz M. Este parámetro debe ser mayor que 2. • Como variable de salida corresponde al parámetro de entrada POSF más el número de filas de la matriz M y más 3. Número de columna de la celda donde se desea ubicar la variable ESC. Matriz entera que se desea escribir.

• Si TP=0 presenta todas las columnas de una matriz en el ancho de la hoja de cálculo (por defecto). • Si TP=1 establece una presentación de 6 columnas como máximo para impresión en papel tamaño carta. Tabla 4.9. Sintaxis de la instrucción EDIMPR.

Ejemplo 4.9 Escribir la matriz XYZ() de 12 filas y 2 columnas en la hoja de cálculo TB_OUT, mediante la instrucción: EDIMPR "TB_OUT", "XYZ()", FILA, COLM, XYZ()

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

56

Capítulo 4. Instrucciones de edición de matrices

donde FILA=977 y COLM=2. El resultado se presenta en la siguiente figura: rotulo de la matriz MXLB = “XYZ()”

POSC = 2 tamaño de la matriz

POSF-1 POSF POSF+1

rotulo de columnas

rotulo de filas términos de la matriz

POSF+NF+1 POSF+NF+3

HOJA = “TB_OUT”

Figura 4.9. Parámetros de la instrucción EDIMPR.

4.10. EDLIMH Borra el contenido de todas las celdas de la hoja de cálculo especificada. Se recomienda limpiar la hoja de resultados al comienzo del proceso principal de cálculo en la subrutina PEFiCA(). La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EDLIMH HOJA

Argumento HOJA

Tipo de variable Descripción String (cadena de Nombre de la hoja de cálculo. caracteres) Tabla 4.10. Sintaxis de la instrucción EDLIMH.

Ejemplo 4.10 La siguiente línea de código borra el contenido de todas las celdas de la hoja de cálculo TB_OUT. EDLIMH "TB_OUT"

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 5 Instrucciones de operaciones matriciales básicas El módulo MdMT contiene las subrutinas que realizan las operaciones básicas entre matrices. El nombre de estas subrutinas, en general de 6 caracteres, tiene el prefijo MT para facilitar su ubicación en el código. La Tabla 2.3 resume el objetivo de las subrutinas de este módulo.

5.1. MTCONS Crea una matriz M de nf filas por nc columnas, cuyos coeficientes corresponden a un número real c como se indica en la siguiente ecuación: 1 1 L 1 M = c⋅ M  1 1 L

1 1 M  1 n × n f c

(5.1)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTCONS MX(), C, NF, NC

Argumento

Tipo de variable

Descripción

MX()

Double (real)

Matriz creada M.

C

Double (real)

Valor de los coeficientes de la matriz M.

NF

Integer (entero)

Número de filas de la matriz M.

NC

Integer (entero) Número de columnas de la matriz M. Tabla 5.1. Sintaxis de la instrucción MTCONS.

Ejemplo 5.1 Construir una matriz de 2 filas por 8 columnas cuyos coeficientes son iguales a 2.50. La línea de comando utilizada es: MTCONS MX(), 2.50, 2, 6

La matriz resultante puede visualizarse en la hoja de cálculo TB_OUT, mediante la instrucción EDIMPR obteniendo:

58

Capítulo 5. Instrucciones de operaciones matriciales básicas MX() F1 F2

(2x6) C1 2.5000E+00 2.5000E+00

C2 2.5000E+00 2.5000E+00

C3 2.5000E+00 2.5000E+00

C4 2.5000E+00 2.5000E+00

C5 2.5000E+00 2.5000E+00

C6 2.5000E+00 2.5000E+00

5.2. MTCONI Crea una matriz M de nf filas por nc columnas, cuyos coeficientes corresponden a un número entero c. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTCONI MX(), C, NF, NC

Argumento

Tipo de variable

Descripción

MX()

Integer (entero)

Matriz creada M.

C

Integer (entero)

Valor de los coeficientes de la matriz M.

NF

Integer (entero)

Número de filas de la matriz M.

NC

Integer (entero) Número de columnas de la matriz M. Tabla 5.2. Sintaxis de la instrucción MTCONI.

5.3. MTSUBM Extrae una submatriz S de la matriz existente M. La submatriz de nf filas por nc columnas está formada la matriz M desde el coeficiente m p f , pc hasta el coeficiente m p f + n f −1, pc + nc −1 como lo indica la siguiente expresión:  m11 L m1n ′   mp , p c f c    M  M dado M =  M →S=  m m L mn ′f nc′   n ′f 1  n ′f × nc′  p f + n f −1, p c

   L m p f + n f −1, p c + nc −1   n f × nc L

m p f , p c + n c −1 M

(5.2)

Por lo tanto, la posición del primer coeficiente de la matriz M que conforma la submatriz s corresponde a la fila pf y la columna pc de la matriz M. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

59

PEFiCA – Programa de elementos finitos a código abierto

MTSUBM MX(), MS(), POSF, POSC, NF, NC

Argumento

Tipo de variable

Descripción

MX()

Double (real)

Matriz existente M.

MS()

Double (real)

POSF

Integer (entero)

POSC

Integer (entero)

NF

Integer (entero)

Matriz creada S. Fila de la matriz M que define la posición del termino s11 de la submatriz S. Columna de la matriz M que define la posición del termino s11 de la submatriz S. Número de filas de la submatriz S.

NC

Integer (entero) Número de columnas de la submatriz S. Tabla 5.3. Sintaxis de la instrucción MTSUBM.

Ejemplo 5.2 Extraer una submatriz MS() de 3 filas y 4 columnas desde el coeficiente MX(2,1) de la matriz existente MX() definida como: MX() F1 F2 F3 F4 F5 F6

(6x6) C1 5.2267E+04 2.0000E+04 -1.2267E+04 -4.0000E+03 -2.6133E+04 -2.0000E+04

C2 2.0000E+04 8.0711E+04 4.0000E+03 2.5956E+04 -2.0000E+04 -4.0356E+04

C3 -1.2267E+04 4.0000E+03 5.2267E+04 -2.0000E+04 -1.3867E+04 -4.0000E+03

C4 -4.0000E+03 2.5956E+04 -2.0000E+04 8.0711E+04 4.0000E+03 -6.6311E+04

C5 -2.6133E+04 -2.0000E+04 -1.3867E+04 4.0000E+03 5.2267E+04 2.0000E+04

C6 -2.0000E+04 -4.0356E+04 -4.0000E+03 -6.6311E+04 2.0000E+04 8.0711E+04

Para obtener el resultado esperado se debe escribir la siguiente línea de comando: MTSUBM MX(), MS(), 2, 1, 3, 4

El recuadro a trazos indica la posición del primer coeficiente de la matriz MX() que conforma la submatriz MS(), la cual corresponde a la fila POSF=2 y la columna POSC=1 de la matriz MX(). En cambio, la zona de color gris de NF=3 filas por NC=4 columnas, muestra los términos que deben conformar a la submatriz creada. El resultado de está instrucción es la matriz MS() indicada a continuación: MS()

(3x4)

F1 F2 F3

C1 2.0000E+04 -1.2267E+04 -4.0000E+03

C2 8.0711E+04 4.0000E+03 2.5956E+04

C3 4.0000E+03 5.2267E+04 -2.0000E+04

C4 2.5956E+04 -2.0000E+04 8.0711E+04

5.4. MTADJU Crea un vector columna x conformado por dos subvectores columna existentes s y t expresados como: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

60

Capítulo 5. Instrucciones de operaciones matriciales básicas

 s11   t11      s= M  , t= M  s  t   n ′f 1  n ′f × 1  n ′′f  n ′′f × 1

(5.3)

El vector creado x de n′f + n′f′ filas contiene el vector s a partir de la primera fila y el vector t a partir de la fila n′f + 1 , así:  s11   M     sn ′ 1  s  x=  x= f   t11  t   M     t n ′f′  n ′f × 1

(5.4)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTADJU MX(), MS(), MT()

Argumento

Tipo de variable

Descripción

MX()

Double (real)

Vector columna creado x.

MS()

Double (real)

Primer subvector columna existente s.

MS()

Double (real) Segundo subvector columna existente t. Tabla 5.4. Sintaxis de la instrucción MTADJU.

Ejemplo 5.3 Construir el vector MX()a partir de los vectores existentes MS() y MT() definidos como: MS()

(3x1)

MT()

F1 F2 F3

C1 -4.6505E-01 -7.9349E-03 2.7165E-01

F1 F2 F3

(3x1) C1 -2.3153E-06 5.4164E-07 3.3956E-06

Escribiendo la línea de comando: MTADJU MX(), MS(), MT()

se obtiene el vector MX() presentado a continuación:

MX()

(6x1)

F1 F2 F3

C1 -4.6505E-01 -7.9349E-03 2.7165E-01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

61

PEFiCA – Programa de elementos finitos a código abierto F4 F5 F6

-2.3153E-06 5.4164E-07 3.3956E-06

5.5. MTADMR Crea una matriz real X conformada por dos submatrices reales existentes S y T, adjuntando T después de la última fila o de la última columna de S. Sean S y T matrices de términos reales de la forma:  s11 L s1, ncs   t11 L t1, nct      S= M M  , T= M M   sn ,1 L sn , n  tn ,1 L t n , n  fs cs  ft ct   fs  ft

(5.5)

Caso 1. Si se adjunta la matriz T después de la última fila de la matriz S, se obtiene la matriz X de n fs + n ft filas y ncs = nct columnas de la forma:

 s11  M   sn ,1 S  X =   X =  fs T  t11  M   tn ft ,1

s1, ncs  M   L sn fs , ncs   L t1, nct  M   L tn ft , nct  L

(5.6)

Caso 2. Si se adjunta la matriz T después de la última columna de la matriz S, se obtiene la matriz X de n fs = n ft filas y ncs + nct columnas de la forma:  s11 L s1, ncs  X = [S T] X =  M M  sn ,1 L sn , n fs cs  fs

t11 M tn ft ,1

t1, nct   M  L t n ft , nct  L

(5.7)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

62

Capítulo 5. Instrucciones de operaciones matriciales básicas

MTADMR MX(), MS(), MT(), TP

Argumento

Tipo de variable

Descripción

MX()

Double (real)

Matriz creada X.

MS()

Double (real)

Primera submatriz existente S.

MS()

Double (real)

Segunda submatriz existente T. Identificador del tipo de operación. Optional Integer (ar- • Si TP=1 Caso 1: adjunta T después de la última fila de S. gumento opcional tipo entero) • Si TP=2 Caso 2: adjunta T después de la última columna de S. Tabla 5.5. Sintaxis de la instrucción MTADMR.

TP

Ejemplo 5.4 Construir la matriz MX()a partir de las submatrices existentes KGL() y MAS() definidas como:

KGL() F1 F2 F3 F4

(4x4)

C1 2.0000E+00 -1.0000E+00 0.0000E+00 0.0000E+00

MAS()

C3 0.0000E+00 -1.0000E+00 2.0000E+00 -1.0000E+00

C4 0.0000E+00 0.0000E+00 -1.0000E+00 1.0000E+00

C2 0.0000E+00 2.0000E+00 0.0000E+00 0.0000E+00

C3 0.0000E+00 0.0000E+00 8.0000E+00 0.0000E+00

C4 0.0000E+00 0.0000E+00 0.0000E+00 1.0000E+00

(4x4)

C1 4.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

F1 F2 F3 F4

C2 -1.0000E+00 2.0000E+00 -1.0000E+00 0.0000E+00

Caso 1: escribiendo la línea de comando: MTADMR MX(), KGL(), MAS(), 1

se obtiene la matriz MX() presentada a continuación: MX() F1 F2 F3 F4 F5 F6 F7 F8

(8x4)

C1 2.0000E+00 -1.0000E+00 0.0000E+00 0.0000E+00 4.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C2 -1.0000E+00 2.0000E+00 -1.0000E+00 0.0000E+00 0.0000E+00 2.0000E+00 0.0000E+00 0.0000E+00

C3 0.0000E+00 -1.0000E+00 2.0000E+00 -1.0000E+00 0.0000E+00 0.0000E+00 8.0000E+00 0.0000E+00

C4 0.0000E+00 0.0000E+00 -1.0000E+00 1.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 1.0000E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

63

PEFiCA – Programa de elementos finitos a código abierto

Caso 2: escribiendo la línea de comando: MTADMR MX(), KGL(), MAS(), 2

se obtiene la matriz MX() presentada a continuación:

MX()

(4x8)

F1 F2 F3 F4

C1 2.0000E+00 -1.0000E+00 0.0000E+00 0.0000E+00

C2 -1.0000E+00 2.0000E+00 -1.0000E+00 0.0000E+00

F1 F2 F3 F4

C7 0.0000E+00 0.0000E+00 8.0000E+00 0.0000E+00

C8 0.0000E+00 0.0000E+00 0.0000E+00 1.0000E+00

C3 0.0000E+00 -1.0000E+00 2.0000E+00 -1.0000E+00

C4 0.0000E+00 0.0000E+00 -1.0000E+00 1.0000E+00

C5 4.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C6 0.0000E+00 2.0000E+00 0.0000E+00 0.0000E+00

5.6. MTADMI Crea una matriz de términos enteros X conformada por dos submatrices enteras existentes S y T, adjuntando T después de la última fila o de la última columna de S. La descripción general de esta rutina se puede estudiar en la instrucción MTADMR. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTADMI MX(), MS(), MT(), TP

Argumento

Tipo de variable

Descripción

MX()

Integer (entero)

Matriz creada X.

MS()

Integer (entero)

Primera submatriz existente S.

MS()

Integer (entero)

TP

Segunda submatriz existente T. Identificador del tipo de operación. Optional Integer (ar• Si TP=1 Caso 1: adjunta T después de la última fila de S. gumento opcional tipo • Si TP=2 Caso 2: adjunta T después de la última columna entero) de S. Tabla 5.6. Sintaxis de la instrucción MTADMI.

5.7. MTTRAN Calcula la matriz transpuesta de la matriz existente M, creando la matriz T, donde:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

64

Capítulo 5. Instrucciones de operaciones matriciales básicas

 m11 L m1n ′   m11 c    M= M M  → T = MT =  M m m L mn ′f nc′   n ′f 1  n ′f × nc′  1n ′f

L

mnc′ 1 M L mnc′ n ′f

     nc′ × n ′f

(5.8)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTTRAN MX(), MT()

Argumento

Tipo de variable

Descripción

MX()

Double (real)

Matriz existente M.

MT()

Double (real) Matriz transpuesta T. Tabla 5.7. Sintaxis de la instrucción MTTRAN.

Ejemplo 5.5 Dada la matriz MX()de coeficientes: MX()

(3x4)

F1 F2 F3

C1 2.0000E+04 -1.2267E+04 -4.0000E+03

C2 8.0711E+04 4.0000E+03 2.5956E+04

C3 4.0000E+03 5.2267E+04 -2.0000E+04

C4 2.5956E+04 -2.0000E+04 8.0711E+04

su matriz transpuesta se calcula con la siguiente instrucción: MTTRAN MX(), MT()

de donde se obtiene la matriz MT() presentada a continuación: MT() F1 F2 F3 F4

(4x3) C1 2.0000E+04 8.0711E+04 4.0000E+03 2.5956E+04

C2 -1.2267E+04 4.0000E+03 5.2267E+04 -2.0000E+04

C3 -4.0000E+03 2.5956E+04 -2.0000E+04 8.0711E+04

5.8. MTMULT Multiplica la matriz A por la matriz B obteniendo la matriz C. Se requiere que el número de columnas del pre multiplicador A sea igual al número de filas del post multiplicador B. Esta operación matricial se define como: nc

A B = C → cij =

∑ air brj

(5.9)

r =1

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

65

PEFiCA – Programa de elementos finitos a código abierto

donde A es de n f filas por nc columnas, B de nc filas y nc′ columnas, obteniendo como resultado una matriz C de n f × nc′ . La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTMULT MA(), MB(), MC()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

MB()

Double (real)

Matriz existente B.

MC()

Double (real) Matriz C resultante de la multiplicación. Tabla 5.8. Sintaxis de la instrucción MTMULT.

Ejemplo 5.6 Dadas las matriz BEL()y DEL() definidas previamente como: BEL() F1 F2 F3

(3x6) C1 3.4406E+00 0.0000E+00 0.0000E+00

DEL() F1 F2 F3 F4 F5 F6

C2 0.0000E+00 0.0000E+00 3.4406E+00

C3 -1.3721E+00 0.0000E+00 4.0000E+00

C4 0.0000E+00 4.0000E+00 -1.3721E+00

C5 -2.0685E+00 0.0000E+00 -4.0000E+00

C6 0.0000E+00 -4.0000E+00 -2.0685E+00

(6x1) C1 3.1481E-04 -6.2890E-04 0.0000E+00 -6.8608E-04 0.0000E+00 -6.3553E-04

la multiplicación entre estas matrices se obtiene ejecutando la instrucción: MTMULT BEL(), DEL(), EPE()

donde la matriz EPE() es igual a : EPE() F1 F2 F3

(3x1) C1 1.0831E-03 -2.0220E-04 9.2166E-05

5.9. MTMUL3 Multiplica la primera matriz transpuesta AT por la segunda matriz B y el resultado lo multiplica a la primera matriz A. La operación matricial se define como:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

66

Capítulo 5. Instrucciones de operaciones matriciales básicas

nf

A Tnc ×n f

B n′f ×nc′ A n f ×nc = C nc ×nc

→ tij =

∑ ari brj

nf

cij =

r =1

∑ tir arj

(5.10)

r =1

Siendo n f y nc el número de filas y columnas de la matriz A y n′f y nc′ el número de filas y columnas de la matriz B, debe cumplirse que la matriz B sea cuadrada, es decir n′f = nc′ y que el número de filas de A y B sean iguales, es decir n f = n′f . La matriz obtenida C será cuadrada de nc × nc . Esta instrucción es útil en el cálculo de la matriz de rigidez de un elemento finito de elasticidad K a partir de las constantes elásticas D y del operador diferencial actuando sobre funciones de forma B, así: Κ = ∫ BT D B dV

(5.11)

También se utiliza para transformar una matriz de rigidez de una armadura o pórtico en sistema coordenado local KL a una matriz en sistema a general de coordenadas K, mediante la matriz de rotación R, de la forma: (5.12)

K = RT K L R

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTMUL3 MA(), MB(), MC()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

MB()

Double (real)

Matriz existente B.

MC()

Double (real) Matriz C resultante de la multiplicación. Tabla 5.9. Sintaxis de la instrucción MTMUL3.

Ejemplo 5.7 Dadas las matriz REL()y KEL() definidas previamente como: REL() F1 F2 F3 F4 F5 F6

C1 8.6603E-01 -5.0000E-01 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

KEL() F1 F2 F3 F4 F5 F6

(6x6) C2 5.0000E-01 8.6603E-01 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C3 0.0000E+00 0.0000E+00 1.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C4 0.0000E+00 0.0000E+00 0.0000E+00 8.6603E-01 -5.0000E-01 0.0000E+00

C5 0.0000E+00 0.0000E+00 0.0000E+00 5.0000E-01 8.6603E-01 0.0000E+00

C6 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 1.0000E+00

C2 0.0000E+00 7.1111E+02 1.0667E+03 0.0000E+00 -7.1111E+02 1.0667E+03

C3 0.0000E+00 1.0667E+03 2.1333E+03 0.0000E+00 -1.0667E+03 1.0667E+03

C4 -6.0000E+04 0.0000E+00 0.0000E+00 6.0000E+04 0.0000E+00 0.0000E+00

C5 0.0000E+00 -7.1111E+02 -1.0667E+03 0.0000E+00 7.1111E+02 -1.0667E+03

C6 0.0000E+00 1.0667E+03 1.0667E+03 0.0000E+00 -1.0667E+03 2.1333E+03

(6x6)

C1 6.0000E+04 0.0000E+00 0.0000E+00 -6.0000E+04 0.0000E+00 0.0000E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

67

PEFiCA – Programa de elementos finitos a código abierto

la multiplicación R T K L R entre estas matrices se obtiene ejecutando la instrucción: donde la matriz KEG() es igual a :

MTMUL3 REL(), KEL(), KEG() KEG() F1 F2 F3 F4 F5 F6

(6x6)

C1 4.5178E+04 2.5673E+04 -5.3333E+02 -4.5178E+04 -2.5673E+04 -5.3333E+02

C2 2.5673E+04 1.5533E+04 9.2376E+02 -2.5673E+04 -1.5533E+04 9.2376E+02

C3 -5.3333E+02 9.2376E+02 2.1333E+03 5.3333E+02 -9.2376E+02 1.0667E+03

C4 -4.5178E+04 -2.5673E+04 5.3333E+02 4.5178E+04 2.5673E+04 5.3333E+02

C5 -2.5673E+04 -1.5533E+04 -9.2376E+02 2.5673E+04 1.5533E+04 -9.2376E+02

C6 -5.3333E+02 9.2376E+02 1.0667E+03 5.3333E+02 -9.2376E+02 2.1333E+03

5.10. MTSUMA Calcula la matriz C como la suma entre las matrices A y B. Esta operación se define como: A n f × nc + B n f × nc = C n f × nc

→ cij = aij + bij

(5.13)

Siendo n f y nc el número de filas y de columnas respectivamente de las matrices A, B y C. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTSUMA MA(), MB(), MC()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

MB()

Double (real)

Matriz existente B.

MC()

Double (real) Matriz C resultante de la suma. Tabla 5.10. Sintaxis de la instrucción MTSUMA.

Ejemplo 5.8 Dadas las matriz MA()y MB() definidas previamente como: MA() F1 F2 F3

C1 1.2500E+01 -8.5000E+00 6.3000E+00

MB() F1 F2 F3

(3x4) C2 4.3000E+00 1.5800E+01 -9.8000E+00

C3 0.0000E+00 1.4400E+01 7.5000E+00

C4 2.0000E+00 5.2000E+00 4.0000E+00

C2 -4.3000E+00 7.1000E+00 2.3000E+00

C3 -1.8000E+00 5.8000E+00 2.7000E+00

C4 -2.6000E+00 3.0000E+00 5.6000E+00

(3x4) C1 1.0200E+01 9.6000E+00 6.7000E+00

la suma entre estas matrices se obtiene ejecutando la instrucción:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

68

Capítulo 5. Instrucciones de operaciones matriciales básicas

MTSUMA MA(), MB(), MC()

donde la matriz MC() es igual a : MC()

(3x4) C1 2.2700E+01 1.1000E+00 1.3000E+01

F1 F2 F3

C2 0.0000E+00 2.2900E+01 -7.5000E+00

C3 -1.8000E+00 2.0200E+01 1.0200E+01

C4 -6.0000E-01 8.2000E+00 9.6000E+00

5.11. MTREST Calcula la matriz C como la resta de la matriz A menos la matriz B. Tal operación se define como: A n f × nc − B n f × nc = C n f × n c

→ cij = aij − bij

(5.14)

Siendo n f y nc el número de filas y de columnas respectivamente de las matrices A, B y C. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTREST MA(), MB(), MC()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

MB()

Double (real)

Matriz existente B.

MC()

Double (real) Matriz C resultante de la resta. Tabla 5.11. Sintaxis de la instrucción MTREST.

Ejemplo 5.9 Dadas las matriz MA()y MB() definidas en el Ejemplo 5.8 la resta entre ellas se obtiene ejecutando la instrucción: MTREST MA(), MB(), MC()

donde la matriz MC() es igual a : MC() F1 F2 F3

(3x4)

C1 2.3000E+00 -1.8100E+01 -4.0000E-01

C2 8.6000E+00 8.7000E+00 -1.2100E+01

C3 1.8000E+00 8.6000E+00 4.8000E+00

C4 4.6000E+00 2.2000E+00 -1.6000E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

69

PEFiCA – Programa de elementos finitos a código abierto

5.12. MTPROD Multiplica término a término los coeficientes de las matrices A y B, almacenando el resultado en la matriz C. Este tipo de operación denominada producto de Hadamard (Horn & Johnson 1994) se define como: A n f × nc • B n f × nc = C n f × nc

(5.15)

→ cij = aij ⋅ bij

Siendo n f y nc el número de filas y de columnas respectivamente de las matrices A, B y C. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTPROD MA(), MB(), MC()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

MB()

Double (real)

Matriz existente B.

MC()

Double (real) Matriz resultante C. Tabla 5.12. Sintaxis de la instrucción MTPROD.

Ejemplo 5.10 Dadas las matriz MA()y MB() definidas en el Ejemplo 5.8 el producto de Hadamard entre ellas se obtiene ejecutando la instrucción: MTPROD MA(), MB(), MC()

donde la matriz MC() es igual a : MC() F1 F2 F3

(3x4)

C1 1.2750E+02 -8.1600E+01 4.2210E+01

C2 -1.8490E+01 1.1218E+02 -2.2540E+01

C3 0.0000E+00 8.3520E+01 2.0250E+01

C4 -5.2000E+00 1.5600E+01 2.2400E+01

5.13. MTDIVI Multiplica término a término los coeficientes de las matrices A y B. Obtiene el término cij la matriz C de la división entre el término aij de la matriz A y el término bij de la matriz B, es decir: A n f × nc / B n f × n c = C n f × nc

→ cij =

aij bij

∀ bij ≠ 0

(5.16)

Siendo n f y nc el número de filas y de columnas respectivamente de las matrices A, B y C. Si alguno de los coeficientes de la matriz B es igual a cero, la instrucción mostrará un

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

70

Capítulo 5. Instrucciones de operaciones matriciales básicas

mensaje de error que controla una división inadecuada. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTDIVI MA(), MB(), MC()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

MB()

Double (real)

Matriz existente B.

MC()

Double (real) Matriz resultante C. Tabla 5.13. Sintaxis de la instrucción MTDIVI.

Ejemplo 5.11 Dadas las matriz MA()y MB() definidas en el Ejemplo 5.8 la división término a término entre ellas se obtiene ejecutando la instrucción: MTDIVI MA(), MB(), MC()

donde la matriz MC() es igual a : MC() F1 F2 F3

(3x4)

C1 1.2255E+00 -8.8542E-01 9.4030E-01

C2 -1.0000E+00 2.2254E+00 -4.2609E+00

C3 0.0000E+00 2.4828E+00 2.7778E+00

C4 -7.6923E-01 1.7333E+00 7.1429E-01

5.14. MTPORE Obtiene la matriz B como resultado de multiplicar el escalar c por la matriz A. En otras palabras, realiza la operación: cA n f × n c = B n f × n c

(5.17)

→ bij = c ⋅ aij

Siendo n f y nc el número de filas y de columnas respectivamente de las matrices A y B. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTPORE MA(), ESCA, MB()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

ESCA

Double (real)

Valor del escalar que multiplica a la matriz A.

MB()

Double (real) Matriz resultante B. Tabla 5.14. Sintaxis de la instrucción MTPORE.

Ejemplo 5.12 La siguiente instrucción multiplica la matriz MA()definida en el Ejemplo 5.8 por el escalar 4.5. © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

71

PEFiCA – Programa de elementos finitos a código abierto

MTPORE MA(), 4.5, MB()

donde la matriz resultantes MB() es igual a : MB() F1 F2 F3

(3x4)

C1 5.6250E+01 -3.8250E+01 2.8350E+01

C2 1.9350E+01 7.1100E+01 -4.4100E+01

C3 0.0000E+00 6.4800E+01 3.3750E+01

C4 9.0000E+00 2.3400E+01 1.8000E+01

5.15. MTSUCI Suma los coeficientes de una matriz entera A, de la forma: nc n f

asum =

∑∑ aij

(5.18)

i =1 j =1

Siendo n f y nc el número de filas y de columnas respectivamente de las matriz A, y asum el resultado de la sumatoria de los coeficientes de A. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= MTSUCI(MA())

Argumento

Tipo de variable

Descripción

MA()

Integer (entero)

Matriz existente A.

MTSUCI

Integer (entero) Escalar igual a la sumatoria de los coeficientes de A. Tabla 5.15. Sintaxis de la función MTSUCI.

Ejemplo 5.13 La línea de comando: SUMI = MTSUCI(MI())

guarda en la variable entera SUMI el resultado de la sumatoria de los términos de la matriz MI()definida como:

MI() F1 F2

(2x4) C1 000 004

C2 001 005

C3 002 006

Después la ejecución la variable SUMI = 28

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

C4 003 007

72

Capítulo 5. Instrucciones de operaciones matriciales básicas

5.16. MTSUCR De forma similar a la función MTSUCI, está instrucción suma los coeficientes de una matriz real A. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= MTSUCR(MA())

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

MTSUCR

Double (real) Escalar igual a la sumatoria de los coeficientes de A. Tabla 5.16. Sintaxis de la función MTSUCI.

Ejemplo 5.14 La línea de comando: SUMA = MTSUCI(MA())

guarda en la variable real SUMA el resultado de la sumatoria de los términos de la matriz MA()definida en el Ejemplo 5.8. Después la ejecución la variable SUMA=53.70.

5.17. MTMACI Encuentra el coeficiente máximo o mínimo de una matriz entera A, de la forma:

{ }

{ }

amax = max aij , amin = min aij

(i = 1,K, n f j = 1,K, nc )

(5.19)

Siendo n f y nc el número de filas y de columnas respectivamente de las matriz A. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= MTMACI(MA(),TP)

Argumento

Tipo de variable

Descripción

MA()

Integer (entero)

Matriz existente A.

TP

Optional Integer (argumento opcional tipo entero)

MTMACI

• Si TP=0 la función calcula el máximo coeficiente de A (por defecto). • Si TP=1 la función calcula el mínimo coeficiente de A. Integer (entero) Escalar igual al coeficiente máximo o mínimo de A. Tabla 5.17. Sintaxis de la función MTMACI.

Ejemplo 5.15 La línea de comando: MAXI = MTMACI(MI()) © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

73

PEFiCA – Programa de elementos finitos a código abierto

guarda en la variable entera MAXI el coeficiente máximo de la matriz MI()definida en el Ejemplo 5.13. Después la ejecución la variable MAXI = 7.

5.18. MTMACR Encuentra el coeficiente máximo o mínimo de una matriz real A, de la misma forma como lo hace la función MTMACI con términos enteros. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= MTMACR(MA(),TP)

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente A.

TP

Optional Integer (argumento opcional tipo entero)

MTMACR

• Si TP=0 la función calcula el máximo coeficiente de A (por defecto). • Si TP=1 la función calcula el mínimo coeficiente de A. Double (real) Escalar igual al coeficiente máximo o mínimo de A. Tabla 5.18. Sintaxis de la función MTMACR.

Ejemplo 5.16 La línea de comando: MAXR = MTMACR(MA())

guarda en la variable real MAXR el coeficiente máximo de la matriz MA()definida en el Ejemplo 5.14. Después la ejecución la variable MAXR = 15.8.

5.19. MTBAND Establece el ancho de semi banda de una matriz simétrica llena A y crea la matriz banda B correspondiente (Gere & Weaver 1990; Uribe 1995). La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. MTBAND MLL(), MBA(), BAND

Argumento

Tipo de variable

Descripción

MLL()

Double (real)

Matriz simétrica existente A.

MBA()

Double (real)

Matriz banda creada B.

BAND

Double (real) Ancho de semi banda calculado Tabla 5.19. Sintaxis de la instrucción MTBAND.

Ejemplo 5.17 Dada la matriz simétrica KGL()definida como: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

74

Capítulo 5. Instrucciones de operaciones matriciales básicas KGL() F1 F2 F3 F4 F5 F6

(6x6)

C1 4.0000E+04 -2.0000E+04 1.0000E+04 0.0000E+00 0.0000E+00 0.0000E+00

C2 -2.0000E+04 9.0000E+04 -1.5000E+04 0.0000E+00 2.0000E+04 0.0000E+00

C3 1.0000E+04 -1.5000E+04 9.0000E+04 -1.2000E+04 6.0000E+04 0.0000E+00

C4 0.0000E+00 0.0000E+00 -1.2000E+04 8.0000E+04 4.5000E+04 -2.2000E+04

C5 0.0000E+00 2.0000E+04 6.0000E+04 4.5000E+04 7.0000E+04 1.4000E+04

C6 0.0000E+00 0.0000E+00 0.0000E+00 -2.2000E+04 1.4000E+04 4.0000E+04

y ejecutando la instrucción: MTBAND KGL(), KBA(), BAND

Se obtiene la siguiente matriz banda KBA()cuyo número de columnas corresponde al ancho de semi banda BAND=4 indicado por el número de coeficientes en color gris en la matriz llena KGL(): KBA() F1 F2 F3 F4 F5 F6

(6x4) C1 4.0000E+04 9.0000E+04 9.0000E+04 8.0000E+04 7.0000E+04 4.0000E+04

C2 -2.0000E+04 -1.5000E+04 -1.2000E+04 4.5000E+04 1.4000E+04 0.0000E+00

C3 1.0000E+04 0.0000E+00 6.0000E+04 -2.2000E+04 0.0000E+00 0.0000E+00

C4 0.0000E+00 2.0000E+04 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

5.20. MTFUDU Factoriza una matriz cuadrada M de la forma (Uribe 1995): M n× n = UTn× n D n× n U n× n  m11  M   mn1

L L

m1n   u11 M  =  M mnn   u1n

0 uii L

0   d11 0   0 u nn   0

0 d ii 0

0   u11 0   0 d nn   0

L uii 0

u1n  M  u nn 

(5.20)

es decir, dada la matriz M la instrucción obtiene una matriz triangular superior U y una matriz diagonal D que cumplen con la igualdad anterior. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

75

PEFiCA – Programa de elementos finitos a código abierto

MTFUDU MX(), MD()

Argumento MX()

BAND

Tipo de variable

Descripción Como variable de entrada corresponde a la matriz Double (real) cuadrada existente M. Como variable de salida corresponde a la matriz Double (real) triangular superior creada U. Double (real) Matriz diagonal creada D. Tabla 5.20. Sintaxis de la instrucción MTFUDU.

Ejemplo 5.18 Dada la matriz simétrica MX()definida previamente como: MX()

(4x4) C1 7.0000E+00 1.2000E+01 5.0000E+00 0.0000E+00

F1 F2 F3 F4

C2 1.2000E+01 3.0000E+00 1.0000E+00 -2.0000E+00

C3 5.0000E+00 1.0000E+00 1.5000E+01 8.0000E+00

C4 0.0000E+00 -2.0000E+00 8.0000E+00 4.0000E+00

Al ejecutar la instrucción: MTFUDU MX(), MD()

se obtienen dos matrices: una matriz triangular superior U, la cual se guarda en la variable MX()con los siguientes términos: MX() F1 F2 F3 F4

(4x4)

C1 1.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C2 1.7143E+00 1.0000E+00 0.0000E+00 0.0000E+00

C3 7.1429E-01 4.3089E-01 1.0000E+00 0.0000E+00

C4 0.0000E+00 1.1382E-01 6.0321E-01 1.0000E+00

y una matriz diagonal MD()de la forma: MD() F1 F2 F3 F4

(4x4)

C1 7.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C2 0.0000E+00 -1.7571E+01 0.0000E+00 0.0000E+00

C3 0.0000E+00 0.0000E+00 1.4691E+01 0.0000E+00

C4 0.0000E+00 0.0000E+00 0.0000E+00 -1.1179E+00

5.21. MTFCLU Factoriza la matriz M en el producto entre una matriz triangular inferior L y una matriz triangular superior U de la forma (Horn & Johnson 1994; Antia 2002):

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

76

Capítulo 5. Instrucciones de operaciones matriciales básicas

M n× n = L n× n U n× n

 m11 es decir,  M  mn1

L L

m1n   l11 M  =  M mnn   l n1

0 0   u11 lii 0   0 L lnn   0

L uii 0

u1n  M  u nn 

(5.21)

Del procedimiento número de descomposición matricial, se obtiene una matriz triangular inferior en la cual todos los términos de la diagonal son iguales a 1. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. MTFCLU MX(), ML(), MU()

Argumento

Tipo de variable

Descripción

MX()

Double (real)

matriz cuadrada existente M.

ML()

Double (real)

matriz triangular inferior creada L.

MU()

Double (real) matriz triangular superior creada U. Tabla 5.21. Sintaxis de la instrucción MTFCLU.

Ejemplo 5.19 Dada la matriz simétrica MX()definida en el Ejemplo 5.18, de la instrucción: MTFCLU MX(), ML(), MU()

se obtienen dos matrices: una matriz triangular ML()inferior de la forma: ML() F1 F2 F3 F4

(4x4) C1 1.0000E+00 1.7143E+00 7.1429E-01 0.0000E+00

C2 0.0000E+00 1.0000E+00 4.3089E-01 1.1382E-01

C3 0.0000E+00 0.0000E+00 1.0000E+00 6.0321E-01

C4 0.0000E+00 0.0000E+00 0.0000E+00 1.0000E+00

y una matriz triangular superior MU()con los siguientes términos: MU() F1 F2 F3 F4

(4x4) C1 7.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C2 1.2000E+01 -1.7571E+01 0.0000E+00 0.0000E+00

C3 5.0000E+00 -7.5714E+00 1.4691E+01 0.0000E+00

C4 0.0000E+00 -2.0000E+00 8.8618E+00 -1.1179E+00

5.22. MTDETE Calcula el determinante de una matriz cuadrada M. El procedimiento consiste en descomponer la matriz M en el producto entre una matriz triangular inferior L y una matriz triangular superior U, como se indica en la Ecuación (5.21). El determinante de la matriz M © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

77

PEFiCA – Programa de elementos finitos a código abierto

será el producto entre los términos de la diagonal de las matrices L y U, en virtud de las siguientes propiedades:



El determinante de una multiplicación matricial es el producto entre el determinante de cada matriz.



El determinante de una matriz triangular es el producto entre los términos de su diagonal. Es decir, M = LU → det M = det L ⋅ det U

det L = l11 ⋅ K ⋅ lii ⋅ K ⋅ lnn

; det U = u11 ⋅ K ⋅ uii ⋅ K ⋅ unn

(5.22)

→ det M = l11u11 ⋅ K ⋅ lii uii ⋅ K ⋅ l nn u nn

La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= MTDETE(MX())

Argumento

Tipo de variable

Descripción

MX()

Double (real)

matriz cuadrada existente M.

MTDETE

Double (real) determinante de la matriz M. Tabla 5.22. Sintaxis de la función MTDETE.

Ejemplo 5.20 Conociendo previamente la matriz MX()definida en el Ejemplo 5.18, la instrucción: DETM = MTDETE(MX())

obtiene el valor del determinante de MX()y lo guarda en la variable escalar DETM = 2.0200E+03. Del procedimiento número de descomposición matricial LU, se obtiene una matriz triangular inferior L en la cual todos los términos de la diagonal son iguales a 1.00 y en consecuencia su determinante siempre es igual a 1.00. Por esta razón en el código se calcula el determinante de M como el determinante de U.

5.23. MTINVE Calcula la matriz inversa de una matriz cuadrada M mediante eliminación Gaussiana. Dada una matriz M, la instrucción obtiene una matriz M-1 tal que,(Grossman 1996)

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

78

Capítulo 5. Instrucciones de operaciones matriciales básicas

M −n1× n M n × n = I n× n

(5.23)

siendo I la matriz identidad de orden n. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTINVE MX()

Argumento MX() MX()

Tipo de variable

Descripción como variable de entrada corresponde a la matriz Double (real) cuadrada existente M. como variable de salida corresponde a la matriz inverDouble (real) sa calculada M-1. Tabla 5.23. Sintaxis de la instrucción MTINVE.

Ejemplo 5.21 Conociendo previamente la matriz MX()definida en el Ejemplo 5.18, la instrucción: MTINVE MX()

Calcula la matriz inversa y guarda el resultado en el mismo arreglo MX(), de la manera que después de ejecutada la instrucción los coeficientes de la matriz MX() son: MX() F1 F2 F3 F4

(4x4)

C1 -5.3465E-02 7.3267E-02 9.9010E-02 -1.6139E-01

C2 7.3267E-02 -6.3366E-02 4.9505E-02 -1.3069E-01

C3 9.9010E-02 4.9505E-02 -2.5743E-01 5.3960E-01

C4 -1.6139E-01 -1.3069E-01 5.3960E-01 -8.9455E-01

5.24. MTCOPI Crea una copia de una matriz real determinada. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. MTCOPI MA(), MB()

Argumento

Tipo de variable

Descripción

MA()

Double (real)

Matriz existente.

MB()

Double (real) Copia de la matriz creada. Tabla 5.24. Sintaxis de la instrucción MTCOPI.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 6 Instrucciones de solución de ecuaciones simultáneas Las instrucciones del módulo MdSO tienen como objetivo solucionar sistemas de ecuaciones simultáneas linealmente independientes mediante diferentes métodos. Sea:

M 11u1 + M 12u2 + L + M 1nun = f1 M 21u1 + M 22u2 + L + M 2 nun = f 2 M

(6.1)

M n1u1 + M n 2u2 + L + M nnun = f n un sistema de n ecuaciones simultaneas que puede escribirse matricialmente de la forma: M n× nu n×1 = f n×1

(6.2)

donde M es una matriz cuadrada conformada por los coeficientes M ij y los vectores columna u y f contienen las variables dependientes del sistema u j y los términos independientes f i , respectivamente (Antia 2002). La Tabla 2.4 indica el objetivo de las subrutinas del módulo MdSO.

6.1. SOGAUS Resuelve un sistema de ecuaciones simultaneas linealmente independiente como lo indica la Ecuación (6.1), mediante el método de eliminación de Gauss (Antia 2002). Dada la matriz cuadrada M y el vector de términos independientes f, calcula el vector de variables dependientes u. Cuando el sistema de ecuaciones es linealmente dependiente la instrucción presenta en pantalla un mensaje de error y termina la subrutina. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

80

Capítulo 6. Instrucciones de solución de ecuaciones simultáneas

SOGAUS MS(), VS(), VR()

Argumento

Tipo de variable

Descripción

MS()

Double (real)

Matriz cuadrada existente M.

VS()

Double (real)

Vector de términos independientes existente f.

VR()

Double (real) Vector solución o vector de variables dependientes u. Tabla 6.1. Sintaxis de la instrucción SOGAUS.

Ejemplo 6.1 Dada la matriz cuadrada M de dimensión 4, cuyos coeficientes son: M()

(4x4)

F1 F2 F3 F4

C1 7.0000E+00 8.0000E+00 9.0000E+00 1.0000E+01

C2 1.2000E+01 3.0000E+00 4.0000E+00 5.0000E+00

C3 5.0000E+00 1.0000E+00 1.5000E+01 -1.0000E+00

C4 0.0000E+00 -2.0000E+00 8.0000E+00 4.0000E+00

y el vector de términos independientes f igual a: F() F1 F2 F3 F4

(4x1) C1 8.0000E+00 1.0000E+01 -2.0000E+00 1.0000E+00

calcular el vector de variables dependientes u, utilizando la siguiente instrucción: SOGAUS M(), F(), U()

Como resultado se obtiene, U() F1 F2 F3 F4

(4x1) C1 7.5070E-01 1.0845E-01 2.8873E-01 -1.6901E+00

6.2. SOCHLK Resuelve un sistema simétrico de ecuaciones simultaneas linealmente independiente mediante el método de Cholesky modificado (Uribe 1995); en otras palabras, calcula el vector de variables dependientes u de la Ecuación (6.1), dada la matriz simétrica M y el vector de términos independientes f. Cuando el sistema de ecuaciones es linealmente dependiente la instrucción presenta en pantalla un mensaje de error y termina la subrutina.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

81

PEFiCA – Programa de elementos finitos a código abierto

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. SOCHLK MS(), VS(), VR()

Argumento

Tipo de variable

Descripción Matriz simétrica existente M. La instrucción lee los coeficientes de la diagonal superior de la matriz. Vector de términos independientes existente f.

MS()

Double (real)

VS()

Double (real)

VR()

Double (real) Vector solución o vector de variables dependientes u. Tabla 6.2. Sintaxis de la instrucción SOCHLK.

Ejemplo 6.2 Dada la matriz simétrica M de dimensión 4, cuyos coeficientes son: M()

(4x4)

F1 F2 F3 F4

C1 7.0000E+00 1.2000E+01 5.0000E+00 0.0000E+00

C2 1.2000E+01 3.0000E+00 1.0000E+00 -2.0000E+00

C3 5.0000E+00 1.0000E+00 1.5000E+01 8.0000E+00

C4 0.0000E+00 -2.0000E+00 8.0000E+00 4.0000E+00

y el vector de términos independientes f igual a: F() F1 F2 F3 F4

(4x1) C1 8.0000E+00 1.0000E+01 -2.0000E+00 1.0000E+00

calcular el vector de variables dependientes u, utilizando la siguiente instrucción: SOCHLK M(), F(), U()

Como resultado se obtiene, U() F1 F2 F3 F4

(4x1) C1 -5.4455E-02 -2.7723E-01 2.3416E+00 -4.5718E+00

6.3. SOBAND Resuelve un sistema de ecuaciones simultaneas linealmente independiente mediante el método de Cholesky modificado, en el cual la matriz simétrica M de la Ecuación (6.1) se lee como una matriz banda (Gere & Weaver 1990; Uribe 1995). © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

82

Capítulo 6. Instrucciones de solución de ecuaciones simultáneas

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. SOBAND MBA(), VX()

Argumento

Tipo de variable

MBA()

Double (real)

Descripción

Matriz existente M en formato matriz banda. como variable de entrada corresponde al vector de Double (real) términos independientes existente f. como variable de salida corresponde al vector soluDouble (real) ción o vector de variables dependientes u. Tabla 6.3. Sintaxis de la instrucción SOBAND.

VX() VX()

Ejemplo 6.3 La matriz simétrica M(), de dimensión igual a 4 y ancho de semi banda igual a 3, expresada como: M()

(4x4)

F1 F2 F3 F4

C1 7.0000E+00 1.2000E+01 5.0000E+00 0.0000E+00

C2 1.2000E+01 3.0000E+00 1.0000E+00 -2.0000E+00

C3 5.0000E+00 1.0000E+00 1.5000E+01 8.0000E+00

C4 0.0000E+00 -2.0000E+00 8.0000E+00 4.0000E+00

se puede representar mediante una matriz banda MBA() de 4 filas por 3 columnas, de la forma: MBA() F1 F2 F3 F4

(4x3)

C1 7.0000E+00 3.0000E+00 1.5000E+01 4.0000E+00

C2 1.2000E+01 1.0000E+00 8.0000E+00 0.0000E+00

C3 5.0000E+00 -2.0000E+00 0.0000E+00 0.0000E+00

Dado un vector de términos independientes f igual a: F() F1 F2 F3 F4

(4x1) C1 8.0000E+00 1.0000E+01 -2.0000E+00 1.0000E+00

calcular el vector de variables dependientes u, utilizando la siguiente instrucción: SOBAND MBA(), VX()

El resultado se sobrescribe en el vector VX(),

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto VX() F1 F2 F3 F4

(4x1) C1 -5.4455E-02 -2.7723E-01 2.3416E+00 -4.5718E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

83

Capítulo 7 Instrucciones de cálculo de valores y vectores propios Las instrucciones del módulo MdVP tienen como objetivo solucionar sistemas de ecuaciones homogéneos mediante diferentes métodos, calculando los valores y vectores propios. Sea:

A11 x1 + A12 x2 + L + A1n xn = 0 A21 x1 + A22 x2 + L + A2 n xn = 0 M An1 x1 + An 2 x2 + L + Ann xn = 0

(7.1)

un sistema homogéneo de n ecuaciones simultaneas que puede escribirse matricialmente de la forma:

Ai ⋅ xi = 0

(7.2)

donde A i y x i corresponden a la colección de matrices cuadradas y de vectores propios, respectivamente que satisfacen la ecuación anterior. La Tabla 2.6 indica el objetivo de las subturinas del módulo MdVP.

7.1. VPITER Obtiene el primer vector propio x1 y el primer valor propio λ1 mediante el método de la iteración inversa (Bathe 1996), en un sistema de ecuaciones homogéneo de la forma:

K ⋅ x i = λi M ⋅ x i

(7.3)

donde K es la matriz de rigidez simétrica, positiva y definida, M es la matriz diagonal de masas, x i es el i-esimo vector propio calculado, λi es el i-esimo valor propio calculado. El método de la iteración inversa supone un vector propio inicial, con el cual se calcula un nuevo vector propio aproximado, después, a partir del vector calculado se encuentra una tercera aproximación. Este procedimiento se repite hasta que el valor propio entre ciclo y ciclo sea tan aproximado como la tolerancia lo especifique. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

86

Capítulo 6. Instrucciones de solución de ecuaciones simultáneas

VPITER KGL(), MAS(), VEP(), VAP, NCIC, TOLC, TOL

Argumento

Tipo de variable

Descripción

KGL()

Double (real)

Matriz de rigidez simétrica existente K.

MAS()

Double (real)

Matriz de masas diagonal existente M.

VEP()

Double (real)

Primer vector propio calculado

VAP

Double (real)

Primer valor propio calculado

NCIC

Integer (entero)

Número de iteraciones realizadas

TOLC

Double (real) Tolerancia calculada Optional Double Tolerancia especificada para el valor propio calcula(argumento opcional do. Por defecto TOL=0.01 tipo real) Tabla 7.1. Sintaxis de la instrucción VPITER.

TOL

x1

λ1

Ejemplo 7.1 Dada la matriz de rigidez KGL() y la matriz de masas MAS(), cuyos coeficientes son: KGL()

(4x4) C1 2.0000E+00 -1.0000E+00 0.0000E+00 0.0000E+00

F1 F2 F3 F4 MAS()

(4x4)

F1 F2 F3 F4

C1 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C2 -1.0000E+00 2.0000E+00 -1.0000E+00 0.0000E+00

C3 0.0000E+00 -1.0000E+00 2.0000E+00 -1.0000E+00

C4 0.0000E+00 0.0000E+00 -1.0000E+00 1.0000E+00

C2 0.0000E+00 2.0000E+00 0.0000E+00 0.0000E+00

C3 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C4 0.0000E+00 0.0000E+00 0.0000E+00 1.0000E+00

calcular el primer vector propio VEP() y el primer valor propio VAP, mediante la instrucción: VPITER KGL(), MAS(), VEP(), VAP, NCIC, TOLC

Como resultado se obtiene,

VEP() F1 F2 F3 F4 VAP

(4x1) C1 2.5126E-01 5.0252E-01 6.0302E-01 7.0353E-01

(1x1) 1.4646E-01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

87

PEFiCA – Programa de elementos finitos a código abierto

NCIC

(1x1) 002

TOLC

(1x1) 4.0568E-03

7.2. VPJACK Obtiene los vectores propios xi y los valores propios λi mediante el método de Jacobi (Bathe 1996), en un sistema de ecuaciones homogéneo de la forma: (7.4)

K ⋅ xi = λi xi

donde K es la matriz de rigidez simétrica, positiva y definida de tamaño n. La instrucción almacena cada vector propio como una columna de la matriz X y guarda la colección de valores propios en el vector Λ , como lo indica la siguiente expresión: X n× n = [x1 x 2 L x n ] Λ n×1 = [λ1 λ2 L λn ]

T

(7.5)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. VPJACK KGL(), VEP(), VAP(), NCIC, TOL

Argumento

Tipo de variable

Descripción

KGL()

Double (real)

VEP()

Double (real)

VAP

Double (real)

Matriz de rigidez simétrica existente K. Matriz que contiene a los vectores propios calculados X. Vector que contiene a los valores propios calculados

NCIC

Integer (entero) Número de iteraciones realizadas Optional Double Tolerancia especificada para el valor propio calcula(argumento opcional do. Por defecto TOL=0.01 tipo real) Tabla 7.2. Sintaxis de la instrucción VPJACK.

TOL

Λ.

Ejemplo 7.2 Dada la matriz de rigidez KGL()cuyos coeficientes son: KGL() F1 F2 F3 F4

(4x4) C1 5.0000E+00 -4.0000E+00 1.0000E+00 0.0000E+00

C2 -4.0000E+00 6.0000E+00 -4.0000E+00 1.0000E+00

C3 1.0000E+00 -4.0000E+00 6.0000E+00 -4.0000E+00

C4 0.0000E+00 1.0000E+00 -4.0000E+00 5.0000E+00

calcular la matriz que contiene la colección de vectores propios VEP() y el vector que contiene la colección de valores propios VVP(), mediante la instrucción:: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

88

Capítulo 6. Instrucciones de solución de ecuaciones simultáneas

VPJACK KGL(), VEP(), VVP(), NCIC

Como resultado se obtiene, VEP() F1 F2 F3 F4 VVP()

(4x4) C1 3.7175E-01 6.0150E-01 6.0150E-01 3.7175E-01

C2 -3.7175E-01 6.0150E-01 -6.0150E-01 3.7175E-01

C3 -6.0150E-01 3.7175E-01 3.7175E-01 -6.0150E-01

C4 -6.0150E-01 -3.7175E-01 3.7175E-01 6.0150E-01

(4x1)

F1 F2 F3 F4

C1 1.4590E-01 1.3090E+01 6.8541E+00 1.9098E+00

NCIC

(1x1) 004

7.3. VPJACO Obtiene los vectores propios xi y los valores propios λi mediante el método de Jacobi (Bathe 1996), en un sistema de ecuaciones homogéneo de la forma: (7.6)

K ⋅ xi = λi M ⋅ xi

donde K n× n es la matriz de rigidez simétrica, positiva y definida de tamaño n, M n× n es la matriz simétrica de masas. La instrucción almacena cada vector propio como una columna de la matriz X y guarda la colección de valores propios en el vector Λ , como lo indica la siguiente expresión: X n× n = [x1 x 2 L x n ] Λ n×1 = [λ1 λ2 L λn ]

T

(7.7)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

89

PEFiCA – Programa de elementos finitos a código abierto

VPJACO KGL(), MAS(), VEP(), VAP(), NCIC, TOL

Argumento

Tipo de variable

Descripción

KGL()

Double (real)

Matriz de rigidez simétrica existente K.

MAS()

Double (real)

VEP()

Double (real)

VAP

Double (real)

Matriz de masas simétrica existente M. Matriz que contiene a los vectores propios calculados X. Vector que contiene a los valores propios calculados

NCIC

Integer (entero) Número de iteraciones realizadas Optional Double Tolerancia especificada para el valor propio calcula(argumento opcional do. Por defecto TOL=0.01 tipo real) Tabla 7.3. Sintaxis de la instrucción VPJACO.

TOL

Λ.

Ejemplo 7.3 Dada la matriz de rigidez KGL()y la matriz de masas MAS(), cuyos coeficientes son: KGL() F1 F2 F3 F4

(4x4) C1 5.0000E+00 -4.0000E+00 1.0000E+00 0.0000E+00

MAS()

(4x4)

F1 F2 F3 F4

C1 2.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C2 -4.0000E+00 6.0000E+00 -4.0000E+00 1.0000E+00

C3 1.0000E+00 -4.0000E+00 6.0000E+00 -4.0000E+00

C4 0.0000E+00 1.0000E+00 -4.0000E+00 5.0000E+00

C2 0.0000E+00 2.0000E+00 0.0000E+00 0.0000E+00

C3 0.0000E+00 0.0000E+00 1.0000E+00 0.0000E+00

C4 0.0000E+00 0.0000E+00 0.0000E+00 1.0000E+00

calcular la matriz que contiene la colección de vectores propios VEP() y el vector que contiene la colección de valores propios VVP(), mediante la instrucción:: VPJACO KGL(), MAS(), VEP(), VVP(), NCIC

Como resultado se obtiene,

VEP()

(4x4)

F1 F2 F3 F4

C1 6.5094E-01 1.0317E+00 9.9759E-01 6.0339E-01

C2 -1.4092E+00 -3.9381E-01 1.5490E+00 1.8261E+00

C3 1.7190E-01 -4.0853E-01 1.1638E+00 -8.9810E-01

C4 6.8261E-01 -6.4848E-01 -3.6135E-02 8.0444E-01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

90

Capítulo 6. Instrucciones de solución de ecuaciones simultáneas VVP()

(4x1)

F1 F2 F3 F4

C1 9.6537E-02 1.3915E+00 1.0638E+01 4.3735E+00

NCIC

(1x1) 004

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 8 Instrucciones para crear la matriz de funciones de forma de un elemento Cada instrucción presentada a continuación crea la matriz o el vector de funciones de forma de un tipo de elemento finito de la librería del programa. Estas subrutinas están ubicadas en el módulo MdN. La Tabla 2.7 resume el objetivo de las subrutinas de este módulo. El elemento finito determina un subdominio del problema en el cual una o varias funciones de aproximación son continuas expresadas como:

φ ( e ) (x) = N(x) ( e) Φ ( e) ∀x ∈ Ω ( e )

(8.1)

La matriz N ( e ) = [N i( e ) , N (j e ) ,L, N n( e ) ] contiene las funciones de forma del elemento las cuales dependen de la posición en el interior del elemento x donde sean evaluadas. El vecT tor Φ ( e ) = [φi( e ) , φ j( e ) ,L, φ n( e ) ] tiene los valores nodales asociados al elemento.

8.1. NUNID2 Crea la matriz de funciones de forma de un elemento unidimensional lineal. En el dominio Ω (e ) de este tipo de elemento se define una función de aproximación lineal en un espacio unidimensional de la forma:

φ ( e ) ( x) = a1 + a 2 x ∀x ∈ Ω ( e )

(8.2)

El elemento de longitud L(e ) , tiene dos nudos ubicados en sus extremos y un grado de libertad o valor nodal por cada nudo (Figura 8.1(a)). La función de aproximación se puede escribir en términos de las funciones de forma y de los valores nodales como:

φ ( e ) = N i( e)φi( e ) + N (j e )φ (j e )

(8.3)

92

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

φ (ej )

φ ( e ) = a1 + a2 x

N i(e )

1.0

N (ej )

1.0

φi(e ) 0.0

L(e )

i

j

0.0

L(e )

i

x, ξ

j

x, ξ (a)

(b)

Figura 8.1. Elemento Unidimensional Lineal: (a) geometría y función de aproximación, (b)funciones de forma.

Al expresar la ecuación anterior en notación matricial como lo indica el Ecuación (8.1), la matriz de funciones de forma de este tipo de elemento es igual a:

N ( e ) = [N i( e )

N (j e ) ]

(8.4)

siendo, N i( e ) = 1 −

x L( e )

; N (j e ) =

x L( e )

(8.5)

como lo muestra la Figura 8.1(b). Sustituyendo al cociente x L(e ) por la coordenada natural 0 ≤ ξ ≤ 1 las funciones de forma se pueden expresar como:

N i( e ) = 1 − ξ

; N (j e ) = ξ

(8.6)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. NUNID2 MX(), XCN

Argumento MX() XCN

Tipo de variable

Descripción Matriz creada de las funciones de forma del elemento Double(real) N (e ) . Posición donde se evalúa la función de forma en coDouble(real) ordenadas naturales 0 ≤ ξ ≤ 1 . Tabla 8.1. Sintaxis de la instrucción NUNID2.

Ejemplo 8.1 Las funciones de forma de un elemento unidimensional lineal evaluadas a 0.8 L( e ) desde el extremo izquierdo del elemento se obtiene de la siguiente expresión: NUNID2 NEL(), 0.8

Los coeficientes de la matriz de funciones de forma son los siguientes: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

93

PEFiCA – Programa de elementos finitos a código abierto NEL() F1

(1x2)

C1 2.0000E-01

C2 8.0000E-01

8.2. NUNID3 Crea la matriz de funciones de forma de un elemento unidimensional cuadrático. En el dominio Ω (e ) de este tipo de elemento se define una función de aproximación polinómica de orden 2 en un espacio unidimensional de la forma:

φ ( e ) ( x) = a1 + a 2 x + a3 x 2 ∀x ∈ Ω ( e)

(8.7)

El elemento de longitud L(e ) , tiene tres nudos ubicados en el centro y en sus extremos. En cada nudo hay un grado de libertad o valor nodal como se indica en la . (e ) φi(e ) φ ( e ) = a1 + a2 x + a3 x 2 φk

1.0

N i(e )

N k(e )

1.0

φ (ej ) N (ej ) 0.0

i

j L(e ) 2

L(e ) 2 x, ξ

k

i

(a)

0.0

j

k

(b)

Figura 8.2. Elemento Unidimensional Cuadrático: (a) geometría y función de aproximación, (b)funciones de forma.

La función de aproximación se puede escribir en términos de las funciones de forma y de los valores nodales como:

φ ( e ) = N i( e)φi( e) + N (j e )φ (j e ) + N k( e )φ k( e )

(8.8)

Al expresar la ecuación anterior en notación matricial como lo indica el Ecuación (8.1), la matriz de funciones de forma de este tipo de elemento es igual a:

N ( e ) = [N i( e )

N (j e )

N k( e ) ]

siendo,

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

(8.9)

94

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

N

(e) i

x x = 1 − 3 ( e )  + 2 ( e )  L  L 

N

x x = 4 ( e )  − 4 ( e )  L  L 

2

(e) j

N

x x = − ( e )  + 2 ( e )  L  L 

2

(e) j

2

(8.10)

como lo muestra la Figura 8.1(b). Sustituyendo al cociente x L(e ) por la coordenada natural 0 ≤ ξ ≤ 1 las funciones de forma se pueden expresar como:

N i( e ) = 1 − 3ξ + 2ξ 2

; N (j e ) = 4ξ − 4ξ 2

; N (j e ) = −ξ + 2ξ 2

(8.11)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. NUNID3 MX(), XCN

Argumento MX() XCN

Tipo de variable

Descripción Matriz creada de las funciones de forma del elemento Double(real) N (e ) . Posición donde se evalúa la función de forma en coDouble(real) ordenadas naturales 0 ≤ ξ ≤ 1 . Tabla 8.2. Sintaxis de la instrucción NUNID3.

Ejemplo 8.2 Las funciones de forma de un elemento unidimensional cuadrático evaluadas a 0.8 L( e ) desde el extremo izquierdo del elemento se obtiene de la siguiente expresión: NUNID3 NEL(), 0.8

Los coeficientes de la matriz de funciones de forma son los siguientes: NEL() F1

(1x3)

C1 -1.2000E-01

C2 6.4000E-01

C3 4.8000E-01

8.3. NTRIAN Crea la matriz de funciones de forma de un elemento triangular lineal con un grado de libertad por nudo. En el dominio Ω (e ) de este tipo de elemento se define una función de aproximación lineal en un espacio bidimensional de la forma:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

95

PEFiCA – Programa de elementos finitos a código abierto

φ ( e ) ( x, y ) = a1 + a 2 x + a3 y ∀( x, y ) ∈ Ω ( e )

(8.12)

El elemento de área A, tiene tres nudos ubicados en sus extremos y un grado de libertad o valor nodal por cada nudo como se ilustra en la Figura 8.3. En general en los elementos bidimensionales se elige el nudo i y los demás se designan en sentido antihorario. j (x j , y j )

( xk , y k ) k

y

x

i ( xi , yi )

(a) (b) Figura 8.3. Elemento triangular lineal: (a) geometría, (b) función de aproximación

La función de aproximación se puede escribir en términos de las funciones de forma y de los valores nodales como:

φ ( e ) = N i( e)φi( e) + N (j e )φ (j e ) + N k( e )φ k( e )

(8.13)

Al expresar la ecuación anterior en notación matricial como lo indica el Ecuación (8.1), la matriz de funciones de forma de este tipo de elemento es igual a:

N ( e ) = [N i( e )

N (j e )

N k( e ) ]

(8.14)

siendo,

1 (ai + bi x + ci y ) 2A 1 N (j e ) ( x, y ) = (a j + b j x + c j y ) 2A 1 N k( e ) ( x, y ) = (a k + bk x + c k y ) 2A N i( e ) ( x, y ) =

donde,

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

(8.15)

96

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

ai = x j ⋅ y k − xk ⋅ y j

bi = y j − y k

ci = x k − x j

a j = x k ⋅ y i − xi ⋅ y k

b j = y k − yi

c j = xi − x k

a k = xi ⋅ y j − x j ⋅ y i

bk = y i − y j

c k = x j − xi

(8.16)

La Figura 8.4 representa las funciones de forma del elemento mediante tres gráficos tridimensionales donde el eje vertical indica la función de forma y los otros dos ejes definen la geometría del elemento.

(a)

(b)

(c)

Figura 8.4. Funciones de forma del elemento triangular lineal.

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. NTRIAN MX(),XYZ(), ELE(), IELE, XP, YP

Argumento MX() XYZ() ELE() IELE XP YP

Tipo de variable

Descripción Matriz creada de las funciones de forma del elemento Double (real) N (e ) . Matriz existente de coordenadas de los nudos de la Double (real) malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades Integer (entero) descrita en el Apartado 3.4. Integer (entero) Número del elemento finito. Coordenada x de un punto dentro del elemento donde Double (real) se evalúa la función de forma. Coordenada y de un punto dentro del elemento donde Double (real) se evalúa la función de forma. Tabla 8.3. Sintaxis de la instrucción NTRIAN.

Ejemplo 8.3 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE() mostrada en la Figura 8.6, las funciones de forma en el centroide del elemento triangular lineal número 4, se obtiene de las siguientes instrucciones:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

97

PEFiCA – Programa de elementos finitos a código abierto : : 'coordenadas del centroide del elemento XP = (XYZ(ELE(4, 1), 1) + XYZ(ELE(4, 2), 1) + XYZ(ELE(4, 3), 1)) / 3 YP = (XYZ(ELE(4, 1), 2) + XYZ(ELE(4, 2), 2) + XYZ(ELE(4, 3), 2)) / 3 'matriz de funciones de forma del elemento NTRIAN NEL(), XYZ(), ELE(), 4, XP, YP : : Figura 8.5. Parte del código de la rutina principal PEFiCA donde se calcula la matriz de

fun-

ciones de forma de un elemento triangular lineal. 03 02

02

y

06 05

04

09

05

08 03

01 01

04

yp

07

x Matriz de coordenadas de los nudos (existente)

xp malla de elementos finitos

Matriz de conectividades de los elementos (existentes)

Figura 8.6. Ejemplo. Elemento triangular lineal número 4 de una malla de elementos finitos.

Los coeficientes de la matriz de funciones de forma son los siguientes: NEL()

(1x3)

F1

C1 3.3333E-01

C2 3.3333E-01

C3 3.3333E-01

8.4. NRECTA Crea la matriz de funciones de forma de un elemento rectangular bilineal con un grado de libertad por nudo. En el dominio Ω (e ) de este tipo de elemento se define una función de aproximación lineal en un espacio bidimensional de la forma:

φ ( e ) ( s, t ) = a1 + a 2 s + a3 t + a 4 st ∀( s, t ) ∈ Ω ( e )

(8.17)

siendo s y t los ejes de un sistema coordenado local con origen en el nudo i como se indica en la Figura 8.7. El elemento tiene cuatro nudos ubicados en sus extremos y un grado de

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

98

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

libertad o valor nodal por cada nudo. En general en los elementos bidimensionales se elige el nudo i y los demás se designan en sentido antihorario. t k

m

2a

y

s i

2b

j

x (a) (b) Figura 8.7. Elemento rectangular bilineal: (a) geometría, (b) función de aproximación

La función de aproximación se puede escribir en términos de las funciones de forma y de los valores nodales como:

φ ( e ) = N i( e)φi( e ) + N (j e )φ (j e ) + N k( e)φ k( e) + N m( e )φ m( e )

(8.18)

Al expresar la ecuación anterior en notación matricial como lo indica el Ecuación (8.1), la matriz de funciones de forma de este tipo de elemento es igual a:

N ( e ) = [N i( e )

N m( e ) ]

(8.19)

1 (2b − s ) ⋅ (2a − t ) 4ab s N (j e ) ( s, t ) = ( 2a − t ) 4ab st N k( e ) ( s, t ) = 4ab t N m( e ) ( s, t ) = (2b − s ) 4ab

(8.20)

N (j e )

N k( e )

siendo, N i( e ) ( s, t ) =

La Figura 8.9 representa las funciones de forma del elemento mediante cuatro gráficos tridimensionales donde el eje vertical indica la función de forma y los otros dos ejes definen la geometría del elemento. La instrucción evalúa a las funciones de forma en la posición relativa 0 ≤ s 2b ≤ 1 en dirección s y 0 ≤ t 2a ≤ 1 en dirección t, como lo indican las siguientes ecuaciones:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

99

PEFiCA – Programa de elementos finitos a código abierto

s t s t N i( e )  ,  = 1 −  ⋅ 1 −   2b 2a   2b   2a  s t s  t  N (j e )  ,  = 1 −   2b 2a  2b  2a  s t s t N k( e )  ,  = ⋅  2b 2a  2b 2a s t t  s  N m( e )  ,  = 1 −   2b 2a  2a  2b 

(8.21)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. NRECTA MX(),XYZ(), ELE(), IELE, SP, TP

Argumento MX() XYZ() ELE() IELE SP

TP

Tipo de variable

Descripción Matriz creada de las funciones de forma del elemento Double (real) N (e ) . Matriz existente de coordenadas de los nudos de la Double (real) malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades Integer (entero) descrita en el Apartado 3.4. Integer (entero) Número del elemento finito. Posición relativa 0 ≤ s 2b ≤ 1 de un punto dentro del Double (real) elemento en dirección s donde se evalúa la función de forma Posición relativa 0 ≤ t 2a ≤ 1 de un punto dentro del Double (real) elemento en dirección t donde se evalúa la función de forma. Tabla 8.4. Sintaxis de la instrucción NRECTA.

Ejemplo 8.4 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE() mostrada en la Figura 8.8, las funciones de forma en el centroide del elemento rectangular bilineal número 1, se obtiene a partir de la siguientes instrucción: NRECTA NEL(), XYZ(), ELE(), 1, 0.5, 0.5

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

100

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

03 02

2a=1.5

(t 2a )(1) = 0.5

02

04

09

05

08 03

y 01

06 05

01

x

04

07

(1)

( s 2b ) = 0.5 2b=1.5

Matriz de coordenadas de los nudos (existente)

malla de elementos finitos

Matriz de conectividades de los elementos (existentes)

Figura 8.8. Ejemplo. Elemento rectangular bilineal número 1 de la malla de elementos finitos.

Los coeficientes de la matriz de funciones de forma son los siguientes: NEL() F1

(1x4)

C1 2.5000E-01

C2 2.5000E-01

C3 2.5000E-01

C4 2.5000E-01

N (j e )

N i( e )

(a)

N k(e )

(b)

N m( e )

(c) (d) Figura 8.9. Funciones de forma del elemento rectangular bilineal.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

101

PEFiCA – Programa de elementos finitos a código abierto

8.5. NTRIEL Crea la matriz de funciones de forma de un elemento triangular lineal para elasticidad bidimensional u otro problema con dos grados de libertad por nudo como lo indica la Figura 8.10. vj

(x j , y j )

vk uk

k

( xk , y k )

uj j

v(x,y) u(x,y)

vi

y

( xi , yi ) i

ui

x Figura 8.10. Elemento triangular lineal de elasticidad bidimensional.

El vector que define el campo del desplazamiento en elasticidad bidimensional T u = [u v] tiene dos componentes que representan el desplazamiento en la dirección x y y respectivamente. Cada una de ellas se describe como una función de aproximación independiente pero del mismo tipo, definida para todo punto (x,y) que pertenece al dominio del elemento Ω (e ) . En un elemento triangular lineal en particular se tiene que: u ( e ) ( x, y ) = N i( e ) u i( e ) + N (j e ) u (je ) + N k( e ) u k( e ) v ( e ) ( x, y ) = N i( e ) vi( e ) + N (j e ) v (je ) + N k( e ) v k( e )

(8.22)

siendo N i( e ) , N (j e ) , N k( e ) las funciones de forma expresadas en la Ecuación (8.15). Ecuación (8.22) se expresa matricialmente como: u ( x) ( e ) = N ( x ) ( e ) U ( e )

∀x ∈ Ω ( e )

La

(8.23)

El vector de valores nodales del desplazamiento en el elemento es T U = [u i( e ) vi( e ) u (je ) v (je ) u k( e ) v k( e ) ] , y la matriz de funciones de forma corresponde a: (e)

N

(e)

 N i( e ) =  0

0 N i( e )

N (j e ) 0

0 N (j e )

N k( e ) 0

0   N k( e ) 

(8.24)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. NTRIEL MX(), XYZ(), ELE(), IELE, XP, YP © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

102

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

Argumento MX() XYZ() ELE() IELE XP YP

Tipo de variable

Descripción Matriz creada de las funciones de forma del elemento Double (real) N (e) . Matriz existente de coordenadas de los nudos de la Double (real) malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades Integer (entero) descrita en el Apartado 3.4. Número del elemento finito. Integer (entero) Coordenada x de un punto dentro del elemento donde Double (real) se evalúa la función de forma. Coordenada y de un punto dentro del elemento donde Double (real) se evalúa la función de forma. Tabla 8.5. Sintaxis de la instrucción NTRIEL.

Ejemplo 8.5 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE() mostrada en la Figura 8.6, las funciones de forma en el centroide del elemento triangular lineal para elasticidad bidimensional número 4, se obtiene de las siguientes instrucciones: : : 'coordenadas del centroide del elemento XP = (XYZ(ELE(4, 1), 1) + XYZ(ELE(4, 2), 1) + XYZ(ELE(4, 3), 1)) / 3 YP = (XYZ(ELE(4, 1), 2) + XYZ(ELE(4, 2), 2) + XYZ(ELE(4, 3), 2)) / 3 'matriz de funciones de forma del elemento NTRIEL NEL(), XYZ(), ELE(), 4, XP, YP : : Figura 8.11. Parte del código de la rutina principal PEFiCA donde se calcula la matriz

de

funciones de forma de un elemento triangular lineal de elasticidad bidimensional.

Los coeficientes de la matriz de funciones de forma son los siguientes: NEL() F1 F2

(2x6)

C1 3.3333E-01 0.0000E+00

C2 0.0000E+00 3.3333E-01

C3 3.3333E-01 0.0000E+00

C4 0.0000E+00 3.3333E-01

C5 3.3333E-01 0.0000E+00

C6 0.0000E+00 3.3333E-01

8.6. NRECEL Crea la matriz de funciones de forma de un elemento rectangular bilineal para elasticidad bidimensional u otro problema con dos grados de libertad por nudo como lo indica la Figura 8.12. Como se indicó en la sección anterior, las componentes cartesianas del vector del desT plazamiento en elasticidad bidimensional u = [u v ] corresponden a dos funciones de aproximación independientes del mismo tipo, definidas para todo punto (s,t) que pertenece al dominio del elemento rectangular bilineal Ω (e ) así:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

103

PEFiCA – Programa de elementos finitos a código abierto

u ( e ) ( s, t ) = N i( e ) u i( e ) + N (j e ) u (je ) + N k( e ) u k( e ) + N m( e ) u m( e )

(8.25)

v ( e ) ( s, t ) = N i( e ) vi( e ) + N (j e ) v (je ) + N k( e ) v k( e ) + N m( e ) v m( e )

siendo N i( e ) , N (j e ) , N k( e ) , N m( e ) las funciones de forma expresadas en la Ecuación (8.21) en términos de la posición relativa 0 ≤ s 2b ≤ 1 en dirección s y 0 ≤ t 2a ≤ 1 en dirección t. Al expresar matricialmente la Ecuación (8.25) como lo indica la Ecuación (8.23), se establece que el vector de valores nodales del desplazamiento en el elemento es T U ( e ) = [u i( e ) vi( e ) u (je ) v (je ) u k( e ) v k( e ) u m( e ) v m( e ) ] , y la matriz de funciones de forma corresponde a:  N (e) N (e) =  i  0

0 N i( e )

N (j e ) 0

0 N (j e )

N k( e ) 0

0 N k( e )

N m( e ) 0

0   N m( e ) 

(8.26)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. NRECEL MX(),XYZ(), ELE(), IELE, SP, TP

Argumento MX() XYZ() ELE() IELE SP

TP

Tipo de variable

Descripción Matriz creada de las funciones de forma del elemento Double (real) N (e) . Matriz existente de coordenadas de los nudos de la Double (real) malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades Integer (entero) descrita en el Apartado 3.4. Número del elemento finito. Integer (entero) Posición relativa 0 ≤ s 2b ≤ 1 de un punto dentro del Double (real) elemento en dirección s donde se evalúa la función de forma Posición relativa 0 ≤ t 2a ≤ 1 de un punto dentro del Double (real) elemento en dirección t donde se evalúa la función de forma. Tabla 8.6. Sintaxis de la instrucción NRECEL.

Ejemplo 8.6 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE() mostrada en la Figura 8.8, las funciones de forma en el centroide del elemento rectangular bilineal número 1, se obtiene a partir de la siguientes instrucción: NRECEL NEL(), XYZ(), ELE(), 1, 0.5, 0.5

Los coeficientes de la matriz de funciones de forma son los siguientes:

NEL()

(2x8)

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

104

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

F1 F2

C1 2.5000E-01 0.0000E+00

C2 0.0000E+00 2.5000E-01

F1 F2

C7 2.5000E-01 0.0000E+00

C8 0.0000E+00 2.5000E-01

C3 2.5000E-01 0.0000E+00

t

C4 0.0000E+00 2.5000E-01

C5 2.5000E-01 0.0000E+00

C6 0.0000E+00 2.5000E-01

vk

vm

um m

k

uk

v(s,t) 2a

u(s,t)

vj

vi y

j

i

ui

2b

s

uj

x Figura 8.12. Elemento rectangular bilineal de elasticidad bidimensional.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 9 Instrucciones para crear la matriz de derivadas de funciones de forma de un elemento Cada instrucción presentada a continuación crea la matriz de operadores diferenciales actuando sobre las funciones de forma de un tipo de elemento finito B ( e ) . Los coeficientes de esta matriz son derivadas de las funciones de forma con respecto a las coordenadas del dominio del problema. Estas subrutinas están ubicadas en el módulo MdB como lo indica la Tabla 2.8. Siendo N ( e ) la matriz de funciones de forma del elemento finito y ∇ el operador diferencial nabla de un problema específico, la matriz B ( e ) es igual a: B (e ) = ∇ N (e)

(9.1)

Además de la función de aproximación φ ( e ) , otra cantidad de interés en el elemento es el gradiente de la función de aproximación calculado como: ∇φ ( e ) = ∇(N ( e ) Φ ( e ) ) = B ( e) Φ ( e )

(9.2)

donde el vector de los valores nodales Φ ( e) = [φi( e ) , φ (j e) ,L, φ n( e ) ] tiene coeficientes independientes de las coordenadas del problema. T

9.1. BUNID2 Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento unidimensional lineal en un problema de campo unidimensional. La derivada con respecto a x de la función de aproximación indicada en la Ecuación (8.3) en términos de las funciones de forma de la Ecuación (8.5), es igual a: (e) ∂φ ( e ) ∂N i( e ) ( e ) ∂N j ( e) = φi + φj ∂x ∂x ∂x

donde,

(9.3)

106

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

∂N i( e) 1 = − (e) ∂x L

∂N i( e ) 1 ; = ( e) ∂x L

(9.4)

Al expresar la Ecuación (9.3) en notación matricial como lo indica el Ecuación (9.2), la matriz de operadores diferenciales actuando sobre funciones de forma del elemento unidimensional lineal es igual a:  ∂N ( e ) B ( e) = ∇ N (e ) =  i  ∂x

∂N (j e )  1  = ( e ) [− 1 ∂x  L

1]

(9.5)

Por lo tanto, el operador nabla para problemas de campo unidimensional corresponde a ∇ = [∂ ∂x ] . Se observa que los términos de la matriz B ( e ) del elemento unidimensional lineal en particular son constantes con respecto a x. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. BUNID2 MX(), LELE

Argumento

Tipo de variable

Descripción Matriz creada de los operadores diferenciales actuando sobre funciones de forma del elemento B ( e ) .

MX()

Double(real)

LELE

Double(real) Longitud del elemento finito L(e) Tabla 9.1. Sintaxis de la instrucción BUNID2.

.

Ejemplo 9.1 La matriz de operadores diferenciales actuando sobre las funciones de forma de un elemento unidimensional lineal de longitud 2.5m se obtiene de la siguiente expresión: BUNID2 NEL(), 2.5

Los coeficientes de la matriz resultante en m −1 son los siguientes: BEL() F1

(1x2)

C1 -4.0000E-01

C2 4.0000E-01

9.2. BUNID3 Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento unidimensional cuadrático en un problema de campo unidimensional. La derivada con respecto a x de la función de aproximación indicada en la Ecuación (8.8) en términos de las funciones de forma de la Ecuación (8.10), es igual a:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

107

PEFiCA – Programa de elementos finitos a código abierto

(e) ∂φ ( e ) ∂N i( e ) ( e ) ∂N j ( e) ∂N k( e) ( e) = φi + φj + φk ∂x ∂x ∂x ∂x

(9.6)

donde,

∂N i( e) 1 = (e) ∂x L ( e) ∂N j 1 = (e) ∂x L ( e) ∂N k 1 = (e) ∂x L

 − 3 + 4x    L( e)    4 − 8x    L( e )  

(9.7)

 − 1 + 4x    L( e )  

Al expresar la Ecuación (9.6) en notación matricial como lo indica el Ecuación (9.2) y sustituyendo al cociente x L( e ) por la coordenada natural 0 ≤ ξ ≤ 1 , la matriz de operadores diferenciales actuando sobre funciones de forma del elemento unidimensional cuadrático es igual a: B

(e)

B (e)

= ∇N

( e)

 ∂N ( e ) = i  ∂x

∂N (j e ) ∂x

∂N k( e)   ∂x 

(9.8)

1 = ( e) [(−3 + 4ξ ) (4 − 8ξ ) (−1 + 4ξ )] L

Por lo tanto, el operador nabla para problemas de campo unidimensional corresponde a ∇ = [∂ ∂x ] . La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. BUNID3 MX(), XCN, LELE

Argumento

Tipo de variable

Descripción Matriz creada de los operadores diferenciales actuando sobre funciones de forma del elemento B (e ) . Posición donde se evalúa la matriz B (e ) en coordenadas naturales 0 ≤ ξ ≤ 1 .

MX()

Double(real)

XCN

Double(real)

LELE

Double(real) Longitud del elemento finito L(e) Tabla 9.2. Sintaxis de la instrucción BUNID3.

.

Ejemplo 9.2 La matriz de operadores diferenciales actuando sobre las funciones de forma de un elemento unidimensional cuadrático de longitud 2.5m evaluada a 0.8 L( e ) desde el extremo se obtiene de la siguiente expresión: BUNID3 NEL(), 0.8, 2.5

Los coeficientes de la matriz resultante en m −1 son los siguientes:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

108

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento BEL() F1

(1x3)

C1 8.0000E-02

C2 -9.6000E-01

C3 8.8000E-01

9.3. BTRIAN Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento triangular lineal con un grado de libertad por nudo (Figura 8.3). En problemas de T campo bidimensional donde el operador diferencial nabla ∇ = [∂ ∂x ∂ ∂y ] , el gradiente de la función de aproximación ∇φ ( e) definido en la Ecuación (9.2) corresponde a un vector de la forma: ( e)

∂ x φ   ∂ x N =  (e)  ∂ y φ  ∂ y N

(e) i (e) i

∂xN ∂yN

( e) j (e) j

∂xN ∂yN

(e) k (e) k

φ i( e )    (e)   φ j   φ ( e )   k 

(9.9)

En general las derivadas parciales de una función (•) en términos de x y de y se escriben de la forma ∂ x (•) ≡ ∂ (•) ∂x y ∂ y (•) ≡ ∂ (•) ∂y . Derivando las funciones de forma dadas en la Ecuación (8.15) se obtiene, bj bi b ; ∂ x N (j e) = ; ∂ x N k( e) = k 2A 2A 2A cj c c = i ; ∂ y N (j e ) = ; ∂yN k( e ) = k 2A 2A 2A

∂ x N i( e) = ∂yN

(e) i

(9.10)

De acuerdo con las ecuaciones anteriores la matriz de operadores diferenciales actuando sobre las funciones de forma para un elemento triangular lineal de área A y con un grado de libertad es igual a: B ( e) =

1  bi 2 A  ci

bj cj

bk  c k 

(9.11)

donde, ai = x j ⋅ y k − xk ⋅ y j

bi = y j − y k

ci = x k − x j

a j = x k ⋅ y i − xi ⋅ y k

b j = yk − yi

c j = xi − x k

a k = xi ⋅ y j − x j ⋅ y i

bk = yi − y j

c k = x j − xi

(9.12)

La Ecuación (9.11) muestra que la matriz B ( e ) es la misma para todo punto (x,y) en el interior de un elemento triangular lineal. La sintaxis de la instrucción se indica en la Tabla 9.3. Ejemplo 9.3 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE()mostrada en la Figura 8.6, la matriz B ( e ) del elemento triangular lineal número 4 se obtiene de la siguiente instrucción: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

109

PEFiCA – Programa de elementos finitos a código abierto

BTRIAN BEL(), XYZ(), ELE(), 4

Los coeficientes de la matriz de operadores diferenciales actuando sobre funciones de forma son los siguientes: BEL() F1 F2

(2x3) C1 -6.6667E-01 0.0000E+00

C2 6.6667E-01 -1.0000E+00

C3 0.0000E+00 1.0000E+00

BTRIAN MX(), XYZ(), ELE(), IELE

Argumento MX() XYZ() ELE() IELE

Tipo de variable

Descripción Matriz creada de los operadores diferenciales actuanDouble (real) do sobre funciones de forma del elemento B (e ) . Matriz existente de coordenadas de los nudos de la Double (real) malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades Integer (entero) descrita en el Apartado 3.4. Número del elemento finito. Integer (entero) Tabla 9.3. Sintaxis de la instrucción BTRIAN.

9.4. BRECTA Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento rectangular bilineal con un grado de libertad por nudo como se indica en la Figura 8.7(a). En problemas de campo bidimensional donde el operador diferencial nabla T ∇ = [∂ ∂x ∂ ∂y ] , el gradiente de la función de aproximación ∇φ ( e ) definido en la Ecuación (9.2) corresponde a un vector de la forma: ∂ xφ ( e)  ∂ x N i( e ) =  (e)  (e) ∂ y φ  ∂ y N i

∂ x N (j e ) ∂ y N (j e)

∂ x N k( e) ∂ y N k( e)

φi( e)  ∂ x N m( e)  φ (j e)   ∂ y N m( e )  φ k( e)   ( e)  φ m 

(9.13)

En general las derivadas parciales de una función (•) en términos de x y de y se escriben de la forma ∂ x (•) ≡ ∂ (•) ∂x y ∂ y (•) ≡ ∂ (•) ∂y . Las funciones de forma indicadas en la Ecuación (8.20) están expresadas en términos de s y de t, por lo tanto las derivadas con respecto a x y a y serán: ∂N i( e) ∂N i( e ) ( s, t ) ∂s ∂N i( e) ( s, t ) ∂t = ⋅ + ⋅ ∂x ∂s ∂x ∂t ∂x ( e) (e) ( e) ∂N i ∂N i ( s, t ) ∂s ∂N i ( s, t ) ∂t = ⋅ + ⋅ ∂y ∂s ∂y ∂t ∂y

(9.14)

Dado que el sistema coordenado local (s,t) con origen en ( xi , y i ) se relaciona con el sistema coordenado global (x,y) con las expresiones s = x − xi y t = y − yi , las derivadas en© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

110

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

tre los dos sistemas presentadas en la ecuación anterior son ∂s ∂x = ∂t ∂y = 1 y ∂s ∂y = ∂t ∂x = 0 . En consecuencia, las derivadas de las funciones de forma en función de x y de y son: ∂N (j e ) (2a − t ) ∂N i( e ) ( 2a − t ) ∂N k( e ) t =− ; = ; = ∂x ∂x 4ab 4ab ∂x 4ab ( e) (e) (e) ∂N j ∂N m ∂N i t (2b − s ) s =− ; =− ; =− ∂x 4ab ∂y 4ab ∂y 4ab

(9.15)

∂N k( e ) ∂N m( e ) (2b − s ) s = ; = ∂y 4ab ∂y 4ab

La matriz de operadores diferenciales actuando sobre las funciones de forma para un elemento rectangular bilineal con un grado de libertad es igual a: B (e) =

1  − ( 2a − t ) 4ab − (2b − s )

( 2a − t )

t

−s

s

−t

 (2b − s ) 

(9.16)

Expresando la ecuación anterior en términos de la posición relativa 0 ≤ s 2b ≤ 1 en dirección s y 0 ≤ t 2a ≤ 1 en dirección t, se tiene:  − (1 2b )(1 − t 2a ) B (e) =  − (1 2a )(1 − s 2b )

(1 2b )(1 − t 2a ) − (1 2a )( s 2b )

(1 2b )(t 2a ) (1 2a )( s 2b )

− (1 2b )(t 2a )  (1 2a )(1 − s 2b ) 

(9.17)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. BRECTA MX(),XYZ(), ELE(), IELE, SP, TP

Argumento MX() XYZ() ELE() IELE SP

TP

Tipo de variable

Descripción Matriz creada de los operadores diferenciales actuanDouble (real) do sobre funciones de forma del elemento B (e ) . Matriz existente de coordenadas de los nudos de la Double (real) malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades Integer (entero) descrita en el Apartado 3.4. Integer (entero) Número del elemento finito. Posición relativa 0 ≤ s 2b ≤ 1 de un punto dentro del Double (real) elemento en dirección s donde se evalúa la matriz B (e ) . Posición relativa 0 ≤ t 2a ≤ 1 de un punto dentro del Double (real) elemento en dirección t donde se evalúa la matriz B (e ) . Tabla 9.4. Sintaxis de la instrucción BRECTA.

Ejemplo 9.4 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE()mostrada en la Figura 8.8, la © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

111

PEFiCA – Programa de elementos finitos a código abierto

matriz B ( e ) en el centroide del elemento rectangular bilineal número 1 se obtiene a partir de la siguiente instrucción: BRECTA BEL(), XYZ(), ELE(), 1, 0.5, 0.5

Los coeficientes de la matriz de operadores diferenciales actuando sobre funciones de forma son los siguientes: BEL() F1 F2

(2x4)

C1 -3.3333E-01 -5.0000E-01

C2 3.3333E-01 -5.0000E-01

C3 3.3333E-01 5.0000E-01

C4 -3.3333E-01 5.0000E-01

9.5. BTRIEL Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento triangular lineal para elasticidad bidimensional u otro problema con dos grados de libertad por nudo (Figura 8.10). En elasticidad bidimensional en el plano xy, las componentes de la deformación en un T punto material se puede representar mediante el vector ε = [ε xx ε yy γ xy ] . Para una condición plana de deformaciones las componentes de deformación ε zz = γ xz = γ yz = 0 ; en cambio, para una condición plana de esfuerzos ε zz = −( µ (1 − µ )) ⋅ (ε xx + ε yy ) y γ xz = γ yz = 0 , sin embargo no se incluye la componente ε zz al vector ε porque depende de las otras componentes. T La deformación se define como ε = ∇u , donde u = [u v] es el vector de desplazamiento y el operador diferencial para elasticidad bidimensional es igual a: ∂   ∂x ∇=0  ∂   ∂y

 0  ∂ ∂y  ∂  ∂x 

(9.18)

Recordando que el vector de desplazamiento en el dominio de un elemento finito es de la forma u ( e ) = N ( e ) U ( e ) , en general se obtiene un vector de la deformación en Ω ( e ) igual a:

ε(x) ( e ) = ∇u(x) ( e ) = ∇N(x) ( e ) U ( e ) = B(x) ( e ) U ( e )

∀x ∈ Ω ( e )

(9.19)

En el elemento triangular lineal de elasticidad bidimensional, el vector de valores nodaT les U ( e ) = [u i( e ) vi( e ) u (je ) v (je ) u k( e ) v k( e ) ] , y la matriz de operadores diferenciales actuando sobre funciones de forma corresponde a:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

112

Capítulo 8. Instrucciones para crear la matriz de funciones de forma de un elemento

∇N

(e)

=B

(e)

∂ x N i( e)  = 0 ∂ y N i( e )

∂ x N (j e)

0 ∂yN ∂xN

( e) i (e) i

0 ∂ y N (j e)

∂ x N k( e )

0 ∂yN ∂xN

( e) j (e) j

0 ∂ y N k( e)

0 ∂yN ∂xN

(e) k (e) k

   

(9.20)

Las componentes de la matriz B ( e ) son las derivadas de las funciones de forma del elemento triangular lineal presentadas en la Ecuación (9.10), por lo tanto, la matriz B ( e ) es constante en el interior de un elemento triangular lineal. La sintaxis de la instrucción es: BTRIEL MX(), XYZ(), ELE(), IELE

Argumento MX() XYZ() ELE() IELE

Tipo de variable

Descripción Matriz creada de los operadores diferenciales actuanDouble (real) do sobre las funciones de forma del elemento B (e ) . Matriz existente de coordenadas de los nudos de la Double (real) malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades Integer (entero) descrita en el Apartado 3.4. Integer (entero) Número del elemento finito. Tabla 9.5. Sintaxis de la instrucción BTRIEL.

Ejemplo 9.5 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE()mostrada en la Figura 8.6, la matriz B ( e ) del elemento triangular lineal de elasticidad número 4 se obtiene de la siguiente instrucción: BTRIEL BEL(), XYZ(), ELE(), 4

Los coeficientes de la matriz de operadores diferenciales actuando sobre funciones de forma son los siguientes: BEL() F1 F2 F3

(3x6)

C1 -6.6667E-01 0.0000E+00 0.0000E+00

C2 0.0000E+00 0.0000E+00 -6.6667E-01

C3 6.6667E-01 0.0000E+00 -1.0000E+00

C4 0.0000E+00 -1.0000E+00 6.6667E-01

C5 0.0000E+00 0.0000E+00 1.0000E+00

C6 0.0000E+00 1.0000E+00 0.0000E+00

9.6. BRECEL Crea la matriz de operadores diferenciales actuando sobre funciones de forma de un elemento rectangular bilineal para elasticidad bidimensional u otro problema con dos grados de libertad por nudo (Figura 8.12). Como se indicó en el apartado anterior, el vector de deformación en el plano xy se defiT ne como ε = [ε xx ε yy γ xy ] y se obtiene al aplicar el operador diferencial ∇ dado en la T Ecuación (9.18) sobre el vector de desplazamiento u = [u v ] , es decir, ε = ∇u . En el dominio de un elemento finito rectangular lineal Ω ( e ) , el vector de deformaciones definido en la Ecuación (9.19), donde el vector de valores nodales de desplazamiento corresponde a © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

113

PEFiCA – Programa de elementos finitos a código abierto

U ( e ) = [u i( e ) vi( e ) u (je ) v (je ) u k( e ) v k( e ) u m( e ) v m( e ) ] y la matriz de operadores diferenciales actuando sobre las funciones de forma es igual a: T

B

(e)

∂ x N i( e )  = 0 ∂ y N i( e)

∂ x N (j e)

0 ∂yN ∂xN

(e) i (e) i

0 ∂ y N (j e)

∂ x N k( e )

0 ∂yN ∂xN

(e) j ( e) j

0 ∂ y N k( e )

∂ x N m( e)

0 ∂yN ∂xN

(e) k (e) k

0 ∂ y N m( e)

0 ∂yN ∂xN

( e) m (e) m

   

(9.21)

Las componentes de la matriz B ( e ) son las derivadas de las funciones de forma del elemento rectangular bilineal presentadas en la Ecuación (9.15). La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. BRECEL MX(),XYZ(), ELE(), IELE, SP, TP

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

SP

Double (real)

TP

Double (real)

Descripción Matriz creada de los operadores diferenciales actuando sobre funciones de forma del elemento B (e ) . Matriz existente de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz existente de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito. Posición relativa 0 ≤ s 2b ≤ 1 de un punto dentro del

elemento en dirección s donde se evalúa la matriz B (e ) . Posición relativa 0 ≤ t 2a ≤ 1 de un punto dentro del

elemento en dirección t donde se evalúa la matriz B (e ) . Tabla 9.6. Sintaxis de la instrucción BRECEL.

Ejemplo 9.6 Dada una malla de elementos finitos definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE()mostrada en la Figura 8.8, la matriz B ( e ) en el centroide del elemento rectangular bilineal de elasticidad número 1 se obtiene a partir de la siguiente instrucción: BRECEL BEL(), XYZ(), ELE(), 1, 0.5, 0.5

Los coeficientes de la matriz de operadores diferenciales actuando sobre funciones de forma son los siguientes: BEL()

(3x8)

F1 F2 F3

C1 -3.3333E-01 0.0000E+00 -5.0000E-01

C2 0.0000E+00 -5.0000E-01 -3.3333E-01

F1 F2 F3

C7 -3.3333E-01 0.0000E+00 5.0000E-01

C8 0.0000E+00 5.0000E-01 -3.3333E-01

C3 3.3333E-01 0.0000E+00 -5.0000E-01

C4 0.0000E+00 -5.0000E-01 3.3333E-01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

C5 3.3333E-01 0.0000E+00 5.0000E-01

C6 0.0000E+00 5.0000E-01 3.3333E-01

Capítulo 10 Instrucciones para crear la matriz de rigidez de un elemento Las instrucciones presentadas a continuación crean la matriz de rigidez K ( e ) de los elementos finitos que constituyen la librería del programa. Estas subrutinas tienen el prefijo K y están ubicadas en el módulo MdK del código como lo indica la Tabla 2.9. La matriz K ( e ) depende del tipo de problema, la geometría y la función de aproximación del elemento.

10.1. KUNID2 Crea la matriz de rigidez de un elemento finito unidimensional lineal preparado para resolver la ecuación diferencial en términos de φ (x) de la forma: D

d 2φ +Q = 0 dx 2

(10.1)

Los parámetros D y Q de la ecuación diferencial dependen de x, sin embargo, se considera que conservan un valor constante D ( e) y Q ( e ) en el interior de cada elemento finito, es decir, para x ∈ Ω ( e ) → D( x) = D ( e) ∧ Q( x) = Q ( e ) . El elemento unidimensional lineal define una función de aproximación lineal en un espacio unidimensional, por lo tanto cuenta con dos nudos ubicados en sus extremos (Figura 10.1).

L(e )

i

j

x Figura 10.1. Elemento Unidimensional Lineal

Como resultado de plantear la solución en el método de los elementos finitos se obtiene que la matriz de rigidez de un elemento es igual a: K (e) = ∫

Ω(e )

(B(e) )T D (e)B (e) dx

(10.2)

116

Capítulo 10. Instrucciones para crear la matriz de rigidez de un elemento

donde B ( e ) = ∇ N ( e ) es el operador diferencial actuando sobre las funciones de forma del elemento mostrado en la Ecuación (9.8). Considerando que el parámetro D (e ) de la ecuación diferencial es constante en el dominio del elemento, se obtiene la siguiente matriz de rigidez:

K (e) =

D (e) L( e )

 1 − 1 − 1 1   

(10.3)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. KUNID2 MX(), D, L

Argumento

Tipo de variable

Descripción

MX()

Double(real)

D

Double(real)

Matriz de rigidez del elemento creada K (e ) . Parámetro D (e ) de la ecuación diferencial asociada al elemento finito.

L

Double(real) Longitud del elemento finito L(e ) . Tabla 10.1. Sintaxis de la instrucción KUNID2.

Ejemplo 10.1 Dado el parámetro de la ecuación diferencial D ( e ) = 32000 kN ⋅ m 2 , la matriz de rigidez de un elemento unidimensional lineal KEL() de longitud 1.2m se calcula en el programa con la expresión: KUNID2 KEL(), 32000, 1.2

Los coeficientes de la matriz resultante en kN ⋅ m son los siguientes: KEL() F1 F2

(2x2)

C1 2.6667E+04 -2.6667E+04

C2 -2.6667E+04 2.6667E+04

10.2. KUNID3 Crea la matriz de rigidez de un elemento finito unidimensional cuadrático preparado para resolver la ecuación diferencial en términos de φ ( x) indicada en la Ecuación (10.1), considerando que los parámetros D y Q conservan un valor constante D (e ) y Q (e ) en el interior de cada elemento finito. El elemento unidimensional cuadrático define una función de aproximación polinómica de orden 2 en un espacio unidimensional, por lo tanto cuenta con tres nudos ubicados en el centro y en sus extremos como lo muestra la Figura 10.2.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

117

PEFiCA – Programa de elementos finitos a código abierto

L(e ) 2

i

j L(e ) 2

k

x Figura 10.2. Elemento Unidimensional Cuadrático

Como resultado de plantear la solución en el método de los elementos finitos se obtiene la matriz de rigidez de un elemento finito indicada en la Ecuación (10.2), donde B ( e ) = ∇ N ( e ) es el operador diferencial actuando sobre las funciones de forma del elemento mostrado en la Ecuación (9.8). Considerando que el parámetro D (e ) de la ecuación diferencial es constante en el dominio del elemento, se obtiene la siguiente matriz de rigidez: K

(e)

 7 −8 1  D (e)  = ( e ) − 8 16 − 8  3L   1 − 8 7 

(10.4)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. KUNID3 MX(), D, L

Argumento

Tipo de variable

Descripción

MX()

Double(real)

D

Double(real)

Matriz de rigidez del elemento creada K (e ) . Parámetro D (e ) de la ecuación diferencial asociada al elemento finito.

L

Double(real) Longitud del elemento finito L(e ) . Tabla 10.2. Sintaxis de la instrucción KUNID3.

Ejemplo 10.2 Dado el parámetro de la ecuación diferencial D ( e ) = 32000 kN ⋅ m 2 , la matriz de rigidez de un elemento unidimensional cuadrático KEL() de longitud 1.2m se calcula en el programa con la expresión: KUNID3 KEL(), 32000, 1.2

Los coeficientes de la matriz resultante en kN ⋅ m son los siguientes: KEL() F1 F2 F3

(3x3) C1 6.2222E+04 -7.1111E+04 8.8889E+03

C2 -7.1111E+04 1.4222E+05 -7.1111E+04

C3 8.8889E+03 -7.1111E+04 6.2222E+04

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

118

Capítulo 10. Instrucciones para crear la matriz de rigidez de un elemento

10.3. KTRIAN Crea la matriz de rigidez de un elemento finito triangular lineal (Figura 8.3(a)), preparado para resolver una ecuación diferencial de campo bidimensional denominada ecuación de Poisson (Oñate & Zárate 2000), de la forma: Dx

∂ 2φ ∂ 2φ + D − Gφ + Q = 0 y ∂x 2 ∂y 2

(10.5)

Los parámetros Dx, Dy, G y Q de la ecuación diferencial dependen de (x,y), sin embargo, se considera que conservan un valor constante D x(e ) , D y(e ) , G (e ) y Q (e ) en el interior de cada elemento finito. Los primeros dos parámetros se presentan como coeficientes de una matriz diagonal D (e ) de la forma: D

(e)

 D x( e ) =  0

0   D y( e ) 

(10.6)

Como resultado de plantear la solución en el método de los elementos finitos se obtiene, en general, que la matriz de rigidez de un elemento es igual a: K ( e ) = ∫ (B ( e ) ) D ( e ) B ( e ) dΩ ( e ) + ∫ G ( e ) (N ( e ) ) N ( e ) dΩ ( e ) T

T



(10.7)



donde N (e ) es la matriz de funciones de forma y B (e ) es el operador diferencial actuando sobre las funciones de forma del elemento finito. Para el elemento triangular lineal en particular, la matriz N (e ) está dada en las Ecuaciones (8.14) a (8.16), y la matriz B (e ) está definida por las Ecuaciones (9.11) y (9.12). Como resultado, la matriz de rigidez de un elemento triangular lineal asociado con la ecuación diferencial bidimensional de Poisson es igual a: K ( e ) = K (De ) + K G( e ) K

(e) D

K G( e )

 bi 2 bi ⋅ b j D  2 = x  bj 4⋅ A  sim. 

 ci 2 ci ⋅ c j bi ⋅ bk  D  y  2 b j ⋅ bk  + cj  4⋅ A 2  sim. bk  

ci ⋅ c k   c j ⋅ ck  2 c k 

(10.8)

 2 1 1 G⋅ A = 2 1  12  2  sim.

donde, bi = y j − y k

ci = x k − x j

b j = yk − yi

c j = xi − x k

bk = y i − y j

c k = x j − xi

(10.9)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

119

KTRIAN MX(), XYZ(), ELE(), IELE, DX, DY, G

Argumento

Tipo de variable

Descripción

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

Matriz (creada) de rigidez del elemento K (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

DX

Double (real)

DY

Double (real)

G

Double (real)

Parámetro D x( e ) de la ecuación diferencial de Poisson (Ecuación (10.5) ). Parámetro DY( e ) de la ecuación diferencial de Poisson (Ecuación (10.5) ). Parámetro G (e ) de la ecuación diferencial de Poisson

(Ecuación (10.5) ). Tabla 10.3. Sintaxis de la instrucción KTRIAN.

Ejemplo 10.3 En un problema controlado por la Ecuación (10.5), para el cual D x( e ) = D x( e ) = 0.5 y G ( e ) = 0.02 , se tiene la malla de elementos finitos mostrada en la Figura 8.6, definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE(). La matriz de rigidez del elemento triangular lineal número 4 se obtiene de la siguiente instrucción: KTRIAN KEL(), XYZ(), ELE(), 4, 0.5, 0.5, 0.02

Los coeficientes de la matriz de rigidez son los siguientes: KEL() F1 F2 F3

(3x3)

C1 1.6917E-01 -1.6542E-01 1.2500E-03

C2 -1.6542E-01 5.4417E-01 -3.7375E-01

C3 1.2500E-03 -3.7375E-01 3.7750E-01

10.4. KRECTA Crea la matriz de rigidez de un elemento finito rectangular bilineal (Figura 8.7(a)), preparado para resolver la ecuación diferencial de campo bidimensional denominada ecuación de Poisson y presentada en la Expresión (10.5). Al plantear la solución de la ecuación diferencial con el método de los elementos finitos se obtiene la matriz de rigidez elemental indicada en la Ecuación (10.7). En particular para el elemento rectangular bilineal, el operador diferencial actuando sobre las funciones de forma o matriz B (e ) está definida en la Ecuación (9.16) y la matriz de funciones de forma N (e ) está dada en las Ecuaciones (8.19) y (8.20). Como resultado, la matriz de rigidez de un elemento rectangular bilineal asociado con la ecuación diferencial bidimensional de Poisson es igual a: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

120

Capítulo 10. Instrucciones para crear la matriz de rigidez de un elemento

K ( e ) = K (De ) + K (Ge ) K (De )

K G( e )

 2 − 2 −1 2 1 D a = x  2 6b    sim.  4 2 1 2 4 2 1 Gab   = 4 2 9    4  sim.

1  2 1 − 1 − 2 − 1 D y b  2 − 2 − 1 +   − 2 6 a  2 1    2 2  sim.

(10.10)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. KRECTA MX(), XYZ(), ELE(), IELE, DX, DY, G

Argumento

Tipo de variable

Descripción

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

Matriz (creada) de rigidez del elemento K ( e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

DX

Double (real)

DY

Double (real)

G

Double (real)

Parámetro D x( e ) de la ecuación diferencial de Poisson (Ecuación (10.5) ). Parámetro DY( e ) de la ecuación diferencial de Poisson (Ecuación (10.5) ). Parámetro G (e ) de la ecuación diferencial de Poisson

(Ecuación (10.5) ). Tabla 10.4. Sintaxis de la instrucción KRECTA.

Ejemplo 10.4 En un problema controlado por la Ecuación (10.5), para el cual D x( e ) = D x( e ) = 0.5 y G ( e ) = 0.02 , se tiene la malla de elementos finitos mostrada en la Figura 8.8, definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE(). La matriz de rigidez del elemento rectangular bilineal número 1 se obtiene de la siguiente instrucción: KRECTA KEL(), XYZ(), ELE(), 1, 0.5, 0.5, 0.02

Los coeficientes de la matriz de rigidez son los siguientes: KEL() F1 F2

(4x4)

C1 3.6444E-01 1.5556E-02

C2 1.5556E-02 3.6444E-01

C3 -1.7972E-01 -1.9278E-01

C4 -1.9278E-01 -1.7972E-01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

121

PEFiCA – Programa de elementos finitos a código abierto F3 F4

-1.7972E-01 -1.9278E-01

-1.9278E-01 -1.7972E-01

3.6444E-01 1.5556E-02

1.5556E-02 3.6444E-01

10.5. KTRIEL Crea la matriz de rigidez de un elemento finito triangular lineal de elasticidad para un material isótropo en condición plana de esfuerzos o de deformaciones (Figura 8.10). Un problema de elasticidad se puede plantear a partir de la relación deformacióndesplazamiento, la ecuación constitutiva del material lineal elástico y la ecuación de equilibrio del sólido dada por el principio de la energía potencial total estacionaria. La deformación infinitesimal es igual al operador diferencial actuando sobre el vector de desplazamientos, es decir, (10.11)

ε = ∇u

Particularmente en problemas de elasticidad bidimensional en el plano xy, el vector de T componentes de deformación ε = [ε xx ε yy γ xy ] , el vector de desplazamientos T u = [u v] y el operador diferencial es igual a: ∂   ∂x ∇=0  ∂   ∂y

 0  ∂ ∂y  ∂  ∂x 

(10.12)

La ecuación constitutiva de un material lineal elástico es de la forma: (10.13)

σ = Dε

donde el vector de componentes de esfuerzo en el plano xy es igual a T σ = [σ xx σ yy σ xy ] y la matriz de las constantes elásticas del material corresponde a:  d11 D = d12   0

d12 d 22 0

0  0   d 33 

(10.14)

Para un problema en condición plana de esfuerzos, d 11 = d 22 =

E νE E ; d12 = ; d 33 = 2 2 2(1 + ν ) (1 − ν ) (1 − ν )

(10.15)

En cambio, para un problema en condición plana de deformaciones los coeficientes de D son:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

122

Capítulo 10. Instrucciones para crear la matriz de rigidez de un elemento

d11 = d 22 =

(1 − ν ) E νE E ; d12 = ; d 33 = (1 + ν )(1 − 2ν ) (1 + ν )(1 − 2ν ) 2(1 + ν )

(10.16)

La energía potencial total de una estructura puede expresarse como la diferencia entre la energía elástica de deformación y el trabajo realizado por las acciones externas, es decir P = U-W. El principio de la energía potencial total estacionaria establece que de todos los estados admisibles de desplazamiento, es decir, los que cumplen con las condiciones de borde y de compatibilidad, aquel que satisface las ecuaciones de equilibrio adopta un valor estacionario de la energía potencial total. Además indica que si la condición estacionaria es un mínimo relativo el equilibrio del sistema es estable. Este principio es aplicable a problemas donde la relación entre la carga aplicada y el desplazamiento es lineal (Cook, Malkus et al. 1989). En el dominio Ω de un sólido de material elástico la energía de deformación es igual a: U=

1 T σ ε dV 2 Ω∫

(10.17)

Sustituyendo el vector de esfuerzo de la ecuación constitutiva (Ecuación (10.13)) en la Ecuación (10.17), la energía elástica de deformación será igual a: U=

1 T ε D ε dV 2 Ω∫

(10.18)

recordando que la matriz D es simétrica, es decir, D = D T . T Por otro lado, el trabajo realizado por las fuerzas másicas b = [bx b y ] y las fuerzas de T superficie p = [ p x p y ] , en el dominio Ω y en el contorno ∂Ω de un sólido corresponde a: W = ∫ b T u dV + ∫ p T u dS Ω

(10.19)

∂Ω

Por lo tanto, la energía potencial total es igual a: P = U-W =

1 T ε D ε dV − ∫ b T u dV − ∫ p T u dS ∫ 2Ω Ω ∂Ω

(10.20)

En el método de los elementos finitos el campo del desplazamiento u(x) para todo punto material en el dominio Ω , se convierte en el conjunto de campos continuos de desplazamiento en el interior de cada elemento finito, es decir u(x) ( e ) ∀x ∈ Ω ( e ) , que satisfacen la condición de continuidad en los nudos de los mismos. Los términos de la energía potencial total en la Ecuación (10.20) son integrales en el dominio y en el contorno del sólido, que corresponden a la sumatoria de las integrales en el subdominio de cada elemento Ω (e ) y en su contorno ∂Ω (e ) , así: m

P=

∑P ( e ) =1

(e)

1  T ; P (e) =  ∫ ε ( e )T D ( e ) ε ( e ) dV − ∫ b ( e ) u ( e ) dV − ∫ p ( e )T u ( e ) dS   2 Ω( e )  Ω( e ) ∂Ω ( e )

(10.21)

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

123

PEFiCA – Programa de elementos finitos a código abierto

Sustituyendo en la ecuación anterior el vector desplazamiento u(x) ( e ) = N(x) ( e ) U ( e ) y el vector deformación ε(x) ( e ) = B(x) ( e ) U ( e ) ∀x ∈ Ω ( e ) definidos en el interior del elemento finito, se tiene que: P (e) =

     1 ( e )T  U  ∫ B ( e )T D ( e ) B ( e ) dV U ( e ) − U ( e )T  ∫ N (e )T b (e ) dV  − U (e )T  ∫ N (e )T p (e ) dS  2  Ω(e )   Ω(e )   ∂Ω ( e ) 

(10.22)

Las derivadas de energía potencial total con respecto a cada uno de los valores nodales de desplazamiento en el elemento (e) son los coeficientes de un vector columna de la forma: ∂P (e)  ∂P (e) = ∂U ( e )  ∂U i( e )

∂P (e) ∂U (j e )

∂P (e)  L  ∂U ge( e ) 

T

(10.23)

siendo ge el número de valores nodales o grados de libertad del elemento (e). Derivando la Ecuación (10.22) con respecto al vector de valores nodales se obtiene:      ∂P (e)  =  ∫ B ( e )T D ( e ) B ( e ) dV U ( e ) −  ∫ N ( e )T b ( e ) dV  −  ∫ N ( e )T p ( e ) dS  (e) ∂U  Ω( e )   Ω( e )   ∂Ω( e ) 

(10.24)

En la expresión anterior el primer término entre paréntesis se define como la matriz de rigidez del elemento, es decir, K (e) =

∫B

( e )T

D ( e ) B ( e ) dV

(10.25)

Ω( e )

El vector de fuerzas f (e ) corresponde a la suma entre el vector de fuerzas másicas fb(e ) y el vector de fuerzas de superficie f p(e ) definidos como: f b( e ) =

∫N

Ω( e )

( e )T

b ( e ) dV

; f p( e ) =

∫N

( e )T

p ( e ) dS ; f ( e ) = f b( e ) + f p( e )

∂Ω ( e )

(10.26)

Sustituyendo las Ecuaciones (10.25) y (10.26) en la Ecuación (10.24), se tiene: ∂P (e) = K (e ) U (e ) − f (e) ∂U ( e )

(10.27)

La energía potencial total adopta un valor estacionario cuando las derivadas de la energía potencial total con respecto a los valores nodales del sólido son nulas, es decir, T

  ∂P  ∂P  ∂P   ∂P =  = 0   = 0  L  = 0  = 0 ∂U  ∂U 1   ∂U j  ∂U gt  

(10.28)

donde gt el número de grados de libertad del sólido. La derivada de la sumatoria de la energía potencial de cada elemento es igual a la sumatoria de las derivadas de las mismas con respecto a los desplazamientos nodales del sólido. Las derivadas de la energía potencial del elemento con respecto a los desplazamientos nodales del sólido que no están asociados al mismo son iguales a cero; por lo tanto solo es necesario derivar a P (e) con respecto a los desplazamientos nodales propios del elemento © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

124

Capítulo 10. Instrucciones para crear la matriz de rigidez de un elemento

como lo indica la Ecuación (10.27). Sin embargo, se deben sumar las derivadas de P (e) con respecto al mismo valor nodal, esto se puede lograr mediante una suma organizada de acuerdo con la numeración de los valores nodales o grados de libertad del sólido denominada ensamblaje A (me ) =1 , es decir, m m ∂P  ∂P (e)   ∂P (e)  = ∑  = A  (e)  = 0 ∂U ( e )=1 ∂U  ( e ) =1  ∂U 

(10.29)

Del ensamblaje del primer término de la Ecuación (10.27), se establece la siguiente igualdad: m

A (K ( e ) =1

(e)

 m  U (e) ) =  A K (e)  U ( e ) =1 

(10.30)

Por lo tanto, ∂P = KU − f = 0 ∂U

(10.31)

siendo K la matriz de rigidez del sólido obtenida del ensamblaje de las matrices de rigidez de los elementos, es decir,  m  K = A K (e)  ( e )=1 

(10.32)

y f el vector de fuerzas nodales del sólido resultante del ensamblaje de los vectores de fuerzas nodales de los elementos de la forma:  m  f = A f (e)  ( e ) =1 

(10.33)

La matriz de rigidez de un elemento triangular lineal de elasticidad indicada a continuación se obtiene al sustituir a la matriz B (e ) definida en la Ecuación (9.20) en la Ecuación (10.25). K ii( e ) K ij( e ) K ik( e )  t (e )   K = K ij( e ) K (jje ) K (jke )  ; h = 4 A (e) K ik( e ) K (jke ) K (kke )  bi c i (d 12 + d 33 )  b2d + c2d  bi b j d 11 + c i c j d 33 bi c j d 12 + b j c i d 33  (e ) K ii(e ) = h  i 11 i 33  K ij = h b c d + b c d 2 2 bi b j d 33 + c i c j d 22  i j 33 bi c i ( d 12 + d 33 ) bi d 33 + c i d 22   j i 12 bi c k d 12 + bk c i d 33   b 2j d 11 + c 2j d 33 b j c j ( d 12 + d 33 ) b b d + c c d (e) K ik( e ) = h  i k 11 i k 33 K = h jj   2 2  bk c i d 12 + bi c k d 33 bi bk d 33 + c i c k d 22  b j c j ( d 12 + d 33 ) b j d 33 + c j d 22  (e)

 b j bk d 11 + c j c k d 33 K (jke ) = h  bk c j d 12 + b j c k d 33

(10.34)

b j c k d 12 + bk c j d 33   bk2 d 11 + c k2 d 33 bk c k (d 12 + d 33 ) (e) K = h kk   2 2 b j bk d 33 + c j c k d 22  bk c k ( d 12 + d 33 ) bk d 33 + c k d 22 

donde t (e ) es el espesor y A(e ) el área del elemento. Los parámetros b y c corresponde a las diferencias entre las coordenadas de los nudos de la forma:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

125

PEFiCA – Programa de elementos finitos a código abierto

bi = y j − y k

ci = x k − x j

b j = yk − yi

c j = xi − x k

bk = y i − y j

c k = x j − xi

Las constantes elásticas d11 , d 22 , d12 , d33 están definidas en las ecuaciones (10.15) y (10.16). La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. KTRIEL MX(), XYZ(), ELE(), IELE, EYOU, POIS, TESP, TP

Argumento

Tipo de variable

Descripción

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

EYOU

Double (real)

POIS

Double (real)

Matriz (creada) de rigidez del elemento K (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito. Módulo de elasticidad o módulo de Young del material. Relación de Poisson del material.

TESP

Double (real)

Espesor del elemento finito. Indica el tipo de numeración de los grados de libertad conocidos: • Si TP=0 considera un problema en condición Optional Integer plana de esfuerzos (por defecto). (argumento opcional tipo entero) • Si TP=1 considera un problema en condición plana de deformaciones y un espesor unitario TESP=1.0. Tabla 10.5. Sintaxis de la instrucción KTRIEL.

TP

Ejemplo 10.5 Una presa considerada en condición plana de deformaciones, está hecha de un material lineal elástico isótropo con módulo de Young igual a 2 × 10 6 kN m 2 , y relación de Poisson de 0.25. Se tiene la malla de elementos finitos mostrada en la Figura 8.6, definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE(). La matriz de rigidez del elemento triangular lineal de elasticidad número 4 se obtiene de la siguiente instrucción: KTRIEL KEL(), XYZ(), ELE(), 4, 2000000#, 0.25, 0#, 1

Los coeficientes de la matriz de rigidez son los siguientes: KEL()

(6x6)

F1 F2

C1 8.0000E+05 0.0000E+00

C2 0.0000E+00 2.6667E+05

C3 -8.0000E+05 4.0000E+05

C4 4.0000E+05 -2.6667E+05

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

C5 0.0000E+00 -4.0000E+05

C6 -4.0000E+05 0.0000E+00

126

Capítulo 10. Instrucciones para crear la matriz de rigidez de un elemento F3 F4 F5 F6

-8.0000E+05 4.0000E+05 0.0000E+00 -4.0000E+05

4.0000E+05 -2.6667E+05 -4.0000E+05 0.0000E+00

1.4000E+06 -8.0000E+05 -6.0000E+05 4.0000E+05

-8.0000E+05 2.0667E+06 4.0000E+05 -1.8000E+06

-6.0000E+05 4.0000E+05 6.0000E+05 0.0000E+00

4.0000E+05 -1.8000E+06 0.0000E+00 1.8000E+06

10.6. KRECEL Crea la matriz de rigidez de un elemento finito rectangular bilineal de elasticidad para un material isótropo en condición plana de esfuerzos o de deformaciones (Figura 8.12). KRECEL MX(), XYZ(), ELE(), IELE, EYOU, POIS, TESP, TP

Argumento

Tipo de variable

Descripción

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

EYOU

Double (real)

POIS

Double (real)

Matriz (creada) de rigidez del elemento K (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito. Módulo de elasticidad o módulo de Young del material. Relación de Poisson del material.

TESP

Double (real)

TP

Espesor del elemento finito. Indica el tipo de numeración de los grados de libertad conocidos: • Si TP=0 considera un problema en condición Optional Integer plana de esfuerzos (por defecto). (argumento opcional tipo entero) • Si TP=1 considera un problema en condición plana de deformaciones y un espesor unitario TESP=1.0. Tabla 10.6. Sintaxis de la instrucción KRECEL.

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan en la Tabla 10.6. Tal como se plantea en las ecuaciones (10.17) a (10.33), la matriz de rigidez de un elemento rectangular bilineal se obtiene sustituyendo a la matriz B (e ) de la Ecuación (9.21) en la Ecuación (10.25), cuyo resultado se indica en la Ecuación (10.35) (Weaver & Johnson 1984), donde t (e ) es el espesor y A(e ) el área del elemento. Las constantes elásticas d11 , d 22 , d12 , d33 están definidas en las ecuaciones (10.15) y (10.16).

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

127

PEFiCA – Programa de elementos finitos a código abierto

K ( e ) = K 1( e ) + K (2e )

K 1( e )

 2 s1  s  3  − 2 s1  s = 3  − s1   − s3  s1   − s3

2 s2 − s3

2 s1

s2

− s3

2 s2

− s3

s1

− s3

2 s1

− s2

s3

− 2 s2

s3

2 s2

s3

− s1

s3

− 2 s1

− s3

2 s1

− 2 s2

s3

− s2

s3

s2

− s3

s1 =

K (2e )

 2 s4  s  6  s4  −s = 6  − s4   − s6 − 2 s4   s6

sim.

d11at ( e ) 6b

, s2 =

d 22bt ( e ) d t (e) , s3 = 12 6a 4

2 s5 s6

2 s4

− 2 s5

− s6

2 s5

− s6

− 2 s4

s6

2 s4

− s5

− s6

s5

s6

2 s5

− s6

− s4

s6

s4

s6

s6

− s5

− s6

− 2 s5

s4 =

d 33bt 6a

(10.35)

sim.

s5 ( e)

,

s5 =

           2 s2 

d 33 at 6b

(e)

, s6 =

2 s4 d 33t 4

− s6

           2 s5 

(e)

Ejemplo 10.6 Una lámina de espesor 0.001m considerado en condición plana de esfuerzos, está hecha de un material lineal elástico isótropo con módulo de Young igual a 2 × 10 7 kN m 2 , y relación de Poisson de 0.25. Se tiene la malla de elementos finitos mostrada en la Figura 8.8, definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE(). La matriz de rigidez del elemento rectangular bilineal de elasticidad número 1 se obtiene de la siguiente instrucción: KRECEL KEL(), XYZ(), ELE(), 1, 20000000#, 0.25, 0.001

Los coeficientes de la matriz de rigidez son los siguientes: KEL() F1 F2 F3 F4 F5 F6

(8x8) C1 8.7407E+03 3.3333E+03 -2.7407E+03 -6.6667E+02 -4.3704E+03 -3.3333E+03

C2 3.3333E+03 1.2444E+04 6.6667E+02 3.5556E+03 -3.3333E+03 -6.2222E+03

C3 -2.7407E+03 6.6667E+02 8.7407E+03 -3.3333E+03 -1.6296E+03 -6.6667E+02

C4 -6.6667E+02 3.5556E+03 -3.3333E+03 1.2444E+04 6.6667E+02 -9.7778E+03

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

C5 -4.3704E+03 -3.3333E+03 -1.6296E+03 6.6667E+02 8.7407E+03 3.3333E+03

C6 -3.3333E+03 -6.2222E+03 -6.6667E+02 -9.7778E+03 3.3333E+03 1.2444E+04

128

Capítulo 10. Instrucciones para crear la matriz de rigidez de un elemento F7 F8

-1.6296E+03 6.6667E+02

-6.6667E+02 -9.7778E+03

F1 F2 F3 F4 F5 F6 F7 F8

C7 -1.6296E+03 -6.6667E+02 -4.3704E+03 3.3333E+03 -2.7407E+03 6.6667E+02 8.7407E+03 -3.3333E+03

C8 6.6667E+02 -9.7778E+03 3.3333E+03 -6.2222E+03 -6.6667E+02 3.5556E+03 -3.3333E+03 1.2444E+04

-4.3704E+03 3.3333E+03

3.3333E+03 -6.2222E+03

-2.7407E+03 -6.6667E+02

6.6667E+02 3.5556E+03

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 11 Instrucciones para crear el vector de fuerzas de un elemento Las instrucciones presentadas a continuación crean el vector de fuerzas equivalentes o vector de términos independientes f (e ) de los elementos finitos que constituyen la librería de del programa. Estas subrutinas tienen el prefijo F y están ubicadas en el módulo MdF del código como lo indica la Tabla 2.12. La matriz f (e ) depende del tipo de problema, la geometría y la función de aproximación del elemento.

11.1. FUNID2 Crea el vector de términos independientes de un elemento finito unidimensional lineal (Figura 10.1), preparado para resolver la ecuación diferencial de campo indicada en la Expresión (10.1). Los parámetros D y Q de la ecuación diferencial dependen de x, sin embargo, esta instrucción considera que Q (e ) conserva un valor constante en el interior de cada elemento finito, es decir, ∀ x ∈ Ω ( e ) → Q( x) = Q ( e ) . Como resultado de plantear la solución en el método de los elementos finitos se obtiene que el vector de términos independientes de un elemento unidimensional es igual a: f (e) = ∫



(e)

(N (e) )T Q (e) dx

(11.1)

En particular para el elemento unidimensional lineal N (e ) es la matriz de funciones de forma expresada en la Ecuación (8.5). Considerando que el parámetro Q (e ) de la ecuación diferencial es constante en el dominio del elemento, se obtiene el siguiente vector de términos independientes: f (e) =

Q ( e ) L( e ) 2

1 1 

(11.2)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

130

Capítulo 11

Instrucciones para crear el vector de fuerzas de un elemento

FUNID2 MX(), Q, L

Argumento

Tipo de variable

Descripción Vector (creado) de términos independientes del elemento f (e ) . Parámetro Q (e ) de la ecuación diferencial asociada al elemento finito.

MX()

Double (real)

Q

Double (real)

L

Double (real) Longitud del elemento finito L(e ) . Tabla 11.1. Sintaxis de la instrucción FUNID2.

Ejemplo 11.1 Dado el parámetro de la ecuación diferencial Q ( e ) = 10 kN ⋅ m , el vector de términos independientes de un elemento unidimensional lineal FEL() de longitud 1.2m se calcula en el programa con la expresión: FUNID2 FEL(), 10, 1.2

Los coeficientes de la matriz resultante en kN son los siguientes: FEL()

(2x1)

F1 F2

C1 6.0000E+00 6.0000E+00

11.2. FUN2QL Crea el vector de términos independientes de un elemento finito unidimensional lineal (Figura 10.1), preparado para resolver la ecuación diferencial de campo indicada en la Expresión (10.1), considerando que Q (e ) varia de forma lineal en el interior de cada elemento finito, es decir,. Q ( e ) ( x) = Qi( e ) + (Q (j e ) − Qi( e ) )

x L( e )

∀ x ∈ Ω ( e)

(11.3)

siendo Q (ej ) y Qi(e ) los valores del parámetro Q (e ) en los nudos del elemento i y j, respectivamente. Sustituyendo en la Ecuación (11.1), la expresión anterior y la matriz de funciones de forma del elemento N (e ) presentada en la Ecuación (8.5), se obtiene el vector de términos independientes de un elemento unidimensional lineal considerando variación lineal del parámetro Q (e ) , como: f

(e)

Q (j e ) L( e ) 1 (Q (j e ) − Qi( e ) )L( e ) = + 2 1 6

1  2  

(11.4)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

131

PEFiCA – Programa de elementos finitos a código abierto

FUN2QL MX(), QI, QJ, L

Argumento

Tipo de variable

Descripción Vector (creado) de términos independientes del elemento f (e ) . Valor del parámetro Q (e ) de la ecuación diferencial en el nudo i del elemento. Valor del parámetro Q (e ) de la ecuación diferencial en el nudo j del elemento.

MX()

Double (real)

QI

Double (real)

QJ

Double (real)

L

Double (real) Longitud del elemento finito L(e ) . Tabla 11.2. Sintaxis de la instrucción FUN2QL.

Ejemplo 11.2 Considerando que el parámetro Q (e ) de la ecuación diferencial varia de forma lineal con un valor Qi( e ) = 10 kN ⋅ m en el nudo i y Q (j e ) = 15 kN ⋅ m , el vector de términos independientes de un elemento unidimensional lineal FEL() de longitud 1.2m se calcula en el programa con la expresión: FUN2QL FEL(), 10, 15, 1.2

Los coeficientes de la matriz resultante en kN son los siguientes: FEL()

(2x1)

F1 F2

C1 7.0000E+00 8.0000E+00

11.3. FUNID3 Crea el vector de términos independientes de un elemento finito unidimensional cuadrático (Figura 10.2), preparado para resolver la ecuación diferencial de campo indicada en la Expresión (10.1), considerando al parámetro Q constante en el interior del elemento, es decir, Q( x) = Q ( e ) ∀x ∈ Ω ( e ) . Sustituyendo en la Ecuación (11.1) la matriz de funciones de forma del elemento N (e ) presentada en las Ecuaciones (8.9) y (8.10), se obtiene el vector de términos independientes de un elemento unidimensional cuadrático de la forma: f

(e)

1  Q ( e ) L( e )   = 4 6   1

(11.5)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

132

Capítulo 11

Instrucciones para crear el vector de fuerzas de un elemento

FUNID3 MX(), Q, L

Argumento

Tipo de variable

Descripción Vector (creado) de términos independientes del elemento f (e ) . Parámetro Q (e ) de la ecuación diferencial asociada al elemento finito.

MX()

Double (real)

Q

Double (real)

L

Double (real) Longitud del elemento finito L(e ) . Tabla 11.3. Sintaxis de la instrucción FUNID3.

Ejemplo 11.3 Dado el parámetro de la ecuación diferencial Q ( e ) = 10 kN ⋅ m , el vector de términos independientes de un elemento unidimensional cuadrático FEL() de longitud 1.2m se calcula en el programa con la expresión: FUNID3 FEL(), 10, 1.2

Los coeficientes de la matriz resultante en kN son los siguientes: FEL()

(3x1)

F1 F2 F3

C1 2.0000E+00 8.0000E+00 2.0000E+00

11.4. FUN3QL Crea el vector de términos independientes de un elemento finito unidimensional cuadrático (Figura 10.2), preparado para resolver la ecuación diferencial de campo indicada en la Expresión (10.1), considerando que Q (e ) varia de forma lineal en el interior de cada elemento finito como lo indica la Ecuación (11.3). Sustituyendo la matriz de funciones de forma del elemento N (e ) presentada en la Ecuación (8.5) y el parámetro Q (e ) de la Ecuación (11.3), en la expresión de f (e ) dada en la Ecuación (11.1), se obtiene el vector de términos independientes de un elemento unidimensional lineal considerando variación lineal del parámetro Q (e ) , como: f

(e)

1  Q (j e ) L( e )   (Q (j e ) − Qi( e ) )L( e ) = 4 + 6   6 1

0 2   1

(11.6)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

133

PEFiCA – Programa de elementos finitos a código abierto

FUN3QL MX(), QI, QJ, L

Argumento

Tipo de variable

Descripción Vector (creado) de términos independientes del elemento f (e ) . Valor del parámetro Q (e ) de la ecuación diferencial en el nudo i del elemento. Valor del parámetro Q (e ) de la ecuación diferencial en el nudo j del elemento.

MX()

Double (real)

QI

Double (real)

QJ

Double (real)

L

Double (real) Longitud del elemento finito L(e ) . Tabla 11.4. Sintaxis de la instrucción FUN2QL.

Ejemplo 11.4 Considerando que el parámetro Q (e ) de la ecuación diferencial varia de forma lineal con un valor Qi( e ) = 10 kN ⋅ m en el nudo i y Q (j e ) = 15 kN ⋅ m , el vector de términos independientes de un elemento unidimensional cuadrático FEL() de longitud 1.2m se calcula en el programa con la expresión: FUN3QL FEL(), 10, 15, 1.2

Los coeficientes de la matriz resultante en kN son los siguientes: FEL()

(3x1)

F1 F2 F3

C1 2.0000E+00 1.0000E+01 3.0000E+00

11.5. FTRIAN Crea el vector de términos independientes de un elemento finito triangular lineal (Figura 8.3(a)), preparado para resolver una ecuación diferencial de campo bidimensional expresada en la Ecuación (10.5), considerando al parámetro Q constante en el interior del elemento, es decir, Q( x) = Q ( e ) ∀x ∈ Ω ( e ) . Como resultado de plantear la solución en el método de los elementos finitos se obtiene que el vector de términos independientes de un elemento bidimensional es igual a: f (e) = ∫

Ω( e )

(N (e) )T Q (e) dA

(11.7)

En particular, sustituyendo la matriz de funciones de forma del elemento N (e ) presentada en las Ecuaciones (8.14) a (8.16), en la expresión anterior se obtiene el vector de términos independientes de un elemento triangular lineal como:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

134

Capítulo 11

f (e)

Instrucciones para crear el vector de fuerzas de un elemento

1 Q (e) A(e)   = 1  3 1

(11.8)

donde A(e ) es el área del elemento finito. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. FTRIAN MX(), XYZ(), ELE(), IELE, Q

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

Q

Double (real)

Descripción Vector (creado) de términos independientes del elemento f (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

Parámetro Q (e ) de la ecuación diferencial de Poisson

(Ecuación (10.5) ). Tabla 11.5. Sintaxis de la instrucción FTRIAN.

Ejemplo 11.5 En un problema controlado por la Ecuación (10.5), para el cual Q ( e ) = 10 , se tiene la malla de elementos finitos mostrada en la Figura 8.6, definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE(). El vector de términos independientes del elemento triangular lineal número 4 se obtiene de la siguiente instrucción: FTRIAN FEL(), XYZ(), ELE(), 4, 10

Los coeficientes del vector de términos independientes son los siguientes: FEL()

(3x1)

F1 F2 F3

C1 2.5000E+00 2.5000E+00 2.5000E+00

11.6. FRECTA Crea el vector de términos independientes de un elemento finito rectangular bilineal (Figura 8.7(a)), preparado para resolver la ecuación diferencial de campo bidimensional expresada en la Ecuación (10.5), considerando al parámetro Q constante en el interior del elemento. Al plantear la solución de la ecuación diferencial con el método de los elementos finitos se obtiene el vector de términos independientes indicado en la Ecuación (11.7). En parti© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

135

PEFiCA – Programa de elementos finitos a código abierto

cular para el elemento rectangular bilineal, la matriz de funciones de forma N (e ) está dada en las Ecuaciones (8.19) y (8.20). Como resultado, el vector de términos independientes de un elemento rectangular bilineal asociado con la ecuación diferencial bidimensional de Poisson es igual a: (e)

f (e) =

Q A 4

(e)

1 1  1  1

(11.9)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. FRECTA MX(), XYZ(), ELE(), IELE, Q

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

Q

Double (real)

Descripción Vector (creado) de términos independientes del elemento f (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

Parámetro Q (e ) de la ecuación diferencial de Poisson

(Ecuación (10.5) ). Tabla 11.6. Sintaxis de la instrucción FRECTA.

Ejemplo 11.6 En un problema controlado por la Ecuación (10.5), para el cual Q ( e ) = 10 , se tiene la malla de elementos finitos mostrada en la Figura 8.8, definida por la matriz de coordenadas XYZ() y por la matriz de elementos ELE(). El vector de términos independientes del elemento rectangular bilineal número 1 se obtiene de la siguiente instrucción: FRECTA KEL(), XYZ(), ELE(), 1, 10

Los coeficientes de la matriz de rigidez son los siguientes: FEL()

(4x1)

F1 F2 F3 F4

C1 3.7500E+00 3.7500E+00 3.7500E+00 3.7500E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

136

Capítulo 11

Instrucciones para crear el vector de fuerzas de un elemento

11.7. FTRIES Crea el vector de fuerzas en los nudos equivalentes a la aplicación de una fuerza de superficie o presión constante sobre uno de los lados de un elemento finito triangular lineal de elasticidad (Figura 8.10). Del planteamiento del problema de elasticidad mediante el método de los elementos finitos se obtiene el vector de fuerzas expresado en la Ecuación (10.26), como la suma de los vectores de fuerzas equivalentes a la acción de diferentes tipos de carga. La aplicación de T una fuerza por unidad de superficie o presión constante p (jke ) = [ p x p y ] sobre la cara jk del elemento finito (Figura 11.1), de dimensiones Ljk por t, produce un vector de fuerzas de la forma: f p( e( )jk ) =

∫ (N )

(e) T

p (jke ) tdL jk

(11.10)

∂Γ (jke )

La expresión anterior es una integral de línea definidas en entre los nudos j y k. Las caras Lij , Ljk y Lik del elemento se designa como los lados 1, 2 y 3 respectivamente. nudo k

nudo k y

lado 3

lado 2

lado 3

lado 1

nudo i

py

x

px

lado 2

lado 1

nudo i nudo j

nudo j

Figura 11.1. Fuerza de superficie aplicada sobre el lado jk o lado 2 del elemento finito triangular lineal en dirección x y y.

De igual forma, el vector de fuerzas equivalentes a la aplicación de una presión p ij(e ) y p (eik ) sobre las caras ij y ik respectivamente, son las siguientes: f p( e(ij) ) =

∫ (N )

(e) T

∂Γij( e )

p ij( e ) tdLij

; f p( e()ik ) =

∫ (N )

(e) T

∂Γik( e )

p ik( e ) tdLik

(11.11)

Dada la matriz de funciones de forma expresada en las Ecuaciones (8.15) y (8.24), se obtienen el vector de fuerzas equivalentes a la aplicación de una presión en cada lado del elemento triangular lineal, como:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

137

PEFiCA – Programa de elementos finitos a código abierto

f p( e(ij) )

0  px   px  0 p  p     y  y tLij  p x  tL jk  p x  tLik  0  (e) (e) =     ; f p ( ik ) =   ; f p ( jk ) = 2  py  2  py  2 0  px   px  0       0  py   py 

(11.12)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. FTRIES MX(), XYZ(), ELE(), IELE, TESP, PX, PY, LADO

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

TESP

Double (real)

PX PY

LADO

Descripción Vector (creado) de términos independientes del elemento f (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

Espesor del elemento finito. Componente en dirección x de la presión aplicada Double (real) sobre la cara LADO del elemento. Componente en dirección y de la presión aplicada Double (real) sobre la cara LADO del elemento. Indicador de la cara del elemento sobre el cual se aplica la presión (Figura 11.1). • Si LADO =1 la presión está aplicada sobre la cara ij del elemento. Integer (entero) • Si LADO =2 la presión está aplicada sobre la cara jk del elemento. • Si LADO =3 la presión está aplicada sobre la cara ik del elemento. Tabla 11.7. Sintaxis de la instrucción FTRIES.

Ejemplo 11.7 En el problema de elasticidad plana con espesor constante de 0.10 m descrito por la malla de la Figura 8.6, se aplica una presión constante en dirección x de 50 kN m 2 entre los nudos 8 y 9 como se indica en la Figura 11.2. El vector de fuerzas equivalentes a la aplicación de tal presión sobre el lado 2 del elemento triangular lineal número 4 se obtiene de la siguiente expresión: FTRIES FEL(), XYZ(), ELE(), 4, 0.1, 50, 0, 2

Los coeficientes del vector de fuerzas son los siguientes:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

138

Capítulo 11

FEL()

(6x1)

F1 F2 F3 F4 F5 F6

C1 0.0000E+00 0.0000E+00 2.5000E+00 0.0000E+00 2.5000E+00 0.0000E+00

Instrucciones para crear el vector de fuerzas de un elemento

nudo 9

y lado 3 x

p x = 50 kN / m 2 lado 2

elem. 04 nudo 5 (inicial)

lado 1

nudo 8

Figura 11.2. Fuerza de superficie aplicada sobre una cara del elemento triangular lineal número 4 de la malla de la Figura 8.6.

11.8. FTRIEC Crea el vector de fuerzas en los nudos equivalentes a la acción de una fuerza másica constante o fuerza distribuida por unidad de volumen del elemento finito triangular lineal de elasticidad (Figura 8.10). Del planteamiento del problema de elasticidad mediante el método de los elementos finitos se obtiene el vector de fuerzas expresado en la Ecuación (10.26), como la suma de los vectores de fuerzas equivalentes a la acción de diferentes tipos de carga. La aplicación de T una fuerza másica b ( e ) = [bx b y ] produce un vector de fuerzas equivalentes en los nudos del elemento de la forma: f b( e ) =

∫ (N )

(e) T

Ω( e )

b ( e ) tdA ( e )

(11.13)

La integral anterior está definida el área del elemento finito A(e ) , siendo t el espesor del mismo. Un ejemplo habitual de fuerza másica es el peso específico del material γ , en T cuyo caso b ( e ) = [0 − γ ] . Dada la matriz de funciones de forma expresada en las Ecuaciones (8.15) y (8.24), se obtienen el vector de fuerzas equivalentes a la aplicación de las fuerzas másicas sobre un elemento triangular lineal, como:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

139

PEFiCA – Programa de elementos finitos a código abierto

f b( e )

b x  b   y (e) b tA  x  =   3 b y  b x    b y 

(11.14)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. FTRIEC MX(), XYZ(), ELE(), IELE, TESP, BX, BY

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

Descripción Vector (creado) de términos independientes del elemento f (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

TESP

Double (real)

Espesor del elemento finito.

BX

Double (real)

Componente en dirección x de la fuerza másica.

BY

Double (real) Componente en dirección y de la fuerza másica. Tabla 11.8. Sintaxis de la instrucción FTRIEC.

Ejemplo 11.8 En el problema de elasticidad plana con espesor constante de 0.10 m descrito por la malla de la Figura 8.6, se considera un peso específico del material de 24 kN m 3 . El vector de fuerzas equivalentes a la aplicación de las fuerzas másicas en el elemento triangular lineal número 4 se obtiene de la siguiente expresión: FTRIEC FEL(), XYZ(), ELE(), 4, 0.1, 0, -24

Los coeficientes del vector de fuerzas son los siguientes: FEL() F1 F2 F3 F4 F5 F6

(6x1) C1 0.0000E+00 -6.0000E-01 0.0000E+00 -6.0000E-01 0.0000E+00 -6.0000E-01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

140

Capítulo 11

Instrucciones para crear el vector de fuerzas de un elemento

11.9. FRECES Crea el vector de fuerzas en los nudos equivalentes a la aplicación de una fuerza de superficie o presión constante sobre uno de los lados de un elemento finito rectangular bilineal de elasticidad (Figura 8.12). Del planteamiento del problema de elasticidad mediante el método de los elementos finitos se obtiene el vector de fuerzas equivalentes a la aplicación de una presión constante como lo indican las Ecuaciones (11.10) y (11.11). La aplicación de una fuerza por unidad T de superficie o presión constante p (jke ) = [ p x p y ] sobre la cara jk del elemento finito (Figura 11.3), de dimensiones Ljk por t, produce un vector de fuerzas de la forma:

∫ (N )

(e) T

f p( e( )jk ) =

p (jke ) tdL jk

(11.15)

∂Γ (jke )

La expresión anterior es una integral de línea definidas en entre los nudos j y k. Las caras Lij , Ljk , Lkm y Lim del elemento se designa como los lados 1, 2, 3 y 4 respectivamente. nudo m

nudo m

nudo k lado 3

lado 3

px

lado 2

lado 4

lado 2

lado 4

lado 1 nudo i

nudo k

py

lado 1 y

nudo j

nudo i

nudo j

x

Figura 11.3. Fuerza de superficie aplicada sobre el lado jk o lado 2 del elemento finito rectangular bilineal en dirección x y y.

De igual forma, el vector de fuerzas equivalentes a la aplicación de una presión p (eij ) , p (ekm) y p (eim) sobre las caras ij, km y im respectivamente, son las siguientes:

∫ (N ) p (e) T

f p( e( )ij ) =

(e) ij

tdLij

∂Γij( e )

f p( e( )km) =

∫ (N ) p (e) T

( e) km

tdLkm

(e) im

tdLim

(e ) ∂Γkm

f p( e( )im ) =

∫ (N ) p (e) T

(11.16)

(e) ∂Γim

Dada la matriz de funciones de forma expresada en las Ecuaciones (8.21) y (8.26), se obtienen el vector de fuerzas equivalentes a la aplicación de una presión en cada lado del elemento rectangular bilineal, como:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

141

PEFiCA – Programa de elementos finitos a código abierto

f p( e(ij) )

0  px  0  px  p  0 0 p   y    y   0 0  px   px          tLij  p y  ( e ) tL jk  p y  ( e ) tLkm  0  ( e ) tLim  0  = f p ( jk ) = f p ( km) = f p (im ) = 2 0 2  px  2  px  2 0         0  py  0  py   px   px  0 0          p y   p y  0 0

(11.17)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. FRECES MX(), XYZ(), ELE(), IELE, TESP, PX, PY, LADO

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

TESP

Double (real)

PX PY

LADO

Descripción Vector (creado) de términos independientes del elemento f (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

Espesor del elemento finito. Componente en dirección x de la presión aplicada Double (real) sobre la cara LADO del elemento. Componente en dirección y de la presión aplicada Double (real) sobre la cara LADO del elemento. Indicador de la cara del elemento sobre el cual se aplica la presión (Figura 11.3). • Si LADO =1 la presión está aplicada sobre la cara ij del elemento. • Si LADO =2 la presión está aplicada sobre la Integer (entero) cara jk del elemento. • Si LADO =3 la presión está aplicada sobre la cara km del elemento. • Si LADO =4 la presión está aplicada sobre la cara im del elemento. Tabla 11.9. Sintaxis de la instrucción FRECES.

Ejemplo 11.9 En el problema de elasticidad plana con espesor constante de 0.10 m descrito por la malla de la Figura 8.8, se aplica una presión constante en dirección x de 50 kN m 2 entre los nudos 7 y 8 como se indica en la Figura 11.4. El vector de fuerzas equivalentes a la aplicación de tal presión sobre el lado 2 del elemento rectangular bilineal número 3 se obtiene de la siguiente expresión: FRECES FEL(), XYZ(), ELE(), 4, 0.1, 50, 0, 2 © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

142

Capítulo 11

Instrucciones para crear el vector de fuerzas de un elemento

Los coeficientes del vector de fuerzas son los siguientes: FEL()

(8x1)

F1 F2 F3 F4 F5 F6 F7 F8

C1 0.0000E+00 0.0000E+00 2.5000E+00 0.0000E+00 2.5000E+00 0.0000E+00 0.0000E+00 0.0000E+00

nudo 8

nudo 5 lado 3 y

lado 4

lado 2

p x = 50 kN / m 2

elem. 03 x lado 1 nudo 4 (inicial)

nudo 7

Figura 11.4. Fuerza de superficie aplicada sobre una cara del elemento rectangular bilineal número 3 de la malla de la Figura 8.8.

11.10.

FRECEC

Crea el vector de fuerzas en los nudos equivalentes a la acción de una fuerza másica constante o fuerza distribuida por unidad de volumen del elemento finito rectangular bilineal de elasticidad (Figura 8.12). Del planteamiento del problema de elasticidad mediante el método de los elementos finitos se obtiene el vector de fuerzas equivalentes a la acción de una fuerza másica T b ( e ) = [bx b y ] como lo indica la Ecuación (11.13). Después de sustituir la matriz de funciones de forma de un elemento rectangular bilineal expresada en las Ecuaciones (8.21) y (8.26), e integral la Ecuación (11.13), el vector de fuerzas equivalentes es igual a:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

143

PEFiCA – Programa de elementos finitos a código abierto

f b( e )

b x  b   y b x  ( e ) b  tA  y  = 4 b x    b y  b x    b y 

(11.18)

siendo A(e ) y t el área y el espesor del elemento finito. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. FRECEC MX(), XYZ(), ELE(), IELE, TESP, BX, BY

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

Descripción Vector (creado) de términos independientes del elemento f (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

TESP

Double (real)

Espesor del elemento finito.

BX

Double (real)

Componente en dirección x de la fuerza másica.

BY

Componente en dirección y de la fuerza másica. Double (real) Tabla 11.10. Sintaxis de la instrucción FRECEC.

Ejemplo 11.10 En el problema de elasticidad plana con espesor constante de 0.10 m descrito por la malla de la Figura 8.8, se considera un peso específico del material de 24 kN m 3 . El vector de fuerzas equivalentes a la aplicación de las fuerzas másicas en el elemento rectangular bilineal número 1 se obtiene de la siguiente expresión: FRECEC FEL(), XYZ(), ELE(), 1, 0.1, 0, -24

Los coeficientes del vector de fuerzas son los siguientes:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

144

Capítulo 11 FEL() F1 F2 F3 F4 F5 F6 F7 F8

Instrucciones para crear el vector de fuerzas de un elemento

(8x1) C1 0.0000E+00 -9.0000E-01 0.0000E+00 -9.0000E-01 0.0000E+00 -9.0000E-01 0.0000E+00 -9.0000E-01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 12 Instrucciones para crear matrices de constantes elásticas Las instrucciones presentadas a continuación generan la matriz de constantes elásticas D en materiales cuya relación constitutiva es de la forma: (12.1)

σ = Dε

donde σ y ε son los vectores de las componentes de esfuerzo y deformación respectivamente. Estas subrutinas se encuentran en el módulo MdCE del programa con lo indica la Tabla 2.10.

12.1. CELAPL Crea la matriz de constantes elásticas para un material de comportamiento lineal elástico isótropo en condición plana de esfuerzos y en condición plana deformaciones. Para problemas de elasticidad en el plano xy se establece un vector de componentes de T esfuerzo de la forma σ = [σ xx σ yy σ xy ] y un vector de componentes de deformación T igual a ε = [ε xx ε yy γ xy ] , por lo tanto, D corresponde a una matriz cuadrada de orden 3 de acuerdo con la relación constitutiva indicada en la Ecuación (12.1). Para un material lineal elástico isótropo con módulo de elasticidad E y la relación de Poisson ν , la matriz de constantes elásticas corresponde a:  d11 D = d12   0

d12 d 22 0

0  0   d 33 

(12.2)

Para un problema en condición plana de esfuerzos, d 11 = d 22 =

E νE E ; d12 = ; d 33 = 2 2 2(1 + ν ) (1 − ν ) (1 − ν )

(12.3)

En cambio, para un problema en condición plana de deformaciones los coeficientes de D son:

146

Capítulo 12.

d11 = d 22 =

Instrucciones para crear matrices de constantes elásticas

(1 − ν ) E νE E ; d12 = ; d 33 = (1 + ν )(1 − 2ν ) (1 + ν )(1 − 2ν ) 2(1 + ν )

(12.4)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. CELAPL MX(), E, NU, ETIPO

Argumento

Tipo de variable

Descripción

MX()

Double (real)

Matriz de constantes elásticas D.

E

Double (real)

Módulo de elasticidad o de Young del material

NU

Double (real)

Relación de Poisson del material

ETIPO

Optional Integer (argumento opcional tipo entero)

• Si ETIPO=0 considera condición plana de esfuerzos. • Si ETIPO=1 considera condición plana de deformaciones. Tabla 12.1. Sintaxis de la instrucción CELAPL.

Ejemplo 12.1 La matriz de constantes elásticas de un material lineal elástico isótropo en condición plana de esfuerzos con módulo de Young E = 2 × 10 6 kN m 2 y ν = 0.25 se obtiene de la siguiente expresión: CELAPL DMT(), 2000000, 0.25

Los coeficientes del vector de fuerzas son los siguientes: DMT()

(3x3)

F1 F2 F3

C1 2.1333E+06 5.3333E+05 0.0000E+00

C2 5.3333E+05 2.1333E+06 0.0000E+00

C3 0.0000E+00 0.0000E+00 8.0000E+05

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 13 Instrucciones de cambios de base Las instrucciones presentadas a continuación permiten el cambio de base coordenada de variables físicas como fuerzas, desplazamientos, esfuerzos y deformaciones. En algunas rutinas se construye la matriz de transformación T, tal que el vector ℘ de una variable física en la nueva base sea: (13.1)

℘ = T℘

siendo ℘ el vector de la misma variable en la base original. Despejando ℘ de la ecuación anterior y considerando que las matrices de transformación son ortonormales, es decir, T −1 = T T , se tiene que: (13.2)

℘ = TT ℘

En otros casos la instrucción transforma directamente a la variable física. Estas subrutinas se encuentran en el módulo MdTR del programa como lo indica la Tabla 2.11.

13.1. TRVECO Crea la matriz de transformación de un vector definido en el plano. Se utiliza para realizar cambios de base del vector de fuerza o de desplazamiento en un espacio bidimensional. T Sea un vector de la forma v = [v x v y ] , cuyas componentes están definidas en una base coordenada global xy. Las componentes del vector en la base coordenada local x y , T v = [v x v y ] se obtienen de la siguiente expresión: v x   cos θ v = Tv →   =  v y  − sin θ

sin θ  v x  cos θ  v y 

(13.3)

donde θ el ángulo conformado entre el eje x del sistema global de coordenadas y el eje x del sistema local. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

148

Capítulo 13.

Instrucciones de cambios de base

TRVECO MX(), ANGL

Argumento

Tipo de variable

MX()

Double (real)

Descripción

Matriz de transformación de base coordenada T. Angulo en grados entre el eje x (global) y el eje x Double (real) (local). Tabla 13.1. Sintaxis de la instrucción TRVECO.

ANGL

Ejemplo 13.1 La matriz de transformación de vectores entre la base global y una base local rotada 30 grados entre el eje x y el eje x , se calcula en el programa mediante la siguiente expresión: TRVECO TR(), 30

Los coeficientes del vector de fuerzas son los siguientes: TR()

(2x2)

F1 F2

C1 8.6603E-01 -5.0000E-01

C2 5.0000E-01 8.6603E-01

13.2. TRESP2 Crea la matriz de transformación de las componentes de esfuerzo o deformación contenidas en el plano xy. T Sea un vector σ = [σ xx σ yy σ xy ] que contiene las componentes de esfuerzo definidas en la base original xy. Las componentes de esfuerzo en la base coordenada local x y , T σ = [σ xx σ yy σ xy ] se obtienen de la siguiente expresión: σ = Tσ cos 2 θ σ xx   σ  =  sin 2 θ  yy   σ xy   − sin θ cos θ

sin 2 θ cos 2 θ sin θ cos θ

2 sin θ cos θ  σ xx   − 2 sin θ cos θ  σ yy  cos 2 θ − sin 2 θ  σ xy 

(13.4)

donde θ el ángulo conformado entre el eje x del sistema global de coordenadas y el eje x del sistema local. Las componentes de deformación en la base local T ε = [ε xx ε yy γ xy ] se calculan de la forma: ε = Tε

(13.5)

Siendo ε = [ε xx ε yy γ xy ] el vector de las componentes de deformación en la base global y T la matriz de transformación presentada en la Ecuación (13.4). La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. T

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

149

PEFiCA – Programa de elementos finitos a código abierto

TRESP2 MX(), ANGL

Argumento

Tipo de variable

MX()

Double (real)

Descripción

Matriz de transformación de base coordenada T. Angulo en grados entre el eje x (global) y el eje x Double (real) (local). Tabla 13.2. Sintaxis de la instrucción TRESP2.

ANGL

Ejemplo 13.2 La matriz de transformación de vectores entre la base global y una base local rotada 30 grados entre el eje x y el eje x , se calcula en el programa mediante la siguiente expresión: TRESP2 TR(), 30

Los coeficientes del vector de fuerzas son los siguientes: TR()

(3x3)

F1 F2 F3

C1 7.5000E-01 2.5000E-01 -4.3301E-01

C2 2.5000E-01 7.5000E-01 4.3301E-01

C3 8.6603E-01 -8.6603E-01 5.0000E-01

13.3. TRPRIN Calcula los esfuerzos (o deformaciones) principales y las respectivas direcciones principales a partir de las componentes de esfuerzo (o de deformaciones) en la base original en un espacio bidimensional. La instrucción guarda los esfuerzos (o deformaciones) principales T en un vector de la forma σ p = [σ p1 σ p 2 ] , en cambio, el ángulo que forma el eje x (global) con la dirección principal 1 θ p1 y con la dirección principal 2 θ p 2 se guardan en otro T vector de la forma θ p = [θ p1 θ p 2 ] . T Sea un vector σ = [σ xx σ yy σ xy ] que contiene las componentes de esfuerzo definidas en la base original xy, los esfuerzos principales son iguales a:

σ p2

[ [

1 (σ xx + σ yy ) + (σ xx + σ yy )2 + (2σ xy )2 2 1 2 2 = (σ xx + σ yy ) − (σ xx + σ yy ) + (2σ xy ) 2

σ p1 =

] ]

donde σ p1 > σ p 2 . Las direcciones principales se definen como:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

(13.6)

150

Capítulo 13.

 − (σ xx − σ p1 )   σ xy    − (σ xx − σ p 2 )  = arctg   σ xy  

Instrucciones de cambios de base

θ p1 = arctg  θ p2

(13.7)

De forma análoga se calculan las deformaciones principales ε p1 y ε p 2 , y sus respectivas direcciones. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. TRPRIN SXY(), MPR(), TPR()

Argumento SXY() MPR() TPR()

Tipo de variable

Descripción Vector de componentes de esfuerzos en la base coorDouble (real) denada original. Double (real) Vector de esfuerzos principales. Vector de direcciones principales. Ángulo en grados Double (real) entre el eje x (global) y los ejes principales 1 y 2. Tabla 13.3. Sintaxis de la instrucción TRPRIN.

Ejemplo 13.3 Dado un estado plano de esfuerzos de componentes 2 σ xx = 1.7979 kN m , σ yy = −16.2330 kN m 2 y σ xy = −2.8895 kN m 2 , guardados en el vector STE(), los esfuerzos y las direcciones principales se calcula en el programa mediante la siguiente expresión: TRPRIN STE(), SPE(), TPE()

Los esfuerzos principales contenidos en el vector SPE() son: SPE() F1 F2

(2x1) C1 2.2496E+00 -1.6685E+01

Las direcciones principales contenidos en el vector TPE() son: TPE() F1 F2

(2x1) C1 -8.8852E+00 8.1115E+01

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

151

PEFiCA – Programa de elementos finitos a código abierto

13.4. TRVMIS Calcula el esfuerzo de von Misses asociado al criterio de fluencia de la energía de distorsión (Popov 1998), a partir de las componentes de esfuerzo en la base original en un espacio bidimensional. T Sea un vector σ = [σ xx σ yy σ xy ] que contiene las componentes de esfuerzo definidas en la base original xy. Los esfuerzos principales se obtienen con la Ecuación (13.6), y a partir de ellos se calcula el esfuerzo de von Mises:

σ vm = σ p21 + σ p2 2 − σ p1σ p 2

(13.8)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= TRVMIS(SXY())

Argumento SXY() TRVMIS

Tipo de variable

Descripción Vector de componentes de esfuerzos en la base coorDouble (real) denada original. Double (real) Esfuerzo de von Mises. Tabla 13.4. Sintaxis de la función TRVMIS.

Ejemplo 13.4 Dado un estado plano de esfuerzos de componentes σ xx = 1.7979 kN m 2 , σ yy = −16.2330 kN m 2 y σ xy = −2.8895 kN m 2 , guardados en el vector STE(),en el programa el esfuerzo de von Mises se calcula mediante la siguiente expresión: SVM = TRVMIS(STE())

El valor calculado del SVM es igual a 17.92 kN m 2 .

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 14 Instrucciones para numerar los grados de libertad Las instrucciones presentadas a continuación generan matrices o tablas que contienen los identificadores de los grados de libertad o valores nodales asociados a cada uno de los nudos o cada uno de los elementos de la malla. Estas subrutinas se encuentran en el módulo MdNGL del programa como lo indica la Tabla 2.13.

14.1. NGLNUD Crea la matriz de grados de libertad por nudo a partir de la matriz indicadora de condiciones de borde del problema. La instrucción asigna un identificador numérico a cada uno de grados de libertad del problema. Inicialmente numera de forma secuencial todos los grados de libertad desconocidos con la información dada por la matriz indicadora de condiciones de borde y luego numera todos los grados de libertad conocidos. Como consecuencia del orden dado a los grados de libertad, el vector de valores nodales del sistema Φ pueda dividirse en dos subvectores: el vector de valores nodales desconocidos Φα y el vector de valores nodales conocidos Φ β . Por lo tanto la ecuación de equilibrio del sistema: KΦ = f

(14.1)

se puede expresar de la forma: K αα K  βα

K αβ  K ββ 

Φ α  f α  Φ  = f   β  β

(14.2)

donde la matriz de rigidez se ha dividido las cuarto submatrices K αα , K αβ , K βα y K ββ de acuerdo al número de grados de libertad desconocidos. Asimismo, el vector de términos independientes está compuesto por los subvectores fα y f β . Ahora las cantidades de interés del problema que corresponden a los valores nodales desconocidos se obtienen de la primera ecuación de la expresión matricial anterior, como: −1 (fα − K αβ Φ β ) Φ α = K αα

(14.3)

154

Capítulo 14.

Instrucciones para numerar los grados de libertad

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. NGLNUD MGL(), MRE(), TP

Argumento MGL() MRE()

TP

Tipo de variable

Descripción Matriz creada que contiene los grados de libertad por Integer(entero) nudo (Sección 3.4). Matriz existente que contiene las condiciones de borde del problema (Sección 3.4). Los coeficientes son 0 Integer(entero) o 1. Indica el tipo de numeración de los grados de libertad conocidos: • Si TP=0 el número identificador los grados de Optional Integer libertad conocidos es el cero (por defecto). (argumento opcional tipo entero) • Si TP=1 los grados de libertad conocidos se numeran después de numerar todos los grados de libertad desconocidos. Tabla 14.1. Sintaxis de la instrucción NGLNUD. Φ(04) Φ(03)

Φ(09) Φ(08)

06

03 02

04 Φ(07) Φ(06)

05

01

Φ(12) Φ(11)

08 03

01 Φ(17)=0 Φ(18)=0

Φ(16)=0 Φ(05)

04

notación

09

Φ(02) Φ(01)

02

Φ(14) Φ(13)

Φ(15)=0 Φ(10)

07

Matriz indicadora de condiciones de borde (existente)

magnitud de un g.l. conocido

# grado de libertad

Φ(11)=2.4 Φ(10)

07

# nudo

malla de elementos finitos

Matriz de grados de libertad por nudo (creada)

Figura 14.1. Ejemplo de la instrucción NGLNUD numerando todos los grados de libertad.

Ejemplo 14.1 Dada la malla de 9 nudos y 2 grados de libertad por nudo y la matriz indicadora de las condiciones de borde MRE() obtener la matriz de grados de libertad por nudo MGL(). Mediante la siguiente instrucción se crea la matriz MGL() numerando todos lo grados de libertad (desconocidos y conocidos): NGLNUD MGL(), MRE(), 1 © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

155

PEFiCA – Programa de elementos finitos a código abierto

La malla de elementos finitos, la matriz MRE() y la matriz creada MGL(), se muestran en la Figura 14.1. En cambio, mediante la siguiente instrucción se crea la matriz MGL() numerando solamente los grados de libertad desconocidos: NGLNUD MGL(), MRE()

La malla de elementos finitos, la matriz MRE() y la matriz creada MGL(), se muestran en la Figura 14.2. Φ(04) Φ(03)

Φ(09) Φ(08)

06

03 02

04 Φ(07) Φ(06)

05

01

# grado de libertad

Φ(12) Φ(11)

Φ(00)=0 Φ(05)

04

07

Φ(00)=0 Φ(10)

# nudo

malla de elementos finitos

07

Matriz indicadora de condiciones de borde (existente)

magnitud de un g.l. conocido

Φ(11)=2.4 Φ(10)

08 03

01 Φ(00)=0 Φ(00)=0

notación

09

Φ(02) Φ(01)

02

Φ(14) Φ(13)

Matriz de grados de libertad por nudo (creada)

Figura 14.2. Ejemplo de la instrucción NGLNUD numerando solamente los grados de libertad desconocidos.

14.2. NGLELE Crea la matriz de incidencias o tabla de grados de libertad por elemento a partir de la matriz de grados de libertad por nudo y la matriz de conectividades del problema. La instrucción construye una tabla de identificadores de los grados de libertad de asociados a cada elemento. La matriz de incidencias es esencial para realizar el proceso de ensamblaje de matrices y vectores descrito por la instrucción ENSAMK, ENSAMV, ENBAND y ENSAMX, al igual que la extracción de vectores con la rutina EXTRAV. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

156

Capítulo 14.

Instrucciones para numerar los grados de libertad

NGLELE INC(), MGL(), ELE()

Argumento

Tipo de variable

INC()

Integer (entero)

Descripción

Matriz de incidencias creada (Sección 3.4). Matriz de grados de libertad por nudo existente (SecInteger (entero) ción 3.4). Integer (entero) Matriz de conectividades (Sección 3.4). Tabla 14.2. Sintaxis de la instrucción NGLELE.

MGL() ELE()

Ejemplo 14.2 Dada la malla de 4 elementos, 9 nudos y 2 grados de libertad por nudo mostrada en la Figura 14.1 y conocida la matriz de conectividades ELE(), se obtiene la matriz de incidencias INC() mediante la siguiente instrucción: NGLELE INC(), MGL(), ELE()

La matriz de conectividades existente y la matriz de incidencias creada se indican el la Figura 14.3. elem

Identificador del nudo del elemento nudo k nudo m nudo i nudo j

vm

vk um

m

k (e)

vi

vj

ui

i

uj

j

Matriz de elementos o tabla de conectividades Identificador del grado de libertad del elemento elem

# ui

# vi

# uj

# vj

# uk

# vk

# um

# vm

Matriz de incidencias o tabla de grados de libertad por elemento

Figura 14.3. Ejemplo de la instrucción NGLELE.

14.3. NGLBAN Calcula el ancho de la semi-banda de la matriz de rigidez y el número de grados de libertad del sistema a partir de la matriz de incidencias. En el proceso de ensamblaje de matrices de rigidez tipo banda realizado con la instrucción ENBAND es necesario conocer el ancho de la semi-banda de la misma. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

157

PEFiCA – Programa de elementos finitos a código abierto

NGLBAN INC(), BAND, NGLT

Argumento

Tipo de variable

INC()

Integer (entero)

BAND NGLT

Descripción

Matriz de incidencias existente (Sección 3.4). Ancho calculado de la semi-banda de la matriz de Integer (entero) rigidez del sistema. Integer (entero) Número de grados de libertad del sistema calculado Tabla 14.3. Sintaxis de la instrucción NGLBAN.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 15 Instrucciones para ensamblar y extraer matrices Las instrucciones descritas en este capítulo tienen dos objetivos generales. El primero es construir una matriz o vector del sistema a partir del ensamblaje de matrices o vectores elementales. El segundo, extrae una matriz o vector elemental conformada por algunos coeficientes de una matriz o vector del sistema. Estas instrucciones están incluidas como subrutinas de los módulos MdEN y MdEX como lo indica la Tabla 2.14.

15.1. ENSAMK Suma la contribución de una matriz elemental a la matriz del sistema de acuerdo con la numeración de los valores nodales o grados de libertad del elemento adicionado, en otras palabras, ensambla una matriz elemental en una matriz del sistema. En mecánica computacional de sólidos, las matrices del sistema que comúnmente intervienen en el problema son la matriz de rigidez y la matriz de masas de la estructura. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

ENSAMK KG(), KE(), INC(), IELE

Argumento

Tipo de variable

KG()

Double (real)

KG()

Double (real)

KE()

Double (real)

INC()

Integer (entero)

IELE

Descripción Como parámetro de entrada corresponde a la matriz del sistema antes de ensamblar la matriz elemental KE(). Como parámetro de salida corresponde a la matriz del sistema después de ensamblar la matriz elemental KE(). Matriz elemental existente que se desea ensamblar.

Matriz de incidencias (Sección 3.4). Número del elemento finito cuya matriz se desea Integer (entero) ensamblar. Tabla 15.1. Sintaxis de la instrucción ENSAMK.

Ejemplo 15.1 Dada la matriz rigidez del elemento finito número 1 como:

160

Capítulo 15. Instrucciones para ensamblar y extraer matrices KEL()

(8x8)

F1 F2 F3 F4 F5 F6 F7 F8

C1 5.2444E+04 2.0000E+04 -1.6444E+04 -4.0000E+03 -2.6222E+04 -2.0000E+04 -9.7778E+03 4.0000E+03

C2 2.0000E+04 7.4667E+04 4.0000E+03 2.1333E+04 -2.0000E+04 -3.7333E+04 -4.0000E+03 -5.8667E+04

F1 F2 F3 F4 F5 F6 F7 F8

C7 -9.7778E+03 -4.0000E+03 -2.6222E+04 2.0000E+04 -1.6444E+04 4.0000E+03 5.2444E+04 -2.0000E+04

C8 4.0000E+03 -5.8667E+04 2.0000E+04 -3.7333E+04 -4.0000E+03 2.1333E+04 -2.0000E+04 7.4667E+04

C3 -1.6444E+04 4.0000E+03 5.2444E+04 -2.0000E+04 -9.7778E+03 -4.0000E+03 -2.6222E+04 2.0000E+04

C4 -4.0000E+03 2.1333E+04 -2.0000E+04 7.4667E+04 4.0000E+03 -5.8667E+04 2.0000E+04 -3.7333E+04

C5 -2.6222E+04 -2.0000E+04 -9.7778E+03 4.0000E+03 5.2444E+04 2.0000E+04 -1.6444E+04 -4.0000E+03

C6 -2.0000E+04 -3.7333E+04 -4.0000E+03 -5.8667E+04 2.0000E+04 7.4667E+04 4.0000E+03 2.1333E+04

y la matriz de incidencias del problema, INC() F1 F2 F3 F4

(4x8) C1 000 000 004 006

C2 000 001 005 007

C3 004 006 010 012

C4 005 007 011 013

C5 006 008 012 014

C6 007 009 013 015

C7 000 002 006 008

C8 001 003 007 009

Ensamblar la matriz de rigidez del elemento 1 en la matriz de rigidez de la estructura mediante la siguiente instrucción: ENSAMK KGL(), KEL(), INC(), 1

Suponiendo que todos los coeficientes de la matriz KGL() son iguales a cero antes de ejecutar la instrucción, se tiene como resultado que: KGL() F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14

(15x15) C1 7.4667E+04 0.0000E+00 0.0000E+00 2.0000E+04 -3.7333E+04 -4.0000E+03 2.1333E+04 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C2 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C3 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C4 2.0000E+04 0.0000E+00 0.0000E+00 5.2444E+04 -2.0000E+04 -9.7778E+03 -4.0000E+03 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C5 -3.7333E+04 0.0000E+00 0.0000E+00 -2.0000E+04 7.4667E+04 4.0000E+03 -5.8667E+04 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C6 -4.0000E+03 0.0000E+00 0.0000E+00 -9.7778E+03 4.0000E+03 5.2444E+04 2.0000E+04 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

161

PEFiCA – Programa de elementos finitos a código abierto F15

0.0000E+00

0.0000E+00

0.0000E+00

0.0000E+00

0.0000E+00

0.0000E+00

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15

C7 2.1333E+04 0.0000E+00 0.0000E+00 -4.0000E+03 -5.8667E+04 2.0000E+04 7.4667E+04 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C8 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C9 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C10 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C11 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C12 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15

C13 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C14 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

C15 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

15.2. ENSAMV Suma la contribución de un vector elemental al vector del sistema de acuerdo con la numeración de los valores nodales o grados de libertad del elemento adicionado, en otras palabras, ensambla un vector elemental en el vector del sistema. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan en la Tabla 15.2. Ejemplo 15.2 como: VEL() F1 F2 F3 F4 F5 F6

Dada el vector de fuerzas de cuerpo del elemento finito número 1

(8x1)

C1 5.6250E+00 3.7500E+00 5.6250E+00 3.7500E+00 5.6250E+00 3.7500E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

162

Capítulo 15. Instrucciones para ensamblar y extraer matrices F7 F8

5.6250E+00 3.7500E+00

y la matriz de incidencias del problema, INC()

(4x8) C1 000 000 004 006

F1 F2 F3 F4

C2 000 001 005 007

C3 004 006 010 012

C4 005 007 011 013

C5 006 008 012 014

C6 007 009 013 015

C7 000 002 006 008

C8 001 003 007 009

ensamblar el vector de fuerzas del elemento 1 en el vector de fuerzas de la estructura mediante la siguiente instrucción: ENSAMV VGL(), VEL(), INC(), 1 Suponiendo que todos los coeficientes del vector VGL() son iguales a cero antes de ejecutar la instrucción, se tiene como resultado que: VGL() F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15

(15x1) C1 3.7500E+00 0.0000E+00 0.0000E+00 5.6250E+00 3.7500E+00 5.6250E+00 3.7500E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

ENSAMV VG(), VE(), INC(), IELE

Argumento

Tipo de variable

VG()

Double (real)

VG()

Double (real)

VE()

Double (real)

INC()

Integer (entero)

IELE

Descripción Como parámetro de entrada corresponde al vector del sistema antes de ensamblar el vector elemental VE(). Como parámetro de salida corresponde al vector del sistema después de ensamblar al vector elemental VE(). Vector elemental existente que se desea ensamblar.

Matriz de incidencias (Sección 3.4). Número del elemento finito cuyo vector se desea Integer (entero) ensamblar. Tabla 15.2. Sintaxis de la instrucción ENSAMV.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

163

PEFiCA – Programa de elementos finitos a código abierto

15.3. ENBAND Suma la contribución de una matriz elemental simétrica a la matriz del sistema en formato de matriz banda de acuerdo con la numeración de los valores nodales o grados de libertad del elemento ensamblado. En mecánica computacional de sólidos, las matrices del sistema que comúnmente intervienen en el problema son la matriz de rigidez y la matriz de masas de la estructura. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. ENBAND KBA(), KE(), INC(), IELE

Argumento KBA()

KBA() KE() INC() IELE

Tipo de variable

Descripción Como parámetro de entrada corresponde a la matriz banda Double (real) del sistema antes de ensamblar la matriz elemental KE(). Como parámetro de salida corresponde a la matriz banda del sistema después de ensamblar la matriz elemental Double (real) KE(). Matriz elemental simétrica existente que se desea ensamDouble (real) blar. Matriz de incidencias (Sección 3.4). Integer (entero) Número del elemento finito cuya matriz se desea ensamInteger (entero) blar. Tabla 15.3. Sintaxis de la instrucción ENBAND.

La instrucción requiere la existencia de la matriz banda KBA(), cuyo número de filas corresponde con el número de grados de libertad del sistema y el número de columnas con el ancho de la semi banda. Por esta razón se recomienda utilizar la instrucción NGLBAN para determinar el ancho de la semi banda a partir de la matriz de incidencias y la instrucción MTCONS para construir una matriz llena de un valor constante.

15.4. ENSAMX Suma un coeficiente especificado de una matriz elemental a los coeficientes de un vector del sistema de acuerdo con la numeración de los valores nodales o grados de libertad del elemento. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan en la Tabla 15.4. Ejemplo 15.3 Dada la matriz rigidez del elemento finito número 1 como: KEL() F1 F2 F3 F4 F5 F6 F7

(8x8)

C1 5.2444E+04 2.0000E+04 -1.6444E+04 -4.0000E+03 -2.6222E+04 -2.0000E+04 -9.7778E+03

C2 2.0000E+04 7.4667E+04 4.0000E+03 2.1333E+04 -2.0000E+04 -3.7333E+04 -4.0000E+03

C3 -1.6444E+04 4.0000E+03 5.2444E+04 -2.0000E+04 -9.7778E+03 -4.0000E+03 -2.6222E+04

C4 -4.0000E+03 2.1333E+04 -2.0000E+04 7.4667E+04 4.0000E+03 -5.8667E+04 2.0000E+04

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

C5 -2.6222E+04 -2.0000E+04 -9.7778E+03 4.0000E+03 5.2444E+04 2.0000E+04 -1.6444E+04

C6 -2.0000E+04 -3.7333E+04 -4.0000E+03 -5.8667E+04 2.0000E+04 7.4667E+04 4.0000E+03

164

Capítulo 15. Instrucciones para ensamblar y extraer matrices F8

4.0000E+03

-5.8667E+04

F1 F2 F3 F4 F5 F6 F7 F8

C7 -9.7778E+03 -4.0000E+03 -2.6222E+04 2.0000E+04 -1.6444E+04 4.0000E+03 5.2444E+04 -2.0000E+04

C8 4.0000E+03 -5.8667E+04 2.0000E+04 -3.7333E+04 -4.0000E+03 2.1333E+04 -2.0000E+04 7.4667E+04

2.0000E+04

-3.7333E+04

-4.0000E+03

2.1333E+04

y la matriz de incidencias del problema, INC() F1 F2 F3 F4

(4x8) C1 000 000 004 006

C2 000 001 005 007

C3 004 006 010 012

C4 005 007 011 013

C5 006 008 012 014

C6 007 009 013 015

C7 000 002 006 008

C8 001 003 007 009

ensamblar el término KEL(1,2) de la matriz de rigidez del elemento 1 en un vector de la estructura mediante la siguiente instrucción: ENSAMX VGL(), KEL(), 1, 2,INC(), 1

Suponiendo que todos los coeficientes de VGL() son iguales a cero antes de ejecutar la instrucción, se tiene como resultado que: VGL() F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15

(15x1) C1 2.0000E+04 0.0000E+00 0.0000E+00 2.0000E+04 2.0000E+04 2.0000E+04 2.0000E+04 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

165

PEFiCA – Programa de elementos finitos a código abierto

ENSAMX VG(), KE(), IFIL, ICOL, INC(), IELE

Argumento

Tipo de variable

VG()

Double (real)

VG()

Double (real)

KE()

Double (real)

IFIL

Integer (entero)

ICOL INC() IELE

Descripción Como parámetro de entrada corresponde al vector del sistema antes de ensamblar el término de la matriz elemental KE(). Como parámetro de salida corresponde a la matriz del sistema después de ensamblar la matriz elemental KE(). Matriz elemental existente.

Número de fila del término KE(IFIL,ICOL).de la matriz elemental que se desea ensamblar. Número de fila del término KE(IFIL,ICOL).de la Integer (entero) matriz elemental que se desea ensamblar. Matriz de incidencias (Sección 3.4). Integer (entero) Número del elemento finito cuya matriz se desea Integer (entero) ensamblar. Tabla 15.4. Sintaxis de la instrucción ENSAMX.

15.5. EXTRAV Extrae un vector elemental conformado por los coeficientes de un vector del sistema definidos de acuerdo con la numeración de los valores nodales o grados de libertad del elemento. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. EXTRAV VG(), VE(), INC(), IELE, NGLE

Argumento

Tipo de variable

Descripción

VG()

Double (real)

Vector existente del sistema.

VE()

Double (real)

Vector elemental que se desea crear.

INC()

Integer (entero)

IELE

NGLE

Matriz de incidencias (Sección 3.4). Número del elemento finito cuyo vector se desea Integer (entero) extraer. Número de grados de libertad asociados al elemento. Optional Integer Debe ser menor o igual a el número de columnas de la (argumento opcional matriz de incidencias. Por defecto es igual al número tipo entero) de columnas de la matriz de incidencias. Tabla 15.5. Sintaxis de la instrucción EXTRAV.

Si el número del grado de libertad indicado en la matriz de incidencias es igual a cero (000), la instrucción considera un valor de cero (0.0000E+00) en el coeficiente del vector elemental creado. Cuando se define un valor de n para el parámetro NGLE, la instrucción extrae los primeros n grados de libertad asociados al elemento que se indican en la matriz de incidencias. © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

166

Capítulo 15. Instrucciones para ensamblar y extraer matrices

Ejemplo 15.4 Dada el vector de desplazamientos de la estructura ordenado según la numeración de los grados de libertad, de la forma: DGT() F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26

(26x1) C1 3.3141E-05 -1.6683E-05 5.3922E-05 -2.7864E-05 7.0790E-05 -3.4794E-05 8.6501E-05 -3.7790E-05 1.0246E-04 -3.8817E-05 1.1949E-04 -3.8941E-05 9.7604E-06 -6.7274E-05 3.5833E-05 -6.5668E-05 5.5388E-05 -6.6101E-05 7.1419E-05 -6.7600E-05 8.6328E-05 -6.8235E-05 1.0171E-04 -6.8530E-05 1.1872E-04 -6.8421E-05

y su respectiva matriz de incidencias, INC() F1 F2 F3 F4 F5 F6

(6x8) C1 000 001 003 005 007 009

C2 000 002 004 006 008 010

C3 013 015 017 019 021 023

C4 014 016 018 020 022 024

C5 015 017 019 021 023 025

C6 016 018 020 022 024 026

C7 001 003 005 007 009 011

C8 002 004 006 008 010 012

se extrae el vector de desplazamientos del elemento número 1 ejecutando la siguiente instrucción: EXTRAV DGT(), DEL(), INC(), 1

Al omitir el último argumento de la instrucción, el vector resultante DEL() tendrá 8 filas, lo cual corresponde con el número de columnas de la matriz de incidencias, como se indica a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

DEL() #1 F1 F2 F3 F4 F5 F6 F7 F8

(8x1) C1 0.0000E+00 0.0000E+00 9.7604E-06 -6.7274E-05 3.5833E-05 -6.5668E-05 3.3141E-05 -1.6683E-05

En el vector DEL() los coeficientes de las filas 1 y 2 son iguales a cero porque los dos primeros grados de libertad indicados en la matriz de incidencias INC() están numerados como cero. Ejemplo 15.5 Dada el vector de desplazamientos de la estructura y la matriz de incidencias del ejemplo anterior, se ejecuta la siguiente instrucción: EXTRAV DGT(), DEL(), INC(), 3, 6

y se obtiene un vector DEL() de 6 filas que contiene los coeficientes del vector DGT() en las filas 3,4,17,18,19 y 20, indicadas en las 6 primeras columnas de la fila 3 de la matriz de incidencias:

DEL() #3 F1 F2 F3 F4 F5 F6

(6x1) C1 5.3922E-05 -2.7864E-05 5.5388E-05 -6.6101E-05 7.1419E-05 -6.7600E-05

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

167

Capítulo 16 Instrucciones de organización de matrices Este capítulo describe las instrucciones dedicadas a ordenar los coeficientes de una matriz de acuerdo con la numeración de los grados de libertad, de los nudos o de los elementos del problema. Estas subrutinas tienen el prefijo OR y están contenidas en el módulo MdOR para facilitar su ubicación en el código como lo indica la Tabla 2.15.

16.1. ORFUGL Crea el vector de valores nodales de la estructura ordenado de acuerdo con la numeración de los grados de libertad a partir de la tabla de valores nodales ordenada por nudo. Una tabla o matriz ordenada por nudos significa que cada fila contiene los valores nodales de los grados de libertad de un nudo específico, por tanto, su tamaño será el número nudos por el número de grados de libertad por nudo. La importancia de la presentación de los valores nodales de la estructura de dos formas distintas esta motivado por las siguientes razones. Por un lado, en el sistema de ecuaciones simultáneas planteado para calcular los valores nodales de la forma K ngl×ngl ⋅ u ngl×1 = f ngl×1 , cada ecuación esta asociada a un grado de libertad, por lo tanto el vector de términos independientes y el vector solución están ordenados de acuerdo con la numeración de los grados de libertad. Por otra parte, es más adecuado presentar los resultados nodales en una tabla que indique en cada fila el valor nodal en los grados de libertad asociados a un nudo. La Figura 16.1 muestra como ejemplo una malla de 8 nudos y 5 elementos de un problema de elasticidad bidimensional en el cual cada nudo tiene dos grados de libertad que corresponden a los desplazamientos en x y en y. Allí se indica la tabla de valores ordenados por nudos de 8 por 2, como también el vector de valores nodales ordenados de acuerdo con la numeración de los grados de libertad de 16 por 1. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

170

Capítulo 16.

Instrucciones de organización de matrices

ORFUGL VGL(), VFU(), MGL()

Argumento

Tipo de variable

Descripción Vector creado de valores nodales ordenado de acuerdo con la numeración de los grados de libertad. El número de filas de este vector es igual al número de número de nudos multiplicado por el número de graDouble (real) dos de libertad por nudo, es decir, el producto entre el número de filas y el número de columnas de la matriz VFU(). Matriz o tabla existente de valores nodales ordenada por nudos, donde cada fila contiene el valor nodal de los grados de libertad de un nudo específico (en elasDouble (real) ticidad bidimensional, corresponde a la magnitud de las fuerzas o desplazamientos FX, FY o UX, UY de un nudo). Matriz de numeración de los grados de libertad por Integer (entero) nudo (Sección 3.4). Tabla 16.1. Sintaxis de la instrucción ORFUGL.

VGL()

VFU()

MGL()

φ12

φ14 φ11

φ16 φ13

206

φ15

207

# nudo

208 105

102

φ8

φ10 φ7

φ9

204

104

205 101

φ2 φ1 201

103

φ4 φ3 202

φ6 φ5 203

Notación v # grado de libertad u # nudo # elemento

u

v

201

φ1

φ2

202

φ3

φ4

203

φ5

φ6

204

φ7

φ8

205

φ9

φ10

206

φ11

φ12

207

φ13

φ14

208

φ15

φ16

tabla de valores nodales ordenados por nudos

φ1 φ2 φ3 φ4 φ5 φ6 φ7 φ8 φ9 φ10 φ11 φ12 φ13 φ14 φ15 φ16

vector de valores nodales ordenados de acuerdo con la numeración de los grados de libertad

Figura 16.1. Ordenamiento de los valores nodales para un problema de elasticidad bidimensional.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

171

PEFiCA – Programa de elementos finitos a código abierto

Si un coeficiente de la matriz de grados de libertad por nudo MGL() es igual a cero, se desconoce la posición del coeficiente correspondiente de la matriz VFU() en el vector VGL(), y por lo tanto no se considera tal término. Ejemplo 16.1 Dada la matriz de fuerzas nodales ordenada de acuerdo con la numeración de los nudos FFU() y la matriz de la numeración de los grados de libertad por cada nudo MGL() indicadas en la Figura 4.1, se obtiene el vector de fuerzas nodales ordenadas de acuerdo con la numeración de los grados de libertad FGL() mediante la siguiente línea de comando: ORFUGL FGL(), FFU(), MGL()

nudo

grado de libertad que representa la fuerza o el desplazamiento nudo en x en y

fuerza nodal en x en y

Matriz o tabla de fuerzas ordenada de acuerdo con la numeración de los nudos (existente) F(01) F(00)

02 F(13) F(12)

08 F(00) F(00)

01

F(03)=4.8 F(02)=1.5

03 F(15) F(14)

09 F(05) F(04)

04

F(11)=2.4 F(10)=2.3

07 F(19) F(18)

11 F(07) F(06)

05

grado de libertad

fuerza nodal

Matriz de la numeración de los grados de libertad por nudo (existente) F(17)=1.2 F(16)=-1.6

10

notación # grado de libertad

F(21) F(20)

F(11)=2.4 F(10)=2.3

12 F(09) F(08)

06

magnitud de la fuerza

07

# nudo

malla de elementos finitos

Figura 16.2. Ejemplo de la instrucción ORFUGL.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Vector de fuerzas ordenadas según la numeración de los grados de libertad (creado)

172

Capítulo 16.

Instrucciones de organización de matrices

16.2. ORGLFU Crea la tabla de valores nodales ordenada por nudo a partir del vector de valores nodales de la estructura ordenado de acuerdo con la numeración de los grados de libertad, como se muestra en la Figura 16.1. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. ORGLFU VFU(), FGL(), MGL()

Argumento

VFU()

VGL() MGL()

Tipo de variable

Descripción Matriz o tabla creada de valores nodales ordenada por nudos, donde cada fila contiene el valor nodal de los grados de libertad de un nudo específico (en elasticidad bidimensional, corresponde a la magnitud de las Double (real) fuerzas o desplazamientos FX, FY o UX, UY de un nudo). El tamaño de esta matriz es de número de nudos por número de grados de libertad por nudo, lo cual corresponde al tamaño de la matriz MGLN(). Vector existente de valores nodales ordenado de Double (real) acuerdo con la numeración de los grados de libertad. Matriz de numeración de los grados de libertad por Integer (entero) nudo (Sección 3.4). Tabla 16.2. Sintaxis de la instrucción ORGLFU.

La instrucción genera un error si el número de filas del vector VGL() es menor que el máximo coeficiente de la matriz de grados de libertad por nudo MGL(), lo cual indicaría la inexistencia del valor nodal correspondiente a ese grado de libertad. Si un coeficiente de la matriz de grados de libertad por nudo MGL() es igual a cero, se desconoce la posición del coeficiente correspondiente del vector VGL() en la matriz VFU(), y por lo tanto no se considera tal término. Ejemplo 16.2 Dado el vector de fuerzas nodales ordenadas de acuerdo con la numeración de los grados de libertad FGL() y la matriz de la numeración de los grados de libertad por cada nudo MGL() indicadas en la Figura 16.3, se obtiene la matriz de fuerzas nodales ordenada de acuerdo con la numeración de los nudos FFU() mediante la siguiente línea de comando: ORGLFU FFU(), FGL(), MGL()

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

173

PEFiCA – Programa de elementos finitos a código abierto

grado de fuerza libertad nodal

grado de libertad que representa la fuerza o el desplazamiento nudo en x en y

nudo

fuerza nodal en x en y

máximo coeficiente de MGL()

Matriz o tabla de fuerzas ordenada de acuerdo con la numeración de los nudos (creada)

Matriz de numeración de los grados de libertad por nudo (existente) F(01) F(00)

02

Vector de fuerzas ordenado según la numeración de los grados de libertad (existente)

F(13) F(12)

08 F(00) F(00)

01

F(03)=4.8 F(02)=1.5

03 F(15) F(14)

09 F(05) F(04)

04

F(11)=2.4 F(10)=2.3

07 F(19) F(18)

11 F(07) F(06)

05

F(17)=1.2 F(16)=-1.6

10 F(21) F(20)

06

magnitud de la fuerza

F(11)=2.4 F(10)=2.3

12 F(09) F(08)

notación

# grado de libertad

07

# nudo

malla de elementos finitos

Figura 16.3. Ejemplo de la instrucción ORGLFU.

16.3. ORSONO Crea un vector de resultados nodales a partir de una matriz de resultados elementales calculados en los nudos de cada elemento. Cada coeficiente del vector de resultados nodales es igual al promedio entre los valores calculados en el interior de los elementos que comparten un mismo nudo. Los resultados elementales son aquellos que han sido obtenidos en puntos específicos del dominio de un elemento finito, a partir de las derivadas de las funciones de forma del mismo. En los problemas de elasticidad, por ejemplo, el campo de las deformaciones se calcula en un punto (x,y) en el interior del elemento e de la forma ε (( ex), y ) = B (( ex), y )u ( e ) donde B (( ex), y ) = ∇N (( ex), y ) es a la matriz de operadores diferenciales actuando sobre funciones de forma evaluada en el punto (x,y) del elemento e, y u (e ) corresponde el vector de desplazamiento del elemento e. La cantidad presentada de forma elemental no muestra continuidad entre los elementos a pesar de ser continua en el interior de cada uno.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

174

Capítulo 16.

Instrucciones de organización de matrices

La matriz de resultados elementales contiene en cada fila los valores calculados en lugares especiales del interior de un elemento, tales como los nudos, el centro o los puntos de Gauss. Por lo tanto, en dicha matriz el número de filas es igual al número de elementos y el número de columnas corresponde al número de puntos donde se evalúe la cantidad de interés. Por ejemplo, la Figura 16.4 muestra una matriz de resultados elementales que contiene la deformación lineal en y evaluada en los nudos de cada elemento rectangular bilineal. elem. (e ) ε x= x

(e ) ε x= x

l

k

e

e

ε

nudo i

nudo j

nudo k

nudo l

k

l

(e ) x= x i

ε

(e ) ε x= x

(e ) ε x= x

i

(e ) ε x= x

j

(e ) ε x= x

k

l

(e ) x= x j

i

[

ε (xe∈)Ω ( e ) = B (xe∈)Ω ( e ) u ( e )

j

ε (xe∈)Ω( e ) = ε xx( e )

ε

( e) yy

≡ε

ε yy( e ) γ xy( e ) ]x∈Ω T

(e)

( e) x= x n

Figura 16.4. Matriz de resultados elementales: deformación lineal en y evaluada en los nudos de cada elemento rectangular bilineal.

Los resultados nodales corresponden a valores en los nudos de la malla que son interpolados en el interior de los elementos describiendo una función continua para toda la malla (cuando la estructura modelada tiene un solo material). Por lo tanto, el número de filas del vector de resultados nodales corresponde al número de nudos de la malla. La ausencia de continuidad en los campos derivados de la función de aproximación entre los elementos finitos, motiva el desarrollo de técnicas de suavizado de funciones en la malla de elementos finitos. Una de las formas más sencillas consiste en utilizar el valor promedio en cada nudo del valor calculado en los elementos finitos asociados a él. Por ejemplo, la Figura 16.5 muestra una matriz de resultados nodales que contiene una componente de deformación promedio en cada nudo. nudo

3 ( 3) ε x= x

ε 1

r

(1) x= x r

( 6) ε x= x

r

ε

6

r

9

εr =

valor

εr

r

( 9) x= x r

1 ne

ne

∑ε (e )

(e ) x=x r

∀Ω ( e ) ⊃ x r

1 (1) ε x = x r + ε x(9=)x r + ε x(3=)x r + ε x(6=)x r 4 Figura 16.5. Matriz de resultados nodales: deformación promedio en cada nudo de una malla de un solo material.

εr =

(

)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

175

PEFiCA – Programa de elementos finitos a código abierto

ORSONO MX(), MDT(), ELE(), NNUD

Argumento MX()

MDT()

ELE() NNUD

elemento

Tipo de variable

Descripción Vector creado que contiene los valores promedio en Double (real) los nudos (resultado nodal). Matriz existente que contiene los valores en los nudos de cada elemento (resultado elemental). Cada fila Double (real) contiene los valores en los nudos calculados con las derivadas de las funciones de forma de los elementos. Matriz de nudos asociados a cada elemento o matriz Integer (entero) de conectividades (Sección 3.4). Número de nudos del problema. Integer (entero) Tabla 16.3. Sintaxis de la instrucción ORSONO. nudo i

nudo j

nudo k

elementos finitos que comparten el nudo 86

matriz de conectividades elemento

nudo i

nudo j

nudo k nudo

calcular promedio

esfuerzo promedio

vector de esfuerzos promedio en los nudos (resultado nodal)

matriz de esfuerzos en los elementos (resultado elemental)

Figura 16.6. Ejemplo de la instrucción ORSONO. Cálculo del esfuerzo

σ xx

promedio en el

nudo 86 (resultado nodal).

Ejemplo 16.3 Construir el vector de esfuerzos promedio en los nudos NXX() a partir de la matriz o tabla de esfuerzos en los nudos de cada elemento SXX() y de la matriz de conectividades ELE(). La línea de comando utilizada es: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

176

Capítulo 16.

Instrucciones de organización de matrices

ORSONO NXX(), SXX(), ELE(), NNUD

La Figura 4.2 describe la obtención del esfuerzo promedio en el nudo 86 a partir de los elementos 1, 2, 22, 23, 24 y 27, los cuales comparten dicho nudo.

16.4. ORSONM Crea una matriz de resultados nodales por material a partir de una matriz de resultados elementales calculados en los nudos de cada elemento. Cada columna de la matriz de resultados nodales contiene el promedio entre los valores calculados en el interior de los elementos asociados a un mismo nudo para un material específico. Los resultados nodales por material corresponden a valores en los nudos de la malla que son interpolados en el interior de los elementos describiendo una función continua para cada grupo de elementos finitos del mismo material. Por lo tanto, el número de filas de la matriz de resultados nodales corresponde al número de nudos de la malla y el número de columnas es el número de materiales del problema. Por ejemplo, la Figura 16.7 muestra una matriz de resultados nodales por material que contiene una componente de deformación promedio en cada nudo para los materiales 1 y 2. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. ORSONM MX(), MDT(), ELE(), MAT(), NNUD, NMAT

Argumento

Tipo de variable

Descripción Matriz creada que contiene los valores promedio entre los nudos (resultado nodal) de un mismo material. Cada columna contiene los resultados nodales para un material específico. Matriz existente que contiene los valores en los nudos de cada elemento (resultado elemental). Cada fila contiene los valores en los nudos calculados con las derivadas de las funciones de forma de los elementos. Matriz de nudos asociados a cada elemento o matriz de conectividades (Sección 3.4). Vector de tipo de material por elemento. Cada fila contiene un código que indica el tipo de material asociado a cada elemento. Número de nudos del problema.

MX()

Double (real)

MDT()

Double (real)

ELE()

Integer (entero)

MAT()

Integer (entero)

NNUD

Integer (entero)

NMAT

Integer (entero) Número de materiales del problema. Tabla 16.4. Sintaxis de la instrucción ORSONM.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

177

PEFiCA – Programa de elementos finitos a código abierto

material 1

material 2

3

6

nudo

deformación mat. 2 mat. 1

ε rm =1

r ( 3) ε xx= =x

ε 1

r

(1) xx= =xr

( 6) ε xx= =x

r

ε

ε rm = 2

r

( 9) xx= =xr

1 ne ( e ) ∑ ε x=x r ∀ Ω( e) ⊃ x r ∧ Ω(e ) ∈ Ω ( m) ne ( e ) 1 ε rm =1 = ε x(1=)x r + ε x(3=)x r 2

(

εrm =

9

(

) (

)

)

1 ( 6) ε x = x r + ε x(9=)x r 2 Figura 16.7. Matriz de resultados nodales: deformación promedio en cada nudo de una malla de varios materiales.

ε rm =1 =

(

)

Ejemplo 16.4 Construir la matriz de esfuerzos nodales por material TAS() a partir de la matriz o tabla de esfuerzos en los elementos TAO(), la matriz de conectividades ELE() y la matriz de materiales MAT(). La línea de comando utilizada es la siguiente: ORSONM TAS(), TAO(), ELE(), MAT(), NNUD, NMAT

La Figura 16.8 describe la obtención del esfuerzo promedio en el nudo 313 para el material tipo 1. Tal valor es calculado a partir de los esfuerzos en los elementos 653 y 661, los cuales están conectados al nudo 313 y asociados al material 1.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

178

Capítulo 16.

elemento

nudo i

nudo j

nudo k

elemento

Instrucciones de organización de matrices

material

material 1 653 661 313 5

16

39 material 2

elementos finitos que comparten el nudo 313 matriz de materiales en los elementos

matriz de conectividades elemento

nudo i

nudo j

esfuerzo promedio

nudo k nudo

calcular promedio

material 1

material 2

vector de esfuerzos promedio en los nudos (resultado nodal)

matriz de esfuerzos en los elementos (resultado elemental)

Figura 16.8. Ejemplo de la instrucción ORSONM. Esfuerzo en el nudo 313 (resultado nodal) para el material 1, calculado como el promedio de los esfuerzos en los elementos asociados al material 1 que comparten el nudo 313.

16.5. ORNUDE Crea una matriz o tabla que contiene en cada fila los elementos asociados a cada nudo. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan en la Tabla 16.5. Ejemplo 16.5 Crear la matriz de elementos asociados a cada nudo NLE() a partir de la matriz de nudos asociados a cada elemento o matriz de conectividades de la malla presentada en la Figura 16.9 . La línea de comando necesaria es la siguiente:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

179

PEFiCA – Programa de elementos finitos a código abierto

ORNUDE NLE(), ELE(), NNUD, 4 ORNUDE MX(), ELE(), NNUD, NMAE

Argumento

Tipo de variable

Descripción

MX()

Integer (entero)

ELE()

Integer (entero)

NNUD

Matriz creada de elementos asociados a cada nudo. Matriz existente de nudos asociados a cada elemento o matriz de conectividades (Sección 3.4). Número de nudos del problema.

Integer (entero) Optional Integer Cantidad máxima de elementos asociados a un mismo (argumento opcional nudo. Su valor por defecto es NMAE =10 tipo entero) Tabla 16.5. Sintaxis de la instrucción ORNUDE.

NMAE

elemento

nudo i

nudo j

nudo k

nudo l

matriz de nudos asociados a cada elemento o matriz de conectividades 06

03 02

04

01

01

06

05

02

12

09

11

08 03

04

05

07

10

malla de elementos finitos nudo

elementos

matriz de elementos asociados a cada nudo

Figura 16.9. Ejemplo de la instrucción ORNUDE.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

180

Capítulo 16.

Instrucciones de organización de matrices

16.6. ORNLIN Construye una listado de los nudos que hacen parte de un segmento recto entre dos nudos extremos definidos en la tabla de coordenadas. También crea otra lista con la distancia entre el nudo inicial y cada uno de los nudos que componen la línea. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan en la Tabla 16.6. Ejemplo 16.6 Dada la matriz de coordenadas XYZ(), crear el listado de los nudos que hacen parte del segmento de línea definido entre los nudos 25 y 17. Además, crear la lista de distancias entre el nudo inicial 25 y cada uno de los nudos que componen la línea. La Figura 16.10 describe este ejemplo. La línea de comando utilizada es la siguiente: ORNLIN LNU(), DNU(), XYZ(), 25, 17

nudo final

nudo final

línea lista de nudos de la línea

nudo inicial matriz de coordenadas en los nudos

lista de distancias entre el nudo inicial y cada nudo de la línea

nudo inicial

Figura 16.10. Ejemplo de la instrucción ORNLIN.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

181

PEFiCA – Programa de elementos finitos a código abierto

ORNLIN MX(), DX(), XYZ(), NINI,NFIN, TOL

Argumento

Tipo de variable

MX()

Integer (entero)

DX()

Double (real)

XYZ()

Double (real)

NINI

Integer (entero)

NFIN

Número del nudo final de la línea Integer (entero) Optional Double Tolerancia medida como un factor de la longitud del (argumento opcional segmento de línea. Por defecto TOL=0.00. tipo real) Tabla 16.6. Sintaxis de la instrucción ORNLIN.

TOL

Descripción Vector creado que contiene el listado de nudos que hacen parte de la línea. Vector creado que contiene el listado de distancias entre el nudo inicial y cada uno de los nudos de la línea. Matriz existente de coordenadas de los nudos (Sección 3.4). Número del nudo inicial de la línea

16.7. ORNLIX Construye una listado de los nudos que hacen parte de un segmento recto definido entre dos puntos cuya posición puede o no coincidir con los nudos de la malla. También crea otra lista con la distancia entre el punto inicial y cada uno de los nudos que componen la línea. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. ORNLIX MX(), DX(), XYZ(), XLN(), TOL

Argumento

Tipo de variable

MX()

Integer (entero)

DX()

Double (real)

XYZ()

Double (real)

XLN()

Double (real)

TOL

Descripción Vector creado que contiene el listado de nudos que hacen parte de la línea. Vector creado que contiene el listado de distancias entre el nudo inicial y cada uno de los nudos de la línea. Matriz existente de coordenadas de los nudos de la malla (Sección 3.4). Matriz existente de coordenadas de los extremos del segmento de línea. La primera fila contiene las coordenadas x y y del punto inicial y la segunda fila las coordenadas correspondientes del punto final.

Optional Double Tolerancia medida como un factor de la longitud del (argumento opcional segmento de línea. Por defecto TOL=0.00. tipo real) Tabla 16.7. Sintaxis de la instrucción ORNLIX.

Ejemplo 16.7 Dada la matriz de coordenadas XYZ(), crear el listado de los nudos que hacen parte del segmento de línea definido entre las coordenadas (0.00, 0.50) y (0.00, 4.00). Además, crear la lista de distancias entre el punto de coordenadas © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

182

Capítulo 16.

Instrucciones de organización de matrices

(0.00,0.50) y cada uno de los nudos que componen la línea. La siguiente figura describe este ejemplo. punto final (0.00,4.00)

línea lista de nudos de la línea matriz de coordenadas en los nudos de la malla

matriz de coordenadas en los extremos del segmento de línea

lista de distancias entre el nudo inicial y cada nudo de la línea

punto inicial (0.00,0.50)

Figura 16.11. Ejemplo de la instrucción ORNLIX.

La línea de comando utilizada es: ORNLIX LNU(), DNU(), XYZ(), XLN()

16.8. ORELIN Construye una listado de los elementos cuyos lados hacen parte de un segmento definido por dos nudos. También crea otra lista con la distancia entre el nudo inicial y cada uno de los nudos que componen la línea. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

ORELIN MX(), DNU(), XYZ(), ELE(), NINI, NFIN, TOL, TP

Argumento

Tipo de variable

MX()

Integer (entero)

DNU()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

NINI

Integer (entero)

NFIN

Integer (entero) Optional Double (argumento opcional tipo real)

TOL

TP

Descripción Matriz creada que contiene en la primera columna el listado de los elementos que hacen parte de la línea. El contenido de la segunda columna depende del parámetro TP. Vector de distancias desde el nudo inicial del segmento hasta el nudo especificado en la segunda columna de MX() Matriz existente de coordenadas de los nudos (Sección 3.4). Matriz existente de nudos asociados a cada elemento o matriz de conectividades (Sección 3.4). Número del nudo inicial de la línea

Número del nudo final de la línea Tolerancia medida como un factor de la longitud del segmento de línea. Por defecto TOL=0.00.

Tipo de formato de salida: Si TP=0, la columna 2 de la matriz MX() indica el número del lado del elemento que pertenece a la línea. Si TP=1. la columna 2 de la matriz MX() indican el nudo que pertenece a la línea y al elemento. Tabla 16.8. Sintaxis de la instrucción ORELIN.

Optional Integer (argumento opcional tipo entero)

Ejemplo 16.8 Dada la matriz de coordenadas XYZ(), crear el listado de los elementos y los nudos que hacen parte del segmento de línea definido entre los nudos 25 y 17. Además, crear la lista de distancias entre el nudo inicial 25 y cada uno de los nudos que componen la línea. La Figura 16.12 describe este ejemplo. La línea de comando utilizada es la siguiente: ORELIN LEL(), DNU(), XYZ(), ELE(), 25, 17, 0, 1

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

183

184

Capítulo 16.

nudo

coord. x

coord. y

elemento

nudo i

Instrucciones de organización de matrices

nudo j

nudo k

nudo final

matriz de conectividades nudo final

nudo inicial matriz de coordenadas en los nudos elemento

nudo

distancia

línea

lista de nudos de la línea

lista de distancias entre el nudo inicial y cada nudo de la línea

nudo inicial

Figura 16.12. Ejemplo de la instrucción ORELIN.

16.9. ORELIX Construye una listado de los elementos cuyos lados hacen parte de segmento recto definido entre dos puntos cuya posición puede o no coincidir con los nudos de la malla. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan en la Tabla 16.9. Ejemplo 16.9 Dada la matriz de coordenadas XYZ(), crear el listado de los lados de los elementos que hacen parte del segmento de línea definido las coordenadas (0.00,0.50) y (0.00,4.0), como lo describe la siguiente figura:

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

185

PEFiCA – Programa de elementos finitos a código abierto

nudo

coord. x

coord. y

elemento

nudo j

nudo i

nudo k

matriz de conectividades punto final (0.00,4.00) matriz de coordenadas en los nudos

nudo k lado 3

matriz de coordenadas en los extremos del segmento de línea nudo i (inicial) elemento

lado

lado 2 elemento

lado 1

indicador del nudo inicial i

nudo j

línea

lista de nudos de la línea

punto inicial (0.00,0.50)

Figura 16.13. Ejemplo de la instrucción ORELIN.

La línea de comando correspondiente es: ORELIX LNU(), XYZ(), ELE(), XLN()

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

186

Capítulo 16.

Instrucciones de organización de matrices

ORELIX MX(), XYZ(), ELE(), XLN(), TOL

Argumento

Tipo de variable

MX()

Integer (entero)

XYZ()

Double (real)

ELE()

Integer (entero)

XLN()

Double (real)

TOL

16.10.

Descripción Matriz creada que contiene el listado de los elementos y su lado respectivo que hacen parte de un segmento de línea. La primera columna contiene el número del elemento y la segunda indica el número del lado. Matriz existente de coordenadas de los nudos (Sección 3.4). Matriz existente de nudos asociados a cada elemento o matriz de conectividades (Sección 3.4). Matriz existente de coordenadas de los extremos del segmento de línea. La primera fila contiene las coordenadas x y y del punto inicial y la segunda fila las coordenadas correspondientes del punto final.

Optional Double Tolerancia medida como un factor de la longitud del (argumento opcional segmento de línea. Por defecto TOL=0.00. tipo real) Tabla 16.9. Sintaxis de la instrucción ORELIX.

ORXYNU

Extrae de la matriz de coordenadas o de cualquier matriz de resultados nodales, los respectivos valores para los nudos relacionados en un vector o lista predefinida. Crea una matriz o tabla donde el número de filas corresponde con el número de filas de la lista de nudos y el número de columnas coincide con el número de columnas de la matriz de coordenadas o de valores nodales. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. ORXYNU MX(), XYZ(), LNU()

Argumento MX() XYZ() LNU()

Tipo de variable

Descripción Matriz creada que contiene las coordenadas o los resultados nodales en los nudos que hacen parte de la Double (real) lista LNU() Matriz existente de coordenadas de los nudos o de Double (real) valores nodales (Sección 3.4). Integer (entero) Vector existente que contiene una lista de nudos. Tabla 16.10. Sintaxis de la instrucción ORXYNU.

Ejemplo 16.10 Extraer los valores nodales de esfuerzo de la tabla NXX() para los nudos de la lista LNU() , y guardarlos en la tabla NAB().

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

187

PEFiCA – Programa de elementos finitos a código abierto

nudo

valor nodal

número del nudo

nudo

valor nodal

lista de nudos matriz de resultados nodales en los nudos relacionados en la lista de nudos

matriz de resultados nodales

Figura 16.14. Ejemplo de la instrucción ORXYNU.

La línea de comando utilizada es la siguiente: ORXYNU NAB(), NXX(), LNU()

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 17 Instrucciones para importar y exportar matrices Este capítulo describe las instrucciones que permiten importar y exportar matrices a un archivo plano cuyo formato es el siguiente: •

La primera línea indica el número de filas y el número de columnas de la matriz almacenada separados por coma.



La segunda línea contiene los coeficientes de la fila número 1 de la matriz almacenada separados entre sí por comas.



Las líneas siguientes contienen los coeficientes de las filas sucesivas de la matriz.



Cada uno de los coeficientes se escribe en notación científica con un formato de la forma +0.00000000E+00 si se trata de una matriz de reales y en formato 0000 si se trata de una matriz de enteros.

La Figura 17.1(b) presenta, en el Bloc de notas, el archivo plano que contiene los coeficientes de la matriz incluida en la hoja de cálculo de Microsoft Excel y mostrada en la Figura 17.1(a). La Tabla 2.16 resume el objetivo de las instrucciones de este capítulo.

190

Capítulo 17.

Instrucciones para importar y exportar matrices

nombre del archivo

número de columnas columna #1

número de filas, número de columnas

columna #1

columna #2

columna #2

número de filas fila #1

nombre de la matriz fila #1

fila #23 (b) Archivo plano visualizado desde el Bloc de notas de Microsoft Windows fila #23

(a) Hoja de cálculo visualizada desde Microsoft Excel

Figura 17.1. Instrucciones para importar y exportar matrices: (a) hoja de cálculo visualizada desde Microsoft Excel, (b)archivo plano visualizado desde el Bloc de notas.

17.1. IOEXPR Esta instrucción permite exportar una matriz real existente a un archivo plano en el formato indicado en la Figura 17.1(b). La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

IOEXPR MX(), FILE

Argumento

Tipo de variable

MX()

Double (real)

FILE

Descripción

Matriz real existente. Nombre del archivo sin extensión que contendrá a la matriz MX(). Este archivo estará ubicado en la carpeta String (caracteres) del libro de Excel desde donde se ejecute la instrucción. La extensión del archivo será asignada automáticamente como .txt. Tabla 17.1. Sintaxis de la instrucción IOEXPR.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

191

PEFiCA – Programa de elementos finitos a código abierto

Ejemplo 17.1 Dada la matriz de coordenadas de los nudos XYZ() la instrucción indicada a continuación construye el archivo XYZ.txt que contiene los coeficientes de la matriz existente. La Figura 17.1 muestra la matriz existente y el archivo creado en este ejemplo. IOEXPR XYZ(),"XYZ"

17.2. IOEXPI Esta instrucción permite exportar una matriz entera existente a un archivo plano en el formato indicado en la Figura 17.1(b). La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. IOEXPI MX(), FILE

Argumento Tipo de variable Descripción MX()

FILE

Integer (entera)

Matriz entera existente. Nombre del archivo sin extensión que contendrá a la matriz String (caracteMX(). Este archivo estará ubicado en la carpeta del libro de res) Excel desde donde se ejecute la instrucción. La extensión del archivo será asignada automáticamente como .txt. Tabla 17.2. Sintaxis de la instrucción IOEXPI.

Ejemplo 17.2 Dada la matriz de conectividades de los elementos ELE(), la instrucción indicada a continuación construye el archivo ELE.txt que contiene los coeficientes de la matriz existente. IOEXPI ELE(),"ELE"

La Figura 17.2 muestra la matriz existente y el archivo creado en este ejemplo.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

192

Capítulo 17.

Instrucciones para importar y exportar matrices

(b) Archivo plano visualizado desde el Bloc de notas de Microsoft Windows

(a) Hoja de cálculo visualizada desde Microsoft Excel

Figura 17.2. Ejemplo de la instrucción IOEXPI.

17.3. IOEXPD Esta instrucción permite exportar un vector existente de datos enteros a un archivo plano en el siguiente formato: •

La primera línea contiene el primer coeficiente del vector y sucesivamente se almacena un coeficiente por línea.



Los coeficientes son cantidades enteras las cuales se escriben sin un formato específico.



Se omite el número de filas del vector.

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. IOEXPD MX(), FILE

Argumento

Tipo de variable

MX()

Integer(entera)

FILE

Descripción

Vector existente. Nombre del archivo sin extensión que contendrá a la matriz MX(). Este archivo estará ubicado en la carpeta String (caracteres) del libro de Excel desde donde se ejecute la instrucción. La extensión del archivo será asignada automáticamente como .txt. Tabla 17.3. Sintaxis de la instrucción IOEXPD.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

193

PEFiCA – Programa de elementos finitos a código abierto

Ejemplo 17.3 Dado el vector de parámetros gráficos GRA(), la instrucción indicada a continuación construye el archivo GRA.txt que contiene los coeficientes del vector existente. IOEXPD GRA(),"GRA"

La Figura 17.3 muestra la matriz existente y el archivo creado en este ejemplo.

(b) Archivo plano visualizado desde el Bloc de notas de Microsoft Windows

(a) Hoja de cálculo visualizada desde Microsoft Excel

Figura 17.3. Ejemplo de la instrucción IOEXPD.

17.4. IOELDR Esta instrucción permite exportar una matriz real existente a un archivo plano en el formato indicado en la Figura 17.1(b) para un paso de carga específico. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan en la Tabla 17.4. Ejemplo 17.4 Dada la matriz de valores elementales de esfuerzos SXX() en el paso de carga ILD=5, la instrucción indicada a continuación exporta la matriz al archivo FIE005.txt. IOELDR SXX(), "FIE", ILD

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

194

Capítulo 17.

Instrucciones para importar y exportar matrices

IOELDR MX(), FILE, ILD

Argumento

Tipo de variable

MX()

Double (real)

FILE

ILD

Descripción

Matriz real existente. Nombre del archivo sin extensión que contendrá a la matriz MX(). Este archivo estará ubicado en la carpeta del libro de Excel desde donde se ejecute la instrucción. String (caracteres) El nombre del archivo se completa con el número del paso ILD en formato 000 seguido de la extensión .txt. Número del paso de carga (o de pseudo-tiempo). Integer (entera) Tabla 17.4. Sintaxis de la instrucción IOELDR.

17.5. IOEXPT Esta instrucción permite exportar una cadena de caracteres a la primera línea de un archivo plano. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. IOEXPT TITU, FILE

Argumento

Tipo de variable

TITU

String (caracteres)

FILE

Descripción

Cadena de caracteres existente. Nombre del archivo sin extensión que contendrá la cadena de caracteres TITU. Este archivo estará ubicaString (caracteres) do en la carpeta del libro de Excel desde donde se ejecute la instrucción. El nombre del archivo se completa automáticamente con la extensión .txt. Tabla 17.5. Sintaxis de la instrucción IOEXPT.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 18 Instrucciones internas de uso común Este capítulo describe las subrutinas misceláneas del programa, generalmente utilizadas por las demás instrucciones. Estas rutinas tienen el prefijo PB y están contenidas en el módulo MdPB para facilitar su ubicación en el código como lo indica la Tabla 2.19.

18.1. PBDEMR Extrae el número de filas y de columnas de una matriz real existente con dimensiones definidas. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. PBDEMR MX(), NF, NC

Argumento MX() NF NC

Tipo de variable

Descripción Parámetro de entrada que corresponde a la matriz real Double (real) existente de dimensiones definidas M. Parámetro de salida que indica el número de filas de Integer (entero) la matriz M. Parámetro de salida que indica el número de columInteger (entero) nas de la matriz M. Tabla 18.1. Sintaxis de la instrucción PBDEMR.

18.2. PBDEMI Extrae el número de filas y de columnas de una matriz entera existente con dimensiones definidas. La sintaxis de la instrucción se indica en la Tabla 18.2.

18.3. PBATRI Calcula el área de un triangulo a partir de las coordenadas de sus extremos. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan en la Tabla 18.3.

196

Capítulo 18.

Instrucciones internas de uso común

PBDEMI MX(), NF, NC

Argumento MX() NF NC

Tipo de variable

Descripción Parámetro de entrada que corresponde a la matriz Integer (entero) entera existente de dimensiones definidas M. Parámetro de salida que indica el número de filas de Integer (entero) la matriz M. Parámetro de salida que indica el número de columInteger (entero) nas de la matriz M. Tabla 18.2. Sintaxis de la instrucción PBDEMI. [variable]= PBATRI(X(), Y())

Argumento

Tipo de variable

X()

Double (real)

Y()

Double (real)

PBATRI

Double (real)

Descripción Vector que contiene las coordenadas x de los extremos del triangulo: X(1), X(2), X(3). Vector que contiene las coordenadas y de los extremos del triangulo: Y(1), Y(2), Y(3). Área del triangulo definido por las coordenadas X(), Y()

Tabla 18.3. Sintaxis de la instrucción PBATRI.

18.4. PBDIST Calcula la distancia entre dos nudos en el espacio bidimensional a partir de la matriz o tabla de coordenadas en los nudos. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= PBDIST(XYZ(), NI, NJ)

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz o tabla de coordenadas en los nudos.

NI

Integer (entero)

Número del nudo inicial que define el segmento.

NJ

Integer (entero)

PBDIST

Número del nudo final que define el segmento. Longitud del segmento recto definido entre los nudos Double (real) NI y NJ. Tabla 18.4. Sintaxis de la instrucción PBDIST.

18.5. PBCOSD Calcula los cosenos directores que describen la dirección de un segmento recto definido entre dos nudos a partir de las coordenadas de los mismos. En otras palabras, obtiene las componentes de un vector unitario n cuya dirección está definida por un segmento recto. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

197

PEFiCA – Programa de elementos finitos a código abierto

[variable]= PBCOSD(XYZ(), NI, NJ, TP)

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz o tabla de coordenadas en los nudos.

NI

Integer (entero)

Número del nudo inicial que define el segmento.

NJ

Integer (entero)

Número del nudo final que define el segmento.

TP

Integer (entero)

PBCOSD

Double (real)

• Si TP=0, PBCOSD contiene la componente en dirección x del vector unitario nx = cos(θ ) . • Si TP=1, PBCOSD contiene la componente en dirección y del vector unitario n y = sin(θ ) .

Una de las componentes del vector unitario n cuya dirección está determinada por el segmento recto entre los nudos NI y NJ. Tabla 18.5. Sintaxis de la instrucción PBCOSD.

18.6. PBDIAG Llena los coeficientes de la diagonal inferior de una matriz cuadrada a partir de los coeficientes de la diagonal superior convirtiéndola en una matriz simétrica. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. PBDIAG MX(), NF

Argumento MX()

MX() NF

Tipo de variable

Descripción Como parámetro de entrada corresponde a la matriz cuadrada existente con coeficientes definidos en la Double (real) diagonal superior. Como parámetro de salida corresponde a la matriz Double (real) simétrica la cual se construye llenando los coeficientes de la diagonal inferior. Parámetro de entrada que indica el número de filas de Integer (entero) la matriz. Tabla 18.6. Sintaxis de la instrucción PBDIAG.

18.7. PBCOEL Calcula cuatro factores de elasticidad para condición plana de esfuerzos y plana de deformaciones útiles en el cálculo de la matriz de rigidez de los elementos de elasticidad plana. Se definen E1, E2, E3 y E4 como factores de elasticidad en condición plana de esfuerzos, de la forma:

E1 =

(1 − ν ) (1 − 2ν )

, E2 =

1 (1 − 2ν )

, E3 =

1 , E 4 = (1 + ν ) 2

(18.1)

donde ν corresponde a la relación de Poisson del material. En cambio, en condición plana de deformaciones los factores son iguales a: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

198

Capítulo 18.

E1 = 1 , E 2 = ν

, E3 =

(1 − ν ) 2

Instrucciones internas de uso común

, E 4 = (1 − ν 2 )

(18.2)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. PBCOEL TP, NU, E1, E2, E3, E4

Argumento

Tipo de variable

Descripción

TP

Integer (entero)

NU

Double (real)

• Si TP=0, calcula los factores para una condición plana de esfuerzos. • Si TP=1, calcula los factores para una condición plana de deformaciones. Relación de Poisson

E1

Double (real)

Factor calculado E1

E2

Double (real)

Factor calculado E2

E3

Double (real)

Factor calculado E3

E4

Double (real) Factor calculado E4 Tabla 18.7. Sintaxis de la instrucción PBCOEL.

18.8. PBREDO Redondea un escalar real según el número de cifras significativas establecido. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. [variable]= PBREDO(V, N)

Argumento

Tipo de variable

Descripción

V

Double (real)

Escalar que se desea redondear

N

Integer (entero)

Número cifras significativas consideradas.

PBREDO

Double (real) Escalar redondeado Tabla 18.8. Sintaxis de la instrucción PBREDO.

18.9. PBDINU Calcula la distancia entre un nudo y un segmento recto definido por dos nudos. La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación.

[variable]= PBDINU(XYZ(), NINI, NFIN, NCAL)

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

199

PEFiCA – Programa de elementos finitos a código abierto

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz o tabla de coordenadas en los nudos.

NINI

Integer (entero)

Número del nudo inicial que define el segmento.

NFIN

Integer (entero)

NCAL PBDINU

18.10.

Número del nudo final que define el segmento. Número del nudo desde donde se mide la distancia al Integer (entero) segmento. Distancia entre el nudo NCAL y el segmento recto Double (real) definido entre NINI y NFIN. Tabla 18.9. Sintaxis de la instrucción PBDINU.

PBPGAU

Construye una tabla que contiene las constantes de ponderación en el método de integración numérica de la cuadratura de Gauss (Zienkiewicz 1980; Cook, Malkus et al. 1989; Hughes 2000). La sintaxis de la función y la descripción de sus respectivos argumentos se presentan a continuación. PBPGAU NPUN, NDIM, MX()

Argumento NPUN NDIM MX()

Tipo de variable

Descripción Número de puntos de Gauss sobre una dirección. La Integer (entero) instrucción considera 3 puntos como máximo. Número de dimensiones del problema. La instrucción Integer (entero) considera 2 dimensiones como máximo. Tabla de constantes de ponderación en la integración Double (real) numérica de la cuadratura de Gauss. Tabla 18.10. Sintaxis de la instrucción PBPGAU.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 19 Instrucciones gráficas Este capítulo describe las instrucciones dedicadas a la generación de gráficas de cantidades de interés sobre la malla de elementos finitos. Las limitaciones del lenguaje Visual Basic for Applications para la presentación gráfica de los resultados hizo necesario el desarrollo de una aplicación independiente en otro lenguaje de programación y fuera del entorno de Microsoft Excel. Por lo tanto, al ser una programa previamente compilado, el usuario no tiene acceso a sus las líneas de código. En contravía con la filosofía del programa PEFiCA, esté grupo de instrucciones son las únicas que no presentan un código abierto. Archivo

GRAGEO GRAFIF GRAFIE GRAFIM GRAMAT Contenido Matriz de coordenaXYZ.txt      das de los nudos. Matriz de conectiviELE.txt      dades. Vector de tipo de MAT.txt   material. Vector de resultados FIF.txt   nodales. Vector de resultados FIE.txt  elementales. Matriz de parámeGRA.txt      tros gráficos. Tabla 19.1. Archivos de entrada de datos para el programa PEFI-Graf 1.0 y su utilización en las rutinas del programa PEFiCA 1.0.

En el interior de las subrutinas presentadas en este capítulo se ejecuta una aplicación especial adjunta al programa denominado PEFI-Graf 1.0 la cual genera diferentes tipos de gráficos a partir de los resultados en los nudos o en los elementos de la malla. Para utilizar dicha aplicación es necesario que el archivo ejecutable PEFIGRAF.exe esté ubicado en la misma carpeta donde se encuentre el libro de Microsoft Excel con las rutinas del programa. Los datos de entrada son archivos de texto que contienen la topología y los resultados de la malla de elementos finitos, como se indica en la Tabla 19.1. A excepción de GRA.txt, los archivos de texto deben mantener la siguiente estructura para que sean leídos por el programa PEFI-Graf 1.0, (Figura 19.1):

202

Capítulo 19.

Instrucciones gráficas

número de columnas número de filas fila 1

fila 12

columna 1

columna 2

archivo de texto que contienen la matriz de coordenadas de los nudos

formato de salida de datos de la matriz de coordenadas de los nudos

Figura 19.1. Estructura de un archivo de texto que contiene la matriz de coordenadas de los nudos.



En la primera línea se indica el número de filas y el número de columnas separados por una coma.



La segunda línea contiene los coeficientes de la primera fila de la matriz separados por coma.



De forma secuencial, cada línea contiene los coeficientes de una fila de la matriz.

El archivo GRA.txt contiene los parámetros generales del gráfico que será generado por el programa PEFI-Graf 1.0. Estos datos han sido guardados en la matriz de parámetros gráficos GRA() del programa PEFiCA. La Tabla 19.2 describe cada uno de estos parámetros. El primer coeficiente de la matriz de parámetros gráficos identifica el tipo de resultado que se desea dibujar seleccionado de la Tabla 19.3. En la Tabla 19.2, los códigos que determinan el color de una propiedad están definidos por el formato de color de Microsoft Basic presentado en la Tabla 19.4. Este formato utiliza 16 colores presentados como números enteros entre 0 y 15. Estas subrutinas tienen el prefijo GRA y están contenidas en el módulo MdGRA para facilitar su ubicación en el código como lo indica la Tabla 2.20.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

203

PEFiCA – Programa de elementos finitos a código abierto

Coeficiente de la matriz

Posición en el archivo (# línea)

Valor por defecto

Descripción

Identificador del tipo de gráfico (Tabla 19.3). Color del fondo de la ventana gráfica (Tabla GRA(2,1) 2 0 19.4). Color de las etiquetas de numeración de nudos GRA(3,1) 3 15 y elementos (Tabla 19.4). GRA(4,1) 4 12 Color de los nudos de la malla (Tabla 19.4). Color de las líneas de delimitan a los elemenGRA(5,1) 5 14 tos de la malla (Tabla 19.4). GRA(6,1) 6 2 Tipo de puntero. Estado de la ventana. • Si GRA(7,1)=0 ventana normal. GRA(7,1) 7 2 • Si GRA(7,1)=1 ventana minimizada. • Si GRA(7,1)=2 ventana maximizada. Número de iso líneas dibujadas (múltiplo de GRA(8,1) 8 40 4). Número de etiquetas de las iso-líneas dibujaGRA(9,1) 9 20 das (múltiplo de 4). Número del primer nudo numerado. GRA(10,1) 10 -1 Si GRA(10,1)=-1 se numeran todos los nudos. GRA(11,1) 11 -1 Número del último nudo numerado. Número del primer elemento numerado. GRA(12,1) 12 -1 Si GRA(12,1)=-1 se numeran todos los elementos. Número del último elemento numerado. • Si GRA(13,1)=-1 se numeran todos los elementos. GRA(13,1) 13 -1 • Si GRA(13,1)=-2 se numeran todos los elementos e indica la dirección del nudo inicial. Indicador del tipo de gama de tonos para los resultados. • Si GRA(14,1)=0 se utiliza la escala rojoGRA(14,1) 14 0 amarillo-verde-cian-azul. • Si GRA(14,1)=1 se utiliza la escala de grises (blanco-negro). Tabla 19.2. Parámetros gráficos de la matriz GRA() para el programa PEFiCA 1.0 o del archivo GRA.txt para el programa PEFiCAGraf 1.0. GRA(1,1)

1

2

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

204

Capítulo 19.

GRA(1,1)

Instrucciones gráficas

Tipo de gráfico

1

Nudos.

2

Nudos y elementos. Resultado nodal de una función de aproximación con isolíneas. Resultado elemental constante de una función de aproximación con iso-líneas. Resultado nodal de una función de aproximación con regiones llenas. Resultado elemental de la derivada de una función de aproximación con regiones llenas. Resultado nodal por material de una función de aproximación con iso-líneas. Resultado nodal por material de una función de aproximación con regiones llenas. Tabla 19.3. Identificador del tipo de gráfico.

3 4 6 7 8 9

Color

Número

Negro

0

Gris

8

Azul

1

Azul claro

9

Verde

2

Verde claro

10

Aguamarina

3

Aguamarina claro

11

Rojo

4

Rojo claro

12

Fucsia

5

Fucsia claro

13

Amarillo

6

Amarillo claro

14

Blanco

Color

7 Blanco brillante Tabla 19.4. Formato de color de Microsoft Basic.

Número

15

19.1. GRAFDE Crea la matriz de parámetros gráficos con los valores por defecto de cada uno de los coeficientes indicados en la tercera columna de la Tabla 19.2. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRAFDE GRA()

Argumento GRA()

Tipo de variable

Descripción Matriz de parámetros gráficos creada con los valores Integer (entero) por defecto definidos en la Tabla 19.2. Tabla 19.5. Sintaxis de la instrucción GRAFDE.

19.2. GRAFIL Crea un archivo GRA.TXT que contiene los parámetros gráficos almacenados en un vector existente GRA(). © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

205

PEFiCA – Programa de elementos finitos a código abierto

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRAFIL GRA()

Argumento

Tipo de variable

Descripción

GRA()

Matriz existente que contiene los parámetros gráficos. Integer (entero) Tabla 19.6. Sintaxis de la instrucción GRAFIL.

19.3. GRAGEO Dibuja la geometría de la malla de elementos finitos a partir de la matriz de coordenadas de los nudos y la matriz de conectividades. Indica la numeración tanto de nudos como de elementos. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRAGEO XYZ(), ELE(), GRA(), TG, TITU

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz de coordenadas de los nudos.

ELE()

Integer (entero)

Matriz de conectividades.

GRA()

Integer (entero)

TG

TITU

Matriz de parámetros gráficos (Tabla 19.2). Identificador del tipo de gráfico. Optional Integer (ar- • Si TG=1 dibuja los nudos de la malla. gumento opcional tipo • Si TG=2 dibuja los nudos y los elementos de la entero) malla (por defecto). En la rutina se asigna a GRA(1,1)=TG Optional String (arTítulo de la ventana del gráfico. Si se omite este pagumento opcional tipo rámetro la ventana tendrá un título por defecto relacadena de caracteres) cionado con la gráfica presentada. Tabla 19.7. Sintaxis de la instrucción GRAGEO.

Ejemplo 19.1 Dada la matriz de coordenadas de los nudos XYZ() y la matriz de conectividades ELE(), dibujar y numerar: a) los nudos de la malla de elementos finitos, b) los nudos y los elementos de la malla, indicando el nudo inicial de cada elemento. Los coeficientes de la matriz de parámetros gráficos son: GRA()

(16x1) C1

F1

003

F2 F3 F4 F5 F6 F7

015 000 012 000 000 000

Tipo de gráfico (será asignado en la instrucción GRAGEO de acuerdo con el valor de TG). Color del fondo de la ventana gráfica = blanco brillante. Color de las etiquetas de numeración = negro. Color de los nudos de la malla = rojo claro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

206

Capítulo 19. F8 F9

040 020

F10

-001

F11

-001

F12

-001

F13

-002

F14

000

Instrucciones gráficas

Número de iso-líneas dibujadas (no aplica) Número de etiquetas de las iso-líneas dibujadas (no aplica) Número del primer nudo numerado = se numeran todos los nudos. Número del último nudo numerado = se numeran todos los nudos. Número del primer elemento numerado = se numeran todos los elementos. Número del último elemento numerado = se numeran todos los elementos e indica la dirección del nudo inicial. Indicador del tipo de gama de tonos para los resultados (no aplica)

(a) Ventana gráfica de la geometría del problema: nudos de la malla

(b) Ventana gráfica de la geometría del problema: nudos y elementos de la malla

Figura 19.2. Ejemplo de la instrucción GRAGEO.

Si se ejecuta la instrucción: GRAGEO XYZ(), ELE(), GRA(), 1

el coeficiente GRA(1,1) toma un valor de 1 y se activa la ventana gráfica con los nudos de la malla como lo indica la Figura 4.1(a). En cambio, si se ejecuta la instrucción: GRAGEO XYZ(), ELE(), GRA(), 2

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

207

el coeficiente GRA(1,1) toma un valor de 2 y se activa la ventana gráfica con los nudos y los elementos de la malla como lo indica la Figura 4.1(b).

19.4. GRAMAT Dibuja la malla de elementos finitos y representa el valor de una cantidad entera definida en cada elemento (como por ejemplo el tipo de material), con un color especificado. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRAMAT XYZ(), ELE(), MAT(), GRA(), COL(), TITU

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz de coordenadas de los nudos.

ELE()

Integer (entero)

MAT() GRA() COL() TITU

Matriz de conectividades. Matriz de tipo de material por elemento u otra variaInteger (entero) ble entera definida por cada elemento. Matriz de parámetros gráficos (Tabla 19.2). Integer (entero) Tabla de colores por cada valor entero de MAT() forInteger (entero) mato RGB. Optional String (arTítulo de la ventana del gráfico. Si se omite este pagumento opcional tipo rámetro la ventana tendrá un título por defecto relacadena de caracteres) cionado con la gráfica presentada. Tabla 19.8. Sintaxis de la instrucción GRAMAT.

Ejemplo 19.2 Dada la matriz de coordenadas de los nudos XYZ(), la matriz de conectividades ELE(), y la matriz de tipo de material MAT(), dibujar la malla de elementos diferenciados por su tipo de material. Los coeficientes de la matriz de parámetros gráficos son: GRA()

(16x1) C1

F1

003

F2 F3 F4 F5 F6 F7 F8 F9

015 000 000 000 000 000 040 020

F10

000

F11

000

F12

000

F13

000

Tipo de gráfico (será asignado en la instrucción GRAMAT de acuerdo con el valor de TG). Color del fondo de la ventana gráfica = blanco brillante. Color de las etiquetas de numeración = negro. Color de los nudos de la malla = negro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal No aplica No aplica Número del primer nudo numerado = no se numeran los nudos. Número del último nudo numerado = no se numeran los nudos. Número del primer elemento numerado = no se numeran los elementos. Número del último elemento numerado = no se numeran los

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

208

Capítulo 19.

F14

000

Instrucciones gráficas

elementos. No aplica

Si se ejecuta la instrucción: GRAMAT XYZ(), ELE(), MAT(), GRA(), COL()

el coeficiente GRA(1,1) toma un valor de 5 y se activa la ventana gráfica indicada en la Figura 19.3 .

material

rojo

verde

azul material 1 material 2

Figura 19.3. Ejemplo de la instrucción GRAMAT.

19.5. GRAFIF Dibuja los resultados nodales de una cantidad o función de aproximación definida por el vector de valores nodales, la cual es interpolada en el interior de cada elemento mediante sus funciones de forma. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

GRAFIF XYZ(), ELE(), FIF(), GRA(), TG, TITU

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz de coordenadas de los nudos.

ELE()

Integer (entero)

FIF() GRA()

TG

TITU

Matriz de conectividades. Vector de valores nodales. Indica la cantidad de inteDouble (real) rés en cada nudo que se desea dibujar. Integer (entero) Matriz de parámetros gráficos (Tabla 19.2). Identificador del tipo de gráfico. • Si TG=3 dibuja los resultados nodales con isoOptional Integer (arlíneas (por defecto). gumento opcional tipo • Si TG=6 dibuja los resultados nodales con regioentero) nes llenas. En la rutina se asigna a GRA(1,1)=TG Optional String (arTítulo de la ventana del gráfico. Si se omite este pagumento opcional tipo rámetro la ventana tendrá un título por defecto relacadena de caracteres) cionado con la gráfica presentada. Tabla 19.9. Sintaxis de la instrucción GRAFIF.

Ejemplo 19.3 Dada la matriz de coordenadas de los nudos XYZ() y la matriz de conectividades ELE() de una viga, dibujar los resultados nodales en la malla definidos por el vector de la componente σ xx esfuerzos promedio en los nudos NXX(), presentado de dos formas distintas: a) mediante iso-líneas , b) mediante regiones llenas. Los coeficientes de la matriz de parámetros gráficos GRA() son: GRA()

(16x1) C1

F1

003

F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12

015 000 012 000 000 000 040 020 -001 -001 -001

F13

-002

F14

000

Tipo de gráfico (será asignado en la instrucción GRAFIF de acuerdo con el valor de TG). Color del fondo de la ventana gráfica = blanco brillante. Color de las etiquetas de numeración = negro. Color de los nudos de la malla = rojo claro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal Número de iso-líneas dibujadas Número de etiquetas de las iso-líneas dibujadas Número del primer nudo numerado = se numeran todos los nudos. Número del último nudo numerado = se numeran todos los nudos. Número del primer elemento numerado = se numeran todos los elementos. Número del último elemento numerado = se numeran todos los elementos, sin embargo para GRAFIF no se indica la dirección del nudo inicial. Indicador del tipo de gama de tonos para los resultados = escala rojoamarillo-verde-cian-azul.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

209

210

Capítulo 19.

Instrucciones gráficas

(a) Ventana gráfica de resultados nodales dibujados con iso-líneas

(b) Ventana gráfica de resultados nodales dibujados con regiones llenas

Figura 19.4. Ejemplo de la instrucción GRAFIF.

Si se ejecuta la instrucción: GRAFIF XYZ(), ELE(), NXX(), GRA(), 3

el coeficiente GRA(1,1) toma un valor de 3 y se activa la ventana gráfica indicada en la Figura 19.4(a). En cambio, si se ejecuta la instrucción: GRAFIF XYZ(), ELE(), NXX(), GRA(), 6

el coeficiente GRA(1,1) toma un valor de 6 y se activa la ventana gráfica indicada en la Figura 19.4(b).

19.6. GRAFIM Dibuja los resultados nodales de una cantidad o función de aproximación definida por el vector de valores nodales, la cual es interpolada en el interior de los elementos finitos del © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

211

mismo material. A diferencia de la instrucción GRAFIF, esta subrutina presenta los resultados nodales de cada material por separado. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRAFIM XYZ(), ELE(), MAT(),FIF(), GRA(), TG, TITU

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz de coordenadas de los nudos.

ELE()

Integer (entero)

Matriz de conectividades.

MAT()

Integer (entero)

FIF() GRA()

TG

TITU

Vector de tipo material por elemento. Matriz de resultados nodales por material. Cada Double (real) columna contiene los resultados nodales para un material específico. Integer (entero) Matriz de parámetros gráficos (Tabla 19.2). Identificador del tipo de gráfico. • Si TG=8 dibuja los resultados nodales con isoOptional Integer (arlíneas (por defecto). gumento opcional tipo • Si TG=9 dibuja los resultados nodales con regioentero) nes llenas. En la rutina se asigna a GRA(1,1)=TG Optional String (arTítulo de la ventana del gráfico. Si se omite este pagumento opcional tipo rámetro la ventana tendrá un título por defecto relacadena de caracteres) cionado con la gráfica presentada. Tabla 19.10. Sintaxis de la instrucción GRAFIM

La matriz de resultados nodales por material contiene los valores promedio en los nudos de la malla describiendo una función continua en el interior de cada grupo de elementos finitos del mismo material. La instrucción ORSONM permite obtener dicha matriz. Ejemplo 19.4 Dada la matriz de coordenadas de los nudos XYZ(), la matriz de conectividades ELE() y la matriz de materiales MAT(), dibujar los resultados nodales por material en la malla definidos en el vector TAS(), presentado de dos formas distintas: a) mediante iso-líneas , b) mediante regiones llenas. Los coeficientes de la matriz de parámetros gráficos GRA() son: GRA()

(16x1) C1

F1

003

F2 F3 F4 F5 F6 F7 F8 F9 F10

015 000 000 000 000 000 040 020 000

Tipo de gráfico (será asignado en la instrucción GRAFIM de acuerdo con el valor de TG). Color del fondo de la ventana gráfica = blanco brillante. Color de las etiquetas de numeración = negro. Color de los nudos de la malla = negro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal Número de iso-líneas dibujadas Número de etiquetas de las iso-líneas dibujadas Número del primer nudo numerado = no se numeran los

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

212

Capítulo 19.

F11

000

F12

000

F13

000

F14

000

Instrucciones gráficas

nudos. Número del último nudo numerado = no se numeran los nudos. Número del primer elemento numerado = no se numeran los elementos. Número del último elemento numerado = no se numeran los elementos. Indicador del tipo de gama de tonos para los resultados = escala rojo-amarillo-verde-cian-azul.

Si se ejecuta la instrucción: GRAFIM XYZ(), ELE(), MAT(), TAS(), GRA(), 8

el coeficiente GRA(1,1) toma un valor de 8 y se activa la ventana gráfica indicada en la Figura 19.5(b). En cambio, si se ejecuta la instrucción: GRAFIM XYZ(), ELE(), MAT(), TAS(), GRA(), 9

el coeficiente GRA(1,1) toma un valor de 9 y se activa la ventana gráfica indicada en la Figura 19.5(c). En un problema como este donde hay dos o más materiales diferentes, los resultados nodales corresponden al promedio de la cantidad de interés en los elementos del mismo material. Si en la evaluación del promedio no se considera la diferencia entre los materiales, los resultados nodales presentados serán diferentes, como se muestra en la Figura 19.6.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

213

PEFiCA – Programa de elementos finitos a código abierto

(a) malla de elementos finitos

material 1 material 2

(b) resultado nodal por material dibujado con iso-líneas

(c) resultado nodal por material dibujado con regiones llenas

Figura 19.5. Ejemplo de la instrucción GRAFIM.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

214

Capítulo 19.

(a) malla de elementos finitos

material 1 material 2

Instrucciones gráficas

(b) resultado nodal por material

material 1 material 2

(d) detalle de la malla de elementos finitos

(c) resultado nodal considerando un solo material

(e) detalle del resultado nodal por material

(f) detalle del resultado nodal considerando un solo material

Figura 19.6. Comparación entre las instrucciones GRAFIM y GRAFIF.

19.7. GRAFIE Dibuja los resultados elementales de una cantidad o función de aproximación definida por una matriz de valores en el interior de cada elemento. La instrucción permite presentar los resultados de dos formas distintas. La primera, toma de la matriz de valores elementales una cantidad que considera constante para todos los puntos del interior del elemento. La segunda, toma la cantidad que se desea dibujar en los nudos de cada elemento y con ellos obtiene los valores en su interior interpolándolo mediante las funciones de forma. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

GRAFIE XYZ(), ELE(), FIE(), GRA(), TG, TITU

Argumento

Tipo de variable

Descripción

XYZ()

Double (real)

Matriz de coordenadas de los nudos.

ELE()

Integer (entero)

FIE() GRA()

TG

TITU

Matriz de conectividades. Matriz de valores elementales. Indica la cantidad de Double (real) interés que se desea dibujar en cada elemento. Integer (entero) Matriz de parámetros gráficos (Tabla 19.2). Identificador del tipo de gráfico. • Si TG=4 considera un valor constante de la cantidad de interés dentro del elemento. Tal valor se toma de la primera columna de la matriz de valores elementales FIE() (por defecto). • Si TG=7 considera una variación de la cantidad de Optional Integer interés dentro del elemento, definida por la inter(argumento opcional polación de los valores en los nudos mediante las tipo entero) funciones de forma. Requiere que cada fila de la matriz de valores elementales contenga el valor de la función de interés en los nudos de un elemento. Esta opción no es aplicable a elementos triangulares lineales, donde las derivadas de las funciones de forma en su interior son constantes. En la rutina se asigna a GRA(1,1)=TG Optional String (arTítulo de la ventana del gráfico. Si se omite este pagumento opcional tipo rámetro la ventana tendrá un título por defecto relacadena de caracteres) cionado con la gráfica presentada. Tabla 19.11. Sintaxis de la instrucción GRAFIE.

Ejemplo 19.5 Dada la matriz de coordenadas de los nudos XYZ() y la matriz de conectividades ELE(), dibujar los resultados elementales en la malla definidos por la matriz de la componente σ xx esfuerzos en los elementos SXX(), presentado de dos formas distintas: a) considerando un valor constante de σ xx en el elemento definido por la primera columna de la matriz SXX(), b) considerando la variación de σ xx en el interior del elemento obtenida de la interpolación de los valores calculados en los nudos . Los coeficientes de la matriz de parámetros gráficos GRA() son: GRA()

(16x1) C1

F1

003

F2 F3 F4 F5 F6 F7 F8 F9 F10

015 000 012 000 000 000 040 020 -001

Tipo de gráfico (será asignado en la instrucción GRAFIE de acuerdo con el valor de TG). Color del fondo de la ventana gráfica = blanco brillante. Color de las etiquetas de numeración = negro. Color de los nudos de la malla = rojo claro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal Número de iso-líneas dibujadas (no aplica) Número de etiquetas de las iso-líneas dibujadas (no aplica) Número del primer nudo numerado = se numeran todos los

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

215

216

Capítulo 19.

F11

-001

F12

-001

F13

-001

F14

000

Instrucciones gráficas

nudos. Número del último nudo numerado = se numeran todos los nudos. Número del primer elemento numerado = se numeran todos los elementos. Número del último elemento numerado = se numeran todos los elementos. Indicador del tipo de gama de tonos para los resultados = escala rojo-amarillo-verde-cian-azul.

Si se ejecuta la instrucción:

GRAFIE XYZ(), ELE(), SXX(), GRA(), 4

el coeficiente GRA(1,1) toma un valor de 4 y se activa la ventana gráfica indicada en la Figura 19.7(a). En cambio, si se ejecuta la instrucción: GRAFIE XYZ(), ELE(), SXX(), GRA(), 7 el coeficiente GRA(1,1) toma un valor de 7 y se activa la ventana gráfica indicada en la Figura 19.7(b).

(a) Ventana gráfica de resultados elementales considerando un valor constante en el interior de cada elemento

(a) Ventana gráfica de resultados elementales considerando la variación en el interior de cada elemento determinada por las funciones de forma.

Figura 19.7. Ejemplo de la instrucción GRAFIE.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

217

PEFiCA – Programa de elementos finitos a código abierto

19.8. GRATDE Dibuja la malla de elementos finitos deformada de acuerdo con el vector de desplazamientos en los nudos para un problema de elasticidad bidimensional durante varios pasos de carga. Previamente debe existir un archivo que contenga las coordenadas de los nudos de la geometría deformada exagerada por cada paso de carga. Los nombres de los archivos para los pasos de carga tendrán el siguiente formato: XYZ001.txt, XYZ002.txt, XYZ003.txt , … La instrucción IOELDR facilita la construcción de tales archivos. Los desplazamientos reales son multiplicados por un factor de exageración de tal forma que la deformada de la estructura sea visible en la gráfica. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRATDE ELE(), GRA(), NULD

Argumento

Tipo de variable

Descripción

ELE()

Integer (entero)

Matriz de conectividades.

GRA()

Integer (entero)

Matriz de parámetros gráficos (Tabla 19.2).

NULD

Número de pasos de carga. Integer (entero) Tabla 19.12. Sintaxis de la instrucción GRATDE.

Ejemplo 19.6 Una viga simplemente apoyada es cargada progresivamente en NULD=5 pasos. A continuación se indica la parte del código de la rutina principal PEFiCA() donde se calcula la matriz de coordenadas de los nudos de la geometría deformada exagerada XYZ() por cada paso de carga. Public Sub PEFiCA() : : For ILD = 1 To NULD 'inicio de ciclo del paso de carga : : 'multiplicar vector de fuerzas por factor de amplificación FLDE = FLD(ILD, 1) MTPORE FGL(), FLDE, FGS() 'desplazamientos nodales en la estructura SOCHLK KGL(), FGS(), DGL() 'solucionar sistema de ecuaciones simul. MTCONS DGC(), 0, NGLC, 1 MTADJU DGT(), DGL(), DGC() ORGLFU DXY(), DGT(), MGL() 'organizar vector de desplazamientos en x,y MTPORE DXY(), 1000#, TM1() 'multiplicar desplazamientos por fac. exager MTSUMA XYZ(), TM1(), TM2() 'y sumarlo a las coordenadas originales 'crear un archivo plano con la deformada de este paso IOELDR TM2(), "XYZ", ILD Next ILD 'fin de ciclo del paso de carga GRATDE ELE(), GRA(), NULD 'gráfica de la deformada en NULD pasos End Sub Figura 19.8. Parte del código en VBA de la rutina principal PEFiCA contenida en el módulo Md.

Los coeficientes de la matriz de parámetros gráficos GRA() son: GRA()

(16x1)

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

218

Capítulo 19.

Instrucciones gráficas

C1 F1

050

F2 F3 F4 F5 F6 F7 F8 F9

015 000 012 000 000 000 040 020

F10

-001

F11

-001

F12

-001

F13

-001

F14

000

F15

005

F16

010

Tipo de gráfico (será asignado igual a 50 por la instrucción GRATDE). Color del fondo de la ventana gráfica = blanco brillante. Color de las etiquetas de numeración = negro. Color de los nudos de la malla = rojo claro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal Número de iso-líneas dibujadas (no aplica) Número de etiquetas de las iso-líneas dibujadas (no aplica) Número del primer nudo numerado = se numeran todos los nudos. Número del último nudo numerado = se numeran todos los nudos. Número del primer elemento numerado = se numeran todos los elementos. Número del último elemento numerado = se numeran todos los elementos. Indicador del tipo de gama de tonos para los resultados = escala rojo-amarillo-verde-cian-azul. Número de pasos de carga NULD Tiempo de retraso entre pasos de carga en décimas de segundo.

Si se ejecuta la instrucción: GRATDE ELE(), GRA(), NULD se activa una ventana gráfica que muestra una animación de la deformada de la estructura en cada paso de carga con una diferencia de tiempo de 1 segundo. La Figura 19.9 presenta el final de la animación. Los coeficientes GRA(1,1) y GRA(15,1) toman un valor de 50 y NULD respectivamente.

Figura 19.9. Ejemplo de la instrucción GRATDE. Gráfico del último paso de carga.

19.9. GRATFI Dibuja los resultados nodales de una cantidad o función de aproximación definida por el vector de valores en los nudos durante varios pasos de carga (o de pseudo-tiempo en general). Previamente debe existir un archivo que contenga el vector de valores nodales por © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

219

PEFiCA – Programa de elementos finitos a código abierto

cada paso de carga. Los nombres de los archivos para los pasos de carga tendrán el siguiente formato: FIF001.txt, FIF002.txt, FIF003.txt , … La instrucción IOELDR facilita la construcción de tales archivos. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRATFI ELE(), GRA(), NULD, TG

Argumento

Tipo de variable

Descripción

ELE()

Integer (entero)

Matriz de conectividades.

GRA()

Integer (entero)

Matriz de parámetros gráficos (Tabla 19.2).

NULD

Integer (entero)

TG

Número de pasos de carga. Identificador del tipo de gráfico. • Si TG=51 gráfico de iso lineas, considerando el rango de valores de cada paso (por defecto). • Si TG=52 gráfico de iso líneas, considerando el rango de valores común para todos los pasos de Optional Integer carga. (argumento opcional • Si TG=53 gráfico de regiones llenas, considerando tipo entero) el rango de valores de cada paso. • Si TG=54 gráfico de regiones llenas, considerando el rango de valores común para todos los pasos de carga. En la rutina se asigna a GRA(1,1)=TG Tabla 19.13. Sintaxis de la instrucción GRATFI.

Ejemplo 19.7 Una viga simplemente apoyada es cargada progresivamente en NULD=5 pasos. A continuación se indica la parte del código de la rutina principal PEFiCA() donde se crea un archivo que contiene los valores nodales de la componente de esfuerzo σ xx en cada paso de carga . Public Sub PEFiCA() : : For ILD = 1 To NULD 'inicio de ciclo del paso de carga : : 'crear un archivo plano con una componente de esfuerzo en este paso IOELDR NXX(), "FIF", ILD Next ILD 'fin de ciclo del paso de carga GRATFI ELE(), GRA(), NULD, 54 'componente de esfuerzo resultado nodal End Sub Figura 19.10. Parte del código en VBA de la rutina principal PEFiCA contenida en el módulo Md.

Los coeficientes de la matriz de parámetros gráficos GRA() son: GRA()

(16x1) C1

F1

051

F2

015

Tipo de gráfico (será asignado en la instrucción GRATFI de acuerdo con el valor de TG). Color del fondo de la ventana gráfica = blanco brillante.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

220

Capítulo 19. F3 F4 F5 F6 F7 F8 F9

000 012 000 000 000 040 020

F10

-001

F11

-001

F12

-001

F13

-001

F14

000

F15

005

F16

010

Instrucciones gráficas

Color de las etiquetas de numeración = negro. Color de los nudos de la malla = rojo claro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal Número de iso-líneas dibujadas. Número de etiquetas de las iso-líneas dibujadas. Número del primer nudo numerado = se numeran todos los nudos. Número del último nudo numerado = se numeran todos los nudos. Número del primer elemento numerado = se numeran todos los elementos. Número del último elemento numerado = se numeran todos los elementos. Indicador del tipo de gama de tonos para los resultados = escala rojo-amarillo-verde-cian-azul. Número de pasos de carga NULD Tiempo de retraso entre pasos de carga en décimas de segundo.

Si se ejecuta la instrucción: GRATFI ELE(), GRA(), NULD, 54

se activa una ventana gráfica que muestra una animación del esfuerzo σ xx promedio en los nudos de la estructura en cada paso de carga con una diferencia de tiempo de 1 segundo. La Figura 19.11 presenta el final de la animación. Los coeficientes GRA(1,1) y GRA(15,1) toman un valor de 54 y NULD respectivamente.

Figura 19.11. Ejemplo de la instrucción GRATFI. Gráfico del último paso de carga.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

221

PEFiCA – Programa de elementos finitos a código abierto

19.10.

GRATFE

Dibuja los resultados elementales de una cantidad o función de aproximación definida por el vector de valores en los elementos durante varios pasos de carga (o de pseudo-tiempo en general). Previamente debe existir un archivo que contenga el vector de valores elementales por cada paso de carga. Los nombres de los archivos para los pasos de carga tendrán el siguiente formato: FIE001.txt, FIE002.txt, FIE003.txt , … La instrucción IOELDR facilita la construcción de tales archivos. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GRATFE ELE(), GRA(), NULD, TG

Argumento

Tipo de variable

Descripción

ELE()

Integer (entero)

Matriz de conectividades.

GRA()

Integer (entero)

Matriz de parámetros gráficos (Tabla 19.2).

NULD

Integer (entero)

TG

Número de pasos de carga. Identificador del tipo de gráfico. • Si TG=55 gráfico de regiones llenas, considerando el rango de valores de cada paso (por defecto). Optional Integer (argumento opcional • Si TG=56 gráfico de regiones llenas, considerando tipo entero) el rango de valores común para todos los pasos de carga En la rutina se asigna a GRA(1,1)=TG Tabla 19.14. Sintaxis de la instrucción GRATFE.

Ejemplo 19.8 Una viga simplemente apoyada es cargada progresivamente en NULD=5 pasos. A continuación se indica la parte del código de la rutina principal PEFiCA() donde se crea un archivo que contiene los valores elementales de la componente de esfuerzo σ xx en cada paso de carga . Public Sub PEFiCA() : : For ILD = 1 To NULD 'inicio de ciclo del paso de carga : : 'crear un archivo plano con una componente de esfuerzo en este paso IOELDR SXX(), "FIE", ILD Next ILD 'fin de ciclo del paso de carga GRATFE ELE(), GRA(), NULD, 56 'componente de esfuerzo resultado elemental End Sub Figura 19.12. Parte del código en VBA de la rutina principal PEFiCA contenida en el módulo Md.

Los coeficientes de la matriz de parámetros gráficos GRA() son: GRA()

F1

(16x1) C1 051

Tipo de gráfico (será asignado en la instrucción GRATFE de acuerdo con el valor de TG).

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

222

Capítulo 19. F2 F3 F4 F5 F6 F7 F8 F9

015 000 012 000 000 000 040 020

F10

-001

F11

-001

F12

-001

F13

-001

F14

000

F15

005

F16

010

Instrucciones gráficas

Color del fondo de la ventana gráfica = blanco brillante. Color de las etiquetas de numeración = negro. Color de los nudos de la malla = rojo claro. Color de las líneas de delimitan a los elementos = negro. Tipo de puntero. Estado de la ventana = normal Número de iso-líneas dibujadas (no aplica) Número de etiquetas de las iso-líneas dibujadas (no aplica) Número del primer nudo numerado = se numeran todos los nudos. Número del último nudo numerado = se numeran todos los nudos. Número del primer elemento numerado = se numeran todos los elementos. Número del último elemento numerado = se numeran todos los elementos. Indicador del tipo de gama de tonos para los resultados = escala rojo-amarillo-verde-cian-azul. Número de pasos de carga NULD Tiempo de retraso entre pasos de carga en décimas de segundo.

Si se ejecuta la instrucción: GRATFE ELE(), GRA(), NULD, 56

se activa una ventana gráfica que muestra una animación del esfuerzo σ xx en el interior de los elementos de la estructura para cada paso de carga con una diferencia de tiempo de 1 segundo. La Figura 19.13 presenta el final de la animación. Los coeficientes GRA(1,1) y GRA(15,1) toman un valor de 56 y NULD respectivamente.

Figura 19.13. Ejemplo de la instrucción GRATFE. Gráfico del último paso de carga.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

Capítulo 20 Instrucciones de generación de malla Este capítulo describe las instrucciones que generan de forma automática la malla de elementos finitos de una región especificada. Dichas subrutinas están ubicadas en el módulo MdGE como lo indica la Tabla 2.17.

20.1. GEMARE Genera una malla de elementos finitos rectangulares en una región en forma de rectangular. Crea la matriz de coordenadas de los nudos y la matriz de conectividades de los elementos de la malla construida. La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. GEMARE GEM(), XYZ(), ELE(), NNUD, NELE, NNUE, NDIM

Argumento GEM() XYZ() ELE() NNUD NELE NNUE NDIM

Tipo de variable

Descripción Matriz que contiene los parámetros de generación de Double (real) la malla indicados en la Tabla 20.1 (argumento de entrada). Matriz de coordenadas de los nudos de la malla (arDouble (real) gumento de salida). Matriz de conectividades de los elementos de la malla Integer (entero) (argumento de salida). Integer (entero) Número de nudos de la malla (argumento de salida). Número de elementos finitos de la malla (argumento Integer (entero) de salida). Número de nudos asociados a un elemento finito Integer (entero) (argumento de salida). Número de dimensiones del problema (argumento de Integer (entero) salida). Tabla 20.1. Sintaxis de la instrucción GEMARE.

Los parámetros de generación de la malla descritos en la siguiente tabla corresponden a los coeficientes de una matriz de 6 filas y 1 columna presentada como el primer argumento de la instrucción.

224

Capítulo 20. Instrucciones de generación de malla

Coeficiente de la matriz

Descripción

Coordenada x del extremo inferior izquierdo de la región rectangular que se desea enmallar. Coordenada y del extremo inferior izquierdo de la región GEM(2,1) rectangular que se desea enmallar. Coordenada x del extremo superior derecho de la región GEM(3,1) rectangular que se desea enmallar. Coordenada y del extremo superior derecho de la región GEM(4,1) rectangular que se desea enmallar. Número de elementos finitos en que se divide la región GEM(5,1) rectangular en dirección x. Número de elementos finitos en que se divide la región GEM(6,1) rectangular en dirección y. Tabla 20.2. Parámetros de generación de malla contenidos en la matriz GEM(). GEM(1,1)

Ejemplo 20.1 Una superficie rectangular de 9m por 6m se divide en elementos finitos rectangulares, que conforman una cuadrícula de 3 elementos en dirección x por 2 elementos en dirección y. Los coeficientes de la matriz de parámetros de generación de malla GEM() son:

GEM()

(16x1) C1

F1

0.0000E+00

F2

0.0000E+00

F3

9.0000E+00

F4

6.0000E+00

F5

3.0000E+00

F6

2.0000E+00

Coordenada x del extremo inferior izquierdo de la región rectangular que se desea enmallar. Coordenada y del extremo inferior izquierdo de la región rectangular que se desea enmallar. Coordenada x del extremo superior derecho de la región rectangular que se desea enmallar. Coordenada y del extremo superior derecho de la región rectangular que se desea enmallar. Número de elementos finitos en que se divide la región rectangular en dirección x. Número de elementos finitos en que se divide la región rectangular en dirección y.

Ejecutando la instrucción indicada a continuación se general la malla estructurada de 12 nudos (NNUD=12) y 6 elementos finitos rectangulares (NELE=6, NNUE=4, NDIM=2) mostrada en la Figura 20.1. GEMARE GEM(),XYZ(), ELE(), NNUD, NELE, NNUE, NDIM

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

225

PEFiCA – Programa de elementos finitos a código abierto

(x,y)=GEM(3,1),GEM(4,1) 06

03 02

12

09 04

06

GEM(6,1) 05

02

GEM(5,1) y

01

11

08 03

05

y (x,y)=GEM(1,1),GEM(2,1) x superficie rectangular

01

04

x malla de elementos finitos

Figura 20.1. Ejemplo de la instrucción GEMARE.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

07

10

Capítulo 21 Instrucciones para crear el vector de contribución interelemental Las instrucciones presentadas a continuación crean el vector de contribución interelemental i (e ) de los elementos finitos para problemas de campo incluidos en el programa. Estas subrutinas tienen el prefijo I y están ubicadas en el módulo MdINT del código como lo indica la Tabla 2.18. La matriz columna i (e ) depende de la geometría y la función de aproximación del elemento. La contribución interelemental representa a las condiciones de contorno de Neaumann o de segundo tipo de una ecuación diferencial de campo escalar (Zienkiewicz 1980; Hughes 2000). Aplicando el método de Galerkin a la ecuación diferencial de campo bidimensional expresada en la Ecuación (10.5) se plantea en el método de los elementos finitos que: KΦ = f − i

(21.1)

siendo Φ el vector de valores nodales de la función φ ( x, y ) de la ecuación diferencial en el sistema, K la matriz de rigidez o de conductancia del sistema, f el vector de fuerza o de términos independientes del sistema e i el vector de contribución interelemental del sistema. A excepción de Φ , las demás matrices de la ecuación anterior son el resultado del ensamblaje de las respectivas matrices elementales K ( e ) , f ( e ) , i ( e ) , de la forma:  m  K = A K (e)  ( e )=1 

(21.2)

 m  f = A f (e)  ( e ) =1 

(21.3)

 m  i = A i (e)  ( e )=1 

(21.4)

Las contribuciones interelementales son valores de derivada direccional de la función

φ ( x, y ) en el contorno del problema, lo cual corresponde al producto entre el gradiente de φ

y el vector n = n x ˆi + n y ˆj , es decir:

228

Capítulo 21.

∇φ ⋅ n =

Instrucciones para crear el vector de contribución interelemental

∂φ ∂φ ∂φ = nx + ny ∂n ∂x ∂x

∀( x, y ) ∈ Γ

(21.5)

siendo n el vector unitario en dirección normal al contorno y en sentido tal que sale del dominio del problema. Un elemento finito bidimensional que comparte por lo menos uno de sus lados con el contorno del problema, podría tener un vector de contribución interelemental i (e ) igual a la integral de línea en los lados del elemento que conforman el contorno, de la forma:

(

i (e ) = ∫ ( e ) N ( e) Γ

)

T

S ( e ) dL

(21.6)

donde S (e ) es la derivada direccional ∂ nφ evaluada en el lado del elemento finito. Si el lado es perpendicular con el eje coordenado x el valor de S (e ) es ± ∂ xφ , en cambio si el lado del elemento es normal al eje y, S ( e ) = ±∂ yφ .

21.1. ITRIAN Crea el vector de contribución interelemental de un elemento finito triangular lineal (Figura 8.3(a)), preparado para resolver una ecuación diferencial de campo bidimensional expresada en la Ecuación (10.5). Sustituyendo la matriz de funciones de forma del elemento N (e ) presentada en las Ecuaciones (8.14) a (8.16), en la Ecuación (21.6) se obtiene el vector de contribución interelemental sobre los tres lados de un elemento triangular lineal de nudos ijk de la forma: i

(e)

1  Sij( e ) L(ije )   S (jke ) L(jke ) 1 + = 2   2 0

0  (e) (e ) 1 + Sik Lik   2 1

1 0    1

(21.7)

donde Sij(e ) es la derivada direccional con respecto a la normal al lado ij de longitud L(eij ) , S (ejk ) es la derivada direccional con respecto a la normal al lado jk de longitud L(ejk) y Sik(e ) es la derivada direccional con respecto a la normal al lado ik de longitud L(eik ) . Sin embargo, la instrucción FTRIAN calcula el vector de contribución interelemental por cada lado c del elemento indicado en la Figura 11.1 de la forma:

Si c = 1 → i

(e)

=

Si c = 2 → i ( e ) = Si c = 3 → i ( e )

Sij( e ) L(ije ) 2 S L

(e) (e) jk jk

[1

1 0]

[0

1 1]

T

T

2 (e) (e) S L T = ik ik [1 0 1] 2

(21.8)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

229

ITRIAN MX(), XYZ(), ELE(), IELE, S, LADO

Argumento

Tipo de variable

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

S

Double (real)

Descripción Vector (creado) de términos independientes del elemento i (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

Valor de la derivada direccional S (e ) en el lado c co-

mo lo indica la Ecuación (21.8). Indicador del lado que el elemento finito comparte con el contorno del problema donde existe contribución interelemental. Integer (entero) • Si LADO=1 corresponde al lado ij. • Si LADO=2 corresponde al lado jk. • Si LADO=3 corresponde al lado ik. Tabla 21.1. Sintaxis de la instrucción ITRIAN.

LADO

Ejemplo 21.1 Sea un problema controlado por la Ecuación (10.5), para el cual el lado ik del elemento triangular lineal número 2 pertenece al contorno cuya condición de Neumann indica que ∂ nφ = −5.2 . La contribución interelemental dada por el elemento número 2 se obtiene de la siguiente instrucción: ITRIAN IEL(), XYZ(), ELE(), 2, -5.2, 3

Dadas las coordenadas de los nudos que definen el lado ik del elemento finito se tiene que L(ike ) = 2.0 . Por lo tanto, los coeficientes del vector de contribución interelemental son los siguientes: IEL() F1 F2 F3

(3x1) C1 -5.2000E+00 0.0000E+00 -5.2000E+00

21.2. IRECTA Crea el vector de contribución interelemental de un elemento finito rectangular bilineal (Figura 8.7(a)), preparado para resolver una ecuación diferencial de campo bidimensional expresada en la Ecuación (10.5). Sustituyendo la matriz de funciones de forma del elemento N (e ) presentada en las Ecuaciones (8.19) y (8.20), en la Ecuación (21.6) se obtiene el vector de contribución interelemental sobre los cuatro lados de un elemento rectangular bilineal de nudos ijkm de la forma: © Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

230

Capítulo 21.

i (e) =

(e) ij

(e) ij

S L 2

1 1 S ( e ) L( e )   + jk jk 0  2   0 

Instrucciones para crear el vector de contribución interelemental

0  1 (e ) (e)   + S km Lkm 1 2   0 

0  0  (e ) (e)   + S im Lim 1 2   1

1 0    0    1

(21.9)

donde Sij(e ) es la derivada direccional con respecto a la normal al lado ij de longitud L(eij ) , (e ) S es la derivada direccional con respecto a la normal al lado jk de longitud L(ejk) , S km es la derivada direccional con respecto a la normal al lado km de longitud L(ekm) y Sim(e ) es la derivada direccional con respecto a la normal al lado im de longitud L(eim) . Sin embargo, la instrucción IRECTA calcula el vector de contribución interelemental por cada lado c del elemento indicado en la Figura 11.3 de la forma: (e ) jk

Si c = 1 → i

(e)

=

Si c = 2 → i ( e ) =

Sij( e ) L(ije ) 2 S L

(e) (e) jk jk

[1

1 0 0]

[0

1 1 0]

T

T

2 S L [0 0 1 1]T Si c = 3 → i ( e ) = 2 (e) (e) S L T Si c = 4 → i ( e ) = im im [1 0 0 1] 2 (e) (e) km km

(21.10)

La sintaxis de la instrucción y la descripción de sus respectivos argumentos se presentan a continuación. IRECTA MX(), XYZ(), ELE(), IELE, S, LADO

Argumento

Tipo de variable

Descripción

MX()

Double (real)

XYZ()

Double (real)

ELE()

Integer (entero)

IELE

Integer (entero)

Vector (creado) de términos independientes del elemento i (e ) . Matriz (existente) de coordenadas de los nudos de la malla descrita en el Apartado 3.4. Matriz (existente) de elementos o de conectividades descrita en el Apartado 3.4. Número del elemento finito.

S

Double (real)

LADO

Valor de la derivada direccional S (e ) en el lado c como lo indica

la Ecuación (21.8). Indicador del lado que el elemento finito comparte con el contorno del problema donde existe contribución interelemental. • Si LADO=1 corresponde al lado ij. Integer (entero) • Si LADO=2 corresponde al lado jk. • Si LADO=3 corresponde al lado km. • Si LADO=4 corresponde al lado im. Tabla 21.2. Sintaxis de la instrucción IRECTA.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

PEFiCA – Programa de elementos finitos a código abierto

Ejemplo 21.2 Sea un problema controlado por la Ecuación (10.5), para el cual el lado km del elemento rectangular bilineal número 1 pertenece al contorno cuya condición de Neumann indica que ∂ nφ = −5.2 . La contribución interelemental dada por el elemento número 1 se obtiene de la siguiente instrucción: ITRIAN IEL(), XYZ(), ELE(), 1, -5.2, 3

Dadas las coordenadas de los nudos que definen el lado km del elemento finito se tiene que L(kme ) = 2.0 . Por lo tanto, los coeficientes del vector de contribución interelemental son los siguientes: IEL() F1 F2 F3 F3

(3x1) C1 0.0000E+00 0.0000E+00 -5.2000E+00 -5.2000E+00

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010

231

Referencias Antia, H. M. (2002). Numerical Methods for Scientists and Engineers. Berlin, Birkhäuser Verlag. Argyris, J. (1954). "Energy theorems ans structural analysis." Aircraft Engineering 26: 347356, 383-387. Argyris, J. (1955). "Energy theorems ans structural analysis." Aircraft Engineering 27: 4258, 80-94, 125-134, 145-158. Bathe, K. (1996). Finite elements procedures. New Jersey, Prentice Hall. Belytschko, T., Liu, W. K. & Moran, B. (2000). Nonlinear finite elements for continua and structures, John Wiley and Sons. Bonet, J. & Wood, R. (1997). Nonlinear continuum mechanics for finite elements analysis, Cambridge University Press. Cervera, M., Agelet, C. & Chiumenti, M. (2001). COMET. Contact Mechanical and Thermal analysis. Multi purpose coupled nonlinear program for steady and transient conditions. Barcelona. Clough, R. (1960). The finite element in plane stress analysis. Conference on Electronic Computation, Pittsburgh. COMSOL (2007). COMSOL Multiphysics. Los Angeles, USA. Cook, R., Malkus, D. & Plesha, M. (1989). Concepts and applications of finite elements analysis. New York, John Wiley & Son. Crisfield, M. A. (1991a). Non-linear finite elements analysis of solid and structures. 1 Essentials. John Wiley and Sons. Crisfield, M. A. (1991b). Non-linear finite elements analysis of solid and structures. 2 Advanced topics, John Wiley and Sons. Felippa, C. (1991). Nonlinear finite elements method. Boulder, University of Colorado. Gere, W. & Weaver, J. (1990). Matrix Analysis of Framed Structures. New York, Van Nostrand Reinhold. Grossman, S. (1996). Algebra Lineal. México D.F., Mc Graw Hill. Herrera, L. (2007). Simulación del comportamiento elástico del concreto reforzado sometido a torsión pura mediante el método semi-inverso de Saint-Venant y el método de los elementos finitos. Tesis de pregrado en Ingeniería Civil, Universidad Nacional de Colombia, Bogotá. Holzapfel, G. (2000). Nonlinear solid mechanics, John Wiley and Sons. Horn, R. & Johnson, C. (1994). Topics in Matrix Analysis, Cambridge. Hughes, T. J. R. (2000). The finite element method. New York, Dover. Kojic, M. & Bathe, K. J. (2005). Inelastic Analysis of Solids and Structures. Berlin, Springer-Verlag. Linero, D. (1999). Euler. Programa didáctico de elementos finitos. Bogotá, Facultad de Ingeniería. Universidad Nacional de Colombia. LundUniversity (1999). CALFEM. A finite element toolbox to MATLAB. Lund, Sweden, Division of Structural Mechanics and Division of Solid Mechanics. MacNeal, R. (1972). The NASTRAN Theorial Manual.

234

Referencias

Microsoft (2001). Visual Basic for Application. Reference Manual. Microsoft (2003). Microsoft Office Excel. Reference Manual. Oñate, E. & Zárate, F. (2000). Introducción al método de los elementos finitos. Barcelona, Centro Internacional de Métodos Numéricos en Ingeniería. Parra, R. (2009). Optimización topológica aplicada a problemas de elasticidad bidimensional usando elementos finitos. Tesis de Maestría en Estructuras (en curso), Universidad Nacional de Colombia, Bogotá. Popov, E. (1998). Engineering mechanics of solids, Prentice-Hall. Puerto, S. (2008). Automatización del proceso de generación de mallas en el método de los elementos finitos para el cálculo de esfuerzos en túneles y su validación mediante el método de las capas múltiples. Tesis de pregrado en Ingeniería Civil, Universidad Nacional de Colombia, Bogotá. Reddy, J. N. (2004). An introduction to nonlinear finite element analysis, Oxford University Press. Roman, S. (2002). Writing Excel macros with VBA, O'Reilly. Simon, J. (2002). Excel Programming, Hungry Minds. Taylor, R. (2008). FEAP - A Finite Element Analysis Program. Theory manual. Berkeley, Department of Civil and Environmental Engineering University of California. Uribe, J. (1995). Microcomputadores en Ingeniería Estructural. Bogotá, Universidad Nacional de Colombia y ECOE ediciones. Walkenbach, J. (2004). Microsoft Office Excel 2003 Power programming with VBA, Wiley Publishing. Weaver, J. & Johnson, C. (1984). Finite elements for structural analysis. New Jersey, Prentice Hall. Zienkiewicz, O. (1980). El método de los elementos finitos. Barcelona, Editorial Reverté.

© Dorian Luis Linero Segrera – Universidad Nacional de Colombia, 2010